ReactOS  0.4.14-dev-593-g1793dcc
tif_aux.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1991-1997 Sam Leffler
3  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
4  *
5  * Permission to use, copy, modify, distribute, and sell this software and
6  * its documentation for any purpose is hereby granted without fee, provided
7  * that (i) the above copyright notices and this permission notice appear in
8  * all copies of the software and related documentation, and (ii) the names of
9  * Sam Leffler and Silicon Graphics may not be used in any advertising or
10  * publicity relating to the software without the specific, prior written
11  * permission of Sam Leffler and Silicon Graphics.
12  *
13  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
14  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
15  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
18  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
19  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
20  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
21  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
22  * OF THIS SOFTWARE.
23  */
24 
25 /*
26  * TIFF Library.
27  *
28  * Auxiliary Support Routines.
29  */
30 
31 #include <precomp.h>
32 #include "tif_predict.h"
33 #include <math.h>
34 #include <float.h>
35 
36 uint32
37 _TIFFMultiply32(TIFF* tif, uint32 first, uint32 second, const char* where)
38 {
39  if (second && first > TIFF_UINT32_MAX / second) {
40  TIFFErrorExt(tif->tif_clientdata, where, "Integer overflow in %s", where);
41  return 0;
42  }
43 
44  return first * second;
45 }
46 
47 uint64
48 _TIFFMultiply64(TIFF* tif, uint64 first, uint64 second, const char* where)
49 {
50  if (second && first > TIFF_UINT64_MAX / second) {
51  TIFFErrorExt(tif->tif_clientdata, where, "Integer overflow in %s", where);
52  return 0;
53  }
54 
55  return first * second;
56 }
57 
59 _TIFFMultiplySSize(TIFF* tif, tmsize_t first, tmsize_t second, const char* where)
60 {
61  if( first <= 0 || second <= 0 )
62  {
63  if( tif != NULL && where != NULL )
64  {
65  TIFFErrorExt(tif->tif_clientdata, where,
66  "Invalid argument to _TIFFMultiplySSize() in %s", where);
67  }
68  return 0;
69  }
70 
71  if( first > TIFF_TMSIZE_T_MAX / second )
72  {
73  if( tif != NULL && where != NULL )
74  {
75  TIFFErrorExt(tif->tif_clientdata, where,
76  "Integer overflow in %s", where);
77  }
78  return 0;
79  }
80  return first * second;
81 }
82 
84 {
86  {
87  if( tif != NULL && module != NULL )
88  {
89  TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
90  }
91  return 0;
92  }
93  return (tmsize_t)val;
94 }
95 
96 void*
98  tmsize_t nmemb, tmsize_t elem_size, const char* what)
99 {
100  void* cp = NULL;
101  tmsize_t count = _TIFFMultiplySSize(tif, nmemb, elem_size, NULL);
102  /*
103  * Check for integer overflow.
104  */
105  if (count != 0)
106  {
108  }
109 
110  if (cp == NULL) {
112  "Failed to allocate memory for %s "
113  "(%ld elements of %ld bytes each)",
114  what,(long) nmemb, (long) elem_size);
115  }
116 
117  return cp;
118 }
119 
120 void*
121 _TIFFCheckMalloc(TIFF* tif, tmsize_t nmemb, tmsize_t elem_size, const char* what)
122 {
123  return _TIFFCheckRealloc(tif, NULL, nmemb, elem_size, what);
124 }
125 
126 static int
128 {
129  uint16 **tf = td->td_transferfunction;
130  tmsize_t i, n, nbytes;
131 
132  tf[0] = tf[1] = tf[2] = 0;
133  if (td->td_bitspersample >= sizeof(tmsize_t) * 8 - 2)
134  return 0;
135 
136  n = ((tmsize_t)1)<<td->td_bitspersample;
137  nbytes = n * sizeof (uint16);
138  tf[0] = (uint16 *)_TIFFmalloc(nbytes);
139  if (tf[0] == NULL)
140  return 0;
141  tf[0][0] = 0;
142  for (i = 1; i < n; i++) {
143  double t = (double)i/((double) n-1.);
144  tf[0][i] = (uint16)floor(65535.*pow(t, 2.2) + .5);
145  }
146 
147  if (td->td_samplesperpixel - td->td_extrasamples > 1) {
148  tf[1] = (uint16 *)_TIFFmalloc(nbytes);
149  if(tf[1] == NULL)
150  goto bad;
151  _TIFFmemcpy(tf[1], tf[0], nbytes);
152  tf[2] = (uint16 *)_TIFFmalloc(nbytes);
153  if (tf[2] == NULL)
154  goto bad;
155  _TIFFmemcpy(tf[2], tf[0], nbytes);
156  }
157  return 1;
158 
159 bad:
160  if (tf[0])
161  _TIFFfree(tf[0]);
162  if (tf[1])
163  _TIFFfree(tf[1]);
164  if (tf[2])
165  _TIFFfree(tf[2]);
166  tf[0] = tf[1] = tf[2] = 0;
167  return 0;
168 }
169 
170 static int
172 {
173  int i;
174 
175  td->td_refblackwhite = (float *)_TIFFmalloc(6*sizeof (float));
176  if (td->td_refblackwhite == NULL)
177  return 0;
178  if (td->td_photometric == PHOTOMETRIC_YCBCR) {
179  /*
180  * YCbCr (Class Y) images must have the ReferenceBlackWhite
181  * tag set. Fix the broken images, which lacks that tag.
182  */
183  td->td_refblackwhite[0] = 0.0F;
184  td->td_refblackwhite[1] = td->td_refblackwhite[3] =
185  td->td_refblackwhite[5] = 255.0F;
186  td->td_refblackwhite[2] = td->td_refblackwhite[4] = 128.0F;
187  } else {
188  /*
189  * Assume RGB (Class R)
190  */
191  for (i = 0; i < 3; i++) {
192  td->td_refblackwhite[2*i+0] = 0;
193  td->td_refblackwhite[2*i+1] =
194  (float)((1L<<td->td_bitspersample)-1L);
195  }
196  }
197  return 1;
198 }
199 
200 /*
201  * Like TIFFGetField, but return any default
202  * value if the tag is not present in the directory.
203  *
204  * NB: We use the value in the directory, rather than
205  * explicit values so that defaults exist only one
206  * place in the library -- in TIFFDefaultDirectory.
207  */
208 int
210 {
211  TIFFDirectory *td = &tif->tif_dir;
212 
213  if (TIFFVGetField(tif, tag, ap))
214  return (1);
215  switch (tag) {
216  case TIFFTAG_SUBFILETYPE:
217  *va_arg(ap, uint32 *) = td->td_subfiletype;
218  return (1);
220  *va_arg(ap, uint16 *) = td->td_bitspersample;
221  return (1);
223  *va_arg(ap, uint16 *) = td->td_threshholding;
224  return (1);
225  case TIFFTAG_FILLORDER:
226  *va_arg(ap, uint16 *) = td->td_fillorder;
227  return (1);
228  case TIFFTAG_ORIENTATION:
229  *va_arg(ap, uint16 *) = td->td_orientation;
230  return (1);
232  *va_arg(ap, uint16 *) = td->td_samplesperpixel;
233  return (1);
235  *va_arg(ap, uint32 *) = td->td_rowsperstrip;
236  return (1);
238  *va_arg(ap, uint16 *) = td->td_minsamplevalue;
239  return (1);
241  *va_arg(ap, uint16 *) = td->td_maxsamplevalue;
242  return (1);
244  *va_arg(ap, uint16 *) = td->td_planarconfig;
245  return (1);
247  *va_arg(ap, uint16 *) = td->td_resolutionunit;
248  return (1);
249  case TIFFTAG_PREDICTOR:
250  {
252  if( sp == NULL )
253  {
255  "Cannot get \"Predictor\" tag as plugin is not configured");
256  *va_arg(ap, uint16*) = 0;
257  return 0;
258  }
259  *va_arg(ap, uint16*) = (uint16) sp->predictor;
260  return 1;
261  }
262  case TIFFTAG_DOTRANGE:
263  *va_arg(ap, uint16 *) = 0;
264  *va_arg(ap, uint16 *) = (1<<td->td_bitspersample)-1;
265  return (1);
266  case TIFFTAG_INKSET:
267  *va_arg(ap, uint16 *) = INKSET_CMYK;
268  return 1;
270  *va_arg(ap, uint16 *) = 4;
271  return (1);
273  *va_arg(ap, uint16 *) = td->td_extrasamples;
274  *va_arg(ap, uint16 **) = td->td_sampleinfo;
275  return (1);
276  case TIFFTAG_MATTEING:
277  *va_arg(ap, uint16 *) =
278  (td->td_extrasamples == 1 &&
280  return (1);
281  case TIFFTAG_TILEDEPTH:
282  *va_arg(ap, uint32 *) = td->td_tiledepth;
283  return (1);
284  case TIFFTAG_DATATYPE:
285  *va_arg(ap, uint16 *) = td->td_sampleformat-1;
286  return (1);
288  *va_arg(ap, uint16 *) = td->td_sampleformat;
289  return(1);
290  case TIFFTAG_IMAGEDEPTH:
291  *va_arg(ap, uint32 *) = td->td_imagedepth;
292  return (1);
294  {
295  /* defaults are from CCIR Recommendation 601-1 */
296  static float ycbcrcoeffs[] = { 0.299f, 0.587f, 0.114f };
297  *va_arg(ap, float **) = ycbcrcoeffs;
298  return 1;
299  }
301  *va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[0];
302  *va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[1];
303  return (1);
305  *va_arg(ap, uint16 *) = td->td_ycbcrpositioning;
306  return (1);
307  case TIFFTAG_WHITEPOINT:
308  {
309  static float whitepoint[2];
310 
311  /* TIFF 6.0 specification tells that it is no default
312  value for the WhitePoint, but AdobePhotoshop TIFF
313  Technical Note tells that it should be CIE D50. */
314  whitepoint[0] = D50_X0 / (D50_X0 + D50_Y0 + D50_Z0);
315  whitepoint[1] = D50_Y0 / (D50_X0 + D50_Y0 + D50_Z0);
316  *va_arg(ap, float **) = whitepoint;
317  return 1;
318  }
320  if (!td->td_transferfunction[0] &&
322  TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "No space for \"TransferFunction\" tag");
323  return (0);
324  }
325  *va_arg(ap, uint16 **) = td->td_transferfunction[0];
326  if (td->td_samplesperpixel - td->td_extrasamples > 1) {
327  *va_arg(ap, uint16 **) = td->td_transferfunction[1];
328  *va_arg(ap, uint16 **) = td->td_transferfunction[2];
329  }
330  return (1);
333  return (0);
334  *va_arg(ap, float **) = td->td_refblackwhite;
335  return (1);
336  }
337  return 0;
338 }
339 
340 /*
341  * Like TIFFGetField, but return any default
342  * value if the tag is not present in the directory.
343  */
344 int
346 {
347  int ok;
348  va_list ap;
349 
350  va_start(ap, tag);
351  ok = TIFFVGetFieldDefaulted(tif, tag, ap);
352  va_end(ap);
353  return (ok);
354 }
355 
356 struct _Int64Parts {
358 };
359 
360 typedef union {
361  struct _Int64Parts part;
363 } _Int64;
364 
365 float
367 {
368  _Int64 i;
369 
370  i.value = ui64;
371  if (i.part.high >= 0) {
372  return (float)i.value;
373  } else {
374  long double df;
375  df = (long double)i.value;
376  df += 18446744073709551616.0; /* adding 2**64 */
377  return (float)df;
378  }
379 }
380 
381 double
383 {
384  _Int64 i;
385 
386  i.value = ui64;
387  if (i.part.high >= 0) {
388  return (double)i.value;
389  } else {
390  long double df;
391  df = (long double)i.value;
392  df += 18446744073709551616.0; /* adding 2**64 */
393  return (double)df;
394  }
395 }
396 
398 {
399  if( val > FLT_MAX )
400  return FLT_MAX;
401  if( val < -FLT_MAX )
402  return -FLT_MAX;
403  return (float)val;
404 }
405 
407 {
408  /* Huge offsets, especially -1 / UINT64_MAX, can cause issues */
409  /* See http://bugzilla.maptools.org/show_bug.cgi?id=2726 */
410  return off <= (~(uint64)0)/2 && TIFFSeekFile(tif,off,SEEK_SET)==off;
411 }
412 
413 /* vim: set ts=8 sts=8 sw=8 noet: */
414 /*
415  * Local Variables:
416  * mode: c
417  * c-basic-offset: 8
418  * fill-column: 78
419  * End:
420  */
unsigned long long uint64
Definition: platform.h:18
#define D50_Z0
Definition: tiffio.h:132
#define TIFFTAG_SUBFILETYPE
Definition: tiff.h:146
return
Definition: dirsup.c:529
uint16 td_ycbcrpositioning
Definition: tif_dir.h:113
uint16 td_bitspersample
Definition: tif_dir.h:75
#define PHOTOMETRIC_YCBCR
Definition: tiff.h:202
uint32 td_tiledepth
Definition: tif_dir.h:73
#define TIFFTAG_BITSPERSAMPLE
Definition: tiff.h:156
#define TIFFTAG_ROWSPERSTRIP
Definition: tiff.h:233
float _TIFFUInt64ToFloat(uint64 ui64)
Definition: tif_aux.c:366
uint32 _TIFFMultiply32(TIFF *tif, uint32 first, uint32 second, const char *where)
Definition: tif_aux.c:37
#define FLT_MAX
Definition: gcc_float.h:107
int32 high
Definition: tif_aux.c:357
#define TIFFTAG_EXTRASAMPLES
Definition: tiff.h:304
void * _TIFFCheckRealloc(TIFF *tif, void *buffer, tmsize_t nmemb, tmsize_t elem_size, const char *what)
Definition: tif_aux.c:97
#define TIFFTAG_ORIENTATION
Definition: tiff.h:223
GLuint GLuint GLsizei count
Definition: gl.h:1545
unsigned int uint32
Definition: types.h:32
#define TIFFSeekFile(tif, off, whence)
Definition: tiffiop.h:237
static int TIFFDefaultRefBlackWhite(TIFFDirectory *td)
Definition: tif_aux.c:171
const GLint * first
Definition: glext.h:5794
#define TIFFTAG_DATATYPE
Definition: tiff.h:385
#define TIFF_UINT64_MAX
Definition: tiffiop.h:91
#define TIFFTAG_MINSAMPLEVALUE
Definition: tiff.h:235
#define TIFFTAG_FILLORDER
Definition: tiff.h:215
uint64 toff_t
Definition: tiffio.h:66
#define D50_X0
Definition: tiffio.h:130
GLdouble n
Definition: glext.h:7729
GLdouble GLdouble t
Definition: gl.h:2047
HFONT tf
Definition: icontest.c:17
Definition: ecma_167.h:138
GLuint buffer
Definition: glext.h:5915
#define TIFFTAG_DOTRANGE
Definition: tiff.h:302
uint32 td_imagedepth
Definition: tif_dir.h:72
#define TIFFTAG_THRESHHOLDING
Definition: tiff.h:209
#define TIFFTAG_YCBCRSUBSAMPLING
Definition: tiff.h:367
thandle_t tif_clientdata
Definition: tiffiop.h:207
long long int64
Definition: platform.h:13
#define TIFFTAG_REFERENCEBLACKWHITE
Definition: tiff.h:371
#define TIFFTAG_PLANARCONFIG
Definition: tiff.h:239
#define TIFFTAG_MATTEING
Definition: tiff.h:384
char * tif_name
Definition: tiffiop.h:116
Definition: tiffiop.h:115
#define TIFFTAG_YCBCRCOEFFICIENTS
Definition: tiff.h:366
double _TIFFUInt64ToDouble(uint64 ui64)
Definition: tif_aux.c:382
#define INKSET_CMYK
Definition: tiff.h:298
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define va_end(ap)
Definition: acmsvcex.h:90
#define TIFFTAG_YCBCRPOSITIONING
Definition: tiff.h:368
uint32 td_subfiletype
Definition: tif_dir.h:74
uint16 * td_sampleinfo
Definition: tif_dir.h:95
float pow(float __x, int __y)
Definition: _cmath.h:458
TIFF_SSIZE_T tmsize_t
Definition: tiffio.h:65
void * _TIFFCheckMalloc(TIFF *tif, tmsize_t nmemb, tmsize_t elem_size, const char *what)
Definition: tif_aux.c:121
uint16 td_resolutionunit
Definition: tif_dir.h:88
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
Definition: string.c:80
smooth NULL
Definition: ftsmooth.c:416
#define TIFFTAG_SAMPLESPERPIXEL
Definition: tiff.h:232
char * va_list
Definition: acmsvcex.h:78
uint16 td_planarconfig
Definition: tif_dir.h:89
uint16 td_orientation
Definition: tif_dir.h:81
int TIFFVGetField(TIFF *tif, uint32 tag, va_list ap)
Definition: tif_dir.c:1250
uint16 td_minsamplevalue
Definition: tif_dir.h:84
void * _TIFFmalloc(tmsize_t s)
Definition: tif_unix.c:309
GLuint GLfloat * val
Definition: glext.h:7180
#define SEEK_SET
Definition: jmemansi.c:26
#define TIFF_UINT32_MAX
Definition: tiffiop.h:86
int TIFFGetFieldDefaulted(TIFF *tif, uint32 tag,...)
Definition: tif_aux.c:345
static int TIFFDefaultTransferFunction(TIFFDirectory *td)
Definition: tif_aux.c:127
uint16 td_extrasamples
Definition: tif_dir.h:94
uint16 td_photometric
Definition: tif_dir.h:78
void TIFFErrorExt(thandle_t fd, const char *module, const char *fmt,...)
Definition: tif_error.c:65
uint16 td_fillorder
Definition: tif_dir.h:80
int32 low
Definition: tif_aux.c:357
void * _TIFFrealloc(void *p, tmsize_t s)
Definition: tif_unix.c:332
uint8 * tif_data
Definition: tiffiop.h:191
static const WCHAR L[]
Definition: oid.c:1250
#define TIFFTAG_TRANSFERFUNCTION
Definition: tiff.h:273
#define TIFFTAG_WHITEPOINT
Definition: tiff.h:282
uint16 td_sampleformat
Definition: tif_dir.h:76
uint16 td_threshholding
Definition: tif_dir.h:79
#define TIFFTAG_INKSET
Definition: tiff.h:297
#define TIFFTAG_NUMBEROFINKS
Definition: tiff.h:301
#define TIFF_TMSIZE_T_MAX
Definition: tiffiop.h:81
float _TIFFClampDoubleToFloat(double val)
Definition: tif_aux.c:397
uint16 td_maxsamplevalue
Definition: tif_dir.h:84
#define va_arg(ap, T)
Definition: acmsvcex.h:89
uint32 td_rowsperstrip
Definition: tif_dir.h:83
#define TIFFTAG_TILEDEPTH
Definition: tiff.h:387
#define TIFFTAG_IMAGEDEPTH
Definition: tiff.h:386
#define TIFFTAG_RESOLUTIONUNIT
Definition: tiff.h:262
static float(__cdecl *square_half_float)(float x
uint16 td_ycbcrsubsampling[2]
Definition: tif_dir.h:112
unsigned short uint16
Definition: types.h:30
#define ok(value,...)
Definition: atltest.h:57
TIFFDirectory tif_dir
Definition: tiffiop.h:151
int64 value
Definition: tif_aux.c:362
#define va_start(ap, A)
Definition: acmsvcex.h:91
tmsize_t _TIFFCastUInt64ToSSize(TIFF *tif, uint64 val, const char *module)
Definition: tif_aux.c:83
uint64 _TIFFMultiply64(TIFF *tif, uint64 first, uint64 second, const char *where)
Definition: tif_aux.c:48
tmsize_t _TIFFMultiplySSize(TIFF *tif, tmsize_t first, tmsize_t second, const char *where)
Definition: tif_aux.c:59
float * td_refblackwhite
Definition: tif_dir.h:116
uint16 * td_transferfunction[3]
Definition: tif_dir.h:115
#define TIFFTAG_PREDICTOR
Definition: tiff.h:278
POINT cp
Definition: magnifier.c:59
long int32
Definition: platform.h:12
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
uint16 td_samplesperpixel
Definition: tif_dir.h:82
static const WCHAR sp[]
Definition: suminfo.c:288
int TIFFVGetFieldDefaulted(TIFF *tif, uint32 tag, va_list ap)
Definition: tif_aux.c:209
#define D50_Y0
Definition: tiffio.h:131
void _TIFFfree(void *p)
Definition: tif_unix.c:326
#define TIFFTAG_SAMPLEFORMAT
Definition: tiff.h:308
#define EXTRASAMPLE_ASSOCALPHA
Definition: tiff.h:306
_Check_return_ _CRTIMP double __cdecl floor(_In_ double x)
int _TIFFSeekOK(TIFF *tif, toff_t off)
Definition: tif_aux.c:406
void _TIFFmemcpy(void *d, const void *s, tmsize_t c)
Definition: tif_unix.c:344
#define TIFFTAG_MAXSAMPLEVALUE
Definition: tiff.h:236
off
Definition: i386-dis.c:3909