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 WP5CONTENTLISTENER_H
00029 #define WP5CONTENTLISTENER_H
00030
00031 #include "WP5Listener.h"
00032 #include "WPXContentListener.h"
00033 #include "WP5SubDocument.h"
00034 #include "WPXString.h"
00035 #include "libwpd_internal.h"
00036 #include "WPXHLListenerImpl.h"
00037 #include <vector>
00038
00039 typedef struct _WP5ContentParsingState WP5ContentParsingState;
00040 struct _WP5ContentParsingState
00041 {
00042 _WP5ContentParsingState();
00043 ~_WP5ContentParsingState();
00044 WPXString m_textBuffer;
00045 WPXString m_noteReference;
00046
00047 WPXTableList m_tableList;
00048 };
00049
00050 class WP5ContentListener : public WP5Listener, protected WPXContentListener
00051 {
00052 public:
00053 WP5ContentListener(std::list<WPXPageSpan> &pageList, std::vector<WP5SubDocument *> &subDocuments, WPXHLListenerImpl *listenerImpl);
00054 ~WP5ContentListener();
00055
00056 void startDocument() { WPXContentListener::startDocument(); };
00057 void setFont(const WPXString &fontName, const float fontSize);
00058 void setTabs(const std::vector<WPXTabStop> &tabStops, const uint16_t tabOffset);
00059 void insertCharacter(const uint16_t character);
00060 void insertTab(const uint8_t tabType, const float tabPosition);
00061 void insertIndent(const uint8_t indentType, const float indentPosition);
00062 void insertEOL();
00063 void insertBreak(const uint8_t breakType) { WPXContentListener::insertBreak(breakType); };
00064 void lineSpacingChange(const float lineSpacing) { WPXContentListener::lineSpacingChange(lineSpacing); };
00065 void justificationChange(const uint8_t justification) { WPXContentListener::justificationChange(justification); };
00066 void characterColorChange(const uint8_t red, const uint8_t green, const uint8_t blue);
00067 void attributeChange(const bool isOn, const uint8_t attribute);
00068 void pageMarginChange(const uint8_t , const uint16_t ) {};
00069 void pageFormChange(const uint16_t , const uint16_t , const WPXFormOrientation ) {};
00070 void marginChange(const uint8_t side, const uint16_t margin);
00071 void paragraphMarginChange(const uint8_t , const int16_t ) {};
00072 void endDocument() { WPXContentListener::endDocument(); };
00073
00074 void defineTable(const uint8_t position, const uint16_t leftOffset);
00075 void addTableColumnDefinition(const uint32_t width, const uint32_t leftGutter, const uint32_t rightGutter,
00076 const uint32_t attributes, const uint8_t alignment);
00077 void startTable();
00078 void insertRow(const uint16_t rowHeight, const bool isMinimumHeight, const bool isHeaderRow);
00079 void insertCell(const uint8_t colSpan, const uint8_t rowSpan, const uint8_t borderBits,
00080 const RGBSColor * cellFgColor, const RGBSColor * cellBgColor,
00081 const RGBSColor * cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment,
00082 const bool useCellAttributes, const uint32_t cellAttributes);
00083 void endTable();
00084
00085 void insertNoteReference(const WPXString ¬eReference);
00086 void insertNote(const WPXNoteType noteType, const WP5SubDocument *subDocument);
00087 void headerFooterGroup(const uint8_t headerFooterType, const uint8_t occurenceBits, WP5SubDocument *subDocument);
00088 void suppressPageCharacteristics(const uint8_t ) {};
00089
00090 void setDefaultFont(const WPXString &fontName, const float fontSize);
00091
00092 protected:
00093 void _handleSubDocument(const WPXSubDocument *subDocument, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice = 0);
00094
00095 void _flushText();
00096 void _changeList() {};
00097
00098 private:
00099 WP5ContentListener(const WP5ContentListener&);
00100 WP5ContentListener& operator=(const WP5ContentListener&);
00101 WP5ContentParsingState *m_parseState;
00102 std::vector<WP5SubDocument *> &m_subDocuments;
00103 float m_defaultFontSize;
00104 WPXString m_defaultFontName;
00105 };
00106
00107 #endif