diff options
Diffstat (limited to 'plugins/src/imageformats/png/main.cpp')
-rw-r--r-- | plugins/src/imageformats/png/main.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/plugins/src/imageformats/png/main.cpp b/plugins/src/imageformats/png/main.cpp new file mode 100644 index 0000000..dcd5792 --- /dev/null +++ b/plugins/src/imageformats/png/main.cpp @@ -0,0 +1,76 @@ +#ifndef QT_CLEAN_NAMESPACE +#define QT_CLEAN_NAMESPACE +#endif +#include <qimageformatplugin.h> + +#ifndef QT_NO_IMAGEFORMATPLUGIN + +#ifdef QT_NO_IMAGEIO_PNG +#undef QT_NO_IMAGEIO_PNG +#endif +#include "../../../../src/kernel/qpngio.cpp" + +class PNGFormat : public QImageFormatPlugin +{ +public: + PNGFormat(); + + QStringList keys() const; + bool loadImage( const QString &format, const QString &filename, QImage * ); + bool saveImage( const QString &format, const QString &filename, const QImage& ); + bool installIOHandler( const QString & ); +}; + +PNGFormat::PNGFormat() +{ +} + + +QStringList PNGFormat::keys() const +{ + QStringList list; + list << "PNG"; + + return list; +} + +bool PNGFormat::loadImage( const QString &format, const QString &filename, QImage *image ) +{ + if ( format != "PNG" ) + return FALSE; + + QImageIO io; + io.setFileName( filename ); + io.setImage( *image ); + + read_png_image( &io ); + + return TRUE; +} + +bool PNGFormat::saveImage( const QString &format, const QString &filename, const QImage &image ) +{ + if ( format != "PNG" ) + return FALSE; + + QImageIO io; + io.setFileName( filename ); + io.setImage( image ); + + write_png_image( &io ); + + return TRUE; +} + +bool PNGFormat::installIOHandler( const QString &name ) +{ + if ( name != "PNG" ) + return FALSE; + + qInitPngIO(); + return TRUE; +} + +Q_EXPORT_PLUGIN( PNGFormat ) + +#endif // QT_NO_IMAGEFORMATPLUGIN |