MeshLib C++ Docs
Loading...
Searching...
No Matches
MRPointMeasurementObject.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace MR
7{
10
11
12enum class MRMESH_CLASS PointMeasurementVisualizePropertyType
13{
15 _count [[maybe_unused]],
16};
17template <> struct IsVisualizeMaskEnum<PointMeasurementVisualizePropertyType> : std::true_type {};
18
19class MRMESH_CLASS PointMeasurementObject
20 : public MeasurementObject
22{
23public:
25
27 PointMeasurementObject& operator =( PointMeasurementObject&& ) noexcept = default;
28
29 constexpr static const char* StaticTypeName() noexcept { return "PointMeasurementObject"; }
30 const char* typeName() const override { return StaticTypeName(); }
31
32 constexpr static const char* StaticClassName() noexcept { return "Measure Point"; }
33 std::string className() const override { return StaticClassName(); }
34
35 constexpr static const char* StaticClassNameInPlural() noexcept { return "Measure Points"; }
36 std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
37
41
42 MRMESH_API std::shared_ptr<Object> clone() const override;
43 MRMESH_API std::shared_ptr<Object> shallowClone() const override;
44
45 [[nodiscard]] MRMESH_API bool supportsVisualizeProperty( AnyVisualizeMaskEnum type ) const override;
47 MRMESH_API const ViewportMask& getVisualizePropertyMask( AnyVisualizeMaskEnum type ) const override;
48
50 [[nodiscard]] MRMESH_API Vector3f getLocalPoint( ViewportId id = {} ) const;
51 [[nodiscard]] MRMESH_API Vector3f getWorldPoint( ViewportId id = {} ) const;
53 MRMESH_API void setLocalPoint( const Vector3f& point, ViewportId id = {} );
54 MRMESH_API void setWorldPoint( const Vector3f& point, ViewportId id = {} );
55
57 [[nodiscard]] MRMESH_API std::size_t numComparableProperties() const override;
58 [[nodiscard]] MRMESH_API std::string_view getComparablePropertyName( std::size_t i ) const override;
59 [[nodiscard]] MRMESH_API std::optional<ComparableProperty> computeComparableProperty( std::size_t i ) const override;
60 [[nodiscard]] MRMESH_API std::optional<ComparisonTolerance> getComparisonTolerence( std::size_t i ) const override;
61 MRMESH_API void setComparisonTolerance( std::size_t i, std::optional<ComparisonTolerance> newTolerance ) override;
62 [[nodiscard]] MRMESH_API bool comparisonToleranceIsAlwaysOnlyPositive( std::size_t i ) const override;
65 [[nodiscard]] MRMESH_API std::size_t numComparisonReferenceValues() const override;
66 [[nodiscard]] MRMESH_API std::string_view getComparisonReferenceValueName( std::size_t i ) const override;
67 [[nodiscard]] MRMESH_API ComparisonReferenceValue getComparisonReferenceValue( std::size_t i ) const override;
68 MRMESH_API void setComparisonReferenceValue( std::size_t i, std::optional<ComparisonReferenceValue::Var> value ) override;
69
70protected:
72
74 MRMESH_API void swapBase_( Object& other ) override;
75
76 MRMESH_API void serializeFields_( Json::Value& root ) const override;
77 MRMESH_API void deserializeFields_( const Json::Value& root ) override;
78
79 MRMESH_API void setupRenderObject_() const override;
80
81 private:
82 std::optional<Vector3f> referencePos_;
83 std::optional<Vector3f> referenceNormal_;
84 std::optional<ComparisonTolerance> tolerance_;
85
86 ViewportMask capVisibility_ = ViewportMask::all();
87};
88
89}
Definition MRVisualObject.h:54
Definition MRMeasurementObject.h:14
A base class for a data-model object that is a feature/measurement that can be compared between two m...
Definition MRObjectComparableWithReference.h:17
named object in the data model
Definition MRObject.h:62
Definition MRPointMeasurementObject.h:22
Definition MRViewportId.h:16
stores mask of viewport unique identifiers
Definition MRViewportId.h:42
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...
MRMESH_API std::shared_ptr< Object > clone() const override
MRMESH_API Vector3f getWorldPoint(ViewportId id={}) const
MRMESH_API void setComparisonReferenceValue(std::size_t i, std::optional< ComparisonReferenceValue::Var > value) override
MRMESH_API void setupRenderObject_() const override
MRMESH_API ComparisonReferenceValue getComparisonReferenceValue(std::size_t i) const override
CapVisibility
Definition MRPointMeasurementObject.h:14
const char * typeName() const override
Definition MRPointMeasurementObject.h:30
MRMESH_API std::shared_ptr< Object > shallowClone() const override
PointMeasurementObject(const PointMeasurementObject &other)=default
MRMESH_API std::string_view getComparablePropertyName(std::size_t i) const override
i goes up to numComparableProperties(), exclusive.
MRMESH_API Vector3f getLocalPoint(ViewportId id={}) const
calculates point from xf
PointMeasurementObject(ProtectedStruct, const PointMeasurementObject &obj)
Definition MRPointMeasurementObject.h:39
PointMeasurementObject(PointMeasurementObject &&) noexcept=default
MRMESH_API std::string_view getComparisonReferenceValueName(std::size_t i) const override
i goes up to numComparisonReferenceValues(), exclusive.
MRMESH_API bool comparisonToleranceIsAlwaysOnlyPositive(std::size_t i) const override
static constexpr const char * StaticClassNameInPlural() noexcept
Definition MRPointMeasurementObject.h:35
MRMESH_API void setLocalPoint(const Vector3f &point, ViewportId id={})
updates xf to fit given point
MRMESH_API std::optional< ComparableProperty > computeComparableProperty(std::size_t i) const override
MRMESH_API void serializeFields_(Json::Value &root) const override
MRMESH_API std::optional< ComparisonTolerance > getComparisonTolerence(std::size_t i) const override
MRMESH_API std::size_t numComparableProperties() const override
Implement ObjectComparableWithReference:
MRMESH_API void deserializeFields_(const Json::Value &root) override
MRMESH_API void setWorldPoint(const Vector3f &point, ViewportId id={})
MRMESH_API void setComparisonTolerance(std::size_t i, std::optional< ComparisonTolerance > newTolerance) override
MRMESH_API AllVisualizeProperties getAllVisualizeProperties() const override
get all visualize properties masks
MRMESH_API void swapBase_(Object &other) override
swaps this object with other
std::string className() const override
Definition MRPointMeasurementObject.h:33
static constexpr const char * StaticClassName() noexcept
Definition MRPointMeasurementObject.h:32
MRMESH_API const ViewportMask & getVisualizePropertyMask(AnyVisualizeMaskEnum type) const override
returns mask of viewports where given property is set
std::string classNameInPlural() const override
Definition MRPointMeasurementObject.h:36
MRMESH_API std::size_t numComparisonReferenceValues() const override
std::vector< ViewportMask > AllVisualizeProperties
Definition MRVisualObject.h:72
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRVisualObject.h:32
This can't be std::optional<Var>, because we still need the variant to know the correct type.
Definition MRObjectComparableWithReference.h:90
Definition MRObject.h:284