Skip to content

Commit

Permalink
[OMEdit] Simplify visual properties of visualizers (#11666)
Browse files Browse the repository at this point in the history
* Simplify usage of visual properties

* Simplify definition of visual properties
  • Loading branch information
anotheruserofgithub committed Dec 4, 2023
1 parent 26f58c4 commit 0a3333e
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 45 deletions.
40 changes: 8 additions & 32 deletions OMEdit/OMEditLIB/Animation/AbstractVisualizer.cpp
Expand Up @@ -104,53 +104,29 @@ std::string VisualizerAttribute::getValueString() const
}

template<typename VisualizerObject>
AbstractVisualProperties::Color::Type VisualProperties<VisualizerObject>::Color::getDefault() const
{
return QColor(0.0, 0.0, 0.0, 0.0);
}

template<typename VisualizerObject>
AbstractVisualProperties::Specular::Type VisualProperties<VisualizerObject>::Specular::getDefault() const
{
return 0.7;
}

template<typename VisualizerObject>
AbstractVisualProperties::Transparency::Type VisualProperties<VisualizerObject>::Transparency::getDefault() const
{
return 0.0;
}

template<typename VisualizerObject>
AbstractVisualProperties::TextureImagePath::Type VisualProperties<VisualizerObject>::TextureImagePath::getDefault() const
{
return "";
}

template<typename VisualizerObject>
AbstractVisualProperties::Color::Type VisualProperties<VisualizerObject>::Color::get() const
AbstractVisualProperties::Color::Type VisualProperties<VisualizerObject>::Color::getProperty() const
{
const VisualizerObject* visualizer = static_cast<const VisualizerObject*>(mpParent);
return mCustom ? mProperty : QColor(visualizer->_color[0].exp, visualizer->_color[1].exp, visualizer->_color[2].exp);
return QColor(visualizer->_color[0].exp, visualizer->_color[1].exp, visualizer->_color[2].exp);
}

template<typename VisualizerObject>
AbstractVisualProperties::Specular::Type VisualProperties<VisualizerObject>::Specular::get() const
AbstractVisualProperties::Specular::Type VisualProperties<VisualizerObject>::Specular::getProperty() const
{
const VisualizerObject* visualizer = static_cast<const VisualizerObject*>(mpParent);
return mCustom ? mProperty : visualizer->_specCoeff.exp;
return visualizer->_specCoeff.exp;
}

template<typename VisualizerObject>
AbstractVisualProperties::Transparency::Type VisualProperties<VisualizerObject>::Transparency::get() const
AbstractVisualProperties::Transparency::Type VisualProperties<VisualizerObject>::Transparency::getProperty() const
{
return AbstractVisualProperties::Transparency::get();
return 0.0;
}

template<typename VisualizerObject>
AbstractVisualProperties::TextureImagePath::Type VisualProperties<VisualizerObject>::TextureImagePath::get() const
AbstractVisualProperties::TextureImagePath::Type VisualProperties<VisualizerObject>::TextureImagePath::getProperty() const
{
return AbstractVisualProperties::TextureImagePath::get();
return "";
}

AbstractVisualizerObject::AbstractVisualizerObject(const VisualizerType type)
Expand Down
19 changes: 8 additions & 11 deletions OMEdit/OMEditLIB/Animation/AbstractVisualizer.h
Expand Up @@ -107,15 +107,16 @@ class VisualProperty
VisualProperty() {reset();}
virtual ~VisualProperty() = default;
protected:
virtual Type getDefault() const {return Type();}
virtual Type getProperty() const {return mProperty;}
public:
virtual bool custom() const {return mCustom;}
virtual Type get() const {return mCustom ? mProperty : getDefault();}
virtual void reset() {mCustom = false, mProperty = getDefault();}
virtual Type get() const {return mCustom ? mProperty : getProperty();}
virtual void set(const Type& rProperty) {mCustom = true, mProperty = rProperty;}
virtual void reset() {mCustom = false, mProperty = Type();}
virtual void parent(const AbstractVisualProperties* pParent) final {mpParent = pParent;}
protected:
const AbstractVisualProperties* mpParent;
private:
Type mProperty;
bool mCustom;
};
Expand All @@ -141,17 +142,13 @@ class VisualProperties : public AbstractVisualProperties
{
private:
class Color final : public AbstractVisualProperties::Color
{ protected: virtual Type getDefault() const override final;
public: virtual Type get() const override final; };
{ protected: virtual Type getProperty() const override final; };
class Specular final : public AbstractVisualProperties::Specular
{ protected: virtual Type getDefault() const override final;
public: virtual Type get() const override final; };
{ protected: virtual Type getProperty() const override final; };
class Transparency final : public AbstractVisualProperties::Transparency
{ protected: virtual Type getDefault() const override final;
public: virtual Type get() const override final; };
{ protected: virtual Type getProperty() const override final; };
class TextureImagePath final : public AbstractVisualProperties::TextureImagePath
{ protected: virtual Type getDefault() const override final;
public: virtual Type get() const override final; };
{ protected: virtual Type getProperty() const override final; };
public:
VisualProperties() noexcept
{
Expand Down
5 changes: 3 additions & 2 deletions OMEdit/OMEditLIB/Animation/Visualization.cpp
Expand Up @@ -1629,6 +1629,8 @@ void UpdateVisitor::apply(osg::Geode& node)
}//end switch action

if (changeMaterial || changeTexture) {
AbstractVisualProperties* visualProperties = _visualizer->getVisualProperties();

osg::ref_ptr<osg::StateSet> stateSet = nullptr;
bool geometryColors = false;
bool is3DSShape = false;
Expand All @@ -1641,7 +1643,7 @@ void UpdateVisitor::apply(osg::Geode& node)
osg::ref_ptr<CADFile> cad = dynamic_cast<CADFile*>(transformNode->getChild(0));
if (cad.valid()) {
stateSet = cad->getOrCreateStateSet();
geometryColors = !shape->getVisualProperties()->getColor().custom();
geometryColors = !visualProperties->getColor().custom();
is3DSShape = is3DSType(shape->_type);
}
}
Expand All @@ -1651,7 +1653,6 @@ void UpdateVisitor::apply(osg::Geode& node)
osg::ref_ptr<osg::StateSet> ss = stateSet.valid() ? stateSet.get() : node.getOrCreateStateSet();
osg::Material::ColorMode mode = geometryColors ? osg::Material::AMBIENT_AND_DIFFUSE : osg::Material::OFF;

AbstractVisualProperties* visualProperties = _visualizer->getVisualProperties();
QColor color = visualProperties->getColor().get();
float specular = visualProperties->getSpecular().get();
float transparency = visualProperties->getTransparency().get();
Expand Down

0 comments on commit 0a3333e

Please sign in to comment.