]> Shamusworld >> Repos - architektonas/blob - src/base/rs_layer.h
145738243a9172fb046512e3c377a9f4494332ee
[architektonas] / src / base / rs_layer.h
1 /****************************************************************************
2 ** $Id: rs_layer.h 1822 2004-02-29 00:29:32Z 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 #ifndef RS_LAYER_H
28 #define RS_LAYER_H
29
30 #include <stddef.h>
31
32 #ifdef __hpux
33 #include <sys/_size_t.h>
34 #endif
35
36 #include <iostream>
37 #include <QtCore>
38
39 #include "rs_flags.h"
40 #include "rs_pen.h"
41
42 /**
43  * Holds the data that defines a layer.
44  */
45 class RS_LayerData
46 {
47         public:
48                 RS_LayerData() {}
49
50                 RS_LayerData(const QString & name, const RS_Pen & pen, bool frozen, bool locked)
51                 {
52                         this->name = name;
53                         this->pen = pen;
54                         this->frozen = frozen;
55                         this->locked = locked;
56                 }
57
58                 //! Layer name
59                 QString name;
60
61                 //! default pen for this layer
62                 RS_Pen pen;
63
64                 //! Frozen flag
65                 bool frozen;
66
67                 //! Locked flag
68                 bool locked;
69
70                 //! Converted flag (cam)
71                 bool converted;
72 };
73
74 /**
75  * Class for representing a layer
76  *
77  * @author Andrew Mustun
78  */
79 class RS_Layer
80 {
81         public:
82                 explicit RS_Layer(const QString & name);
83                 //RS_Layer(const char* name);
84
85                 RS_Layer * clone();
86                 void setName(const QString & name);
87                 QString getName() const;
88                 void setPen(const RS_Pen & pen);
89                 RS_Pen getPen() const;
90                 bool isFrozen() const;
91                 bool isConverted() const;
92                 void setConverted(bool c);
93                 void toggle();
94                 void freeze(bool freeze);
95                 void toggleLock();
96                 void lock(bool l);
97                 bool isLocked();
98                 //RS_Layer & operator=(const RS_Layer & l);
99
100                 friend std::ostream & operator<<(std::ostream & os, const RS_Layer & l);
101
102                 //friend class RS_LayerList;
103
104         private:
105                 //! Layer data
106                 RS_LayerData data;
107 };
108
109 #endif