QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RLineEntity.h
Go to the documentation of this file.
1 
20 #ifndef RLINEENTITY_H
21 #define RLINEENTITY_H
22 
23 #include "entity_global.h"
24 
25 #include "REntity.h"
26 #include "RLineData.h"
27 
28 class RDocument;
29 class RExporter;
30 
39 
40 public:
50 
57 
60 
61 public:
62  RLineEntity(RDocument* document, const RLineData& data,
63  RObject::Id objectId = RObject::INVALID_ID);
64  virtual ~RLineEntity();
65 
66  static void init();
67 
68  static QSet<RPropertyTypeId> getStaticPropertyTypeIds() {
70  }
71 
72  virtual RLineEntity* clone() const {
73  return new RLineEntity(*this);
74  }
75 
76  virtual RS::EntityType getType() const {
77  return RS::EntityLine;
78  }
79 
80  bool setProperty(RPropertyTypeId propertyTypeId, const QVariant& value,
81  RTransaction* transaction=NULL);
82  QPair<QVariant, RPropertyAttributes> getProperty(
83  RPropertyTypeId& propertyTypeId,
84  bool humanReadable = false, bool noAttributes = false);
85 
86  virtual void exportEntity(RExporter& e, bool preview=false) const;
87 
88  virtual RLineData& getData() {
89  return data;
90  }
91 
92  virtual const RLineData& getData() const {
93  return data;
94  }
95 
96  void setShape(const RLine& l);
97 
98  void setStartPoint(const RVector& p) {
99  data.setStartPoint(p);
100  }
101 
103  return data.getStartPoint();
104  }
105 
106  void setEndPoint(const RVector& p) {
107  data.setEndPoint(p);
108  }
109 
111  return data.getEndPoint();
112  }
113 
114  double getAngle() const {
115  return data.getAngle();
116  }
117 
118  double getDirection1() const {
119  return data.getDirection1();
120  }
121 
122  double getDirection2() const {
123  return data.getDirection2();
124  }
125 
126  bool reverse() {
127  return data.reverse();
128  }
129 
130  RS::Side getSideOfPoint(const RVector& point) const {
131  return data.getSideOfPoint(point);
132  }
133 
134  RS::Ending getTrimEnd(const RVector& coord,
135  const RVector& trimPoint) {
136  return data.getTrimEnd(coord, trimPoint);
137  }
138 
139  void trimStartPoint(const RVector& p) {
140  return data.trimStartPoint(p);
141  }
142  void trimEndPoint(const RVector& p) {
143  return data.trimEndPoint(p);
144  }
145 
146  double getLength() const {
147  return data.getLength();
148  }
149 
150 protected:
151  virtual void print(QDebug dbg) const;
152 
153 protected:
155 };
156 
158 Q_DECLARE_METATYPE(QSharedPointer<RLineEntity>)
159 Q_DECLARE_METATYPE(QSharedPointer<RLineEntity>*)
160 
161 #endif