26
27
#ifndef WP5LISTENER_H
27
28
#define WP5LISTENER_H
29
#include "WPXListener.h"
30
#include "WP5PrefixData.h"
31
//#include "WP5SubDocument.h"
32
#include "WPXPageSpan.h"
30
33
#include "WPXHLListenerImpl.h"
32
typedef struct _WP5ParsingState WP5ParsingState;
33
struct _WP5ParsingState
37
WPXString m_textBuffer;
41
class WP5Listener : public WPXListener
44
WP5Listener(std::vector<WPXPageSpan *> *pageList, WPXHLListenerImpl *listenerImpl);
45
virtual ~WP5Listener();
47
virtual void setAlignmentCharacter(const uint16_t character) {};
48
virtual void setLeaderCharacter(const uint16_t character, const uint8_t numberOfSpaces) {};
49
virtual void defineTabStops(const bool isRelative, const std::vector<WPXTabStop> &tabStops,
50
const std::vector<bool> &usePreWP9LeaderMethods) {};
51
virtual void insertCharacter(const uint16_t character);
52
virtual void insertTab(const uint8_t tabType, const float tabPosition);
53
virtual void handleLineBreak() {};
54
virtual void insertEOL();
55
virtual void attributeChange(const bool isOn, const uint8_t attribute);
56
virtual void spacingAfterParagraphChange(const float spacingRelative, const float spacingAbsolute) {};
57
virtual void pageMarginChange(const uint8_t side, const uint16_t margin) {};
58
virtual void pageFormChange(const uint16_t length, const uint16_t width, const WPXFormOrientation orientation, const bool isPersistent) {};
59
virtual void marginChange(const uint8_t side, const uint16_t margin);
60
virtual void paragraphMarginChange(const uint8_t side, const int16_t margin) {};
61
virtual void indentFirstLineChange(const int16_t offset) {};
62
virtual void columnChange(const WPXTextColumnType columnType, const uint8_t numColumns, const std::vector<float> &columnWidth,
63
const std::vector<bool> &isFixedWidth) {};
64
virtual void endDocument();
66
virtual void defineTable(const uint8_t position, const uint16_t leftOffset);
42
WP5Listener(std::list<WPXPageSpan> &pageList, WPXHLListenerImpl *listenerImpl);
43
virtual ~WP5Listener() {};
45
virtual void startDocument() = 0;
46
virtual void setFont(const WPXString fontName, const float fontSize) = 0;
47
virtual void insertCharacter(const uint16_t character) = 0;
48
virtual void insertTab(const uint8_t tabType, float tabPosition) = 0;
49
virtual void handleLineBreak() = 0;
50
virtual void insertEOL() = 0;
51
virtual void insertBreak(const uint8_t breakType) = 0;
52
virtual void lineSpacingChange(const float lineSpacing) = 0;
53
virtual void justificationChange(const uint8_t justification) = 0;
54
virtual void characterColorChange(const uint8_t red, const uint8_t green, const uint8_t blue) = 0;
55
virtual void attributeChange(const bool isOn, const uint8_t attribute) = 0;
56
virtual void pageMarginChange(const uint8_t side, const uint16_t margin) = 0;
57
virtual void pageFormChange(const uint16_t length, const uint16_t width, const WPXFormOrientation orientation, const bool isPersistent) = 0;
58
virtual void marginChange(const uint8_t side, const uint16_t margin) = 0;
59
virtual void endDocument() = 0;
61
virtual void defineTable(const uint8_t position, const uint16_t leftOffset) = 0;
67
62
virtual void addTableColumnDefinition(const uint32_t width, const uint32_t leftGutter, const uint32_t rightGutter,
68
const uint32_t attributes, const uint8_t alignment);
69
virtual void startTable();
70
virtual void insertRow(const uint16_t rowHeight, const bool isMinimumHeight, const bool isHeaderRow);
63
const uint32_t attributes, const uint8_t alignment) = 0;
64
virtual void startTable() = 0;
65
virtual void insertRow(const uint16_t rowHeight, const bool isMinimumHeight, const bool isHeaderRow) = 0;
71
66
virtual void insertCell(const uint8_t colSpan, const uint8_t rowSpan, const uint8_t borderBits,
72
67
const RGBSColor * cellFgColor, const RGBSColor * cellBgColor,
73
68
const RGBSColor * cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment,
74
const bool useCellAttributes, const uint32_t cellAttributes);
75
virtual void endTable();
78
virtual void _handleSubDocument(const WPXSubDocument *subDocument, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice = 0) {}
69
const bool useCellAttributes, const uint32_t cellAttributes) = 0;
70
virtual void endTable() = 0;
72
virtual void insertNoteReference(const WPXString noteReference) = 0;
73
virtual void insertNote(const WPXNoteType noteType, const WP5SubDocument *subDocument) = 0;
74
virtual void headerFooterGroup(const uint8_t headerFooterType, const uint8_t occurenceBits, WP5SubDocument *subDocument) = 0;
75
virtual void suppressPageCharacteristics(const uint8_t suppressCode) = 0;
77
void setPrefixData(WP5PrefixData *prefixData) { m_prefixData = prefixData; }
78
const WP5GeneralPacketData * getGeneralPacketData(const int type) const;
82
void _changeList() {};
84
WP5ParsingState *m_parseState;
81
WP5PrefixData *m_prefixData;
87
84
#endif /* WP5LISTENER_H */