MeshLib
 
Loading...
Searching...
No Matches
MRChangeSelectionAction.h
Go to the documentation of this file.
1#pragma once
2#include "MRHistoryAction.h"
3#include "MRObjectMesh.h"
4#include "MRObjectPoints.h"
5
6namespace MR
7{
8
11
14{
15public:
16 using Obj = ObjectMesh;
17
19 ChangeMeshFaceSelectionAction( const std::string& name, const std::shared_ptr<ObjectMesh>& objMesh ):
20 name_{name},
21 objMesh_{objMesh}
22 {
23 if ( !objMesh_ )
24 return;
25 selection_ = objMesh_->getSelectedFaces();
26 }
27
29 ChangeMeshFaceSelectionAction( const std::string& name, const std::shared_ptr<ObjectMesh>& objMesh, FaceBitSet&& newSelection ):
30 name_{name},
31 objMesh_{objMesh}
32 {
33 if ( !objMesh_ )
34 return;
35 selection_ = objMesh_->getSelectedFaces();
36 objMesh_->selectFaces( std::move( newSelection ) );
37 }
38
39 virtual std::string name() const override { return name_; }
40
41 virtual void action( Type ) override
42 {
43 if ( !objMesh_ )
44 return;
45 auto tmp = objMesh_->getSelectedFaces();
46 objMesh_->selectFaces( selection_ );
47 selection_ = std::move( tmp );
48 }
49
50 const FaceBitSet & selection() const { return selection_; }
51
53 static void setObjectDirty( const std::shared_ptr<ObjectMesh>& ) {}
54
55 [[nodiscard]] virtual size_t heapBytes() const override
56 {
57 return name_.capacity() + selection_.heapBytes();
58 }
59
60private:
61 std::string name_;
62 std::shared_ptr<ObjectMesh> objMesh_;
63 FaceBitSet selection_;
64};
65
68{
69public:
70 using Obj = ObjectMesh;
71
73 ChangeMeshEdgeSelectionAction( const std::string& name, const std::shared_ptr<ObjectMesh>& objMesh ) :
74 name_{ name },
75 objMesh_{ objMesh }
76 {
77 if( !objMesh_ )
78 return;
79 selection_ = objMesh_->getSelectedEdges();
80 }
81
82 virtual std::string name() const override { return name_; }
83
84 virtual void action( Type ) override
85 {
86 if( !objMesh_ )
87 return;
88 auto tmp = objMesh_->getSelectedEdges();
89 objMesh_->selectEdges( std::move( selection_ ) );
90 selection_ = std::move( tmp );
91 }
92
93 const UndirectedEdgeBitSet & selection() const { return selection_; }
94
96 static void setObjectDirty( const std::shared_ptr<ObjectMesh>& ) {}
97
98 [[nodiscard]] virtual size_t heapBytes() const override
99 {
100 return name_.capacity() + selection_.heapBytes();
101 }
102
103private:
104 std::string name_;
105 std::shared_ptr<ObjectMesh> objMesh_;
106 UndirectedEdgeBitSet selection_;
107};
108
111{
112public:
114
116 ChangeMeshCreasesAction( const std::string& name, const std::shared_ptr<ObjectMesh>& objMesh ) :
117 name_{ name },
118 objMesh_{ objMesh }
119 {
120 if( !objMesh_ )
121 return;
122 creases_ = objMesh_->creases();
123 }
124
125 virtual std::string name() const override { return name_; }
126
127 virtual void action( Type ) override
128 {
129 if( !objMesh_ )
130 return;
131 auto tmp = objMesh_->creases();
132 objMesh_->setCreases( std::move( creases_ ) );
133 creases_ = std::move( tmp );
134 }
135
136 const UndirectedEdgeBitSet & creases() const { return creases_; }
137
139 static void setObjectDirty( const std::shared_ptr<ObjectMesh>& ) {}
140
141 [[nodiscard]] virtual size_t heapBytes() const override
142 {
143 return name_.capacity() + creases_.heapBytes();
144 }
145
146private:
147 std::string name_;
148 std::shared_ptr<ObjectMesh> objMesh_;
149 UndirectedEdgeBitSet creases_;
150};
151
154{
155public:
157
159 ChangePointPointSelectionAction( const std::string& name, const std::shared_ptr<ObjectPoints>& objPoints ) :
160 name_{ name },
161 objPoints_{ objPoints }
162 {
163 if ( !objPoints_ )
164 return;
165 selection_ = objPoints_->getSelectedPoints();
166 }
167
168 virtual std::string name() const override { return name_; }
169
170 virtual void action( Type ) override
171 {
172 if ( !objPoints_ )
173 return;
174 auto tmp = objPoints_->getSelectedPoints();
175 objPoints_->selectPoints( selection_ );
176 selection_ = std::move( tmp );
177 }
178
179 const VertBitSet& selection() const { return selection_; }
180
182 static void setObjectDirty( const std::shared_ptr<ObjectPoints>& )
183 {}
184
185 [[nodiscard]] virtual size_t heapBytes() const override
186 {
187 return name_.capacity() + selection_.heapBytes();
188 }
189
190private:
191 std::string name_;
192 std::shared_ptr<ObjectPoints> objPoints_;
193 VertBitSet selection_;
194};
195
197
198}
Definition MRDotNet/MRBitSet.h:39
Undo action for ObjectMesh creases.
Definition MRChangeSelectionAction.h:111
virtual void action(Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeSelectionAction.h:127
ChangeMeshCreasesAction(const std::string &name, const std::shared_ptr< ObjectMesh > &objMesh)
use this constructor to remember object's creases before making any changes in it
Definition MRChangeSelectionAction.h:116
static void setObjectDirty(const std::shared_ptr< ObjectMesh > &)
empty because set dirty is inside setCreases
Definition MRChangeSelectionAction.h:139
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeSelectionAction.h:141
const UndirectedEdgeBitSet & creases() const
Definition MRChangeSelectionAction.h:136
virtual std::string name() const override
Definition MRChangeSelectionAction.h:125
Undo action for ObjectMesh edge selection.
Definition MRChangeSelectionAction.h:68
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeSelectionAction.h:98
static void setObjectDirty(const std::shared_ptr< ObjectMesh > &)
empty because set dirty is inside selectEdges
Definition MRChangeSelectionAction.h:96
ChangeMeshEdgeSelectionAction(const std::string &name, const std::shared_ptr< ObjectMesh > &objMesh)
use this constructor to remember object's edge selection before making any changes in it
Definition MRChangeSelectionAction.h:73
virtual std::string name() const override
Definition MRChangeSelectionAction.h:82
const UndirectedEdgeBitSet & selection() const
Definition MRChangeSelectionAction.h:93
virtual void action(Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeSelectionAction.h:84
Undo action for ObjectMesh face selection.
Definition MRChangeSelectionAction.h:14
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeSelectionAction.h:55
const FaceBitSet & selection() const
Definition MRChangeSelectionAction.h:50
virtual void action(Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeSelectionAction.h:41
virtual std::string name() const override
Definition MRChangeSelectionAction.h:39
ChangeMeshFaceSelectionAction(const std::string &name, const std::shared_ptr< ObjectMesh > &objMesh)
use this constructor to remember object's face selection before making any changes in it
Definition MRChangeSelectionAction.h:19
ChangeMeshFaceSelectionAction(const std::string &name, const std::shared_ptr< ObjectMesh > &objMesh, FaceBitSet &&newSelection)
use this constructor to remember object's face selection and immediate set new value
Definition MRChangeSelectionAction.h:29
static void setObjectDirty(const std::shared_ptr< ObjectMesh > &)
empty because set dirty is inside selectFaces
Definition MRChangeSelectionAction.h:53
Undo action for ObjectPoints point selection.
Definition MRChangeSelectionAction.h:154
const VertBitSet & selection() const
Definition MRChangeSelectionAction.h:179
ChangePointPointSelectionAction(const std::string &name, const std::shared_ptr< ObjectPoints > &objPoints)
use this constructor to remember object's vertex selection before making any changes in it
Definition MRChangeSelectionAction.h:159
static void setObjectDirty(const std::shared_ptr< ObjectPoints > &)
empty because set dirty is inside selectPoints
Definition MRChangeSelectionAction.h:182
virtual std::string name() const override
Definition MRChangeSelectionAction.h:168
virtual void action(Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeSelectionAction.h:170
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeSelectionAction.h:185
Definition MRHistoryAction.h:12
Type
Definition MRHistoryAction.h:19
Definition MRObjectMesh.h:11
Definition MRObjectPoints.h:11
Definition MRCameraOrientationPlugin.h:7