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