48 template <
typename T,
typename C,
typename SetterFunc>
59 return std::invoke( m_getter,
dynamic_cast< const C*
>( objectToInvoke ),
id );
62 if constexpr ( ( std::is_same_v<SetterFunc, void ( C::* )( const T&,
ViewportId )> )
63 || ( std::is_same_v<SetterFunc, void ( C::* )( T,
ViewportId )> ) )
67 assert( std::holds_alternative<T>( v ) );
68 if ( std::holds_alternative<T>( v ) )
70 std::invoke( m_setter,
dynamic_cast< C*
> ( objectToInvoke ), std::get<T>( v ),
id );
76 static_assert( dependent_false<T>,
"Setter function signature unsupported" );
86enum class MRMESH_CLASS FeatureVisualizePropertyType
98 constexpr static const char*
StaticTypeName() noexcept {
return "FeatureObject"; }
99 virtual const char*
typeName()
const override {
return StaticTypeName(); }
102 virtual std::string
className()
const override {
return StaticClassName(); }
121 [[nodiscard]] MRMESH_API std::optional<Vector3f>
getNormal(
const Vector3f& point )
const;
185 float pointSize_ = 10;
186 float lineWidth_ = 2;
189 float subPointSize_ = 6;
190 float subLineWidth_ = 1;
193 float mainFeatureAlpha_ = 1;
194 float subAlphaPoints_ = 1;
195 float subAlphaLines_ = 1;
196 float subAlphaMesh_ = 0.5f;
Definition MRVisualObject.h:54
An interface class which allows feature objects to share setters and getters on their main properties...
Definition MRFeatureObject.h:96
Definition MRViewportId.h:16
stores mask of viewport unique identifiers
Definition MRViewportId.h:42
Definition MRViewportProperty.h:17
Visual Object.
Definition MRVisualObject.h:116
static constexpr const char * StaticClassNameInPlural() noexcept
Definition MRFeatureObject.h:104
MRMESH_API AllVisualizeProperties getAllVisualizeProperties() const override
get all visualize properties masks
virtual MRMESH_API float getMainFeatureAlpha() const
Per-component alpha multipliers. The global alpha is multiplied by thise.
MRMESH_API const ViewportMask & getVisualizePropertyMask(AnyVisualizeMaskEnum type) const override
returns mask of viewports where given property is set
virtual MRMESH_API float getPointSize() const
Point size and line width, for primary rendering rather than subfeatures.
std::array< ViewportProperty< Color >, 2 > decorationsColor_
scale
Definition MRFeatureObject.h:180
virtual MRMESH_API void setLineWidth(float lineWidth)
FeaturePropertyKind
Classifies FeatureObjectSharedProperty, mostly for informational purposes.
Definition MRFeatureObject.h:22
MRMESH_API void setXf(const AffineXf3f &xf, ViewportId id={}) override
virtual MRMESH_API void setSubfeatureAlphaLines(float alpha)
virtual MRMESH_API float getSubfeatureAlphaMesh() const
virtual MRMESH_API float getSubfeaturePointSize() const
Point size and line width, for subfeatures rather than primary rendering.
virtual MRMESH_API const ViewportProperty< Color > & getDecorationsColorForAllViewports(bool selected) const
std::optional< Vector3f > normal
Definition MRFeatureObject.h:83
virtual MRMESH_API void setDecorationsColor(const Color &color, bool selected, ViewportId viewportId={})
virtual MRMESH_API float getLineWidth() const
virtual const char * typeName() const override
Definition MRFeatureObject.h:99
std::variant< float, Vector3f > FeaturesPropertyTypesVariant
Definition MRFeatureObject.h:16
Matrix3f getScaleShearMatrix(ViewportId id={}, bool *isDef=nullptr) const
Definition MRFeatureObject.h:134
MRMESH_API FeatureObject(int numDimensions)
numDimensions is 0 for points, 1 for lines, 2 for surface meshes. We don't use 3 at the moment.
std::function< FeaturesPropertyTypesVariant(const FeatureObject *objectToInvoke, ViewportId id)> getter
due to getAllSharedProperties in FeatureObject returns static vector, we need externaly setup object ...
Definition MRFeatureObject.h:43
static constexpr const char * StaticTypeName() noexcept
Definition MRFeatureObject.h:98
virtual const std::vector< FeatureObjectSharedProperty > & getAllSharedProperties() const =0
Create and generate list of bounded getters and setters for the main properties of feature object,...
virtual MRMESH_API void setPointSize(float pointSize)
std::function< void(const FeaturesPropertyTypesVariant &, FeatureObject *objectToInvoke, ViewportId id)> setter
Definition MRFeatureObject.h:46
virtual std::string classNameInPlural() const override
Definition MRFeatureObject.h:105
DetailsOnNameTag
Definition MRFeatureObject.h:89
Subfeatures
Definition MRFeatureObject.h:88
virtual MRMESH_API Vector3f getBasePoint(ViewportId id={}) const
Returns point considered as base for the feature.
std::string propertyName
Definition MRFeatureObject.h:40
Matrix3f getRotationMatrix(ViewportId id={}, bool *isDef=nullptr) const
Definition MRFeatureObject.h:131
virtual std::string className() const override
Definition MRFeatureObject.h:102
virtual MRMESH_API void setSubfeatureAlphaPoints(float alpha)
MRMESH_API bool supportsVisualizeProperty(AnyVisualizeMaskEnum type) const override
Returns true if this class supports the property type. Otherwise passing it to the functions below is...
Vector3f point
Definition MRFeatureObject.h:82
ViewportProperty< Matrix3f > s_
rotation
Definition MRFeatureObject.h:177
MRMESH_API void resetXf(ViewportId id={}) override
forgets specific transform in given viewport (or forgets all specific transforms for {}...
virtual MRMESH_API float getSubfeatureLineWidth() const
FeatureObjectSharedProperty(std::string name, FeaturePropertyKind kind, T(C::*m_getter)(ViewportId) const, SetterFunc m_setter)
Definition MRFeatureObject.h:49
virtual MRMESH_API void setDecorationsColorForAllViewports(ViewportProperty< Color > val, bool selected)
virtual MRMESH_API float getSubfeatureAlphaLines() const
static constexpr const char * StaticClassName() noexcept
Definition MRFeatureObject.h:101
MRMESH_API void serializeFields_(Json::Value &root) const override
ViewportProperty< Matrix3f > r_
Definition MRFeatureObject.h:176
virtual MRMESH_API void setSubfeaturePointSize(float pointSize)
virtual FeatureObjectProjectPointResult projectPoint(const Vector3f &point, ViewportId id={}) const =0
FeaturePropertyKind kind
Definition MRFeatureObject.h:41
virtual MRMESH_API void setSubfeatureAlphaMesh(float alpha)
MRMESH_API std::optional< Vector3f > getNormal(const Vector3f &point) const
virtual MRMESH_API void setMainFeatureAlpha(float alpha)
MRMESH_API void deserializeFields_(const Json::Value &root) override
MRMESH_API void setAllVisualizeProperties_(const AllVisualizeProperties &properties, std::size_t &pos) override
virtual MRMESH_API void setSubfeatureLineWidth(float lineWidth)
MRMESH_API const Color & getDecorationsColor(bool selected, ViewportId viewportId={}, bool *isDef=nullptr) const
virtual MRMESH_API float getSubfeatureAlphaPoints() const
@ linearDimension
Position, normally Vector3f.
@ other
Angle, normally float. Measure in radians.
@ angle
Direction, normally Vector3f.
@ direction
Length or size.
std::vector< ViewportMask > AllVisualizeProperties
Definition MRVisualObject.h:72
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRFeatureObject.h:81
Definition MRFeatureObject.h:39
Definition MRVisualObject.h:32