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(uint16_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((float)((double)spacing/2.0f)); }
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