filters

ooimpressimport.h

00001 /* This file is part of the KDE project
00002    Copyright (C) 2002 Laurent Montel <lmontel@mandrakesoft.com>
00003    Copyright (c) 2003 Lukas Tinkl <lukas@kde.org>
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Library General Public
00007    License as published by the Free Software Foundation; either
00008    version 2 of the License, or (at your option) any later version.
00009 
00010    This library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Library General Public License for more details.
00014 
00015    You should have received a copy of the GNU Library General Public License
00016    along with this library; see the file COPYING.LIB.  If not, write to
00017    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018  * Boston, MA 02110-1301, USA.
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; // only the first elem inside list-item is numbered
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
KDE Home | KDE Accessibility Home | Description of Access Keys