QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RLeaderEntity.h
Go to the documentation of this file.
1 
20 #ifndef RLEADERENTITY_H
21 #define RLEADERENTITY_H
22 
23 #include "entity_global.h"
24 
25 #include "REntity.h"
26 #include "RLeaderData.h"
27 
28 class RDocument;
29 class RExporter;
30 
39  Q_DECLARE_TR_FUNCTIONS(RLeaderEntity)
40 
41 public:
51 
56 
57 public:
58  RLeaderEntity(RDocument* document, const RLeaderData& data,
59  RObject::Id objectId = RObject::INVALID_ID);
60  virtual ~RLeaderEntity();
61 
62  static void init();
63 
64  static QSet<RPropertyTypeId> getStaticPropertyTypeIds() {
66  }
67 
68  virtual RLeaderEntity* clone() const {
69  return new RLeaderEntity(*this);
70  }
71 
72  virtual RS::EntityType getType() const {
73  return RS::EntityLeader;
74  }
75 
76  bool setProperty(RPropertyTypeId propertyTypeId, const QVariant& value,
77  RTransaction* transaction=NULL);
78  QPair<QVariant, RPropertyAttributes> getProperty(
79  RPropertyTypeId& propertyTypeId,
80  bool humanReadable = false, bool noAttributes = false);
81 
82  virtual RLeaderData& getData() {
83  return data;
84  }
85 
86  void setData(RLeaderData& d) {
87  data = d;
88  }
89 
90  virtual const RLeaderData& getData() const {
91  return data;
92  }
93 
94  void setArrowHead(bool on) {
95  data.setArrowHead(on);
96  }
97 
98  bool hasArrowHead() const {
99  return data.hasArrowHead();
100  }
101 
102  void clear() {
103  data.clear();
104  }
105 
106  void normalize() {
107  data.normalize();
108  }
109 
110  int countVertices() const {
111  return data.countVertices();
112  }
113 
114  void appendVertex(const RVector& vertex, double bulge=0.0) {
115  Q_UNUSED(bulge);
116  data.appendVertex(vertex);
117  }
118 
119  void prependVertex(const RVector& vertex, double bulge=0.0) {
120  Q_UNUSED(bulge);
121  data.prependVertex(vertex);
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 
132  void setVertexAt(int i, const RVector& v) {
133  data.setVertexAt(i, v);
134  }
135 
137  data.removeLastVertex();
138  }
139 
140  void removeVertex(int index) {
141  data.removeVertex(index);
142  }
143 
144  int countSegments() const {
145  return data.countSegments();
146  }
147 
148  QSharedPointer<RShape> getSegmentAt(int i) const {
149  return data.getSegmentAt(i);
150  }
151 
152  double getBulgeAt(int i) const {
153  return data.getBulgeAt(i);
154  }
155 
156  void setBulgeAt(int i, double b) {
157  data.setBulgeAt(i, b);
158  }
159 
160  double getDirection1() const {
161  return data.getDirection1();
162  }
163 
164  double getDirection2() const {
165  return data.getDirection2();
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  QList<QSharedPointer<RShape> > getExploded() const {
185  return data.getExploded();
186  }
187 
188  virtual void exportEntity(RExporter& e, bool preview=false) const;
189 
190 protected:
191  virtual void print(QDebug dbg) const;
192 
193 protected:
195 };
196 
198 Q_DECLARE_METATYPE(QSharedPointer<RLeaderEntity>)
199 Q_DECLARE_METATYPE(QSharedPointer<RLeaderEntity>*)
200 
201 #endif