OLD | NEW |
1 /* $Id: tif_dirinfo.c,v 1.117 2012-08-19 16:56:34 bfriesen Exp $ */ | 1 /* $Id: tif_dirinfo.c,v 1.121 2014-05-07 01:58:46 bfriesen Exp $ */ |
2 | 2 |
3 /* | 3 /* |
4 * Copyright (c) 1988-1997 Sam Leffler | 4 * Copyright (c) 1988-1997 Sam Leffler |
5 * Copyright (c) 1991-1997 Silicon Graphics, Inc. | 5 * Copyright (c) 1991-1997 Silicon Graphics, Inc. |
6 * | 6 * |
7 * Permission to use, copy, modify, distribute, and sell this software and | 7 * Permission to use, copy, modify, distribute, and sell this software and |
8 * its documentation for any purpose is hereby granted without fee, provided | 8 * its documentation for any purpose is hereby granted without fee, provided |
9 * that (i) the above copyright notices and this permission notice appear in | 9 * that (i) the above copyright notices and this permission notice appear in |
10 * all copies of the software and related documentation, and (ii) the names of | 10 * all copies of the software and related documentation, and (ii) the names of |
11 * Sam Leffler and Silicon Graphics may not be used in any advertising or | 11 * Sam Leffler and Silicon Graphics may not be used in any advertising or |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 { TIFFTAG_TILEDEPTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET
_UNDEFINED, FIELD_TILEDEPTH, 0, 0, "TileDepth", NULL }, | 121 { TIFFTAG_TILEDEPTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET
_UNDEFINED, FIELD_TILEDEPTH, 0, 0, "TileDepth", NULL }, |
122 /* end SGI tags */ | 122 /* end SGI tags */ |
123 /* begin Pixar tags */ | 123 /* begin Pixar tags */ |
124 { TIFFTAG_PIXAR_IMAGEFULLWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageFullWidth", NULL }, | 124 { TIFFTAG_PIXAR_IMAGEFULLWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageFullWidth", NULL }, |
125 { TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageFullLength", NULL }, | 125 { TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageFullLength", NULL }, |
126 { TIFFTAG_PIXAR_TEXTUREFORMAT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TextureFormat", NULL }, | 126 { TIFFTAG_PIXAR_TEXTUREFORMAT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TextureFormat", NULL }, |
127 { TIFFTAG_PIXAR_WRAPMODES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIF
F_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TextureWrapModes", NULL }, | 127 { TIFFTAG_PIXAR_WRAPMODES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIF
F_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TextureWrapModes", NULL }, |
128 { TIFFTAG_PIXAR_FOVCOT, 1, 1, TIFF_FLOAT, 0, TIFF_SETGET_FLOAT, TIFF_SET
GET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FieldOfViewCotangent", NULL }, | 128 { TIFFTAG_PIXAR_FOVCOT, 1, 1, TIFF_FLOAT, 0, TIFF_SETGET_FLOAT, TIFF_SET
GET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FieldOfViewCotangent", NULL }, |
129 { TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET
_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MatrixWorldToScreen", NUL
L }, | 129 { TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET
_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MatrixWorldToScreen", NUL
L }, |
130 { TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET
_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MatrixWorldToCamera", NUL
L }, | 130 { TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET
_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MatrixWorldToCamera", NUL
L }, |
| 131 { TIFFTAG_CFAREPEATPATTERNDIM, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT1
6, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CFARepeatPatter
nDim", NULL }, |
| 132 { TIFFTAG_CFAPATTERN, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF
_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CFAPattern" , NULL}, |
131 { TIFFTAG_COPYRIGHT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETG
ET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Copyright", NULL }, | 133 { TIFFTAG_COPYRIGHT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETG
ET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Copyright", NULL }, |
132 /* end Pixar tags */ | 134 /* end Pixar tags */ |
133 { TIFFTAG_RICHTIFFIPTC, -3, -3, TIFF_LONG, 0, TIFF_SETGET_C32_UINT32, TI
FF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "RichTIFFIPTC", NULL }, | 135 { TIFFTAG_RICHTIFFIPTC, -3, -3, TIFF_LONG, 0, TIFF_SETGET_C32_UINT32, TI
FF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "RichTIFFIPTC", NULL }, |
134 { TIFFTAG_PHOTOSHOP, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, TIFF_S
ETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "Photoshop", NULL }, | 136 { TIFFTAG_PHOTOSHOP, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, TIFF_S
ETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "Photoshop", NULL }, |
135 { TIFFTAG_EXIFIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UND
EFINED, FIELD_CUSTOM, 0, 0, "EXIFIFDOffset", &exifFieldArray }, | 137 { TIFFTAG_EXIFIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UND
EFINED, FIELD_CUSTOM, 0, 0, "EXIFIFDOffset", &exifFieldArray }, |
136 { TIFFTAG_ICCPROFILE, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ICC Profile", NULL }, | 138 { TIFFTAG_ICCPROFILE, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ICC Profile", NULL }, |
137 { TIFFTAG_GPSIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UNDE
FINED, FIELD_CUSTOM, 0, 0, "GPSIFDOffset", NULL }, | 139 { TIFFTAG_GPSIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UNDE
FINED, FIELD_CUSTOM, 0, 0, "GPSIFDOffset", NULL }, |
138 { TIFFTAG_FAXRECVPARAMS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SE
TGET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "FaxRecvParams", NULL }, | 140 { TIFFTAG_FAXRECVPARAMS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SE
TGET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "FaxRecvParams", NULL }, |
139 { TIFFTAG_FAXSUBADDRESS, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_
SETGET_ASCII, FIELD_CUSTOM, TRUE, FALSE, "FaxSubAddress", NULL }, | 141 { TIFFTAG_FAXSUBADDRESS, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_
SETGET_ASCII, FIELD_CUSTOM, TRUE, FALSE, "FaxSubAddress", NULL }, |
140 { TIFFTAG_FAXRECVTIME, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETG
ET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "FaxRecvTime", NULL }, | 142 { TIFFTAG_FAXRECVTIME, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETG
ET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "FaxRecvTime", NULL }, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 { TIFFTAG_ORIGINALRAWFILEDATA, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C1
6_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "OriginalRawFileData", NULL
}, | 188 { TIFFTAG_ORIGINALRAWFILEDATA, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C1
6_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "OriginalRawFileData", NULL
}, |
187 { TIFFTAG_ACTIVEAREA, 4, 4, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, TIFF_SE
TGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ActiveArea", NULL }, | 189 { TIFFTAG_ACTIVEAREA, 4, 4, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, TIFF_SE
TGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ActiveArea", NULL }, |
188 { TIFFTAG_MASKEDAREAS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIF
F_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "MaskedAreas", NULL }, | 190 { TIFFTAG_MASKEDAREAS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIF
F_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "MaskedAreas", NULL }, |
189 { TIFFTAG_ASSHOTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_U
INT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotICCProfile", NULL }, | 191 { TIFFTAG_ASSHOTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_U
INT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotICCProfile", NULL }, |
190 { TIFFTAG_ASSHOTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET
_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotPreProfileMatrix",
NULL }, | 192 { TIFFTAG_ASSHOTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET
_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotPreProfileMatrix",
NULL }, |
191 { TIFFTAG_CURRENTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_
UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CurrentICCProfile", NULL }, | 193 { TIFFTAG_CURRENTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_
UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CurrentICCProfile", NULL }, |
192 { TIFFTAG_CURRENTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGE
T_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CurrentPreProfileMatrix
", NULL }, | 194 { TIFFTAG_CURRENTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGE
T_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CurrentPreProfileMatrix
", NULL }, |
193 { TIFFTAG_PERSAMPLE, 0, 0, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SE
TGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "PerSample", NULL}, | 195 { TIFFTAG_PERSAMPLE, 0, 0, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SE
TGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "PerSample", NULL}, |
194 /* end DNG tags */ | 196 /* end DNG tags */ |
195 /* begin TIFF/FX tags */ | 197 /* begin TIFF/FX tags */ |
196 { TIFFTAG_INDEXED, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDE
FINED, FIELD_CUSTOM, 0, 0, "Indexed" }, | 198 { TIFFTAG_INDEXED, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_
UNDEFINED, FIELD_CUSTOM, 0, 0, "Indexed", NULL }, |
197 { TIFFTAG_GLOBALPARAMETERSIFD, 1, 1, TIFF_IFD, 0, TIFF_SETGET_UINT32, TIFF_S
ETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "GlobalParametersIFD", NULL }, | 199 { TIFFTAG_GLOBALPARAMETERSIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIF
F_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "GlobalParametersIFD", NULL }, |
198 { TIFFTAG_PROFILETYPE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_U
NDEFINED, FIELD_CUSTOM, 0, 0, "ProfileType", NULL }, | 200 { TIFFTAG_PROFILETYPE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETG
ET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ProfileType", NULL }, |
199 { TIFFTAG_FAXPROFILE, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UND
EFINED, FIELD_CUSTOM, 0, 0, "FaxProfile", NULL }, | 201 { TIFFTAG_FAXPROFILE, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, TIFF_SETGET
_UNDEFINED, FIELD_CUSTOM, 0, 0, "FaxProfile", NULL }, |
200 { TIFFTAG_CODINGMETHODS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET
_UNDEFINED, FIELD_CUSTOM, 0, 0, "CodingMethods", NULL }, | 202 { TIFFTAG_CODINGMETHODS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SE
TGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CodingMethods", NULL }, |
201 { TIFFTAG_VERSIONYEAR, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET
_UNDEFINED, FIELD_CUSTOM, 0, 0, "VersionYear", NULL }, | 203 { TIFFTAG_VERSIONYEAR, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SE
TGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "VersionYear", NULL }, |
202 { TIFFTAG_MODENUMBER, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UND
EFINED, FIELD_CUSTOM, 0, 0, "ModeNumber", NULL }, | 204 { TIFFTAG_MODENUMBER, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, TIFF_SETGET
_UNDEFINED, FIELD_CUSTOM, 0, 0, "ModeNumber", NULL }, |
203 { TIFFTAG_DECODE, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SET
GET_UNDEFINED, FIELD_CUSTOM, 0, 1, "Decode", NULL }, | 205 { TIFFTAG_DECODE, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF
_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "Decode", NULL }, |
204 { TIFFTAG_IMAGEBASECOLOR, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIF
F_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ImageBaseColor", NULL }, | 206 { TIFFTAG_IMAGEBASECOLOR, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ImageBaseColor", NULL }, |
205 { TIFFTAG_T82OPTIONS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UN
DEFINED, FIELD_CUSTOM, 0, 0, "T82Options", NULL }, | 207 { TIFFTAG_T82OPTIONS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGE
T_UNDEFINED, FIELD_CUSTOM, 0, 0, "T82Options", NULL }, |
206 { TIFFTAG_STRIPROWCOUNTS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIFF
_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "StripRowCounts", NULL }, | 208 { TIFFTAG_STRIPROWCOUNTS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "StripRowCounts", NULL }, |
207 { TIFFTAG_IMAGELAYER, 2, 2, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, TIFF_SETGET
_UNDEFINED, FIELD_CUSTOM, 0, 0, "ImageLayer", NULL }, | 209 { TIFFTAG_IMAGELAYER, 2, 2, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, TIFF_SE
TGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ImageLayer", NULL }, |
208 » /* end DNG tags */ | 210 » /* end TIFF/FX tags */ |
209 /* begin pseudo tags */ | 211 /* begin pseudo tags */ |
210 }; | 212 }; |
211 | 213 |
212 static TIFFField | 214 static TIFFField |
213 exifFields[] = { | 215 exifFields[] = { |
214 { EXIFTAG_EXPOSURETIME, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF
_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureTime", NULL }, | 216 { EXIFTAG_EXPOSURETIME, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF
_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureTime", NULL }, |
215 { EXIFTAG_FNUMBER, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETG
ET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FNumber", NULL }, | 217 { EXIFTAG_FNUMBER, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETG
ET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FNumber", NULL }, |
216 { EXIFTAG_EXPOSUREPROGRAM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF
_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureProgram", NULL }, | 218 { EXIFTAG_EXPOSUREPROGRAM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF
_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureProgram", NULL }, |
217 { EXIFTAG_SPECTRALSENSITIVITY, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SpectralSensitivity", NULL }, | 219 { EXIFTAG_SPECTRALSENSITIVITY, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII,
TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SpectralSensitivity", NULL }, |
218 { EXIFTAG_ISOSPEEDRATINGS, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16
, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "ISOSpeedRatings", NULL }, | 220 { EXIFTAG_ISOSPEEDRATINGS, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16
, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "ISOSpeedRatings", NULL }, |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 case TIFF_DOUBLE: | 489 case TIFF_DOUBLE: |
488 case TIFF_LONG8: | 490 case TIFF_LONG8: |
489 case TIFF_SLONG8: | 491 case TIFF_SLONG8: |
490 case TIFF_IFD8: | 492 case TIFF_IFD8: |
491 return 8; | 493 return 8; |
492 default: | 494 default: |
493 return 0; | 495 return 0; |
494 } | 496 } |
495 } | 497 } |
496 | 498 |
497 /* Sync from 3.8.2's modified*/ | |
498 #ifdef _WIN32_WCE | |
499 void* wceex_bsearch(const void *key, const void *base, size_t nmemb, size_t size
, | |
500 int (*compar)(const void *, cons
t void *)); | |
501 #define bsearch wceex_bsearch | |
502 #endif | |
503 | |
504 const TIFFField* | 499 const TIFFField* |
505 TIFFFindField(TIFF* tif, uint32 tag, TIFFDataType dt) | 500 TIFFFindField(TIFF* tif, uint32 tag, TIFFDataType dt) |
506 { | 501 { |
507 TIFFField key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0, 0, 0, NULL, NULL}; | 502 TIFFField key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0, 0, 0, NULL, NULL}; |
508 TIFFField* pkey = &key; | 503 TIFFField* pkey = &key; |
509 const TIFFField **ret; | 504 const TIFFField **ret; |
510 if (tif->tif_foundfield && tif->tif_foundfield->field_tag == tag && | 505 if (tif->tif_foundfield && tif->tif_foundfield->field_tag == tag && |
511 (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type)) | 506 (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type)) |
512 return tif->tif_foundfield; | 507 return tif->tif_foundfield; |
513 | 508 |
(...skipping 25 matching lines...) Expand all Loading... |
539 | 534 |
540 /* If we are invoked with no field information, then just return. */ | 535 /* If we are invoked with no field information, then just return. */ |
541 if (!tif->tif_fields) | 536 if (!tif->tif_fields) |
542 return NULL; | 537 return NULL; |
543 | 538 |
544 /* NB: use linear search since list is sorted by key#, not name */ | 539 /* NB: use linear search since list is sorted by key#, not name */ |
545 | 540 |
546 key.field_name = (char *)field_name; | 541 key.field_name = (char *)field_name; |
547 key.field_type = dt; | 542 key.field_type = dt; |
548 | 543 |
549 #if 1 | |
550 ret = (const TIFFField **) | 544 ret = (const TIFFField **) |
551 td_lfind(&pkey, tif->tif_fields, &tif->tif_nfields, | 545 td_lfind(&pkey, tif->tif_fields, &tif->tif_nfields, |
552 sizeof(TIFFField *), tagNameCompare); | 546 sizeof(TIFFField *), tagNameCompare); |
553 #else | 547 |
554 » // from old svn version | |
555 » /*ret = (const TIFFFieldInfo **) lfind(&pkey, | |
556 » » » » » » » » » »
» tif->tif_fieldinfo, | |
557 » » » » » » » » » »
» &tif->tif_nfields, | |
558 » » » » » » » » » »
» sizeof(TIFFFieldInfo *), | |
559 » » » » » » » » » »
» tagNameCompare); | |
560 » */ | |
561 » /*modify by Sunliang.Liu 20090827 for some platform not support lfind*/ | |
562 » ret = NULL; | |
563 #endif | |
564 return tif->tif_foundfield = (ret ? *ret : NULL); | 548 return tif->tif_foundfield = (ret ? *ret : NULL); |
565 } | 549 } |
566 | 550 |
567 const TIFFField* | 551 const TIFFField* |
568 TIFFFieldWithTag(TIFF* tif, uint32 tag) | 552 TIFFFieldWithTag(TIFF* tif, uint32 tag) |
569 { | 553 { |
570 const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY); | 554 const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY); |
571 if (!fip) { | 555 if (!fip) { |
572 TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithTag", | 556 TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithTag", |
573 "Internal error, unknown tag 0x%x", | 557 "Internal error, unknown tag 0x%x", |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 if (fld->field_name == NULL) { | 706 if (fld->field_name == NULL) { |
723 _TIFFfree(fld); | 707 _TIFFfree(fld); |
724 return NULL; | 708 return NULL; |
725 } | 709 } |
726 fld->field_subfields = NULL; | 710 fld->field_subfields = NULL; |
727 | 711 |
728 /* | 712 /* |
729 * note that this name is a special sign to TIFFClose() and | 713 * note that this name is a special sign to TIFFClose() and |
730 * _TIFFSetupFields() to free the field | 714 * _TIFFSetupFields() to free the field |
731 */ | 715 */ |
732 » sprintf(fld->field_name, "Tag %d", (int) tag); | 716 » snprintf(fld->field_name, 32, "Tag %d", (int) tag); |
733 | 717 |
734 return fld; | 718 return fld; |
735 } | 719 } |
736 | 720 |
737 /**************************************************************************** | 721 /**************************************************************************** |
738 * O B S O L E T E D I N T E R F A C E S | 722 * O B S O L E T E D I N T E R F A C E S |
739 * | 723 * |
740 * Don't use this stuff in your applications, it may be removed in the future | 724 * Don't use this stuff in your applications, it may be removed in the future |
741 * libtiff versions. | 725 * libtiff versions. |
742 ****************************************************************************/ | 726 ****************************************************************************/ |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
966 | 950 |
967 /* vim: set ts=8 sts=8 sw=8 noet: */ | 951 /* vim: set ts=8 sts=8 sw=8 noet: */ |
968 | 952 |
969 /* | 953 /* |
970 * Local Variables: | 954 * Local Variables: |
971 * mode: c | 955 * mode: c |
972 * c-basic-offset: 8 | 956 * c-basic-offset: 8 |
973 * fill-column: 78 | 957 * fill-column: 78 |
974 * End: | 958 * End: |
975 */ | 959 */ |
976 | |
OLD | NEW |