27
28
#define WP5STYLESLISTENER_H
29
30
#include "WP5Listener.h"
31
#include "WPXStylesListener.h"
31
35
#include "WPXPageSpan.h"
32
36
#include "WPXTable.h"
37
#include "WP5SubDocument.h"
34
class WP5StylesListener : public WP5Listener
39
class WP5StylesListener : public WP5Listener, public WPXStylesListener
37
WP5StylesListener(std::vector<WPXPageSpan *> *pageList, WPXTableList tableList);
39
virtual void startDocument() {}
40
virtual void setAlignmentCharacter(const uint16_t character) {}
41
virtual void setLeaderCharacter(const uint16_t character, const uint8_t numberOfSpaces) {}
42
virtual void defineTabStops(const bool isRelative, const std::vector<WPXTabStop> &tabStops,
43
const std::vector<bool> &usePreWP9LeaderMethods) {}
44
virtual void insertCharacter(const uint16_t character) { /*if (!isUndoOn())*/ m_currentPageHasContent = true; }
45
virtual void insertTab(const uint8_t tabType, const uint16_t tabPosition) { /*if (!isUndoOn())*/ m_currentPageHasContent = true; }
46
virtual void insertEOL() { /*if (!isUndoOn())*/ m_currentPageHasContent = true; }
47
virtual void insertBreak(const uint8_t breakType);
48
virtual void attributeChange(const bool isOn, const uint8_t attribute) {}
49
virtual void lineSpacingChange(const float lineSpacing) {}
50
virtual void spacingAfterParagraphChange(const float spacingRelative, const float spacingAbsolute) {}
51
virtual void justificationChange(const uint8_t justification) {}
52
virtual void pageMarginChange(const uint8_t side, const uint16_t margin);
53
virtual void pageFormChange(const uint16_t length, const uint16_t width, const WPXFormOrientation orientation, const bool isPersistent);
54
virtual void marginChange(const uint8_t side, const uint16_t margin);
55
virtual void paragraphMarginChange(const uint8_t side, const int16_t margin) {}
56
virtual void indentFirstLineChange(const int16_t offset) {}
57
virtual void columnChange(const WPXTextColumnType columnType, const uint8_t numColumns, const std::vector<float> &columnWidth,
58
const std::vector<bool> &isFixedWidth) {}
59
virtual void endDocument();
61
virtual void defineTable(const uint8_t position, const uint16_t leftOffset){}
62
virtual void addTableColumnDefinition(const uint32_t width, const uint32_t leftGutter, const uint32_t rightGutter,
42
WP5StylesListener(std::list<WPXPageSpan> &pageList, WPXTableList tableList, std::vector<WP5SubDocument*> &subDocuments);
44
void startDocument() {}
45
void setFont(const WPXString fontName, const float fontSize) {}
46
void insertCharacter(const uint16_t character) { /*if (!isUndoOn())*/ m_currentPageHasContent = true; }
47
void insertTab(const uint8_t tabType, float tabPosition) { /*if (!isUndoOn())*/ m_currentPageHasContent = true; }
48
void handleLineBreak() { /*if (!isUndoOn())*/ m_currentPageHasContent = true; };
49
void characterColorChange(const uint8_t red, const uint8_t green, const uint8_t blue) {};
50
void insertEOL() { /*if (!isUndoOn())*/ m_currentPageHasContent = true; }
51
void insertBreak(const uint8_t breakType);
52
void attributeChange(const bool isOn, const uint8_t attribute) {}
53
void lineSpacingChange(const float lineSpacing) {}
54
void justificationChange(const uint8_t justification) {}
55
void pageMarginChange(const uint8_t side, const uint16_t margin);
56
void pageFormChange(const uint16_t length, const uint16_t width, const WPXFormOrientation orientation, const bool isPersistent);
57
void marginChange(const uint8_t side, const uint16_t margin);
60
void defineTable(const uint8_t position, const uint16_t leftOffset){}
61
void addTableColumnDefinition(const uint32_t width, const uint32_t leftGutter, const uint32_t rightGutter,
63
62
const uint32_t attributes, const uint8_t alignment){}
64
virtual void startTable();
65
virtual void insertRow(const uint16_t rowHeight, const bool isMinimumHeight, const bool isHeaderRow);
66
virtual void insertCell(const uint8_t colSpan, const uint8_t rowSpan, const uint8_t borderBits,
64
void insertRow(const uint16_t rowHeight, const bool isMinimumHeight, const bool isHeaderRow);
65
void insertCell(const uint8_t colSpan, const uint8_t rowSpan, const uint8_t borderBits,
67
66
const RGBSColor * cellFgColor, const RGBSColor * cellBgColor,
68
67
const RGBSColor * cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment,
69
68
const bool useCellAttributes, const uint32_t cellAttributes);
70
virtual void endTable() {}
71
void insertNoteReference(const WPXString noteReference) {};
72
void insertNote(const WPXNoteType noteType, const WP5SubDocument *subDocument) {};
73
void headerFooterGroup(const uint8_t headerFooterType, const uint8_t occurenceBits, WP5SubDocument *subDocument);
74
void suppressPageCharacteristics(const uint8_t suppressCode);
74
virtual void _openPageSpan() { /* FIXME: REMOVE ME WHEN IMPLEMENTED IN WPXListener */ };
77
void _openPageSpan() { /* FIXME: REMOVE ME WHEN IMPLEMENTED IN WPXListener */ }
79
void _handleSubDocument(const WPXSubDocument *subDocument, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice = 0);
77
WPXPageSpan *m_currentPage;
85
WPXPageSpan m_currentPage, m_nextPage;
79
87
WPXTableList m_tableList;
80
88
WPXTable *m_currentTable;
81
89
float m_tempMarginLeft, m_tempMarginRight;
82
90
bool m_currentPageHasContent;
92
std::vector<WP5SubDocument *> &m_subDocuments;
93
std::list<WPXPageSpan>::iterator m_pageListHardPageMark;
85
96
#endif /* WP5STYLESLISTENER_H */