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 ~WP1StylesListener() {}
00042
00043 void startDocument() {}
00044 void insertCharacter(const uint16_t ) { if (!isUndoOn()) m_currentPageHasContent = true; }
00045 void insertExtendedCharacter(const uint8_t ) { if (!isUndoOn()) m_currentPageHasContent = true; }
00046 void insertTab() { if (!isUndoOn()) m_currentPageHasContent = true; }
00047 void insertEOL() { if (!isUndoOn()) m_currentPageHasContent = true; }
00048 void insertBreak(const uint8_t breakType);
00049 void insertNote(const WPXNoteType , WP1SubDocument * ) {}
00050 void attributeChange(const bool , const uint8_t ) {}
00051 void fontPointSize(const uint8_t ) {}
00052 void fontId(const uint16_t ) {}
00053 void marginReset(const uint16_t leftMargin, const uint16_t rightMargin);
00054 void topMarginSet(const uint16_t topMargin);
00055 void bottomMarginSet(const uint16_t bottomMargin);
00056 void leftIndent(const uint16_t ) { if (!isUndoOn()) m_currentPageHasContent = true; }
00057 void leftRightIndent(const uint16_t ) { if (!isUndoOn()) m_currentPageHasContent = true; }
00058 void leftMarginRelease(const uint16_t ) {}
00059 void setTabs(const std::vector<WPXTabStop> ) {}
00060 void headerFooterGroup(const uint8_t headerFooterDefinition, WP1SubDocument *subDocument);
00061 void suppressPageCharacteristics(const uint8_t suppressCode);
00062 void justificationChange(const uint8_t ) {}
00063 void lineSpacingChange(const uint8_t ) {}
00064 void flushRightOn() {}
00065 void flushRightOff() {}
00066 void centerOn() {}
00067 void centerOff() {}
00068 void endDocument();
00069
00070 protected:
00071 void _handleSubDocument(const WPXSubDocument *subDocument, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice = 0);
00072
00073 private:
00074 WPXPageSpan m_currentPage, m_nextPage;
00075 std::vector<WP1SubDocument *> &m_subDocuments;
00076 float m_tempMarginLeft, m_tempMarginRight;
00077 bool m_currentPageHasContent;
00078 bool m_isSubDocument;
00079 std::list<WPXPageSpan>::iterator m_pageListHardPageMark;
00080 };
00081
00082 #endif