From ce902afa7cf439f8e15420fd51b381498811793b Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 2 May 2005 20:00:42 +0000 Subject: [PATCH] Fixed TIFF readers handling of interleaved data --- src/osgPlugins/tiff/ReaderWriterTIFF.cpp | 30 +++++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/osgPlugins/tiff/ReaderWriterTIFF.cpp b/src/osgPlugins/tiff/ReaderWriterTIFF.cpp index 4ef5556c0..e3a331f7a 100644 --- a/src/osgPlugins/tiff/ReaderWriterTIFF.cpp +++ b/src/osgPlugins/tiff/ReaderWriterTIFF.cpp @@ -157,19 +157,31 @@ copy_row(unsigned char *ptr, unsigned char *data, int n, int numSamples) } -static void -interleave_row(unsigned char *ptr, -unsigned char *red, unsigned char *blue, unsigned char *green, -int n) +static void interleave_row(unsigned char *ptr, + unsigned char *red, unsigned char *green, unsigned char *blue, + int n, int numSamples) { while (n--) { *ptr++ = *red++; *ptr++ = *green++; *ptr++ = *blue++; + if (numSamples==4) *ptr++ = 255; } } +static void interleave_row(unsigned char *ptr, + unsigned char *red, unsigned char *green, unsigned char *blue, unsigned char *alpha, + int n, int numSamples) +{ + while (n--) + { + *ptr++ = *red++; + *ptr++ = *green++; + *ptr++ = *blue++; + if (numSamples==4) *ptr++ = *alpha++; + } +} int simage_tiff_identify(const char *, @@ -381,7 +393,6 @@ int *numComponents_ret) break; case pack(PHOTOMETRIC_RGB, PLANARCONFIG_SEPARATE): - osg::notify(osg::NOTICE)<<"case 4"<