MeshLib C++ Docs
Loading...
Searching...
No Matches
MRObjectDistanceMap.h
Go to the documentation of this file.
1#pragma once
2#include "MRMeshFwd.h"
5
6
7namespace MR
8{
9
12class MRMESH_CLASS ObjectDistanceMap : public ObjectMeshHolder
13{
14public:
15 MRMESH_API ObjectDistanceMap();
16 ObjectDistanceMap( ObjectDistanceMap&& ) noexcept = default;
17 ObjectDistanceMap& operator = ( ObjectDistanceMap&& ) noexcept = default;
18 virtual ~ObjectDistanceMap() = default;
19
21 ObjectDistanceMap( ProtectedStruct, const ObjectDistanceMap& obj ) : ObjectDistanceMap( obj ) {}
22
23 constexpr static const char* StaticTypeName() noexcept { return "ObjectDistanceMap"; }
24 virtual const char* typeName() const override { return StaticTypeName(); }
25
26 constexpr static const char* StaticClassName() noexcept { return "Distance Map"; }
27 virtual std::string className() const override { return StaticClassName(); }
28
29 constexpr static const char* StaticClassNameInPlural() noexcept { return "Distance Maps"; }
30 virtual std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
31
32 MRMESH_API virtual void applyScale( float scaleFactor ) override;
33
34 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
35 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
36
37 MRMESH_API virtual std::vector<std::string> getInfoLines() const override;
38
43 MRMESH_API bool setDistanceMap(
44 const std::shared_ptr<DistanceMap>& dmap,
45 const AffineXf3f& dmap2local,
46 bool needUpdateMesh = true,
47 ProgressCallback cb = {} );
48
50 MRMESH_API std::shared_ptr<Mesh> calculateMesh( ProgressCallback cb = {} ) const;
52 MRMESH_API void updateMesh( const std::shared_ptr<Mesh>& mesh );
53
54 [[nodiscard]] const std::shared_ptr<DistanceMap>& getDistanceMap() const { return dmap_; }
55
56 [[nodiscard]] virtual bool hasModel() const override { return bool( dmap_ ); }
57
59 MRMESH_API const AffineXf3f& getToWorldParameters() const { return dmap2local_; }
60
62 [[nodiscard]] MRMESH_API virtual size_t heapBytes() const override;
63
65 MRMESH_API void resetFrontColor() override;
66protected:
67 ObjectDistanceMap( const ObjectDistanceMap& other ) = default;
68
70 MRMESH_API virtual void swapBase_( Object& other ) override;
71
72 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
73
74 MRMESH_API void deserializeFields_( const Json::Value& root ) override;
75
76 MRMESH_API Expected<void> deserializeModel_( const std::filesystem::path& path, ProgressCallback progressCb = {} ) override;
77
78 MRMESH_API virtual Expected<std::future<Expected<void>>> serializeModel_( const std::filesystem::path& path ) const override;
79private:
80 std::shared_ptr<DistanceMap> dmap_;
81 AffineXf3f dmap2local_;
82
83 const char * saveDistanceMapFormat_{ ".raw" };
84
89 bool construct_(
90 const std::shared_ptr<DistanceMap>& dmap,
91 const AffineXf3f& dmap2local,
92 bool needUpdateMesh = true,
93 ProgressCallback cb = {} );
94
96 void setDefaultColors_();
97
99 void setDefaultSceneProperties_();
100};
101
102} // namespace MR
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Definition MRCameraOrientationPlugin.h:8
int heapBytes(FloatGrid grid)