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
00030
00031
00032
00033
00034 #ifndef Z_WRT_PARSER
00035 # define Z_WRT_PARSER
00036
00037 #include <string>
00038 #include <vector>
00039
00040 #include <librevenge/librevenge.h>
00041
00042 #include "MWAWDebug.hxx"
00043 #include "MWAWInputStream.hxx"
00044
00045 #include "MWAWParser.hxx"
00046
00047 namespace ZWrtParserInternal
00048 {
00049 class SubDocument;
00050 struct State;
00051 }
00052
00053 class ZWrtText;
00054
00056 struct ZWField {
00058 ZWField() : m_pos()
00059 {
00060 }
00062 bool getString(MWAWInputStreamPtr &input, std::string &str) const;
00064 bool getBool(MWAWInputStreamPtr &input, bool &val) const;
00066 bool getInt(MWAWInputStreamPtr &input, int &val) const;
00068 bool getFloat(MWAWInputStreamPtr &input, float &val) const;
00070 bool getIntList(MWAWInputStreamPtr &input, std::vector<int> &val) const;
00071
00073 bool getDebugString(MWAWInputStreamPtr &input, std::string &str) const;
00074
00076 MWAWEntry m_pos;
00077 };
00078
00081 class ZWrtParser : public MWAWTextParser
00082 {
00083 friend class ZWrtParserInternal::SubDocument;
00084 friend class ZWrtText;
00085 public:
00087 ZWrtParser(MWAWInputStreamPtr input, MWAWRSRCParserPtr rsrcParser, MWAWHeader *header);
00089 virtual ~ZWrtParser();
00090
00092 bool checkHeader(MWAWHeader *header, bool strict=false);
00093
00094
00095 void parse(librevenge::RVNGTextInterface *documentInterface);
00096
00097 protected:
00099 void init();
00100
00102 void createDocument(librevenge::RVNGTextInterface *documentInterface);
00103
00105 MWAWVec2f getPageLeftTop() const;
00107 void newPage(int number);
00108
00109
00110
00112 bool sendHeaderFooter(bool header);
00113
00114 protected:
00116 bool createZones();
00117
00119 bool readBarState(MWAWEntry const &entry);
00121 bool readHTMLPref(MWAWEntry const &entry);
00123 bool readPrintInfo(MWAWEntry const &entry);
00125 bool readCPRT(MWAWEntry const &entry);
00127 bool readSectionRange(MWAWEntry const &entry);
00129 bool readWindowPos(MWAWEntry const &entry);
00130
00132 bool readUnknownZone(MWAWEntry const &entry);
00133
00135 bool readCPos(MWAWEntry const &entry);
00137 bool readSLen(MWAWEntry const &entry);
00138
00140 bool getFieldList(MWAWEntry const &entry, std::vector<ZWField> &list);
00141
00143 MWAWInputStreamPtr rsrcInput();
00144
00146 libmwaw::DebugFile &rsrcAscii();
00147
00148
00149
00150
00151
00153 shared_ptr<ZWrtParserInternal::State> m_state;
00154
00156 shared_ptr<ZWrtText> m_textParser;
00157 };
00158 #endif
00159