mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-06-02 12:11:00 +00:00
Fix long standing bug where an incorrect tiff representation was
generated for RGB images if bits per sample != 8. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@31829 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
e86fae67c3
commit
f39edecba8
2 changed files with 12 additions and 8 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2011-01-04 Wolfgang Lux <wolfgang.lux@gmail.com>
|
||||||
|
|
||||||
|
* Source/tiff.m (NSTiffWrite):
|
||||||
|
Fix long standing bug where incorrect data was written out for RGB
|
||||||
|
images if bits per sample != 8.
|
||||||
|
|
||||||
2011-01-03 Wolfgang Lux <wolfgang.lux@gmail.com>
|
2011-01-03 Wolfgang Lux <wolfgang.lux@gmail.com>
|
||||||
|
|
||||||
* Source/GNUmakefile:
|
* Source/GNUmakefile:
|
||||||
|
|
|
@ -451,6 +451,7 @@ NSTiffWrite(TIFF *image, NSTiffInfo *info, unsigned char *data)
|
||||||
int i;
|
int i;
|
||||||
unsigned int row;
|
unsigned int row;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
int scan_line_size;
|
||||||
|
|
||||||
TIFFSetField(image, TIFFTAG_IMAGEWIDTH, info->width);
|
TIFFSetField(image, TIFFTAG_IMAGEWIDTH, info->width);
|
||||||
TIFFSetField(image, TIFFTAG_IMAGELENGTH, info->height);
|
TIFFSetField(image, TIFFTAG_IMAGELENGTH, info->height);
|
||||||
|
@ -468,6 +469,7 @@ NSTiffWrite(TIFF *image, NSTiffInfo *info, unsigned char *data)
|
||||||
else
|
else
|
||||||
sample_info[0] = EXTRASAMPLE_UNASSALPHA;
|
sample_info[0] = EXTRASAMPLE_UNASSALPHA;
|
||||||
TIFFSetField(image, TIFFTAG_EXTRASAMPLES, info->extraSamples, sample_info);
|
TIFFSetField(image, TIFFTAG_EXTRASAMPLES, info->extraSamples, sample_info);
|
||||||
|
scan_line_size = TIFFScanlineSize(image);
|
||||||
|
|
||||||
switch (info->photoInterp)
|
switch (info->photoInterp)
|
||||||
{
|
{
|
||||||
|
@ -475,24 +477,20 @@ NSTiffWrite(TIFF *image, NSTiffInfo *info, unsigned char *data)
|
||||||
case PHOTOMETRIC_MINISWHITE:
|
case PHOTOMETRIC_MINISWHITE:
|
||||||
if (info->planarConfig == PLANARCONFIG_CONTIG)
|
if (info->planarConfig == PLANARCONFIG_CONTIG)
|
||||||
{
|
{
|
||||||
int line = ceil((float)info->width * info->bitsPerSample / 8.0);
|
|
||||||
|
|
||||||
for (row = 0; row < info->height; ++row)
|
for (row = 0; row < info->height; ++row)
|
||||||
{
|
{
|
||||||
WRITE_SCANLINE(0)
|
WRITE_SCANLINE(0)
|
||||||
buf += line;
|
buf += scan_line_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int line = ceil((float)info->width / 8.0);
|
|
||||||
|
|
||||||
for (i = 0; i < info->samplesPerPixel; i++)
|
for (i = 0; i < info->samplesPerPixel; i++)
|
||||||
{
|
{
|
||||||
for (row = 0; row < info->height; ++row)
|
for (row = 0; row < info->height; ++row)
|
||||||
{
|
{
|
||||||
WRITE_SCANLINE(i)
|
WRITE_SCANLINE(i)
|
||||||
buf += line;
|
buf += scan_line_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -504,7 +502,7 @@ NSTiffWrite(TIFF *image, NSTiffInfo *info, unsigned char *data)
|
||||||
for (row = 0; row < info->height; ++row)
|
for (row = 0; row < info->height; ++row)
|
||||||
{
|
{
|
||||||
WRITE_SCANLINE(0)
|
WRITE_SCANLINE(0)
|
||||||
buf += info->width * info->samplesPerPixel;
|
buf += scan_line_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -514,7 +512,7 @@ NSTiffWrite(TIFF *image, NSTiffInfo *info, unsigned char *data)
|
||||||
for (row = 0; row < info->height; ++row)
|
for (row = 0; row < info->height; ++row)
|
||||||
{
|
{
|
||||||
WRITE_SCANLINE(i)
|
WRITE_SCANLINE(i)
|
||||||
buf += info->width;
|
buf += scan_line_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue