MeshLib C++ Docs
Loading...
Searching...
No Matches
MRObjectLabel.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRSymbolMeshFwd.h"
4#include "MRSymbolMesh.h"
5
8
9namespace MR
10{
13
14
15enum class MRSYMBOLMESH_CLASS LabelVisualizePropertyType
16{
21 _count [[maybe_unused]],
22};
23template <> struct IsVisualizeMaskEnum<LabelVisualizePropertyType> : std::true_type {};
24
28class MRSYMBOLMESH_CLASS ObjectLabel : public VisualObject
29{
30public:
31 MRSYMBOLMESH_API ObjectLabel();
32
33 ObjectLabel( ObjectLabel&& ) noexcept = default;
34 ObjectLabel& operator = ( ObjectLabel&& ) noexcept = default;
35
36 constexpr static const char* StaticTypeName() noexcept
37 {
38 return "ObjectLabel";
39 }
40 virtual const char* typeName() const override
41 {
42 return StaticTypeName();
43 }
44
45 MRSYMBOLMESH_API virtual void applyScale( float scaleFactor ) override;
46
47 virtual bool hasVisualRepresentation() const override { return true; }
48
49 MRSYMBOLMESH_API virtual std::shared_ptr<Object> clone() const override;
50 MRSYMBOLMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
51
53 MRSYMBOLMESH_API virtual void setFontHeight( float size );
55 float getFontHeight() const { return fontHeight_; }
56
58 MRSYMBOLMESH_API void setLabel( const PositionedText& label );
59 const PositionedText& getLabel() const { return label_; }
60
62 MRSYMBOLMESH_API void setFontPath( const std::filesystem::path& pathToFont );
63 const std::filesystem::path& getFontPath() const { return pathToFont_; }
64
70 MRSYMBOLMESH_API void setPivotPoint( const Vector2f& pivotPoint );
71
73 const Vector2f& getPivotPoint() const { return pivotPoint_; }
74
76 const Vector2f& getPivotShift() const { return pivotShift_; }
77
79 MRSYMBOLMESH_API virtual void setLeaderLineWidth( float width );
81 float getLeaderLineWidth() const { return leaderLineWidth_; }
83 MRSYMBOLMESH_API virtual void setSourcePointSize( float size );
85 float getSourcePointSize() const { return sourcePointSize_; }
87 MRSYMBOLMESH_API virtual void setBackgroundPadding( float padding );
89 float getBackgroundPadding() const { return backgroundPadding_; }
90
92 MRSYMBOLMESH_API virtual void setSourcePointColor( const Color& color, ViewportId id = {} );
94 const Color& getSourcePointColor( ViewportId id = {} ) const
95 {
96 return sourcePointColor_.get( id );
97 }
99 MRSYMBOLMESH_API virtual void setLeaderLineColor( const Color& color, ViewportId id = {} );
101 const Color& getLeaderLineColor( ViewportId id = {} ) const
102 {
103 return leaderLineColor_.get( id );
104 }
106 MRSYMBOLMESH_API void setContourColor( const Color& color, ViewportId id = {} );
108 const Color& getContourColor( ViewportId id = {} ) const
109 {
110 return contourColor_.get( id );
111 }
112
115
118
120 MRSYMBOLMESH_API virtual void setContourColorsForAllViewports( ViewportProperty<Color> val );
121
124 {}
125
128 MRSYMBOLMESH_API virtual Box3f getWorldBox( ViewportId = {} ) const override;
129
132 const std::shared_ptr<Mesh>& labelRepresentingMesh() const { return mesh_; }
133
135 [[nodiscard]] MRSYMBOLMESH_API virtual size_t heapBytes() const override;
136
138 MRSYMBOLMESH_API AllVisualizeProperties getAllVisualizeProperties() const override;
140 MRSYMBOLMESH_API const ViewportMask& getVisualizePropertyMask( AnyVisualizeMaskEnum type ) const override;
141
144 MRSYMBOLMESH_API void buildMeshFromText() const;
145
146protected:
148 std::filesystem::path pathToFont_;
149 Vector2f pivotPoint_;
150
152 float fontHeight_{ 25.0f };
154 float leaderLineWidth_{ 1.0f };
156 float sourcePointSize_{ 5.f };
158 float backgroundPadding_{ 8.f };
159
164
168
169 ObjectLabel( const ObjectLabel& other ) = default;
170
172 MRSYMBOLMESH_API virtual void swapBase_( Object& other ) override;
173
174 MRSYMBOLMESH_API virtual Box3f computeBoundingBox_() const override;
175
176 MRSYMBOLMESH_API virtual void serializeFields_( Json::Value& root ) const override;
177
178 MRSYMBOLMESH_API virtual void deserializeFields_( const Json::Value& root ) override;
179
180 MRSYMBOLMESH_API virtual void setupRenderObject_() const override;
181
183 MRSYMBOLMESH_API void setAllVisualizeProperties_( const AllVisualizeProperties& properties, std::size_t& pos ) override;
184
185private:
187 void setDefaultColors_();
188
190 void setDefaultSceneProperties_();
191
192 void updatePivotShift_() const;
193
194 mutable bool needRebuild_{ true };
195 mutable Vector2f pivotShift_;
196 mutable std::shared_ptr<Mesh> mesh_;
197 mutable Box3f meshBox_;
198};
199
200}
Definition MRVisualObject.h:54
Definition MRObjectLabel.h:29
named object in the data model
Definition MRObject.h:62
Definition MRViewportId.h:16
stores mask of viewport unique identifiers
Definition MRViewportId.h:42
Definition MRViewportProperty.h:17
Visual Object.
Definition MRVisualObject.h:116
Vector2f pivotPoint_
Definition MRObjectLabel.h:149
ObjectLabel(ObjectLabel &&) noexcept=default
virtual MRSYMBOLMESH_API void setSourcePointColorsForAllViewports(ViewportProperty< Color > val)
MRSYMBOLMESH_API const ViewportProperty< Color > & getSourcePointColorsForAllViewports() const
ViewportProperty< Color > contourColor_
Definition MRObjectLabel.h:167
Contour
Definition MRObjectLabel.h:20
virtual MRSYMBOLMESH_API void deserializeFields_(const Json::Value &root) override
virtual MRSYMBOLMESH_API Box3f getWorldBox(ViewportId={}) const override
const PositionedText & getLabel() const
Definition MRObjectLabel.h:59
MRSYMBOLMESH_API const ViewportProperty< Color > & getContourColorsForAllViewports() const
virtual MRSYMBOLMESH_API std::shared_ptr< Object > shallowClone() const override
ObjectLabel(ProtectedStruct, const ObjectLabel &obj)
Definition MRObjectLabel.h:123
const std::filesystem::path & getFontPath() const
Definition MRObjectLabel.h:63
const Vector2f & getPivotShift() const
get pivot shift (pivot point * text diagonal)
Definition MRObjectLabel.h:76
virtual MRSYMBOLMESH_API void setupRenderObject_() const override
const std::shared_ptr< Mesh > & labelRepresentingMesh() const
Definition MRObjectLabel.h:132
float getSourcePointSize() const
returns size of source point in pixels
Definition MRObjectLabel.h:85
Background
Definition MRObjectLabel.h:19
MRSYMBOLMESH_API void setLabel(const PositionedText &label)
sets text and position of label
virtual MRSYMBOLMESH_API void setContourColorsForAllViewports(ViewportProperty< Color > val)
virtual MRSYMBOLMESH_API void swapBase_(Object &other) override
swaps this object with other
virtual MRSYMBOLMESH_API void setFontHeight(float size)
sets size of label font in pixels
ViewportMask sourcePoint_
Definition MRObjectLabel.h:160
const Vector2f & getPivotPoint() const
get pivot point
Definition MRObjectLabel.h:73
MRSYMBOLMESH_API AllVisualizeProperties getAllVisualizeProperties() const override
get all visualize properties masks
const Color & getLeaderLineColor(ViewportId id={}) const
return color of leader line
Definition MRObjectLabel.h:101
virtual const char * typeName() const override
Definition MRObjectLabel.h:40
virtual MRSYMBOLMESH_API void setLeaderLineColorsForAllViewports(ViewportProperty< Color > val)
virtual MRSYMBOLMESH_API void serializeFields_(Json::Value &root) const override
ViewportProperty< Color > leaderLineColor_
Definition MRObjectLabel.h:166
MRSYMBOLMESH_API void setFontPath(const std::filesystem::path &pathToFont)
sets path to font file
ViewportProperty< Color > sourcePointColor_
Definition MRObjectLabel.h:165
virtual MRSYMBOLMESH_API void setSourcePointColor(const Color &color, ViewportId id={})
sets color of source point
virtual MRSYMBOLMESH_API void setLeaderLineColor(const Color &color, ViewportId id={})
sets color of leader line
MRSYMBOLMESH_API void setAllVisualizeProperties_(const AllVisualizeProperties &properties, std::size_t &pos) override
set all visualize properties masks
float getBackgroundPadding() const
returns background padding in pixels
Definition MRObjectLabel.h:89
virtual MRSYMBOLMESH_API void setBackgroundPadding(float padding)
sets background padding in pixels
virtual MRSYMBOLMESH_API void setLeaderLineWidth(float width)
sets width of leader line in pixels
virtual MRSYMBOLMESH_API Box3f computeBoundingBox_() const override
MRSYMBOLMESH_API const ViewportProperty< Color > & getLeaderLineColorsForAllViewports() const
virtual MRSYMBOLMESH_API void applyScale(float scaleFactor) override
scale object size (all point positions)
MRSYMBOLMESH_API void setPivotPoint(const Vector2f &pivotPoint)
MRSYMBOLMESH_API void buildMeshFromText() const
float getLeaderLineWidth() const
returns width of leader line in pixels
Definition MRObjectLabel.h:81
ViewportMask background_
Definition MRObjectLabel.h:161
ObjectLabel(const ObjectLabel &other)=default
virtual MRSYMBOLMESH_API std::shared_ptr< Object > clone() const override
virtual bool hasVisualRepresentation() const override
does the object have any visual representation (visible points, triangles, edges, etc....
Definition MRObjectLabel.h:47
float getFontHeight() const
returns size of label font on screen in pixels
Definition MRObjectLabel.h:55
ViewportMask leaderLine_
Definition MRObjectLabel.h:163
virtual MRSYMBOLMESH_API size_t heapBytes() const override
returns the amount of memory this object occupies on heap
std::filesystem::path pathToFont_
Definition MRObjectLabel.h:148
MRSYMBOLMESH_API ObjectLabel()
MRSYMBOLMESH_API void setContourColor(const Color &color, ViewportId id={})
sets contour color
PositionedText label_
Definition MRObjectLabel.h:147
virtual MRSYMBOLMESH_API void setSourcePointSize(float size)
sets size of source point in pixels
const Color & getContourColor(ViewportId id={}) const
return contour color
Definition MRObjectLabel.h:108
ViewportMask contour_
Definition MRObjectLabel.h:162
SourcePoint
Definition MRObjectLabel.h:17
LeaderLine
Definition MRObjectLabel.h:18
const Color & getSourcePointColor(ViewportId id={}) const
returns color of source point
Definition MRObjectLabel.h:94
MRSYMBOLMESH_API const ViewportMask & getVisualizePropertyMask(AnyVisualizeMaskEnum type) const override
returns mask of viewports where given property is set
std::vector< ViewportMask > AllVisualizeProperties
Definition MRVisualObject.h:72
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRColor.h:12
Definition MRVisualObject.h:32
Definition MRObject.h:284
Definition MRPositionedText.h:13