00001
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