WP5ContentListener.h

Go to the documentation of this file.
00001 /* libwpd
00002  * Copyright (C) 2003 William Lachance (wrlach@gmail.com)
00003  * Copyright (C) 2003 Marc Maurer (uwog@uwog.net)
00004  * Copyright (C) 2005-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Library General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Library General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Library General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
00019  *
00020  * For further information visit http://libwpd.sourceforge.net
00021  */
00022 
00023 /* "This product is not manufactured, approved, or supported by
00024  * Corel Corporation or Corel Corporation Limited."
00025  */
00026 
00027 #ifndef WP5CONTENTLISTENER_H
00028 #define WP5CONTENTLISTENER_H
00029 
00030 #include "WP5Listener.h"
00031 #include "WPXContentListener.h"
00032 #include "WP5SubDocument.h"
00033 #include "WPXString.h"
00034 #include "libwpd_internal.h"
00035 #include "WPXHLListenerImpl.h"
00036 #include <vector>
00037 
00038 typedef struct _WP5ContentParsingState WP5ContentParsingState;
00039 struct _WP5ContentParsingState
00040 {
00041         _WP5ContentParsingState();
00042         ~_WP5ContentParsingState();
00043         WPXString m_textBuffer;
00044         WPXString m_noteReference;
00045 
00046         WPXTableList m_tableList;
00047 };
00048 
00049 class WP5ContentListener : public WP5Listener, protected WPXContentListener
00050 {
00051 public:
00052         WP5ContentListener(std::list<WPXPageSpan> &pageList, std::vector<WP5SubDocument *> &subDocuments, WPXHLListenerImpl *listenerImpl);
00053         ~WP5ContentListener();
00054 
00055         void startDocument() { WPXContentListener::startDocument(); };
00056         void setFont(const WPXString &fontName, const float fontSize);
00057         void insertCharacter(const uint16_t character);
00058         void insertTab(const uint8_t tabType, float tabPosition);
00059         void insertEOL();
00060         void insertBreak(const uint8_t breakType) { WPXContentListener::insertBreak(breakType); };
00061         void lineSpacingChange(const float lineSpacing) { WPXContentListener::lineSpacingChange(lineSpacing); };
00062         void justificationChange(const uint8_t justification) { WPXContentListener::justificationChange(justification); };
00063         void characterColorChange(const uint8_t red, const uint8_t green, const uint8_t blue);
00064         void attributeChange(const bool isOn, const uint8_t attribute);
00065         void pageMarginChange(const uint8_t /* side */, const uint16_t /* margin */) {};
00066         void pageFormChange(const uint16_t /* length */, const uint16_t /* width */, const WPXFormOrientation /* orientation */) {};
00067         void marginChange(const uint8_t side, const uint16_t margin);
00068         void paragraphMarginChange(const uint8_t /* side */, const int16_t /* margin */) {};
00069         void endDocument() { WPXContentListener::endDocument(); };
00070 
00071         void defineTable(const uint8_t position, const uint16_t leftOffset);
00072         void addTableColumnDefinition(const uint32_t width, const uint32_t leftGutter, const uint32_t rightGutter,
00073                                 const uint32_t attributes, const uint8_t alignment);
00074         void startTable();
00075         void insertRow(const uint16_t rowHeight, const bool isMinimumHeight, const bool isHeaderRow);
00076         void insertCell(const uint8_t colSpan, const uint8_t rowSpan, const uint8_t borderBits,
00077                                 const RGBSColor * cellFgColor, const RGBSColor * cellBgColor, 
00078                                 const RGBSColor * cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment, 
00079                                 const bool useCellAttributes, const uint32_t cellAttributes);
00080         void endTable();
00081 
00082         void insertNoteReference(const WPXString &noteReference);
00083         void insertNote(const WPXNoteType noteType, const WP5SubDocument *subDocument);
00084         void headerFooterGroup(const uint8_t headerFooterType, const uint8_t occurenceBits, WP5SubDocument *subDocument);
00085         void suppressPageCharacteristics(const uint8_t /* suppressCode */) {};
00086         
00087         void setDefaultFont(const WPXString &fontName, const float fontSize);
00088         
00089 protected:
00090         void _handleSubDocument(const WPXSubDocument *subDocument, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice = 0);
00091 
00092         void _flushText();
00093         void _changeList() {};
00094 
00095 private:
00096         WP5ContentListener(const WP5ContentListener&);
00097         WP5ContentListener& operator=(const WP5ContentListener&);
00098         WP5ContentParsingState *m_parseState;
00099         std::vector<WP5SubDocument *> &m_subDocuments;
00100         float m_defaultFontSize;
00101         WPXString m_defaultFontName;
00102 };
00103 
00104 #endif /* WP5CONTENTLISTENER_H */

Generated on Mon Sep 10 13:44:27 2007 for libwpd by doxygen 1.5.3