MeshLib C++ Docs
Loading...
Searching...
No Matches
MRChangeObjectFields.h
Go to the documentation of this file.
1#pragma once
2#include "MRHistoryAction.h"
3#include "MRVisualObject.h"
4#include "MRHeapBytes.h"
5#include <memory>
6
7namespace MR
8{
11
12
16{
17public:
19
21 ChangeVisualizePropertyAction( const std::string& name, const std::shared_ptr<VisualObject>& obj, AnyVisualizeMaskEnum visualizeMaskType ) :
22 obj_{ obj },
23 maskType_{ visualizeMaskType },
24 name_{ name }
25 {
26 if ( obj )
27 visualMask_ = obj_->getVisualizePropertyMask( maskType_ );
28 }
29
31 ChangeVisualizePropertyAction( const std::string& name, const std::shared_ptr<VisualObject>& obj, AnyVisualizeMaskEnum visualizeMaskType, ViewportMask newMask ) :
32 obj_{ obj },
33 maskType_{ visualizeMaskType },
34 name_{ name }
35 {
36 if ( obj )
37 {
38 visualMask_ = obj_->getVisualizePropertyMask( maskType_ );
39 obj_->setVisualizePropertyMask( maskType_, newMask );
40 }
41 }
42
43 virtual std::string name() const override
44 {
45 return name_;
46 }
47
48 virtual void action( HistoryAction::Type ) override
49 {
50 if ( !obj_ )
51 return;
52 auto bufMask = obj_->getVisualizePropertyMask( maskType_ );
53 obj_->setVisualizePropertyMask( maskType_, visualMask_ );
54 visualMask_ = bufMask;
55 }
56
57 static void setObjectDirty( const std::shared_ptr<VisualObject>& ){ }
58
59 [[nodiscard]] virtual size_t heapBytes() const override
60 {
61 return name_.capacity();
62 }
63
64private:
65 std::shared_ptr<VisualObject> obj_;
66 ViewportMask visualMask_;
67 AnyVisualizeMaskEnum maskType_;
68 std::string name_;
69};
70
74{
75public:
76 using Obj = Object;
77
79 ChangeObjectSelectedAction( const std::string& name, const std::shared_ptr<Object>& obj ) :
80 obj_{ obj },
81 name_{ name }
82 {
83 if ( obj )
84 selected_ = obj_->isSelected();
85 }
86
88 ChangeObjectSelectedAction( const std::string& name, const std::shared_ptr<Object>& obj, bool newValue ) :
89 obj_{ obj },
90 name_{ name }
91 {
92 if ( obj )
93 {
94 selected_ = obj_->isSelected();
95 obj_->select( newValue );
96 }
97 }
98
99 virtual std::string name() const override
100 {
101 return name_;
102 }
103
104 virtual void action( HistoryAction::Type ) override
105 {
106 if ( !obj_ )
107 return;
108 auto bufSel = obj_->isSelected();
109 obj_->select( selected_ );
110 selected_ = bufSel;
111 }
112
113 static void setObjectDirty( const std::shared_ptr<Object>& )
114 {}
115
116 [[nodiscard]] virtual size_t heapBytes() const override
117 {
118 return name_.capacity();
119 }
120
121private:
122 std::shared_ptr<Object> obj_;
123 bool selected_{ false };
124 std::string name_;
125};
126
130{
131public:
132 using Obj = Object;
133
135 ChangeObjectVisibilityAction( const std::string& name, const std::shared_ptr<Object>& obj ) :
136 obj_{ obj },
137 name_{ name }
138 {
139 if ( obj )
140 visibilityMask_ = obj_->visibilityMask();
141 }
142
144 ChangeObjectVisibilityAction( const std::string& name, const std::shared_ptr<Object>& obj, ViewportMask newVisibilityMask ) :
145 obj_{ obj },
146 name_{ name }
147 {
148 if ( obj )
149 {
150 visibilityMask_ = obj_->visibilityMask();
151 obj_->setVisibilityMask( newVisibilityMask );
152 }
153 }
154
155 virtual std::string name() const override
156 {
157 return name_;
158 }
159
160 virtual void action( HistoryAction::Type ) override
161 {
162 if ( !obj_ )
163 return;
164 auto bufVisMask = obj_->visibilityMask();
165 obj_->setVisibilityMask( visibilityMask_ );
166 visibilityMask_ = bufVisMask;
167 }
168
169 static void setObjectDirty( const std::shared_ptr<Object>& )
170 {}
171
172 [[nodiscard]] virtual size_t heapBytes() const override
173 {
174 return name_.capacity();
175 }
176
177private:
178 std::shared_ptr<Object> obj_;
179 ViewportMask visibilityMask_;
180 std::string name_;
181};
182
183}
Definition MRVisualObject.h:54
named object in the data model
Definition MRObject.h:61
stores mask of viewport unique identifiers
Definition MRViewportId.h:42
Visual Object.
Definition MRVisualObject.h:116
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeObjectFields.h:172
static void setObjectDirty(const std::shared_ptr< Object > &)
Definition MRChangeObjectFields.h:113
ChangeObjectSelectedAction(const std::string &name, const std::shared_ptr< Object > &obj, bool newValue)
use this constructor to remember object's isSelected property and immediately set new value
Definition MRChangeObjectFields.h:88
static void setObjectDirty(const std::shared_ptr< VisualObject > &)
Definition MRChangeObjectFields.h:57
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeObjectFields.h:116
ChangeObjectVisibilityAction(const std::string &name, const std::shared_ptr< Object > &obj, ViewportMask newVisibilityMask)
use this constructor to remember object's visibility mask and immediately set new mask
Definition MRChangeObjectFields.h:144
ChangeVisualizePropertyAction(const std::string &name, const std::shared_ptr< VisualObject > &obj, AnyVisualizeMaskEnum visualizeMaskType, ViewportMask newMask)
use this constructor to remember object's visualize property mask and immediately set new value
Definition MRChangeObjectFields.h:31
ChangeObjectVisibilityAction(const std::string &name, const std::shared_ptr< Object > &obj)
use this constructor to remember object's visibility mask before making any changes in it
Definition MRChangeObjectFields.h:135
ChangeVisualizePropertyAction(const std::string &name, const std::shared_ptr< VisualObject > &obj, AnyVisualizeMaskEnum visualizeMaskType)
use this constructor to remember object's visualize property mask before making any changes in it
Definition MRChangeObjectFields.h:21
virtual void action(HistoryAction::Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeObjectFields.h:48
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeObjectFields.h:59
Object Obj
Definition MRChangeObjectFields.h:76
Object Obj
Definition MRChangeObjectFields.h:132
ChangeObjectSelectedAction(const std::string &name, const std::shared_ptr< Object > &obj)
use this constructor to remember object's isSelected property before making any changes in it
Definition MRChangeObjectFields.h:79
virtual void action(HistoryAction::Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeObjectFields.h:104
virtual void action(HistoryAction::Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeObjectFields.h:160
virtual std::string name() const override
Definition MRChangeObjectFields.h:43
Type
Definition MRHistoryAction.h:27
VisualObject Obj
Definition MRChangeObjectFields.h:18
HistoryAction()=default
explicitly define ctors to avoid warning C5267: definition of implicit copy constructor is deprecated...
static void setObjectDirty(const std::shared_ptr< Object > &)
Definition MRChangeObjectFields.h:169
virtual std::string name() const override
Definition MRChangeObjectFields.h:99
virtual std::string name() const override
Definition MRChangeObjectFields.h:155
only for bindings generation
Definition MRCameraOrientationPlugin.h:8