|
|
|
@ -6,6 +6,7 @@
|
|
|
|
|
|
|
|
|
|
#include <tiffio.h>
|
|
|
|
|
|
|
|
|
|
#include <kdebug.h>
|
|
|
|
|
#include <tqimage.h>
|
|
|
|
|
#include <tqfile.h>
|
|
|
|
|
#include <tdelibs_export.h>
|
|
|
|
@ -66,6 +67,9 @@ TDE_EXPORT void kimgio_tiff_read( TQImageIO *io )
|
|
|
|
|
uint32 width, height;
|
|
|
|
|
uint32 *data;
|
|
|
|
|
|
|
|
|
|
uint16_t extra_samples_count;
|
|
|
|
|
uint16_t *extra_samples;
|
|
|
|
|
|
|
|
|
|
// FIXME: use qdatastream
|
|
|
|
|
|
|
|
|
|
// open file
|
|
|
|
@ -79,9 +83,12 @@ TDE_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 )
|
|
|
|
|
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 +135,21 @@ TDE_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_t 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?
|
|
|
|
|
|
|
|
|
|