33 constexpr static const char* StaticTypeName() noexcept {
return "LinesHolder"; }
34 virtual const char* typeName()
const override {
return StaticTypeName(); }
36 MRMESH_API virtual void applyScale(
float scaleFactor )
override;
38 MRMESH_API virtual bool hasVisualRepresentation()
const override;
40 [[nodiscard]]
virtual bool hasModel()
const override {
return bool( polyline_ ); }
42 MRMESH_API virtual std::shared_ptr<Object> clone()
const override;
43 MRMESH_API virtual std::shared_ptr<Object> shallowClone()
const override;
45 const std::shared_ptr<const Polyline3>& polyline()
const
46 {
return reinterpret_cast< const std::shared_ptr<const Polyline3>&
>( polyline_ ); }
48 MRMESH_API virtual void setDirtyFlags( uint32_t mask,
bool invalidateCaches =
true )
override;
55 MRMESH_API virtual void setDashPattern(
const DashPattern& pattern, ViewportId vpId = {} );
56 virtual const DashPattern& getDashPattern( ViewportId vpId = {},
bool* isDef = nullptr )
const {
return dashPattern_.get( vpId, isDef ); }
58 MRMESH_API virtual void setLineWidth(
float width );
59 virtual float getLineWidth()
const {
return lineWidth_; }
60 MRMESH_API virtual void setPointSize(
float size );
61 virtual float getPointSize()
const {
return pointSize_; }
64 ObjectLinesHolder( ProtectedStruct,
const ObjectLinesHolder& obj ) : ObjectLinesHolder( obj ) {}
67 const VertColors& getVertsColorMap()
const {
return vertsColorMap_; }
70 virtual void setVertsColorMap( VertColors vertsColorMap ) { vertsColorMap_ = std::move( vertsColorMap ); setDirtyFlags( DIRTY_VERTS_COLORMAP ); }
73 virtual void updateVertsColorMap( VertColors& vertsColorMap ) { std::swap( vertsColorMap_, vertsColorMap ); setDirtyFlags( DIRTY_VERTS_COLORMAP ); }
75 const UndirectedEdgeColors& getLinesColorMap()
const {
return linesColorMap_; }
76 virtual void setLinesColorMap( UndirectedEdgeColors linesColorMap ) { linesColorMap_ = std::move( linesColorMap ); setDirtyFlags( DIRTY_PRIMITIVE_COLORMAP ); }
77 virtual void updateLinesColorMap( UndirectedEdgeColors& updated ) { std::swap( linesColorMap_, updated ); setDirtyFlags( DIRTY_PRIMITIVE_COLORMAP ); }
79 [[nodiscard]]
MRMESH_API bool supportsVisualizeProperty( AnyVisualizeMaskEnum type )
const override;
83 MRMESH_API const ViewportMask& getVisualizePropertyMask( AnyVisualizeMaskEnum type )
const override;
86 MRMESH_API virtual void copyColors(
const ObjectLinesHolder& src,
const VertMap& thisToSrc );
90 MRMESH_API virtual Box3f getWorldBox( ViewportId = {} )
const override;
96 [[nodiscard]]
MRMESH_API float avgEdgeLen()
const;
99 [[nodiscard]]
MRMESH_API size_t numUndirectedEdges()
const;
102 [[nodiscard]]
MRMESH_API size_t numComponents()
const;
105 [[nodiscard]]
MRMESH_API float totalLength()
const;
111 ObjectLinesHolder(
const ObjectLinesHolder& other ) =
default;
114 MRMESH_API virtual void swapBase_( Object& other )
override;
118 MRMESH_API void serializeBaseFields_( Json::Value& root )
const;
120 MRMESH_API virtual void serializeFields_( Json::Value& root )
const override;
122 MRMESH_API Expected<void> deserializeModel_(
const std::filesystem::path& path, ProgressCallback progressCb = {} )
override;
126 MRMESH_API void deserializeBaseFields_(
const Json::Value& root );
129 MRMESH_API virtual void deserializeFields_(
const Json::Value& root )
override;
131 MRMESH_API virtual Box3f computeBoundingBox_()
const override;
133 MRMESH_API virtual void setupRenderObject_()
const override;
136 MRMESH_API void setAllVisualizeProperties_(
const AllVisualizeProperties& properties, std::size_t& pos )
override;
138 mutable std::optional<size_t> numUndirectedEdges_;
139 mutable std::optional<size_t> numComponents_;
140 mutable std::optional<float> avgEdgeLen_;
141 mutable std::optional<float> totalLength_;
142 mutable ViewportProperty<XfBasedCache<Box3f>> worldBox_;
144 VertColors vertsColorMap_;
145 UndirectedEdgeColors linesColorMap_;
147 ViewportMask showPoints_;
148 ViewportMask smoothConnections_;
149 ViewportMask dashed_;
150 ViewportProperty<DashPattern> dashPattern_ = DashPattern::diagonal( 20 );
153 float lineWidth_{ 1.0f };
154 float pointSize_{ 5.f };
155 std::shared_ptr<Polyline3> polyline_;
159 void setDefaultColors_();
162 void setDefaultSceneProperties_();
_count
Definition MRFeatureObject.h:87
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Dashed
Definition MRObjectLinesHolder.h:12
Points
Definition MRObjectLinesHolder.h:10
Smooth
Definition MRObjectLinesHolder.h:11
Definition MRObjectLinesHolder.h:27
Definition MRVisualObject.h:119
Definition MRCameraOrientationPlugin.h:8
int heapBytes(FloatGrid grid)
Definition MRVisualObject.h:32
Definition MRVector4.h:23