summaryrefslogtreecommitdiff
path: root/lib_dxf/libdxfrw.h
diff options
context:
space:
mode:
authorsaurabhb172020-02-26 16:14:17 +0530
committerGitHub2020-02-26 16:14:17 +0530
commit003d02608917e7a69d1a98438837e94ccf68352a (patch)
tree1392c90227aeea231c1d86371131e04c40382918 /lib_dxf/libdxfrw.h
parent886d9cb772e81d2e5262284bc3082664f084337f (diff)
parente255d0622297488c1c52755be670733418c994cf (diff)
downloadKiCad-eSim-003d02608917e7a69d1a98438837e94ccf68352a.tar.gz
KiCad-eSim-003d02608917e7a69d1a98438837e94ccf68352a.tar.bz2
KiCad-eSim-003d02608917e7a69d1a98438837e94ccf68352a.zip
Merge pull request #3 from saurabhb17/master
secondary files
Diffstat (limited to 'lib_dxf/libdxfrw.h')
-rw-r--r--lib_dxf/libdxfrw.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/lib_dxf/libdxfrw.h b/lib_dxf/libdxfrw.h
new file mode 100644
index 0000000..c37dcb2
--- /dev/null
+++ b/lib_dxf/libdxfrw.h
@@ -0,0 +1,147 @@
+/******************************************************************************
+** libDXFrw - Library to read/write DXF files (ascii & binary) **
+** **
+** Copyright (C) 2011 Rallaz, 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 LIBDXFRW_H
+#define LIBDXFRW_H
+
+#include <string>
+#include "drw_entities.h"
+#include "drw_objects.h"
+#include "drw_interface.h"
+
+
+class dxfReader;
+class dxfWriter;
+
+class dxfRW
+{
+public:
+ dxfRW( const char* name );
+ ~dxfRW();
+ /// reads the file specified in constructor
+ /*!
+ * An interface must be provided. It is used by the class to signal various
+ * components being added.
+ * @param interface_ the interface to use
+ * @param ext should the extrusion be applied to convert in 2D?
+ * @return true for success
+ */
+ bool read( DRW_Interface* interface_, bool ext );
+
+ void setBinary( bool b ) { binary = b; }
+
+ bool write( DRW_Interface* interface_, DRW::Version ver, bool bin );
+ bool writeLineType( DRW_LType* ent );
+ bool writeLayer( DRW_Layer* ent );
+ bool writeDimstyle( DRW_Dimstyle* ent );
+ bool writeTextstyle( DRW_Textstyle* ent );
+ bool writeVport( DRW_Vport* ent );
+ bool writeAppId( DRW_AppId* ent );
+ bool writePoint( DRW_Point* ent );
+ bool writeLine( DRW_Line* ent );
+ bool writeRay( DRW_Ray* ent );
+ bool writeXline( DRW_Xline* ent );
+ bool writeCircle( DRW_Circle* ent );
+ bool writeArc( DRW_Arc* ent );
+ bool writeEllipse( DRW_Ellipse* ent );
+ bool writeTrace( DRW_Trace* ent );
+ bool writeSolid( DRW_Solid* ent );
+ bool write3dface( DRW_3Dface* ent );
+ bool writeLWPolyline( DRW_LWPolyline* ent );
+ bool writePolyline( DRW_Polyline* ent );
+ bool writeSpline( DRW_Spline* ent );
+ bool writeBlockRecord( std::string name );
+ bool writeBlock( DRW_Block* ent );
+ bool writeInsert( DRW_Insert* ent );
+ bool writeMText( DRW_MText* ent );
+ bool writeText( DRW_Text* ent );
+ bool writeHatch( DRW_Hatch* ent );
+ bool writeViewport( DRW_Viewport* ent );
+ DRW_ImageDef* writeImage( DRW_Image* ent, std::string name );
+ bool writeLeader( DRW_Leader* ent );
+ bool writeDimension( DRW_Dimension* ent );
+
+ void setEllipseParts( int parts ) { elParts = parts; } /*!< set parts munber when convert ellipse to polyline */
+
+private:
+ /// used by read() to parse the content of the file
+ bool processDxf();
+ bool processHeader();
+ bool processTables();
+ bool processBlocks();
+ bool processBlock();
+ bool processEntities( bool isblock );
+ bool processObjects();
+
+ bool processLType();
+ bool processLayer();
+ bool processDimStyle();
+ bool processTextStyle();
+ bool processVports();
+ bool processAppId();
+
+ bool processPoint();
+ bool processLine();
+ bool processRay();
+ bool processXline();
+ bool processCircle();
+ bool processArc();
+ bool processEllipse();
+ bool processTrace();
+ bool processSolid();
+ bool processInsert();
+ bool processLWPolyline();
+ bool processPolyline();
+ bool processVertex( DRW_Polyline* pl );
+ bool processText();
+ bool processMText();
+ bool processHatch();
+ bool processSpline();
+ bool process3dface();
+ bool processViewport();
+ bool processImage();
+ bool processImageDef();
+ bool processDimension();
+ bool processLeader();
+
+// bool writeHeader();
+ bool writeEntity( DRW_Entity* ent );
+ bool writeTables();
+ bool writeBlocks();
+ bool writeObjects();
+ bool writeExtData( const std::vector<DRW_Variant*>& ed );
+ std::string toHexStr( int n );
+
+private:
+ DRW::Version version;
+ std::string fileName;
+ std::string codePage;
+ bool binary;
+ dxfReader* reader;
+ dxfWriter* writer;
+ DRW_Interface* iface;
+ DRW_Header header;
+// int section;
+ std::string nextentity;
+ int entCount;
+ bool wlayer0;
+ bool dimstyleStd;
+ bool applyExt;
+ bool writingBlock;
+ int elParts; /*!< parts munber when convert ellipse to polyline */
+ std::map<std::string, int> blockMap;
+ std::vector<DRW_ImageDef*> imageDef; /*!< imageDef list */
+
+ int currHandle;
+};
+
+#endif // LIBDXFRW_H