1 /****************************************************************************** 2 ** libDXFrw - Library to read/write DXF files (ascii & binary) ** 3 ** ** 4 ** Copyright (C) 2011-2015 José F. Soriano, 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 <cstring> 17 18 #include "drw_entities.h" 19 #include "drw_objects.h" 20 #include "drw_header.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 { 31 public: DRW_Interface()32 DRW_Interface() 33 { 34 } ~DRW_Interface()35 virtual ~DRW_Interface() 36 { 37 } 38 39 //! Called when header is parsed. 40 virtual void addHeader( const DRW_Header *data ) = 0; 41 42 //! Called for every line Type. 43 virtual void addLType( const DRW_LType &data ) = 0; 44 //! Called for every layer. 45 virtual void addLayer( const DRW_Layer &data ) = 0; 46 //! Called for every dim style. 47 virtual void addDimStyle( const DRW_Dimstyle &data ) = 0; 48 //! Called for every VPORT table. 49 virtual void addVport( const DRW_Vport &data ) = 0; 50 //! Called for every text style. 51 virtual void addTextStyle( const DRW_Textstyle &data ) = 0; 52 //! Called for every AppId entry. 53 virtual void addAppId( const DRW_AppId &data ) = 0; 54 55 /** 56 * Called for every block. Note: all entities added after this 57 * command go into this block until endBlock() is called. 58 * 59 * \see endBlock() 60 */ 61 virtual void addBlock( const DRW_Block &data ) = 0; 62 63 /** 64 * In DWG called when the following entities corresponding to a 65 * block different from the current. Note: all entities added after this 66 * command go into this block until setBlock() is called already. 67 * 68 * int handle are the value of DRW_Block::handleBlock added with addBlock() 69 */ 70 virtual void setBlock( int handle ) = 0; 71 72 //! Called to end the current block 73 virtual void endBlock() = 0; 74 75 //! Called for every point 76 virtual void addPoint( const DRW_Point &data ) = 0; 77 78 //! Called for every line 79 virtual void addLine( const DRW_Line &data ) = 0; 80 81 //! Called for every ray 82 virtual void addRay( const DRW_Ray &data ) = 0; 83 84 //! Called for every xline 85 virtual void addXline( const DRW_Xline &data ) = 0; 86 87 //! Called for every arc 88 virtual void addArc( const DRW_Arc &data ) = 0; 89 90 //! Called for every circle 91 virtual void addCircle( const DRW_Circle &data ) = 0; 92 93 //! Called for every ellipse 94 virtual void addEllipse( const DRW_Ellipse &data ) = 0; 95 96 //! Called for every lwpolyline 97 virtual void addLWPolyline( const DRW_LWPolyline &data ) = 0; 98 99 //! Called for every polyline start 100 virtual void addPolyline( const DRW_Polyline &data ) = 0; 101 102 //! Called for every spline 103 virtual void addSpline( const DRW_Spline *data ) = 0; 104 105 //! Called for every spline knot value 106 virtual void addKnot( const DRW_Entity &data ) = 0; 107 108 //! Called for every insert. 109 virtual void addInsert( const DRW_Insert &data ) = 0; 110 111 //! Called for every trace start 112 virtual void addTrace( const DRW_Trace &data ) = 0; 113 114 //! Called for every 3dface start 115 virtual void add3dFace( const DRW_3Dface &data ) = 0; 116 117 //! Called for every solid start 118 virtual void addSolid( const DRW_Solid &data ) = 0; 119 120 121 //! Called for every Multi Text entity. 122 virtual void addMText( const DRW_MText &data ) = 0; 123 124 //! Called for every Text entity. 125 virtual void addText( const DRW_Text &data ) = 0; 126 127 //! Called for every aligned dimension entity. 128 virtual void addDimAlign( const DRW_DimAligned *data ) = 0; 129 130 //! Called for every linear or rotated dimension entity. 131 virtual void addDimLinear( const DRW_DimLinear *data ) = 0; 132 133 //! Called for every radial dimension entity. 134 virtual void addDimRadial( const DRW_DimRadial *data ) = 0; 135 136 //! Called for every diametric dimension entity. 137 virtual void addDimDiametric( const DRW_DimDiametric *data ) = 0; 138 139 //! Called for every angular dimension (2 lines version) entity. 140 virtual void addDimAngular( const DRW_DimAngular *data ) = 0; 141 142 //! Called for every angular dimension (3 points version) entity. 143 virtual void addDimAngular3P( const DRW_DimAngular3p *data ) = 0; 144 145 //! Called for every ordinate dimension entity. 146 virtual void addDimOrdinate( const DRW_DimOrdinate *data ) = 0; 147 148 //! Called for every leader start. 149 virtual void addLeader( const DRW_Leader *data ) = 0; 150 151 //! Called for every hatch entity. 152 virtual void addHatch( const DRW_Hatch *data ) = 0; 153 154 //! Called for every viewport entity. 155 virtual void addViewport( const DRW_Viewport &data ) = 0; 156 157 //! Called for every image entity. 158 virtual void addImage( const DRW_Image *data ) = 0; 159 160 //! Called for every image definition. 161 virtual void linkImage( const DRW_ImageDef *data ) = 0; 162 163 //! Called for every comment in the DXF file (code 999). 164 virtual void addComment( const char *comment ) = 0; 165 166 virtual void writeHeader( DRW_Header &data ) = 0; 167 virtual void writeBlocks() = 0; 168 virtual void writeBlockRecords() = 0; 169 virtual void writeEntities() = 0; 170 virtual void writeLTypes() = 0; 171 virtual void writeLayers() = 0; 172 virtual void writeTextstyles() = 0; 173 virtual void writeVports() = 0; 174 virtual void writeDimstyles() = 0; 175 virtual void writeAppId() = 0; 176 }; 177 178 #endif 179