00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef OoImpress_IMPORT_H__
00022 #define OoImpress_IMPORT_H__
00023
00024 #include <KoFilter.h>
00025 #include <KoStore.h>
00026
00027 #include <qdom.h>
00028 #include <qdict.h>
00029 #include <qcolor.h>
00030 #include <KoStyleStack.h>
00031 #include <liststylestack.h>
00032
00033 class KZip;
00034
00035 struct animationList
00036 {
00037 QDomElement *element;
00038 int order;
00039 };
00040
00041 class OoImpressImport : public KoFilter
00042 {
00043 Q_OBJECT
00044 public:
00045 OoImpressImport( KoFilter * parent, const char * name, const QStringList & );
00046 virtual ~OoImpressImport();
00047
00048 virtual KoFilter::ConversionStatus convert( QCString const & from, QCString const & to );
00049
00050 private:
00051 void createDocumentInfo( QDomDocument &docinfo );
00052 void createDocumentContent( QDomDocument &doccontent );
00053 void createStyleMap( QDomDocument &docstyles );
00054 void insertDraws( const QDomElement& styles );
00055 void insertStyles( const QDomElement& styles );
00056 void insertStylesPresentation( const QDomElement& styles );
00057
00058 void fillStyleStack( const QDomElement& object,bool sticky = false );
00059 void addStyles( const QDomElement* style );
00060 void appendName(QDomDocument& doc, QDomElement& e, const QDomElement& object);
00061 void append2DGeometry( QDomDocument& doc, QDomElement& e, const QDomElement& object, int offset );
00062 bool appendLineGeometry( QDomDocument& doc, QDomElement& e, const QDomElement& object, int offset );
00063 void appendPoints(QDomDocument& doc, QDomElement& e, const QDomElement& object);
00064 void appendPie( QDomDocument& doc, QDomElement& e, const QDomElement& object );
00065 void appendImage( QDomDocument& doc, QDomElement& e, QDomElement& p, const QDomElement& object );
00066 void appendBackgroundImage( QDomDocument& doc, QDomElement& e, QDomElement& p, const QDomElement& object );
00067 void appendBackgroundGradient( QDomDocument& doc, QDomElement& e, const QDomElement& object );
00068 void appendRounding( QDomDocument& doc, QDomElement& e, const QDomElement& object );
00069 void appendPen( QDomDocument& doc, QDomElement& e );
00070 void appendBrush( QDomDocument& doc, QDomElement& e );
00071 void appendShadow( QDomDocument& doc, QDomElement& e );
00072 void appendLineEnds( QDomDocument& doc, QDomElement& e, bool _orderEndStartLine = true );
00073 void appendTextObjectMargin( QDomDocument& doc, QDomElement& e );
00074 void appendField(QDomDocument& doc, QDomElement& e, const QDomElement& object, uint pos);
00075 void createPresentationAnimation(const QDomElement& element);
00076 QDomElement findAnimationByObjectID(const QString & id, int & order);
00077
00078 void appendObjectEffect(QDomDocument& doc, QDomElement& e, const QDomElement& object, QDomElement& sound);
00079 void appendBackgroundPage( QDomDocument &doc, QDomElement &e,QDomElement & pictureElement, QDomElement &soundElement );
00080
00081 QDomElement saveHelper(const QString &tmpText, QDomDocument &doc);
00082 void appendObject(QDomNode & drawPage, QDomDocument & doc, QDomElement & soundElement, QDomElement & pictureElement, QDomElement & pageNoteElement, QDomElement &objectElement,double offset, bool sticky = false);
00083
00084 QString storeImage( const QDomElement& object );
00085 QString storeSound(const QDomElement & object, QDomElement & p, QDomDocument & doc);
00086 QDomElement parseTextBox( QDomDocument& doc, const QDomElement& textBox );
00087 bool pushListLevelStyle( const QString& listStyleName, int level );
00088 bool pushListLevelStyle( const QString& listStyleName, QDomElement& fullListStyle, int level );
00089 void applyListStyle( QDomElement& paragraph );
00090 void parseList( QDomDocument& doc, QDomElement& textObjectElement, const QDomElement& list );
00091 void parseParagraphs( QDomDocument& doc, QDomElement& textObjectElement, const QDomElement& textBox );
00092 QDomElement parseParagraph( QDomDocument& doc, const QDomElement& paragraph );
00093 void parseSpanOrSimilar( QDomDocument& doc, const QDomElement& parent,
00094 QDomElement& outputParagraph, uint& pos);
00095 bool parseSettings( QDomDocument &doc, QDomElement &helpLineElement, QDomElement &attributeElement );
00096 void parseHelpLine( QDomDocument &doc,QDomElement &helpLineElement, const QString &text );
00097
00098 KoFilter::ConversionStatus openFile();
00099 KoFilter::ConversionStatus loadAndParse(const QString& filename, QDomDocument& doc);
00100
00101 int m_numPicture;
00102 int m_numSound;
00103 QDomDocument m_content;
00104 QDomDocument m_meta;
00105 QDomDocument m_settings;
00106 QDict<QDomElement> m_styles, m_draws, m_stylesPresentation;
00107 QDict<QDomElement> m_listStyles;
00108 QDict<animationList> m_animations;
00109
00110 bool m_insideOrderedList;
00111 bool m_nextItemIsListItem;
00112 int m_restartNumbering;
00113 QString m_currentListStyleName;
00114
00115 KZip * m_zip;
00116 KoStyleStack m_styleStack;
00117 ListStyleStack m_listStyleStack;
00118 };
00119
00120 #endif