ReactOS 0.4.16-dev-2613-g9533ad7
tif_dirinfo.c
Go to the documentation of this file.
1/*
2 * Copyright (c) 1988-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 * Core Directory Tag Support.
29 */
30#include "tiffiop.h"
31#include <stdlib.h>
32
33/*
34 * NOTE: THIS ARRAY IS ASSUMED TO BE SORTED BY TAG.
35 *
36 * NOTE: The second field (field_readcount) and third field (field_writecount)
37 * sometimes use the values TIFF_VARIABLE (-1), TIFF_VARIABLE2 (-3)
38 * and TIFF_SPP (-2). The macros should be used but would throw off
39 * the formatting of the code, so please interpret the -1, -2 and -3
40 * values accordingly.
41 */
42
43/* const object should be initialized */
44#ifdef _MSC_VER
45#pragma warning(push)
46#pragma warning(disable : 4132)
47#endif
51#ifdef _MSC_VER
52#pragma warning(pop)
53#endif
54/*--: Rational2Double: --
55 * The Rational2Double upgraded libtiff functionality allows the definition and
56 * achievement of true double-precision accuracy for TIFF tags of RATIONAL type
57 * and field_bit=FIELD_CUSTOM using the set_get_field_type = TIFF_SETGET_DOUBLE.
58 * Unfortunately, that changes the old implemented interface for TIFFGetField().
59 * In order to keep the old TIFFGetField() interface behavior those tags have to
60 * be redefined with set_get_field_type = TIFF_SETGET_FLOAT!
61 *
62 * Rational custom arrays are already defined as _Cxx_FLOAT, thus can stay.
63 *
64 */
65
66/* clang-format off */ /* for better readability of tag comments */
67static const TIFFField tiffFields[] = {
68 {TIFFTAG_SUBFILETYPE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_SUBFILETYPE, 1, 0, "SubfileType", NULL},
69 {TIFFTAG_OSUBFILETYPE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "OldSubfileType", NULL},
74 {TIFFTAG_PHOTOMETRIC, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_PHOTOMETRIC, 0, 0, "PhotometricInterpretation", NULL},
76 {TIFFTAG_CELLWIDTH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "CellWidth", NULL},
77 {TIFFTAG_CELLLENGTH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "CellLength", NULL},
78 {TIFFTAG_FILLORDER, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_FILLORDER, 0, 0, "FillOrder", NULL},
79 {TIFFTAG_DOCUMENTNAME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DocumentName", NULL},
80 {TIFFTAG_IMAGEDESCRIPTION, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "ImageDescription", NULL},
81 {TIFFTAG_MAKE, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "Make", NULL},
82 {TIFFTAG_MODEL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "Model", NULL},
86 {TIFFTAG_ROWSPERSTRIP, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_ROWSPERSTRIP, 0, 0, "RowsPerStrip", NULL},
88 {TIFFTAG_MINSAMPLEVALUE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_MINSAMPLEVALUE, 1, 0, "MinSampleValue", NULL},
89 {TIFFTAG_MAXSAMPLEVALUE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_MAXSAMPLEVALUE, 1, 0, "MaxSampleValue", NULL},
92 {TIFFTAG_PLANARCONFIG, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_PLANARCONFIG, 0, 0, "PlanarConfiguration", NULL},
93 {TIFFTAG_PAGENAME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "PageName", NULL},
96 {TIFFTAG_FREEOFFSETS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 0, 0, "FreeOffsets", NULL},
97 {TIFFTAG_FREEBYTECOUNTS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 0, 0, "FreeByteCounts", NULL},
98 {TIFFTAG_GRAYRESPONSEUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "GrayResponseUnit", NULL},
99 {TIFFTAG_GRAYRESPONSECURVE, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "GrayResponseCurve", NULL},
102 {TIFFTAG_COLORRESPONSEUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "ColorResponseUnit", NULL},
103 {TIFFTAG_TRANSFERFUNCTION, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_OTHER, FIELD_TRANSFERFUNCTION, 1, 0, "TransferFunction", NULL},
104 {TIFFTAG_SOFTWARE, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "Software", NULL},
105 {TIFFTAG_DATETIME, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DateTime", NULL},
106 {TIFFTAG_ARTIST, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "Artist", NULL},
107 {TIFFTAG_HOSTCOMPUTER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "HostComputer", NULL},
108 {TIFFTAG_WHITEPOINT, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "WhitePoint", NULL},
109 {TIFFTAG_PRIMARYCHROMATICITIES, 6, 6, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "PrimaryChromaticities", NULL},
110 {TIFFTAG_COLORMAP, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_OTHER, FIELD_COLORMAP, 1, 0, "ColorMap", NULL},
117 {TIFFTAG_INKSET, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 0, 0, "InkSet", NULL},
118 {TIFFTAG_INKNAMES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_C16_ASCII, FIELD_INKNAMES, 1, 1, "InkNames", NULL},
119 {TIFFTAG_NUMBEROFINKS, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_NUMBEROFINKS, 1, 0, "NumberOfInks", NULL},
121 {TIFFTAG_TARGETPRINTER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "TargetPrinter", NULL},
123 {TIFFTAG_SAMPLEFORMAT, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_SAMPLEFORMAT, 0, 0, "SampleFormat", NULL},
124 {TIFFTAG_SMINSAMPLEVALUE, -2, -1, TIFF_ANY, 0, TIFF_SETGET_DOUBLE, FIELD_SMINSAMPLEVALUE, 1, 0, "SMinSampleValue", NULL},
125 {TIFFTAG_SMAXSAMPLEVALUE, -2, -1, TIFF_ANY, 0, TIFF_SETGET_DOUBLE, FIELD_SMAXSAMPLEVALUE, 1, 0, "SMaxSampleValue", NULL},
126 {TIFFTAG_CLIPPATH, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 0, 1, "ClipPath", NULL},
127 {TIFFTAG_XCLIPPATHUNITS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 0, 0, "XClipPathUnits", NULL},
128 {TIFFTAG_YCLIPPATHUNITS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 0, 0, "YClipPathUnits", NULL},
129 {TIFFTAG_YCBCRCOEFFICIENTS, 3, 3, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 0, 0, "YCbCrCoefficients", NULL},
133 {TIFFTAG_XMLPACKET, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "XMLPacket", NULL},
134 /* begin SGI tags */
136 {TIFFTAG_DATATYPE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_SAMPLEFORMAT, 0, 0, "DataType", NULL},
137 {TIFFTAG_IMAGEDEPTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_IMAGEDEPTH, 0, 0, "ImageDepth", NULL},
138 {TIFFTAG_TILEDEPTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_TILEDEPTH, 0, 0, "TileDepth", NULL},
139 /* end SGI tags */
140 /* begin Pixar tags */
141 {TIFFTAG_PIXAR_IMAGEFULLWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ImageFullWidth", NULL},
142 {TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ImageFullLength", NULL},
143 {TIFFTAG_PIXAR_TEXTUREFORMAT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "TextureFormat", NULL},
144 {TIFFTAG_PIXAR_WRAPMODES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "TextureWrapModes", NULL},
145 {TIFFTAG_PIXAR_FOVCOT, 1, 1, TIFF_FLOAT, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "FieldOfViewCotangent", NULL},
146 {TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "MatrixWorldToScreen", NULL},
147 {TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "MatrixWorldToCamera", NULL},
148 {TIFFTAG_COPYRIGHT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "Copyright", NULL},
149 /* end Pixar tags */
150 {TIFFTAG_RICHTIFFIPTC, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "RichTIFFIPTC", NULL},
151 {TIFFTAG_PHOTOSHOP, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "Photoshop", NULL},
152 /*--: EXIFIFD and GPSIFD specified as TIFF_LONG by Aware-Systems and not TIFF_IFD8 as in original LibTiff. However, for IFD-like tags,
153 * libtiff uses the data type TIFF_IFD8 in tiffFields[]-tag definition combined with a special handling procedure in order to write either
154 * a 32-bit value and the TIFF_IFD type-id into ClassicTIFF files or a 64-bit value and the TIFF_IFD8 type-id into BigTIFF files. */
156 {TIFFTAG_ICCPROFILE, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "ICC Profile", NULL},
157 {TIFFTAG_GPSIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, FIELD_CUSTOM, 1, 0, "GPSIFDOffset", (TIFFFieldArray *)&gpsFieldArray},
162 {TIFFTAG_STONITS, 1, 1, TIFF_DOUBLE, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 0, 0, "StoNits", NULL},
163 {TIFFTAG_IMAGESOURCEDATA, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "Adobe Photoshop Document Data Block", NULL},
164 {TIFFTAG_INTEROPERABILITYIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, FIELD_CUSTOM, 0, 0, "InteroperabilityIFDOffset", NULL},
165 /* begin DNG tags */
166 {TIFFTAG_DNGVERSION, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "DNGVersion", NULL},
167 {TIFFTAG_DNGBACKWARDVERSION, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "DNGBackwardVersion", NULL},
168 {TIFFTAG_UNIQUECAMERAMODEL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "UniqueCameraModel", NULL},
169 {TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "LocalizedCameraModel", NULL},
170 {TIFFTAG_CFAPLANECOLOR, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "CFAPlaneColor", NULL},
171 {TIFFTAG_CFALAYOUT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "CFALayout", NULL},
172 {TIFFTAG_LINEARIZATIONTABLE, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, FIELD_CUSTOM, 1, 1, "LinearizationTable", NULL},
173 {TIFFTAG_BLACKLEVELREPEATDIM, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, FIELD_CUSTOM, 1, 0, "BlackLevelRepeatDim", NULL},
174 {TIFFTAG_BLACKLEVEL, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "BlackLevel", NULL},
175 {TIFFTAG_BLACKLEVELDELTAH, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "BlackLevelDeltaH", NULL},
176 {TIFFTAG_BLACKLEVELDELTAV, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "BlackLevelDeltaV", NULL},
177 {TIFFTAG_WHITELEVEL, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, FIELD_CUSTOM, 1, 1, "WhiteLevel", NULL},
178 {TIFFTAG_DEFAULTSCALE, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "DefaultScale", NULL},
179 {TIFFTAG_BESTQUALITYSCALE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "BestQualityScale", NULL},
180 {TIFFTAG_DEFAULTCROPORIGIN, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "DefaultCropOrigin", NULL},
181 {TIFFTAG_DEFAULTCROPSIZE, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "DefaultCropSize", NULL},
182 {TIFFTAG_COLORMATRIX1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ColorMatrix1", NULL},
183 {TIFFTAG_COLORMATRIX2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ColorMatrix2", NULL},
184 {TIFFTAG_CAMERACALIBRATION1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "CameraCalibration1", NULL},
185 {TIFFTAG_CAMERACALIBRATION2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "CameraCalibration2", NULL},
186 {TIFFTAG_REDUCTIONMATRIX1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ReductionMatrix1", NULL},
187 {TIFFTAG_REDUCTIONMATRIX2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ReductionMatrix2", NULL},
188 {TIFFTAG_ANALOGBALANCE, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "AnalogBalance", NULL},
189 {TIFFTAG_ASSHOTNEUTRAL, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "AsShotNeutral", NULL},
190 {TIFFTAG_ASSHOTWHITEXY, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "AsShotWhiteXY", NULL},
191 {TIFFTAG_BASELINEEXPOSURE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "BaselineExposure", NULL},
192 {TIFFTAG_BASELINENOISE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "BaselineNoise", NULL},
193 {TIFFTAG_BASELINESHARPNESS, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "BaselineSharpness", NULL},
194 {TIFFTAG_BAYERGREENSPLIT, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "BayerGreenSplit", NULL},
195 {TIFFTAG_LINEARRESPONSELIMIT, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "LinearResponseLimit", NULL},
196 {TIFFTAG_CAMERASERIALNUMBER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "CameraSerialNumber", NULL},
198 {TIFFTAG_CHROMABLURRADIUS, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "ChromaBlurRadius", NULL},
199 {TIFFTAG_ANTIALIASSTRENGTH, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "AntiAliasStrength", NULL},
200 {TIFFTAG_SHADOWSCALE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "ShadowScale", NULL},
201 {TIFFTAG_DNGPRIVATEDATA, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "DNGPrivateData", NULL},
202 {TIFFTAG_MAKERNOTESAFETY, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "MakerNoteSafety", NULL},
203 {TIFFTAG_CALIBRATIONILLUMINANT1, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "CalibrationIlluminant1", NULL},
204 {TIFFTAG_CALIBRATIONILLUMINANT2, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "CalibrationIlluminant2", NULL},
205 {TIFFTAG_RAWDATAUNIQUEID, 16, 16, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "RawDataUniqueID", NULL},
206 {TIFFTAG_ORIGINALRAWFILENAME, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "OriginalRawFileName", NULL},
207 {TIFFTAG_ORIGINALRAWFILEDATA, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "OriginalRawFileData", NULL},
208 {TIFFTAG_ACTIVEAREA, 4, 4, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, FIELD_CUSTOM, 1, 0, "ActiveArea", NULL},
209 {TIFFTAG_MASKEDAREAS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, FIELD_CUSTOM, 1, 1, "MaskedAreas", NULL},
210 {TIFFTAG_ASSHOTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "AsShotICCProfile", NULL},
211 {TIFFTAG_ASSHOTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "AsShotPreProfileMatrix", NULL},
212 {TIFFTAG_CURRENTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "CurrentICCProfile", NULL},
213 {TIFFTAG_CURRENTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "CurrentPreProfileMatrix", NULL},
215#if 0
216 /* begin DNG 1.2.0.0 tags */
217 {TIFFTAG_COLORIMETRICREFERENCE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "ColorimetricReference", NULL},
218 {TIFFTAG_CAMERACALIBRATIONSIGNATURE, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "CameraCalibrationSignature", NULL},
219 {TIFFTAG_PROFILECALIBRATIONSIGNATURE, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "ProfileCalibrationSignature", NULL},
220 {TIFFTAG_EXTRACAMERAPROFILES, -1, -1, TIFF_IFD8, 0, TIFF_SETGET_C16_IFD8, FIELD_CUSTOM, 1, 1, "ExtraCameraProfiles", NULL},
221 {TIFFTAG_ASSHOTPROFILENAME, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "AsShotProfileName", NULL},
222 {TIFFTAG_NOISEREDUCTIONAPPLIED, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "NoiseReductionApplied", NULL},
223 {TIFFTAG_PROFILENAME, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "ProfileName", NULL},
224 {TIFFTAG_PROFILEHUESATMAPDIMS, 3, 3, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, FIELD_CUSTOM, 1, 0, "ProfileHueSatMapDims", NULL},
225 {TIFFTAG_PROFILEHUESATMAPDATA1, -1, -1, TIFF_FLOAT, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ProfileHueSatMapData1", NULL},
226 {TIFFTAG_PROFILEHUESATMAPDATA2, -1, -1, TIFF_FLOAT, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ProfileHueSatMapData2", NULL},
227 {TIFFTAG_PROFILETONECURVE, -1, -1, TIFF_FLOAT, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ProfileToneCurve", NULL},
228 {TIFFTAG_PROFILEEMBEDPOLICY, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ProfileEmbedPolicy", NULL},
229 {TIFFTAG_PROFILECOPYRIGHT, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "ProfileCopyright", NULL},
230 {TIFFTAG_FORWARDMATRIX1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ForwardMatrix1", NULL},
231 {TIFFTAG_FORWARDMATRIX2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ForwardMatrix2", NULL},
232 {TIFFTAG_PREVIEWAPPLICATIONNAME, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "PreviewApplicationName", NULL},
233 {TIFFTAG_PREVIEWAPPLICATIONVERSION, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "PreviewApplicationVersion", NULL},
234 {TIFFTAG_PREVIEWSETTINGSNAME, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "PreviewSettingsName", NULL},
235 {TIFFTAG_PREVIEWSETTINGSDIGEST, 16, 16, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "PreviewSettingsDigest", NULL},
236 {TIFFTAG_PREVIEWCOLORSPACE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "PreviewColorSpace", NULL},
237 {TIFFTAG_PREVIEWDATETIME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "PreviewDateTime", NULL},
238 {TIFFTAG_RAWIMAGEDIGEST, 16, 16, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "RawImageDigest", NULL},
239 {TIFFTAG_ORIGINALRAWFILEDIGEST, 16, 16, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "OriginalRawFileDigest", NULL},
240 {TIFFTAG_SUBTILEBLOCKSIZE, 2, 2, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, FIELD_CUSTOM, 1, 0, "SubTileBlockSize", NULL},
241 {TIFFTAG_ROWINTERLEAVEFACTOR, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "RowInterleaveFactor", NULL},
242 {TIFFTAG_PROFILELOOKTABLEDIMS, 3, 3, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, FIELD_CUSTOM, 1, 0, "ProfileLookTableDims", NULL},
243 {TIFFTAG_PROFILELOOKTABLEDATA, -1, -1, TIFF_FLOAT, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ProfileLookTableData", NULL},
244 /* begin DNG 1.3.0.0 tags */
245 {TIFFTAG_OPCODELIST1, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "OpcodeList1", NULL},
246 {TIFFTAG_OPCODELIST2, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "OpcodeList2", NULL},
247 {TIFFTAG_OPCODELIST3, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "OpcodeList3", NULL},
248 {TIFFTAG_NOISEPROFILE, -1, -1, TIFF_DOUBLE, 0, TIFF_SETGET_C16_DOUBLE, FIELD_CUSTOM, 1, 1, "NoiseProfile", NULL},
249 /* begin DNG 1.4.0.0 tags */
250 {TIFFTAG_DEFAULTUSERCROP, 4, 4, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "DefaultUserCrop", NULL},
251 {TIFFTAG_DEFAULTBLACKRENDER, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "DefaultBlackRender", NULL},
252 {TIFFTAG_BASELINEEXPOSUREOFFSET, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "BaselineExposureOffset", NULL},
253 {TIFFTAG_PROFILELOOKTABLEENCODING, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ProfileLookTableEncoding", NULL},
254 {TIFFTAG_PROFILEHUESATMAPENCODING, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ProfileHueSatMapEncoding", NULL},
255 {TIFFTAG_ORIGINALDEFAULTFINALSIZE, 2, 2, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, FIELD_CUSTOM, 1, 0, "OriginalDefaultFinalSize", NULL},
256 {TIFFTAG_ORIGINALBESTQUALITYFINALSIZE, 2, 2, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, FIELD_CUSTOM, 1, 0, "OriginalBestQualityFinalSize", NULL},
257 {TIFFTAG_ORIGINALDEFAULTCROPSIZE, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "OriginalDefaultCropSize", NULL}, /* could also be rational */
258 {TIFFTAG_NEWRAWIMAGEDIGEST, 16, 16, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "NewRawImageDigest", NULL},
259 {TIFFTAG_RAWTOPREVIEWGAIN, 1, 1, TIFF_DOUBLE, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "RawToPreviewGain", NULL},
260 /* begin DNG 1.5.0.0 tags */
261 {TIFFTAG_DEPTHFORMAT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "DepthFormat", NULL},
262 {TIFFTAG_DEPTHNEAR, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "DepthNear", NULL},
263 {TIFFTAG_DEPTHFAR, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "DepthFar", NULL},
264 {TIFFTAG_DEPTHUNITS, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "DepthUnits", NULL},
265 {TIFFTAG_DEPTHMEASURETYPE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "DepthMeasureType", NULL},
266 {TIFFTAG_ENHANCEPARAMS, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "EnhanceParams", NULL},
267 /* begin DNG 1.6.0.0 tags */
268 {TIFFTAG_PROFILEGAINTABLEMAP, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "ProfileGainTableMap", NULL},
269 {TIFFTAG_SEMANTICNAME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "SemanticName", NULL},
270 {TIFFTAG_SEMANTICINSTANCEID, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "SemanticInstanceID", NULL},
271 {TIFFTAG_MASKSUBAREA, 4, 4, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, FIELD_CUSTOM, 1, 0, "MaskSubArea", NULL},
272 {TIFFTAG_RGBTABLES, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "RGBTables", NULL},
273 {TIFFTAG_CALIBRATIONILLUMINANT3, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "CalibrationIlluminant3", NULL},
274 {TIFFTAG_COLORMATRIX3, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ColorMatrix3", NULL},
275 {TIFFTAG_CAMERACALIBRATION3, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "CameraCalibration3", NULL},
276 {TIFFTAG_REDUCTIONMATRIX3, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ReductionMatrix3", NULL},
277 {TIFFTAG_PROFILEHUESATMAPDATA3, -1, -1, TIFF_FLOAT, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ProfileHueSatMapData3", NULL},
278 {TIFFTAG_FORWARDMATRIX3, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "ForwardMatrix3", NULL},
279 {TIFFTAG_ILLUMINANTDATA1, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "IlluminantData1", NULL},
280 {TIFFTAG_ILLUMINANTDATA2, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "IlluminantData2", NULL},
281 {TIFFTAG_ILLUMINANTDATA3, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "IlluminantData3", NULL},
282 /* end DNG tags */
283#endif
284 /* begin TIFF/EP tags */
285 {TIFFTAG_EP_CFAREPEATPATTERNDIM, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, FIELD_CUSTOM, 1, 0, "EP CFARepeatPatternDim", NULL},
286 {TIFFTAG_EP_CFAPATTERN, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "EP CFAPattern", NULL},
287#if 0
288 /* TIFFTAG_EP_BATTERYLEVEL can be RATIONAL or ASCII.
289 * LibTiff defines it as ASCII and converts RATIONAL to an ASCII string. */
290 {TIFFTAG_EP_BATTERYLEVEL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "EP BatteryLevel", NULL},
291 {TIFFTAG_EP_INTERLACE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP Interlace", NULL},
292 /* TIFFTAG_EP_IPTC_NAA and TIFFTAG_RICHTIFFIPTC share the same tag number (33723)
293 * LibTIFF type is UNDEFINED or BYTE, but often times incorrectly specified as LONG, because TIFF/EP (ISO/DIS 12234-2) specifies type LONG or ASCII. */
294 {TIFFTAG_EP_TIMEZONEOFFSET, -1, -1, TIFF_SSHORT, 0, TIFF_SETGET_C16_UINT16, FIELD_CUSTOM, 1, 1, "EP TimeZoneOffset", NULL},
295 {TIFFTAG_EP_SELFTIMERMODE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP SelfTimerMode", NULL},
296 {TIFFTAG_EP_FLASHENERGY, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "EP FlashEnergy", NULL},
297 {TIFFTAG_EP_SPATIALFREQUENCYRESPONSE, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "EP SpatialFrequencyResponse", NULL},
298 {TIFFTAG_EP_NOISE, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "EP Noise", NULL},
299 {TIFFTAG_EP_FOCALPLANEXRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "EP FocalPlaneXResolution", NULL},
300 {TIFFTAG_EP_FOCALPLANEYRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "EP FocalPlaneYResolution", NULL},
301 {TIFFTAG_EP_FOCALPLANERESOLUTIONUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP FocalPlaneResolutionUnit", NULL},
302 {TIFFTAG_EP_IMAGENUMBER, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "EP ImageNumber", NULL}, /* or SHORT */
303 {TIFFTAG_EP_SECURITYCLASSIFICATION, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "EP SecurityClassification", NULL},
304 {TIFFTAG_EP_IMAGEHISTORY, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "EP ImageHistory", NULL},
305 {TIFFTAG_EP_EXPOSUREINDEX, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "EP ExposureIndex", NULL},
306 {TIFFTAG_EP_STANDARDID, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "EP StandardId", NULL},
307 {TIFFTAG_EP_SENSINGMETHOD, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP SensingMethod", NULL},
308 /* TIFF/EP tags equivalent to EXIF tags, sometimes defined differently. */
309 {TIFFTAG_EP_EXPOSURETIME, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "EP ExposureTime", NULL}, /*N=1 or 2 */
310 {TIFFTAG_EP_FNUMBER, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "EP FNumber", NULL},
311 {TIFFTAG_EP_EXPOSUREPROGRAM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP ExposureProgram", NULL},
312 {TIFFTAG_EP_SPECTRALSENSITIVITY, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "EP SpectralSensitivity", NULL},
313 {TIFFTAG_EP_ISOSPEEDRATINGS, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP ISOSpeedRatings", NULL},
314 {TIFFTAG_EP_OECF, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, FIELD_CUSTOM, 1, 1, "EP OptoelectricConversionFactor", NULL},
315 {TIFFTAG_EP_DATETIMEORIGINAL, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "EP DateTimeOriginal", NULL},
316 {TIFFTAG_EP_COMPRESSEDBITSPERPIXEL, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "EP CompressedBitsPerPixel", NULL},
317 {TIFFTAG_EP_SHUTTERSPEEDVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "EP ShutterSpeedValue", NULL},
318 {TIFFTAG_EP_APERTUREVALUE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "EP ApertureValue", NULL},
319 {TIFFTAG_EP_BRIGHTNESSVALUE, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "EP BrightnessValue", NULL},
320 {TIFFTAG_EP_EXPOSUREBIASVALUE, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "EP ExposureBiasValue", NULL}, /*N=1 or 2 */
321 {TIFFTAG_EP_MAXAPERTUREVALUE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "EP MaxApertureValue", NULL},
322 {TIFFTAG_EP_SUBJECTDISTANCE, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "EP SubjectDistance", NULL},
323 {TIFFTAG_EP_METERINGMODE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP MeteringMode", NULL},
324 {TIFFTAG_EP_LIGHTSOURCE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP LightSource", NULL},
325 {TIFFTAG_EP_FLASH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "EP Flash", NULL},
326 {TIFFTAG_EP_FOCALLENGTH, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, FIELD_CUSTOM, 1, 1, "EP FocalLength", NULL},
327 {TIFFTAG_EP_SUBJECTLOCATION, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, FIELD_CUSTOM, 1, 1, "EP SubjectLocation", NULL},
328 /* end TIFF/EP tags */
329#endif
330 /* begin TIFF/FX tags */
331 {TIFFTAG_INDEXED, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "Indexed", NULL},
332 {TIFFTAG_GLOBALPARAMETERSIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, FIELD_CUSTOM, 1, 0, "GlobalParametersIFD", NULL},
333 {TIFFTAG_PROFILETYPE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ProfileType", NULL},
334 {TIFFTAG_FAXPROFILE, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, FIELD_CUSTOM, 1, 0, "FaxProfile", NULL},
335 {TIFFTAG_CODINGMETHODS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "CodingMethods", NULL},
336 {TIFFTAG_VERSIONYEAR, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "VersionYear", NULL},
337 {TIFFTAG_MODENUMBER, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, FIELD_CUSTOM, 1, 0, "ModeNumber", NULL},
339 {TIFFTAG_IMAGEBASECOLOR, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, FIELD_CUSTOM, 1, 1, "ImageBaseColor", NULL},
340 {TIFFTAG_T82OPTIONS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "T82Options", NULL},
341 {TIFFTAG_STRIPROWCOUNTS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, FIELD_CUSTOM, 1, 1, "StripRowCounts", NULL},
342 {TIFFTAG_IMAGELAYER, 2, 2, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, FIELD_CUSTOM, 1, 0, "ImageLayer", NULL},
343 /* end TIFF/FX tags */
344 /* begin pseudo tags */
345};
346
347/*
348 * EXIF tags (Version 2.31, July 2016 plus version 2.32 May 2019)
349 */
350static const TIFFField exifFields[] = {
351 {EXIFTAG_EXPOSURETIME, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "ExposureTime", NULL},
352 {EXIFTAG_FNUMBER, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "FNumber", NULL},
353 {EXIFTAG_EXPOSUREPROGRAM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "ExposureProgram", NULL},
354 {EXIFTAG_SPECTRALSENSITIVITY, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "SpectralSensitivity", NULL},
355 /* After EXIF 2.2.1 ISOSpeedRatings is named PhotographicSensitivity. In addition, while "Count=Any", only 1 count should be used. */
356 {EXIFTAG_ISOSPEEDRATINGS, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, FIELD_CUSTOM, 1, 1, "ISOSpeedRatings", NULL},
357 {EXIFTAG_OECF, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "OptoelectricConversionFactor", NULL},
358 {EXIFTAG_SENSITIVITYTYPE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "SensitivityType", NULL},
359 {EXIFTAG_STANDARDOUTPUTSENSITIVITY, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "StandardOutputSensitivity", NULL},
360 {EXIFTAG_RECOMMENDEDEXPOSUREINDEX, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "RecommendedExposureIndex", NULL},
361 {EXIFTAG_ISOSPEED, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ISOSpeed", NULL},
362 {EXIFTAG_ISOSPEEDLATITUDEYYY, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ISOSpeedLatitudeyyy", NULL},
363 {EXIFTAG_ISOSPEEDLATITUDEZZZ, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "ISOSpeedLatitudezzz", NULL},
364 {EXIFTAG_EXIFVERSION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "ExifVersion", NULL},
365 {EXIFTAG_DATETIMEORIGINAL, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DateTimeOriginal", NULL},
366 {EXIFTAG_DATETIMEDIGITIZED, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DateTimeDigitized", NULL},
367 {EXIFTAG_OFFSETTIME, 7, 7, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "OffsetTime", NULL},
368 {EXIFTAG_OFFSETTIMEORIGINAL, 7, 7, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "OffsetTimeOriginal", NULL},
369 {EXIFTAG_OFFSETTIMEDIGITIZED, 7, 7, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "OffsetTimeDigitized", NULL},
370 {EXIFTAG_COMPONENTSCONFIGURATION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "ComponentsConfiguration", NULL},
371 {EXIFTAG_COMPRESSEDBITSPERPIXEL, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "CompressedBitsPerPixel", NULL},
372 {EXIFTAG_SHUTTERSPEEDVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "ShutterSpeedValue", NULL},
373 {EXIFTAG_APERTUREVALUE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "ApertureValue", NULL},
374 {EXIFTAG_BRIGHTNESSVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "BrightnessValue", NULL},
375 {EXIFTAG_EXPOSUREBIASVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "ExposureBiasValue", NULL},
376 {EXIFTAG_MAXAPERTUREVALUE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "MaxApertureValue", NULL},
377 /*--: EXIFTAG_SUBJECTDISTANCE: LibTiff returns value of "-1" if numerator equals 4294967295 (0xFFFFFFFF) to indicate infinite distance!
378 * However, there are two other EXIF tags where numerator indicates a special value and six other cases where the denominator indicates special values,
379 * which are not treated within LibTiff!! */
380 {EXIFTAG_SUBJECTDISTANCE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "SubjectDistance", NULL},
381 {EXIFTAG_METERINGMODE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "MeteringMode", NULL},
382 {EXIFTAG_LIGHTSOURCE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "LightSource", NULL},
383 {EXIFTAG_FLASH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "Flash", NULL},
384 {EXIFTAG_FOCALLENGTH, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "FocalLength", NULL},
385 {EXIFTAG_SUBJECTAREA, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, FIELD_CUSTOM, 1, 1, "SubjectArea", NULL},
386 {EXIFTAG_MAKERNOTE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "MakerNote", NULL},
387 {EXIFTAG_USERCOMMENT, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "UserComment", NULL},
388 {EXIFTAG_SUBSECTIME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "SubSecTime", NULL},
389 {EXIFTAG_SUBSECTIMEORIGINAL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "SubSecTimeOriginal", NULL},
390 {EXIFTAG_SUBSECTIMEDIGITIZED, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "SubSecTimeDigitized", NULL},
391 {EXIFTAG_TEMPERATURE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "Temperature", NULL},
392 {EXIFTAG_HUMIDITY, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "Humidity", NULL},
393 {EXIFTAG_PRESSURE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "Pressure", NULL},
394 {EXIFTAG_WATERDEPTH, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "WaterDepth", NULL},
395 {EXIFTAG_ACCELERATION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "Acceleration", NULL},
396 {EXIFTAG_CAMERAELEVATIONANGLE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "CameraElevationAngle", NULL},
397 {EXIFTAG_FLASHPIXVERSION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "FlashpixVersion", NULL},
398 {EXIFTAG_COLORSPACE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "ColorSpace", NULL},
399 {EXIFTAG_PIXELXDIMENSION, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "PixelXDimension", NULL},
400 {EXIFTAG_PIXELYDIMENSION, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, FIELD_CUSTOM, 1, 0, "PixelYDimension", NULL},
401 {EXIFTAG_RELATEDSOUNDFILE, 13, 13, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "RelatedSoundFile", NULL},
402 {EXIFTAG_FLASHENERGY, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "FlashEnergy", NULL},
403 {EXIFTAG_SPATIALFREQUENCYRESPONSE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "SpatialFrequencyResponse", NULL},
404 {EXIFTAG_FOCALPLANEXRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "FocalPlaneXResolution", NULL},
405 {EXIFTAG_FOCALPLANEYRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "FocalPlaneYResolution", NULL},
406 {EXIFTAG_FOCALPLANERESOLUTIONUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "FocalPlaneResolutionUnit", NULL},
407 {EXIFTAG_SUBJECTLOCATION, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, FIELD_CUSTOM, 1, 0, "SubjectLocation", NULL},
408 {EXIFTAG_EXPOSUREINDEX, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "ExposureIndex", NULL},
409 {EXIFTAG_SENSINGMETHOD, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "SensingMethod", NULL},
410 {EXIFTAG_FILESOURCE, 1, 1, TIFF_UNDEFINED, 0, TIFF_SETGET_UINT8, FIELD_CUSTOM, 1, 0, "FileSource", NULL},
411 {EXIFTAG_SCENETYPE, 1, 1, TIFF_UNDEFINED, 0, TIFF_SETGET_UINT8, FIELD_CUSTOM, 1, 0, "SceneType", NULL},
412 {EXIFTAG_CFAPATTERN, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "CFAPattern", NULL},
413 {EXIFTAG_CUSTOMRENDERED, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "CustomRendered", NULL},
414 {EXIFTAG_EXPOSUREMODE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "ExposureMode", NULL},
415 {EXIFTAG_WHITEBALANCE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "WhiteBalance", NULL},
416 {EXIFTAG_DIGITALZOOMRATIO, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "DigitalZoomRatio", NULL},
417 {EXIFTAG_FOCALLENGTHIN35MMFILM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "FocalLengthIn35mmFilm", NULL},
418 {EXIFTAG_SCENECAPTURETYPE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "SceneCaptureType", NULL},
419 {EXIFTAG_GAINCONTROL, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "GainControl", NULL},
420 {EXIFTAG_CONTRAST, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "Contrast", NULL},
421 {EXIFTAG_SATURATION, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "Saturation", NULL},
422 {EXIFTAG_SHARPNESS, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "Sharpness", NULL},
423 {EXIFTAG_DEVICESETTINGDESCRIPTION, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "DeviceSettingDescription", NULL},
424 {EXIFTAG_SUBJECTDISTANCERANGE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "SubjectDistanceRange", NULL},
425 {EXIFTAG_IMAGEUNIQUEID, 33, 33, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "ImageUniqueID", NULL},
426 {EXIFTAG_CAMERAOWNERNAME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "CameraOwnerName", NULL},
427 {EXIFTAG_BODYSERIALNUMBER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "BodySerialNumber", NULL},
428 {EXIFTAG_LENSSPECIFICATION, 4, 4, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, FIELD_CUSTOM, 1, 0, "LensSpecification", NULL},
429 {EXIFTAG_LENSMAKE, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "LensMake", NULL},
430 {EXIFTAG_LENSMODEL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "LensModel", NULL},
431 {EXIFTAG_LENSSERIALNUMBER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "LensSerialNumber", NULL},
432 {EXIFTAG_GAMMA, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_FLOAT, FIELD_CUSTOM, 1, 0, "Gamma", NULL},
433 {EXIFTAG_COMPOSITEIMAGE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "CompositeImage", NULL},
434 {EXIFTAG_SOURCEIMAGENUMBEROFCOMPOSITEIMAGE, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, FIELD_CUSTOM, 1, 0, "SourceImageNumberOfCompositeImage", NULL},
436 "SourceExposureTimesOfCompositeImage", NULL}};
437/*
438 * EXIF-GPS tags (Version 2.31, July 2016; nothing changed for version 2.32 May
439 * 2019)
440 */
441
442static const TIFFField gpsFields[] = {
443 /* For the GPS tag definitions in gpsFields[] the standard definition for Rationals is TIFF_SETGET_DOUBLE and TIFF_SETGET_C0_FLOAT.
444 *-- ATTENTION: After the upgrade with Rational2Double, the GPSTAG values can now be written and also read in double precision!
445 * In order to achieve double precision for GPS tags: Standard definitions for GPSTAG is kept to TIFF_SETGET_DOUBLE
446 * and TIFF_SETGET_C0_FLOAT is changed to TIFF_SETGET_C0_DOUBLE.
447 */
448 {GPSTAG_VERSIONID, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, FIELD_CUSTOM, 1, 0, "VersionID", NULL},
449 {GPSTAG_LATITUDEREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "LatitudeRef", NULL},
451 {GPSTAG_LONGITUDEREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "LongitudeRef", NULL},
452 {GPSTAG_LONGITUDE, 3, 3, TIFF_RATIONAL, 0, TIFF_SETGET_C0_DOUBLE, FIELD_CUSTOM, 1, 0, "Longitude", NULL},
453 {GPSTAG_ALTITUDEREF, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, FIELD_CUSTOM, 1, 0, "AltitudeRef", NULL},
454 {GPSTAG_ALTITUDE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "Altitude", NULL},
455 {GPSTAG_TIMESTAMP, 3, 3, TIFF_RATIONAL, 0, TIFF_SETGET_C0_DOUBLE, FIELD_CUSTOM, 1, 0, "TimeStamp", NULL},
456 {GPSTAG_SATELLITES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "Satellites", NULL},
457 {GPSTAG_STATUS, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "Status", NULL},
458 {GPSTAG_MEASUREMODE, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "MeasureMode", NULL},
459 {GPSTAG_DOP, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "DOP", NULL},
460 {GPSTAG_SPEEDREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "SpeedRef", NULL},
461 {GPSTAG_SPEED, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "Speed", NULL},
462 {GPSTAG_TRACKREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "TrackRef", NULL},
463 {GPSTAG_TRACK, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "Track", NULL},
464 {GPSTAG_IMGDIRECTIONREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "ImgDirectionRef", NULL},
465 {GPSTAG_IMGDIRECTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "ImgDirection", NULL},
466 {GPSTAG_MAPDATUM, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "MapDatum", NULL},
467 {GPSTAG_DESTLATITUDEREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DestLatitudeRef", NULL},
468 {GPSTAG_DESTLATITUDE, 3, 3, TIFF_RATIONAL, 0, TIFF_SETGET_C0_DOUBLE, FIELD_CUSTOM, 1, 0, "DestLatitude", NULL},
469 {GPSTAG_DESTLONGITUDEREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DestLongitudeRef", NULL},
470 {GPSTAG_DESTLONGITUDE, 3, 3, TIFF_RATIONAL, 0, TIFF_SETGET_C0_DOUBLE, FIELD_CUSTOM, 1, 0, "DestLongitude", NULL},
471 {GPSTAG_DESTBEARINGREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DestBearingRef", NULL},
472 {GPSTAG_DESTBEARING, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "DestBearing", NULL},
473 {GPSTAG_DESTDISTANCEREF, 2, 2, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DestDistanceRef", NULL},
474 {GPSTAG_DESTDISTANCE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "DestDistance", NULL},
475 {GPSTAG_PROCESSINGMETHOD, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "ProcessingMethod", NULL},
476 {GPSTAG_AREAINFORMATION, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, FIELD_CUSTOM, 1, 1, "AreaInformation", NULL},
477 {GPSTAG_DATESTAMP, 11, 11, TIFF_ASCII, 0, TIFF_SETGET_ASCII, FIELD_CUSTOM, 1, 0, "DateStamp", NULL},
478 {GPSTAG_DIFFERENTIAL, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, FIELD_CUSTOM, 1, 0, "Differential", NULL},
479 {GPSTAG_GPSHPOSITIONINGERROR, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, FIELD_CUSTOM, 1, 0, "HorizontalPositioningError", NULL}};
480/* clang-format on */ /* was off for better readability of tag comments */
481
482static const TIFFFieldArray tiffFieldArray = {
484static const TIFFFieldArray exifFieldArray = {
486static const TIFFFieldArray gpsFieldArray = {
488
489/*
490 * We have our own local lfind() equivalent to avoid subtle differences
491 * in types passed to lfind() on different systems.
492 */
493
494static void *td_lfind(const void *key, const void *base, size_t *nmemb,
495 size_t size, int (*compar)(const void *, const void *))
496{
497 char *element, *end;
498
499 end = (char *)base + *nmemb * size;
500 for (element = (char *)base; element < end; element += size)
501 if (!compar(key, element)) /* key found */
502 return element;
503
504 return NULL;
505}
506
508
510
512
513void _TIFFSetupFields(TIFF *tif, const TIFFFieldArray *fieldarray)
514{
515 if (tif->tif_fields && tif->tif_nfields > 0)
516 {
517 uint32_t i;
518
519 for (i = 0; i < tif->tif_nfields; i++)
520 {
521 TIFFField *fld = tif->tif_fields[i];
522 if (fld->field_name != NULL)
523 {
524 if (fld->field_bit == FIELD_CUSTOM && TIFFFieldIsAnonymous(fld))
525 {
526 _TIFFfreeExt(tif, fld->field_name);
527 /* caution: tif_fields[i] must not be the beginning of a
528 * fields-array. Otherwise the following tags are also freed
529 * with the first free().
530 */
531 _TIFFfreeExt(tif, fld);
532 }
533 }
534 }
535
536 _TIFFfreeExt(tif, tif->tif_fields);
537 tif->tif_fields = NULL;
538 tif->tif_nfields = 0;
539 }
540 if (!_TIFFMergeFields(tif, fieldarray->fields, fieldarray->count))
541 {
542 TIFFErrorExtR(tif, "_TIFFSetupFields", "Setting up field info failed");
543 }
544}
545
546static int tagCompare(const void *a, const void *b)
547{
548 const TIFFField *ta = *(const TIFFField **)a;
549 const TIFFField *tb = *(const TIFFField **)b;
550 /* NB: be careful of return values for 16-bit platforms */
551 if (ta->field_tag != tb->field_tag)
552 return (int)ta->field_tag - (int)tb->field_tag;
553 else
554 return (ta->field_type == TIFF_ANY)
555 ? 0
556 : ((int)tb->field_type - (int)ta->field_type);
557}
558
559static int tagNameCompare(const void *a, const void *b)
560{
561 const TIFFField *ta = *(const TIFFField **)a;
562 const TIFFField *tb = *(const TIFFField **)b;
563 int ret = strcmp(ta->field_name, tb->field_name);
564
565 if (ret)
566 return ret;
567 else
568 return (ta->field_type == TIFF_ANY)
569 ? 0
570 : ((int)tb->field_type - (int)ta->field_type);
571}
572
574{
575 static const char module[] = "_TIFFMergeFields";
576 static const char reason[] = "for fields array";
577 /* TIFFField** tp; */
578 uint32_t i;
579
580 tif->tif_foundfield = NULL;
581
582 if (tif->tif_fields && tif->tif_nfields > 0)
583 {
585 tif, tif->tif_fields, (tif->tif_nfields + n), sizeof(TIFFField *),
586 reason);
587 }
588 else
589 {
590 tif->tif_fields =
591 (TIFFField **)_TIFFCheckMalloc(tif, n, sizeof(TIFFField *), reason);
592 }
593 if (!tif->tif_fields)
594 {
595 TIFFErrorExtR(tif, module, "Failed to allocate fields array");
596 return 0;
597 }
598
599 /* tp = tif->tif_fields + tif->tif_nfields; */
600 for (i = 0; i < n; i++)
601 {
602 const TIFFField *fip = TIFFFindField(tif, info[i].field_tag, TIFF_ANY);
603
604 /* only add definitions that aren't already present */
605 if (!fip)
606 {
607 tif->tif_fields[tif->tif_nfields] = (TIFFField *)(info + i);
608 tif->tif_nfields++;
609 }
610 }
611
612 /* Sort the field info by tag number */
613 qsort(tif->tif_fields, tif->tif_nfields, sizeof(TIFFField *), tagCompare);
614
615 return n;
616}
617
619{
620 uint32_t i;
621
622 fprintf(fd, "%s: \n", tif->tif_name);
623 for (i = 0; i < tif->tif_nfields; i++)
624 {
625 const TIFFField *fip = tif->tif_fields[i];
626 fprintf(fd, "field[%2d] %5lu, %2d, %2d, %d, %2d, %5s, %5s, %s\n",
627 (int)i, (unsigned long)fip->field_tag, fip->field_readcount,
628 fip->field_writecount, fip->field_type, fip->field_bit,
629 fip->field_oktochange ? "TRUE" : "FALSE",
630 fip->field_passcount ? "TRUE" : "FALSE", fip->field_name);
631 }
632}
633
634/*
635 * Return size of TIFFDataType within TIFF-file in bytes
636 */
638{
639 switch (type)
640 {
641 case 0: /* nothing */
642 case TIFF_BYTE:
643 case TIFF_ASCII:
644 case TIFF_SBYTE:
645 case TIFF_UNDEFINED:
646 return 1;
647 case TIFF_SHORT:
648 case TIFF_SSHORT:
649 return 2;
650 case TIFF_LONG:
651 case TIFF_SLONG:
652 case TIFF_FLOAT:
653 case TIFF_IFD:
654 return 4;
655 case TIFF_RATIONAL:
656 case TIFF_SRATIONAL:
657 case TIFF_DOUBLE:
658 case TIFF_LONG8:
659 case TIFF_SLONG8:
660 case TIFF_IFD8:
661 return 8;
662 default:
663 return 0; /* will return 0 for unknown types */
664 }
665}
666
667/*
668 * Return internal storage size of TIFFSetGetFieldType in bytes.
669 * TIFFSetField() and TIFFGetField() have to provide the parameter accordingly.
670 * Replaces internal functions _TIFFDataSize() and _TIFFSetGetFieldSize()
671 * with now extern available function TIFFFieldSetGetSize().
672 */
674{
675 /*
676 * TIFFSetField() and TIFFGetField() must provide the parameter accordingly
677 * to the definition of "set_get_field_type" of the tag definition in
678 * dir_info.c. This function returns the data size for that purpose.
679 *
680 * Furthermore, this data size is also used for the internal storage,
681 * even for TIFF_RATIONAL values for FIELD_CUSTOM, which are stored
682 * internally as 4-byte float, but some of them should be stored internally
683 * as 8-byte double, depending on the "set_get_field_type" _FLOAT_ or
684 * _DOUBLE_.
685 */
686 if (fip == NULL)
687 return 0;
688
689 switch (fip->set_get_field_type)
690 {
697 return 1;
706 return 1;
715 return 2;
716 case TIFF_SETGET_INT:
730 return 4;
734 case TIFF_SETGET_IFD8:
747 return 8;
748 default:
749 return 0;
750 }
751} /*-- TIFFFieldSetGetSize() --- */
752
753/*
754 * Return size of count parameter of TIFFSetField() and TIFFGetField()
755 * and also if it is required: 0=none, 2=uint16_t, 4=uint32_t
756 */
758{
759 if (fip == NULL)
760 return 0;
761
762 switch (fip->set_get_field_type)
763 {
776 return 2;
789 return 4;
790 default:
791 return 0;
792 }
793} /*-- TIFFFieldSetGetCountSize() --- */
794
796{
797 TIFFField key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0, 0, NULL, NULL};
798 TIFFField *pkey = &key;
799 const TIFFField **ret;
800 if (tif->tif_foundfield && tif->tif_foundfield->field_tag == tag &&
801 (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type))
802 return tif->tif_foundfield;
803
804 /* If we are invoked with no field information, then just return. */
805 if (!tif->tif_fields)
806 return NULL;
807
808 /* NB: use sorted search (e.g. binary search) */
809
810 key.field_tag = tag;
811 key.field_type = dt;
812
813 ret = (const TIFFField **)bsearch(&pkey, tif->tif_fields, tif->tif_nfields,
814 sizeof(TIFFField *), tagCompare);
815 return tif->tif_foundfield = (ret ? *ret : NULL);
816}
817
818static const TIFFField *_TIFFFindFieldByName(TIFF *tif, const char *field_name,
819 TIFFDataType dt)
820{
821 TIFFField key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0, 0, NULL, NULL};
822 TIFFField *pkey = &key;
823 const TIFFField **ret;
824 if (tif->tif_foundfield &&
825 streq(tif->tif_foundfield->field_name, field_name) &&
826 (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type))
827 return (tif->tif_foundfield);
828
829 /* If we are invoked with no field information, then just return. */
830 if (!tif->tif_fields)
831 return NULL;
832
833 /* NB: use linear search since list is sorted by key#, not name */
834
835 key.field_name = (char *)field_name;
836 key.field_type = dt;
837
838 ret =
839 (const TIFFField **)td_lfind(&pkey, tif->tif_fields, &tif->tif_nfields,
840 sizeof(TIFFField *), tagNameCompare);
841
842 return tif->tif_foundfield = (ret ? *ret : NULL);
843}
844
846{
847 const TIFFField *fip = TIFFFindField(tif, tag, TIFF_ANY);
848 if (!fip)
849 {
850 TIFFWarningExtR(tif, "TIFFFieldWithTag", "Warning, unknown tag 0x%x",
851 (unsigned int)tag);
852 }
853 return (fip);
854}
855
856const TIFFField *TIFFFieldWithName(TIFF *tif, const char *field_name)
857{
858 const TIFFField *fip = _TIFFFindFieldByName(tif, field_name, TIFF_ANY);
859 if (!fip)
860 {
861 TIFFWarningExtR(tif, "TIFFFieldWithName", "Warning, unknown tag %s",
862 field_name);
863 }
864 return (fip);
865}
866
867uint32_t TIFFFieldTag(const TIFFField *fip) { return fip->field_tag; }
868
869const char *TIFFFieldName(const TIFFField *fip) { return fip->field_name; }
870
872
873int TIFFFieldPassCount(const TIFFField *fip) { return fip->field_passcount; }
874
875int TIFFFieldReadCount(const TIFFField *fip) { return fip->field_readcount; }
876
877int TIFFFieldWriteCount(const TIFFField *fip) { return fip->field_writecount; }
878
879int TIFFFieldIsAnonymous(const TIFFField *fip) { return fip->field_anonymous; }
880
882 TIFFDataType dt)
883
884{
885 const TIFFField *fld;
886
887 fld = TIFFFindField(tif, tag, dt);
888 if (fld == NULL)
889 {
890 fld = _TIFFCreateAnonField(tif, tag, dt);
891 if (fld == NULL || !_TIFFMergeFields(tif, fld, 1))
892 return NULL;
893 }
894
895 return fld;
896}
897
899 TIFFDataType field_type)
900{
901 TIFFField *fld;
902 (void)tif;
903
904 fld = (TIFFField *)_TIFFmallocExt(tif, sizeof(TIFFField));
905 if (fld == NULL)
906 return NULL;
907 _TIFFmemset(fld, 0, sizeof(TIFFField));
908
909 fld->field_tag = tag;
912 fld->field_type = field_type;
913 fld->field_anonymous =
914 1; /* indicate that this is an anonymous / unknown tag */
915 switch (field_type)
916 {
917 case TIFF_BYTE:
918 case TIFF_UNDEFINED:
920 break;
921 case TIFF_ASCII:
923 break;
924 case TIFF_SHORT:
926 break;
927 case TIFF_LONG:
929 break;
930 case TIFF_RATIONAL:
931 case TIFF_SRATIONAL:
932 case TIFF_FLOAT:
934 break;
935 case TIFF_SBYTE:
937 break;
938 case TIFF_SSHORT:
940 break;
941 case TIFF_SLONG:
943 break;
944 case TIFF_DOUBLE:
946 break;
947 case TIFF_IFD:
948 case TIFF_IFD8:
950 break;
951 case TIFF_LONG8:
953 break;
954 case TIFF_SLONG8:
956 break;
957 default:
959 break;
960 }
961 fld->field_bit = FIELD_CUSTOM;
962 fld->field_oktochange = TRUE;
963 fld->field_passcount = TRUE;
964 fld->field_name = (char *)_TIFFmallocExt(tif, 32);
965 if (fld->field_name == NULL)
966 {
967 _TIFFfreeExt(tif, fld);
968 return NULL;
969 }
970 fld->field_subfields = NULL;
971
972 /*
973 * note that this name is a special sign to TIFFClose() and
974 * _TIFFSetupFields() to free the field
975 * Update:
976 * This special sign is replaced by fld->field_anonymous flag.
977 */
978 (void)snprintf(fld->field_name, 32, "Tag %d", (int)tag);
979
980 return fld;
981}
982
983/****************************************************************************
984 * O B S O L E T E D I N T E R F A C E S
985 *
986 * Don't use this stuff in your applications, it may be removed in the future
987 * libtiff versions.
988 ****************************************************************************/
989
991 unsigned char passcount)
992{
993 if (type == TIFF_ASCII && count == TIFF_VARIABLE && passcount == 0)
994 return TIFF_SETGET_ASCII;
995
996 else if (count == 1 && passcount == 0)
997 {
998 switch (type)
999 {
1000 case TIFF_BYTE:
1001 case TIFF_UNDEFINED:
1002 return TIFF_SETGET_UINT8;
1003 case TIFF_ASCII:
1004 return TIFF_SETGET_ASCII;
1005 case TIFF_SHORT:
1006 return TIFF_SETGET_UINT16;
1007 case TIFF_LONG:
1008 return TIFF_SETGET_UINT32;
1009 case TIFF_RATIONAL:
1010 case TIFF_SRATIONAL:
1011 case TIFF_FLOAT:
1012 return TIFF_SETGET_FLOAT;
1013 case TIFF_SBYTE:
1014 return TIFF_SETGET_SINT8;
1015 case TIFF_SSHORT:
1016 return TIFF_SETGET_SINT16;
1017 case TIFF_SLONG:
1018 return TIFF_SETGET_SINT32;
1019 case TIFF_DOUBLE:
1020 return TIFF_SETGET_DOUBLE;
1021 case TIFF_IFD:
1022 case TIFF_IFD8:
1023 return TIFF_SETGET_IFD8;
1024 case TIFF_LONG8:
1025 return TIFF_SETGET_UINT64;
1026 case TIFF_SLONG8:
1027 return TIFF_SETGET_SINT64;
1028 default:
1029 return TIFF_SETGET_UNDEFINED;
1030 }
1031 }
1032
1033 else if (count >= 1 && passcount == 0)
1034 {
1035 switch (type)
1036 {
1037 case TIFF_BYTE:
1038 case TIFF_UNDEFINED:
1039 return TIFF_SETGET_C0_UINT8;
1040 case TIFF_ASCII:
1041 return TIFF_SETGET_C0_ASCII;
1042 case TIFF_SHORT:
1043 return TIFF_SETGET_C0_UINT16;
1044 case TIFF_LONG:
1045 return TIFF_SETGET_C0_UINT32;
1046 case TIFF_RATIONAL:
1047 case TIFF_SRATIONAL:
1048 case TIFF_FLOAT:
1049 return TIFF_SETGET_C0_FLOAT;
1050 case TIFF_SBYTE:
1051 return TIFF_SETGET_C0_SINT8;
1052 case TIFF_SSHORT:
1053 return TIFF_SETGET_C0_SINT16;
1054 case TIFF_SLONG:
1055 return TIFF_SETGET_C0_SINT32;
1056 case TIFF_DOUBLE:
1057 return TIFF_SETGET_C0_DOUBLE;
1058 case TIFF_IFD:
1059 case TIFF_IFD8:
1060 return TIFF_SETGET_C0_IFD8;
1061 case TIFF_LONG8:
1062 return TIFF_SETGET_C0_UINT64;
1063 case TIFF_SLONG8:
1064 return TIFF_SETGET_C0_SINT64;
1065 default:
1066 return TIFF_SETGET_UNDEFINED;
1067 }
1068 }
1069
1070 else if (count == TIFF_VARIABLE && passcount == 1)
1071 {
1072 switch (type)
1073 {
1074 case TIFF_BYTE:
1075 case TIFF_UNDEFINED:
1076 return TIFF_SETGET_C16_UINT8;
1077 case TIFF_ASCII:
1078 return TIFF_SETGET_C16_ASCII;
1079 case TIFF_SHORT:
1081 case TIFF_LONG:
1083 case TIFF_RATIONAL:
1084 case TIFF_SRATIONAL:
1085 case TIFF_FLOAT:
1086 return TIFF_SETGET_C16_FLOAT;
1087 case TIFF_SBYTE:
1088 return TIFF_SETGET_C16_SINT8;
1089 case TIFF_SSHORT:
1091 case TIFF_SLONG:
1093 case TIFF_DOUBLE:
1095 case TIFF_IFD:
1096 case TIFF_IFD8:
1097 return TIFF_SETGET_C16_IFD8;
1098 case TIFF_LONG8:
1100 case TIFF_SLONG8:
1102 default:
1103 return TIFF_SETGET_UNDEFINED;
1104 }
1105 }
1106
1107 else if (count == TIFF_VARIABLE2 && passcount == 1)
1108 {
1109 switch (type)
1110 {
1111 case TIFF_BYTE:
1112 case TIFF_UNDEFINED:
1113 return TIFF_SETGET_C32_UINT8;
1114 case TIFF_ASCII:
1115 return TIFF_SETGET_C32_ASCII;
1116 case TIFF_SHORT:
1118 case TIFF_LONG:
1120 case TIFF_RATIONAL:
1121 case TIFF_SRATIONAL:
1122 case TIFF_FLOAT:
1123 return TIFF_SETGET_C32_FLOAT;
1124 case TIFF_SBYTE:
1125 return TIFF_SETGET_C32_SINT8;
1126 case TIFF_SSHORT:
1128 case TIFF_SLONG:
1130 case TIFF_DOUBLE:
1132 case TIFF_IFD:
1133 case TIFF_IFD8:
1134 return TIFF_SETGET_C32_IFD8;
1135 case TIFF_LONG8:
1137 case TIFF_SLONG8:
1139 default:
1140 return TIFF_SETGET_UNDEFINED;
1141 }
1142 }
1143
1144 return TIFF_SETGET_UNDEFINED;
1145}
1146
1148{
1149 static const char module[] = "TIFFMergeFieldInfo";
1150 static const char reason[] = "for fields array";
1151 TIFFField *tp;
1152 size_t nfields;
1153 uint32_t i;
1154
1155 if (tif->tif_nfieldscompat > 0)
1156 {
1158 tif, tif->tif_fieldscompat, tif->tif_nfieldscompat + 1,
1159 sizeof(TIFFFieldArray), reason);
1160 }
1161 else
1162 {
1164 tif, 1, sizeof(TIFFFieldArray), reason);
1165 }
1166 if (!tif->tif_fieldscompat)
1167 {
1168 TIFFErrorExtR(tif, module, "Failed to allocate fields array");
1169 return -1;
1170 }
1171 nfields = tif->tif_nfieldscompat++;
1172
1173 tif->tif_fieldscompat[nfields].type = tfiatOther;
1174 tif->tif_fieldscompat[nfields].allocated_size = n;
1175 tif->tif_fieldscompat[nfields].count = n;
1176 tif->tif_fieldscompat[nfields].fields =
1177 (TIFFField *)_TIFFCheckMalloc(tif, n, sizeof(TIFFField), reason);
1178 if (!tif->tif_fieldscompat[nfields].fields)
1179 {
1180 TIFFErrorExtR(tif, module, "Failed to allocate fields array");
1181 return -1;
1182 }
1183
1184 tp = tif->tif_fieldscompat[nfields].fields;
1185 for (i = 0; i < n; i++)
1186 {
1187 tp->field_tag = info[i].field_tag;
1188 if (info[i].field_readcount < TIFF_VARIABLE2 ||
1189 info[i].field_writecount < TIFF_VARIABLE2)
1190 {
1191 /* The fields (field_readcount) and (field_writecount) may use the
1192 * values TIFF_VARIABLE (-1), TIFF_SPP (-2), TIFF_VARIABLE2 (-3). */
1194 tif, module,
1195 "The value of field_readcount %d and field_writecount %d "
1196 "must be greater than or equal to -3.",
1197 info[i].field_readcount, info[i].field_writecount);
1198 return -1;
1199 }
1200 if ((info[i].field_readcount == 0 || info[i].field_writecount == 0) &&
1201 info[i].field_bit != FIELD_IGNORE)
1202 {
1203 /* The fields (field_readcount) and (field_writecount) may only
1204 be zero for pseudo_tags or ignored tags. */
1206 tif, module,
1207 "The value of field_readcount %d and field_writecount %d "
1208 "may only be zero for field_bit = 0 (i.e. ignored tags).",
1209 info[i].field_readcount, info[i].field_writecount);
1210 return -1;
1211 }
1212 tp->field_readcount = info[i].field_readcount;
1213 tp->field_writecount = info[i].field_writecount;
1214 tp->field_type = info[i].field_type;
1215 tp->field_anonymous = 0;
1216 tp->set_get_field_type =
1217 _TIFFSetGetType(info[i].field_type, info[i].field_writecount,
1218 info[i].field_passcount);
1219 tp->field_bit = info[i].field_bit;
1220 tp->field_oktochange = info[i].field_oktochange;
1221 tp->field_passcount = info[i].field_passcount;
1222 /* Define an empty static string to be passed as field_name where a NULL
1223 * pointer is passed in. Otherwise, this will lead to buffer overflow
1224 * furtheron. */
1225 if (info[i].field_name == NULL)
1226 {
1227 static const char *string_static_empty = "";
1228 tp->field_name = (char *)string_static_empty;
1229 }
1230 else
1231 {
1232 tp->field_name = info[i].field_name;
1233 }
1234 tp->field_subfields = NULL;
1235 tp++;
1236 }
1237
1238 if (!_TIFFMergeFields(tif, tif->tif_fieldscompat[nfields].fields, n))
1239 {
1240 TIFFErrorExtR(tif, module, "Setting up field info failed");
1241 return -1;
1242 }
1243
1244 return 0;
1245}
1246
1248{
1249 /* Filter out non-codec specific tags */
1250 switch (tag)
1251 {
1252 /* Shared tags */
1253 case TIFFTAG_PREDICTOR:
1254 /* JPEG tags */
1255 case TIFFTAG_JPEGTABLES:
1256 /* OJPEG tags */
1262 case TIFFTAG_JPEGPROC:
1264 /* CCITT* */
1270 /* LERC */
1272 break;
1273 default:
1274 return 1;
1275 }
1277 {
1278 return 0;
1279 }
1280 /* Check if codec specific tags are allowed for the current
1281 * compression scheme (codec) */
1282 switch (tif->tif_dir.td_compression)
1283 {
1284 case COMPRESSION_LZW:
1285 if (tag == TIFFTAG_PREDICTOR)
1286 return 1;
1287 break;
1289 /* No codec-specific tags */
1290 break;
1292 /* No codec-specific tags */
1293 break;
1294 case COMPRESSION_NEXT:
1295 /* No codec-specific tags */
1296 break;
1297 case COMPRESSION_JPEG:
1298 if (tag == TIFFTAG_JPEGTABLES)
1299 return 1;
1300 break;
1301 case COMPRESSION_OJPEG:
1302 switch (tag)
1303 {
1309 case TIFFTAG_JPEGPROC:
1311 return 1;
1312 }
1313 break;
1318 switch (tag)
1319 {
1323 return 1;
1326 return 1;
1327 break;
1330 return 1;
1331 break;
1332 }
1333 break;
1334 case COMPRESSION_JBIG:
1335 /* No codec-specific tags */
1336 break;
1339 if (tag == TIFFTAG_PREDICTOR)
1340 return 1;
1341 break;
1343 if (tag == TIFFTAG_PREDICTOR)
1344 return 1;
1345 break;
1346 case COMPRESSION_SGILOG:
1348 /* No codec-specific tags */
1349 break;
1350 case COMPRESSION_LZMA:
1351 if (tag == TIFFTAG_PREDICTOR)
1352 return 1;
1353 break;
1354 case COMPRESSION_ZSTD:
1355 if (tag == TIFFTAG_PREDICTOR)
1356 return 1;
1357 break;
1358 case COMPRESSION_LERC:
1360 return 1;
1361 break;
1362 }
1363 return 0;
1364}
return
Definition: dirsup.c:529
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
UINT32 uint32_t
Definition: types.h:75
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1904
int WINAPIV fprintf(FILE *file, const char *format,...)
Definition: file.c:5549
_ACRTIMP void __cdecl qsort(void *, size_t, size_t, int(__cdecl *)(const void *, const void *))
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3319
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
return ret
Definition: mutex.c:146
_In_ uint64_t _In_ uint64_t _In_ uint64_t _In_opt_ traverse_ptr * tp
Definition: btrfs.c:2996
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint GLuint end
Definition: gl.h:1545
GLdouble n
Definition: glext.h:7729
GLsizeiptr size
Definition: glext.h:5919
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
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 streq(a, b)
Definition: mkg3states.c:43
static const WCHAR tb[]
Definition: suminfo.c:285
static int fd
Definition: io.c:51
uint16_t td_compression
Definition: tif_dir.h:88
TIFFFieldArrayType type
Definition: tif_dir.h:322
uint32_t count
Definition: tif_dir.h:326
uint32_t allocated_size
Definition: tif_dir.h:324
TIFFField * fields
Definition: tif_dir.h:327
unsigned char field_oktochange
Definition: tif_dir.h:341
TIFFDataType field_type
Definition: tif_dir.h:335
unsigned char field_passcount
Definition: tif_dir.h:342
char * field_name
Definition: tif_dir.h:343
unsigned short field_bit
Definition: tif_dir.h:340
uint32_t field_anonymous
Definition: tif_dir.h:336
uint32_t field_tag
Definition: tif_dir.h:332
short field_readcount
Definition: tif_dir.h:333
TIFFSetGetFieldType set_get_field_type
Definition: tif_dir.h:338
TIFFFieldArray * field_subfields
Definition: tif_dir.h:344
short field_writecount
Definition: tif_dir.h:334
Definition: copy.c:22
Definition: ecma_167.h:138
Definition: tiffiop.h:113
const TIFFField * tif_foundfield
Definition: tiffiop.h:243
size_t tif_nfields
Definition: tiffiop.h:242
TIFFField ** tif_fields
Definition: tiffiop.h:241
char * tif_name
Definition: tiffiop.h:114
TIFFDirectory tif_dir
Definition: tiffiop.h:157
size_t tif_nfieldscompat
Definition: tiffiop.h:249
TIFFFieldArray * tif_fieldscompat
Definition: tiffiop.h:248
void * _TIFFCheckRealloc(TIFF *tif, void *buffer, tmsize_t nmemb, tmsize_t elem_size, const char *what)
Definition: tif_aux.c:97
void * _TIFFCheckMalloc(TIFF *tif, tmsize_t nmemb, tmsize_t elem_size, const char *what)
Definition: tif_aux.c:122
int TIFFIsCODECConfigured(uint16_t scheme)
Definition: tif_codec.c:146
#define bsearch
#define FIELD_RESOLUTION
Definition: tif_dir.h:183
#define FIELD_SUBFILETYPE
Definition: tif_dir.h:187
#define FIELD_STRIPOFFSETS
Definition: tif_dir.h:202
#define FIELD_TRANSFERFUNCTION
Definition: tif_dir.h:214
#define FIELD_HALFTONEHINTS
Definition: tif_dir.h:210
#define FIELD_ORIENTATION
Definition: tif_dir.h:193
#define FIELD_MINSAMPLEVALUE
Definition: tif_dir.h:196
#define FIELD_FILLORDER
Definition: tif_dir.h:192
#define FIELD_SMAXSAMPLEVALUE
Definition: tif_dir.h:207
#define FIELD_IMAGEDIMENSIONS
Definition: tif_dir.h:181
#define FIELD_YCBCRSUBSAMPLING
Definition: tif_dir.h:211
#define FIELD_COLORMAP
Definition: tif_dir.h:203
#define FIELD_SUBIFD
Definition: tif_dir.h:216
#define FIELD_EXTRASAMPLES
Definition: tif_dir.h:204
#define FIELD_IGNORE
Definition: tif_dir.h:178
#define FIELD_IMAGEDEPTH
Definition: tif_dir.h:208
#define FIELD_SMINSAMPLEVALUE
Definition: tif_dir.h:206
#define FIELD_MAXSAMPLEVALUE
Definition: tif_dir.h:197
#define FIELD_NUMBEROFINKS
Definition: tif_dir.h:217
#define FIELD_TILEDEPTH
Definition: tif_dir.h:209
#define FIELD_TILEDIMENSIONS
Definition: tif_dir.h:182
#define FIELD_POSITION
Definition: tif_dir.h:184
#define FIELD_ROWSPERSTRIP
Definition: tif_dir.h:195
@ tfiatGps
Definition: tif_dir.h:316
@ tfiatOther
Definition: tif_dir.h:317
@ tfiatImage
Definition: tif_dir.h:314
@ tfiatExif
Definition: tif_dir.h:315
#define FIELD_COMPRESSION
Definition: tif_dir.h:189
#define FIELD_STRIPBYTECOUNTS
Definition: tif_dir.h:201
#define FIELD_YCBCRPOSITIONING
Definition: tif_dir.h:212
#define FIELD_PSEUDO
Definition: tif_dir.h:230
#define FIELD_REFBLACKWHITE
Definition: tif_dir.h:213
#define FIELD_SAMPLEFORMAT
Definition: tif_dir.h:205
#define FIELD_PAGENUMBER
Definition: tif_dir.h:200
#define FIELD_BITSPERSAMPLE
Definition: tif_dir.h:188
TIFFSetGetFieldType
Definition: tif_dir.h:244
@ TIFF_SETGET_C16_UINT8
Definition: tif_dir.h:273
@ TIFF_SETGET_C0_SINT64
Definition: tif_dir.h:268
@ TIFF_SETGET_DOUBLE
Definition: tif_dir.h:256
@ TIFF_SETGET_SINT64
Definition: tif_dir.h:254
@ TIFF_SETGET_C32_SINT32
Definition: tif_dir.h:290
@ TIFF_SETGET_C16_FLOAT
Definition: tif_dir.h:281
@ TIFF_SETGET_UNDEFINED
Definition: tif_dir.h:245
@ TIFF_SETGET_SINT8
Definition: tif_dir.h:248
@ TIFF_SETGET_C32_ASCII
Definition: tif_dir.h:284
@ TIFF_SETGET_INT
Definition: tif_dir.h:258
@ TIFF_SETGET_C32_UINT8
Definition: tif_dir.h:285
@ TIFF_SETGET_IFD8
Definition: tif_dir.h:257
@ TIFF_SETGET_C32_UINT16
Definition: tif_dir.h:287
@ TIFF_SETGET_C16_DOUBLE
Definition: tif_dir.h:282
@ TIFF_SETGET_UINT64
Definition: tif_dir.h:253
@ TIFF_SETGET_C0_UINT32
Definition: tif_dir.h:265
@ TIFF_SETGET_C16_UINT32
Definition: tif_dir.h:277
@ TIFF_SETGET_UINT16_PAIR
Definition: tif_dir.h:259
@ TIFF_SETGET_C32_SINT16
Definition: tif_dir.h:288
@ TIFF_SETGET_C16_UINT16
Definition: tif_dir.h:275
@ TIFF_SETGET_C16_SINT64
Definition: tif_dir.h:280
@ TIFF_SETGET_C0_FLOAT
Definition: tif_dir.h:269
@ TIFF_SETGET_C0_SINT32
Definition: tif_dir.h:266
@ TIFF_SETGET_C16_UINT64
Definition: tif_dir.h:279
@ TIFF_SETGET_C32_UINT32
Definition: tif_dir.h:289
@ TIFF_SETGET_C0_ASCII
Definition: tif_dir.h:260
@ TIFF_SETGET_C32_SINT8
Definition: tif_dir.h:286
@ TIFF_SETGET_UINT16
Definition: tif_dir.h:249
@ TIFF_SETGET_C16_SINT16
Definition: tif_dir.h:276
@ TIFF_SETGET_C0_UINT8
Definition: tif_dir.h:261
@ TIFF_SETGET_ASCII
Definition: tif_dir.h:246
@ TIFF_SETGET_C0_SINT8
Definition: tif_dir.h:262
@ TIFF_SETGET_C16_SINT8
Definition: tif_dir.h:274
@ TIFF_SETGET_OTHER
Definition: tif_dir.h:296
@ TIFF_SETGET_C0_UINT64
Definition: tif_dir.h:267
@ TIFF_SETGET_FLOAT
Definition: tif_dir.h:255
@ TIFF_SETGET_C16_SINT32
Definition: tif_dir.h:278
@ TIFF_SETGET_SINT16
Definition: tif_dir.h:250
@ TIFF_SETGET_C0_SINT16
Definition: tif_dir.h:264
@ TIFF_SETGET_C32_IFD8
Definition: tif_dir.h:295
@ TIFF_SETGET_UINT32
Definition: tif_dir.h:251
@ TIFF_SETGET_C32_SINT64
Definition: tif_dir.h:292
@ TIFF_SETGET_C16_ASCII
Definition: tif_dir.h:272
@ TIFF_SETGET_C32_DOUBLE
Definition: tif_dir.h:294
@ TIFF_SETGET_UINT8
Definition: tif_dir.h:247
@ TIFF_SETGET_C0_UINT16
Definition: tif_dir.h:263
@ TIFF_SETGET_C32_UINT64
Definition: tif_dir.h:291
@ TIFF_SETGET_C0_IFD8
Definition: tif_dir.h:271
@ TIFF_SETGET_C16_IFD8
Definition: tif_dir.h:283
@ TIFF_SETGET_SINT32
Definition: tif_dir.h:252
@ TIFF_SETGET_C32_FLOAT
Definition: tif_dir.h:293
@ TIFF_SETGET_C0_DOUBLE
Definition: tif_dir.h:270
#define FIELD_INKNAMES
Definition: tif_dir.h:215
#define FIELD_RESOLUTIONUNIT
Definition: tif_dir.h:199
#define FIELD_PLANARCONFIG
Definition: tif_dir.h:198
#define FIELD_SAMPLESPERPIXEL
Definition: tif_dir.h:194
#define FIELD_PHOTOMETRIC
Definition: tif_dir.h:190
#define FIELD_THRESHHOLDING
Definition: tif_dir.h:191
int TIFFFieldIsAnonymous(const TIFFField *fip)
Definition: tif_dirinfo.c:879
const TIFFField * TIFFFieldWithTag(TIFF *tif, uint32_t tag)
Definition: tif_dirinfo.c:845
int _TIFFMergeFields(TIFF *tif, const TIFFField info[], uint32_t n)
Definition: tif_dirinfo.c:573
int TIFFDataWidth(TIFFDataType type)
Definition: tif_dirinfo.c:637
static int tagCompare(const void *a, const void *b)
Definition: tif_dirinfo.c:546
int TIFFMergeFieldInfo(TIFF *tif, const TIFFFieldInfo info[], uint32_t n)
Definition: tif_dirinfo.c:1147
const TIFFField * TIFFFieldWithName(TIFF *tif, const char *field_name)
Definition: tif_dirinfo.c:856
int TIFFFieldReadCount(const TIFFField *fip)
Definition: tif_dirinfo.c:875
TIFFField * _TIFFCreateAnonField(TIFF *tif, uint32_t tag, TIFFDataType field_type)
Definition: tif_dirinfo.c:898
TIFFDataType TIFFFieldDataType(const TIFFField *fip)
Definition: tif_dirinfo.c:871
int TIFFFieldWriteCount(const TIFFField *fip)
Definition: tif_dirinfo.c:877
static const TIFFField tiffFields[]
Definition: tif_dirinfo.c:67
static const TIFFFieldArray exifFieldArray
Definition: tif_dirinfo.c:49
uint32_t TIFFFieldTag(const TIFFField *fip)
Definition: tif_dirinfo.c:867
const TIFFField * _TIFFFindOrRegisterField(TIFF *tif, uint32_t tag, TIFFDataType dt)
Definition: tif_dirinfo.c:881
static int tagNameCompare(const void *a, const void *b)
Definition: tif_dirinfo.c:559
const TIFFField * TIFFFindField(TIFF *tif, uint32_t tag, TIFFDataType dt)
Definition: tif_dirinfo.c:795
const TIFFFieldArray * _TIFFGetFields(void)
Definition: tif_dirinfo.c:507
int TIFFFieldPassCount(const TIFFField *fip)
Definition: tif_dirinfo.c:873
static const TIFFField gpsFields[]
Definition: tif_dirinfo.c:442
static const TIFFFieldArray tiffFieldArray
Definition: tif_dirinfo.c:48
void _TIFFPrintFieldInfo(TIFF *tif, FILE *fd)
Definition: tif_dirinfo.c:618
const char * TIFFFieldName(const TIFFField *fip)
Definition: tif_dirinfo.c:869
static const TIFFFieldArray gpsFieldArray
Definition: tif_dirinfo.c:50
void _TIFFSetupFields(TIFF *tif, const TIFFFieldArray *fieldarray)
Definition: tif_dirinfo.c:513
const TIFFFieldArray * _TIFFGetGpsFields(void)
Definition: tif_dirinfo.c:511
static const TIFFField * _TIFFFindFieldByName(TIFF *tif, const char *field_name, TIFFDataType dt)
Definition: tif_dirinfo.c:818
static const TIFFField exifFields[]
Definition: tif_dirinfo.c:350
int _TIFFCheckFieldIsValidForCodec(TIFF *tif, ttag_t tag)
Definition: tif_dirinfo.c:1247
int TIFFFieldSetGetCountSize(const TIFFField *fip)
Definition: tif_dirinfo.c:757
int TIFFFieldSetGetSize(const TIFFField *fip)
Definition: tif_dirinfo.c:673
static TIFFSetGetFieldType _TIFFSetGetType(TIFFDataType type, short count, unsigned char passcount)
Definition: tif_dirinfo.c:990
const TIFFFieldArray * _TIFFGetExifFields(void)
Definition: tif_dirinfo.c:509
static void * td_lfind(const void *key, const void *base, size_t *nmemb, size_t size, int(*compar)(const void *, const void *))
Definition: tif_dirinfo.c:494
void TIFFErrorExtR(TIFF *tif, const char *module, const char *fmt,...)
Definition: tif_error.c:107
void _TIFFfreeExt(TIFF *tif, void *p)
Definition: tif_open.c:275
void * _TIFFmallocExt(TIFF *tif, tmsize_t s)
Definition: tif_open.c:173
void _TIFFmemset(void *p, int v, tmsize_t c)
Definition: tif_unix.c:353
void TIFFWarningExtR(TIFF *tif, const char *module, const char *fmt,...)
Definition: tif_warning.c:80
#define TIFFTAG_CALIBRATIONILLUMINANT2
Definition: tiff.h:544
#define TIFFTAG_BASELINENOISE
Definition: tiff.h:530
#define GPSTAG_SPEED
Definition: tiff.h:880
#define TIFFTAG_EP_DATETIMEORIGINAL
Definition: tiff.h:661
#define TIFFTAG_BITSPERSAMPLE
Definition: tiff.h:180
#define TIFFTAG_ILLUMINANTDATA1
Definition: tiff.h:623
#define EXIFTAG_FOCALLENGTH
Definition: tiff.h:796
#define TIFFTAG_RESOLUTIONUNIT
Definition: tiff.h:287
#define EXIFTAG_BRIGHTNESSVALUE
Definition: tiff.h:789
#define TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN
Definition: tiff.h:425
#define TIFFTAG_EP_OECF
Definition: tiff.h:660
#define EXIFTAG_EXPOSUREPROGRAM
Definition: tiff.h:775
#define EXIFTAG_ISOSPEEDLATITUDEYYY
Definition: tiff.h:838
#define TIFFTAG_VERSIONYEAR
Definition: tiff.h:367
#define TIFFTAG_BESTQUALITYSCALE
Definition: tiff.h:545
#define GPSTAG_ALTITUDE
Definition: tiff.h:873
#define TIFFTAG_DATETIME
Definition: tiff.h:300
#define TIFFTAG_REDUCTIONMATRIX3
Definition: tiff.h:620
#define TIFFTAG_DNGPRIVATEDATA
Definition: tiff.h:541
#define COMPRESSION_PIXARLOG
Definition: tiff.h:204
#define TIFFTAG_BASELINESHARPNESS
Definition: tiff.h:531
#define TIFFTAG_EP_SUBJECTLOCATION
Definition: tiff.h:673
#define TIFFTAG_PROFILECOPYRIGHT
Definition: tiff.h:569
#define TIFFTAG_RGBTABLES
Definition: tiff.h:616
#define TIFFTAG_EP_EXPOSUREPROGRAM
Definition: tiff.h:657
#define TIFFTAG_EP_IMAGENUMBER
Definition: tiff.h:644
#define TIFFTAG_EP_FOCALPLANEYRESOLUTION
Definition: tiff.h:642
#define TIFFTAG_PROFILEHUESATMAPENCODING
Definition: tiff.h:596
#define GPSTAG_DOP
Definition: tiff.h:878
#define COMPRESSION_ZSTD
Definition: tiff.h:216
#define TIFFTAG_WHITEPOINT
Definition: tiff.h:307
#define TIFFTAG_DOTRANGE
Definition: tiff.h:327
#define TIFFTAG_SUBIFD
Definition: tiff.h:321
#define TIFFTAG_IMAGELAYER
Definition: tiff.h:480
#define COMPRESSION_CCITTFAX3
Definition: tiff.h:184
#define COMPRESSION_CCITTRLE
Definition: tiff.h:183
#define EXIFTAG_PIXELYDIMENSION
Definition: tiff.h:806
#define TIFFTAG_EP_FOCALPLANEXRESOLUTION
Definition: tiff.h:641
#define GPSTAG_LONGITUDEREF
Definition: tiff.h:870
#define EXIFTAG_ISOSPEED
Definition: tiff.h:837
#define TIFFTAG_ORIGINALRAWFILEDATA
Definition: tiff.h:548
#define TIFFTAG_JPEGDCTABLES
Definition: tiff.h:385
#define TIFFTAG_ASSHOTNEUTRAL
Definition: tiff.h:527
#define TIFFTAG_REDUCTIONMATRIX2
Definition: tiff.h:525
#define TIFFTAG_LINEARRESPONSELIMIT
Definition: tiff.h:535
#define TIFFTAG_FAXDCS
Definition: tiff.h:488
#define TIFFTAG_PREVIEWAPPLICATIONNAME
Definition: tiff.h:572
#define TIFFTAG_GROUP3OPTIONS
Definition: tiff.h:279
#define EXIFTAG_OFFSETTIME
Definition: tiff.h:840
#define TIFFTAG_MASKEDAREAS
Definition: tiff.h:550
#define EXIFTAG_DIGITALZOOMRATIO
Definition: tiff.h:822
#define TIFFTAG_INDEXED
Definition: tiff.h:345
#define TIFFTAG_GROUP4OPTIONS
Definition: tiff.h:284
#define EXIFTAG_OFFSETTIMEORIGINAL
Definition: tiff.h:841
#define EXIFTAG_LENSSPECIFICATION
Definition: tiff.h:855
#define TIFFTAG_PROFILELOOKTABLEDATA
Definition: tiff.h:583
#define TIFFTAG_PIXAR_TEXTUREFORMAT
Definition: tiff.h:422
#define EXIFTAG_SENSINGMETHOD
Definition: tiff.h:815
#define TIFFTAG_DOCUMENTNAME
Definition: tiff.h:243
#define TIFFTAG_FILLORDER
Definition: tiff.h:240
#define TIFFTAG_ACTIVEAREA
Definition: tiff.h:549
#define TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA
Definition: tiff.h:426
#define EXIFTAG_USERCOMMENT
Definition: tiff.h:799
#define TIFFTAG_XMLPACKET
Definition: tiff.h:394
#define TIFFTAG_WHITELEVEL
Definition: tiff.h:516
#define COMPRESSION_OJPEG
Definition: tiff.h:189
#define TIFFTAG_SAMPLESPERPIXEL
Definition: tiff.h:257
#define EXIFTAG_CFAPATTERN
Definition: tiff.h:818
#define TIFFTAG_MAKERNOTESAFETY
Definition: tiff.h:542
#define TIFFTAG_CONSECUTIVEBADFAXLINES
Definition: tiff.h:320
#define TIFFTAG_PIXAR_IMAGEFULLLENGTH
Definition: tiff.h:418
#define EXIFTAG_METERINGMODE
Definition: tiff.h:793
#define TIFFTAG_DEPTHFORMAT
Definition: tiff.h:604
#define TIFFTAG_CURRENTICCPROFILE
Definition: tiff.h:553
#define EXIFTAG_EXPOSUREMODE
Definition: tiff.h:820
#define TIFFTAG_MODEL
Definition: tiff.h:246
#define GPSTAG_DESTDISTANCEREF
Definition: tiff.h:892
#define GPSTAG_DESTBEARING
Definition: tiff.h:891
#define TIFFTAG_EP_STANDARDID
Definition: tiff.h:648
#define EXIFTAG_CAMERAOWNERNAME
Definition: tiff.h:851
#define EXIFTAG_SOURCEIMAGENUMBEROFCOMPOSITEIMAGE
Definition: tiff.h:861
#define TIFFTAG_CAMERACALIBRATION2
Definition: tiff.h:523
#define TIFFTAG_DEPTHUNITS
Definition: tiff.h:607
#define EXIFTAG_SUBJECTLOCATION
Definition: tiff.h:813
#define GPSTAG_TIMESTAMP
Definition: tiff.h:874
#define TIFFTAG_EXTRACAMERAPROFILES
Definition: tiff.h:681
#define EXIFTAG_OFFSETTIMEDIGITIZED
Definition: tiff.h:842
#define TIFFTAG_INKSET
Definition: tiff.h:322
#define EXIFTAG_TEMPERATURE
Definition: tiff.h:843
#define TIFFTAG_DATATYPE
Definition: tiff.h:406
#define GPSTAG_SPEEDREF
Definition: tiff.h:879
#define EXIFTAG_COMPOSITEIMAGE
Definition: tiff.h:860
#define TIFFTAG_EP_EXPOSURETIME
Definition: tiff.h:655
#define COMPRESSION_DEFLATE
Definition: tiff.h:205
#define TIFFTAG_PROFILEHUESATMAPDATA3
Definition: tiff.h:621
#define TIFFTAG_JPEGQTABLES
Definition: tiff.h:384
#define GPSTAG_SATELLITES
Definition: tiff.h:875
#define COMPRESSION_SGILOG
Definition: tiff.h:210
#define TIFFTAG_PROFILEHUESATMAPDATA1
Definition: tiff.h:565
#define EXIFTAG_MAKERNOTE
Definition: tiff.h:798
#define EXIFTAG_ISOSPEEDRATINGS
Definition: tiff.h:779
#define TIFFTAG_PROFILETONECURVE
Definition: tiff.h:567
#define TIFFTAG_FREEOFFSETS
Definition: tiff.h:270
#define TIFFTAG_YPOSITION
Definition: tiff.h:269
#define EXIFTAG_CUSTOMRENDERED
Definition: tiff.h:819
#define EXIFTAG_MAXAPERTUREVALUE
Definition: tiff.h:791
#define TIFFTAG_PRIMARYCHROMATICITIES
Definition: tiff.h:308
#define EXIFTAG_COMPRESSEDBITSPERPIXEL
Definition: tiff.h:786
#define EXIFTAG_DEVICESETTINGDESCRIPTION
Definition: tiff.h:829
#define TIFFTAG_LERC_PARAMETERS
Definition: tiff.h:502
#define TIFFTAG_NOISEREDUCTIONAPPLIED
Definition: tiff.h:562
#define GPSTAG_TRACK
Definition: tiff.h:882
#define GPSTAG_STATUS
Definition: tiff.h:876
#define COMPRESSION_CCITTRLEW
Definition: tiff.h:194
#define TIFFTAG_EXIFIFD
Definition: tiff.h:477
#define GPSTAG_DESTLATITUDEREF
Definition: tiff.h:886
#define TIFFTAG_BASELINEEXPOSURE
Definition: tiff.h:529
#define TIFFTAG_GRAYRESPONSECURVE
Definition: tiff.h:278
#define GPSTAG_DESTLONGITUDEREF
Definition: tiff.h:888
#define TIFFTAG_DEPTHNEAR
Definition: tiff.h:605
#define TIFFTAG_COLORMAP
Definition: tiff.h:309
#define TIFFTAG_MODENUMBER
Definition: tiff.h:368
#define TIFFTAG_FAXRECVTIME
Definition: tiff.h:487
#define TIFFTAG_CALIBRATIONILLUMINANT1
Definition: tiff.h:543
#define TIFFTAG_PROFILEGAINTABLEMAP
Definition: tiff.h:612
#define EXIFTAG_SHARPNESS
Definition: tiff.h:828
#define TIFFTAG_JPEGIFBYTECOUNT
Definition: tiff.h:380
#define EXIFTAG_EXPOSUREBIASVALUE
Definition: tiff.h:790
TIFFDataType
Definition: tiff.h:146
@ TIFF_SSHORT
Definition: tiff.h:155
@ TIFF_SLONG
Definition: tiff.h:156
@ TIFF_BYTE
Definition: tiff.h:148
@ TIFF_SBYTE
Definition: tiff.h:153
@ TIFF_IFD
Definition: tiff.h:160
@ TIFF_SHORT
Definition: tiff.h:150
@ TIFF_UNDEFINED
Definition: tiff.h:154
@ TIFF_LONG
Definition: tiff.h:151
@ TIFF_SLONG8
Definition: tiff.h:162
@ TIFF_LONG8
Definition: tiff.h:161
@ TIFF_ASCII
Definition: tiff.h:149
@ TIFF_NOTYPE
Definition: tiff.h:147
@ TIFF_FLOAT
Definition: tiff.h:158
@ TIFF_DOUBLE
Definition: tiff.h:159
@ TIFF_IFD8
Definition: tiff.h:163
@ TIFF_SRATIONAL
Definition: tiff.h:157
@ TIFF_RATIONAL
Definition: tiff.h:152
#define TIFFTAG_EP_SELFTIMERMODE
Definition: tiff.h:637
#define GPSTAG_MEASUREMODE
Definition: tiff.h:877
#define TIFFTAG_LENSINFO
Definition: tiff.h:537
#define TIFFTAG_BLACKLEVELREPEATDIM
Definition: tiff.h:512
#define TIFFTAG_ANALOGBALANCE
Definition: tiff.h:526
#define TIFFTAG_EP_FOCALLENGTH
Definition: tiff.h:672
#define EXIFTAG_SATURATION
Definition: tiff.h:827
#define TIFFTAG_SUBTILEBLOCKSIZE
Definition: tiff.h:580
#define TIFFTAG_IMAGEDEPTH
Definition: tiff.h:407
#define TIFFTAG_PREVIEWDATETIME
Definition: tiff.h:577
#define GPSTAG_DESTBEARINGREF
Definition: tiff.h:890
#define TIFFTAG_PHOTOMETRIC
Definition: tiff.h:220
#define TIFFTAG_JPEGACTABLES
Definition: tiff.h:386
#define EXIFTAG_FOCALPLANEXRESOLUTION
Definition: tiff.h:810
#define TIFFTAG_MASKSUBAREA
Definition: tiff.h:615
#define TIFFTAG_FORWARDMATRIX3
Definition: tiff.h:622
#define TIFFTAG_PREVIEWAPPLICATIONVERSION
Definition: tiff.h:573
#define TIFFTAG_HOSTCOMPUTER
Definition: tiff.h:302
#define TIFFTAG_RAWDATAUNIQUEID
Definition: tiff.h:546
#define EXIFTAG_SOURCEEXPOSURETIMESOFCOMPOSITEIMAGE
Definition: tiff.h:862
#define EXIFTAG_SUBJECTDISTANCE
Definition: tiff.h:792
#define TIFFTAG_TILELENGTH
Definition: tiff.h:312
#define TIFFTAG_COLORRESPONSEUNIT
Definition: tiff.h:292
#define TIFFTAG_PROFILELOOKTABLEENCODING
Definition: tiff.h:595
#define TIFFTAG_ORIGINALRAWFILEDIGEST
Definition: tiff.h:579
#define TIFFTAG_ASSHOTICCPROFILE
Definition: tiff.h:551
#define TIFFTAG_OSUBFILETYPE
Definition: tiff.h:174
#define TIFFTAG_EP_EXPOSUREBIASVALUE
Definition: tiff.h:666
#define TIFFTAG_JPEGRESTARTINTERVAL
Definition: tiff.h:381
#define TIFFTAG_OPCODELIST1
Definition: tiff.h:586
#define EXIFTAG_SUBSECTIMEDIGITIZED
Definition: tiff.h:802
#define TIFFTAG_ENHANCEPARAMS
Definition: tiff.h:609
#define EXIFTAG_OECF
Definition: tiff.h:781
#define TIFFTAG_MAXSAMPLEVALUE
Definition: tiff.h:261
#define EXIFTAG_FOCALPLANERESOLUTIONUNIT
Definition: tiff.h:812
#define TIFFTAG_TILEDEPTH
Definition: tiff.h:408
#define TIFFTAG_EP_COMPRESSEDBITSPERPIXEL
Definition: tiff.h:662
#define EXIFTAG_LIGHTSOURCE
Definition: tiff.h:794
#define EXIFTAG_SPATIALFREQUENCYRESPONSE
Definition: tiff.h:809
#define EXIFTAG_CAMERAELEVATIONANGLE
Definition: tiff.h:850
#define TIFFTAG_GLOBALPARAMETERSIFD
Definition: tiff.h:349
#define TIFFTAG_CAMERACALIBRATIONSIGNATURE
Definition: tiff.h:558
#define EXIFTAG_SPECTRALSENSITIVITY
Definition: tiff.h:776
#define TIFFTAG_CFALAYOUT
Definition: tiff.h:510
#define TIFFTAG_PIXAR_WRAPMODES
Definition: tiff.h:423
#define TIFFTAG_EP_LIGHTSOURCE
Definition: tiff.h:670
#define COMPRESSION_LZMA
Definition: tiff.h:215
#define GPSTAG_TRACKREF
Definition: tiff.h:881
#define TIFFTAG_CURRENTPREPROFILEMATRIX
Definition: tiff.h:554
#define GPSTAG_PROCESSINGMETHOD
Definition: tiff.h:894
#define TIFFTAG_EXTRASAMPLES
Definition: tiff.h:329
#define TIFFTAG_T82OPTIONS
Definition: tiff.h:371
#define TIFFTAG_IMAGEWIDTH
Definition: tiff.h:178
#define EXIFTAG_STANDARDOUTPUTSENSITIVITY
Definition: tiff.h:835
#define TIFFTAG_EP_EXPOSUREINDEX
Definition: tiff.h:647
#define TIFFTAG_YCBCRCOEFFICIENTS
Definition: tiff.h:387
#define TIFFTAG_REDUCTIONMATRIX1
Definition: tiff.h:524
#define EXIFTAG_WATERDEPTH
Definition: tiff.h:846
#define TIFFTAG_MAKE
Definition: tiff.h:245
#define TIFFTAG_OPCODELIST3
Definition: tiff.h:588
#define TIFFTAG_NEWRAWIMAGEDIGEST
Definition: tiff.h:600
#define TIFFTAG_ANTIALIASSTRENGTH
Definition: tiff.h:539
#define EXIFTAG_LENSMODEL
Definition: tiff.h:857
#define TIFFTAG_SEMANTICINSTANCEID
Definition: tiff.h:614
#define EXIFTAG_FOCALPLANEYRESOLUTION
Definition: tiff.h:811
#define TIFFTAG_EP_BRIGHTNESSVALUE
Definition: tiff.h:665
#define COMPRESSION_JBIG
Definition: tiff.h:209
#define TIFFTAG_ASSHOTPROFILENAME
Definition: tiff.h:561
#define TIFFTAG_XRESOLUTION
Definition: tiff.h:262
#define TIFFTAG_ORIGINALBESTQUALITYFINALSIZE
Definition: tiff.h:598
#define TIFFTAG_CELLLENGTH
Definition: tiff.h:239
#define EXIFTAG_FLASHPIXVERSION
Definition: tiff.h:803
#define COMPRESSION_LERC
Definition: tiff.h:213
#define TIFFTAG_ORIENTATION
Definition: tiff.h:248
#define COMPRESSION_ADOBE_DEFLATE
Definition: tiff.h:206
#define TIFFTAG_DEFAULTUSERCROP
Definition: tiff.h:592
#define COMPRESSION_PACKBITS
Definition: tiff.h:195
#define EXIFTAG_EXPOSURETIME
Definition: tiff.h:773
#define TIFFTAG_HALFTONEHINTS
Definition: tiff.h:310
#define TIFFTAG_MATTEING
Definition: tiff.h:405
#define TIFFTAG_GPSIFD
Definition: tiff.h:483
#define TIFFTAG_IMAGEDESCRIPTION
Definition: tiff.h:244
#define TIFFTAG_CFAPLANECOLOR
Definition: tiff.h:509
#define GPSTAG_DESTLONGITUDE
Definition: tiff.h:889
#define TIFFTAG_EP_ISOSPEEDRATINGS
Definition: tiff.h:659
#define TIFFTAG_DNGVERSION
Definition: tiff.h:505
#define TIFFTAG_MINSAMPLEVALUE
Definition: tiff.h:260
#define TIFFTAG_EP_SECURITYCLASSIFICATION
Definition: tiff.h:645
#define EXIFTAG_PRESSURE
Definition: tiff.h:845
#define EXIFTAG_IMAGEUNIQUEID
Definition: tiff.h:831
#define TIFFTAG_NUMBEROFINKS
Definition: tiff.h:326
#define EXIFTAG_FOCALLENGTHIN35MMFILM
Definition: tiff.h:823
#define GPSTAG_VERSIONID
Definition: tiff.h:867
#define TIFFTAG_BASELINEEXPOSUREOFFSET
Definition: tiff.h:594
#define TIFFTAG_COLORMATRIX3
Definition: tiff.h:618
#define TIFFTAG_PROFILEHUESATMAPDIMS
Definition: tiff.h:564
#define EXIFTAG_SUBJECTDISTANCERANGE
Definition: tiff.h:830
#define TIFFTAG_EP_INTERLACE
Definition: tiff.h:631
#define TIFFTAG_PIXAR_FOVCOT
Definition: tiff.h:424
#define EXIFTAG_BODYSERIALNUMBER
Definition: tiff.h:852
#define TIFFTAG_DEFAULTCROPSIZE
Definition: tiff.h:519
#define TIFFTAG_CALIBRATIONILLUMINANT3
Definition: tiff.h:617
#define TIFFTAG_EP_FLASHENERGY
Definition: tiff.h:638
#define EXIFTAG_FNUMBER
Definition: tiff.h:774
#define EXIFTAG_LENSMAKE
Definition: tiff.h:856
#define TIFFTAG_PREVIEWSETTINGSNAME
Definition: tiff.h:574
#define GPSTAG_DIFFERENTIAL
Definition: tiff.h:897
#define EXIFTAG_RELATEDSOUNDFILE
Definition: tiff.h:807
#define TIFFTAG_ORIGINALDEFAULTFINALSIZE
Definition: tiff.h:597
#define EXIFTAG_SENSITIVITYTYPE
Definition: tiff.h:834
#define TIFFTAG_DEFAULTBLACKRENDER
Definition: tiff.h:593
#define TIFFTAG_TRANSFERFUNCTION
Definition: tiff.h:298
#define TIFFTAG_YCLIPPATHUNITS
Definition: tiff.h:344
#define TIFFTAG_IMAGEBASECOLOR
Definition: tiff.h:370
#define TIFFTAG_SEMANTICNAME
Definition: tiff.h:613
#define TIFFTAG_ICCPROFILE
Definition: tiff.h:479
#define EXIFTAG_SUBSECTIMEORIGINAL
Definition: tiff.h:801
#define TIFFTAG_NOISEPROFILE
Definition: tiff.h:589
#define TIFFTAG_EP_SENSINGMETHOD
Definition: tiff.h:649
#define TIFFTAG_EP_NOISE
Definition: tiff.h:640
#define TIFFTAG_EP_METERINGMODE
Definition: tiff.h:669
#define EXIFTAG_SCENETYPE
Definition: tiff.h:817
#define TIFFTAG_EP_FLASH
Definition: tiff.h:671
#define TIFFTAG_RAWIMAGEDIGEST
Definition: tiff.h:578
#define TIFFTAG_YRESOLUTION
Definition: tiff.h:263
#define COMPRESSION_LZW
Definition: tiff.h:188
#define TIFFTAG_EP_APERTUREVALUE
Definition: tiff.h:664
#define GPSTAG_MAPDATUM
Definition: tiff.h:885
#define EXIFTAG_SUBJECTAREA
Definition: tiff.h:797
#define TIFFTAG_EP_SPATIALFREQUENCYRESPONSE
Definition: tiff.h:639
#define TIFFTAG_SOFTWARE
Definition: tiff.h:299
#define TIFFTAG_FREEBYTECOUNTS
Definition: tiff.h:271
#define TIFFTAG_DEFAULTCROPORIGIN
Definition: tiff.h:518
#define TIFFTAG_TILEBYTECOUNTS
Definition: tiff.h:314
#define EXIFTAG_SUBSECTIME
Definition: tiff.h:800
#define TIFFTAG_JPEGIFOFFSET
Definition: tiff.h:379
#define TIFFTAG_IMAGESOURCEDATA
Definition: tiff.h:493
#define TIFFTAG_INTEROPERABILITYIFD
Definition: tiff.h:494
#define TIFFTAG_STRIPBYTECOUNTS
Definition: tiff.h:259
#define TIFFTAG_FORWARDMATRIX1
Definition: tiff.h:570
#define TIFFTAG_EP_FOCALPLANERESOLUTIONUNIT
Definition: tiff.h:643
#define EXIFTAG_SCENECAPTURETYPE
Definition: tiff.h:824
#define TIFFTAG_SMINSAMPLEVALUE
Definition: tiff.h:340
#define TIFFTAG_CLEANFAXDATA
Definition: tiff.h:316
#define TIFFTAG_EP_IMAGEHISTORY
Definition: tiff.h:646
#define TIFFTAG_YCBCRSUBSAMPLING
Definition: tiff.h:388
#define TIFFTAG_EP_SHUTTERSPEEDVALUE
Definition: tiff.h:663
#define TIFFTAG_TILEOFFSETS
Definition: tiff.h:313
#define TIFFTAG_ROWSPERSTRIP
Definition: tiff.h:258
#define GPSTAG_GPSHPOSITIONINGERROR
Definition: tiff.h:898
#define GPSTAG_AREAINFORMATION
Definition: tiff.h:895
#define TIFFTAG_PREVIEWSETTINGSDIGEST
Definition: tiff.h:575
#define TIFFTAG_COLORMATRIX2
Definition: tiff.h:521
#define TIFFTAG_SMAXSAMPLEVALUE
Definition: tiff.h:341
#define COMPRESSION_SGILOG24
Definition: tiff.h:211
#define TIFFTAG_DNGBACKWARDVERSION
Definition: tiff.h:506
#define EXIFTAG_FLASH
Definition: tiff.h:795
#define GPSTAG_IMGDIRECTIONREF
Definition: tiff.h:883
#define GPSTAG_DESTLATITUDE
Definition: tiff.h:887
#define EXIFTAG_ISOSPEEDLATITUDEZZZ
Definition: tiff.h:839
#define TIFFTAG_COLORIMETRICREFERENCE
Definition: tiff.h:557
#define TIFFTAG_SAMPLEFORMAT
Definition: tiff.h:333
#define GPSTAG_DATESTAMP
Definition: tiff.h:896
#define TIFFTAG_PERSAMPLE
Definition: tiff.h:752
#define EXIFTAG_FLASHENERGY
Definition: tiff.h:808
#define TIFFTAG_CAMERASERIALNUMBER
Definition: tiff.h:536
#define TIFFTAG_ROWINTERLEAVEFACTOR
Definition: tiff.h:581
#define TIFFTAG_LOCALIZEDCAMERAMODEL
Definition: tiff.h:508
#define TIFFTAG_ILLUMINANTDATA3
Definition: tiff.h:625
#define TIFFTAG_FORWARDMATRIX2
Definition: tiff.h:571
#define TIFFTAG_COPYRIGHT
Definition: tiff.h:433
#define TIFFTAG_FAXRECVPARAMS
Definition: tiff.h:485
#define TIFFTAG_TARGETPRINTER
Definition: tiff.h:328
#define TIFFTAG_BLACKLEVELDELTAH
Definition: tiff.h:514
#define TIFFTAG_ARTIST
Definition: tiff.h:301
#define TIFFTAG_ASSHOTPREPROFILEMATRIX
Definition: tiff.h:552
#define TIFFTAG_REFERENCEBLACKWHITE
Definition: tiff.h:392
#define TIFFTAG_SHADOWSCALE
Definition: tiff.h:540
#define EXIFTAG_ACCELERATION
Definition: tiff.h:847
#define TIFFTAG_TILEWIDTH
Definition: tiff.h:311
#define TIFFTAG_BLACKLEVEL
Definition: tiff.h:513
#define TIFFTAG_PROFILEHUESATMAPDATA2
Definition: tiff.h:566
#define TIFFTAG_PROFILETYPE
Definition: tiff.h:350
#define TIFFTAG_CAMERACALIBRATION1
Definition: tiff.h:522
#define TIFFTAG_IMAGELENGTH
Definition: tiff.h:179
#define TIFFTAG_PAGENUMBER
Definition: tiff.h:291
#define GPSTAG_IMGDIRECTION
Definition: tiff.h:884
#define TIFFTAG_FAXSUBADDRESS
Definition: tiff.h:486
#define TIFFTAG_EP_SUBJECTDISTANCE
Definition: tiff.h:668
#define TIFFTAG_BADFAXLINES
Definition: tiff.h:315
#define EXIFTAG_GAMMA
Definition: tiff.h:859
#define TIFFTAG_PROFILEEMBEDPOLICY
Definition: tiff.h:568
#define TIFFTAG_PROFILENAME
Definition: tiff.h:563
#define TIFFTAG_COMPRESSION
Definition: tiff.h:181
#define EXIFTAG_WHITEBALANCE
Definition: tiff.h:821
#define TIFFTAG_EP_CFAPATTERN
Definition: tiff.h:629
#define TIFFTAG_GRAYRESPONSEUNIT
Definition: tiff.h:272
#define EXIFTAG_RECOMMENDEDEXPOSUREINDEX
Definition: tiff.h:836
#define TIFFTAG_JPEGPROC
Definition: tiff.h:376
#define TIFFTAG_ILLUMINANTDATA2
Definition: tiff.h:624
#define TIFFTAG_DEFAULTSCALE
Definition: tiff.h:517
#define TIFFTAG_ORIGINALRAWFILENAME
Definition: tiff.h:547
#define EXIFTAG_LENSSERIALNUMBER
Definition: tiff.h:858
#define TIFFTAG_OPCODELIST2
Definition: tiff.h:587
#define TIFFTAG_CAMERACALIBRATION3
Definition: tiff.h:619
#define GPSTAG_ALTITUDEREF
Definition: tiff.h:872
#define TIFFTAG_CHROMABLURRADIUS
Definition: tiff.h:538
#define TIFFTAG_PREVIEWCOLORSPACE
Definition: tiff.h:576
#define TIFFTAG_EP_SPECTRALSENSITIVITY
Definition: tiff.h:658
#define EXIFTAG_DATETIMEORIGINAL
Definition: tiff.h:783
#define TIFFTAG_CELLWIDTH
Definition: tiff.h:238
#define TIFFTAG_EP_FNUMBER
Definition: tiff.h:656
#define EXIFTAG_PIXELXDIMENSION
Definition: tiff.h:805
#define TIFFTAG_UNIQUECAMERAMODEL
Definition: tiff.h:507
#define EXIFTAG_EXPOSUREINDEX
Definition: tiff.h:814
#define EXIFTAG_SHUTTERSPEEDVALUE
Definition: tiff.h:787
#define TIFFTAG_PLANARCONFIG
Definition: tiff.h:264
#define TIFFTAG_STRIPOFFSETS
Definition: tiff.h:247
#define EXIFTAG_CONTRAST
Definition: tiff.h:826
#define COMPRESSION_CCITTFAX4
Definition: tiff.h:186
#define TIFFTAG_RAWTOPREVIEWGAIN
Definition: tiff.h:601
#define EXIFTAG_DATETIMEDIGITIZED
Definition: tiff.h:784
#define EXIFTAG_EXIFVERSION
Definition: tiff.h:782
#define EXIFTAG_FILESOURCE
Definition: tiff.h:816
#define TIFFTAG_STONITS
Definition: tiff.h:490
#define TIFFTAG_ORIGINALDEFAULTCROPSIZE
Definition: tiff.h:599
#define TIFFTAG_CLIPPATH
Definition: tiff.h:342
#define COMPRESSION_NEXT
Definition: tiff.h:193
#define TIFFTAG_CODINGMETHODS
Definition: tiff.h:360
#define TIFFTAG_FAXPROFILE
Definition: tiff.h:353
#define EXIFTAG_HUMIDITY
Definition: tiff.h:844
#define TIFFTAG_SUBFILETYPE
Definition: tiff.h:170
#define EXIFTAG_APERTUREVALUE
Definition: tiff.h:788
#define TIFFTAG_DECODE
Definition: tiff.h:369
#define TIFFTAG_EP_BATTERYLEVEL
Definition: tiff.h:630
#define TIFFTAG_XPOSITION
Definition: tiff.h:268
#define TIFFTAG_COLORMATRIX1
Definition: tiff.h:520
#define TIFFTAG_EP_TIMEZONEOFFSET
Definition: tiff.h:636
#define EXIFTAG_COLORSPACE
Definition: tiff.h:804
#define TIFFTAG_DEPTHFAR
Definition: tiff.h:606
#define TIFFTAG_PHOTOSHOP
Definition: tiff.h:475
#define TIFFTAG_EP_CFAREPEATPATTERNDIM
Definition: tiff.h:628
#define TIFFTAG_ASSHOTWHITEXY
Definition: tiff.h:528
#define TIFFTAG_PROFILECALIBRATIONSIGNATURE
Definition: tiff.h:559
#define TIFFTAG_LINEARIZATIONTABLE
Definition: tiff.h:511
#define GPSTAG_LATITUDE
Definition: tiff.h:869
#define TIFFTAG_XCLIPPATHUNITS
Definition: tiff.h:343
#define GPSTAG_LONGITUDE
Definition: tiff.h:871
#define TIFFTAG_PREDICTOR
Definition: tiff.h:303
#define TIFFTAG_STRIPROWCOUNTS
Definition: tiff.h:393
#define TIFFTAG_PAGENAME
Definition: tiff.h:267
#define TIFFTAG_YCBCRPOSITIONING
Definition: tiff.h:389
#define TIFFTAG_INKNAMES
Definition: tiff.h:325
#define TIFFTAG_EP_MAXAPERTUREVALUE
Definition: tiff.h:667
#define TIFFTAG_THRESHHOLDING
Definition: tiff.h:234
#define GPSTAG_DESTDISTANCE
Definition: tiff.h:893
#define EXIFTAG_GAINCONTROL
Definition: tiff.h:825
#define GPSTAG_LATITUDEREF
Definition: tiff.h:868
#define EXIFTAG_COMPONENTSCONFIGURATION
Definition: tiff.h:785
#define TIFFTAG_JPEGTABLES
Definition: tiff.h:346
#define TIFFTAG_DEPTHMEASURETYPE
Definition: tiff.h:608
#define TIFFTAG_RICHTIFFIPTC
Definition: tiff.h:448
#define TIFFTAG_PROFILELOOKTABLEDIMS
Definition: tiff.h:582
#define TIFFTAG_BAYERGREENSPLIT
Definition: tiff.h:534
#define COMPRESSION_JPEG
Definition: tiff.h:190
#define TIFFTAG_BLACKLEVELDELTAV
Definition: tiff.h:515
#define TIFFTAG_PIXAR_IMAGEFULLWIDTH
Definition: tiff.h:417
#define COMPRESSION_THUNDERSCAN
Definition: tiff.h:196
#define FIELD_CUSTOM
Definition: tiffio.h:346
#define TIFF_VARIABLE
Definition: tiffio.h:342
uint32_t ttag_t
Definition: tiffio.h:75
#define TIFF_ANY
Definition: tiffio.h:341
#define TIFF_VARIABLE2
Definition: tiffio.h:344
#define TIFFArrayCount(a)
Definition: tiffiop.h:333
#define snprintf
Definition: wintirpc.h:48