summaryrefslogtreecommitdiffstats
path: root/kimgio/tiffr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kimgio/tiffr.cpp')
-rw-r--r--kimgio/tiffr.cpp39
1 files changed, 34 insertions, 5 deletions
diff --git a/kimgio/tiffr.cpp b/kimgio/tiffr.cpp
index bbffa82a9..2678d537e 100644
--- a/kimgio/tiffr.cpp
+++ b/kimgio/tiffr.cpp
@@ -6,12 +6,20 @@
#include <tiffio.h>
+#include <kdebug.h>
#include <tqimage.h>
#include <tqfile.h>
#include <tdelibs_export.h>
#include <assert.h>
+#if (TIFFLIB_VERSION >= 20210416)
+#undef uint16
+#define uint16 uint16_t
+#undef uint32
+#define uint32 uint32_t
+#endif
+
#include "tiffr.h"
static tsize_t tiff_read( thandle_t handle, tdata_t buf, tsize_t size )
@@ -60,12 +68,15 @@ static void tiff_unmap( thandle_t, tdata_t, toff_t )
{
}
-KDE_EXPORT void kimgio_tiff_read( TQImageIO *io )
+TDE_EXPORT void kimgio_tiff_read( TQImageIO *io )
{
TIFF *tiff;
uint32 width, height;
uint32 *data;
+ uint16 extra_samples_count;
+ uint16 *extra_samples;
+
// FIXME: use qdatastream
// open file
@@ -79,9 +90,12 @@ KDE_EXPORT void kimgio_tiff_read( TQImageIO *io )
}
// create image with loaded dimensions
- if( TIFFGetField( tiff, TIFFTAG_IMAGEWIDTH, &width ) != 1
- || TIFFGetField( tiff, TIFFTAG_IMAGELENGTH, &height ) != 1 )
- return;
+ if ((TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &width) != 1) ||
+ (TIFFGetField(tiff, TIFFTAG_IMAGELENGTH, &height) != 1))
+ {
+ TIFFClose(tiff);
+ return;
+ }
TQImage image( width, height, 32 );
if( image.isNull()) {
@@ -128,6 +142,21 @@ KDE_EXPORT void kimgio_tiff_read( TQImageIO *io )
// swap rows
}
+ // Extra Samples
+ if (TIFFGetField(tiff, TIFFTAG_EXTRASAMPLES, &extra_samples_count, &extra_samples) == 1)
+ {
+ kdDebug(399) << "TIFF image has " << extra_samples_count << " extra sample(s)." << endl;
+ for (uint16 i = 0; i < extra_samples_count; i++)
+ {
+ if ((extra_samples[i] == EXTRASAMPLE_ASSOCALPHA) ||
+ (extra_samples[i] == EXTRASAMPLE_UNASSALPHA))
+ {
+ image.setAlphaBuffer(true);
+ break;
+ }
+ }
+ }
+
// set channel order to Qt order
// FIXME: Right now they are the same, but will it change?
@@ -143,7 +172,7 @@ KDE_EXPORT void kimgio_tiff_read( TQImageIO *io )
io->setStatus ( 0 );
}
-KDE_EXPORT void kimgio_tiff_write( TQImageIO * )
+TDE_EXPORT void kimgio_tiff_write( TQImageIO * )
{
// TODO: stub
}