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 WP1STYLESLISTENER_H
00028 #define WP1STYLESLISTENER_H
00029
00030 #include "WP1Listener.h"
00031 #include "WP1SubDocument.h"
00032 #include "WPXStylesListener.h"
00033 #include <vector>
00034 #include "WPXPageSpan.h"
00035 #include "WPXTable.h"
00036
00037 class WP1StylesListener : public WP1Listener, protected WPXStylesListener
00038 {
00039 public:
00040 WP1StylesListener(std::list<WPXPageSpan> &pageList, std::vector<WP1SubDocument *> &subDocuments);
00041
00042 void startDocument() {}
00043 void insertCharacter(const uint16_t character) { if (!isUndoOn()) m_currentPageHasContent = true; }
00044 void insertExtendedCharacter(const uint8_t extendedCharacter) { if (!isUndoOn()) m_currentPageHasContent = true; }
00045 void insertTab() { if (!isUndoOn()) m_currentPageHasContent = true; }
00046 void insertEOL() { if (!isUndoOn()) m_currentPageHasContent = true; }
00047 void insertBreak(const uint8_t breakType);
00048 void insertNote(const WPXNoteType noteType, WP1SubDocument *subDocument) {}
00049 void attributeChange(const bool isOn, const uint8_t attribute) {}
00050 void fontPointSize(const uint8_t pointSize) {}
00051 void marginReset(const uint16_t leftMargin, const uint16_t rightMargin);
00052 void topMarginSet(const uint16_t topMargin);
00053 void bottomMarginSet(const uint16_t bottomMargin);
00054 void leftIndent(const uint16_t leftMarginOffset) { if (!isUndoOn()) m_currentPageHasContent = true; }
00055 void leftRightIndent(const uint16_t leftRightMarginOffset) { if (!isUndoOn()) m_currentPageHasContent = true; }
00056 void leftMarginRelease(const uint16_t release) {}
00057 void setTabs(const std::vector<WPXTabStop> tabStops) {}
00058 void headerFooterGroup(const uint8_t headerFooterDefinition, WP1SubDocument *subDocument);
00059 void suppressPageCharacteristics(const uint8_t suppressCode);
00060 void justificationChange(const uint8_t justification) {}
00061 void lineSpacingChange(const uint8_t spacing) {}
00062 void flushRightOn() {}
00063 void flushRightOff() {}
00064 void centerOn() {}
00065 void centerOff() {}
00066 void endDocument();
00067
00068 protected:
00069 void _handleSubDocument(const WPXSubDocument *subDocument, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice = 0);
00070
00071 private:
00072 WPXPageSpan m_currentPage, m_nextPage;
00073 std::vector<WP1SubDocument *> &m_subDocuments;
00074 float m_tempMarginLeft, m_tempMarginRight;
00075 bool m_currentPageHasContent;
00076 bool m_isSubDocument;
00077 std::list<WPXPageSpan>::iterator m_pageListHardPageMark;
00078 };
00079
00080 #endif