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