16.12.2021, 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
Browse files

Merge branch 'development' into 'master'

Development



See merge request !2
parents 9abcb3e4 cbd8ddaa
...@@ -299,7 +299,7 @@ namespace campvis { ...@@ -299,7 +299,7 @@ namespace campvis {
cgt::svec3 lookupTexel(lookupTexelFloat.x, imageSize.y - lookupTexelFloat.y, 0); 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 (lookupTexel.x >= 0 && lookupTexel.y >= 0 && lookupTexel.x < imageSize.x && lookupTexel.y < imageSize.y) {
if (tex->isDepthTexture()) { if (tex->isDepthTexture()) {
emit s_depthChanged(localRep->getElementNormalized(lookupTexel, 0)); emit s_depthChanged(lookupTexel, localRep->getElementNormalized(lookupTexel, 0));
} }
else { else {
if (tex->getDimensions().z != 1) { if (tex->getDimensions().z != 1) {
...@@ -309,7 +309,7 @@ namespace campvis { ...@@ -309,7 +309,7 @@ namespace campvis {
for (size_t i = 0; i < id->getNumChannels(); ++i) { for (size_t i = 0; i < id->getNumChannels(); ++i) {
texel[i] = localRep->getElementNormalized(lookupTexel, i); texel[i] = localRep->getElementNormalized(lookupTexel, i);
} }
emit s_colorChanged(texel); emit s_colorChanged(lookupTexel, texel);
} }
} }
else if (tex->getDimensions().y != 1) { else if (tex->getDimensions().y != 1) {
...@@ -317,7 +317,7 @@ namespace campvis { ...@@ -317,7 +317,7 @@ namespace campvis {
for (size_t i = 0; i < id->getNumChannels(); ++i) { for (size_t i = 0; i < id->getNumChannels(); ++i) {
texel[i] = localRep->getElementNormalized(lookupTexel, i); texel[i] = localRep->getElementNormalized(lookupTexel, i);
} }
emit s_colorChanged(texel); emit s_colorChanged(lookupTexel, texel);
} }
} }
} }
......
...@@ -129,8 +129,8 @@ namespace campvis { ...@@ -129,8 +129,8 @@ namespace campvis {
MetaProperty p_geometryRendererProperties; ///< MetaProperty for the GeometryRenderer MetaProperty p_geometryRendererProperties; ///< MetaProperty for the GeometryRenderer
signals: signals:
void s_colorChanged(const cgt::vec4&); void s_colorChanged(const cgt::svec3& texel, const cgt::vec4&);
void s_depthChanged(float depth); void s_depthChanged(const cgt::svec3& texel, float depth);
private slots: private slots:
/** /**
......
...@@ -227,11 +227,11 @@ namespace campvis { ...@@ -227,11 +227,11 @@ namespace campvis {
this, SIGNAL(dataContainerChanged(const QString&, QtDataHandle)), this, SIGNAL(dataContainerChanged(const QString&, QtDataHandle)),
_canvas, SLOT(onDataContainerChanged(const QString&, QtDataHandle))); _canvas, SLOT(onDataContainerChanged(const QString&, QtDataHandle)));
connect( connect(
_canvas, SIGNAL(s_colorChanged(const cgt::vec4&)), _canvas, SIGNAL(s_colorChanged(const cgt::svec3&, const cgt::vec4&)),
this, SLOT(onColorChanged(const cgt::vec4&))); this, SLOT(onColorChanged(const cgt::svec3&, const cgt::vec4&)));
connect( connect(
_canvas, SIGNAL(s_depthChanged(float)), _canvas, SIGNAL(s_depthChanged(const cgt::svec3&, float)),
this, SLOT(onDepthChanged(float))); this, SLOT(onDepthChanged(const cgt::svec3&, float)));
connect( connect(
this, SIGNAL(dataContainerChanged(const QString&, QtDataHandle)), this, SIGNAL(dataContainerChanged(const QString&, QtDataHandle)),
_dctWidget->getTreeModel(), SLOT(onDataContainerChanged(const QString&, QtDataHandle))); _dctWidget->getTreeModel(), SLOT(onDataContainerChanged(const QString&, QtDataHandle)));
...@@ -540,16 +540,18 @@ namespace campvis { ...@@ -540,16 +540,18 @@ namespace campvis {
} }
void DataContainerInspectorWidget::onColorChanged(const cgt::vec4& color) { void DataContainerInspectorWidget::onColorChanged(const cgt::svec3& texel, 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))); _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)); 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)); _colorValWidgetPalette.setColor(QPalette::Background, QColor(clamped.r, clamped.g, clamped.b, clamped.a));
_colorValWidget->setPalette(_colorValWidgetPalette); _colorValWidget->setPalette(_colorValWidgetPalette);
} }
void DataContainerInspectorWidget::onDepthChanged(float depth) { void DataContainerInspectorWidget::onDepthChanged(const cgt::svec3& texel, float depth) {
_lblColorVal->setText(QString("Depth: %1").arg(QString::number(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)); 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)); _colorValWidgetPalette.setColor(QPalette::Background, QColor(clamped.r, clamped.g, clamped.b, clamped.a));
......
...@@ -130,9 +130,9 @@ namespace campvis { ...@@ -130,9 +130,9 @@ namespace campvis {
void onBtnLoadFileClicked(); void onBtnLoadFileClicked();
/// Slot being called when the color under the mouse has changed /// 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 /// Slot being called when the depth under the mouse has changed
void onDepthChanged(float depth); void onDepthChanged(const cgt::svec3& texel, float depth);
protected: protected:
/** /**
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include "application/applicationapi.h" #include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h" #include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/genericproperty.h" #include "core/properties/genericproperty.h"
class QCheckBox; class QCheckBox;
...@@ -66,8 +65,6 @@ namespace campvis { ...@@ -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__ #endif // BOOLPROPERTYWIDGET_H__
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include "application/applicationapi.h" #include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h" #include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/buttonproperty.h" #include "core/properties/buttonproperty.h"
class QPushButton; class QPushButton;
...@@ -67,8 +66,6 @@ namespace campvis { ...@@ -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__ #endif // BUTTONPROPERTYWIDGET_H__
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include "application/applicationapi.h" #include "application/applicationapi.h"
#include "application/gui/adjusterwidgets/doubleadjusterwidget.h" #include "application/gui/adjusterwidgets/doubleadjusterwidget.h"
#include "application/gui/properties/abstractpropertywidget.h" #include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "application/gui/qtcolortools.h" #include "application/gui/qtcolortools.h"
#include "core/properties/floatingpointproperty.h" #include "core/properties/floatingpointproperty.h"
...@@ -76,11 +75,6 @@ namespace campvis { ...@@ -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__ #endif // COLORPROPERTYWIDGET_H__
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include "core/properties/datanameproperty.h" #include "core/properties/datanameproperty.h"
#include "application/gui/qtdatahandle.h" #include "application/gui/qtdatahandle.h"
#include "application/gui/properties/abstractpropertywidget.h" #include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
class QComboBox; class QComboBox;
class QLineEdit; class QLineEdit;
...@@ -89,9 +88,7 @@ namespace campvis { ...@@ -89,9 +88,7 @@ namespace campvis {
QComboBox* _combobox; QComboBox* _combobox;
}; };
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<DataNamePropertyWidget, DataNameProperty, 10>;
} }
#endif // DATANAMEPROPERTYWIDGET_H__ #endif // DATANAMEPROPERTYWIDGET_H__
...@@ -89,4 +89,23 @@ namespace campvis { ...@@ -89,4 +89,23 @@ namespace campvis {
if (_ignorePropertyUpdates == 0) if (_ignorePropertyUpdates == 0)
emit s_propertyChanged(property); 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 @@ ...@@ -27,7 +27,6 @@
#include "application/gui/adjusterwidgets/doubleadjusterwidget.h" #include "application/gui/adjusterwidgets/doubleadjusterwidget.h"
#include "application/gui/properties/abstractpropertywidget.h" #include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/floatingpointproperty.h" #include "core/properties/floatingpointproperty.h"
namespace campvis { namespace campvis {
...@@ -78,9 +77,6 @@ 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 { namespace {
...@@ -238,16 +234,10 @@ namespace campvis { ...@@ -238,16 +234,10 @@ namespace campvis {
// ================================================================================================ // ================================================================================================
class Vec2PropertyWidget : public VecPropertyWidget<2> { class CAMPVIS_APPLICATION_API Vec2PropertyWidget : public VecPropertyWidget<2> {
Q_OBJECT Q_OBJECT
public: public:
Vec2PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0) 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)));
}
}
private slots: private slots:
void onValueChanged(double value) { onValueChangedImpl(); }; void onValueChanged(double value) { onValueChangedImpl(); };
...@@ -255,16 +245,10 @@ namespace campvis { ...@@ -255,16 +245,10 @@ namespace campvis {
// ================================================================================================ // ================================================================================================
class Vec3PropertyWidget : public VecPropertyWidget<3> { class CAMPVIS_APPLICATION_API Vec3PropertyWidget : public VecPropertyWidget<3> {
Q_OBJECT Q_OBJECT
public: public:
Vec3PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0) 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)));
}
}
private slots: private slots:
void onValueChanged(double value) { onValueChangedImpl(); }; void onValueChanged(double value) { onValueChangedImpl(); };
...@@ -272,28 +256,15 @@ namespace campvis { ...@@ -272,28 +256,15 @@ namespace campvis {
// ================================================================================================ // ================================================================================================
class Vec4PropertyWidget : public VecPropertyWidget<4> { class CAMPVIS_APPLICATION_API Vec4PropertyWidget : public VecPropertyWidget<4> {
Q_OBJECT Q_OBJECT
public: public:
Vec4PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0) 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)));
}
}
private slots: private slots:
void onValueChanged(double value) { onValueChangedImpl(); }; 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__ #endif // FLOATPROPERTYWIDGET_H__
...@@ -143,4 +143,22 @@ namespace campvis { ...@@ -143,4 +143,22 @@ namespace campvis {
_btnShowHideTimer->setText(_sbInterval->isVisible() ? tr("H") : tr("S")); _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 @@ ...@@ -27,7 +27,6 @@
#include "application/gui/adjusterwidgets/intadjusterwidget.h" #include "application/gui/adjusterwidgets/intadjusterwidget.h"
#include "application/gui/properties/abstractpropertywidget.h" #include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/numericproperty.h" #include "core/properties/numericproperty.h"
class QCheckBox; class QCheckBox;
...@@ -84,9 +83,6 @@ namespace campvis { ...@@ -84,9 +83,6 @@ namespace campvis {
}; };
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<IntPropertyWidget, IntProperty>;
// ================================================================================================ // ================================================================================================
namespace { namespace {
...@@ -226,13 +222,7 @@ namespace campvis { ...@@ -226,13 +222,7 @@ namespace campvis {
class IVec2PropertyWidget : public IVecPropertyWidget<2> { class IVec2PropertyWidget : public IVecPropertyWidget<2> {
Q_OBJECT Q_OBJECT
public: public:
IVec2PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0) 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)));
}
}
private slots: private slots:
void onValueChanged(int value) { onValueChangedImpl(); }; void onValueChanged(int value) { onValueChangedImpl(); };
...@@ -243,13 +233,7 @@ namespace campvis { ...@@ -243,13 +233,7 @@ namespace campvis {
class IVec3PropertyWidget : public IVecPropertyWidget<3> { class IVec3PropertyWidget : public IVecPropertyWidget<3> {
Q_OBJECT Q_OBJECT
public: public:
IVec3PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0) 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)));
}
}
private slots: private slots:
void onValueChanged(int value) { onValueChangedImpl(); }; void onValueChanged(int value) { onValueChangedImpl(); };
...@@ -260,24 +244,11 @@ namespace campvis { ...@@ -260,24 +244,11 @@ namespace campvis {
class IVec4PropertyWidget : public IVecPropertyWidget<4> { class IVec4PropertyWidget : public IVecPropertyWidget<4> {
Q_OBJECT Q_OBJECT
public: public:
IVec4PropertyWidget(PropertyType* property, DataContainer* dataContainer = nullptr, QWidget* parent = 0) 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)));
}
}
private slots: private slots:
void onValueChanged(int value) { onValueChangedImpl(); }; 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__ #endif // INTPROPERTYWIDGET_H__
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include "application/applicationapi.h" #include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h" #include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertycollectionwidget.h" #include "application/gui/properties/propertycollectionwidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
namespace campvis { namespace campvis {
class DataContainer; class DataContainer;
...@@ -68,9 +67,6 @@ namespace campvis { ...@@ -68,9 +67,6 @@ namespace campvis {
PropertyCollectionWidget* _pcw; PropertyCollectionWidget* _pcw;
}; };
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<MetaPropertyWidget, MetaProperty>;
} }
#endif // METAPROPERTYWIDGET_H__ #endif // METAPROPERTYWIDGET_H__
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include "application/applicationapi.h" #include "application/applicationapi.h"
#include "application/gui/properties/abstractpropertywidget.h" #include "application/gui/properties/abstractpropertywidget.h"
#include "application/gui/properties/propertywidgetfactory.h"
#include "core/properties/optionproperty.h" #include "core/properties/optionproperty.h"
...@@ -69,8 +68,5 @@ namespace campvis { ...@@ -69,8 +68,5 @@ namespace campvis {
QComboBox* _comboBox; QComboBox* _comboBox;
}; };
// explicitly instantiate template, so that it gets registered also over DLL boundaries.
template class PropertyWidgetRegistrar<OptionPropertyWidget, AbstractOptionProperty, 10>;
} }
#endif // OPTIONPROPERTYWIDGET_H__ #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