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 startSubDocument() {}
00044 void insertCharacter(uint16_t ) { if (!isUndoOn()) m_currentPageHasContent = true; }
00045 void insertTab(uint8_t , double ) { if (!isUndoOn()) m_currentPageHasContent = true; }
00046 void insertEOL() { if (!isUndoOn()) m_currentPageHasContent = true; }
00047 void insertBreak(uint8_t breakType);
00048 void attributeChange(bool , uint8_t ) {}
00049 void marginReset(uint8_t , uint8_t ) {}
00050 void headerFooterGroup(uint8_t headerFooterDefinition, WP42SubDocument *subDocument);
00051 void suppressPageCharacteristics(uint8_t suppressCode);
00052 void endDocument();
00053 void endSubDocument();
00054
00055 protected:
00056 void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, int nextTableIndice = 0);
00057
00058 private:
00059 WPXPageSpan m_currentPage, m_nextPage;
00060 std::vector<WP42SubDocument *> &m_subDocuments;
00061 double m_tempMarginLeft, m_tempMarginRight;
00062 bool m_currentPageHasContent;
00063 bool m_isSubDocument;
00064 std::list<WPXPageSpan>::iterator m_pageListHardPageMark;
00065 };
00066
00067 #endif