Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef __MSPUBPARSER97_H__
00030 #define __MSPUBPARSER97_H__
00031
00032 #include "MSPUBParser2k.h"
00033
00034 namespace libmspub
00035 {
00036 class MSPUBParser97 : public MSPUBParser2k
00037 {
00038 struct TextInfo97
00039 {
00040 std::vector<unsigned char> m_chars;
00041 std::vector<unsigned> m_paragraphEnds;
00042 std::vector<unsigned> m_shapeEnds;
00043 TextInfo97(const std::vector<unsigned char> &chars,
00044 const std::vector<unsigned> ¶graphEnds,
00045 const std::vector<unsigned> &shapeEnds)
00046 : m_chars(chars), m_paragraphEnds(paragraphEnds),
00047 m_shapeEnds(shapeEnds)
00048 {
00049 }
00050 };
00051
00052 struct SpanInfo97
00053 {
00054 unsigned m_spanEnd;
00055 CharacterStyle m_style;
00056 SpanInfo97(unsigned spanEnd, const CharacterStyle &style)
00057 : m_spanEnd(spanEnd), m_style(style)
00058 {
00059 }
00060 };
00061
00062 bool m_isBanner;
00063
00064 bool parseDocument(WPXInputStream *input);
00065 int translateCoordinateIfNecessary(int coordinate) const;
00066 unsigned getFirstLineOffset() const;
00067 unsigned getSecondLineOffset() const;
00068 unsigned getShapeFillTypeOffset() const;
00069 unsigned getShapeFillColorOffset() const;
00070 unsigned short getTextMarker() const;
00071 unsigned getTextIdOffset() const;
00072 CharacterStyle readCharacterStyle(WPXInputStream *input,
00073 unsigned length);
00074 void parseContentsTextIfNecessary(WPXInputStream *input);
00075 std::vector<SpanInfo97> getSpansInfo(WPXInputStream *input,
00076 unsigned prop1Index, unsigned prop2Index, unsigned prop3Index,
00077 unsigned prop3End);
00078 TextInfo97 getTextInfo(WPXInputStream *input, unsigned length);
00079 public:
00080 MSPUBParser97(WPXInputStream *input, MSPUBCollector *collector);
00081 bool parse();
00082 };
00083 }
00084
00085 #endif // __MSPUBPARSER97_H__
00086
00087