summaryrefslogtreecommitdiffstats
path: root/plugins/src/imageformats/png/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/src/imageformats/png/main.cpp')
-rw-r--r--plugins/src/imageformats/png/main.cpp76
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