filters
texthandler.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef TEXTHANDLER_H
00021 #define TEXTHANDLER_H
00022
00023 #include "tablehandler.h"
00024 #include "versionmagic.h"
00025
00026 #include <wv2/handlers.h>
00027 #include <qstring.h>
00028 #include <qobject.h>
00029 #include <qdom.h>
00030
00031 #include <string>
00032
00033 namespace wvWare {
00034 class Style;
00035 class Parser;
00036 class FunctorBase;
00037 namespace Word97 {
00038 class PAP;
00039 }
00040 }
00041
00042 class KWordReplacementHandler : public wvWare::InlineReplacementHandler
00043 {
00044 public:
00045 virtual wvWare::U8 hardLineBreak();
00046 virtual wvWare::U8 nonBreakingHyphen();
00047 virtual wvWare::U8 nonRequiredHyphen();
00048 };
00049
00050
00051 class KWordTextHandler : public QObject, public wvWare::TextHandler
00052 {
00053 Q_OBJECT
00054 public:
00055 KWordTextHandler( wvWare::SharedPtr<wvWare::Parser> parser );
00056
00057 void setFrameSetElement( const QDomElement& frameset );
00058
00060
00061 virtual void sectionStart( wvWare::SharedPtr<const wvWare::Word97::SEP> sep );
00062 virtual void sectionEnd();
00063 virtual void pageBreak();
00064 virtual void headersFound( const wvWare::HeaderFunctor& parseHeaders );
00065 virtual void footnoteFound( wvWare::FootnoteData::Type type, wvWare::UChar character,
00066 wvWare::SharedPtr<const wvWare::Word97::CHP> chp, const wvWare::FootnoteFunctor& parseFootnote );
00067
00068 virtual void paragraphStart( wvWare::SharedPtr<const wvWare::ParagraphProperties> paragraphProperties );
00069 virtual void paragraphEnd();
00070 virtual void fieldStart( const wvWare::FLD* fld, wvWare::SharedPtr<const wvWare::Word97::CHP> chp );
00071 virtual void fieldSeparator( const wvWare::FLD* fld, wvWare::SharedPtr<const wvWare::Word97::CHP> chp );
00072 virtual void fieldEnd( const wvWare::FLD* fld, wvWare::SharedPtr<const wvWare::Word97::CHP> chp );
00073 virtual void runOfText( const wvWare::UString& text, wvWare::SharedPtr<const wvWare::Word97::CHP> chp );
00074
00075 virtual void tableRowFound( const wvWare::TableRowFunctor& functor, wvWare::SharedPtr<const wvWare::Word97::TAP> tap );
00076
00077 #ifdef IMAGE_IMPORT
00078 virtual void pictureFound( const wvWare::PictureFunctor& picture, wvWare::SharedPtr<const wvWare::Word97::PICF> picf,
00079 wvWare::SharedPtr<const wvWare::Word97::CHP> chp );
00080 #endif // IMAGE_IMPORT
00081
00082
00083
00084 void paragLayoutBegin();
00085
00086
00087
00088 void writeFormat( QDomElement& parentElement, const wvWare::Word97::CHP* chp, const wvWare::Word97::CHP* refChp, int pos, int len, int formatId, QDomElement* pChildElement );
00089
00090
00091 void writeLayout( QDomElement& parentElement, const wvWare::ParagraphProperties& paragraphProperties, const wvWare::Style* style );
00092
00093
00094 signals:
00095 void firstSectionFound( wvWare::SharedPtr<const wvWare::Word97::SEP> );
00096 void subDocFound( const wvWare::FunctorBase* parsingFunctor, int data );
00097 void tableFound( const KWord::Table& table );
00098 void pictureFound( const QString& frameName, const QString& pictureName, const wvWare::FunctorBase* pictureFunctor );
00099
00100 protected:
00101 void writeOutParagraph( const QString& styleName, const QString& text );
00102 void writeCounter( QDomElement& parentElement, const wvWare::ParagraphProperties& paragraphProperties, const wvWare::Style* style );
00103 QDomElement insertVariable( int type, wvWare::SharedPtr<const wvWare::Word97::CHP> chp, const QString& format );
00104 QDomElement insertAnchor( const QString& fsname );
00105 QString getFont(unsigned fc) const;
00106 QDomDocument mainDocument() const;
00107
00108 private:
00109 wvWare::SharedPtr<wvWare::Parser> m_parser;
00110 QString m_listSuffixes[9];
00111 QDomElement m_framesetElement;
00112 int m_sectionNumber;
00113 int m_footNoteNumber;
00114 int m_endNoteNumber;
00115 int m_previousOutlineLSID;
00116 int m_previousEnumLSID;
00117
00118
00119 QString m_paragraph;
00120 const wvWare::Style* m_currentStyle;
00121 wvWare::SharedPtr<const wvWare::ParagraphProperties> m_paragraphProperties;
00122 enum { NoShadow, Shadow, Imprint } m_shadowTextFound;
00123 int m_index;
00124 QDomElement m_formats;
00125 QDomElement m_oldLayout;
00126
00127 KWord::Table* m_currentTable;
00128 bool m_bInParagraph;
00129
00130 QString m_fieldValue;
00131 bool m_insideField;
00132 bool m_fieldAfterSeparator;
00133 int m_fieldType;
00134 };
00135
00136 #endif // TEXTHANDLER_H
|