]> Shamusworld >> Repos - architektonas/blob - src/base/rs_layer.cpp
Initial import
[architektonas] / src / base / rs_layer.cpp
1 /****************************************************************************
2 ** $Id: rs_layer.cpp 1938 2004-12-09 23:09:53Z andrew $
3 **
4 ** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
5 **
6 ** This file is part of the qcadlib Library project.
7 **
8 ** This file may be distributed and/or modified under the terms of the
9 ** GNU General Public License version 2 as published by the Free Software
10 ** Foundation and appearing in the file LICENSE.GPL included in the
11 ** packaging of this file.
12 **
13 ** Licensees holding valid qcadlib Professional Edition licenses may use
14 ** this file in accordance with the qcadlib Commercial License
15 ** Agreement provided with the Software.
16 **
17 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
18 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 **
20 ** See http://www.ribbonsoft.com for further details.
21 **
22 ** Contact info@ribbonsoft.com if any conditions of this licensing are
23 ** not clear to you.
24 **
25 **********************************************************************/
26
27 #include "rs_layer.h"
28
29 //#include <iostream>
30 #include "rs_color.h"
31 #include "rs_math.h"
32
33 /**
34  * Constructor.
35  */
36 RS_Layer::RS_Layer(const QString & name)
37 {
38         setName(name);
39
40         data.pen.setLineType(RS2::SolidLine);
41         data.pen.setWidth(RS2::Width00);
42         data.pen.setColor(Qt::black);
43         data.frozen = false;
44         data.locked = false;
45 }
46
47 RS_Layer * RS_Layer::clone()
48 {
49         return new RS_Layer(*this);
50 }
51
52 /** sets a new name for this layer. */
53 void RS_Layer::setName(const QString & name)
54 {
55         data.name = name;
56 }
57
58 /** @return the name of this layer. */
59 QString RS_Layer::getName() const
60 {
61         return data.name;
62 }
63
64 /** sets the default pen for this layer. */
65 void RS_Layer::setPen(const RS_Pen & pen)
66 {
67         data.pen = pen;
68 }
69
70 /** @return default pen for this layer. */
71 RS_Pen RS_Layer::getPen() const
72 {
73         return data.pen;
74 }
75
76 /**
77  * @retval true if this layer is frozen (invisible)
78  * @retval false if this layer isn't frozen (visible)
79  */
80 bool RS_Layer::isFrozen() const
81 {
82         return data.frozen;
83         //getFlag(RS2::FlagFrozen);
84 }
85
86 /**
87  * @retval true the layer has been converted already
88  * @retval false the layer still needs to be converted
89  */
90 bool RS_Layer::isConverted() const
91 {
92         return data.converted;
93 }
94
95 /**
96  * Sets the converted flag
97  */
98 void RS_Layer::setConverted(bool c)
99 {
100         data.converted = c;
101 }
102
103 /**
104  * Toggles the visibility of this layer.
105  * Freezes the layer if it's not frozen, thaws the layer otherwise
106  */
107 void RS_Layer::toggle()
108 {
109         //toggleFlag(RS2::FlagFrozen);
110         data.frozen = !data.frozen;
111 }
112
113 /**
114  * (De-)freezes this layer.
115  *
116  * @param freeze true: freeze, false: defreeze
117  */
118 void RS_Layer::freeze(bool freeze)
119 {
120         data.frozen = freeze;
121         /*if (freeze) {
122                 setFlag(RS2::FlagFrozen);
123         } else {
124                 delFlag(RS2::FlagFrozen);
125         }*/
126 }
127
128 /**
129  * Toggles the lock of this layer.
130  */
131 void RS_Layer::toggleLock()
132 {
133         //toggleFlag(RS2::FlagFrozen);
134         data.locked = !data.locked;
135 }
136
137 /**
138  * Locks/Unlocks this layer.
139  *
140  * @param l true: lock, false: unlock
141  */
142 void RS_Layer::lock(bool l)
143 {
144         data.locked = l;
145 }
146
147 /**
148  * return the LOCK state of the Layer
149  */
150 bool RS_Layer::isLocked()
151 {
152         return data.locked;
153 }
154
155 /**
156  * Copies all attributes (pen) and the name of the layer.
157  */
158 /*
159 RS_Layer & RS_Layer::operator=(const RS_Layer & l)
160 {
161         setName(l.getName());
162         setPen(l.getPen());
163         setFrozen(l.isFrozen());
164         return *this;
165 }
166 */
167
168 /**
169  * Dumps the layers data to stdout.
170  */
171 std::ostream & operator<<(std::ostream & os, const RS_Layer & l)
172 {
173         os << " name: " << l.getName().toLatin1().data()
174                 << " pen: " << l.getPen()
175                 << " frozen: " << (int)l.isFrozen()
176                 << " address: " << (int)(&l)
177                 << std::endl;
178         return os;
179 }