QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RLayer.h
Go to the documentation of this file.
1
20#ifndef RLAYER_H
21#define RLAYER_H
22
23#include "core_global.h"
24
25#include <QString>
26
27#include "RObject.h"
28#include "RPropertyTypeId.h"
29#include "RLayerProxy.h"
30#include "RColor.h"
31#include "RLineweight.h"
32
33class QDebug;
34class RDocument;
36class RTransaction;
37
46public:
52
64
65
66public:
67 enum LayerFlag {
68 // these complement the RObject flags
69 Off = 0x010,
70 Frozen = 0x020,
71 Locked = 0x040,
72 Collapsed = 0x080,
73 Plottable = 0x100,
74 Snappable = 0x200,
75 OffIsFreeze = 0x400
76 };
77 Q_DECLARE_FLAGS(LayerFlags, LayerFlag)
78
79public:
80 RLayer();
81
82 RLayer(RDocument* document, const QString& name, bool frozen = false,
83 bool locked = false, const RColor& color = Qt::black,
86 bool off = false);
87
88 RLayer(const RLayer& other);
89 virtual ~RLayer();
90
91 static void init();
92
94 return RS::ObjectLayer;
95 }
96
97 virtual RS::EntityType getType() const {
98 return RS::ObjectLayer;
99 }
100
101 virtual QSharedPointer<RObject> clone() const {
102 return QSharedPointer<RObject>(new RLayer(*this));
103 }
104
105 QSharedPointer<RLayer> cloneToLayer() const {
106 return QSharedPointer<RLayer>(new RLayer(*this));
107 }
108
109 RObject::Id getParentLayerId() const;
110
111 QString getName() const {
112 return name;
113 }
114
115 void setName(const QString& n);
116
117 bool isOffOrFrozen() const {
118 return isOff() || isFrozen();
119 }
120
121 bool isOff() const {
122 return getFlag(RLayer::Off);
123 }
124
125 void setOff(bool on) {
126 setFlag(RLayer::Off, on);
127 }
128
129 bool isFrozen() const {
130 return getFlag(RLayer::Frozen);
131 }
132
133 void setFrozen(bool on) {
135 }
136
137 bool isLocked() const {
138 return getFlag(RLayer::Locked);
139 }
140
141 void setLocked(bool on) {
143 }
144
145 bool isCollapsed() const {
147 }
148
149 void setCollapsed(bool on) {
151 }
152
153 bool isPlottable() const {
155 }
156
157 void setPlottable(bool on) {
158 if (name.toLower()!="defpoints") {
160 }
161 }
162
163 bool isSnappable() const {
165 }
166
167 void setSnappable(bool on) {
169 }
170
171 bool isOffIsFreeze() const {
173 }
174
175 void setOffIsFreeze(bool on) {
177 }
178
179 RColor getColor() const {
180 return color;
181 }
182
183 void setColor(const RColor& c) {
184 color = c;
185 }
186
188 return linetypeId;
189 }
190
192 linetypeId = lt;
193 }
194
196 return lineweight;
197 }
198
200 lineweight = lw;
201 }
202
203 virtual QPair<QVariant, RPropertyAttributes> getProperty(
204 RPropertyTypeId& propertyTypeId,
205 bool humanReadable = false, bool noAttributes = false, bool showOnRequest = false);
206 virtual bool setProperty(RPropertyTypeId propertyTypeId,
207 const QVariant& value, RTransaction* transaction=NULL);
208
209 bool hasChildLayers() const {
210 const RDocument* doc = getDocument();
211 if (doc==NULL) {
212 return false;
213 }
214 return RLayer::hasChildLayersStatic(doc, name);
215 }
216
217 QList<QString> getChildLayerNames(bool recursive = true) const {
218 const RDocument* doc = getDocument();
219 if (doc==NULL) {
220 return QList<QString>();
221 }
222 return RLayer::getChildLayerNamesStatic(doc, name, recursive);
223 }
224
225 QString getParentLayerName() const {
227 }
228
229 QString getShortLayerName() const {
231 }
232
233 QList<QString> getLayerNameHierarchy() const {
235 }
236
237 bool isChildLayerOf(const QString& layerName) const {
238 return RLayer::isChildLayerOfStatic(name, layerName);
239 }
240
241 static QString getHierarchySeparator() {
242 if (layerProxy!=NULL) {
243 return layerProxy->getHierarchySeparator();
244 }
245 return "";
246 }
247
248 static bool hasChildLayersStatic(const RDocument* doc, const QString& layerName) {
249 if (layerProxy!=NULL) {
250 return layerProxy->hasChildLayers(doc, layerName);
251 }
252 return false;
253 }
254
255 static QList<QString> getChildLayerNamesStatic(const RDocument* doc, const QString& layerName, bool recursive = true) {
256 if (layerProxy!=NULL) {
257 return layerProxy->getChildLayerNames(doc, layerName, recursive);
258 }
259 return QList<QString>();
260 }
261
262 static QString getParentLayerNameStatic(const QString& layerName) {
263 if (layerProxy!=NULL) {
264 return layerProxy->getParentLayerName(layerName);
265 }
266 return QString();
267 }
268
269 static QString getShortLayerNameStatic(const QString& layerName) {
270 if (layerProxy!=NULL) {
271 return layerProxy->getShortLayerName(layerName);
272 }
273 return QString();
274 }
275
276 static QList<QString> getLayerNameHierarchyStatic(const QString& layerName) {
277 if (layerProxy!=NULL) {
278 return layerProxy->getLayerNameHierarchy(layerName);
279 }
280 return QList<QString>();
281 }
282
283 static bool isChildLayerOfStatic(const QString& layerName, const QString& parentLayerName) {
284 if (layerProxy!=NULL) {
285 return layerProxy->isChildLayerOf(layerName, parentLayerName);
286 }
287 return false;
288 }
289
290 static bool hasProxy() {
291 return layerProxy!=NULL;
292 }
293
297 static void setLayerProxy(RLayerProxy* p) {
298 if (layerProxy!=NULL) {
299 delete layerProxy;
300 }
301 layerProxy = p;
302 }
303
308 return layerProxy;
309 }
310
311 virtual void print(QDebug dbg) const;
312
313private:
314 QString name;
315 LayerFlags flags;
319
321};
322
323Q_DECLARE_METATYPE(QSharedPointer<RLayer>)
324Q_DECLARE_METATYPE(QSharedPointer<RLayer>*)
328Q_DECLARE_METATYPE(QFlags<RLayer::LayerFlag>)
329
330#endif
Q_DECLARE_METATYPE(RMath *)
Color.
Definition RColor.h:43
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Represents a layer in a drawing.
Definition RLayer.h:45
static bool hasChildLayersStatic(const RDocument *doc, const QString &layerName)
Definition RLayer.h:248
void setLinetypeId(RObject::Id lt)
Definition RLayer.h:191
static RPropertyTypeId PropertySelected
Definition RLayer.h:51
LayerFlag
Definition RLayer.h:67
@ Snappable
snap disabled for this layer
Definition RLayer.h:74
@ Frozen
layer is frozen
Definition RLayer.h:70
@ OffIsFreeze
off means freeze for this layer
Definition RLayer.h:75
@ Locked
layer is locked
Definition RLayer.h:71
@ Off
layer is off
Definition RLayer.h:69
@ Plottable
printing disabled for this layer
Definition RLayer.h:73
@ Collapsed
layer is collapsed
Definition RLayer.h:72
void setOff(bool on)
Definition RLayer.h:125
static RPropertyTypeId PropertyColor
Definition RLayer.h:61
void setSnappable(bool on)
Definition RLayer.h:167
static RPropertyTypeId PropertyCustom
Definition RLayer.h:47
static QList< QString > getLayerNameHierarchyStatic(const QString &layerName)
Definition RLayer.h:276
static RPropertyTypeId PropertySnappable
Definition RLayer.h:59
void setFrozen(bool on)
Definition RLayer.h:133
QList< QString > getChildLayerNames(bool recursive=true) const
Definition RLayer.h:217
static QString getHierarchySeparator()
Definition RLayer.h:241
static RPropertyTypeId PropertyProtected
Definition RLayer.h:50
virtual RS::EntityType getType() const
Definition RLayer.h:97
QString getParentLayerName() const
Definition RLayer.h:225
RObject::Id getLinetypeId() const
Definition RLayer.h:187
static RPropertyTypeId PropertyCollapsed
Definition RLayer.h:57
static RPropertyTypeId PropertyType
Definition RLayer.h:48
RColor color
Definition RLayer.h:316
bool isOff() const
Definition RLayer.h:121
void setCollapsed(bool on)
Definition RLayer.h:149
static RPropertyTypeId PropertyLineweight
Definition RLayer.h:63
static bool hasProxy()
Definition RLayer.h:290
QString getName() const
Definition RLayer.h:111
void setPlottable(bool on)
Definition RLayer.h:157
bool hasChildLayers() const
Definition RLayer.h:209
LayerFlags flags
Definition RLayer.h:315
static RPropertyTypeId PropertyPlottable
Definition RLayer.h:58
static RLayerProxy * getLayerProxy()
Definition RLayer.h:307
void setLineweight(RLineweight::Lineweight lw)
Definition RLayer.h:199
bool isPlottable() const
Definition RLayer.h:153
static RPropertyTypeId PropertyFrozen
Definition RLayer.h:55
bool isCollapsed() const
Definition RLayer.h:145
void setOffIsFreeze(bool on)
Definition RLayer.h:175
RLineweight::Lineweight lineweight
Definition RLayer.h:318
static RPropertyTypeId PropertyName
Definition RLayer.h:53
static RPropertyTypeId PropertyOffIsFreeze
Definition RLayer.h:60
QString name
Definition RLayer.h:314
QString getShortLayerName() const
Definition RLayer.h:229
static RPropertyTypeId PropertyHandle
Definition RLayer.h:49
void setColor(const RColor &c)
Definition RLayer.h:183
static QList< QString > getChildLayerNamesStatic(const RDocument *doc, const QString &layerName, bool recursive=true)
Definition RLayer.h:255
bool isFrozen() const
Definition RLayer.h:129
bool isSnappable() const
Definition RLayer.h:163
static QString getShortLayerNameStatic(const QString &layerName)
Definition RLayer.h:269
static RPropertyTypeId PropertyLinetype
Definition RLayer.h:62
bool isOffIsFreeze() const
Definition RLayer.h:171
static RLayerProxy * layerProxy
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RLayer.h:320
bool isOffOrFrozen() const
Definition RLayer.h:117
QList< QString > getLayerNameHierarchy() const
Definition RLayer.h:233
bool isLocked() const
Definition RLayer.h:137
static RPropertyTypeId PropertyLocked
Definition RLayer.h:56
static void setLayerProxy(RLayerProxy *p)
Definition RLayer.h:297
RColor getColor() const
Definition RLayer.h:179
RObject::Id linetypeId
Definition RLayer.h:317
static RS::EntityType getRtti()
Definition RLayer.h:93
virtual QSharedPointer< RObject > clone() const
Definition RLayer.h:101
static bool isChildLayerOfStatic(const QString &layerName, const QString &parentLayerName)
Definition RLayer.h:283
QSharedPointer< RLayer > cloneToLayer() const
Definition RLayer.h:105
RLineweight::Lineweight getLineweight() const
Definition RLayer.h:195
bool isChildLayerOf(const QString &layerName) const
Definition RLayer.h:237
static QString getParentLayerNameStatic(const QString &layerName)
Definition RLayer.h:262
static RPropertyTypeId PropertyOff
Definition RLayer.h:54
void setLocked(bool on)
Definition RLayer.h:141
Proxy for advanced layer functionality.
Definition RLayerProxy.h:37
Lineweight
Definition RLineweight.h:44
@ Weight000
Definition RLineweight.h:45
Abstract base class for all objects.
Definition RObject.h:64
static void init()
Definition RObject.cpp:68
virtual bool setProperty(RPropertyTypeId propertyTypeId, const QVariant &value, RTransaction *transaction=NULL)
Sets the given property to the given value.
Definition RObject.cpp:180
static const Id INVALID_ID
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RObject.h:70
bool getFlag(int flag) const
Definition RObject.h:149
virtual QPair< QVariant, RPropertyAttributes > getProperty(RPropertyTypeId &propertyTypeId, bool humanReadable=false, bool noAttributes=false, bool showOnRequest=false)
Definition RObject.cpp:136
int Id
Definition RObject.h:69
void setFlag(int flag, bool on=true)
Definition RObject.h:142
RDocument * getDocument()
Definition RObject.h:132
virtual void print(QDebug dbg) const
Stream operator for QDebug.
Definition RObject.cpp:719
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RPropertyAttributes.h:42
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RPropertyTypeId.h:54
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ ObjectLayer
Definition RS.h:232
Transaction implementation.
Definition RTransaction.h:73
#define QCADCORE_EXPORT
Definition core_global.h:10
#define NULL
Definition opennurbs_system.h:256