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 
59 
60 public:
61  RPolylineEntity(RDocument* document, const RPolylineData& data,
62  RObject::Id objectId = RObject::INVALID_ID);
63  virtual ~RPolylineEntity();
64 
65  static void init();
66 
67  static QSet<RPropertyTypeId> getStaticPropertyTypeIds() {
69  }
70 
71  virtual RPolylineEntity* clone() const {
72  return new RPolylineEntity(*this);
73  }
74 
75  virtual RS::EntityType getType() const {
76  return RS::EntityPolyline;
77  }
78 
79  void setShape(const RPolyline& l);
80 
81  bool setProperty(RPropertyTypeId propertyTypeId, const QVariant& value,
82  RTransaction* transaction=NULL);
83  QPair<QVariant, RPropertyAttributes> getProperty(
84  RPropertyTypeId& propertyTypeId,
85  bool humanReadable = false, bool noAttributes = false);
86 
87  virtual void exportEntity(RExporter& e, bool preview=false, bool forceSelected=false) const;
88 
89  virtual RPolylineData& getData() {
90  return data;
91  }
92 
93  virtual const RPolylineData& getData() const {
94  return data;
95  }
96 
98  return data.getPolylineShape();
99  }
100 
101  void clear() {
102  data.clear();
103  }
104 
105  void normalize() {
106  data.normalize();
107  }
108 
109  int countVertices() const {
110  return data.countVertices();
111  }
112 
113  void appendVertex(const RVector& vertex, double bulge = 0.0) {
114  data.appendVertex(vertex, bulge);
115  }
116 
117  void prependVertex(const RVector& vertex, double bulge = 0.0) {
118  data.prependVertex(vertex, bulge);
119  }
120 
121  void insertVertex(int index, const RVector& vertex) {
122  data.insertVertex(index, vertex);
123  }
124 
125  RVector getVertexAt(int i) const {
126  return data.getVertexAt(i);
127  }
128 
130  data.removeLastVertex();
131  }
132 
133  void removeVertex(int index) {
134  data.removeVertex(index);
135  }
136 
137  int countSegments() const {
138  return data.countSegments();
139  }
140 
141  QSharedPointer<RShape> getSegmentAt(int i) const {
142  return data.getSegmentAt(i);
143  }
144 
145  double getBulgeAt(int i) const {
146  return data.getBulgeAt(i);
147  }
148 
149  void setBulgeAt(int i, double b) {
150  data.setBulgeAt(i, b);
151  }
152 
153  double getDirection1() const {
154  return data.getDirection1();
155  }
156 
157  double getDirection2() const {
158  return data.getDirection2();
159  }
160 
161  bool reverse() {
162  return data.reverse();
163  }
164 
166  return data.getEndPoint();
167  }
168 
170  return data.getStartPoint();
171  }
172 
173  void setClosed(bool on) {
174  data.setClosed(on);
175  }
176 
177  bool isClosed() const {
178  return data.isClosed();
179  }
180 
181  bool isLogicallyClosed() const {
182  return data.isLogicallyClosed();
183  }
184 
185  QList<QSharedPointer<RShape> > getExploded() const {
186  return data.getExploded();
187  }
188 
189  virtual int getComplexity() const {
190  return countSegments();
191  }
192 
193  void simplify(double angleTolerance) {
194  data.simplify(angleTolerance);
195  }
196 
197 protected:
198  virtual void print(QDebug dbg) const;
199 
200 protected:
202 };
203 
205 Q_DECLARE_METATYPE(QSharedPointer<RPolylineEntity>)
206 Q_DECLARE_METATYPE(QSharedPointer<RPolylineEntity>*)
207 
208 #endif