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
00028
00029
00030 #ifndef WP6STYLESLISTENER_H
00031 #define WP6STYLESLISTENER_H
00032
00033 #include "WP6Listener.h"
00034 #include "WPXStylesListener.h"
00035 #include <vector>
00036 #include <set>
00037 #include <list>
00038 #include "WPXPageSpan.h"
00039 #include "WPXTable.h"
00040
00041 class WPXSubDocument;
00042
00043 class WP6StylesListener : public WP6Listener, protected WPXStylesListener
00044 {
00045 public:
00046 WP6StylesListener(std::list<WPXPageSpan> &pageList, WPXTableList tableList);
00047
00048 void setDate(const uint16_t , const uint16_t ,
00049 const uint8_t , const uint8_t ,
00050 const uint8_t , const uint8_t ,
00051 const uint8_t , const uint8_t ,
00052 const uint8_t , const uint8_t ) {}
00053 void setExtendedInformation(const uint16_t , const WPXString & ) {}
00054 void startDocument() {}
00055 void startSubDocument() {}
00056 void setAlignmentCharacter(const uint16_t ) {}
00057 void setLeaderCharacter(const uint16_t , const uint8_t ) {}
00058 void defineTabStops(const bool , const std::vector<WPXTabStop> & ,
00059 const std::vector<bool> & ) {}
00060 void insertCharacter(uint32_t )
00061 {
00062 if (!isUndoOn()) m_currentPageHasContent = true;
00063 }
00064 void insertTab(const uint8_t , double )
00065 {
00066 if (!isUndoOn()) m_currentPageHasContent = true;
00067 }
00068 void handleLineBreak()
00069 {
00070 if (!isUndoOn()) m_currentPageHasContent = true;
00071 }
00072 void insertEOL()
00073 {
00074 if (!isUndoOn()) m_currentPageHasContent = true;
00075 }
00076 void insertBreak(const uint8_t breakType);
00077 void characterColorChange(const uint8_t , const uint8_t , const uint8_t ) {}
00078 void characterShadingChange(const uint8_t ) {}
00079 void highlightChange(const bool , const RGBSColor ) {}
00080 void fontChange(const uint16_t , const uint16_t , const WPXString & ) {}
00081 void attributeChange(const bool , const uint8_t ) {}
00082 void lineSpacingChange(const double ) {}
00083 void spacingAfterParagraphChange(const double , const double ) {}
00084 void justificationChange(const uint8_t ) {}
00085 void pageNumberingChange(const WPXPageNumberPosition , const uint16_t , const uint16_t );
00086 void pageMarginChange(const uint8_t side, const uint16_t margin);
00087 void pageFormChange(const uint16_t length, const uint16_t width, const WPXFormOrientation orientation);
00088 void marginChange(const uint8_t side, const uint16_t margin);
00089 void paragraphMarginChange(const uint8_t , const int16_t ) {}
00090 void indentFirstLineChange(const int16_t ) {}
00091 void columnChange(const WPXTextColumnType , const uint8_t ,
00092 const std::vector<double> & , const std::vector<bool> & ) {}
00093 void updateOutlineDefinition(const WP6OutlineLocation , const uint16_t ,
00094 const uint8_t * , const uint8_t ) {}
00095
00096 void paragraphNumberOn(const uint16_t , const uint8_t , const uint8_t ) {}
00097 void paragraphNumberOff()
00098 {
00099 if (!isUndoOn()) m_currentPageHasContent = true;
00100 }
00101 void displayNumberReferenceGroupOn(const uint8_t , const uint8_t ) {}
00102 void displayNumberReferenceGroupOff(const uint8_t )
00103 {
00104 if (!isUndoOn()) m_currentPageHasContent = true;
00105 }
00106 void styleGroupOn(const uint8_t ) {}
00107 void styleGroupOff(const uint8_t ) {}
00108 void globalOn(const uint8_t ) {}
00109 void globalOff() {}
00110 void noteOn(const uint16_t textPID);
00111 void noteOff(const WPXNoteType ) {}
00112 void headerFooterGroup(const uint8_t headerFooterType, const uint8_t occurenceBits, const uint16_t textPID);
00113 void suppressPageCharacteristics(const uint8_t suppressCode);
00114 void setPageNumber(const uint16_t pageNumber);
00115 void setPageNumberingType(const WPXNumberingType pageNumberingType);
00116
00117 void endDocument();
00118 void endSubDocument();
00119
00120 void defineTable(const uint8_t position, const uint16_t leftOffset);
00121 void addTableColumnDefinition(const uint32_t , const uint32_t , const uint32_t ,
00122 const uint32_t , const uint8_t ) {}
00123 void startTable();
00124 void insertRow(const uint16_t rowHeight, const bool isMinimumHeight, const bool isHeaderRow);
00125 void insertCell(const uint8_t colSpan, const uint8_t rowSpan, const uint8_t borderBits,
00126 const RGBSColor *cellFgColor, const RGBSColor *cellBgColor,
00127 const RGBSColor *cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment,
00128 const bool useCellAttributes, const uint32_t cellAttributes);
00129 void endTable();
00130 void boxOn(const uint8_t , const uint8_t , const uint8_t ,
00131 const int16_t , const uint8_t , const uint8_t ,
00132 const uint8_t , const int16_t , const uint8_t ,
00133 const uint16_t , const uint8_t , const uint16_t , const uint8_t ,
00134 const uint16_t , const uint16_t ) {}
00135 void boxOff() {}
00136 void insertGraphicsData(const uint16_t ) {}
00137 void insertTextBox(const WP6SubDocument *subDocument);
00138 void commentAnnotation(const uint16_t textPID);
00139
00140 void undoChange(const uint8_t undoType, const uint16_t undoLevel);
00141
00142 protected:
00143 void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, int nextTableIndice = 0);
00144
00145 void _flushText() {}
00146 void _changeList() {}
00147
00148 private:
00149 WP6StylesListener(const WP6StylesListener &);
00150 WP6StylesListener &operator=(const WP6StylesListener &);
00151 WPXPageSpan m_currentPage;
00152
00153 WPXTableList m_tableList;
00154 WPXTable *m_currentTable;
00155 double m_tempMarginLeft, m_tempMarginRight;
00156 bool m_currentPageHasContent;
00157 bool m_isTableDefined;
00158 bool m_isSubDocument;
00159 std::set <const WPXSubDocument *> m_subDocuments;
00160 std::list<WPXPageSpan>::iterator m_pageListHardPageMark;
00161 };
00162
00163 #endif
00164