~librecad-dev/librecad/librecad

« back to all changes in this revision

Viewing changes to libraries/libdxfrw/src/drw_interface.h

  • Committer: Scott Howard
  • Date: 2014-02-21 19:07:55 UTC
  • Revision ID: showard@debian.org-20140221190755-csjax9wb146hgdq4
first commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
**  libDXFrw - Library to read/write DXF files (ascii & binary)              **
 
3
**                                                                           **
 
4
**  Copyright (C) 2011 Rallaz, rallazz@gmail.com                             **
 
5
**                                                                           **
 
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
******************************************************************************/
 
12
 
 
13
#ifndef DRW_INTERFACE_H
 
14
#define DRW_INTERFACE_H
 
15
 
 
16
#include <string.h>
 
17
 
 
18
#include "drw_entities.h"
 
19
#include "drw_objects.h"
 
20
//#include "dl_extrusion.h"
 
21
 
 
22
/**
 
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. 
 
26
 *
 
27
 * @author Rallaz
 
28
 */
 
29
class DRW_Interface {
 
30
public:
 
31
    DRW_Interface() {
 
32
//        extrusion = new DL_Extrusion;
 
33
    }
 
34
    virtual ~DRW_Interface() {
 
35
//        delete extrusion;
 
36
    }
 
37
 
 
38
    /** Called when header is parsed.  */
 
39
    virtual void addHeader(const DRW_Header* data) = 0;
 
40
 
 
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;
 
51
 
 
52
    /**
 
53
     * Called for every block. Note: all entities added after this
 
54
     * command go into this block until endBlock() is called.
 
55
     *
 
56
     * @see endBlock()
 
57
     */
 
58
    virtual void addBlock(const DRW_Block& data) = 0;
 
59
 
 
60
    /**
 
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.
 
64
     *
 
65
     * int handle are the value of DRW_Block::handleBlock added with addBlock()
 
66
     */
 
67
    virtual void setBlock(const int handle) = 0;
 
68
 
 
69
    /** Called to end the current block */
 
70
    virtual void endBlock() = 0;
 
71
 
 
72
    /** Called for every point */
 
73
    virtual void addPoint(const DRW_Point& data) = 0;
 
74
 
 
75
    /** Called for every line */
 
76
    virtual void addLine(const DRW_Line& data) = 0;
 
77
 
 
78
    /** Called for every ray */
 
79
    virtual void addRay(const DRW_Ray& data) = 0;
 
80
 
 
81
    /** Called for every xline */
 
82
    virtual void addXline(const DRW_Xline& data) = 0;
 
83
 
 
84
    /** Called for every arc */
 
85
    virtual void addArc(const DRW_Arc& data) = 0;
 
86
 
 
87
    /** Called for every circle */
 
88
    virtual void addCircle(const DRW_Circle& data) = 0;
 
89
 
 
90
    /** Called for every ellipse */
 
91
    virtual void addEllipse(const DRW_Ellipse& data) = 0;
 
92
 
 
93
    /** Called for every lwpolyline */
 
94
    virtual void addLWPolyline(const DRW_LWPolyline& data) = 0;
 
95
 
 
96
    /** Called for every polyline start */
 
97
    virtual void addPolyline(const DRW_Polyline& data) = 0;
 
98
 
 
99
    /** Called for every spline */
 
100
    virtual void addSpline(const DRW_Spline* data) = 0;
 
101
        
 
102
        /** Called for every spline knot value */
 
103
    virtual void addKnot(const DRW_Entity& data) = 0;
 
104
 
 
105
    /** Called for every insert. */
 
106
    virtual void addInsert(const DRW_Insert& data) = 0;
 
107
    
 
108
    /** Called for every trace start */
 
109
    virtual void addTrace(const DRW_Trace& data) = 0;
 
110
    
 
111
    /** Called for every 3dface start */
 
112
    virtual void add3dFace(const DRW_3Dface& data) = 0;
 
113
 
 
114
    /** Called for every solid start */
 
115
    virtual void addSolid(const DRW_Solid& data) = 0;
 
116
 
 
117
 
 
118
    /** Called for every Multi Text entity. */
 
119
    virtual void addMText(const DRW_MText& data) = 0;
 
120
 
 
121
    /** Called for every Text entity. */
 
122
    virtual void addText(const DRW_Text& data) = 0;
 
123
 
 
124
    /**
 
125
     * Called for every aligned dimension entity. 
 
126
     */
 
127
    virtual void addDimAlign(const DRW_DimAligned *data) = 0;
 
128
    /**
 
129
     * Called for every linear or rotated dimension entity. 
 
130
     */
 
131
    virtual void addDimLinear(const DRW_DimLinear *data) = 0;
 
132
 
 
133
        /**
 
134
     * Called for every radial dimension entity. 
 
135
     */
 
136
    virtual void addDimRadial(const DRW_DimRadial *data) = 0;
 
137
 
 
138
        /**
 
139
     * Called for every diametric dimension entity. 
 
140
     */
 
141
    virtual void addDimDiametric(const DRW_DimDiametric *data) = 0;
 
142
 
 
143
        /**
 
144
     * Called for every angular dimension (2 lines version) entity. 
 
145
     */
 
146
    virtual void addDimAngular(const DRW_DimAngular *data) = 0;
 
147
 
 
148
        /**
 
149
     * Called for every angular dimension (3 points version) entity. 
 
150
     */
 
151
    virtual void addDimAngular3P(const DRW_DimAngular3p *data) = 0;
 
152
        
 
153
    /**
 
154
     * Called for every ordinate dimension entity. 
 
155
     */
 
156
    virtual void addDimOrdinate(const DRW_DimOrdinate *data) = 0;
 
157
    
 
158
    /** 
 
159
         * Called for every leader start. 
 
160
         */
 
161
    virtual void addLeader(const DRW_Leader *data) = 0;
 
162
        
 
163
        /** 
 
164
         * Called for every hatch entity. 
 
165
         */
 
166
    virtual void addHatch(const DRW_Hatch *data) = 0;
 
167
        
 
168
    /**
 
169
     * Called for every viewport entity.
 
170
     */
 
171
    virtual void addViewport(const DRW_Viewport& data) = 0;
 
172
 
 
173
    /**
 
174
         * Called for every image entity. 
 
175
         */
 
176
    virtual void addImage(const DRW_Image *data) = 0;
 
177
 
 
178
        /**
 
179
         * Called for every image definition.
 
180
         */
 
181
    virtual void linkImage(const DRW_ImageDef *data) = 0;
 
182
 
 
183
    /**
 
184
     * Called for every comment in the DXF file (code 999).
 
185
     */
 
186
    virtual void addComment(const char* comment) = 0;
 
187
 
 
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);
 
192
    }*/
 
193
 
 
194
    /** @return the current attributes used for new entities. */
 
195
//    DL_Extrusion* getExtrusion() {
 
196
//        return extrusion;
 
197
//    }
 
198
 
 
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;
 
208
protected:
 
209
//    DL_Attributes attributes;
 
210
//    DL_Extrusion *extrusion;
 
211
};
 
212
 
 
213
#endif