QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RPolylineEntity.h
Go to the documentation of this file.
1 
20 #ifndef RPOLYLINEENTITY_H
21 #define RPOLYLINEENTITY_H
22 
23 #include "entity_global.h"
24 
25 #include "REntity.h"
26 #include "RPolylineData.h"
27 
28 class RDocument;
29 class RExporter;
30 class RArc;
31 class RLine;
32 
41 
42 public:
53 
60 
62 
63 public:
64  RPolylineEntity(RDocument* document, const RPolylineData& data,
65  RObject::Id objectId = RObject::INVALID_ID);
66  virtual ~RPolylineEntity();
67 
68  static void init();
69 
70  static QSet<RPropertyTypeId> getStaticPropertyTypeIds() {
72  }
73 
74  virtual RPolylineEntity* clone() const {
75  return new RPolylineEntity(*this);
76  }
77 
78  virtual RS::EntityType getType() const {
79  return RS::EntityPolyline;
80  }
81 
82  void setShape(const RPolyline& l);
83 
84  bool setProperty(RPropertyTypeId propertyTypeId, const QVariant& value,
85  RTransaction* transaction=NULL);
86  QPair<QVariant, RPropertyAttributes> getProperty(
87  RPropertyTypeId& propertyTypeId,
88  bool humanReadable = false, bool noAttributes = false);
89 
90  virtual void exportEntity(RExporter& e, bool preview=false, bool forceSelected=false) const;
91 
92  virtual RPolylineData& getData() {
93  return data;
94  }
95 
96  virtual const RPolylineData& getData() const {
97  return data;
98  }
99 
101  return data.getPolylineShape();
102  }
103 
104  void clear() {
105  data.clear();
106  }
107 
108  void normalize() {
109  data.normalize();
110  }
111 
112  int countVertices() const {
113  return data.countVertices();
114  }
115 
116  void appendVertex(const RVector& vertex, double bulge = 0.0) {
117  data.appendVertex(vertex, bulge);
118  }
119 
120  void prependVertex(const RVector& vertex, double bulge = 0.0) {
121  data.prependVertex(vertex, bulge);
122  }
123 
124  void insertVertex(int index, const RVector& vertex) {
125  data.insertVertex(index, vertex);
126  }
127 
128  RVector getVertexAt(int i) const {
129  return data.getVertexAt(i);
130  }
131 
133  data.removeLastVertex();
134  }
135 
136  void removeVertex(int index) {
137  data.removeVertex(index);
138  }
139 
140  int countSegments() const {
141  return data.countSegments();
142  }
143 
144  QSharedPointer<RShape> getSegmentAt(int i) const {
145  return data.getSegmentAt(i);
146  }
147 
148  double getBulgeAt(int i) const {
149  return data.getBulgeAt(i);
150  }
151 
152  void setBulgeAt(int i, double b) {
153  data.setBulgeAt(i, b);
154  }
155 
156  double getDirection1() const {
157  return data.getDirection1();
158  }
159 
160  double getDirection2() const {
161  return data.getDirection2();
162  }
163 
164  bool reverse() {
165  return data.reverse();
166  }
167 
169  return data.getEndPoint();
170  }
171 
173  return data.getStartPoint();
174  }
175 
176  void setClosed(bool on) {
177  data.setClosed(on);
178  }
179 
180  bool isClosed() const {
181  return data.isClosed();
182  }
183 
184  bool isLogicallyClosed() const {
185  return data.isLogicallyClosed();
186  }
187 
188  QList<QSharedPointer<RShape> > getExploded() const {
189  return data.getExploded();
190  }
191 
192  virtual int getComplexity() const {
193  return countSegments();
194  }
195 
196  void simplify(double angleTolerance) {
197  data.simplify(angleTolerance);
198  }
199 
200  void setPolylineGen(bool on) {
201  data.setPolylineGen(on);
202  }
203  bool getPolylineGen() const {
204  return data.getPolylineGen();
205  }
206 
207 protected:
208  virtual void print(QDebug dbg) const;
209 
210 protected:
212 };
213 
215 Q_DECLARE_METATYPE(QSharedPointer<RPolylineEntity>)
216 Q_DECLARE_METATYPE(QSharedPointer<RPolylineEntity>*)
217 
218 #endif