Go to the documentation of this file.
10 #ifndef __VSDPARSER_H__
11 #define __VSDPARSER_H__
19 #include <librevenge/librevenge.h>
50 explicit VSDParser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter, librevenge::RVNGInputStream *container =
nullptr);
59 void readEllipse(librevenge::RVNGInputStream *input);
60 virtual void readLine(librevenge::RVNGInputStream *input);
62 virtual void readGeomList(librevenge::RVNGInputStream *input);
64 void readMoveTo(librevenge::RVNGInputStream *input);
65 void readLineTo(librevenge::RVNGInputStream *input);
66 void readArcTo(librevenge::RVNGInputStream *input);
67 void readNURBSTo(librevenge::RVNGInputStream *input);
72 virtual void readXForm1D(librevenge::RVNGInputStream *input);
74 void readShapeId(librevenge::RVNGInputStream *input);
75 virtual void readShapeList(librevenge::RVNGInputStream *input);
78 virtual void readShape(librevenge::RVNGInputStream *input);
79 void readColours(librevenge::RVNGInputStream *input);
80 void readFont(librevenge::RVNGInputStream *input);
81 void readFontIX(librevenge::RVNGInputStream *input);
82 virtual void readCharList(librevenge::RVNGInputStream *input);
83 virtual void readParaList(librevenge::RVNGInputStream *input);
84 virtual void readPropList(librevenge::RVNGInputStream *input);
85 virtual void readPage(librevenge::RVNGInputStream *input);
86 virtual void readText(librevenge::RVNGInputStream *input);
87 virtual void readCharIX(librevenge::RVNGInputStream *input);
88 virtual void readParaIX(librevenge::RVNGInputStream *input);
89 virtual void readTextBlock(librevenge::RVNGInputStream *input);
91 virtual void readTabsData(librevenge::RVNGInputStream *input);
94 virtual void readName(librevenge::RVNGInputStream *input);
96 virtual void readNameList2(librevenge::RVNGInputStream *input);
97 virtual void readName2(librevenge::RVNGInputStream *input);
99 virtual void readFieldList(librevenge::RVNGInputStream *input);
100 virtual void readTextField(librevenge::RVNGInputStream *input);
110 void readOLEList(librevenge::RVNGInputStream *input);
111 void readOLEData(librevenge::RVNGInputStream *input);
113 virtual void readNameIDX(librevenge::RVNGInputStream *input);
116 virtual void readMisc(librevenge::RVNGInputStream *input);
118 virtual void readLayerList(librevenge::RVNGInputStream *input);
119 virtual void readLayer(librevenge::RVNGInputStream *input);
120 virtual void readLayerMem(librevenge::RVNGInputStream *input);
123 bool parseDocument(librevenge::RVNGInputStream *input,
unsigned shift);
128 void handleStreams(librevenge::RVNGInputStream *input,
unsigned ptrType,
unsigned shift,
unsigned level, std::set<unsigned> &visited);
129 void handleStream(
const Pointer &ptr,
unsigned idx,
unsigned level, std::set<unsigned> &visited);
130 void handleChunks(librevenge::RVNGInputStream *input,
unsigned level);
131 void handleChunk(librevenge::RVNGInputStream *input);
132 void handleBlob(librevenge::RVNGInputStream *input,
unsigned shift,
unsigned level);
135 virtual void readPointerInfo(librevenge::RVNGInputStream *input,
unsigned ptrType,
unsigned shift,
unsigned &listSize,
int &pointerCount);
142 virtual unsigned getUInt(librevenge::RVNGInputStream *input);
143 virtual int getInt(librevenge::RVNGInputStream *input);
191 #endif // __VSDPARSER_H__
std::vector< std::pair< double, double > > points
Definition: VSDTypes.h:101
void readPolylineTo(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1495
Pointer()
Definition: VSDParser.h:36
#define VSD_NAME_LIST2
Definition: VSDDocumentStructure.h:32
virtual void readLayerMem(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1065
#define VSD_CHAR_LIST
Definition: VSDDocumentStructure.h:48
#define VSD_FOREIGN_DATA
Definition: VSDDocumentStructure.h:13
#define VSD_GEOMETRY
Definition: VSDDocumentStructure.h:68
void readOLEData(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:783
Colour _colourFromIndex(unsigned idx)
Definition: VSDParser.cpp:2284
void handleStream(const Pointer &ptr, unsigned idx, unsigned level, std::set< unsigned > &visited)
Definition: VSDParser.cpp:291
virtual void readCharIX(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1924
#define VSD_NAMEIDX
Definition: VSDDocumentStructure.h:123
Definition: VSDParser.h:35
XForm m_xform
Definition: VSDStencils.h:55
VSDName m_currentPageName
Definition: VSDParser.h:178
@ VSD_TEXT_TURKISH
Definition: VSDTypes.h:154
double m_shadowOffsetX
Definition: VSDParser.h:169
std::unique_ptr< ForeignData > m_foreign
Definition: VSDStencils.h:39
#define VSD_NAME
Definition: VSDDocumentStructure.h:30
bool m_extractStencils
Definition: VSDParser.h:163
Definition: VSDStylesCollector.h:25
#define VSD_FONT_IX
Definition: VSDDocumentStructure.h:21
#define VSD_TABS_DATA_1
Definition: VSDDocumentStructure.h:67
bool parseDocument(librevenge::RVNGInputStream *input, unsigned shift)
Definition: VSDParser.cpp:178
#define VSD_LAYER
Definition: VSDDocumentStructure.h:99
#define VSD_FONTFACES
Definition: VSDDocumentStructure.h:127
unsigned m_currentGeomListCount
Definition: VSDParser.h:173
bool m_printable
Definition: VSDLayerList.h:30
boost::optional< Colour > m_colour
Definition: VSDLayerList.h:28
#define VSD_FIELD_FORMAT_MsoDateShort
Definition: VSDDocumentStructure.h:260
void readNURBSTo(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1336
void readSplineStart(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1677
Definition: VSDParser.h:48
unsigned char b
Definition: VSDTypes.h:89
std::vector< std::pair< double, double > > points
Definition: VSDTypes.h:118
#define VSD_TABS_DATA_2
Definition: VSDDocumentStructure.h:81
virtual void readStyleSheet(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1884
#define VSD_NAME2
Definition: VSDDocumentStructure.h:33
virtual void readCharList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:954
#define VSD_CHAR_IX
Definition: VSDDocumentStructure.h:79
TextFormat m_textFormat
Definition: VSDStencils.h:52
VSDShape m_shape
Definition: VSDParser.h:155
#define VSD_STENCIL_PAGE
Definition: VSDDocumentStructure.h:24
#define VSD_SHAPE_LIST
Definition: VSDDocumentStructure.h:45
Definition: VSDCollector.h:21
void readEllipticalArcTo(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:745
#define CELL_TYPE_Date
Definition: VSDDocumentStructure.h:134
unsigned char yType
Definition: VSDTypes.h:98
#define VSD_LINE
Definition: VSDDocumentStructure.h:64
#define VSD_SHAPE_DATA
Definition: VSDDocumentStructure.h:125
#define VSD_SHAPE_ID
Definition: VSDDocumentStructure.h:62
librevenge::RVNGInputStream * m_container
Definition: VSDParser.h:147
void _nameFromId(VSDName &name, unsigned id, unsigned level)
Definition: VSDParser.cpp:39
virtual void readNameIDX123(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:834
@ VSD_TEXT_ANSI
Definition: VSDTypes.h:151
#define VSD_SHAPE_FOREIGN
Definition: VSDDocumentStructure.h:40
bool m_isShapeStarted
Definition: VSDParser.h:167
std::map< unsigned, VSDName > m_fonts
Definition: VSDParser.h:175
void readForeignData(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:765
#define VSD_ELLIPTICAL_ARC_TO
Definition: VSDDocumentStructure.h:75
#define VSD_DEBUG_MSG(M)
Definition: libvisio_utils.h:42
Definition: VSDStencils.h:79
#define VSD_NAMEIDX123
Definition: VSDDocumentStructure.h:34
bool m_isBackgroundPage
Definition: VSDParser.h:166
#define VSD_PROP_LIST
Definition: VSDDocumentStructure.h:47
std::map< unsigned, std::map< unsigned, VSDName > > m_namesMapMap
Definition: VSDParser.h:177
VSDMisc m_misc
Definition: VSDStencils.h:58
Definition: libvisio_utils.h:88
void readXFormData(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1135
void handleChunk(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:459
#define VSD_POLYLINE_TO
Definition: VSDDocumentStructure.h:116
unsigned char xType
Definition: VSDTypes.h:116
unsigned char r
Definition: VSDTypes.h:87
virtual void readText(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1902
#define VSD_PAGES
Definition: VSDDocumentStructure.h:27
virtual void readTextBlock(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:893
#define VSD_STYLE_SHEET
Definition: VSDDocumentStructure.h:42
void readFontIX(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1769
void readStencilShape(librevenge::RVNGInputStream *input)
Definition: VSDStencils.h:63
bool parseMain()
Definition: VSDParser.cpp:107
#define VSD_NAME_LIST
Definition: VSDDocumentStructure.h:29
virtual void readMisc(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:2240
void handleBlob(librevenge::RVNGInputStream *input, unsigned shift, unsigned level)
Definition: VSDParser.cpp:425
uint32_t readU32(librevenge::RVNGInputStream *input)
Definition: libvisio_utils.cpp:53
std::map< unsigned, VSDName > m_names
Definition: VSDParser.h:176
VSDStencil * m_currentStencil
Definition: VSDParser.h:154
unsigned m_currentLayerListLevel
Definition: VSDParser.h:161
#define VSD_LAYER_LIST
Definition: VSDDocumentStructure.h:54
VSDGeometryList * m_currentGeometryList
Definition: VSDParser.h:172
unsigned ListSize
Definition: VSDParser.h:44
librevenge::RVNGDrawingInterface * m_painter
Definition: VSDParser.h:146
Definition: VSDInternalStream.h:19
ChunkHeader m_header
Definition: VSDParser.h:148
Definition: VSDStyles.h:323
void readArcTo(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1122
#define VSD_NURBS_TO
Definition: VSDDocumentStructure.h:117
void handleStreams(librevenge::RVNGInputStream *input, unsigned ptrType, unsigned shift, unsigned level, std::set< unsigned > &visited)
Definition: VSDParser.cpp:220
#define VSD_TEXT_BLOCK
Definition: VSDDocumentStructure.h:66
Definition: VSDTypes.h:71
virtual void readName(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:2145
Pointer(const Pointer &ptr)=default
std::vector< double > weights
Definition: VSDTypes.h:100
void readColours(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1733
bool m_isInStyles
Definition: VSDParser.h:157
void readShapeData(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1608
void _flushShape()
Definition: VSDParser.cpp:635
#define VSD_LINE_TO
Definition: VSDDocumentStructure.h:70
uint8_t readU8(librevenge::RVNGInputStream *input)
Definition: libvisio_utils.cpp:16
@ VSD_TEXT_CHINESE_TRADITIONAL
Definition: VSDTypes.h:165
bool m_isStencilStarted
Definition: VSDParser.h:156
virtual void readNameList2(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1709
#define VSD_ELLIPSE
Definition: VSDDocumentStructure.h:74
std::map< unsigned, VSDTabStop > * m_currentTabSet
Definition: VSDParser.h:180
virtual void readPropList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:998
uint16_t readU16(librevenge::RVNGInputStream *input)
Definition: libvisio_utils.cpp:32
void _handleLevelChange(unsigned level)
Definition: VSDParser.cpp:714
void readLineTo(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1111
@ VSD_TEXT_GREEK
Definition: VSDTypes.h:153
void readTxtXForm(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1169
void readInfiniteLine(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1594
virtual void readName2(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:2156
Definition: VSDStyles.h:209
virtual void readTabsData(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:798
virtual void readLayer(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1042
#define VSD_ALMOST_ZERO(m)
Definition: libvisio_utils.h:24
unsigned long getRemainingLength(librevenge::RVNGInputStream *input)
Definition: libvisio_utils.cpp:110
void readNameList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1704
#define VSD_FIELD_LIST
Definition: VSDDocumentStructure.h:46
#define VSD_SPLINE_KNOT
Definition: VSDDocumentStructure.h:97
#define VSD_PAGE
Definition: VSDDocumentStructure.h:18
void readPageProps(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1248
void parseMetaData()
Definition: VSDParser.cpp:152
#define VSD_OLE_LIST
Definition: VSDDocumentStructure.h:14
void readOLEList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:779
virtual void readTabsDataList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1002
Definition: VSDGeometryList.h:48
void readPageSheet(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1896
virtual void readLayerList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1022
virtual void readTextField(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:2171
#define VSD_MISC
Definition: VSDDocumentStructure.h:95
void readMoveTo(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1100
@ VSD_TEXT_UTF16
Definition: VSDTypes.h:167
virtual void readParaIX(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1992
Definition: VSDStyles.h:24
std::map< unsigned, VSDTabSet > m_tabSets
Definition: VSDStencils.h:49
#define VSD_TABS_DATA_3
Definition: VSDDocumentStructure.h:82
VSDParser & operator=(const VSDParser &)
Definition: VSDTypes.h:115
@ VSD_TEXT_HEBREW
Definition: VSDTypes.h:156
Definition: VSDLayerList.h:22
Definition: VSDShapeList.h:20
librevenge::RVNGInputStream * m_input
Definition: VSDParser.h:145
void readSplineKnot(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1692
#define VSD_FOREIGN_DATA_TYPE
Definition: VSDDocumentStructure.h:83
#define VSD_STENCILS
Definition: VSDDocumentStructure.h:23
#define VSD_STYLES
Definition: VSDDocumentStructure.h:22
Definition: VSDContentCollector.h:32
void handleChunks(librevenge::RVNGInputStream *input, unsigned level)
Definition: VSDParser.cpp:441
Definition: VSDStyles.h:495
void readShapeId(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1188
Definition: VSDTypes.h:193
std::unique_ptr< XForm > m_txtxform
Definition: VSDStencils.h:56
virtual void readPointer(librevenge::RVNGInputStream *input, Pointer &ptr)
Definition: VSDParser.cpp:200
unsigned char xType
Definition: VSDTypes.h:97
unsigned char yType
Definition: VSDTypes.h:117
#define VSD_COLORS
Definition: VSDDocumentStructure.h:19
virtual void readFieldList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1714
void readGeometry(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1089
#define VSD_PARA_LIST
Definition: VSDDocumentStructure.h:49
@ VSD_TEXT_RUSSIAN
Definition: VSDTypes.h:159
VSDStencils m_stencils
Definition: VSDParser.h:153
#define VSD_XFORM_DATA
Definition: VSDDocumentStructure.h:86
virtual unsigned getUInt(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:2291
#define VSD_SHAPE_GROUP
Definition: VSDDocumentStructure.h:37
VSDCollector * m_collector
Definition: VSDParser.h:149
@ VSD_TEXT_THAI
Definition: VSDTypes.h:160
unsigned Length
Definition: VSDParser.h:42
@ VSD_TEXT_KOREAN
Definition: VSDTypes.h:163
void readForeignDataType(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1220
unsigned long getSize() const
Definition: VSDInternalStream.h:52
virtual void readShape(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1276
@ VSD_TEXT_ARABIC
Definition: VSDTypes.h:157
unsigned char g
Definition: VSDTypes.h:88
TextFormat
Definition: VSDTypes.h:150
bool m_visible
Definition: VSDLayerList.h:29
#define CELL_TYPE_StringWithoutUnit
Definition: VSDDocumentStructure.h:174
std::vector< double > knots
Definition: VSDTypes.h:99
VSDParser(const VSDParser &)
virtual void readPage(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1082
virtual bool getChunkHeader(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:51
Definition: VSDStencils.h:28
#define VSD_MOVE_TO
Definition: VSDDocumentStructure.h:69
#define VSD_INFINITE_LINE
Definition: VSDDocumentStructure.h:72
virtual void readGeomList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:924
#define VSD_TEXT_FIELD
Definition: VSDDocumentStructure.h:92
#define VSD_PAGE_SHEET
Definition: VSDDocumentStructure.h:36
@ VSD_TEXT_CHINESE_SIMPLIFIED
Definition: VSDTypes.h:164
#define VSD_TRAILER_STREAM
Definition: VSDDocumentStructure.h:17
librevenge::RVNGBinaryData m_text
Definition: VSDStencils.h:50
virtual void readShapeList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1196
#define VSD_GEOM_LIST
Definition: VSDDocumentStructure.h:51
int32_t readS32(librevenge::RVNGInputStream *input)
Definition: libvisio_utils.cpp:69
unsigned char a
Definition: VSDTypes.h:90
void readEllipse(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:850
unsigned Type
Definition: VSDParser.h:40
unsigned Offset
Definition: VSDParser.h:41
@ VSD_TEXT_SYMBOL
Definition: VSDTypes.h:152
Definition: VSDTypes.h:171
#define VSD_FIELD_FORMAT_Unknown
Definition: VSDDocumentStructure.h:283
#define VSD_SHAPE_SHAPE
Definition: VSDDocumentStructure.h:38
#define VSD_TABS_DATA_LIST
Definition: VSDDocumentStructure.h:50
virtual void readPointerInfo(librevenge::RVNGInputStream *input, unsigned ptrType, unsigned shift, unsigned &listSize, int &pointerCount)
Definition: VSDParser.cpp:209
std::vector< Colour > m_colours
Definition: VSDParser.h:164
#define VSD_TEXT_XFORM
Definition: VSDDocumentStructure.h:87
unsigned degree
Definition: VSDTypes.h:96
#define VSD_FONTFACE
Definition: VSDDocumentStructure.h:126
#define VSD_FILL_AND_SHADOW
Definition: VSDDocumentStructure.h:65
#define VSD_PARA_IX
Definition: VSDDocumentStructure.h:80
virtual void readNameIDX(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:812
#define MINUS_ONE
Definition: VSDTypes.h:18
virtual int getInt(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:2296
virtual void readParaList(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:976
unsigned m_currentShapeLevel
Definition: VSDParser.h:158
double lastKnot
Definition: VSDTypes.h:95
void readFont(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1752
unsigned m_currentLevel
Definition: VSDParser.h:151
Definition: VSDStyles.h:104
@ VSD_TEXT_CENTRAL_EUROPE
Definition: VSDTypes.h:161
#define VSD_XFORM_1D
Definition: VSDDocumentStructure.h:88
virtual void readXForm1D(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:1155
virtual void readFillAndShadow(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:2077
@ VSD_TEXT_BALTIC
Definition: VSDTypes.h:158
#define VSD_OLE_DATA
Definition: VSDDocumentStructure.h:25
const VSDStyles & getStyleSheets() const
Definition: VSDStylesCollector.h:175
#define VSD_TEXT
Definition: VSDDocumentStructure.h:15
Definition: VSDTypes.h:94
Definition: VSDStyles.h:420
@ VSD_TEXT_JAPANESE
Definition: VSDTypes.h:162
double readDouble(librevenge::RVNGInputStream *input)
Definition: libvisio_utils.cpp:90
unsigned m_currentShapeID
Definition: VSDParser.h:159
#define VSD_SPLINE_START
Definition: VSDDocumentStructure.h:96
Pointer & operator=(const Pointer &ptr)=default
#define VSD_ARC_TO
Definition: VSDDocumentStructure.h:71
virtual ~VSDParser()
Definition: VSDParser.cpp:35
bool extractStencils()
Definition: VSDParser.cpp:194
std::shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr_t
Definition: libvisio_utils.h:51
Definition: libvisio_utils.h:49
#define VSD_PAGE_PROPS
Definition: VSDDocumentStructure.h:77
@ VSD_TEXT_VIETNAMESE
Definition: VSDTypes.h:155
#define VSD_LAYER_MEMBERSHIP
Definition: VSDDocumentStructure.h:98
unsigned short Format
Definition: VSDParser.h:43
double m_shadowOffsetY
Definition: VSDParser.h:170
VSDShapeList m_shapeList
Definition: VSDParser.h:150
virtual void readLine(librevenge::RVNGInputStream *input)
Definition: VSDParser.cpp:869
Generated for libvisio by
doxygen 1.8.20