QCAD Application Framework
CAD Application Development and Automation.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RExporter.h
Go to the documentation of this file.
1 #ifndef REXPORTER_H
2 #define REXPORTER_H
3 
4 #include <QBrush>
5 #include <QColor>
6 #include <QPen>
7 #include <QStack>
8 #include <QTextLayout>
9 
10 #include "REntity.h"
11 #include "RMatrix.h"
12 #include "RView.h"
13 #include "RPainterPath.h"
14 #include "RPainterPathSource.h"
15 
16 class RArc;
17 class RCircle;
18 class RDocument;
19 class REllipse;
20 class RImageData;
21 class RLine;
22 class RLinetype;
23 class RLinetypePattern;
24 class RPoint;
25 class RPolyline;
26 class RSpline;
27 //class RTextLabel;
28 class RTriangle;
29 class RVector;
30 
39 class RExporter {
40 
41 public:
42  RExporter();
44  virtual ~RExporter();
45 
46  QString getErrorMessage() const;
47 
48  void setLayerSource(RDocument* ls);
49  void setBlockSource(RDocument* bs);
50 
54  RDocument& getDocument() const;
55 
58  virtual void setPen(const QPen& pen);
59  virtual QPen getPen(const RPainterPath& path);
60  virtual QPen getPen();
61  virtual void setBrush(const QBrush& brush);
62  virtual QBrush getBrush(const RPainterPath& path);
63  virtual QBrush getBrush();
64 
65  virtual void setEntityAttributes();
66 
67  virtual void setStyle(Qt::PenStyle penStyle);
68  virtual void setBrushStyle(Qt::BrushStyle brushStyle);
69  virtual void setDashPattern(const QVector<qreal>& dashes);
70 
71  virtual void setColor(float r, float g, float b, float a = 1.0f);
72  virtual void setColor(const RColor& color);
73 
74  virtual void setLineweight(RLineweight::Lineweight weight);
75 
76  virtual void setLinetypeId(RLinetype::Id ltId);
77  virtual void setLinetypePattern(const RLinetypePattern& ltPattern);
79 
80  virtual REntity* getBlockRefOrEntity();
81  virtual REntity* getEntity();
82 
86  virtual const REntity* getEntity() const;
87 
88  virtual bool isEntitySelected();
89 
90  virtual void startExport();
91  virtual void endExport();
92 
93  virtual bool exportDocument();
94  virtual bool exportDocumentSettings();
95  virtual void exportDocumentSetting(
96  const QString& /*key*/, const QVariant& /*value*/) {}
97 
98  virtual void exportLayers();
99  virtual void exportBlocks();
100  virtual void exportViews();
101  virtual void exportLinetypes();
102 
103  virtual void exportLayer(RLayer& /*layer*/) {}
104  virtual void exportLayer(RLayer::Id layerId);
105  virtual void exportBlock(RBlock& /*block*/) {}
106  virtual void exportBlock(RBlock::Id blockId);
107  virtual void exportView(RView& /*view*/) {}
108  virtual void exportView(RView::Id viewId);
109  virtual void exportLinetype(RLinetype& /*linetype*/) {}
110 
111  virtual void exportEntities(bool allBlocks = true, bool undone = false);
112  virtual void exportEntities(const RBox& box);
113  virtual void exportEntities(QSet<REntity::Id>& entityIds, bool allBlocks = true);
114  virtual void exportTrialEntities();
115  virtual void exportEntity(REntity& e, bool preview = false, bool allBlocks = true);
116  virtual void exportEntity(REntity::Id entityId, bool allBlocks = true);
117  virtual void startEntity(bool /*topLevelEntity*/) {}
118  virtual void endEntity() {}
119  virtual void exportCurrentEntity(bool preview = false);
120  virtual void unexportEntity(REntity::Id entityId);
121 
122  virtual void exportShapes(const QList<QSharedPointer<RShape> >& shapes);
123  virtual void exportShape(QSharedPointer<RShape> shape);
124 
128  virtual void exportLine(const RLine& line, double offset = RNANDOUBLE);
129 
135  virtual void exportLineSegment(const RLine& line) = 0;
136 
140  virtual void exportPoint(const RPoint& point) = 0;
141 
142  virtual void exportCircle(const RCircle& circle);
143 
144  virtual void exportArc(const RArc& arc, double offset = RNANDOUBLE);
145 
146  virtual void exportArcSegment(const RArc& arc) = 0;
147 
148  virtual void exportEllipse(const REllipse& ellipse, double offset = RNANDOUBLE);
149 
150  virtual void exportPolyline(const RPolyline& polyline, double offset = RNANDOUBLE);
151 
152  virtual void exportSpline(const RSpline& spline, double offset = RNANDOUBLE);
153 
157  virtual void exportExplodable(const RExplodable& explodable, double offset = RNANDOUBLE);
158 
162  virtual void exportPainterPathSource(const RPainterPathSource& pathSource);
163 
164  virtual void exportPainterPaths(const QList<RPainterPath>& paths);
165  virtual void exportBoundingBoxPaths(const QList<RPainterPath>& paths);
166 
167  virtual void exportImage(const RImageData& image);
168 
169  virtual void exportQuad(
170  const RVector& p1,
171  const RVector& p2,
172  const RVector& p3,
173  const RVector& p4
174  );
175 
176  virtual void exportVerticalQuad(
177  const RVector& p1,
178  const RVector& p2,
179  double height
180  );
181 
182  virtual void exportBox(const RBox& box);
183 
187  virtual void exportTriangle(const RTriangle& triangle) = 0;
188 
189  virtual void exportRectangle(const RVector& p1, const RVector& p2);
190 
191  virtual double getPatternFactor();
192 
193  QStack<REntity*> getEntityStack();
194 
195  double getPatternOffset(double length, const RLinetypePattern& pattern);
199  double getPatternOffset(double length, const RLinetypePattern& pattern,
200  int index, double* gap = NULL);
201 
202  void setDraftMode(bool on) {
203  draftMode = on;
204  }
205 
206  bool getDraftMode() const {
207  return draftMode;
208  }
209 
214  bool isVisualExporter() const {
215  return visualExporter;
216  }
217 
218  void setVisualExporter(bool on) {
219  visualExporter = on;
220  }
221 
222 protected:
226  QBrush currentBrush;
227  QStack<REntity*> entityStack;
229  QStack<RBlockReferenceEntity*> blockRefStack;
230  //QSharedPointer<REntity> blockRefBS;
233  bool draftMode;
235  QString errorMessage;
236 
237 private:
239  //bool fixedColor;
240 };
241 
243 
244 #endif