Horizon
dl_creationinterface.h
1 /****************************************************************************
2 ** Copyright (C) 2001-2013 RibbonSoft, GmbH. All rights reserved.
3 **
4 ** This file is part of the dxflib project.
5 **
6 ** This file is free software; you can redistribute it and/or modify
7 ** it under the terms of the GNU General Public License as published by
8 ** the Free Software Foundation; either version 2 of the License, or
9 ** (at your option) any later version.
10 **
11 ** Licensees holding valid dxflib Professional Edition licenses may use
12 ** this file in accordance with the dxflib Commercial License
13 ** Agreement provided with the Software.
14 **
15 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17 **
18 ** See http://www.ribbonsoft.com for further details.
19 **
20 ** Contact info@ribbonsoft.com if any conditions of this licensing are
21 ** not clear to you.
22 **
23 **********************************************************************/
24 
25 #ifndef DL_CREATIONINTERFACE_H
26 #define DL_CREATIONINTERFACE_H
27 
28 #include "dl_global.h"
29 
30 #include <string.h>
31 
32 #include "dl_attributes.h"
33 #include "dl_codes.h"
34 #include "dl_entities.h"
35 #include "dl_extrusion.h"
36 
47 class DXFLIB_EXPORT DL_CreationInterface {
48 public:
50  extrusion = new DL_Extrusion;
51  }
52  virtual ~DL_CreationInterface() {
53  delete extrusion;
54  }
55 
60  virtual void processCodeValuePair(unsigned int groupCode, const std::string& groupValue) = 0;
61 
65  virtual void endSection() = 0;
66 
70  virtual void addLayer(const DL_LayerData& data) = 0;
71 
75  virtual void addLinetype(const DL_LinetypeData& data) = 0;
76 
80  virtual void addLinetypeDash(double length) = 0;
81 
88  virtual void addBlock(const DL_BlockData& data) = 0;
89 
91  virtual void endBlock() = 0;
92 
94  virtual void addTextStyle(const DL_StyleData& data) = 0;
95 
97  virtual void addPoint(const DL_PointData& data) = 0;
98 
100  virtual void addLine(const DL_LineData& data) = 0;
101 
103  virtual void addXLine(const DL_XLineData& data) = 0;
104 
106  virtual void addRay(const DL_RayData& data) = 0;
107 
109  virtual void addArc(const DL_ArcData& data) = 0;
110 
112  virtual void addCircle(const DL_CircleData& data) = 0;
113 
115  virtual void addEllipse(const DL_EllipseData& data) = 0;
116 
118  virtual void addPolyline(const DL_PolylineData& data) = 0;
119 
121  virtual void addVertex(const DL_VertexData& data) = 0;
122 
124  virtual void addSpline(const DL_SplineData& data) = 0;
125 
127  virtual void addControlPoint(const DL_ControlPointData& data) = 0;
128 
130  virtual void addFitPoint(const DL_FitPointData& data) = 0;
131 
133  virtual void addKnot(const DL_KnotData& data) = 0;
134 
136  virtual void addInsert(const DL_InsertData& data) = 0;
137 
139  virtual void addTrace(const DL_TraceData& data) = 0;
140 
142  virtual void add3dFace(const DL_3dFaceData& data) = 0;
143 
145  virtual void addSolid(const DL_SolidData& data) = 0;
146 
147 
149  virtual void addMText(const DL_MTextData& data) = 0;
150 
156  virtual void addMTextChunk(const std::string& text) = 0;
157 
159  virtual void addText(const DL_TextData& data) = 0;
160 
162  virtual void addAttribute(const DL_AttributeData& data) = 0;
163 
167  virtual void addDimAlign(const DL_DimensionData& data,
168  const DL_DimAlignedData& edata) = 0;
172  virtual void addDimLinear(const DL_DimensionData& data,
173  const DL_DimLinearData& edata) = 0;
174 
178  virtual void addDimRadial(const DL_DimensionData& data,
179  const DL_DimRadialData& edata) = 0;
180 
184  virtual void addDimDiametric(const DL_DimensionData& data,
185  const DL_DimDiametricData& edata) = 0;
186 
190  virtual void addDimAngular(const DL_DimensionData& data,
191  const DL_DimAngularData& edata) = 0;
192 
196  virtual void addDimAngular3P(const DL_DimensionData& data,
197  const DL_DimAngular3PData& edata) = 0;
198 
202  virtual void addDimOrdinate(const DL_DimensionData& data,
203  const DL_DimOrdinateData& edata) = 0;
204 
208  virtual void addLeader(const DL_LeaderData& data) = 0;
209 
213  virtual void addLeaderVertex(const DL_LeaderVertexData& data) = 0;
214 
218  virtual void addHatch(const DL_HatchData& data) = 0;
219 
223  virtual void addImage(const DL_ImageData& data) = 0;
224 
228  virtual void linkImage(const DL_ImageDefData& data) = 0;
229 
233  virtual void addHatchLoop(const DL_HatchLoopData& data) = 0;
234 
238  virtual void addHatchEdge(const DL_HatchEdgeData& data) = 0;
239 
243  virtual void addXRecord(const std::string& handle) = 0;
244 
248  virtual void addXRecordString(int code, const std::string& value) = 0;
249 
253  virtual void addXRecordReal(int code, double value) = 0;
254 
258  virtual void addXRecordInt(int code, int value) = 0;
259 
263  virtual void addXRecordBool(int code, bool value) = 0;
264 
268  virtual void addXDataApp(const std::string& appId) = 0;
269 
273  virtual void addXDataString(int code, const std::string& value) = 0;
274 
278  virtual void addXDataReal(int code, double value) = 0;
279 
283  virtual void addXDataInt(int code, int value) = 0;
284 
288  virtual void addDictionary(const DL_DictionaryData& data) = 0;
289 
293  virtual void addDictionaryEntry(const DL_DictionaryEntryData& data) = 0;
294 
298  virtual void endEntity() = 0;
299 
303  virtual void addComment(const std::string& comment) = 0;
304 
308  virtual void setVariableVector(const std::string& key, double v1, double v2, double v3, int code) = 0;
309 
313  virtual void setVariableString(const std::string& key, const std::string& value, int code) = 0;
314 
318  virtual void setVariableInt(const std::string& key, int value, int code) = 0;
319 
323  virtual void setVariableDouble(const std::string& key, double value, int code) = 0;
324 
325 #ifdef DL_COMPAT
326  virtual void setVariableVector(const char* key, double v1, double v2, double v3, int code) = 0;
327  virtual void setVariableString(const char* key, const char* value, int code) = 0;
328  virtual void setVariableInt(const char* key, int value, int code) = 0;
329  virtual void setVariableDouble(const char* key, double value, int code) = 0;
330  virtual void processCodeValuePair(unsigned int groupCode, char* groupValue) = 0;
331  virtual void addComment(const char* comment) = 0;
332  virtual void addMTextChunk(const char* text) = 0;
333 #endif
334 
338  virtual void endSequence() = 0;
339 
341  void setAttributes(const DL_Attributes& attrib) {
342  attributes = attrib;
343  }
344 
347  return attributes;
348  }
349 
351  void setExtrusion(double dx, double dy, double dz, double elevation) {
352  extrusion->setDirection(dx, dy, dz);
353  extrusion->setElevation(elevation);
354  }
355 
358  return extrusion;
359  }
360 
361 protected:
362  DL_Attributes attributes;
363  DL_Extrusion *extrusion;
364 };
365 
366 #endif
DL_CreationInterface::setVariableInt
virtual void setVariableInt(const std::string &key, int value, int code)=0
Called for every int variable in the DXF file (e.g.
DL_CreationInterface::addDimOrdinate
virtual void addDimOrdinate(const DL_DimensionData &data, const DL_DimOrdinateData &edata)=0
Called for every ordinate dimension entity.
DL_DictionaryData
Dictionary data.
Definition: dl_entities.h:1709
DL_FitPointData
Spline fit point data.
Definition: dl_entities.h:597
DL_CreationInterface::addArc
virtual void addArc(const DL_ArcData &data)=0
Called for every arc.
DL_CreationInterface::addXRecordInt
virtual void addXRecordInt(int code, int value)=0
Called for XRecords of type int.
DL_LineData
Line Data.
Definition: dl_entities.h:220
DL_CreationInterface::addInsert
virtual void addInsert(const DL_InsertData &data)=0
Called for every insert.
DL_CreationInterface::addXRecordString
virtual void addXRecordString(int code, const std::string &value)=0
Called for XRecords of type string.
DL_HatchData
Hatch data.
Definition: dl_entities.h:1380
DL_CreationInterface::addLinetype
virtual void addLinetype(const DL_LinetypeData &data)=0
Called for every linetype.
DL_VertexData
Vertex Data.
Definition: dl_entities.h:411
DL_CreationInterface::addEllipse
virtual void addEllipse(const DL_EllipseData &data)=0
Called for every ellipse.
DL_PolylineData
Polyline Data.
Definition: dl_entities.h:381
DL_CreationInterface::addImage
virtual void addImage(const DL_ImageData &data)=0
Called for every image entity.
DL_DimRadialData
Radial Dimension Data.
Definition: dl_entities.h:1099
DL_CircleData
Circle Data.
Definition: dl_entities.h:351
DL_CreationInterface::setVariableString
virtual void setVariableString(const std::string &key, const std::string &value, int code)=0
Called for every string variable in the DXF file (e.g.
DL_CreationInterface::setVariableVector
virtual void setVariableVector(const std::string &key, double v1, double v2, double v3, int code)=0
Called for every vector variable in the DXF file (e.g.
DL_EllipseData
Ellipse Data.
Definition: dl_entities.h:617
DL_ImageDefData
Image Definition Data.
Definition: dl_entities.h:1685
DL_CreationInterface::addHatchEdge
virtual void addHatchEdge(const DL_HatchEdgeData &data)=0
Called for every hatch edge entity.
DL_CreationInterface::addText
virtual void addText(const DL_TextData &data)=0
Called for every Text entity.
DL_LeaderData
Leader (arrow).
Definition: dl_entities.h:1309
DL_CreationInterface::addHatch
virtual void addHatch(const DL_HatchData &data)=0
Called for every hatch entity.
DL_CreationInterface::addLinetypeDash
virtual void addLinetypeDash(double length)=0
Called for every dash in linetype pattern.
DL_CreationInterface::addXRecord
virtual void addXRecord(const std::string &handle)=0
Called for every XRecord with the given handle.
DL_StyleData
Text style data.
Definition: dl_entities.h:129
DL_CreationInterface::addPoint
virtual void addPoint(const DL_PointData &data)=0
Called for every point.
DL_HatchLoopData
Hatch boundary path (loop) data.
Definition: dl_entities.h:1427
DL_CreationInterface::addSolid
virtual void addSolid(const DL_SolidData &data)=0
Called for every solid start.
DL_LeaderVertexData
Leader Vertex Data.
Definition: dl_entities.h:1356
DL_CreationInterface::addAttribute
virtual void addAttribute(const DL_AttributeData &data)=0
Called for every Block Attribute entity.
DL_CreationInterface::addLayer
virtual void addLayer(const DL_LayerData &data)=0
Called for every layer.
DL_SplineData
Spline Data.
Definition: dl_entities.h:506
DL_CreationInterface::linkImage
virtual void linkImage(const DL_ImageDefData &data)=0
Called for every image definition.
DL_DictionaryEntryData
Dictionary entry data.
Definition: dl_entities.h:1719
DL_CreationInterface::addPolyline
virtual void addPolyline(const DL_PolylineData &data)=0
Called for every polyline start.
DL_CreationInterface::add3dFace
virtual void add3dFace(const DL_3dFaceData &data)=0
Called for every 3dface start.
DL_CreationInterface::endSection
virtual void endSection()=0
Called when a section (entity, table entry, etc.) is finished.
DL_DimAngular3PData
Angular Dimension Data (3 points version).
Definition: dl_entities.h:1217
DL_CreationInterface::addXDataReal
virtual void addXDataReal(int code, double value)=0
Called for XData tuples.
DL_MTextData
MText Data.
Definition: dl_entities.h:714
DL_CreationInterface::addDictionaryEntry
virtual void addDictionaryEntry(const DL_DictionaryEntryData &data)=0
Called for dictionary entries.
DL_LinetypeData
Line Type Data.
Definition: dl_entities.h:89
DL_CreationInterface::addFitPoint
virtual void addFitPoint(const DL_FitPointData &data)=0
Called for every spline fit point.
DL_ArcData
Arc Data.
Definition: dl_entities.h:314
DL_DimLinearData
Linear (rotated) Dimension Data.
Definition: dl_entities.h:1053
DL_CreationInterface::addComment
virtual void addComment(const std::string &comment)=0
Called for every comment in the DXF file (code 999).
DL_CreationInterface::addRay
virtual void addRay(const DL_RayData &data)=0
Called for every ray.
DL_CreationInterface::addTrace
virtual void addTrace(const DL_TraceData &data)=0
Called for every trace start.
DL_TextData
Text Data.
Definition: dl_entities.h:795
DL_ImageData
Image Data.
Definition: dl_entities.h:1619
DL_CreationInterface::processCodeValuePair
virtual void processCodeValuePair(unsigned int groupCode, const std::string &groupValue)=0
Called for every code / value tuple of the DXF file.
DL_CreationInterface::addCircle
virtual void addCircle(const DL_CircleData &data)=0
Called for every circle.
DL_BlockData
Block Data.
Definition: dl_entities.h:58
DL_CreationInterface::endBlock
virtual void endBlock()=0
Called to end the current block.
DL_CreationInterface::addBlock
virtual void addBlock(const DL_BlockData &data)=0
Called for every block.
DL_CreationInterface::setExtrusion
void setExtrusion(double dx, double dy, double dz, double elevation)
Sets the current attributes for entities.
Definition: dl_creationinterface.h:351
DL_CreationInterface::endEntity
virtual void endEntity()=0
Called after an entity has been completed.
DL_CreationInterface::addHatchLoop
virtual void addHatchLoop(const DL_HatchLoopData &data)=0
Called for every hatch loop.
DL_CreationInterface::setVariableDouble
virtual void setVariableDouble(const std::string &key, double value, int code)=0
Called for every double variable in the DXF file (e.g.
DL_CreationInterface::addTextStyle
virtual void addTextStyle(const DL_StyleData &data)=0
Called for every text style.
DL_DimensionData
Generic Dimension Data.
Definition: dl_entities.h:906
DL_CreationInterface::addDimAlign
virtual void addDimAlign(const DL_DimensionData &data, const DL_DimAlignedData &edata)=0
Called for every aligned dimension entity.
DL_CreationInterface::setAttributes
void setAttributes(const DL_Attributes &attrib)
Sets the current attributes for entities.
Definition: dl_creationinterface.h:341
DL_CreationInterface::addDimLinear
virtual void addDimLinear(const DL_DimensionData &data, const DL_DimLinearData &edata)=0
Called for every linear or rotated dimension entity.
DL_Attributes
Storing and passing around attributes.
Definition: dl_attributes.h:41
DL_KnotData
Spline knot data.
Definition: dl_entities.h:551
DL_CreationInterface::addLeader
virtual void addLeader(const DL_LeaderData &data)=0
Called for every leader start.
DL_CreationInterface::addSpline
virtual void addSpline(const DL_SplineData &data)=0
Called for every spline.
DL_CreationInterface::getAttributes
DL_Attributes getAttributes()
Definition: dl_creationinterface.h:346
DL_CreationInterface::addMText
virtual void addMText(const DL_MTextData &data)=0
Called for every Multi Text entity.
DL_CreationInterface::addMTextChunk
virtual void addMTextChunk(const std::string &text)=0
Called for additional text chunks for MTEXT entities.
DL_CreationInterface::addDimRadial
virtual void addDimRadial(const DL_DimensionData &data, const DL_DimRadialData &edata)=0
Called for every radial dimension entity.
DL_CreationInterface::addDictionary
virtual void addDictionary(const DL_DictionaryData &data)=0
Called for dictionary objects.
DL_CreationInterface
Abstract class (interface) for the creation of new entities.
Definition: dl_creationinterface.h:47
DL_PointData
Point Data.
Definition: dl_entities.h:196
DL_CreationInterface::addXDataInt
virtual void addXDataInt(int code, int value)=0
Called for XData tuples.
DL_CreationInterface::addLeaderVertex
virtual void addLeaderVertex(const DL_LeaderVertexData &data)=0
Called for every leader vertex.
DL_CreationInterface::getExtrusion
DL_Extrusion * getExtrusion()
Definition: dl_creationinterface.h:357
DL_CreationInterface::addLine
virtual void addLine(const DL_LineData &data)=0
Called for every line.
DL_CreationInterface::addDimDiametric
virtual void addDimDiametric(const DL_DimensionData &data, const DL_DimDiametricData &edata)=0
Called for every diametric dimension entity.
DL_DimOrdinateData
Ordinate Dimension Data.
Definition: dl_entities.h:1266
DL_AttributeData
Block attribute data.
Definition: dl_entities.h:866
DL_CreationInterface::addXRecordReal
virtual void addXRecordReal(int code, double value)=0
Called for XRecords of type double.
DL_CreationInterface::addVertex
virtual void addVertex(const DL_VertexData &data)=0
Called for every polyline vertex.
DL_Extrusion
Storing and passing around attributes.
Definition: dl_extrusion.h:39
DL_CreationInterface::addXRecordBool
virtual void addXRecordBool(int code, bool value)=0
Called for XRecords of type bool.
DL_CreationInterface::addXDataString
virtual void addXDataString(int code, const std::string &value)=0
Called for XData tuples.
DL_ControlPointData
Spline control point data.
Definition: dl_entities.h:570
DL_CreationInterface::addControlPoint
virtual void addControlPoint(const DL_ControlPointData &data)=0
Called for every spline control point.
DL_CreationInterface::addXLine
virtual void addXLine(const DL_XLineData &data)=0
Called for every xline.
DL_HatchEdgeData
Hatch edge data.
Definition: dl_entities.h:1449
DL_CreationInterface::addDimAngular
virtual void addDimAngular(const DL_DimensionData &data, const DL_DimAngularData &edata)=0
Called for every angular dimension (2 lines version) entity.
DL_DimAngularData
Angular Dimension Data.
Definition: dl_entities.h:1157
DL_DimAlignedData
Aligned Dimension Data.
Definition: dl_entities.h:1016
DL_CreationInterface::addDimAngular3P
virtual void addDimAngular3P(const DL_DimensionData &data, const DL_DimAngular3PData &edata)=0
Called for every angular dimension (3 points version) entity.
DL_LayerData
Layer Data.
Definition: dl_entities.h:36
DL_RayData
Ray Data.
Definition: dl_entities.h:283
DL_InsertData
Insert Data.
Definition: dl_entities.h:664
DL_CreationInterface::endSequence
virtual void endSequence()=0
Called when a SEQEND occurs (when a POLYLINE or ATTRIB is done)
DL_CreationInterface::addKnot
virtual void addKnot(const DL_KnotData &data)=0
Called for every spline knot value.
DL_CreationInterface::addXDataApp
virtual void addXDataApp(const std::string &appId)=0
Called for every beginning of an XData section of the given application.
DL_XLineData
XLine Data.
Definition: dl_entities.h:254
DL_TraceData
Trace Data / solid data / 3d face data.
Definition: dl_entities.h:439
DL_DimDiametricData
Diametric Dimension Data.
Definition: dl_entities.h:1128