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