05.11., 9:00 - 11:00: Due to updates GitLab may be unavailable for some minutes between 09:00 and 11:00.

Commit 662ce762 authored by Christian Schulte zu Berge's avatar Christian Schulte zu Berge

Merge branch 'development' into 'master'

Development



See merge request !2
parents 9abcb3e4 cbd8ddaa
......@@ -299,7 +299,7 @@ namespace campvis {
cgt::svec3 lookupTexel(lookupTexelFloat.x, imageSize.y - lookupTexelFloat.y, 0);
if (lookupTexel.x >= 0 && lookupTexel.y >= 0 && lookupTexel.x < imageSize.x && lookupTexel.y < imageSize.y) {
if (tex->isDepthTexture()) {
emit s_depthChanged(localRep->getElementNormalized(lookupTexel, 0));
emit s_depthChanged(lookupTexel, localRep->getElementNormalized(lookupTexel, 0));
}
else {
if (tex->getDimensions().z != 1) {
......@@ -309,7 +309,7 @@ namespace campvis {
for (size_t i = 0; i < id->getNumChannels(); ++i) {
texel[i] = localRep->getElementNormalized(lookupTexel, i);
}
emit s_colorChanged(texel);
emit s_colorChanged(lookupTexel, texel);
}
}
else if (tex->getDimensions().y != 1) {
......@@ -317,7 +317,7 @@ namespace campvis {
for (size_t i = 0; i < id->getNumChannels(); ++i) {
texel[i] = localRep->getElementNormalized(lookupTexel, i);
}
emit s_colorChanged(texel);
emit s_colorChanged(lookupTexel, texel);
}
}
}
......
......@@ -129,8 +129,8 @@ namespace campvis {
MetaProperty p_geometryRendererProperties; ///< MetaProperty for the GeometryRenderer
signals:
void s_colorChanged(const cgt::vec4&);
void s_depthChanged(float depth);
void s_colorChanged(const cgt::svec3& texel, const cgt::vec4&);
void s_depthChanged(const cgt::svec3& texel, float depth);
private slots:
/**
......
......@@ -227,11 +227,11 @@ namespace campvis {
this, SIGNAL(dataContainerChanged(const QString&, QtDataHandle)),
_canvas, SLOT(onDataContainerChanged(const QString&, QtDataHandle)));
connect(
_canvas, SIGNAL(s_colorChanged(const cgt::vec4&)),
this, SLOT(onColorChanged(const cgt::vec4&)));
_canvas, SIGNAL(s_colorChanged(const cgt::svec3&, const cgt::vec4&)),
this, SLOT(onColorChanged(const cgt::svec3&, const cgt::vec4&)));
connect(
_canvas, SIGNAL(s_depthChanged(float)),
this, SLOT(onDepthChanged(float)));
_canvas, SIGNAL(s_depthChanged(const cgt::svec3&, float)),
this, SLOT(onDepthChanged(const cgt::svec3&, float)));
connect(
this, SIGNAL(dataContainerChanged(const QString&, QtDataHandle)),
_dctWidget->getTreeModel(), SLOT(onDataContainerChanged(const QString&, QtDataHandle)));
......@@ -540,16 +540,18 @@ namespace campvis {
}
void DataContainerInspectorWidget::onColorChanged(const cgt::vec4& color) {
_lblColorVal->setText(QString("Color: [%1, %2, %3, %4]").arg(QString::number(color.r), QString::number(color.g), QString::number(color.b), QString::number(color.a)));
void DataContainerInspectorWidget::onColorChanged(const cgt::svec3& texel, const cgt::vec4& color) {
_lblColorVal->setText(QString("Color @ [%1, %2, %3]: [%4, %5, %6, %7]")
.arg(QString::number(texel.x), QString::number(texel.y), QString::number(texel.z), QString::number(color.r), QString::number(color.g), QString::number(color.b), QString::number(color.a)));
cgt::ivec4 clamped(cgt::clamp(color * 255.f, 0.f, 255.f));
_colorValWidgetPalette.setColor(QPalette::Background, QColor(clamped.r, clamped.g, clamped.b, clamped.a));
_colorValWidget->setPalette(_colorValWidgetPalette);
}
void DataContainerInspectorWidget::onDepthChanged(float depth) {
_lblColorVal->setText(QString("Depth: %1").arg(QString::number(depth)));
void DataContainerInspectorWidget::onDepthChanged(const cgt::svec3& texel, float depth) {
_lblColorVal->setText(QString("Depth @ [%1, %2, %3]: %4")
.arg(QString::number(texel.x), QString::number(texel.y), QString::number(texel.z), QString::number(depth)));
cgt::ivec4 clamped(cgt::clamp(depth * 255.f, 0.f, 255.f));
_colorValWidgetPalette.setColor(QPalette::Background, QColor(clamped.r, clamped.g, clamped.b, clamped.a));
......
......@@ -130,9 +130,9 @@ namespace campvis {
void onBtnLoadFileClicked();
/// Slot being called when the color under the mouse has changed
void onColorChanged(const cgt::vec4& color);
void onColorChanged(const cgt::svec3& texel, const cgt::vec4& color);
/// Slot being called when the depth under the mouse has changed
void onDepthChanged(float depth);
void onDepthChanged(const cgt::svec3& texel, float depth);
protected:
/**
......
......@@ -27,7 +27,6 @@
#include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/genericproperty.h"
class QCheckBox;
......@@ -66,8 +65,6 @@ namespace campvis {
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<BoolPropertyWidget, BoolProperty>;
}
#endif // BOOLPROPERTYWIDGET_H__
......@@ -27,7 +27,6 @@
#include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/buttonproperty.h"
class QPushButton;
......@@ -67,8 +66,6 @@ namespace campvis {
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<ButtonPropertyWidget, ButtonProperty>;
}
#endif // BUTTONPROPERTYWIDGET_H__
......@@ -28,7 +28,6 @@
#include "application/applicationapi.h"
#include "application/gui/adjusterwidgets/doubleadjusterwidget.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "application/gui/qtcolortools.h"
#include "core/properties/floatingpointproperty.h"
......@@ -76,11 +75,6 @@ namespace campvis {
};
// ================================================================================================
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<ColorPropertyWidget, ColorProperty>;
}
#endif // COLORPROPERTYWIDGET_H__
......@@ -29,7 +29,6 @@
#include "core/properties/datanameproperty.h"
#include "application/gui/qtdatahandle.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
class QComboBox;
class QLineEdit;
......@@ -89,9 +88,7 @@ namespace campvis {
QComboBox* _combobox;
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<DataNamePropertyWidget, DataNameProperty, 10>;
}
#endif // DATANAMEPROPERTYWIDGET_H__
......@@ -89,4 +89,23 @@ namespace campvis {
if (_ignorePropertyUpdates == 0)
emit s_propertyChanged(property);
}
Vec2PropertyWidget::Vec2PropertyWidget(PropertyType* property, DataContainer* dataContainer /*= nullptr*/, QWidget* parent /*= 0*/) : VecPropertyWidget<2>(property, dataContainer, parent) {
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(double)), this, SLOT(onValueChanged(double)));
}
}
Vec3PropertyWidget::Vec3PropertyWidget(PropertyType* property, DataContainer* dataContainer /*= nullptr*/, QWidget* parent /*= 0*/) : VecPropertyWidget<3>(property, dataContainer, parent) {
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(double)), this, SLOT(onValueChanged(double)));
}
}
Vec4PropertyWidget::Vec4PropertyWidget(PropertyType* property, DataContainer* dataContainer /*= nullptr*/, QWidget* parent /*= 0*/) : VecPropertyWidget<4>(property, dataContainer, parent) {
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(double)), this, SLOT(onValueChanged(double)));
}
}
}
......@@ -27,7 +27,6 @@
#include "application/gui/adjusterwidgets/doubleadjusterwidget.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/floatingpointproperty.h"
namespace campvis {
......@@ -78,9 +77,6 @@ namespace campvis {
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<FloatPropertyWidget, FloatProperty>;
// ================================================================================================
namespace {
......@@ -238,16 +234,10 @@ namespace campvis {
// ================================================================================================
class Vec2PropertyWidget : public VecPropertyWidget<2> {
class CAMPVIS_APPLICATION_API Vec2PropertyWidget : public VecPropertyWidget<2> {
Q_OBJECT
public:
Vec2PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0)
: VecPropertyWidget<2>(property, dataContainer, parent)
{
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(double)), this, SLOT(onValueChanged(double)));
}
}
Vec2PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0);
private slots:
void onValueChanged(double value) { onValueChangedImpl(); };
......@@ -255,16 +245,10 @@ namespace campvis {
// ================================================================================================
class Vec3PropertyWidget : public VecPropertyWidget<3> {
class CAMPVIS_APPLICATION_API Vec3PropertyWidget : public VecPropertyWidget<3> {
Q_OBJECT
public:
Vec3PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0)
: VecPropertyWidget<3>(property, dataContainer, parent)
{
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(double)), this, SLOT(onValueChanged(double)));
}
}
Vec3PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0);
private slots:
void onValueChanged(double value) { onValueChangedImpl(); };
......@@ -272,28 +256,15 @@ namespace campvis {
// ================================================================================================
class Vec4PropertyWidget : public VecPropertyWidget<4> {
class CAMPVIS_APPLICATION_API Vec4PropertyWidget : public VecPropertyWidget<4> {
Q_OBJECT
public:
Vec4PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0)
: VecPropertyWidget<4>(property, dataContainer, parent)
{
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(double)), this, SLOT(onValueChanged(double)));
}
}
Vec4PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0);
private slots:
void onValueChanged(double value) { onValueChangedImpl(); };
};
// ================================================================================================
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<Vec2PropertyWidget, typename VecPropertyWidgetTraits<2>::PropertyType, 5>;
template class PropertyWidgetRegistrar<Vec3PropertyWidget, typename VecPropertyWidgetTraits<3>::PropertyType, 5>;
template class PropertyWidgetRegistrar<Vec4PropertyWidget, typename VecPropertyWidgetTraits<4>::PropertyType, 5>;
}
#endif // FLOATPROPERTYWIDGET_H__
......@@ -143,4 +143,22 @@ namespace campvis {
_btnShowHideTimer->setText(_sbInterval->isVisible() ? tr("H") : tr("S"));
}
IVec2PropertyWidget::IVec2PropertyWidget(PropertyType* property, DataContainer* dataContainer /*= nullptr*/, QWidget* parent /*= 0*/) : IVecPropertyWidget<2>(property, dataContainer, parent) {
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
}
}
IVec3PropertyWidget::IVec3PropertyWidget(PropertyType* property, DataContainer* dataContainer /*= nullptr*/, QWidget* parent /*= 0*/) : IVecPropertyWidget<3>(property, dataContainer, parent) {
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
}
}
IVec4PropertyWidget::IVec4PropertyWidget(PropertyType* property, DataContainer* dataContainer /*= nullptr*/, QWidget* parent /*= 0*/) : IVecPropertyWidget<4>(property, dataContainer, parent) {
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
}
}
}
\ No newline at end of file
......@@ -27,7 +27,6 @@
#include "application/gui/adjusterwidgets/intadjusterwidget.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/numericproperty.h"
class QCheckBox;
......@@ -84,9 +83,6 @@ namespace campvis {
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<IntPropertyWidget, IntProperty>;
// ================================================================================================
namespace {
......@@ -226,13 +222,7 @@ namespace campvis {
class IVec2PropertyWidget : public IVecPropertyWidget<2> {
Q_OBJECT
public:
IVec2PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0)
: IVecPropertyWidget<2>(property, dataContainer, parent)
{
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
}
}
IVec2PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0);
private slots:
void onValueChanged(int value) { onValueChangedImpl(); };
......@@ -243,13 +233,7 @@ namespace campvis {
class IVec3PropertyWidget : public IVecPropertyWidget<3> {
Q_OBJECT
public:
IVec3PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0)
: IVecPropertyWidget<3>(property, dataContainer, parent)
{
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
}
}
IVec3PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0);
private slots:
void onValueChanged(int value) { onValueChangedImpl(); };
......@@ -260,24 +244,11 @@ namespace campvis {
class IVec4PropertyWidget : public IVecPropertyWidget<4> {
Q_OBJECT
public:
IVec4PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0)
: IVecPropertyWidget<4>(property, dataContainer, parent)
{
for (size_t i = 0; i < size; ++i) {
connect(_adjusters[i], SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
}
}
IVec4PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0);
private slots:
void onValueChanged(int value) { onValueChangedImpl(); };
};
// ================================================================================================
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<IVec2PropertyWidget, typename IVecPropertyWidgetTraits<2>::PropertyType, 5>;
template class PropertyWidgetRegistrar<IVec3PropertyWidget, typename IVecPropertyWidgetTraits<3>::PropertyType, 5>;
template class PropertyWidgetRegistrar<IVec4PropertyWidget, typename IVecPropertyWidgetTraits<4>::PropertyType, 5>;
}
#endif // INTPROPERTYWIDGET_H__
......@@ -31,7 +31,6 @@
#include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertycollectionwidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
namespace campvis {
class DataContainer;
......@@ -68,9 +67,6 @@ namespace campvis {
PropertyCollectionWidget* _pcw;
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<MetaPropertyWidget, MetaProperty>;
}
#endif // METAPROPERTYWIDGET_H__
......@@ -27,7 +27,6 @@
#include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/optionproperty.h"
......@@ -69,8 +68,5 @@ namespace campvis {
QComboBox* _comboBox;
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<OptionPropertyWidget, AbstractOptionProperty, 10>;
}
#endif // OPTIONPROPERTYWIDGET_H__
// ================================================================================================
//
// This file is part of the CAMPVis Software Framework.
//
// If not explicitly stated otherwise: Copyright (C) 2012-2015, all rights reserved,
// Christian Schulte zu Berge <christian.szb@in.tum.de>
// Chair for Computer Aided Medical Procedures
// Technische Universitaet Muenchen
// Boltzmannstr. 3, 85748 Garching b. Muenchen, Germany
//
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
// either express or implied. See the License for the specific language governing permissions
// and limitations under the License.
//
// ================================================================================================
#include "application/gui/properties/propertywidgetfactory.h"
#include "application/gui/properties/boolpropertywidget.h"
#include "application/gui/properties/buttonpropertywidget.h"
#include "application/gui/properties/colorpropertywidget.h"
#include "application/gui/properties/datanamepropertywidget.h"
#include "application/gui/properties/floatpropertywidget.h"
#include "application/gui/properties/intpropertywidget.h"
#include "application/gui/properties/metapropertywidget.h"
#include "application/gui/properties/optionpropertywidget.h"
#include "application/gui/properties/statuspropertywidget.h"
#include "application/gui/properties/stringpropertywidget.h"
#include "application/gui/properties/transferfunctionpropertywidget.h"
namespace campvis {
// explicitly instantiate templates to register the property widgets
template class PropertyWidgetRegistrar<BoolPropertyWidget, BoolProperty>;
template class PropertyWidgetRegistrar<ButtonPropertyWidget, ButtonProperty>;
template class PropertyWidgetRegistrar<ColorPropertyWidget, ColorProperty>;
template class PropertyWidgetRegistrar<DataNamePropertyWidget, DataNameProperty, 10>;
template class PropertyWidgetRegistrar<FloatPropertyWidget, FloatProperty>;
template class PropertyWidgetRegistrar<Vec2PropertyWidget, typename VecPropertyWidgetTraits<2>::PropertyType, 5>;
template class PropertyWidgetRegistrar<Vec3PropertyWidget, typename VecPropertyWidgetTraits<3>::PropertyType, 5>;
template class PropertyWidgetRegistrar<Vec4PropertyWidget, typename VecPropertyWidgetTraits<4>::PropertyType, 5>;
template class PropertyWidgetRegistrar<IntPropertyWidget, IntProperty>;
template class PropertyWidgetRegistrar<IVec2PropertyWidget, typename IVecPropertyWidgetTraits<2>::PropertyType, 5>;
template class PropertyWidgetRegistrar<IVec3PropertyWidget, typename IVecPropertyWidgetTraits<3>::PropertyType, 5>;
template class PropertyWidgetRegistrar<IVec4PropertyWidget, typename IVecPropertyWidgetTraits<4>::PropertyType, 5>;
template class PropertyWidgetRegistrar<MetaPropertyWidget, MetaProperty>;
template class PropertyWidgetRegistrar<OptionPropertyWidget, AbstractOptionProperty, 10>;
template class PropertyWidgetRegistrar<StatusPropertyWidget, StatusProperty>;
template class PropertyWidgetRegistrar<StringPropertyWidget, StringProperty>;
template class PropertyWidgetRegistrar<TransferFunctionPropertyWidget, TransferFunctionProperty>;
}
\ No newline at end of file
......@@ -27,7 +27,6 @@
#include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/statusproperty.h"
......@@ -66,8 +65,5 @@ namespace campvis {
QLabel * _statusLabel;
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<StatusPropertyWidget, StatusProperty>;
}
#endif // STATUSPROPERTYWIDGET_H__
......@@ -27,7 +27,6 @@
#include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/stringproperty.h"
......@@ -72,8 +71,5 @@ namespace campvis {
QPushButton* _btnLoadFile;
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<StringPropertyWidget, StringProperty>;
}
#endif // STRINGPROPERTYWIDGET_H__
......@@ -27,7 +27,6 @@
#include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/transferfunctionproperty.h"
class QDockWidget;
......@@ -115,9 +114,6 @@ namespace campvis {
bool wasVisible; ///< remembers whether _docWidget was visible or not
};
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<TransferFunctionPropertyWidget, TransferFunctionProperty>;
}
#endif // TRANSFERFUNCTIONPROPERTYWIDGET_H__
......@@ -21,3 +21,4 @@ include("${CAMPVIS_CMAKE_DIR}/CAMPVisTargets.cmake")
# These are IMPORTED targets created by FooBarTargets.cmake
SET(CAMPVIS_CORE_LIBRARIES campvis-core)
SET(CAMPVIS_MODULES_LIBRARIES campvis-modules)
SET(CAMPVIS_APPLICATION_LIBRARIES campvis-application-lib)
......@@ -399,10 +399,12 @@ namespace campvis {
template<typename BASETYPE, size_t NUMCHANNELS>
typename campvis::GenericImageRepresentationLocal<BASETYPE, NUMCHANNELS>::ElementType campvis::GenericImageRepresentationLocal<BASETYPE, NUMCHANNELS>::getElementLinear(const cgt::vec3 position) const {
// yet to be implemented
// TODO: Check wether pixel/voxel coordinates lie on the edges or on the center of the pixels/voxels
cgtAssert(false, "Yet to be implemented!");
return ElementType(0);
ElementType toReturn;
for (size_t i = 0; i < NUMCHANNELS; ++i) {
float channelValue = getElementNormalizedLinear(position, i);
TypeTraits<BASETYPE, NUMCHANNELS>::setChannel(toReturn, i, TypeNormalizer::denormalizeFromFloat<BASETYPE>(channelValue));
}
return toReturn;
}
......
......@@ -36,7 +36,7 @@ vec3 computeGradientForwardDifferencesLod(in sampler3D tex, in TextureParameters
float dx = textureLodOffset(tex, texCoords, lod, ivec3(1, 0, 0)).r;
float dy = textureLodOffset(tex, texCoords, lod, ivec3(0, 1, 0)).r;
float dz = textureLodOffset(tex, texCoords, lod, ivec3(0, 0, 1)).r;
return vec3(v - dx, v - dy, v - dz) * texParams._voxelSize;
return vec3(dx - v, dy - v, dz - v) * texParams._voxelSize;
}
/**
......@@ -63,7 +63,7 @@ vec3 computeGradientCentralDifferencesLod(in sampler3D tex, in TextureParameters
float mdx = textureLodOffset(tex, texCoords, lod, ivec3(-1, 0, 0)).r;
float mdy = textureLodOffset(tex, texCoords, lod, ivec3(0, -1, 0)).r;
float mdz = textureLodOffset(tex, texCoords, lod, ivec3(0, 0, -1)).r;
return vec3(mdx - dx, mdy - dy, mdz - dz) * texParams._voxelSize * 0.5;
return vec3(dx - mdx, dy - mdy, dz - mdz) * texParams._voxelSize * 0.5;
}
/**
......@@ -200,7 +200,7 @@ vec3 computeGradientSobel(in sampler3D tex, in vec3 texCoords) {
sobel.y += value;
sobel.z += value;
return -sobelScale * sobel;
return sobelScale * sobel;
}
......
......@@ -155,6 +155,11 @@ namespace campvis {
}
}
void AbstractProcessor::forceProcess(DataContainer& dataContainer, int invalidationLevel) {
invalidate(invalidationLevel);
process(dataContainer);
}
void AbstractProcessor::updateShader() {
LDEBUG("Called non-overriden updateShader() in " << getName() << ". Did you forget to override your method?");
}
......@@ -163,11 +168,7 @@ namespace campvis {
LDEBUG("Called non-overriden updateProperties() in " << getName() << ". Did you forget to override your method?");
}
void AbstractProcessor::addProperty(AbstractProperty& prop) {
this->addProperty(prop, INVALID_RESULT);
}
void AbstractProcessor::addProperty(AbstractProperty& prop, int invalidationLevel) {
void AbstractProcessor::addProperty(AbstractProperty& prop, int invalidationLevel /* = INVALID_RESULT*/) {
HasPropertyCollection::addProperty(prop);
setPropertyInvalidationLevel(prop, invalidationLevel);
}
......
......@@ -149,13 +149,6 @@ namespace campvis {
*/
virtual ProcessorState getProcessorState() const = 0;
/**
* Registers \a prop as property with the default invalidation level of INVALID_RESULT.