diff options
Diffstat (limited to 'plugins/src/imageformats/png')
-rw-r--r-- | plugins/src/imageformats/png/main.cpp | 76 | ||||
-rw-r--r-- | plugins/src/imageformats/png/png.pro | 55 |
2 files changed, 131 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 diff --git a/plugins/src/imageformats/png/png.pro b/plugins/src/imageformats/png/png.pro new file mode 100644 index 0000000..fd1db1c --- /dev/null +++ b/plugins/src/imageformats/png/png.pro @@ -0,0 +1,55 @@ +TEMPLATE = lib +TARGET += qpng + +CONFIG += qt plugin +DESTDIR = ../../../imageformats + +VERSION = 1.0.0 +REQUIRES = !no-png !png + +SOURCES += main.cpp + +system-png { + unix:LIBS += -lpng + win32:LIBS += libpng.lib +} +!system-png { + INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/libpng + INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/zlib + SOURCES += \ + ../../../../src/3rdparty/libpng/png.c \ + ../../../../src/3rdparty/libpng/pngerror.c \ + ../../../../src/3rdparty/libpng/pngget.c \ + ../../../../src/3rdparty/libpng/pngmem.c \ + ../../../../src/3rdparty/libpng/pngpread.c \ + ../../../../src/3rdparty/libpng/pngread.c \ + ../../../../src/3rdparty/libpng/pngrio.c \ + ../../../../src/3rdparty/libpng/pngrtran.c \ + ../../../../src/3rdparty/libpng/pngrutil.c \ + ../../../../src/3rdparty/libpng/pngset.c \ + ../../../../src/3rdparty/libpng/pngtrans.c \ + ../../../../src/3rdparty/libpng/pngwio.c \ + ../../../../src/3rdparty/libpng/pngwrite.c \ + ../../../../src/3rdparty/libpng/pngwtran.c \ + ../../../../src/3rdparty/libpng/pngwutil.c +} + +!system-zlib:SOURCES += \ + ../../../../src/3rdparty/zlib/adler32.c \ + ../../../../src/3rdparty/zlib/compress.c \ + ../../../../src/3rdparty/zlib/crc32.c \ + ../../../../src/3rdparty/zlib/deflate.c \ + ../../../../src/3rdparty/zlib/gzio.c \ + ../../../../src/3rdparty/zlib/inffast.c \ + ../../../../src/3rdparty/zlib/inflate.c \ + ../../../../src/3rdparty/zlib/inftrees.c \ + ../../../../src/3rdparty/zlib/trees.c \ + ../../../../src/3rdparty/zlib/uncompr.c \ + ../../../../src/3rdparty/zlib/zutil.c + +system-zlib:unix:LIBS += -lz +system-zlib:mac:LIBS += -lz + + +target.path += $$plugins.path/imageformats +INSTALLS += target |