1
/******************************************************************************
2
** libDXFrw - Library to read/write DXF files (ascii & binary) **
4
** Copyright (C) 2011 Rallaz, rallazz@gmail.com **
6
** This library is free software, licensed under the terms of the GNU **
7
** General Public License as published by the Free Software Foundation, **
8
** either version 2 of the License, or (at your option) any later version. **
9
** You should have received a copy of the GNU General Public License **
10
** along with this program. If not, see <http://www.gnu.org/licenses/>. **
11
******************************************************************************/
13
#ifndef DRW_INTERFACE_H
14
#define DRW_INTERFACE_H
18
#include "drw_entities.h"
19
#include "drw_objects.h"
20
//#include "dl_extrusion.h"
23
* Abstract class (interface) for comunicate dxfReader with the application.
24
* Inherit your class which takes care of the entities in the
25
* processed DXF file from this interface.
32
// extrusion = new DL_Extrusion;
34
virtual ~DRW_Interface() {
38
/** Called when header is parsed. */
39
virtual void addHeader(const DRW_Header* data) = 0;
41
/** Called for every line Type. */
42
virtual void addLType(const DRW_LType& data) = 0;
43
/** Called for every layer. */
44
virtual void addLayer(const DRW_Layer& data) = 0;
45
/** Called for every dim style. */
46
virtual void addDimStyle(const DRW_Dimstyle& data) = 0;
47
/** Called for every VPORT table. */
48
virtual void addVport(const DRW_Vport& data) = 0;
49
/** Called for every text style. */
50
virtual void addTextStyle(const DRW_Textstyle& data) = 0;
53
* Called for every block. Note: all entities added after this
54
* command go into this block until endBlock() is called.
58
virtual void addBlock(const DRW_Block& data) = 0;
61
* In DWG called when the following entities corresponding to a
62
* block different from the current. Note: all entities added after this
63
* command go into this block until setBlock() is called already.
65
* int handle are the value of DRW_Block::handleBlock added with addBlock()
67
virtual void setBlock(const int handle) = 0;
69
/** Called to end the current block */
70
virtual void endBlock() = 0;
72
/** Called for every point */
73
virtual void addPoint(const DRW_Point& data) = 0;
75
/** Called for every line */
76
virtual void addLine(const DRW_Line& data) = 0;
78
/** Called for every ray */
79
virtual void addRay(const DRW_Ray& data) = 0;
81
/** Called for every xline */
82
virtual void addXline(const DRW_Xline& data) = 0;
84
/** Called for every arc */
85
virtual void addArc(const DRW_Arc& data) = 0;
87
/** Called for every circle */
88
virtual void addCircle(const DRW_Circle& data) = 0;
90
/** Called for every ellipse */
91
virtual void addEllipse(const DRW_Ellipse& data) = 0;
93
/** Called for every lwpolyline */
94
virtual void addLWPolyline(const DRW_LWPolyline& data) = 0;
96
/** Called for every polyline start */
97
virtual void addPolyline(const DRW_Polyline& data) = 0;
99
/** Called for every spline */
100
virtual void addSpline(const DRW_Spline* data) = 0;
102
/** Called for every spline knot value */
103
virtual void addKnot(const DRW_Entity& data) = 0;
105
/** Called for every insert. */
106
virtual void addInsert(const DRW_Insert& data) = 0;
108
/** Called for every trace start */
109
virtual void addTrace(const DRW_Trace& data) = 0;
111
/** Called for every 3dface start */
112
virtual void add3dFace(const DRW_3Dface& data) = 0;
114
/** Called for every solid start */
115
virtual void addSolid(const DRW_Solid& data) = 0;
118
/** Called for every Multi Text entity. */
119
virtual void addMText(const DRW_MText& data) = 0;
121
/** Called for every Text entity. */
122
virtual void addText(const DRW_Text& data) = 0;
125
* Called for every aligned dimension entity.
127
virtual void addDimAlign(const DRW_DimAligned *data) = 0;
129
* Called for every linear or rotated dimension entity.
131
virtual void addDimLinear(const DRW_DimLinear *data) = 0;
134
* Called for every radial dimension entity.
136
virtual void addDimRadial(const DRW_DimRadial *data) = 0;
139
* Called for every diametric dimension entity.
141
virtual void addDimDiametric(const DRW_DimDiametric *data) = 0;
144
* Called for every angular dimension (2 lines version) entity.
146
virtual void addDimAngular(const DRW_DimAngular *data) = 0;
149
* Called for every angular dimension (3 points version) entity.
151
virtual void addDimAngular3P(const DRW_DimAngular3p *data) = 0;
154
* Called for every ordinate dimension entity.
156
virtual void addDimOrdinate(const DRW_DimOrdinate *data) = 0;
159
* Called for every leader start.
161
virtual void addLeader(const DRW_Leader *data) = 0;
164
* Called for every hatch entity.
166
virtual void addHatch(const DRW_Hatch *data) = 0;
169
* Called for every viewport entity.
171
virtual void addViewport(const DRW_Viewport& data) = 0;
174
* Called for every image entity.
176
virtual void addImage(const DRW_Image *data) = 0;
179
* Called for every image definition.
181
virtual void linkImage(const DRW_ImageDef *data) = 0;
184
* Called for every comment in the DXF file (code 999).
186
virtual void addComment(const char* comment) = 0;
188
/** Sets the current attributes for entities. */
189
/* void setExtrusion(double dx, double dy, double dz, double elevation) {
190
extrusion->setDirection(dx, dy, dz);
191
extrusion->setElevation(elevation);
194
/** @return the current attributes used for new entities. */
195
// DL_Extrusion* getExtrusion() {
199
virtual void writeHeader(DRW_Header& data) = 0;
200
virtual void writeBlocks() = 0;
201
virtual void writeBlockRecords() = 0;
202
virtual void writeEntities() = 0;
203
virtual void writeLTypes() = 0;
204
virtual void writeLayers() = 0;
205
virtual void writeTextstyles() = 0;
206
virtual void writeVports() = 0;
207
virtual void writeDimstyles() = 0;
209
// DL_Attributes attributes;
210
// DL_Extrusion *extrusion;