diff --git a/OpenMesh/OMPropertyVisualizer.hh b/OpenMesh/OMPropertyVisualizer.hh index d45e94c6041fcb7587b1c61d9fc6ef616c887ae8..a76e6fd35fafbf70a42267c0b50fd8be0ed98690 100644 --- a/OpenMesh/OMPropertyVisualizer.hh +++ b/OpenMesh/OMPropertyVisualizer.hh @@ -125,7 +125,6 @@ protected: virtual void setHalfedgePropertyFromText(unsigned int index, QString text); virtual void setVertexPropertyFromText(unsigned int index, QString text); - OpenMesh::Vec4f convertColor(QColor color); virtual void setPropertyFromText(unsigned int index, QString text); virtual int getEntityCount(); diff --git a/OpenMesh/OMPropertyVisualizerDouble.hh b/OpenMesh/OMPropertyVisualizerDouble.hh index 07778d7be862ea596a209335fc79e0f395c0d1d4..e0f9830a4643fe3dbd624979da5bf00c450fad8e 100644 --- a/OpenMesh/OMPropertyVisualizerDouble.hh +++ b/OpenMesh/OMPropertyVisualizerDouble.hh @@ -70,7 +70,6 @@ public: virtual ~OMPropertyVisualizerDouble(){} protected: - virtual void visualizeFaceProp(bool _setDrawMode = true); virtual void visualizeEdgeProp(bool _setDrawMode = true); virtual void visualizeHalfedgeProp(bool _setDrawMode = true); diff --git a/OpenMesh/OMPropertyVisualizerDoubleT.cc b/OpenMesh/OMPropertyVisualizerDoubleT.cc index b303478fb0e962cd7c1e950df17ba5208e9c6225..bccc77e839ea4f3d1a0d37f62a0f6ad9722d0c93 100644 --- a/OpenMesh/OMPropertyVisualizerDoubleT.cc +++ b/OpenMesh/OMPropertyVisualizerDoubleT.cc @@ -66,13 +66,11 @@ template <typename MeshT> void OMPropertyVisualizerDouble<MeshT>::visualizeFaceProp(bool _setDrawMode) { DoubleWidget* doubleWidget = static_cast<DoubleWidget*>(PropertyVisualizer::widget); - typename MeshT::Color colorMin, colorMax; - colorMin = OMPropertyVisualizer<MeshT>::convertColor(doubleWidget->doubleMin->color()); - colorMax = OMPropertyVisualizer<MeshT>::convertColor(doubleWidget->doubleMax->color()); + typename MeshT::Color colorMin = ACG::to_Vec4f(doubleWidget->doubleMin->color()); // color coder in [0,1] - ACG::ColorCoder cc; + ACG::IColorCoder *cc = doubleWidget->buildColorCoder(); OpenMesh::FPropHandleT< double > prop; @@ -133,18 +131,13 @@ void OMPropertyVisualizerDouble<MeshT>::visualizeFaceProp(bool _setDrawMode) v = std::min(max,v); double t = (v-min)/range; - - typename MeshT::Color color; - - if( doubleWidget->doubleColorCoder->isChecked()) - color = cc.color_float4(t); - else - color = (colorMin)*(1.0-t) + (colorMax)*t; + typename MeshT::Color color = cc->color_float4(t); // set color OMPropertyVisualizer<MeshT>::mesh->set_color(*f_it, color); } } + delete cc; if (_setDrawMode) PluginFunctions::setDrawMode(ACG::SceneGraph::DrawModes::SOLID_FACES_COLORED); @@ -154,15 +147,12 @@ template <typename MeshT> void OMPropertyVisualizerDouble<MeshT>::visualizeEdgeProp(bool _setDrawMode) { DoubleWidget* doubleWidget = static_cast<DoubleWidget*>(PropertyVisualizer::widget); - typename MeshT::Color colorMin, colorMax; + typename MeshT::Color colorMin; - colorMin = OMPropertyVisualizer<MeshT>::convertColor(doubleWidget->doubleMin->color()); - colorMax = OMPropertyVisualizer<MeshT>::convertColor(doubleWidget->doubleMax->color()); + colorMin = ACG::to_Vec4f(doubleWidget->doubleMin->color()); // color coder in [0,1] - ACG::ColorCoder cc; - - + ACG::IColorCoder *cc = doubleWidget->buildColorCoder(); //TODO check if this also works if the property is Vec3d OpenMesh::EPropHandleT< double > prop; @@ -225,19 +215,13 @@ void OMPropertyVisualizerDouble<MeshT>::visualizeEdgeProp(bool _setDrawMode) v = std::min(max,v); double t = (v-min)/range; - - typename MeshT::Color color; - - if( doubleWidget->doubleColorCoder->isChecked()) - color = cc.color_float4(t); - else - color = (colorMin)*(1.0-t) + (colorMax)*t; + typename MeshT::Color color = cc->color_float4(t); // set color OMPropertyVisualizer<MeshT>::mesh->set_color(*e_it, color); } } - + delete cc; if (_setDrawMode) PluginFunctions::setDrawMode(ACG::SceneGraph::DrawModes::EDGES_COLORED); @@ -248,14 +232,11 @@ template <typename MeshT> void OMPropertyVisualizerDouble<MeshT>::visualizeHalfedgeProp(bool _setDrawMode) { DoubleWidget* doubleWidget = static_cast<DoubleWidget*>(PropertyVisualizer::widget); - typename MeshT::Color colorMin, colorMax; - colorMin = OMPropertyVisualizer<MeshT>::convertColor(doubleWidget->doubleMin->color()); - colorMax = OMPropertyVisualizer<MeshT>::convertColor(doubleWidget->doubleMax->color()); + typename MeshT::Color colorMin = ACG::to_Vec4f(doubleWidget->doubleMin->color()); // color coder in [0,1] - ACG::ColorCoder cc; - + ACG::IColorCoder *cc = doubleWidget->buildColorCoder(); //TODO check if this also works if the property is Vec3d OpenMesh::HPropHandleT< double > prop; @@ -317,14 +298,7 @@ void OMPropertyVisualizerDouble<MeshT>::visualizeHalfedgeProp(bool _setDrawMode) v = std::min(max,v); double t = (v-min)/range; - - typename MeshT::Color color; - - if( doubleWidget->doubleColorCoder->isChecked()) - color = cc.color_float4(t); - else { - color = (colorMin)*(1.0-t) + (colorMax)*t; - } + typename MeshT::Color color = cc->color_float4(t); // set color OMPropertyVisualizer<MeshT>::mesh->set_color(*he_it, color); @@ -338,13 +312,11 @@ template <typename MeshT> void OMPropertyVisualizerDouble<MeshT>::visualizeVertexProp(bool _setDrawMode) { DoubleWidget* doubleWidget = static_cast<DoubleWidget*>(PropertyVisualizer::widget); - typename MeshT::Color colorMin, colorMax; - colorMin = OMPropertyVisualizer<MeshT>::convertColor(doubleWidget->doubleMin->color()); - colorMax = OMPropertyVisualizer<MeshT>::convertColor(doubleWidget->doubleMax->color()); + typename MeshT::Color colorMin = ACG::to_Vec4f(doubleWidget->doubleMin->color()); // color coder in [0,1] - ACG::ColorCoder cc; + ACG::IColorCoder *cc = doubleWidget->buildColorCoder(); //TODO check if this also works if the property is Vec3d OpenMesh::VPropHandleT< double > prop; @@ -406,14 +378,7 @@ void OMPropertyVisualizerDouble<MeshT>::visualizeVertexProp(bool _setDrawMode) v = std::min(max,v); double t = (v-min)/range; - - typename MeshT::Color color; - - if( doubleWidget->doubleColorCoder->isChecked()) - color = cc.color_float4(t); - else { - color = (colorMin)*(1.0-t) + (colorMax)*t; - } + typename MeshT::Color color = cc->color_float4(t); // set color OMPropertyVisualizer<MeshT>::mesh->set_color(*v_it, color); diff --git a/OpenMesh/OMPropertyVisualizerInteger.hh b/OpenMesh/OMPropertyVisualizerInteger.hh index abd49301109885948dcda27d5e3966f091b21bbf..b32c3efc95d2b7b49edc43b59ddcc41fbd083c5b 100644 --- a/OpenMesh/OMPropertyVisualizerInteger.hh +++ b/OpenMesh/OMPropertyVisualizerInteger.hh @@ -66,7 +66,6 @@ public: virtual ~OMPropertyVisualizerInteger(){} protected: - virtual void visualizeFaceProp(bool _setDrawMode = true); virtual void visualizeEdgeProp(bool _setDrawMode = true); virtual void visualizeHalfedgeProp(bool _setDrawMode = true); diff --git a/OpenMesh/OMPropertyVisualizerIntegerT.cc b/OpenMesh/OMPropertyVisualizerIntegerT.cc index 53edf1f2d3be58838a82bf46eb1f69cc3e1abc9d..d9a7c806948178d2c70676bc9a05d6435f19cc4b 100644 --- a/OpenMesh/OMPropertyVisualizerIntegerT.cc +++ b/OpenMesh/OMPropertyVisualizerIntegerT.cc @@ -49,6 +49,7 @@ #define OM_PROPERTY_VISUALIZER_INTEGER_CC +#include <ACG/Utils/IColorCoder.hh> #include <ACG/Utils/ColorConversion.hh> #include "OMPropertyVisualizerInteger.hh" @@ -78,13 +79,9 @@ template <typename MeshT, typename T> void OMPropertyVisualizerInteger<MeshT, T>::visualizeFaceProp(bool _setDrawMode) { IntegerWidget* integerWidget = static_cast<IntegerWidget*>(PropertyVisualizer::widget); - typename MeshT::Color colorMin, colorMax; - colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); - colorMax = ACG::to_Vec4f(integerWidget->intMax->color()); - - // color coder in [0,1] - ACG::ColorCoder cc; + typename MeshT::Color colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); + ACG::IColorCoder *cc = integerWidget->buildColorCoder(); // color coder in [0,1] std::map< int, typename MeshT::Color> randomColor; @@ -132,19 +129,7 @@ void OMPropertyVisualizerInteger<MeshT, T>::visualizeFaceProp(bool _setDrawMode) typename MeshT::Color color; - if (integerWidget->intColorCoder->isChecked()) - { - color = cc.color_float4(pos); - } - else if ( !integerWidget->intRandom->isChecked() ){ - - color[0] = colorMin[0] * (1-pos) + pos * colorMax[0]; - color[1] = colorMin[1] * (1-pos) + pos * colorMax[1]; - color[2] = colorMin[2] * (1-pos) + pos * colorMax[2]; - color[3] = 1.0; - - } else { - + if (integerWidget->intRandom->isChecked() ){ if ( randomColor.find( getValue(prop, f_it) ) == randomColor.end() ){ color = mColorGenerator.generateNextColor(); @@ -154,11 +139,14 @@ void OMPropertyVisualizerInteger<MeshT, T>::visualizeFaceProp(bool _setDrawMode) } color = randomColor[ getValue(prop, f_it) ]; + } else { + color = cc->color_float4(pos); } OMPropertyVisualizer<MeshT>::mesh->set_color(*f_it, color); } } + delete cc; if (_setDrawMode) PluginFunctions::setDrawMode(ACG::SceneGraph::DrawModes::SOLID_FACES_COLORED); @@ -168,13 +156,9 @@ template <typename MeshT, typename T> void OMPropertyVisualizerInteger<MeshT, T>::visualizeEdgeProp(bool _setDrawMode) { IntegerWidget* integerWidget = static_cast<IntegerWidget*>(PropertyVisualizer::widget); - typename MeshT::Color colorMin, colorMax; - colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); - colorMax = ACG::to_Vec4f(integerWidget->intMax->color()); - - // color coder in [0,1] - ACG::ColorCoder cc; + typename MeshT::Color colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); + ACG::IColorCoder *cc = integerWidget->buildColorCoder(); // color coder in [0,1] std::map< int, typename MeshT::Color> randomColor; @@ -222,19 +206,7 @@ void OMPropertyVisualizerInteger<MeshT, T>::visualizeEdgeProp(bool _setDrawMode) typename MeshT::Color color; - if (integerWidget->intColorCoder->isChecked()) - { - color = cc.color_float4(pos); - } - else if ( !integerWidget->intRandom->isChecked() ){ - - color[0] = colorMin[0] * (1-pos) + pos * colorMax[0]; - color[1] = colorMin[1] * (1-pos) + pos * colorMax[1]; - color[2] = colorMin[2] * (1-pos) + pos * colorMax[2]; - color[3] = 1.0; - - } else { - + if (integerWidget->intRandom->isChecked() ){ if ( randomColor.find( getValue(prop, e_it) ) == randomColor.end() ){ color = mColorGenerator.generateNextColor(); @@ -244,6 +216,8 @@ void OMPropertyVisualizerInteger<MeshT, T>::visualizeEdgeProp(bool _setDrawMode) } color = randomColor[ getValue(prop, e_it) ]; + } else { + color = cc->color_float4(pos); } OMPropertyVisualizer<MeshT>::mesh->set_color(*e_it, color); @@ -259,13 +233,9 @@ template <typename MeshT, typename T> void OMPropertyVisualizerInteger<MeshT, T>::visualizeHalfedgeProp(bool _setDrawMode) { IntegerWidget* integerWidget = static_cast<IntegerWidget*>(PropertyVisualizer::widget); - typename MeshT::Color colorMin, colorMax; - colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); - colorMax = ACG::to_Vec4f(integerWidget->intMax->color()); - - // color coder in [0,1] - ACG::ColorCoder cc; + typename MeshT::Color colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); + ACG::IColorCoder *cc = integerWidget->buildColorCoder(); // color coder in [0,1] std::map< int, typename MeshT::Color> randomColor; @@ -313,19 +283,7 @@ void OMPropertyVisualizerInteger<MeshT, T>::visualizeHalfedgeProp(bool _setDrawM typename MeshT::Color color; - if (integerWidget->intColorCoder->isChecked()) - { - color = cc.color_float4(pos); - } - else if ( !integerWidget->intRandom->isChecked() ){ - - color[0] = colorMin[0] * (1-pos) + pos * colorMax[0]; - color[1] = colorMin[1] * (1-pos) + pos * colorMax[1]; - color[2] = colorMin[2] * (1-pos) + pos * colorMax[2]; - color[3] = 1.0; - - } else { - + if (integerWidget->intRandom->isChecked() ){ if ( randomColor.find( getValue(prop, he_it) ) == randomColor.end() ){ color = mColorGenerator.generateNextColor(); @@ -335,6 +293,8 @@ void OMPropertyVisualizerInteger<MeshT, T>::visualizeHalfedgeProp(bool _setDrawM } color = randomColor[ getValue(prop, he_it) ]; + } else { + color = cc->color_float4(pos); } OMPropertyVisualizer<MeshT>::mesh->set_color(*he_it, color); @@ -349,13 +309,9 @@ template <typename MeshT, typename T> void OMPropertyVisualizerInteger<MeshT, T>::visualizeVertexProp(bool _setDrawMode) { IntegerWidget* integerWidget = static_cast<IntegerWidget*>(PropertyVisualizer::widget); - typename MeshT::Color colorMin, colorMax; - colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); - colorMax = ACG::to_Vec4f(integerWidget->intMax->color()); - - // color coder in [0,1] - ACG::ColorCoder cc; + typename MeshT::Color colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); + ACG::IColorCoder *cc = integerWidget->buildColorCoder(); // color coder in [0,1] std::map< int, typename MeshT::Color> randomColor; @@ -403,21 +359,7 @@ void OMPropertyVisualizerInteger<MeshT, T>::visualizeVertexProp(bool _setDrawMod typename MeshT::Color color; - if (integerWidget->intColorCoder->isChecked()) - { - color = cc.color_float4(pos); - } - else if ( !integerWidget->intRandom->isChecked() ){ - - color[0] = colorMin[0] * (1-pos) + pos * colorMax[0]; - color[1] = colorMin[1] * (1-pos) + pos * colorMax[1]; - color[2] = colorMin[2] * (1-pos) + pos * colorMax[2]; - color[3] = 1.0; - - } - else - { - + if (integerWidget->intRandom->isChecked() ){ if ( randomColor.find( getValue(prop, v_it) ) == randomColor.end() ){ color = mColorGenerator.generateNextColor(); @@ -427,6 +369,8 @@ void OMPropertyVisualizerInteger<MeshT, T>::visualizeVertexProp(bool _setDrawMod } color = randomColor[ getValue(prop, v_it) ]; + } else { + color = cc->color_float4(pos); } OMPropertyVisualizer<MeshT>::mesh->set_color(*v_it, color); diff --git a/OpenMesh/OMPropertyVisualizerT.cc b/OpenMesh/OMPropertyVisualizerT.cc index 61377dd031f353fd20bcf85920ec4f56ff70d9b8..e7d49f4a988ef49a4d83c0af3282c78fc1097367 100644 --- a/OpenMesh/OMPropertyVisualizerT.cc +++ b/OpenMesh/OMPropertyVisualizerT.cc @@ -348,20 +348,6 @@ void OMPropertyVisualizer<MeshT>::clear() clearVertexProp(); } - -template <typename MeshT> -OpenMesh::Vec4f OMPropertyVisualizer<MeshT>::convertColor(const QColor _color){ - - OpenMesh::Vec4f color; - - color[0] = _color.redF(); - color[1] = _color.greenF(); - color[2] = _color.blueF(); - color[3] = _color.alphaF(); - - return color; -} - template <typename MeshT> void OMPropertyVisualizer<MeshT>::visualizeFaceProp(bool /*_setDrawMode*/) { diff --git a/OpenVolumeMesh/OVMPropertyVisualizer.hh b/OpenVolumeMesh/OVMPropertyVisualizer.hh index 534434c1b40697b56a73d5405bb2d118c3ed77c2..2794e2a94dde31c748db66d8aa08c1870c4b4c44 100644 --- a/OpenVolumeMesh/OVMPropertyVisualizer.hh +++ b/OpenVolumeMesh/OVMPropertyVisualizer.hh @@ -110,8 +110,6 @@ protected: template<typename PropType> void duplicateProperty_stage1(); - OpenMesh::Vec4f convertColor(QColor color); - template <typename InnerType> QString getPropertyText_(unsigned int index); diff --git a/OpenVolumeMesh/OVMPropertyVisualizerDouble.hh b/OpenVolumeMesh/OVMPropertyVisualizerDouble.hh index 06de13d845d5c2b4af28cf89180eb715a6d89622..865e2291f914d88cfc74a971db980e9576d18659 100644 --- a/OpenVolumeMesh/OVMPropertyVisualizerDouble.hh +++ b/OpenVolumeMesh/OVMPropertyVisualizerDouble.hh @@ -58,9 +58,7 @@ #include <OpenFlipper/BasePlugin/PluginFunctions.hh> -#include <ACG/Utils/ColorCoder.hh> - - +#include <ACG/Utils/IColorCoder.hh> #include <iostream> @@ -72,7 +70,6 @@ public: virtual ~OVMPropertyVisualizerDouble(){} protected: - template <typename PropType, typename EntityIterator> void visualizeProp(PropType prop, EntityIterator e_begin, EntityIterator e_end); virtual void duplicateProperty(); diff --git a/OpenVolumeMesh/OVMPropertyVisualizerDoubleT.cc b/OpenVolumeMesh/OVMPropertyVisualizerDoubleT.cc index 003cac151e3a6c1eecd55c85ed0843b840296ace..293483da68ef3972e2b3c4e194871f4230ce82b1 100644 --- a/OpenVolumeMesh/OVMPropertyVisualizerDoubleT.cc +++ b/OpenVolumeMesh/OVMPropertyVisualizerDoubleT.cc @@ -57,8 +57,6 @@ #include <ACG/Utils/LinearTwoColorCoder.hh> #include <ACG/Utils/ColorConversion.hh> -#include <QObject> - template <typename MeshT> OVMPropertyVisualizerDouble<MeshT>::OVMPropertyVisualizerDouble(MeshT* _mesh, int objectID, PropertyInfo _propertyInfo) : OVMPropertyVisualizer<MeshT>(_mesh, objectID, _propertyInfo) @@ -77,11 +75,8 @@ void OVMPropertyVisualizerDouble<MeshT>::visualizeProp(PropType prop, EntityIter DoubleWidget* doubleWidget = static_cast<DoubleWidget*>(PropertyVisualizer::widget); ACG::Vec4f colorMin = ACG::to_Vec4f(doubleWidget->doubleMin->color()); - ACG::Vec4f colorMax = ACG::to_Vec4f(doubleWidget->doubleMax->color()); - - // color coder in [0,1] - ACG::ColorCoder cc; + ACG::IColorCoder *cc = doubleWidget->buildColorCoder(); double min, max; if ( doubleWidget->doubleAbsolute->isChecked() ){ @@ -137,13 +132,7 @@ void OVMPropertyVisualizerDouble<MeshT>::visualizeProp(PropType prop, EntityIter double t = (value-min)/range; - ACG::Vec4f color; - - if( doubleWidget->doubleColorCoder->isChecked()) - color = cc.color_float4(t); - else { - color = (colorMin)*(1.0-t) + (colorMax)*t; - } + ACG::Vec4f color = cc->color_float4(t); if (doubleWidget->doubleMapOutsideRange->isChecked()) { if (prop[*e_it] < min || prop[*e_it] > max) @@ -154,6 +143,7 @@ void OVMPropertyVisualizerDouble<MeshT>::visualizeProp(PropType prop, EntityIter object->colors()[*e_it] = color; } } + delete cc; } CALLS_TO_VISUALIZE_PROP(OVMPropertyVisualizerDouble<MeshT>, typename MeshT, double) diff --git a/OpenVolumeMesh/OVMPropertyVisualizerInteger.hh b/OpenVolumeMesh/OVMPropertyVisualizerInteger.hh index 3daca00aeff334a8355f4a0e2eaaacf10208797a..22b9fc372efab6a5c1efb9d5c3e5dc17d39d214a 100644 --- a/OpenVolumeMesh/OVMPropertyVisualizerInteger.hh +++ b/OpenVolumeMesh/OVMPropertyVisualizerInteger.hh @@ -68,7 +68,6 @@ public: virtual ~OVMPropertyVisualizerInteger(){} protected: - template <typename PropType, typename EntityIterator> void visualizeProp(PropType prop, EntityIterator e_begin, EntityIterator e_end); virtual void duplicateProperty(); diff --git a/OpenVolumeMesh/OVMPropertyVisualizerIntegerT.cc b/OpenVolumeMesh/OVMPropertyVisualizerIntegerT.cc index 86d902cb0ce4c351ed494620f0e11b23cca3b967..63bbf3928a163e1afe3f7d0d6099586d32364c7c 100644 --- a/OpenVolumeMesh/OVMPropertyVisualizerIntegerT.cc +++ b/OpenVolumeMesh/OVMPropertyVisualizerIntegerT.cc @@ -53,6 +53,7 @@ #include "OVMPropertyVisualizerInteger.hh" #include <ACG/Utils/ColorConversion.hh> +#include <ACG/Utils/LinearTwoColorCoder.hh> template <typename MeshT, typename T> OVMPropertyVisualizerInteger<MeshT,T>::OVMPropertyVisualizerInteger(MeshT* _mesh, int objectID, PropertyInfo _propertyInfo, bool isUnsigned) @@ -82,10 +83,8 @@ void OVMPropertyVisualizerInteger<MeshT, T>::visualizeProp(PropType prop, Entity if (!prop) return; IntegerWidget* integerWidget = static_cast<IntegerWidget*>(PropertyVisualizer::widget); - ACG::Vec4f colorMin, colorMax; - colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); - colorMax = ACG::to_Vec4f(integerWidget->intMax->color()); + ACG::Vec4f colorMin = ACG::to_Vec4f(integerWidget->intMin->color()); std::map< int, ACG::Vec4f> randomColor; @@ -113,7 +112,7 @@ void OVMPropertyVisualizerInteger<MeshT, T>::visualizeProp(PropType prop, Entity integerWidget->intFixedRangeMax->setValue(max); } - ACG::ColorCoder cc; + ACG::IColorCoder *cc = integerWidget->buildColorCoder(); unsigned int range = max - min; VolumeMeshObject<MeshT>* object; @@ -127,20 +126,9 @@ void OVMPropertyVisualizerInteger<MeshT, T>::visualizeProp(PropType prop, Entity T value = prop[*e_it]; double pos = (value - min) / (double) range; ACG::Vec4f color; - if (integerWidget->intColorCoder->isChecked()) - { - color = cc.color_float4(pos); - } - else - if ( !integerWidget->intRandom->isChecked() ) - { - color[0] = colorMin[0] * (1-pos) + pos * colorMax[0]; - color[1] = colorMin[1] * (1-pos) + pos * colorMax[1]; - color[2] = colorMin[2] * (1-pos) + pos * colorMax[2]; - color[3] = 1.0; - } - else + if ( integerWidget->intRandom->isChecked() ) { + // TODO: build appropriate subclass of IColorCoder for this purpose if ( randomColor.find( value ) == randomColor.end() ) { color = mColorGenerator.generateNextColor(); @@ -149,11 +137,15 @@ void OVMPropertyVisualizerInteger<MeshT, T>::visualizeProp(PropType prop, Entity } color = randomColor[ value ]; } + else + { + color = cc->color_float4(pos); + } object->colors()[*e_it] = color; } } - + delete cc; } #define KOMMA , CALLS_TO_VISUALIZE_PROP(OVMPropertyVisualizerInteger<MeshT KOMMA T>, typename MeshT KOMMA typename T, T) diff --git a/OpenVolumeMesh/OVMPropertyVisualizerT.cc b/OpenVolumeMesh/OVMPropertyVisualizerT.cc index 9b4fa6b65fe0a58ab13795a222ba69c5452932e0..b28bf231183f5332feecefa9e38ab8b30a740cb3 100644 --- a/OpenVolumeMesh/OVMPropertyVisualizerT.cc +++ b/OpenVolumeMesh/OVMPropertyVisualizerT.cc @@ -234,19 +234,6 @@ void OVMPropertyVisualizer<MeshT>::visualize(bool _setDrawMode, QWidget* _widget } } -template <typename MeshT> -OpenMesh::Vec4f OVMPropertyVisualizer<MeshT>::convertColor(const QColor _color){ - - OpenMesh::Vec4f color; - - color[0] = _color.redF(); - color[1] = _color.greenF(); - color[2] = _color.blueF(); - color[3] = _color.alphaF(); - - return color; -} - template <typename MeshT> void OVMPropertyVisualizer<MeshT>::visualizeFaceProp(bool /*_setDrawMode*/) { diff --git a/PropertyVisualizer.hh b/PropertyVisualizer.hh index a4b3db3e7530a4e37419ee99e8e50f0cb82da9b1..6fa4e543e5beec138d0f2d87f98fecabafae75f4 100644 --- a/PropertyVisualizer.hh +++ b/PropertyVisualizer.hh @@ -156,7 +156,6 @@ public: /// Returns the header for saving. virtual QString getHeader() = 0; - static inline QString toStr(bool b) { return b ? QObject::tr("True") : QObject::tr("False"); } static inline QString toStr(double d) { return QObject::tr("%1").arg(d); } static inline QString toStr(int i) { return QObject::tr("%1").arg(i); } diff --git a/Widgets/DoubleWidget.hh b/Widgets/DoubleWidget.hh index 9d9ed8c034bb98635c242d25301673cf111acc45..65dfbf177ed4c799ebb67da4e9984a40476b3433 100644 --- a/Widgets/DoubleWidget.hh +++ b/Widgets/DoubleWidget.hh @@ -52,6 +52,10 @@ #include "ui_DoubleWidget.hh" +#include "ACG/Utils/IColorCoder.hh" +#include "ACG/Utils/LinearTwoColorCoder.hh" +#include <ACG/Utils/ColorConversion.hh> + #if QT_VERSION >= 0x050000 #include <QtWidgets> #else @@ -69,6 +73,22 @@ public: { setupUi(this); } + + /** + * @brief Builds a color coder according to UI settings + * @return Pointer to an IColorCoder for parameters in [0..1] + * @note Caller is responsible for deleting the returned object. + */ + ACG::IColorCoder *buildColorCoder() + { + if (doubleColorCoder->isChecked()) { + return new ACG::ColorCoder(); + } else { + return new ACG::LinearTwoColorCoder( + ACG::to_Vec4f(doubleMin->color()), + ACG::to_Vec4f(doubleMax->color())); + } + } signals: void widgetShown(); diff --git a/Widgets/IntegerWidget.hh b/Widgets/IntegerWidget.hh index 2841aaa0909de049df6cf4e5609b4b30290a4353..c7e296f3da8def1706c8663bdcaf15ad4c4283a5 100644 --- a/Widgets/IntegerWidget.hh +++ b/Widgets/IntegerWidget.hh @@ -52,6 +52,11 @@ #include "ui_IntegerWidget.hh" +#include "ACG/Utils/IColorCoder.hh" +#include "ACG/Utils/ColorCoder.hh" +#include "ACG/Utils/LinearTwoColorCoder.hh" +#include <ACG/Utils/ColorConversion.hh> + #if QT_VERSION >= 0x050000 #include <QtWidgets> #else @@ -69,6 +74,23 @@ public: { setupUi(this); } + + /** + * @brief Builds a color coder according to UI settings + * @return Pointer to an IColorCoder for parameters in [0..1] + * @note Caller is responsible for deleting the returned object. + */ + ACG::IColorCoder *buildColorCoder() + { + if (intColorCoder->isChecked()) { + return new ACG::ColorCoder(); + } else { + return new ACG::LinearTwoColorCoder( + ACG::to_Vec4f(intMin->color()), + ACG::to_Vec4f(intMax->color())); + } + } + signals: void widgetShown();