]> Shamusworld >> Repos - architektonas/blob - src/base/rs_layer.cpp
b0f890eab2da538ec966c341b4cb64eb2e8130e6
[architektonas] / src / base / rs_layer.cpp
1 // rs_layer.cpp
2 //
3 // Part of the Architektonas Project
4 // Originally part of QCad Community Edition by Andrew Mustun
5 // Extensively rewritten and refactored by James L. Hammons
6 // (C) 2010 Underground Software
7 //
8 // JLH = James L. Hammons <jlhamm@acm.org>
9 //
10 // Who  When        What
11 // ---  ----------  -----------------------------------------------------------
12 // JLH  06/01/2010  Added this text. :-)
13 //
14
15 #include "rs_layer.h"
16
17 #include "rs_color.h"
18 #include "rs_math.h"
19
20 /**
21  * Constructor.
22  */
23 RS_Layer::RS_Layer(const QString & name)
24 {
25         setName(name);
26
27         data.pen.setLineType(RS2::SolidLine);
28         data.pen.setWidth(RS2::Width00);
29         data.pen.setColor(Qt::black);
30         data.frozen = false;
31         data.locked = false;
32 }
33
34 RS_Layer * RS_Layer::clone()
35 {
36         return new RS_Layer(*this);
37 }
38
39 /** sets a new name for this layer. */
40 void RS_Layer::setName(const QString & name)
41 {
42         data.name = name;
43 }
44
45 /** @return the name of this layer. */
46 QString RS_Layer::getName() const
47 {
48         return data.name;
49 }
50
51 /** sets the default pen for this layer. */
52 void RS_Layer::setPen(const RS_Pen & pen)
53 {
54         data.pen = pen;
55 }
56
57 /** @return default pen for this layer. */
58 RS_Pen RS_Layer::getPen() const
59 {
60         return data.pen;
61 }
62
63 /**
64  * @retval true if this layer is frozen (invisible)
65  * @retval false if this layer isn't frozen (visible)
66  */
67 bool RS_Layer::isFrozen() const
68 {
69         return data.frozen;
70         //getFlag(RS2::FlagFrozen);
71 }
72
73 /**
74  * @retval true the layer has been converted already
75  * @retval false the layer still needs to be converted
76  */
77 bool RS_Layer::isConverted() const
78 {
79         return data.converted;
80 }
81
82 /**
83  * Sets the converted flag
84  */
85 void RS_Layer::setConverted(bool c)
86 {
87         data.converted = c;
88 }
89
90 /**
91  * Toggles the visibility of this layer.
92  * Freezes the layer if it's not frozen, thaws the layer otherwise
93  */
94 void RS_Layer::toggle()
95 {
96         //toggleFlag(RS2::FlagFrozen);
97         data.frozen = !data.frozen;
98 }
99
100 /**
101  * (De-)freezes this layer.
102  *
103  * @param freeze true: freeze, false: defreeze
104  */
105 void RS_Layer::freeze(bool freeze)
106 {
107         data.frozen = freeze;
108         /*if (freeze) {
109                 setFlag(RS2::FlagFrozen);
110         } else {
111                 delFlag(RS2::FlagFrozen);
112         }*/
113 }
114
115 /**
116  * Toggles the lock of this layer.
117  */
118 void RS_Layer::toggleLock()
119 {
120         //toggleFlag(RS2::FlagFrozen);
121         data.locked = !data.locked;
122 }
123
124 /**
125  * Locks/Unlocks this layer.
126  *
127  * @param l true: lock, false: unlock
128  */
129 void RS_Layer::lock(bool l)
130 {
131         data.locked = l;
132 }
133
134 /**
135  * return the LOCK state of the Layer
136  */
137 bool RS_Layer::isLocked()
138 {
139         return data.locked;
140 }
141
142 /**
143  * Copies all attributes (pen) and the name of the layer.
144  */
145 /*
146 RS_Layer & RS_Layer::operator=(const RS_Layer & l)
147 {
148         setName(l.getName());
149         setPen(l.getPen());
150         setFrozen(l.isFrozen());
151         return *this;
152 }
153 */
154
155 /**
156  * Dumps the layers data to stdout.
157  */
158 std::ostream & operator<<(std::ostream & os, const RS_Layer & l)
159 {
160         os << " name: " << l.getName().toLatin1().data()
161                 << " pen: " << l.getPen()
162                 << " frozen: " << (int)l.isFrozen()
163                 << " address: " << (int)(&l)
164                 << std::endl;
165         return os;
166 }