koFilter.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __koffice_filter_h__
00021 #define __koffice_filter_h__
00022
00023 #include <qobject.h>
00024 #include <qmap.h>
00025 #include <qptrstack.h>
00026
00027 class QIODevice;
00028 class KoFilterChain;
00029
00047 class KoFilter : public QObject
00048 {
00049 Q_OBJECT
00050
00051 friend class KoFilterEntry;
00052 friend class KoFilterChain;
00053
00054 public:
00061 enum ConversionStatus { OK, StupidError, UsageError, CreationError, FileNotFound,
00062 StorageCreationError, BadMimeType, BadConversionGraph,
00063 EmbeddedDocError, WrongFormat, NotImplemented,
00064 ParsingError, InternalError, UnexpectedEOF,
00065 UnexpectedOpcode, UserCancelled, OutOfMemory,
00066 JustInCaseSomeBrokenCompilerUsesLessThanAByte = 255 };
00067
00068 virtual ~KoFilter();
00069
00081 virtual ConversionStatus convert( const QCString& from, const QCString& to ) = 0;
00082
00083 signals:
00091 void sigProgress( int value );
00092
00093 protected:
00097 KoFilter();
00098
00104 KoFilterChain* m_chain;
00105
00106 private:
00107 KoFilter( const KoFilter& rhs );
00108 KoFilter& operator=( const KoFilter& rhs );
00109
00110 class Private;
00111 Private* d;
00112 };
00113
00114
00142 class KoEmbeddingFilter : public KoFilter
00143 {
00144 Q_OBJECT
00145
00146 friend class KoFilterChain;
00147
00148 public:
00149 virtual ~KoEmbeddingFilter();
00150
00159 int lruPartIndex() const;
00160
00167 static QString mimeTypeByExtension( const QString& extension );
00168
00169 protected:
00174 KoEmbeddingFilter();
00175
00197 int embedPart( const QCString& from, QCString& to,
00198 KoFilter::ConversionStatus& status,
00199 const QString& key = QString::null );
00200
00211 void startInternalEmbedding( const QString& key, const QCString& mimeType );
00212
00219 void endInternalEmbedding();
00220
00230 int internalPartReference( const QString& key ) const;
00231
00240 QCString internalPartMimeType( const QString& key ) const;
00241
00242 private:
00243
00244
00245 struct PartReference
00246 {
00247 PartReference( int index = -1, const QCString& mimeType = "" );
00248 bool isValid() const;
00249
00250 int m_index;
00251 QCString m_mimeType;
00252 };
00253
00254
00255
00256
00257
00258 struct PartState
00259 {
00260 PartState();
00261
00262 int m_lruPartIndex;
00263 QMap<QString, PartReference> m_partReferences;
00264 };
00265
00266
00267 KoEmbeddingFilter( const KoEmbeddingFilter& rhs );
00268 KoEmbeddingFilter& operator=( const KoEmbeddingFilter& rhs );
00269
00280 virtual void savePartContents( QIODevice* file );
00281
00282
00283
00284
00285 void filterChainEnterDirectory( const QString& directory ) const;
00286 void filterChainLeaveDirectory() const;
00287
00288
00289
00290 QPtrStack<PartState> m_partStack;
00291
00292 class Private;
00293 Private* d;
00294 };
00295
00296 #endif
This file is part of the documentation for lib Library Version 1.3.5.