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