MeshLib C++ Docs
Loading...
Searching...
No Matches
MRObjectPoints.h
Go to the documentation of this file.
1#pragma once
3
4namespace MR
5{
6struct RenderParams;
7
10class MRMESH_CLASS ObjectPoints : public ObjectPointsHolder
11{
12public:
13 ObjectPoints() = default;
14 MRMESH_API explicit ObjectPoints( const ObjectMesh& objMesh, bool saveNormals = true );
15 ObjectPoints& operator = ( ObjectPoints&& ) = default;
16 ObjectPoints( ObjectPoints&& ) = default;
17
18 constexpr static const char* StaticTypeName() noexcept { return "ObjectPoints"; }
19 virtual const char* typeName() const override { return StaticTypeName(); }
20
21 constexpr static const char* StaticClassName() noexcept { return "Point Cloud"; }
22 virtual std::string className() const override { return StaticClassName(); }
23
24 constexpr static const char* StaticClassNameInPlural() noexcept { return "Point Clouds"; }
25 virtual std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
26
28 virtual const std::shared_ptr<PointCloud>& varPointCloud() { return points_; }
29
30 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
31 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
32
33 virtual void setPointCloud( const std::shared_ptr<PointCloud>& pointCloud ) { points_ = pointCloud; setDirtyFlags( DIRTY_ALL ); }
36 MRMESH_API virtual void swapPointCloud( std::shared_ptr< PointCloud >& points );
37
39 ObjectPoints( ProtectedStruct, const ObjectPoints& obj ) : ObjectPoints( obj ) {}
40
41 MRMESH_API virtual std::vector<std::string> getInfoLines() const override;
42
43 MRMESH_API virtual void setDirtyFlags( uint32_t mask, bool invalidateCaches = true ) override;
44
46 using ChangedSignal = Signal<void( uint32_t mask )>;
47 ChangedSignal pointsChangedSignal;
48 ChangedSignal normalsChangedSignal;
49
50protected:
51 ObjectPoints( const ObjectPoints& other ) = default;
52
54 MRMESH_API virtual void swapBase_( Object& other ) override;
57 MRMESH_API virtual void swapSignals_( Object& other ) override;
58
59 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
60};
61
63[[nodiscard]] MRMESH_API std::shared_ptr<ObjectPoints> merge( const std::vector<std::shared_ptr<ObjectPoints>>& objsPoints );
64
67[[nodiscard]] MRMESH_API std::shared_ptr<ObjectPoints> cloneRegion( const std::shared_ptr<ObjectPoints>& objPoints, const VertBitSet& region );
68
72[[nodiscard]] MRMESH_API std::shared_ptr<ObjectPoints> pack( const ObjectPoints& pts, Reorder reorder, VertBitSet* newValidVerts = nullptr, const ProgressCallback & cb = {} );
73
74} //namespace MR
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Definition MRObjectPoints.h:11
Definition MRCameraOrientationPlugin.h:8
MRMESH_API std::shared_ptr< ObjectLines > cloneRegion(const std::shared_ptr< ObjectLines > &objLines, const UndirectedEdgeBitSet &region)
constructs new ObjectLines containing the region of data from input object
MRMESH_API std::shared_ptr< ObjectPoints > pack(const ObjectPoints &pts, Reorder reorder, VertBitSet *newValidVerts=nullptr, const ProgressCallback &cb={})
MRMESH_API std::shared_ptr< ObjectLines > merge(const std::vector< std::shared_ptr< ObjectLines > > &objsLines)
constructs new ObjectLines containing the union of valid data from all input objects