From 61c5da7aa4f29dbe40538f4a9b3d247c6c54ad6d Mon Sep 17 00:00:00 2001 From: Peter Steneteg Date: Tue, 10 Dec 2024 11:50:16 +0100 Subject: [PATCH 1/7] Various: updates for core changes --- misc/graphviz/src/graphvizsettings.cpp | 8 ++++---- misc/vtk/include/inviwo/vtk/ports/vtkinport.h | 9 ++++----- misc/vtk/include/inviwo/vtk/ports/vtkoutport.h | 10 ++++------ .../datastructures/molecularstructuretraits.h | 6 +++--- molvis/molvispython/bindings/src/pymolvis.cpp | 2 ++ 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/misc/graphviz/src/graphvizsettings.cpp b/misc/graphviz/src/graphvizsettings.cpp index e3a039e7..d7d1a696 100644 --- a/misc/graphviz/src/graphvizsettings.cpp +++ b/misc/graphviz/src/graphvizsettings.cpp @@ -185,7 +185,7 @@ void layoutNetwork(ProcessorNetwork* net, glm::dvec2 sep, bool alignSources, boo createDotGraph(buff, net, sep, alignSources, alignSinks); calculateLayout(buff, net, [](Processor* p, const dvec2 pos) { - if (auto* meta = p->getMetaData(ProcessorMetaData::CLASS_IDENTIFIER)) { + if (auto* meta = p->getMetaData(ProcessorMetaData::classIdentifier)) { meta->setPosition(snap(pos)); } }); @@ -221,7 +221,7 @@ GraphvizSettings::GraphvizSettings(InviwoApplication* app) calculateLayout(buff, app_->getProcessorNetwork(), [](Processor* p, const dvec2 pos) { dvec2 cpos{-1, -1}; if (auto* meta = - p->getMetaData(ProcessorMetaData::CLASS_IDENTIFIER)) { + p->getMetaData(ProcessorMetaData::classIdentifier)) { cpos = meta->getPosition(); } LogInfo(fmt::format("{:30} New: {:20} Snapped: {:20} Current: {:20}", @@ -244,12 +244,12 @@ void GraphvizSettings::autoLayoutNetwork() { void GraphvizSettings::onProcessorNetworkDidAddProcessor(Processor* processor) { autoLayoutNetwork(); - auto meta = processor->getMetaData(ProcessorMetaData::CLASS_IDENTIFIER); + auto meta = processor->getMetaData(ProcessorMetaData::classIdentifier); meta->addObserver(this); } void GraphvizSettings::onProcessorNetworkDidRemoveProcessor(Processor* processor) { autoLayoutNetwork(); - auto meta = processor->getMetaData(ProcessorMetaData::CLASS_IDENTIFIER); + auto meta = processor->getMetaData(ProcessorMetaData::classIdentifier); meta->removeObserver(this); } void GraphvizSettings::onProcessorNetworkDidAddConnection(const PortConnection&) { diff --git a/misc/vtk/include/inviwo/vtk/ports/vtkinport.h b/misc/vtk/include/inviwo/vtk/ports/vtkinport.h index 4bae724b..1e568ee3 100644 --- a/misc/vtk/include/inviwo/vtk/ports/vtkinport.h +++ b/misc/vtk/include/inviwo/vtk/ports/vtkinport.h @@ -55,7 +55,7 @@ class IVW_MODULE_VTK_API VtkInport : public Inport { virtual bool canConnectTo(const Port* port) const override; virtual size_t getMaxNumberOfConnections() const override; - virtual std::string getClassIdentifier() const override; + virtual std::string_view getClassIdentifier() const override; virtual glm::uvec3 getColorCode() const override; virtual Document getInfo() const override; @@ -72,13 +72,12 @@ class IVW_MODULE_VTK_API VtkInport : public Inport { template <> struct PortTraits { - static const std::string& classIdentifier() { - static std::string id{"org.inviwo.vtk.inport"}; - return id; + static constexpr std::string_view classIdentifier() { + return "org.inviwo.vtk.inport"; } }; -inline std::string vtk::VtkInport::getClassIdentifier() const { +inline std::string_view vtk::VtkInport::getClassIdentifier() const { return PortTraits::classIdentifier(); } diff --git a/misc/vtk/include/inviwo/vtk/ports/vtkoutport.h b/misc/vtk/include/inviwo/vtk/ports/vtkoutport.h index 8618c7fd..c0199d03 100644 --- a/misc/vtk/include/inviwo/vtk/ports/vtkoutport.h +++ b/misc/vtk/include/inviwo/vtk/ports/vtkoutport.h @@ -53,7 +53,7 @@ class IVW_MODULE_VTK_API VtkOutport : public Outport { using type = vtkDataObject; - virtual std::string getClassIdentifier() const override; + virtual std::string_view getClassIdentifier() const override; virtual glm::uvec3 getColorCode() const override; virtual Document getInfo() const override; @@ -75,12 +75,10 @@ class IVW_MODULE_VTK_API VtkOutport : public Outport { template <> struct PortTraits { - static const std::string& classIdentifier() { - static std::string id{"org.inviwo.vtk.outport"}; - return id; - } + static constexpr std::string_view classIdentifier() { return "org.inviwo.vtk.outport"; } }; -inline std::string vtk::VtkOutport::getClassIdentifier() const { + +inline std::string_view vtk::VtkOutport::getClassIdentifier() const { return PortTraits::classIdentifier(); } diff --git a/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h b/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h index 55645dfc..e78ccbd0 100644 --- a/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h +++ b/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h @@ -38,9 +38,9 @@ namespace inviwo { template <> struct DataTraits { - static std::string classIdentifier() { return "org.inviwo.molvis.MolecularStructure"; } - static std::string dataName() { return "Molecular Structure"; } - static uvec3 colorCode() { return uvec3(56, 127, 66); } + static constexpr std::string_view classIdentifier() { return "org.inviwo.molvis.MolecularStructure"; } + static constexpr std::string_view dataName() { return "Molecular Structure"; } + static constexpr uvec3 colorCode() { return uvec3(56, 127, 66); } static Document info(const molvis::MolecularStructure& data) { using H = utildoc::TableBuilder::Header; using P = Document::PathComponent; diff --git a/molvis/molvispython/bindings/src/pymolvis.cpp b/molvis/molvispython/bindings/src/pymolvis.cpp index a565d794..e2d340b6 100644 --- a/molvis/molvispython/bindings/src/pymolvis.cpp +++ b/molvis/molvispython/bindings/src/pymolvis.cpp @@ -45,6 +45,8 @@ #include #include #include +#include +#include #include From fda9a79217090258078771ffb67c7b82dae50435 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Tue, 10 Dec 2024 13:09:31 +0100 Subject: [PATCH 2/7] TensorVis: updates for core changes --- .../inviwo/tensorvisbase/datastructures/invariantspace.h | 6 +++--- .../inviwo/tensorvisbase/datastructures/tensorfield2d.h | 6 +++--- .../inviwo/tensorvisbase/datastructures/tensorfield3d.h | 6 +++--- .../inviwo/tensorvisbase/properties/eigenvalueproperty.h | 4 ++-- .../inviwo/tensorvisbase/properties/tensorglyphproperty.h | 4 ++-- .../tensorvisbase/src/properties/eigenvalueproperty.cpp | 3 +-- .../tensorvisbase/src/properties/tensorglyphproperty.cpp | 4 ++-- 7 files changed, 16 insertions(+), 17 deletions(-) diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h index 9eba5e09..4c086f1d 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h @@ -178,9 +178,9 @@ using InvariantSpaceOutport = DataOutport; template <> struct DataTraits { - static std::string classIdentifier() { return "org.inviwo.InvariantSpace"; } - static std::string dataName() { return "InvariantSpace"; } - static uvec3 colorCode() { return uvec3(10, 150, 235); } + static constexpr std::string_view classIdentifier() { return "org.inviwo.InvariantSpace"; } + static constexpr std::string_view dataName() { return "InvariantSpace"; } + static constexpr uvec3 colorCode() { return uvec3(10, 150, 235); } static Document info(const InvariantSpace& data) { std::ostringstream oss; oss << data.getDataInfo(); diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield2d.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield2d.h index 55a36d56..5c26da63 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield2d.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield2d.h @@ -172,9 +172,9 @@ class IVW_MODULE_TENSORVISBASE_API TensorField2D { template <> struct DataTraits { - static std::string classIdentifier() { return "org.inviwo.TensorField2D"; } - static std::string dataName() { return "TensorField2D"; } - static uvec3 colorCode() { return uvec3(10, 150, 135); } + static constexpr std::string_view classIdentifier() { return "org.inviwo.TensorField2D"; } + static constexpr std::string_view dataName() { return "TensorField2D"; } + static constexpr uvec3 colorCode() { return uvec3(10, 150, 135); } static Document info(const TensorField2D& data) { Document doc; doc.append("b", "TensorField2D", {{"style", "color:white;"}}); diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield3d.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield3d.h index eda6eb14..cd32d28f 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield3d.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield3d.h @@ -357,9 +357,9 @@ class IVW_MODULE_TENSORVISBASE_API TensorField3D : public StructuredGridEntity<3 template <> struct DataTraits { - static std::string classIdentifier() { return "org.inviwo.TensorField3D"; } - static std::string dataName() { return "TensorField3D"; } - static uvec3 colorCode() { return uvec3(10, 150, 135); } + static constexpr std::string_view classIdentifier() { return "org.inviwo.TensorField3D"; } + static constexpr std::string_view dataName() { return "TensorField3D"; } + static constexpr uvec3 colorCode() { return uvec3(10, 150, 135); } static Document info(const TensorField3D& data) { Document doc; doc.append("b", "TensorField3D", {{"style", "color:white;"}}); diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/properties/eigenvalueproperty.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/properties/eigenvalueproperty.h index e5b9a1af..3ec83f32 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/properties/eigenvalueproperty.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/properties/eigenvalueproperty.h @@ -44,8 +44,8 @@ namespace inviwo { */ class IVW_MODULE_TENSORVISBASE_API EigenValueProperty : public CompositeProperty { public: - virtual std::string getClassIdentifier() const override; - static const std::string classIdentifier; + virtual std::string_view getClassIdentifier() const override; + static constexpr std::string_view classIdentifier{"org.inviwo.EigenValueProperty"}; EigenValueProperty(std::string identifier = std::string("eigenValueProperty"), std::string displayName = std::string("Eigenvalues")); diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/properties/tensorglyphproperty.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/properties/tensorglyphproperty.h index b8be9826..3ad8ca0e 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/properties/tensorglyphproperty.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/properties/tensorglyphproperty.h @@ -47,8 +47,8 @@ namespace inviwo { */ class IVW_MODULE_TENSORVISBASE_API TensorGlyphProperty : public CompositeProperty { public: - virtual std::string getClassIdentifier() const override; - static const std::string classIdentifier; + virtual std::string_view getClassIdentifier() const override; + static constexpr std::string_view classIdentifier{"org.inviwo.TensorGlyphProperty"}; enum class GlyphType { Reynolds, diff --git a/tensorvis/tensorvisbase/src/properties/eigenvalueproperty.cpp b/tensorvis/tensorvisbase/src/properties/eigenvalueproperty.cpp index c490b93b..b3c3193a 100644 --- a/tensorvis/tensorvisbase/src/properties/eigenvalueproperty.cpp +++ b/tensorvis/tensorvisbase/src/properties/eigenvalueproperty.cpp @@ -33,8 +33,7 @@ namespace inviwo { -const std::string EigenValueProperty::classIdentifier{"org.inviwo.EigenValueProperty"}; -std::string EigenValueProperty::getClassIdentifier() const { return classIdentifier; } +std::string_view EigenValueProperty::getClassIdentifier() const { return classIdentifier; } EigenValueProperty::EigenValueProperty(std::string identifier, std::string displayName) : CompositeProperty(identifier, displayName) diff --git a/tensorvis/tensorvisbase/src/properties/tensorglyphproperty.cpp b/tensorvis/tensorvisbase/src/properties/tensorglyphproperty.cpp index 45d52739..bd8206ea 100644 --- a/tensorvis/tensorvisbase/src/properties/tensorglyphproperty.cpp +++ b/tensorvis/tensorvisbase/src/properties/tensorglyphproperty.cpp @@ -33,8 +33,8 @@ #include namespace inviwo { -const std::string TensorGlyphProperty::classIdentifier{"org.inviwo.TensorGlyphProperty"}; -std::string TensorGlyphProperty::getClassIdentifier() const { return classIdentifier; } + +std::string_view TensorGlyphProperty::getClassIdentifier() const { return classIdentifier; } // constexpr std::array, 10> TensorGlyphProperty::tri_uv; From d381df6e670be132be340f71d8fea69696a19263 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Tue, 10 Dec 2024 14:36:56 +0100 Subject: [PATCH 3/7] Various: update for core changes --- misc/nanovgutils/include/inviwo/nanovgutils/nanovgcontext.h | 2 +- .../include/inviwo/nanovgutils/nanovgutilsmoduledefine.h | 5 +---- .../inviwo/nanovgutils/properties/nanovgfontproperty.h | 4 ++-- misc/nanovgutils/src/properties/nanovgfontproperty.cpp | 4 ++-- .../inviwo/topologytoolkit/datastructures/contourtreedata.h | 6 +++--- .../topologytoolkit/datastructures/morsesmalecomplexdata.h | 6 +++--- .../topologytoolkit/datastructures/triangulationdata.h | 6 +++--- .../inviwo/topologytoolkit/ports/persistencediagramport.h | 6 +++--- .../topologytoolkit/properties/topologycolorsproperty.h | 4 ++-- .../topologytoolkit/properties/topologyfilterproperty.h | 4 ++-- .../src/properties/topologycolorsproperty.cpp | 4 +--- .../src/properties/topologyfilterproperty.cpp | 4 +--- .../processors/integrallinestodataframe.h | 5 ++--- .../src/processors/integrallinestodataframe.cpp | 3 --- 14 files changed, 26 insertions(+), 37 deletions(-) diff --git a/misc/nanovgutils/include/inviwo/nanovgutils/nanovgcontext.h b/misc/nanovgutils/include/inviwo/nanovgutils/nanovgcontext.h index 6b8602cb..cba94d33 100644 --- a/misc/nanovgutils/include/inviwo/nanovgutils/nanovgcontext.h +++ b/misc/nanovgutils/include/inviwo/nanovgutils/nanovgcontext.h @@ -321,4 +321,4 @@ struct EnumTraits { static std::string name() { return "Text Alignment"; } }; -} // namespace inviwo \ No newline at end of file +} // namespace inviwo diff --git a/misc/nanovgutils/include/inviwo/nanovgutils/nanovgutilsmoduledefine.h b/misc/nanovgutils/include/inviwo/nanovgutils/nanovgutilsmoduledefine.h index 7109b98c..807f5cc5 100644 --- a/misc/nanovgutils/include/inviwo/nanovgutils/nanovgutilsmoduledefine.h +++ b/misc/nanovgutils/include/inviwo/nanovgutils/nanovgutilsmoduledefine.h @@ -1,5 +1,4 @@ -#ifndef _IVW_MODULE_NANOVGUTILS_DEFINE_H_ -#define _IVW_MODULE_NANOVGUTILS_DEFINE_H_ +#pragma once #ifdef INVIWO_ALL_DYN_LINK // DYNAMIC // If we are building DLL files we must declare dllexport/dllimport @@ -19,5 +18,3 @@ #else // STATIC #define IVW_MODULE_NANOVGUTILS_API #endif - -#endif // _IVW_MODULE_NANOVGUTILS_DEFINE_H_ \ No newline at end of file diff --git a/misc/nanovgutils/include/inviwo/nanovgutils/properties/nanovgfontproperty.h b/misc/nanovgutils/include/inviwo/nanovgutils/properties/nanovgfontproperty.h index 19b9f344..af457598 100644 --- a/misc/nanovgutils/include/inviwo/nanovgutils/properties/nanovgfontproperty.h +++ b/misc/nanovgutils/include/inviwo/nanovgutils/properties/nanovgfontproperty.h @@ -12,8 +12,8 @@ namespace inviwo { class IVW_MODULE_NANOVGUTILS_API NanoVGFontProperty : public CompositeProperty { public: - virtual std::string getClassIdentifier() const override; - static const std::string classIdentifier; + virtual std::string_view getClassIdentifier() const override; + static constexpr std::string_view classIdentifier{"org.inviwo.NanoVGFontProperty"}; NanoVGFontProperty(std::string identifier, std::string displayName); NanoVGFontProperty(const NanoVGFontProperty& rhs); diff --git a/misc/nanovgutils/src/properties/nanovgfontproperty.cpp b/misc/nanovgutils/src/properties/nanovgfontproperty.cpp index 1550c8aa..a947c060 100644 --- a/misc/nanovgutils/src/properties/nanovgfontproperty.cpp +++ b/misc/nanovgutils/src/properties/nanovgfontproperty.cpp @@ -3,8 +3,8 @@ #include namespace inviwo { -const std::string NanoVGFontProperty::classIdentifier{"org.inviwo.NanoVGFontProperty"}; -std::string NanoVGFontProperty::getClassIdentifier() const { return classIdentifier; } + +std::string_view NanoVGFontProperty::getClassIdentifier() const { return classIdentifier; } auto NanoVGFontProperty::props() { return std::tie(fontSize_, fontColor_, fontFace_, fontAlignment_, enableFontBlur_, diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/contourtreedata.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/contourtreedata.h index 8e440ee6..fed4428a 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/contourtreedata.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/contourtreedata.h @@ -91,9 +91,9 @@ std::basic_ostream& operator<<(std::basic_ostream& s template <> struct DataTraits { - static std::string classIdentifier() { return "org.inviwo.topology.contourtreedata"; } - static std::string dataName() { return "TTK Contour Tree"; } - static uvec3 colorCode() { return uvec3(94, 152, 224); } + static constexpr std::string_view classIdentifier() { return "org.inviwo.topology.contourtreedata"; } + static constexpr std::string_view dataName() { return "TTK Contour Tree"; } + static constexpr uvec3 colorCode() { return {94, 152, 224}; } static Document info(const topology::ContourTreeData& data) { using H = utildoc::TableBuilder::Header; using P = Document::PathComponent; diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/morsesmalecomplexdata.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/morsesmalecomplexdata.h index 0322c719..7811ba02 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/morsesmalecomplexdata.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/morsesmalecomplexdata.h @@ -117,9 +117,9 @@ struct IVW_MODULE_TOPOLOGYTOOLKIT_API MorseSmaleComplexData { template <> struct DataTraits { - static std::string classIdentifier() { return "org.inviwo.topology.morsesmalecomplexdata"; } - static std::string dataName() { return "TTK Morse-Smale Complex"; } - static uvec3 colorCode() { return uvec3(105, 152, 188); } + static constexpr std::string_view classIdentifier() { return "org.inviwo.topology.morsesmalecomplexdata"; } + static constexpr std::string_view dataName() { return "TTK Morse-Smale Complex"; } + static constexpr uvec3 colorCode() { return {105, 152, 188}; } static Document info(const topology::MorseSmaleComplexData& data) { using H = utildoc::TableBuilder::Header; using P = Document::PathComponent; diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/triangulationdata.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/triangulationdata.h index 9c4dd47c..f6acc180 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/triangulationdata.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/triangulationdata.h @@ -293,9 +293,9 @@ void TriangulationData::setScalarValues(std::vector&& values) { template <> struct DataTraits { - static std::string classIdentifier() { return "TriangulationData"; } - static std::string dataName() { return "TriangulationData"; } - static uvec3 colorCode() { return uvec3(34, 96, 150); } + static constexpr std::string_view classIdentifier() { return "TriangulationData"; } + static constexpr std::string_view dataName() { return "TriangulationData"; } + static constexpr uvec3 colorCode() { return {34, 96, 150}; } static Document info(const topology::TriangulationData& data) { using H = utildoc::TableBuilder::Header; using P = Document::PathComponent; diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/ports/persistencediagramport.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/ports/persistencediagramport.h index 25758cfe..e8888e40 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/ports/persistencediagramport.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/ports/persistencediagramport.h @@ -65,9 +65,9 @@ using PersistenceDiagramOutport = DataOutport; template <> struct DataTraits { - static std::string classIdentifier() { return "org.topology.persistencediagramdata"; } - static std::string dataName() { return "PersistenceDiagramData"; } - static uvec3 colorCode() { return uvec3(65, 122, 155); } // uvec3(73, 153, 175); } + static constexpr std::string_view classIdentifier() { return "org.topology.persistencediagramdata"; } + static constexpr std::string_view dataName() { return "PersistenceDiagramData"; } + static constexpr uvec3 colorCode() { return {65, 122, 155}; } static Document info(const topology::PersistenceDiagramData& data) { using H = utildoc::TableBuilder::Header; using P = Document::PathComponent; diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/properties/topologycolorsproperty.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/properties/topologycolorsproperty.h index 34b8abed..47d2fa17 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/properties/topologycolorsproperty.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/properties/topologycolorsproperty.h @@ -43,8 +43,8 @@ namespace inviwo { */ class IVW_MODULE_TOPOLOGYTOOLKIT_API TopologyColorsProperty : public CompositeProperty { public: - virtual std::string getClassIdentifier() const override; - static const std::string classIdentifier; + virtual std::string_view getClassIdentifier() const override; + static constexpr std::string_view classIdentifier{"org.inviwo.topology.TopologyColorsProperty"}; TopologyColorsProperty(std::string identifier, std::string displayName); diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/properties/topologyfilterproperty.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/properties/topologyfilterproperty.h index 9a77f43a..88aee993 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/properties/topologyfilterproperty.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/properties/topologyfilterproperty.h @@ -44,8 +44,8 @@ namespace inviwo { */ class IVW_MODULE_TOPOLOGYTOOLKIT_API TopologyFilterProperty : public CompositeProperty { public: - virtual std::string getClassIdentifier() const override; - static const std::string classIdentifier; + virtual std::string_view getClassIdentifier() const override; + static constexpr std::string_view classIdentifier{"org.inviwo.topology.TopologyFilterProperty"}; TopologyFilterProperty(std::string identifier, std::string displayName); diff --git a/topovis/topologytoolkit/src/properties/topologycolorsproperty.cpp b/topovis/topologytoolkit/src/properties/topologycolorsproperty.cpp index b434f909..c7b40775 100644 --- a/topovis/topologytoolkit/src/properties/topologycolorsproperty.cpp +++ b/topovis/topologytoolkit/src/properties/topologycolorsproperty.cpp @@ -35,9 +35,7 @@ namespace inviwo { -const std::string TopologyColorsProperty::classIdentifier = - "org.inviwo.topology.TopologyColorsProperty"; -std::string TopologyColorsProperty::getClassIdentifier() const { return classIdentifier; } +std::string_view TopologyColorsProperty::getClassIdentifier() const { return classIdentifier; } TopologyColorsProperty::TopologyColorsProperty(std::string identifier, std::string displayName) : CompositeProperty(identifier, displayName) diff --git a/topovis/topologytoolkit/src/properties/topologyfilterproperty.cpp b/topovis/topologytoolkit/src/properties/topologyfilterproperty.cpp index a8b57fad..641d0a0b 100644 --- a/topovis/topologytoolkit/src/properties/topologyfilterproperty.cpp +++ b/topovis/topologytoolkit/src/properties/topologyfilterproperty.cpp @@ -32,9 +32,7 @@ namespace inviwo { -const std::string TopologyFilterProperty::classIdentifier = - "org.inviwo.topology.TopologyFilterProperty"; -std::string TopologyFilterProperty::getClassIdentifier() const { return classIdentifier; } +std::string_view TopologyFilterProperty::getClassIdentifier() const { return classIdentifier; } TopologyFilterProperty::TopologyFilterProperty(std::string identifier, std::string displayName) : CompositeProperty(identifier, displayName) diff --git a/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h b/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h index 1f304078..cd68b9b2 100644 --- a/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h +++ b/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h @@ -80,9 +80,8 @@ class IVW_MODULE_INTEGRALLINEFILTERING_API IntegralLinesToDataFrame : public Pro using MetricCalcFunction = std::function; class MetaDataSettings : public BoolCompositeProperty { public: - virtual std::string getClassIdentifier() const override { return classIdentifier; } - - static const std::string classIdentifier; + virtual std::string_view getClassIdentifier() const override { return classIdentifier; } + static constexpr std::string_view classIdentifier{"org.inviwo.IntegralLinesToDataFrame.MetaDataProperty"}; MetaDataSettings(std::string identifier, std::string displayName); MetaDataSettings(const MetaDataSettings& that); diff --git a/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp b/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp index bc7b2d64..22fd7944 100644 --- a/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp +++ b/vectorvis/integrallinefiltering/src/processors/integrallinestodataframe.cpp @@ -167,9 +167,6 @@ void IntegralLinesToDataFrame::MetaDataSettings::initFunctions( } } -const std::string IntegralLinesToDataFrame::MetaDataSettings::classIdentifier = - "org.inviwo.IntegralLinesToDataFrame.MetaDataProperty"; - // The Class Identifier has to be globally unique. Use a reverse DNS naming scheme const ProcessorInfo IntegralLinesToDataFrame::processorInfo_{ "org.inviwo.IntegralLinesToDataFrame", // Class identifier From 5be8bb36e8a2796454aa33cad354c3d70ac91763 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Wed, 11 Dec 2024 11:12:31 +0100 Subject: [PATCH 4/7] MolVis,Misc,TensorVis: linter --- misc/graphviz/src/graphvizsettings.cpp | 4 ++-- .../molvisbase/datastructures/molecularstructuretraits.h | 2 +- .../inviwo/tensorvisbase/datastructures/invariantspace.h | 2 +- .../inviwo/tensorvisbase/datastructures/tensorfield2d.h | 2 +- .../inviwo/tensorvisbase/datastructures/tensorfield3d.h | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/misc/graphviz/src/graphvizsettings.cpp b/misc/graphviz/src/graphvizsettings.cpp index d7d1a696..dab66af2 100644 --- a/misc/graphviz/src/graphvizsettings.cpp +++ b/misc/graphviz/src/graphvizsettings.cpp @@ -244,12 +244,12 @@ void GraphvizSettings::autoLayoutNetwork() { void GraphvizSettings::onProcessorNetworkDidAddProcessor(Processor* processor) { autoLayoutNetwork(); - auto meta = processor->getMetaData(ProcessorMetaData::classIdentifier); + auto* meta = processor->getMetaData(ProcessorMetaData::classIdentifier); meta->addObserver(this); } void GraphvizSettings::onProcessorNetworkDidRemoveProcessor(Processor* processor) { autoLayoutNetwork(); - auto meta = processor->getMetaData(ProcessorMetaData::classIdentifier); + auto* meta = processor->getMetaData(ProcessorMetaData::classIdentifier); meta->removeObserver(this); } void GraphvizSettings::onProcessorNetworkDidAddConnection(const PortConnection&) { diff --git a/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h b/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h index e78ccbd0..ff0a942b 100644 --- a/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h +++ b/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h @@ -40,7 +40,7 @@ template <> struct DataTraits { static constexpr std::string_view classIdentifier() { return "org.inviwo.molvis.MolecularStructure"; } static constexpr std::string_view dataName() { return "Molecular Structure"; } - static constexpr uvec3 colorCode() { return uvec3(56, 127, 66); } + static constexpr uvec3 colorCode() { return {56, 127, 66}; } static Document info(const molvis::MolecularStructure& data) { using H = utildoc::TableBuilder::Header; using P = Document::PathComponent; diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h index 4c086f1d..dd029d79 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/invariantspace.h @@ -180,7 +180,7 @@ template <> struct DataTraits { static constexpr std::string_view classIdentifier() { return "org.inviwo.InvariantSpace"; } static constexpr std::string_view dataName() { return "InvariantSpace"; } - static constexpr uvec3 colorCode() { return uvec3(10, 150, 235); } + static constexpr uvec3 colorCode() { return {10, 150, 235}; } static Document info(const InvariantSpace& data) { std::ostringstream oss; oss << data.getDataInfo(); diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield2d.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield2d.h index 5c26da63..314eebb7 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield2d.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield2d.h @@ -174,7 +174,7 @@ template <> struct DataTraits { static constexpr std::string_view classIdentifier() { return "org.inviwo.TensorField2D"; } static constexpr std::string_view dataName() { return "TensorField2D"; } - static constexpr uvec3 colorCode() { return uvec3(10, 150, 135); } + static constexpr uvec3 colorCode() { return {10, 150, 135}; } static Document info(const TensorField2D& data) { Document doc; doc.append("b", "TensorField2D", {{"style", "color:white;"}}); diff --git a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield3d.h b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield3d.h index cd32d28f..e086cb2a 100644 --- a/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield3d.h +++ b/tensorvis/tensorvisbase/include/inviwo/tensorvisbase/datastructures/tensorfield3d.h @@ -359,7 +359,7 @@ template <> struct DataTraits { static constexpr std::string_view classIdentifier() { return "org.inviwo.TensorField3D"; } static constexpr std::string_view dataName() { return "TensorField3D"; } - static constexpr uvec3 colorCode() { return uvec3(10, 150, 135); } + static constexpr uvec3 colorCode() { return {10, 150, 135}; } static Document info(const TensorField3D& data) { Document doc; doc.append("b", "TensorField3D", {{"style", "color:white;"}}); From 983dd8279ef9a847c517f57664ee3d88cad4ab8f Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Wed, 11 Dec 2024 11:12:39 +0100 Subject: [PATCH 5/7] OpenMesh: compile fix --- .../openmesh/utils/openmeshconverters.h | 52 +++++++++---------- .../openmesh/src/utils/openmeshconverters.cpp | 17 +++--- .../datastructures/molecularstructuretraits.h | 4 +- 3 files changed, 36 insertions(+), 37 deletions(-) diff --git a/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h b/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h index a0bd6690..c3a43d7a 100644 --- a/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h +++ b/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h @@ -59,7 +59,7 @@ namespace inviwo { struct CustomMeshTraits : public OpenMesh::DefaultTraits { - typedef OpenMesh::Vec4f Color; + using Color = OpenMesh::Vec4f; VertexAttributes(OpenMesh::Attributes::Normal | OpenMesh::Attributes::TexCoord3D | OpenMesh::Attributes::Color); @@ -68,37 +68,35 @@ struct CustomMeshTraits : public OpenMesh::DefaultTraits { using TriMesh = OpenMesh::TriMesh_ArrayKernelT; namespace openmeshutil { -namespace detail { - -template -struct BufferConvertHelper { - using type = Buffer; - using value_type = T; - static T convertValue(const T& v) { return v; } -}; -template -struct BufferConvertHelper> { - using type = Buffer>; - using value_type = Vector; - static glm::vec convertValue(const OpenMesh::VectorT& v) { - glm::vec res; - for (unsigned i = 0; i < D; i++) { - res[i] = v[i]; - } - return res; - } -}; +namespace detail { template void convertOMtoInviwoBuffer(inviwo::Mesh& ivwMesh, const OM_Mesh& omMesh, BufferType bufferType, Func callback) { - using Helper = typename detail::BufferConvertHelper; - auto vertices = std::make_shared(); - auto& vec = vertices->getEditableRAMRepresentation()->getDataContainer(); - ivwMesh.addBuffer(bufferType, vertices); - for (const OpenMesh::VertexHandle& v_it : omMesh.vertices()) { - vec.push_back(Helper::convertValue(callback(v_it))); + if constexpr (std::is_arithmetic_v) { + auto vertices = std::make_shared>(); + auto& vec = vertices->getEditableRAMRepresentation()->getDataContainer(); + ivwMesh.addBuffer(bufferType, vertices); + for (const OpenMesh::VertexHandle& v_it : omMesh.vertices()) { + vec.push_back(callback(v_it)); + } + } else { + using value_type = Vector; + auto convertValue = [](const T& v) { + value_type res{0}; + for (int i = 0; i < T::dim(); i++) { + res[i] = v[i]; + } + return res; + }; + + auto vertices = std::make_shared>(); + auto& vec = vertices->getEditableRAMRepresentation()->getDataContainer(); + ivwMesh.addBuffer(bufferType, vertices); + for (const OpenMesh::VertexHandle& v_it : omMesh.vertices()) { + vec.push_back(convertValue(callback(v_it))); + } } }; diff --git a/misc/openmesh/src/utils/openmeshconverters.cpp b/misc/openmesh/src/utils/openmeshconverters.cpp index 0a0db646..8016e441 100644 --- a/misc/openmesh/src/utils/openmeshconverters.cpp +++ b/misc/openmesh/src/utils/openmeshconverters.cpp @@ -33,9 +33,9 @@ #include #include -namespace inviwo { -namespace openmeshutil { -namespace detail { +namespace inviwo::openmeshutil { + +namespace { void createVertexBuffers(TriMesh& mesh, const BasicMesh& inmesh, TransformCoordinates transform) { auto& vertices = inmesh.getVertices()->getRAMRepresentation()->getDataContainer(); @@ -188,17 +188,17 @@ void createVertexBuffers(TriMesh& mesh, const Mesh& inmesh, TransformCoordinates } } -} // namespace detail +} // namespace TriMesh fromInviwo(const Mesh& inmesh, TransformCoordinates transform) { TriMesh mesh; if (auto bm = dynamic_cast(&inmesh)) { - detail::createVertexBuffers(mesh, *bm, transform); + createVertexBuffers(mesh, *bm, transform); } else if (auto sm = dynamic_cast(&inmesh)) { - detail::createVertexBuffers(mesh, *sm, transform); + createVertexBuffers(mesh, *sm, transform); } else { - detail::createVertexBuffers(mesh, inmesh, transform); + createVertexBuffers(mesh, inmesh, transform); } for (auto& ib : inmesh.getIndexBuffers()) { @@ -214,5 +214,4 @@ TriMesh fromInviwo(const Mesh& inmesh, TransformCoordinates transform) { return mesh; } -} // namespace openmeshutil -} // namespace inviwo +} // namespace inviwo::openmeshutil diff --git a/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h b/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h index ff0a942b..834966c4 100644 --- a/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h +++ b/molvis/molvisbase/include/inviwo/molvisbase/datastructures/molecularstructuretraits.h @@ -38,7 +38,9 @@ namespace inviwo { template <> struct DataTraits { - static constexpr std::string_view classIdentifier() { return "org.inviwo.molvis.MolecularStructure"; } + static constexpr std::string_view classIdentifier() { + return "org.inviwo.molvis.MolecularStructure"; + } static constexpr std::string_view dataName() { return "Molecular Structure"; } static constexpr uvec3 colorCode() { return {56, 127, 66}; } static Document info(const molvis::MolecularStructure& data) { From d9aaa709b5d99e62d34ebdce875932d8c54df6f9 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Wed, 11 Dec 2024 16:05:45 +0100 Subject: [PATCH 6/7] VTK,TopologyToolkit: clang format --- misc/vtk/include/inviwo/vtk/ports/vtkinport.h | 4 +--- .../inviwo/topologytoolkit/datastructures/contourtreedata.h | 4 +++- .../topologytoolkit/datastructures/morsesmalecomplexdata.h | 4 +++- .../inviwo/topologytoolkit/ports/persistencediagramport.h | 4 +++- .../processors/integrallinestodataframe.h | 3 ++- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/misc/vtk/include/inviwo/vtk/ports/vtkinport.h b/misc/vtk/include/inviwo/vtk/ports/vtkinport.h index 1e568ee3..126a47f4 100644 --- a/misc/vtk/include/inviwo/vtk/ports/vtkinport.h +++ b/misc/vtk/include/inviwo/vtk/ports/vtkinport.h @@ -72,9 +72,7 @@ class IVW_MODULE_VTK_API VtkInport : public Inport { template <> struct PortTraits { - static constexpr std::string_view classIdentifier() { - return "org.inviwo.vtk.inport"; - } + static constexpr std::string_view classIdentifier() { return "org.inviwo.vtk.inport"; } }; inline std::string_view vtk::VtkInport::getClassIdentifier() const { diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/contourtreedata.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/contourtreedata.h index fed4428a..92498ca9 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/contourtreedata.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/contourtreedata.h @@ -91,7 +91,9 @@ std::basic_ostream& operator<<(std::basic_ostream& s template <> struct DataTraits { - static constexpr std::string_view classIdentifier() { return "org.inviwo.topology.contourtreedata"; } + static constexpr std::string_view classIdentifier() { + return "org.inviwo.topology.contourtreedata"; + } static constexpr std::string_view dataName() { return "TTK Contour Tree"; } static constexpr uvec3 colorCode() { return {94, 152, 224}; } static Document info(const topology::ContourTreeData& data) { diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/morsesmalecomplexdata.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/morsesmalecomplexdata.h index 7811ba02..251b7536 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/morsesmalecomplexdata.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/datastructures/morsesmalecomplexdata.h @@ -117,7 +117,9 @@ struct IVW_MODULE_TOPOLOGYTOOLKIT_API MorseSmaleComplexData { template <> struct DataTraits { - static constexpr std::string_view classIdentifier() { return "org.inviwo.topology.morsesmalecomplexdata"; } + static constexpr std::string_view classIdentifier() { + return "org.inviwo.topology.morsesmalecomplexdata"; + } static constexpr std::string_view dataName() { return "TTK Morse-Smale Complex"; } static constexpr uvec3 colorCode() { return {105, 152, 188}; } static Document info(const topology::MorseSmaleComplexData& data) { diff --git a/topovis/topologytoolkit/include/inviwo/topologytoolkit/ports/persistencediagramport.h b/topovis/topologytoolkit/include/inviwo/topologytoolkit/ports/persistencediagramport.h index e8888e40..2757f788 100644 --- a/topovis/topologytoolkit/include/inviwo/topologytoolkit/ports/persistencediagramport.h +++ b/topovis/topologytoolkit/include/inviwo/topologytoolkit/ports/persistencediagramport.h @@ -65,7 +65,9 @@ using PersistenceDiagramOutport = DataOutport; template <> struct DataTraits { - static constexpr std::string_view classIdentifier() { return "org.topology.persistencediagramdata"; } + static constexpr std::string_view classIdentifier() { + return "org.topology.persistencediagramdata"; + } static constexpr std::string_view dataName() { return "PersistenceDiagramData"; } static constexpr uvec3 colorCode() { return {65, 122, 155}; } static Document info(const topology::PersistenceDiagramData& data) { diff --git a/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h b/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h index cd68b9b2..5793d103 100644 --- a/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h +++ b/vectorvis/integrallinefiltering/include/inviwo/integrallinefiltering/processors/integrallinestodataframe.h @@ -81,7 +81,8 @@ class IVW_MODULE_INTEGRALLINEFILTERING_API IntegralLinesToDataFrame : public Pro class MetaDataSettings : public BoolCompositeProperty { public: virtual std::string_view getClassIdentifier() const override { return classIdentifier; } - static constexpr std::string_view classIdentifier{"org.inviwo.IntegralLinesToDataFrame.MetaDataProperty"}; + static constexpr std::string_view classIdentifier{ + "org.inviwo.IntegralLinesToDataFrame.MetaDataProperty"}; MetaDataSettings(std::string identifier, std::string displayName); MetaDataSettings(const MetaDataSettings& that); From f511e4d818eead6f2251f2e148051853a5311328 Mon Sep 17 00:00:00 2001 From: Martin Falk Date: Wed, 11 Dec 2024 16:10:54 +0100 Subject: [PATCH 7/7] OpenMesh: requested changes --- .../include/inviwo/openmesh/utils/openmeshconverters.h | 2 +- misc/openmesh/src/utils/openmeshconverters.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h b/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h index c3a43d7a..acfcd48f 100644 --- a/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h +++ b/misc/openmesh/include/inviwo/openmesh/utils/openmeshconverters.h @@ -82,7 +82,7 @@ void convertOMtoInviwoBuffer(inviwo::Mesh& ivwMesh, const OM_Mesh& omMesh, Buffe vec.push_back(callback(v_it)); } } else { - using value_type = Vector; + using value_type = glm::vec; auto convertValue = [](const T& v) { value_type res{0}; for (int i = 0; i < T::dim(); i++) { diff --git a/misc/openmesh/src/utils/openmeshconverters.cpp b/misc/openmesh/src/utils/openmeshconverters.cpp index 8016e441..6f18c599 100644 --- a/misc/openmesh/src/utils/openmeshconverters.cpp +++ b/misc/openmesh/src/utils/openmeshconverters.cpp @@ -195,15 +195,15 @@ TriMesh fromInviwo(const Mesh& inmesh, TransformCoordinates transform) { if (auto bm = dynamic_cast(&inmesh)) { createVertexBuffers(mesh, *bm, transform); - } else if (auto sm = dynamic_cast(&inmesh)) { + } else if (const auto* sm = dynamic_cast(&inmesh)) { createVertexBuffers(mesh, *sm, transform); } else { createVertexBuffers(mesh, inmesh, transform); } - for (auto& ib : inmesh.getIndexBuffers()) { - if (ib.first.dt == DrawType::Triangles) { - meshutil::forEachTriangle(ib.first, *ib.second, + for (auto&& [meshInfo, buffer] : inmesh.getIndexBuffers()) { + if (meshInfo.dt == DrawType::Triangles) { + meshutil::forEachTriangle(meshInfo, *buffer, [&mesh](uint32_t i0, uint32_t i1, uint32_t i2) { using VH = OpenMesh::VertexHandle; mesh.add_face(VH(i0), VH(i1), VH(i2));