DXF Pile   version 0.0.1
Dxf pile.
dxfwriter.h
Go to the documentation of this file.
1 /* ========================================================================= */
2 /* ------------------------------------------------------------------------- *//*
12 
13 
14  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15  Please read COPYING and README files in root folder
16  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 */
18 /* ------------------------------------------------------------------------- */
19 /* ========================================================================= */
20 #ifndef __PILE_DXF_WRITER_INC__
21 #define __PILE_DXF_WRITER_INC__
22 //
23 //
24 //
25 /* INCLUDES ------------------------------------------------------------ */
26 
27 #include <dxf/dxf-config.h>
28 
29 #include <QString>
30 #include <QStringList>
31 #include <QList>
32 #include <QTextStream>
33 #include <QFile>
34 
35 /* INCLUDES ============================================================ */
36 //
37 //
38 //
39 //
40 /* DEFINITIONS --------------------------------------------------------- */
41 
42 class UserMsg;
43 
44 /* DEFINITIONS ========================================================= */
45 //
46 //
47 //
48 //
49 /* CLASS --------------------------------------------------------------- */
50 
53 class DXF_EXPORT DxfWriter {
54  //
55  //
56  //
57  //
58  /* DEFINITIONS ----------------------------------------------------- */
59 
60 public:
61 
62  /* DEFINITIONS ===================================================== */
63  //
64  //
65  //
66  //
67  /* DATA ------------------------------------------------------------ */
68 
69 private:
70 
72  QString s_full_path_;
73 
75  QFile * file_;
76 
78  QTextStream * stream_;
79 
81  QStringList cache_table_;
82 
84  int table_entry_count_;
85 
87  int next_handle_;
88 
89  /* DATA ============================================================ */
90  //
91  //
92  //
93  //
94  /* FUNCTIONS ------------------------------------------------------- */
95 
96 public:
97 
100  explicit DxfWriter (const QString & s_path);
101 
104  virtual ~DxfWriter (void);
105 
108  inline const QString &
109  path () const {
110  return s_full_path_;
111  }
112 
113  bool
114  startSecBlocks (
115  UserMsg & um);
116  bool
117  startSecEntities (
118  UserMsg & um);
119  bool
120  startSecHeader (
121  UserMsg & um);
122  bool
123  startSecTables (
124  UserMsg & um);
125 
126  bool
127  endSecBlocks (
128  UserMsg & um);
129  bool
130  endSecEntities (
131  UserMsg & um);
132  bool
133  endSecHeader (
134  UserMsg & um);
135  bool
136  endSecTables (
137  UserMsg & um);
138 
139 
140  void
141  appendTableEntry (
142  const QString & s_name);
143 
144  void
145  appendToTable (
146  const QString & s_name);
147  void
148  incTableCount ();
149 
150  void
151  setTableCount (
152  int value);
153 
154  bool
155  startTableVport (
156  UserMsg & um);
157  bool
158  endTableVport (
159  UserMsg & um);
160  bool
161  startTableLtype (
162  UserMsg & um);
163  bool
164  endTableLtype (
165  UserMsg & um);
166  bool
167  startTableLayer (
168  UserMsg & um);
169  bool
170  endTableLayer (
171  UserMsg & um);
172  bool
173  startTableStyle (
174  UserMsg & um);
175  bool
176  endTableStyle (
177  UserMsg & um);
178  bool
179  startTableAppId (
180  UserMsg & um);
181  bool
182  endTableAppId (
183  UserMsg & um);
184  bool
185  startTableView (
186  UserMsg & um);
187  bool
188  endTableView (
189  UserMsg & um);
190  bool
191  startTableUCS (
192  UserMsg & um);
193  bool
194  endTableUCS (
195  UserMsg & um);
196  bool
197  startTableDimStyle (
198  UserMsg & um);
199  bool
200  endTableDimStyle (
201  UserMsg & um);
202 
203 
204 
205  void vpTableAddDefault ();
206  void ltyTableAddDefault ();
207  void lyTableAddDefault ();
208  void styleTableAddDefault ();
209  void appidTableAddDefault ();
210  void dimstyleTableAddDefault ();
211 
212  void blockAddDefModel ();
213  void blockAddDefPaper ();
214  void blockAddDef (
215  const QString & s_name);
216 
217  void lyTableAdd (
218  const QString & s_name,
219  int base_color = 7,
220  const QString & s_line_style = "CONTINUOUS");
221 
222  bool
223  startPolyline (
224  const QString & layer,
225  UserMsg & um);
226 
227  bool
228  endPolyline (
229  UserMsg & um);
230 
231  void
232  appendVertex (
233  double x,
234  double y,
235  double z = 0.0);
236 
237  void
238  appendPoint (
239  const QString & layer,
240  double x,
241  double y,
242  double z = 0.0);
243 
244  void
245  appendCircle (
246  const QString & layer,
247  double radius,
248  double x,
249  double y,
250  double z = 0.0);
251 
252  void
253  appendText (
254  const QString & layer,
255  const QString & value,
256  double x,
257  double y,
258  double z = 0.0,
259  double height = 1.0,
260  double deg_rotation = 0);
261 
262 
263 private:
264 
265 
266  bool
267  autostart (
268  UserMsg & um);
269 
270  bool
271  statusOk (
272  UserMsg & um);
273 
274  void
275  startSection (
276  const QString & s_name);
277 
278  void
279  endSection ();
280 
281  void
282  startTable (
283  const QString & s_name);
284 
285  void
286  endTable ();
287 
288  /* FUNCTIONS ======================================================= */
289  //
290  //
291  //
292  //
293 
294 }; /* class DxfWriter */
295 
296 /* CLASS =============================================================== */
297 //
298 //
299 //
300 //
301 
302 #endif // __PILE_DXF_WRITER_INC__
303 /* ------------------------------------------------------------------------- */
304 /* ========================================================================= */
const QString & path() const
Definition: dxfwriter.h:109
Definition: dxfwriter.h:53