QGIS/external/libdxfrw/drw_interface.h

179 lines
6.0 KiB
C
Raw Normal View History

/******************************************************************************
** libDXFrw - Library to read/write DXF files (ascii & binary) **
** **
** Copyright (C) 2011-2015 José F. Soriano, rallazz@gmail.com **
** **
** This library is free software, licensed under the terms of the GNU **
** General Public License as published by the Free Software Foundation, **
** either version 2 of the License, or (at your option) any later version. **
** You should have received a copy of the GNU General Public License **
** along with this program. If not, see <http://www.gnu.org/licenses/>. **
******************************************************************************/
#ifndef DRW_INTERFACE_H
#define DRW_INTERFACE_H
#include <cstring>
#include "drw_entities.h"
#include "drw_objects.h"
#include "drw_header.h"
/**
* Abstract class (interface) for comunicate dxfReader with the application.
* Inherit your class which takes care of the entities in the
* processed DXF file from this interface.
*
* @author Rallaz
*/
class DRW_Interface
{
public:
DRW_Interface()
{
}
virtual ~DRW_Interface()
{
}
2016-12-26 23:28:10 +01:00
//! Called when header is parsed.
2017-03-03 08:42:00 +01:00
virtual void addHeader( const DRW_Header *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every line Type.
2017-03-03 08:42:00 +01:00
virtual void addLType( const DRW_LType &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every layer.
2017-03-03 08:42:00 +01:00
virtual void addLayer( const DRW_Layer &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every dim style.
2017-03-03 08:42:00 +01:00
virtual void addDimStyle( const DRW_Dimstyle &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every VPORT table.
2017-03-03 08:42:00 +01:00
virtual void addVport( const DRW_Vport &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every text style.
2017-03-03 08:42:00 +01:00
virtual void addTextStyle( const DRW_Textstyle &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every AppId entry.
2017-03-03 08:42:00 +01:00
virtual void addAppId( const DRW_AppId &data ) = 0;
/**
* Called for every block. Note: all entities added after this
* command go into this block until endBlock() is called.
*
2017-04-03 10:32:35 +10:00
* \see endBlock()
*/
2017-03-03 08:42:00 +01:00
virtual void addBlock( const DRW_Block &data ) = 0;
/**
* In DWG called when the following entities corresponding to a
* block different from the current. Note: all entities added after this
* command go into this block until setBlock() is called already.
*
* int handle are the value of DRW_Block::handleBlock added with addBlock()
*/
virtual void setBlock( int handle ) = 0;
2016-12-26 23:28:10 +01:00
//! Called to end the current block
virtual void endBlock() = 0;
2016-12-26 23:28:10 +01:00
//! Called for every point
2017-03-03 08:42:00 +01:00
virtual void addPoint( const DRW_Point &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every line
2017-03-03 08:42:00 +01:00
virtual void addLine( const DRW_Line &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every ray
2017-03-03 08:42:00 +01:00
virtual void addRay( const DRW_Ray &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every xline
2017-03-03 08:42:00 +01:00
virtual void addXline( const DRW_Xline &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every arc
2017-03-03 08:42:00 +01:00
virtual void addArc( const DRW_Arc &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every circle
2017-03-03 08:42:00 +01:00
virtual void addCircle( const DRW_Circle &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every ellipse
2017-03-03 08:42:00 +01:00
virtual void addEllipse( const DRW_Ellipse &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every lwpolyline
2017-03-03 08:42:00 +01:00
virtual void addLWPolyline( const DRW_LWPolyline &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every polyline start
2017-03-03 08:42:00 +01:00
virtual void addPolyline( const DRW_Polyline &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every spline
2017-03-03 08:42:00 +01:00
virtual void addSpline( const DRW_Spline *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every spline knot value
2017-03-03 08:42:00 +01:00
virtual void addKnot( const DRW_Entity &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every insert.
2017-03-03 08:42:00 +01:00
virtual void addInsert( const DRW_Insert &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every trace start
2017-03-03 08:42:00 +01:00
virtual void addTrace( const DRW_Trace &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every 3dface start
2017-03-03 08:42:00 +01:00
virtual void add3dFace( const DRW_3Dface &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every solid start
2017-03-03 08:42:00 +01:00
virtual void addSolid( const DRW_Solid &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every Multi Text entity.
2017-03-03 08:42:00 +01:00
virtual void addMText( const DRW_MText &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every Text entity.
2017-03-03 08:42:00 +01:00
virtual void addText( const DRW_Text &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every aligned dimension entity.
virtual void addDimAlign( const DRW_DimAligned *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every linear or rotated dimension entity.
virtual void addDimLinear( const DRW_DimLinear *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every radial dimension entity.
virtual void addDimRadial( const DRW_DimRadial *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every diametric dimension entity.
virtual void addDimDiametric( const DRW_DimDiametric *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every angular dimension (2 lines version) entity.
virtual void addDimAngular( const DRW_DimAngular *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every angular dimension (3 points version) entity.
virtual void addDimAngular3P( const DRW_DimAngular3p *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every ordinate dimension entity.
virtual void addDimOrdinate( const DRW_DimOrdinate *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every leader start.
virtual void addLeader( const DRW_Leader *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every hatch entity.
virtual void addHatch( const DRW_Hatch *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every viewport entity.
2017-03-03 08:42:00 +01:00
virtual void addViewport( const DRW_Viewport &data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every image entity.
virtual void addImage( const DRW_Image *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every image definition.
virtual void linkImage( const DRW_ImageDef *data ) = 0;
2016-12-26 23:28:10 +01:00
//! Called for every comment in the DXF file (code 999).
2017-03-03 08:42:00 +01:00
virtual void addComment( const char *comment ) = 0;
2017-03-03 08:42:00 +01:00
virtual void writeHeader( DRW_Header &data ) = 0;
virtual void writeBlocks() = 0;
virtual void writeBlockRecords() = 0;
virtual void writeEntities() = 0;
virtual void writeLTypes() = 0;
virtual void writeLayers() = 0;
virtual void writeTextstyles() = 0;
virtual void writeVports() = 0;
virtual void writeDimstyles() = 0;
virtual void writeAppId() = 0;
};
#endif