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 WP42STYLESLISTENER_H
00028 #define WP42STYLESLISTENER_H
00029
00030 #include "WP42Listener.h"
00031 #include "WP42SubDocument.h"
00032 #include "WPXStylesListener.h"
00033 #include <vector>
00034 #include "WPXPageSpan.h"
00035 #include "WPXTable.h"
00036
00037 class WP42StylesListener : public WP42Listener, protected WPXStylesListener
00038 {
00039 public:
00040 WP42StylesListener(std::list<WPXPageSpan> &pageList, std::vector<WP42SubDocument *> &subDocuments);
00041
00042 void startDocument() {}
00043 void insertCharacter(const uint16_t ) { if (!isUndoOn()) m_currentPageHasContent = true; }
00044 void insertTab(const uint8_t , float ) { if (!isUndoOn()) m_currentPageHasContent = true; }
00045 void insertEOL() { if (!isUndoOn()) m_currentPageHasContent = true; }
00046 void insertBreak(const uint8_t breakType);
00047 void attributeChange(const bool , const uint8_t ) {}
00048 void marginReset(const uint8_t , const uint8_t ) {}
00049 void headerFooterGroup(const uint8_t headerFooterDefinition, WP42SubDocument *subDocument);
00050 void suppressPageCharacteristics(const uint8_t suppressCode);
00051 void endDocument();
00052
00053 protected:
00054 void _handleSubDocument(const WPXSubDocument *subDocument, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice = 0);
00055
00056 private:
00057 WPXPageSpan m_currentPage, m_nextPage;
00058 std::vector<WP42SubDocument *> &m_subDocuments;
00059 float m_tempMarginLeft, m_tempMarginRight;
00060 bool m_currentPageHasContent;
00061 bool m_isSubDocument;
00062 std::list<WPXPageSpan>::iterator m_pageListHardPageMark;
00063 };
00064
00065 #endif