ooimpressimport.h
1/* This file is part of the KDE project
2 Copyright (C) 2002 Laurent Montel <lmontel@mandrakesoft.com>
3 Copyright (c) 2003 Lukas Tinkl <lukas@kde.org>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
19*/
20
21#ifndef OoImpress_IMPORT_H__
22#define OoImpress_IMPORT_H__
23
24#include <KoFilter.h>
25#include <KoStore.h>
26
27#include <tqdom.h>
28#include <tqdict.h>
29#include <tqcolor.h>
30#include <KoStyleStack.h>
31#include <liststylestack.h>
32
33class KZip;
34
35struct animationList
36{
37 TQDomElement *element;
38 int order;
39};
40
41class OoImpressImport : public KoFilter
42{
43 TQ_OBJECT
44
45public:
46 OoImpressImport( KoFilter * parent, const char * name, const TQStringList & );
47 virtual ~OoImpressImport();
48
49 virtual KoFilter::ConversionStatus convert( TQCString const & from, TQCString const & to );
50
51private:
52 void createDocumentInfo( TQDomDocument &docinfo );
53 void createDocumentContent( TQDomDocument &doccontent );
54 void createStyleMap( TQDomDocument &docstyles );
55 void insertDraws( const TQDomElement& styles );
56 void insertStyles( const TQDomElement& styles );
57 void insertStylesPresentation( const TQDomElement& styles );
58
59 void fillStyleStack( const TQDomElement& object,bool sticky = false );
60 void addStyles( const TQDomElement* style );
61 void appendName(TQDomDocument& doc, TQDomElement& e, const TQDomElement& object);
62 void append2DGeometry( TQDomDocument& doc, TQDomElement& e, const TQDomElement& object, int offset );
63 bool appendLineGeometry( TQDomDocument& doc, TQDomElement& e, const TQDomElement& object, int offset );
64 void appendPoints(TQDomDocument& doc, TQDomElement& e, const TQDomElement& object);
65 void appendPie( TQDomDocument& doc, TQDomElement& e, const TQDomElement& object );
66 void appendImage( TQDomDocument& doc, TQDomElement& e, TQDomElement& p, const TQDomElement& object );
67 void appendBackgroundImage( TQDomDocument& doc, TQDomElement& e, TQDomElement& p, const TQDomElement& object );
68 void appendBackgroundGradient( TQDomDocument& doc, TQDomElement& e, const TQDomElement& object );
69 void appendRounding( TQDomDocument& doc, TQDomElement& e, const TQDomElement& object );
70 void appendPen( TQDomDocument& doc, TQDomElement& e );
71 void appendBrush( TQDomDocument& doc, TQDomElement& e );
72 void appendShadow( TQDomDocument& doc, TQDomElement& e );
73 void appendLineEnds( TQDomDocument& doc, TQDomElement& e, bool _orderEndStartLine = true );
74 void appendTextObjectMargin( TQDomDocument& doc, TQDomElement& e );
75 void appendField(TQDomDocument& doc, TQDomElement& e, const TQDomElement& object, uint pos);
76 void createPresentationAnimation(const TQDomElement& element);
77 TQDomElement findAnimationByObjectID(const TQString & id, int & order);
78
79 void appendObjectEffect(TQDomDocument& doc, TQDomElement& e, const TQDomElement& object, TQDomElement& sound);
80 void appendBackgroundPage( TQDomDocument &doc, TQDomElement &e,TQDomElement & pictureElement, TQDomElement &soundElement );
81
82 TQDomElement saveHelper(const TQString &tmpText, TQDomDocument &doc);
83 void appendObject(TQDomNode & drawPage, TQDomDocument & doc, TQDomElement & soundElement, TQDomElement & pictureElement, TQDomElement & pageNoteElement, TQDomElement &objectElement,double offset, bool sticky = false);
84
85 TQString storeImage( const TQDomElement& object );
86 TQString storeSound(const TQDomElement & object, TQDomElement & p, TQDomDocument & doc);
87 TQDomElement parseTextBox( TQDomDocument& doc, const TQDomElement& textBox );
88 bool pushListLevelStyle( const TQString& listStyleName, int level );
89 bool pushListLevelStyle( const TQString& listStyleName, TQDomElement& fullListStyle, int level );
90 void applyListStyle( TQDomElement& paragraph );
91 void parseList( TQDomDocument& doc, TQDomElement& textObjectElement, const TQDomElement& list );
92 void parseParagraphs( TQDomDocument& doc, TQDomElement& textObjectElement, const TQDomElement& textBox );
93 TQDomElement parseParagraph( TQDomDocument& doc, const TQDomElement& paragraph );
94 void parseSpanOrSimilar( TQDomDocument& doc, const TQDomElement& parent,
95 TQDomElement& outputParagraph, uint& pos);
96 bool parseSettings( TQDomDocument &doc, TQDomElement &helpLineElement, TQDomElement &attributeElement );
97 void parseHelpLine( TQDomDocument &doc,TQDomElement &helpLineElement, const TQString &text );
98
99 KoFilter::ConversionStatus openFile();
100 KoFilter::ConversionStatus loadAndParse(const TQString& filename, TQDomDocument& doc);
101
102 int m_numPicture;
103 int m_numSound;
104 TQDomDocument m_content;
105 TQDomDocument m_meta;
106 TQDomDocument m_settings;
107 TQDict<TQDomElement> m_styles, m_draws, m_stylesPresentation;
108 TQDict<TQDomElement> m_listStyles;
109 TQDict<animationList> m_animations;
110
111 bool m_insideOrderedList;
112 bool m_nextItemIsListItem; // only the first elem inside list-item is numbered
113 int m_restartNumbering;
114 TQString m_currentListStyleName;
115
116 KZip * m_zip;
117 KoStyleStack m_styleStack;
118 ListStyleStack m_listStyleStack;
119};
120
121#endif
This class implements the list styles currently active at a given point.