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
00035
00036
00037
00038 #ifndef MS_WKS3_TEXT
00039 # define MS_WKS3_TEXT
00040
00041 #include <list>
00042 #include <string>
00043 #include <vector>
00044
00045 #include "libmwaw_internal.hxx"
00046
00047 #include "MWAWEntry.hxx"
00048
00049 namespace MsWks3TextInternal
00050 {
00051 struct Font;
00052 struct LineZone;
00053 struct TextZone;
00054 struct State;
00055
00056 class SubDocument;
00057 }
00058
00059 class MsWksDocument;
00060 class MsWksParser;
00061 class MsWksDRParser;
00062 class MsWksSSParser;
00063
00069 class MsWks3Text
00070 {
00071 friend class MsWksDocument;
00072 friend class MsWksParser;
00073 friend class MsWksDRParser;
00074 friend class MsWksSSParser;
00075
00076 friend class MsWks3TextInternal::SubDocument;
00077 public:
00079 MsWks3Text(MsWksDocument &zone);
00081 virtual ~MsWks3Text();
00082
00084 int version() const;
00085
00087 int numPages(int zoneId) const;
00088
00089 protected:
00091 int createZones(int numLines=-1, bool mainZone=false);
00092
00094 std::string readHeaderFooterString(bool header);
00095
00097 void flushExtra();
00098
00100 void sendZone(int zoneId);
00101
00103 void sendNote(int zoneId, int noteId);
00104
00106 int getHeader() const;
00107
00109 int getFooter() const;
00110
00112 bool getLinesPagesHeight(int zoneId,
00113 std::vector<int> &lines,
00114 std::vector<int> &pages);
00115
00116
00117
00118
00119
00121 bool readZoneHeader(MsWks3TextInternal::LineZone &zone) const;
00122
00124 void update(MsWks3TextInternal::TextZone &zone);
00125
00127 void updateNotes(MsWks3TextInternal::TextZone &zone, int firstNote);
00128
00131 void send(MsWks3TextInternal::TextZone &zone, MWAWVec2i limit=MWAWVec2i(-1,-1));
00132
00134 bool readFont(MsWks3TextInternal::Font &font, long endPos);
00135
00137 bool readParagraph(MsWks3TextInternal::LineZone &zone, MWAWParagraph ¶g);
00138
00140 bool sendText(MsWks3TextInternal::LineZone &zone, int zoneId);
00141
00143 bool sendString(std::string &str);
00144
00145 private:
00146 MsWks3Text(MsWks3Text const &orig);
00147 MsWks3Text &operator=(MsWks3Text const &orig);
00148
00149 protected:
00150
00151
00152
00154 MWAWParserStatePtr m_parserState;
00155
00157 shared_ptr<MsWks3TextInternal::State> m_state;
00158
00160 MWAWParser *m_mainParser;
00162 MsWksDocument &m_document;
00163 };
00164 #endif
00165