kimageiofactory.h00001
00002
00003
00004
00005
00006
00007
00008 #ifndef SSK_KIMGIOFACTORY_H
00009 #define SSK_KIMGIOFACTORY_H
00010
00011 #include "ksycocafactory.h"
00012 #include "kimageio.h"
00013
00014 class KImageIOFormat;
00015 class KImageIOFormatList;
00016
00018 class KIO_EXPORT KImageIOFormat : public KSycocaEntry
00019 {
00020 K_SYCOCATYPE( KST_KImageIOFormat, KSycocaEntry )
00021
00022 public:
00023 typedef KSharedPtr<KImageIOFormat> Ptr;
00024 typedef QValueList<Ptr> List;
00025 public:
00029 KImageIOFormat( const QString & path);
00030
00034 KImageIOFormat( QDataStream& _str, int offset);
00035
00036 virtual ~KImageIOFormat();
00037
00038 virtual QString name() const { return mType; }
00039
00040 virtual bool isValid() const { return true; }
00041
00046 virtual void load(QDataStream& );
00047
00052 virtual void save(QDataStream& );
00053
00058 void callLibFunc( bool read, QImageIO *);
00059
00060 public:
00061 QString mType;
00062 QString mHeader;
00063 QString mFlags;
00064 bool bRead;
00065 bool bWrite;
00066 QStringList mSuffices;
00067 QString mPattern;
00068 QString mMimetype;
00069 QString mLib;
00070 QStringList rPaths;
00071 bool bLibLoaded;
00072 void (*mReadFunc)(QImageIO *);
00073 void (*mWriteFunc)(QImageIO *);
00074 protected:
00075 virtual void virtual_hook( int id, void* data );
00076 };
00077
00079 class KIO_EXPORT KImageIOFormatList : public KImageIOFormat::List
00080 {
00081 public:
00082 KImageIOFormatList() { }
00083 };
00084
00085
00087 class KIO_EXPORT KImageIOFactory : public KSycocaFactory
00088 {
00089 friend class KImageIO;
00090 K_SYCOCAFACTORY( KST_KImageIO )
00091 public:
00092 static KImageIOFactory *self()
00093 { if (!_self) new KImageIOFactory(); return _self; }
00094 KImageIOFactory();
00095 virtual ~KImageIOFactory();
00096
00097 protected:
00103 void load();
00104
00108 QString createPattern( KImageIO::Mode _mode);
00109
00113 virtual KSycocaEntry *createEntry(const QString &, const char *)
00114 { return 0; }
00115
00119 virtual KSycocaEntry *createEntry(int offset);
00120
00124 static void readImage( QImageIO *iio);
00125
00129 static void writeImage( QImageIO *iio);
00130
00131 protected:
00132 static KImageIOFactory *_self;
00133 static KImageIOFormatList *formatList;
00134 QString mReadPattern;
00135 QString mWritePattern;
00136 QStringList rPath;
00137 protected:
00138 virtual void virtual_hook( int id, void* data );
00139 };
00140
00141 #endif
00142
|