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 #ifndef WP3LISTENER_H
00027 #define WP3LISTENER_H
00028
00029 #include "WPXListener.h"
00030 #include "WPXHLListenerImpl.h"
00031 #include "libwpd_internal.h"
00032
00033 typedef struct _WP3ParsingState WP3ParsingState;
00034 struct _WP3ParsingState
00035 {
00036 _WP3ParsingState();
00037 ~_WP3ParsingState();
00038 uint16_t m_colSpan;
00039 uint16_t m_rowSpan;
00040 WPXString m_textBuffer;
00041 RGBSColor * m_cellFillColor;
00042 WPXString m_noteReference;
00043
00044 WPXTableList m_tableList;
00045 };
00046
00047 class WP3SubDocument;
00048
00049 class WP3Listener : public WPXListener
00050 {
00051 public:
00052 WP3Listener(std::vector<WPXPageSpan *> *pageList, WPXHLListenerImpl *listenerImpl);
00053 virtual ~WP3Listener();
00054
00055 virtual void setAlignmentCharacter(const uint16_t character) {};
00056 virtual void setLeaderCharacter(const uint16_t character, const uint8_t numberOfSpaces) {};
00057 virtual void defineTabStops(const bool isRelative, const std::vector<WPXTabStop> &tabStops,
00058 const std::vector<bool> &usePreWP9LeaderMethods) {};
00059 virtual void insertCharacter(const uint16_t character);
00060 virtual void insertTab(const uint8_t tabType, const float tabPosition);
00061 virtual void handleLineBreak() {};
00062 virtual void insertEOL();
00063 virtual void attributeChange(const bool isOn, const uint8_t attribute);
00064 virtual void spacingAfterParagraphChange(const float spacingRelative, const float spacingAbsolute) {};
00065 virtual void pageMarginChange(const uint8_t side, const uint16_t margin) {};
00066 virtual void pageFormChange(const uint16_t length, const uint16_t width, const WPXFormOrientation orientation, const bool isPersistent) {};
00067 virtual void marginChange(const uint8_t side, const uint16_t margin);
00068 virtual void paragraphMarginChange(const uint8_t side, const int16_t margin) {};
00069 virtual void indentFirstLineChange(const int16_t offset);
00070 virtual void columnChange(const WPXTextColumnType columnType, const uint8_t numColumns, const std::vector<float> &columnWidth,
00071 const std::vector<bool> &isFixedWidth);
00072 virtual void endDocument();
00073
00074 virtual void defineTable(const uint8_t position, const uint16_t leftOffset);
00075 virtual void addTableColumnDefinition(const uint32_t width, const uint32_t leftGutter, const uint32_t rightGutter,
00076 const uint32_t attributes, const uint8_t alignment);
00077 virtual void startTable();
00078 virtual void insertRow();
00079 virtual void insertCell();
00080 virtual void closeCell();
00081 virtual void closeRow();
00082 virtual void setTableCellSpan(const uint16_t colSpan, const uint16_t rowSpan);
00083 virtual void setTableCellFillColor(const RGBSColor * cellFillColor);
00084 virtual void endTable();
00085 virtual void undoChange(const uint8_t undoType, const uint16_t undoLevel);
00086 virtual void justificationChange(const uint8_t justification);
00087 virtual void setTextColor(const RGBSColor * fontColor);
00088 virtual void setTextFont(const std::string fontName);
00089 virtual void setFontSize(const uint16_t fontSize);
00090 virtual void insertNoteReference(const std::string noteReference);
00091 virtual void insertNote(const WPXNoteType noteType, const WP3SubDocument *subDocument);
00092
00093 protected:
00094 virtual void _handleSubDocument(const WPXSubDocument *subDocument, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice = 0);
00095 virtual void _openParagraph();
00096
00097 private:
00098 void _flushText();
00099 void _changeList() {};
00100
00101 WP3ParsingState *m_parseState;
00102 };
00103
00104 #endif