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 DWGREADER21_H 14 #define DWGREADER21_H 15 16 #include <map> 17 #include <list> 18 #include "drw_textcodec.h" 19 #include "dwgbuffer.h" 20 #include "dwgreader.h" 21 22 //reader for AC1021 aka v2007, chapter 5 23 class dwgReader21 : public dwgReader { 24 public: dwgReader21(std::istream * stream,dwgR * p)25 dwgReader21(std::istream *stream, dwgR *p):dwgReader(stream, p){ 26 objData = NULL; 27 dataSize = 0; 28 } ~dwgReader21()29 virtual ~dwgReader21(){ 30 if (objData != NULL) 31 delete[] objData; 32 } 33 bool readMetaData(); 34 bool readFileHeader(); 35 bool readDwgHeader(DRW_Header& hdr); 36 bool readDwgClasses(); 37 bool readDwgHandles(); 38 bool readDwgTables(DRW_Header& hdr); 39 bool readDwgBlocks(DRW_Interface& intfa); readDwgEntities(DRW_Interface & intfa)40 virtual bool readDwgEntities(DRW_Interface& intfa){ 41 bool ret = true; 42 dwgBuffer dataBuf(objData, dataSize, &decoder); 43 ret = dwgReader::readDwgEntities(intfa, &dataBuf); 44 return ret; 45 } readDwgObjects(DRW_Interface & intfa)46 virtual bool readDwgObjects(DRW_Interface& intfa){ 47 bool ret = true; 48 dwgBuffer dataBuf(objData, dataSize, &decoder); 49 ret = dwgReader::readDwgObjects(intfa, &dataBuf); 50 return ret; 51 } 52 //bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){ 53 // return false; 54 //} 55 56 private: 57 bool parseSysPage(duint64 sizeCompressed, duint64 sizeUncompressed, duint64 correctionFactor, duint64 offset, duint8 *decompData); 58 bool parseDataPage(dwgSectionInfo si, duint8 *dData); 59 60 duint8 *objData; 61 duint64 dataSize; 62 63 }; 64 65 #endif // DWGREADER21_H 66