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 #ifndef WP1CONTENTLISTENER_H
00029 #define WP1CONTENTLISTENER_H
00030
00031 #include "WP1Listener.h"
00032 #include "WPXContentListener.h"
00033
00034 class WP1SubDocument;
00035
00036 typedef struct _WP1ContentParsingState WP1ContentParsingState;
00037 struct _WP1ContentParsingState
00038 {
00039 _WP1ContentParsingState();
00040 ~_WP1ContentParsingState();
00041 librevenge::RVNGString m_textBuffer;
00042 int m_numDeferredTabs;
00043 int m_footNoteNumber, m_endNoteNumber;
00044 private:
00045 _WP1ContentParsingState(const _WP1ContentParsingState &);
00046 _WP1ContentParsingState &operator=(const _WP1ContentParsingState &);
00047 };
00048
00049 class WP1ContentListener : public WP1Listener, protected WPXContentListener
00050 {
00051 public:
00052 WP1ContentListener(std::list<WPXPageSpan> &pageList, std::vector<WP1SubDocument *> &subDocuments, librevenge::RVNGTextInterface *documentInterface);
00053 ~WP1ContentListener();
00054
00055 void startDocument()
00056 {
00057 WPXContentListener::startDocument();
00058 }
00059 void startSubDocument()
00060 {
00061 WPXContentListener::startSubDocument();
00062 }
00063 void insertCharacter(unsigned character);
00064 void insertExtendedCharacter(unsigned char extendedCharacter);
00065 void insertTab();
00066 void insertBreak(unsigned char breakType)
00067 {
00068 WPXContentListener::insertBreak(breakType);
00069 }
00070 void insertEOL();
00071 void insertNote(WPXNoteType noteType, WP1SubDocument *subDocument);
00072 void attributeChange(bool isOn, unsigned char attribute);
00073 void fontPointSize(unsigned char pointSize);
00074 void fontId(unsigned short id);
00075 void marginReset(unsigned short leftMargin, unsigned short rightMargin);
00076 void topMarginSet(unsigned short ) {}
00077 void bottomMarginSet(unsigned short ) {}
00078 void leftIndent(unsigned short leftMarginOffset);
00079 void leftRightIndent(unsigned short leftRightMarginOffset);
00080 void leftMarginRelease(unsigned short release);
00081 void setTabs(const std::vector<WPXTabStop> &tabStops);
00082 void headerFooterGroup(unsigned char headerFooterDefinition, WP1SubDocument *subDocument);
00083 void suppressPageCharacteristics(unsigned char ) {}
00084 void justificationChange(unsigned char justification);
00085 void lineSpacingChange(unsigned char spacing)
00086 {
00087 WPXContentListener::lineSpacingChange((double)((double)spacing/2.0));
00088 }
00089 void flushRightOn();
00090 void flushRightOff() {}
00091 void centerOn();
00092 void centerOff() {}
00093 void endDocument()
00094 {
00095 WPXContentListener::endDocument();
00096 }
00097 void endSubDocument()
00098 {
00099 WPXContentListener::endSubDocument();
00100 }
00101 void insertPicture(unsigned short width, unsigned short height, const librevenge::RVNGBinaryData &binaryData);
00102
00103 protected:
00104 using WPXContentListener::lineSpacingChange;
00105 void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice = 0);
00106
00107 void _flushText();
00108 void _changeList() {}
00109
00110 private:
00111 WP1ContentParsingState *m_parseState;
00112 std::vector<WP1SubDocument *> &m_subDocuments;
00113 WP1ContentListener(const WP1ContentListener &);
00114 WP1ContentListener &operator=(WP1ContentListener &);
00115 };
00116
00117 #endif
00118