diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kimgio/g3r.cpp | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kimgio/g3r.cpp')
-rw-r--r-- | kimgio/g3r.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/kimgio/g3r.cpp b/kimgio/g3r.cpp new file mode 100644 index 000000000..d67aa2da6 --- /dev/null +++ b/kimgio/g3r.cpp @@ -0,0 +1,53 @@ +// This library is distributed under the conditions of the GNU LGPL. + +#include "config.h" + +#ifdef HAVE_LIBTIFF + +#include <tiffio.h> + +#include <qimage.h> +#include <qfile.h> + +#include "g3r.h" + +KDE_EXPORT void kimgio_g3_read( QImageIO *io ) +{ + // This won't work if io is not a QFile ! + TIFF *tiff = TIFFOpen(QFile::encodeName(io->fileName()), "r"); + if (!tiff) + return; + + uint32 width, height; + tsize_t scanlength; + + if( TIFFGetField( tiff, TIFFTAG_IMAGEWIDTH, &width ) != 1 + || TIFFGetField( tiff, TIFFTAG_IMAGELENGTH, &height ) != 1 ) + return; + scanlength = TIFFScanlineSize(tiff); + + QImage image(width, height, 1, 0, QImage::BigEndian); + + if (image.isNull() || scanlength != image.bytesPerLine()) + { + TIFFClose(tiff); + return; + } + + for (uint32 y=0; y < height; y++) + TIFFReadScanline(tiff, image.scanLine(y), y); + + TIFFClose(tiff); + + io->setImage(image); + io->setStatus(0); +} + + +KDE_EXPORT void kimgio_g3_write(QImageIO *) +{ + // TODO: stub +} + + +#endif |