2007.06.29 14:01 "RE: [Tiff] patches to tiff2ps-3.8.2 for 16 bit samples", by William Bader
The patches are at http://williambader.com/pat/tiff-3.8.2.pat and below:
--- tiff-3.8.2/tools/tiff2ps.c- 2006-03-03 13:09:45.000000000 +0100 +++ tiff-3.8.2/tools/tiff2ps.c 2007-06-20 14:17:52.000000000 +0200 @@ -350,6 +350,8 @@
switch (bitspersample) {
case 1: case 2:
case 4: case 8:
+ /* wb 20Ju07 allow 16 bits */
+ case 16:
break;
default:
TIFFError(filename, "Can not handle %d-bit/sample image",
@@ -434,7 +436,9 @@
break;
case RESUNIT_NONE:
default:
- xres *= PS_UNIT_SIZE, yres *= PS_UNIT_SIZE;
+ /* wb 20Jun07 check that the resolution is not inches before
scaling it */
+ if (xres != PS_UNIT_SIZE || yres != PS_UNIT_SIZE)
+ xres *= PS_UNIT_SIZE, yres *= PS_UNIT_SIZE;
break;
}
*pprh = PSUNITS(*ph, yres);
@@ -1173,6 +1177,26 @@
return(use_rawdata);
}
+/* Flip the byte order of buffers with 16 bit samples */
+static void
+PS_FlipBytes(char* buf, int count)
+{
+ int i;
+ char temp;
+
+ if (count <= 0 || bitspersample <= 8) {
+ return;
+ }
+
+ count--;
+
+ for (i = 0; i < count; i += 2) {
+ temp = buf[ i ];
+ buf[ i ] = buf[ i + 1 ];
+ buf[ i + 1 ] = temp;
+ }
+}
+
#define MAXLINE 36
int
@@ -1278,6 +1302,10 @@
if (ascii85)
Ascii85Put('\0',
fd);
}
+ /* wb 20Jun07 for 16 bits, the two bytes must be most
significant byte first */
+ if (bitspersample == 16 && !TIFFIsBigEndian(tif)) {
+ PS_FlipBytes(buf_data, byte_count);
+ }
/*
* For images with alpha, matte against a white background;
* i.e. Cback * (1 - Aimage) where Cback = 1. We will fill
the
@@ -1476,6 +1504,10 @@
if (TIFFReadScanline(tif, tf_buf, row, 0) < 0)
break;
cp = tf_buf;
+ /* wb 20Jun07 for 16 bits, the two bytes must be most
significant byte first */
+ if (bitspersample == 16 && !HOST_BIGENDIAN) {
+ PS_FlipBytes(cp, tf_bytesperrow);
+ }
if (alpha) {
int adjust;
cc = 0;
@@ -1677,6 +1709,10 @@
*cp
= ~*cp;
cp++;
}
+ /* wb 20Jun07 for 16 bits, the two bytes must be most
significant byte first */
+ if (bitspersample == 16 && !HOST_BIGENDIAN) {
+ PS_FlipBytes(cp, cc);
+ }
if (ascii85) {
#if defined( EXP_ASCII85ENCODER )
if (alpha) {
_________________________________________________________________ Hotmail to go? Get your Hotmail, news, sports and much more! http://mobile.msn.com