diff --git a/src/osgPlugins/tiff/ReaderWriterTIFF.cpp b/src/osgPlugins/tiff/ReaderWriterTIFF.cpp index 9153b35e0..b3ed735a7 100644 --- a/src/osgPlugins/tiff/ReaderWriterTIFF.cpp +++ b/src/osgPlugins/tiff/ReaderWriterTIFF.cpp @@ -260,7 +260,6 @@ checkcmap(int n, uint16* r, uint16* g, uint16* b) return (8); } - static void invert_row(unsigned char *ptr, unsigned char *data, int n, int invert, uint16 bitspersample) { @@ -273,7 +272,7 @@ invert_row(unsigned char *ptr, unsigned char *data, int n, int invert, uint16 bi else *ptr++ = *data++; } } - else + else if (bitspersample == 16) { unsigned short *ptr1 = (unsigned short *)ptr; unsigned short *data1 = (unsigned short *)data; @@ -284,6 +283,17 @@ invert_row(unsigned char *ptr, unsigned char *data, int n, int invert, uint16 bi else *ptr1++ = *data1++; } } + else if (bitspersample == 32) + { + float *ptr1 = (float *)ptr; + float *data1 = (float *)data; + + while (n--) + { + if (invert) *ptr1++ = 1.0 - *data1++; + else *ptr1++ = *data1++; + } + } } @@ -302,46 +312,99 @@ unsigned short *rmap, unsigned short *gmap, unsigned short *bmap) } } - -static void -copy_row(unsigned char *ptr, unsigned char *data, int n, int numSamples) -{ - // osg::notify(osg::NOTICE)<<"Copy row"<setImage(s,t,r,