QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RSplineData.h
Go to the documentation of this file.
1 
20 #ifndef RSPLINEDATA_H
21 #define RSPLINEDATA_H
22 
23 #include "entity_global.h"
24 
25 #include "RBox.h"
26 #include "RDocument.h"
27 #include "REntity.h"
28 #include "RSpline.h"
29 #include "RVector.h"
30 
39 
40  friend class RSplineEntity;
41 
42 protected:
44 
45 public:
46  RSplineData();
47  RSplineData(const RSpline& spline);
48 
49  virtual RBox getBoundingBox(bool ignoreEmpty=false) const;
50 
51  virtual QList<RVector> getReferencePoints(
53 
54  virtual bool moveReferencePoint(const RVector& referencePoint,
55  const RVector& targetPoint);
56 
57  void setShape(const RSpline& s) {
58  copySpline(s);
59  }
60 
61  void appendControlPoint(const RVector& point) {
63  }
64 
65  void setPeriodic(bool on) {
67  }
68 
69  bool isValid() const {
70  return RSpline::isValid();
71  }
72 
73  int getDegree() const {
74  return RSpline::getDegree();
75  }
76 
77  double getDirection1() const {
78  return RSpline::getDirection1();
79  }
80 
81  double getDirection2() const {
82  return RSpline::getDirection2();
83  }
84 
86  return RSpline::getStartPoint();
87  }
88 
89  RVector getEndPoint() const {
90  return RSpline::getEndPoint();
91  }
92 
93  bool reverse() {
94  return RSpline::reverse();
95  }
96 
97  RS::Ending getTrimEnd(const RVector& coord, const RVector& trimPoint) {
98  return RSpline::getTrimEnd(coord, trimPoint);
99  }
100  void trimStartPoint(const RVector& p) {
101  return RSpline::trimStartPoint(p);
102  }
103  void trimEndPoint(const RVector& p) {
104  return RSpline::trimEndPoint(p);
105  }
106 
107  bool isClosed() const {
108  return RSpline::isClosed();
109  }
110 
111  bool isPeriodic() const {
112  return RSpline::isPeriodic();
113  }
114 
117  }
118 
120  return RSpline::getTangentAtEnd();
121  }
122 
123  //void updateTangentsPeriodic() {
124  // RSpline::updateTangentsPeriodic();
125  //}
126 
127  QList<RVector> getControlPoints() const {
128  return RSpline::getControlPoints();
129  }
130 
131  QList<RVector> getControlPointsWrapped() const {
133  }
134 
135  QList<RVector> getFitPoints() const {
136  return RSpline::getFitPoints();
137  }
138 
139  QList<double> getKnotVector() const {
140  return RSpline::getKnotVector();
141  }
142 
143  QList<double> getActualKnotVector() const {
145  }
146 
147  QList<double> getWeights() const {
148  return RSpline::getWeights();
149  }
150 
151  RPolyline toPolyline(int segments) const {
152  return RSpline::toPolyline(segments);
153  }
154 
155  //RSpline getSubSpline(double d1, double d2) const {
156  // return RSpline::getSubSpline(d1, d2);
157  //}
158 
159  virtual RShape* castToShape() {
160  return this;
161  }
162 
163  virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX) const {
164  Q_UNUSED(queryBox)
165 
166  // make sure we copy only splines with updated cache:
167  //getExploded();
168 
169  return QList<QSharedPointer<RShape> >() <<
170  QSharedPointer<RShape>(new RSpline(*this));
171  }
172 
173  virtual void update() const {
174  //RSpline::update();
175  }
176 };
177 
180 Q_DECLARE_METATYPE(QSharedPointer<RSplineData>)
181 
182 #endif