1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* $Id: tif_dirinfo.c,v 1.121 2014-05-07 01:58:46 bfriesen Exp $ */ 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Copyright (c) 1988-1997 Sam Leffler 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Copyright (c) 1991-1997 Silicon Graphics, Inc. 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Permission to use, copy, modify, distribute, and sell this software and 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * its documentation for any purpose is hereby granted without fee, provided 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * that (i) the above copyright notices and this permission notice appear in 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * all copies of the software and related documentation, and (ii) the names of 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Sam Leffler and Silicon Graphics may not be used in any advertising or 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * publicity relating to the software without the specific, prior written 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * permission of Sam Leffler and Silicon Graphics. 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * OF THIS SOFTWARE. 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * TIFF Library. 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Core Directory Tag Support. 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "tiffiop.h" 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include <stdlib.h> 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * NOTE: THIS ARRAY IS ASSUMED TO BE SORTED BY TAG. 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * NOTE: The second field (field_readcount) and third field (field_writecount) 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * sometimes use the values TIFF_VARIABLE (-1), TIFF_VARIABLE2 (-3) 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * and TIFF_SPP (-2). The macros should be used but would throw off 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * the formatting of the code, so please interprete the -1, -2 and -3 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * values accordingly. 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic TIFFFieldArray tiffFieldArray; 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic TIFFFieldArray exifFieldArray; 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic TIFFField 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmanntiffFields[] = { 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_SUBFILETYPE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_SUBFILETYPE, 1, 0, "SubfileType", NULL }, 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_OSUBFILETYPE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_SUBFILETYPE, 1, 0, "OldSubfileType", NULL }, 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_IMAGEWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_IMAGEDIMENSIONS, 0, 0, "ImageWidth", NULL }, 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_IMAGELENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_IMAGEDIMENSIONS, 1, 0, "ImageLength", NULL }, 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BITSPERSAMPLE, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_BITSPERSAMPLE, 0, 0, "BitsPerSample", NULL }, 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_COMPRESSION, -1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_COMPRESSION, 0, 0, "Compression", NULL }, 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PHOTOMETRIC, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_PHOTOMETRIC, 0, 0, "PhotometricInterpretation", NULL }, 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_THRESHHOLDING, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_THRESHHOLDING, 1, 0, "Threshholding", NULL }, 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CELLWIDTH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "CellWidth", NULL }, 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CELLLENGTH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "CellLength", NULL }, 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_FILLORDER, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_FILLORDER, 0, 0, "FillOrder", NULL }, 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DOCUMENTNAME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DocumentName", NULL }, 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_IMAGEDESCRIPTION, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageDescription", NULL }, 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_MAKE, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Make", NULL }, 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_MODEL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Model", NULL }, 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_STRIPOFFSETS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_STRIPOFFSETS, 0, 0, "StripOffsets", NULL }, 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ORIENTATION, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_ORIENTATION, 0, 0, "Orientation", NULL }, 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_SAMPLESPERPIXEL, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_SAMPLESPERPIXEL, 0, 0, "SamplesPerPixel", NULL }, 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ROWSPERSTRIP, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_ROWSPERSTRIP, 0, 0, "RowsPerStrip", NULL }, 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_STRIPBYTECOUNTS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_STRIPBYTECOUNTS, 0, 0, "StripByteCounts", NULL }, 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_MINSAMPLEVALUE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_MINSAMPLEVALUE, 1, 0, "MinSampleValue", NULL }, 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_MAXSAMPLEVALUE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_MAXSAMPLEVALUE, 1, 0, "MaxSampleValue", NULL }, 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_XRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_RESOLUTION, 1, 0, "XResolution", NULL }, 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_YRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_RESOLUTION, 1, 0, "YResolution", NULL }, 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PLANARCONFIG, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_PLANARCONFIG, 0, 0, "PlanarConfiguration", NULL }, 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PAGENAME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "PageName", NULL }, 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_XPOSITION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_POSITION, 1, 0, "XPosition", NULL }, 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_YPOSITION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_POSITION, 1, 0, "YPosition", NULL }, 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_FREEOFFSETS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 0, 0, "FreeOffsets", NULL }, 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_FREEBYTECOUNTS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 0, 0, "FreeByteCounts", NULL }, 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_GRAYRESPONSEUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "GrayResponseUnit", NULL }, 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_GRAYRESPONSECURVE, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "GrayResponseCurve", NULL }, 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_RESOLUTIONUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_RESOLUTIONUNIT, 1, 0, "ResolutionUnit", NULL }, 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PAGENUMBER, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_UINT16_PAIR, TIFF_SETGET_UNDEFINED, FIELD_PAGENUMBER, 1, 0, "PageNumber", NULL }, 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_COLORRESPONSEUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "ColorResponseUnit", NULL }, 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_TRANSFERFUNCTION, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_OTHER, TIFF_SETGET_UNDEFINED, FIELD_TRANSFERFUNCTION, 1, 0, "TransferFunction", NULL }, 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_SOFTWARE, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Software", NULL }, 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DATETIME, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DateTime", NULL }, 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ARTIST, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Artist", NULL }, 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_HOSTCOMPUTER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "HostComputer", NULL }, 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_WHITEPOINT, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "WhitePoint", NULL }, 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PRIMARYCHROMATICITIES, 6, 6, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "PrimaryChromaticities", NULL }, 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_COLORMAP, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_OTHER, TIFF_SETGET_UNDEFINED, FIELD_COLORMAP, 1, 0, "ColorMap", NULL }, 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_HALFTONEHINTS, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_UINT16_PAIR, TIFF_SETGET_UNDEFINED, FIELD_HALFTONEHINTS, 1, 0, "HalftoneHints", NULL }, 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_TILEWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_TILEDIMENSIONS, 0, 0, "TileWidth", NULL }, 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_TILELENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_TILEDIMENSIONS, 0, 0, "TileLength", NULL }, 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_TILEOFFSETS, -1, 1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_STRIPOFFSETS, 0, 0, "TileOffsets", NULL }, 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_TILEBYTECOUNTS, -1, 1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_STRIPBYTECOUNTS, 0, 0, "TileByteCounts", NULL }, 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_SUBIFD, -1, -1, TIFF_IFD8, 0, TIFF_SETGET_C16_IFD8, TIFF_SETGET_UNDEFINED, FIELD_SUBIFD, 1, 1, "SubIFD", &tiffFieldArray }, 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_INKSET, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "InkSet", NULL }, 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_INKNAMES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_C16_ASCII, TIFF_SETGET_UNDEFINED, FIELD_INKNAMES, 1, 1, "InkNames", NULL }, 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_NUMBEROFINKS, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "NumberOfInks", NULL }, 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DOTRANGE, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_UINT16_PAIR, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DotRange", NULL }, 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_TARGETPRINTER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TargetPrinter", NULL }, 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_EXTRASAMPLES, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_EXTRASAMPLES, 0, 1, "ExtraSamples", NULL }, 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_SAMPLEFORMAT, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_SAMPLEFORMAT, 0, 0, "SampleFormat", NULL }, 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_SMINSAMPLEVALUE, -2, -1, TIFF_ANY, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_SMINSAMPLEVALUE, 1, 0, "SMinSampleValue", NULL }, 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_SMAXSAMPLEVALUE, -2, -1, TIFF_ANY, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_SMAXSAMPLEVALUE, 1, 0, "SMaxSampleValue", NULL }, 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CLIPPATH, -1, -3, TIFF_BYTE, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ClipPath", NULL }, 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_XCLIPPATHUNITS, 1, 1, TIFF_SLONG, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "XClipPathUnits", NULL }, 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_XCLIPPATHUNITS, 1, 1, TIFF_SBYTE, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "XClipPathUnits", NULL }, 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_YCLIPPATHUNITS, 1, 1, TIFF_SLONG, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "YClipPathUnits", NULL }, 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_YCBCRCOEFFICIENTS, 3, 3, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "YCbCrCoefficients", NULL }, 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_YCBCRSUBSAMPLING, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_UINT16_PAIR, TIFF_SETGET_UNDEFINED, FIELD_YCBCRSUBSAMPLING, 0, 0, "YCbCrSubsampling", NULL }, 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_YCBCRPOSITIONING, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_YCBCRPOSITIONING, 0, 0, "YCbCrPositioning", NULL }, 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_REFERENCEBLACKWHITE, 6, 6, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_REFBLACKWHITE, 1, 0, "ReferenceBlackWhite", NULL }, 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_XMLPACKET, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "XMLPacket", NULL }, 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* begin SGI tags */ 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_MATTEING, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_EXTRASAMPLES, 0, 0, "Matteing", NULL }, 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DATATYPE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_SAMPLEFORMAT, 0, 0, "DataType", NULL }, 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_IMAGEDEPTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_IMAGEDEPTH, 0, 0, "ImageDepth", NULL }, 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_TILEDEPTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_TILEDEPTH, 0, 0, "TileDepth", NULL }, 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* end SGI tags */ 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* begin Pixar tags */ 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PIXAR_IMAGEFULLWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageFullWidth", NULL }, 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageFullLength", NULL }, 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PIXAR_TEXTUREFORMAT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TextureFormat", NULL }, 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PIXAR_WRAPMODES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TextureWrapModes", NULL }, 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PIXAR_FOVCOT, 1, 1, TIFF_FLOAT, 0, TIFF_SETGET_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FieldOfViewCotangent", NULL }, 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MatrixWorldToScreen", NULL }, 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MatrixWorldToCamera", NULL }, 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CFAREPEATPATTERNDIM, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CFARepeatPatternDim", NULL }, 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CFAPATTERN, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CFAPattern" , NULL}, 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_COPYRIGHT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Copyright", NULL }, 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* end Pixar tags */ 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_RICHTIFFIPTC, -3, -3, TIFF_LONG, 0, TIFF_SETGET_C32_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "RichTIFFIPTC", NULL }, 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PHOTOSHOP, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "Photoshop", NULL }, 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_EXIFIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "EXIFIFDOffset", &exifFieldArray }, 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ICCPROFILE, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ICC Profile", NULL }, 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_GPSIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "GPSIFDOffset", NULL }, 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_FAXRECVPARAMS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "FaxRecvParams", NULL }, 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_FAXSUBADDRESS, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_ASCII, FIELD_CUSTOM, TRUE, FALSE, "FaxSubAddress", NULL }, 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_FAXRECVTIME, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "FaxRecvTime", NULL }, 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_FAXDCS, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_ASCII, FIELD_CUSTOM, TRUE, FALSE, "FaxDcs", NULL }, 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_STONITS, 1, 1, TIFF_DOUBLE, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "StoNits", NULL }, 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_INTEROPERABILITYIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "InteroperabilityIFDOffset", NULL }, 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* begin DNG tags */ 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DNGVERSION, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DNGVersion", NULL }, 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DNGBACKWARDVERSION, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DNGBackwardVersion", NULL }, 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_UNIQUECAMERAMODEL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "UniqueCameraModel", NULL }, 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "LocalizedCameraModel", NULL }, 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CFAPLANECOLOR, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CFAPlaneColor", NULL }, 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CFALAYOUT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CFALayout", NULL }, 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_LINEARIZATIONTABLE, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "LinearizationTable", NULL }, 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BLACKLEVELREPEATDIM, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BlackLevelRepeatDim", NULL }, 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BLACKLEVEL, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "BlackLevel", NULL }, 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BLACKLEVELDELTAH, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "BlackLevelDeltaH", NULL }, 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BLACKLEVELDELTAV, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "BlackLevelDeltaV", NULL }, 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_WHITELEVEL, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "WhiteLevel", NULL }, 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DEFAULTSCALE, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DefaultScale", NULL }, 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BESTQUALITYSCALE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BestQualityScale", NULL }, 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DEFAULTCROPORIGIN, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DefaultCropOrigin", NULL }, 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DEFAULTCROPSIZE, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DefaultCropSize", NULL }, 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_COLORMATRIX1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ColorMatrix1", NULL }, 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_COLORMATRIX2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ColorMatrix2", NULL }, 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CAMERACALIBRATION1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CameraCalibration1", NULL }, 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CAMERACALIBRATION2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CameraCalibration2", NULL }, 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_REDUCTIONMATRIX1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ReductionMatrix1", NULL }, 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_REDUCTIONMATRIX2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ReductionMatrix2", NULL }, 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ANALOGBALANCE, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AnalogBalance", NULL }, 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ASSHOTNEUTRAL, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotNeutral", NULL }, 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ASSHOTWHITEXY, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "AsShotWhiteXY", NULL }, 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BASELINEEXPOSURE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BaselineExposure", NULL }, 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BASELINENOISE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BaselineNoise", NULL }, 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BASELINESHARPNESS, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BaselineSharpness", NULL }, 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_BAYERGREENSPLIT, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BayerGreenSplit", NULL }, 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_LINEARRESPONSELIMIT, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "LinearResponseLimit", NULL }, 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CAMERASERIALNUMBER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "CameraSerialNumber", NULL }, 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_LENSINFO, 4, 4, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "LensInfo", NULL }, 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CHROMABLURRADIUS, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ChromaBlurRadius", NULL }, 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ANTIALIASSTRENGTH, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "AntiAliasStrength", NULL }, 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_SHADOWSCALE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ShadowScale", NULL }, 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DNGPRIVATEDATA, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "DNGPrivateData", NULL }, 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_MAKERNOTESAFETY, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "MakerNoteSafety", NULL }, 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CALIBRATIONILLUMINANT1, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CalibrationIlluminant1", NULL }, 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CALIBRATIONILLUMINANT2, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CalibrationIlluminant2", NULL }, 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_RAWDATAUNIQUEID, 16, 16, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "RawDataUniqueID", NULL }, 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ORIGINALRAWFILENAME, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "OriginalRawFileName", NULL }, 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ORIGINALRAWFILEDATA, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "OriginalRawFileData", NULL }, 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ACTIVEAREA, 4, 4, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ActiveArea", NULL }, 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_MASKEDAREAS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "MaskedAreas", NULL }, 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ASSHOTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotICCProfile", NULL }, 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_ASSHOTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotPreProfileMatrix", NULL }, 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CURRENTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CurrentICCProfile", NULL }, 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CURRENTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CurrentPreProfileMatrix", NULL }, 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PERSAMPLE, 0, 0, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "PerSample", NULL}, 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* end DNG tags */ 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* begin TIFF/FX tags */ 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_INDEXED, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "Indexed", NULL }, 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_GLOBALPARAMETERSIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "GlobalParametersIFD", NULL }, 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_PROFILETYPE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ProfileType", NULL }, 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_FAXPROFILE, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "FaxProfile", NULL }, 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_CODINGMETHODS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CodingMethods", NULL }, 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_VERSIONYEAR, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "VersionYear", NULL }, 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_MODENUMBER, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ModeNumber", NULL }, 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_DECODE, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "Decode", NULL }, 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_IMAGEBASECOLOR, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ImageBaseColor", NULL }, 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_T82OPTIONS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "T82Options", NULL }, 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_STRIPROWCOUNTS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "StripRowCounts", NULL }, 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { TIFFTAG_IMAGELAYER, 2, 2, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ImageLayer", NULL }, 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* end TIFF/FX tags */ 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* begin pseudo tags */ 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic TIFFField 215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannexifFields[] = { 216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_EXPOSURETIME, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureTime", NULL }, 217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FNUMBER, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FNumber", NULL }, 218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_EXPOSUREPROGRAM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureProgram", NULL }, 219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SPECTRALSENSITIVITY, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SpectralSensitivity", NULL }, 220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_ISOSPEEDRATINGS, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "ISOSpeedRatings", NULL }, 221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_OECF, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "OptoelectricConversionFactor", NULL }, 222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_EXIFVERSION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExifVersion", NULL }, 223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_DATETIMEORIGINAL, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DateTimeOriginal", NULL }, 224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_DATETIMEDIGITIZED, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DateTimeDigitized", NULL }, 225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_COMPONENTSCONFIGURATION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ComponentsConfiguration", NULL }, 226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_COMPRESSEDBITSPERPIXEL, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "CompressedBitsPerPixel", NULL }, 227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SHUTTERSPEEDVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ShutterSpeedValue", NULL }, 228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_APERTUREVALUE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ApertureValue", NULL }, 229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_BRIGHTNESSVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "BrightnessValue", NULL }, 230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_EXPOSUREBIASVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureBiasValue", NULL }, 231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_MAXAPERTUREVALUE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MaxApertureValue", NULL }, 232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SUBJECTDISTANCE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubjectDistance", NULL }, 233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_METERINGMODE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MeteringMode", NULL }, 234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_LIGHTSOURCE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "LightSource", NULL }, 235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FLASH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Flash", NULL }, 236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FOCALLENGTH, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalLength", NULL }, 237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SUBJECTAREA, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "SubjectArea", NULL }, 238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_MAKERNOTE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "MakerNote", NULL }, 239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_USERCOMMENT, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "UserComment", NULL }, 240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SUBSECTIME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubSecTime", NULL }, 241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SUBSECTIMEORIGINAL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubSecTimeOriginal", NULL }, 242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SUBSECTIMEDIGITIZED, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubSecTimeDigitized", NULL }, 243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FLASHPIXVERSION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FlashpixVersion", NULL }, 244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_COLORSPACE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ColorSpace", NULL }, 245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_PIXELXDIMENSION, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "PixelXDimension", NULL }, 246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_PIXELYDIMENSION, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "PixelYDimension", NULL }, 247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_RELATEDSOUNDFILE, 13, 13, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "RelatedSoundFile", NULL }, 248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FLASHENERGY, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FlashEnergy", NULL }, 249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SPATIALFREQUENCYRESPONSE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "SpatialFrequencyResponse", NULL }, 250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FOCALPLANEXRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalPlaneXResolution", NULL }, 251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FOCALPLANEYRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalPlaneYResolution", NULL }, 252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FOCALPLANERESOLUTIONUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalPlaneResolutionUnit", NULL }, 253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SUBJECTLOCATION, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubjectLocation", NULL }, 254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_EXPOSUREINDEX, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureIndex", NULL }, 255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SENSINGMETHOD, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SensingMethod", NULL }, 256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FILESOURCE, 1, 1, TIFF_UNDEFINED, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FileSource", NULL }, 257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SCENETYPE, 1, 1, TIFF_UNDEFINED, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SceneType", NULL }, 258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_CFAPATTERN, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "CFAPattern", NULL }, 259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_CUSTOMRENDERED, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "CustomRendered", NULL }, 260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_EXPOSUREMODE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureMode", NULL }, 261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_WHITEBALANCE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "WhiteBalance", NULL }, 262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_DIGITALZOOMRATIO, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DigitalZoomRatio", NULL }, 263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_FOCALLENGTHIN35MMFILM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalLengthIn35mmFilm", NULL }, 264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SCENECAPTURETYPE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SceneCaptureType", NULL }, 265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_GAINCONTROL, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "GainControl", NULL }, 266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_CONTRAST, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Contrast", NULL }, 267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SATURATION, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Saturation", NULL }, 268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SHARPNESS, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Sharpness", NULL }, 269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_DEVICESETTINGDESCRIPTION, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "DeviceSettingDescription", NULL }, 270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_SUBJECTDISTANCERANGE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubjectDistanceRange", NULL }, 271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { EXIFTAG_IMAGEUNIQUEID, 33, 33, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageUniqueID", NULL } 272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic TIFFFieldArray 275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmanntiffFieldArray = { tfiatImage, 0, TIFFArrayCount(tiffFields), tiffFields }; 276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic TIFFFieldArray 277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannexifFieldArray = { tfiatExif, 0, TIFFArrayCount(exifFields), exifFields }; 278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * We have our own local lfind() equivelent to avoid subtle differences 281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * in types passed to lfind() on different systems. 282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic void * 285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmanntd_lfind(const void *key, const void *base, size_t *nmemb, size_t size, 286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int(*compar)(const void *, const void *)) 287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann char *element, *end; 289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann end = (char *)base + *nmemb * size; 291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (element = (char *)base; element < end; element += size) 292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!compar(key, element)) /* key found */ 293ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return element; 294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst TIFFFieldArray* 299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFGetFields(void) 300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return(&tiffFieldArray); 302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst TIFFFieldArray* 305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFGetExifFields(void) 306ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 307ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return(&exifFieldArray); 308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 309ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 310ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid 311ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFSetupFields(TIFF* tif, const TIFFFieldArray* fieldarray) 312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (tif->tif_fields && tif->tif_nfields > 0) { 314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint32 i; 315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (i = 0; i < tif->tif_nfields; i++) { 317ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFField *fld = tif->tif_fields[i]; 318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fld->field_bit == FIELD_CUSTOM && 319ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann strncmp("Tag ", fld->field_name, 4) == 0) { 320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFfree(fld->field_name); 321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFfree(fld); 322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 324ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 325ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFfree(tif->tif_fields); 326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fields = NULL; 327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_nfields = 0; 328ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!_TIFFMergeFields(tif, fieldarray->fields, fieldarray->count)) { 330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFErrorExt(tif->tif_clientdata, "_TIFFSetupFields", 331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann "Setting up field info failed"); 332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic int 336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmanntagCompare(const void* a, const void* b) 337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField* ta = *(const TIFFField**) a; 339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField* tb = *(const TIFFField**) b; 340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* NB: be careful of return values for 16-bit platforms */ 341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ta->field_tag != tb->field_tag) 342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (int)ta->field_tag - (int)tb->field_tag; 343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (ta->field_type == TIFF_ANY) ? 345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 0 : ((int)tb->field_type - (int)ta->field_type); 346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic int 349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmanntagNameCompare(const void* a, const void* b) 350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField* ta = *(const TIFFField**) a; 352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField* tb = *(const TIFFField**) b; 353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int ret = strcmp(ta->field_name, tb->field_name); 354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ret) 356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return ret; 357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (ta->field_type == TIFF_ANY) ? 359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 0 : ((int)tb->field_type - (int)ta->field_type); 360ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint 363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFMergeFields(TIFF* tif, const TIFFField info[], uint32 n) 364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static const char module[] = "_TIFFMergeFields"; 366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static const char reason[] = "for fields array"; 367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* TIFFField** tp; */ 368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint32 i; 369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_foundfield = NULL; 371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (tif->tif_fields && tif->tif_nfields > 0) { 373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fields = (TIFFField**) 374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFCheckRealloc(tif, tif->tif_fields, 375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (tif->tif_nfields + n), 376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann sizeof(TIFFField *), reason); 377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fields = (TIFFField **) 379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFCheckMalloc(tif, n, sizeof(TIFFField *), 380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann reason); 381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!tif->tif_fields) { 383ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFErrorExt(tif->tif_clientdata, module, 384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann "Failed to allocate fields array"); 385ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 0; 386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 387ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* tp = tif->tif_fields + tif->tif_nfields; */ 389ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (i = 0; i < n; i++) { 390ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField *fip = 391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFFindField(tif, info[i].field_tag, TIFF_ANY); 392ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 393ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* only add definitions that aren't already present */ 394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!fip) { 395ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fields[tif->tif_nfields] = (TIFFField *) (info+i); 396ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_nfields++; 397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 399ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 400ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* Sort the field info by tag number */ 401ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann qsort(tif->tif_fields, tif->tif_nfields, 402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann sizeof(TIFFField *), tagCompare); 403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return n; 405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid 408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFPrintFieldInfo(TIFF* tif, FILE* fd) 409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint32 i; 411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fprintf(fd, "%s: \n", tif->tif_name); 413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (i = 0; i < tif->tif_nfields; i++) { 414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField* fip = tif->tif_fields[i]; 415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fprintf(fd, "field[%2d] %5lu, %2d, %2d, %d, %2d, %5s, %5s, %s\n" 416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann , (int)i 417ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann , (unsigned long) fip->field_tag 418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann , fip->field_readcount, fip->field_writecount 419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann , fip->field_type 420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann , fip->field_bit 421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann , fip->field_oktochange ? "TRUE" : "FALSE" 422ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann , fip->field_passcount ? "TRUE" : "FALSE" 423ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann , fip->field_name 424ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ); 425ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 426ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 427ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 428ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 429ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Return size of TIFFDataType in bytes 430ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 431ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint 432ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFDataWidth(TIFFDataType type) 433ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 434ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch(type) 435ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 436ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 0: /* nothing */ 437ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_BYTE: 438ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_ASCII: 439ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SBYTE: 440ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_UNDEFINED: 441ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 1; 442ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SHORT: 443ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SSHORT: 444ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 2; 445ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG: 446ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG: 447ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_FLOAT: 448ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD: 449ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 4; 450ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_RATIONAL: 451ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SRATIONAL: 452ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_DOUBLE: 453ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG8: 454ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG8: 455ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD8: 456ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 8; 457ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 458ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 0; /* will return 0 for unknown types */ 459ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 460ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 461ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 462ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 463ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Return size of TIFFDataType in bytes. 464ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 465ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * XXX: We need a separate function to determine the space needed 466ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * to store the value. For TIFF_RATIONAL values TIFFDataWidth() returns 8, 467ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * but we use 4-byte float to represent rationals. 468ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 469ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint 470ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFDataSize(TIFFDataType type) 471ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 472ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (type) 473ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 474ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_BYTE: 475ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SBYTE: 476ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_ASCII: 477ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_UNDEFINED: 478ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 1; 479ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SHORT: 480ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SSHORT: 481ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 2; 482ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG: 483ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG: 484ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_FLOAT: 485ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD: 486ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_RATIONAL: 487ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SRATIONAL: 488ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 4; 489ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_DOUBLE: 490ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG8: 491ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG8: 492ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD8: 493ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 8; 494ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 495ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 0; 496ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 497ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 498ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 499ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst TIFFField* 500ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFindField(TIFF* tif, uint32 tag, TIFFDataType dt) 501ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 502ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFField key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0, 0, 0, NULL, NULL}; 503ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFField* pkey = &key; 504ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField **ret; 505ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (tif->tif_foundfield && tif->tif_foundfield->field_tag == tag && 506ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type)) 507ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return tif->tif_foundfield; 508ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 509ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* If we are invoked with no field information, then just return. */ 510ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!tif->tif_fields) 511ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 512ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 513ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* NB: use sorted search (e.g. binary search) */ 514ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 515ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann key.field_tag = tag; 516ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann key.field_type = dt; 517ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 518ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ret = (const TIFFField **) bsearch(&pkey, tif->tif_fields, 519ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_nfields, 520ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann sizeof(TIFFField *), tagCompare); 521ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return tif->tif_foundfield = (ret ? *ret : NULL); 522ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 523ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 524ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst TIFFField* 525ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFFindFieldByName(TIFF* tif, const char *field_name, TIFFDataType dt) 526ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 527ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFField key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0, 0, 0, NULL, NULL}; 528ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFField* pkey = &key; 529ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField **ret; 530ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (tif->tif_foundfield 531ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann && streq(tif->tif_foundfield->field_name, field_name) 532ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann && (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type)) 533ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (tif->tif_foundfield); 534ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 535ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* If we are invoked with no field information, then just return. */ 536ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!tif->tif_fields) 537ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 538ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 539ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* NB: use linear search since list is sorted by key#, not name */ 540ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 541ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann key.field_name = (char *)field_name; 542ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann key.field_type = dt; 543ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 544ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ret = (const TIFFField **) 545ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann td_lfind(&pkey, tif->tif_fields, &tif->tif_nfields, 546ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann sizeof(TIFFField *), tagNameCompare); 547ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 548ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return tif->tif_foundfield = (ret ? *ret : NULL); 549ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 550ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 551ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst TIFFField* 552ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFieldWithTag(TIFF* tif, uint32 tag) 553ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 554ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY); 555ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!fip) { 556ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithTag", 557ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann "Internal error, unknown tag 0x%x", 558ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (unsigned int) tag); 559ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 560ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (fip); 561ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 562ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 563ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst TIFFField* 564ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFieldWithName(TIFF* tif, const char *field_name) 565ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 566ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField* fip = 567ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFFindFieldByName(tif, field_name, TIFF_ANY); 568ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!fip) { 569ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithName", 570ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann "Internal error, unknown tag %s", field_name); 571ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 572ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (fip); 573ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 574ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 575ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannuint32 576ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFieldTag(const TIFFField* fip) 577ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 578ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fip->field_tag; 579ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 580ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 581ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst char * 582ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFieldName(const TIFFField* fip) 583ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 584ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fip->field_name; 585ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 586ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 587ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFDataType 588ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFieldDataType(const TIFFField* fip) 589ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 590ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fip->field_type; 591ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 592ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 593ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint 594ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFieldPassCount(const TIFFField* fip) 595ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 596ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fip->field_passcount; 597ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 598ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 599ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint 600ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFieldReadCount(const TIFFField* fip) 601ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 602ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fip->field_readcount; 603ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 604ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 605ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint 606ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFFieldWriteCount(const TIFFField* fip) 607ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 608ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fip->field_writecount; 609ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 610ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 611ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst TIFFField* 612ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFFindOrRegisterField(TIFF *tif, uint32 tag, TIFFDataType dt) 613ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 614ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 615ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const TIFFField *fld; 616ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 617ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld = TIFFFindField(tif, tag, dt); 618ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fld == NULL) { 619ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld = _TIFFCreateAnonField(tif, tag, dt); 620ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!_TIFFMergeFields(tif, fld, 1)) 621ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 622ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 623ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 624ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fld; 625ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 626ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 627ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFField* 628ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFCreateAnonField(TIFF *tif, uint32 tag, TIFFDataType field_type) 629ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 630ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFField *fld; 631ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (void) tif; 632ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 633ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld = (TIFFField *) _TIFFmalloc(sizeof (TIFFField)); 634ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fld == NULL) 635ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 636ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFmemset(fld, 0, sizeof(TIFFField)); 637ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 638ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_tag = tag; 639ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_readcount = TIFF_VARIABLE2; 640ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_writecount = TIFF_VARIABLE2; 641ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_type = field_type; 642ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->reserved = 0; 643ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (field_type) 644ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 645ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_BYTE: 646ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_UNDEFINED: 647ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_UINT8; 648ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_UINT8; 649ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 650ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_ASCII: 651ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_ASCII; 652ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_ASCII; 653ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 654ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SHORT: 655ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_UINT16; 656ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_UINT16; 657ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 658ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG: 659ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_UINT32; 660ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_UINT32; 661ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 662ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_RATIONAL: 663ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SRATIONAL: 664ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_FLOAT: 665ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_FLOAT; 666ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_FLOAT; 667ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 668ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SBYTE: 669ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_SINT8; 670ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_SINT8; 671ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 672ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SSHORT: 673ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_SINT16; 674ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_SINT16; 675ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 676ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG: 677ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_SINT32; 678ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_SINT32; 679ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 680ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_DOUBLE: 681ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_DOUBLE; 682ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_DOUBLE; 683ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 684ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD: 685ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD8: 686ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_IFD8; 687ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_IFD8; 688ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 689ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG8: 690ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_UINT64; 691ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_UINT64; 692ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 693ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG8: 694ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_C32_SINT64; 695ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_C32_SINT64; 696ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 697ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 698ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->set_field_type = TIFF_SETGET_UNDEFINED; 699ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->get_field_type = TIFF_SETGET_UNDEFINED; 700ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 701ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 702ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_bit = FIELD_CUSTOM; 703ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_oktochange = TRUE; 704ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_passcount = TRUE; 705ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_name = (char *) _TIFFmalloc(32); 706ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fld->field_name == NULL) { 707ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFfree(fld); 708ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 709ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 710ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fld->field_subfields = NULL; 711ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 712ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* 713ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * note that this name is a special sign to TIFFClose() and 714ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * _TIFFSetupFields() to free the field 715ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 716ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann snprintf(fld->field_name, 32, "Tag %d", (int) tag); 717ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 718ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fld; 719ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 720ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 721ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/**************************************************************************** 722ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * O B S O L E T E D I N T E R F A C E S 723ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 724ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Don't use this stuff in your applications, it may be removed in the future 725ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * libtiff versions. 726ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ****************************************************************************/ 727ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 728ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic TIFFSetGetFieldType 729ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann_TIFFSetGetType(TIFFDataType type, short count, unsigned char passcount) 730ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 731ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (type == TIFF_ASCII && count == TIFF_VARIABLE && passcount == 0) 732ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_ASCII; 733ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 734ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else if (count == 1 && passcount == 0) { 735ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (type) 736ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 737ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_BYTE: 738ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_UNDEFINED: 739ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UINT8; 740ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_ASCII: 741ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_ASCII; 742ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SHORT: 743ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UINT16; 744ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG: 745ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UINT32; 746ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_RATIONAL: 747ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SRATIONAL: 748ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_FLOAT: 749ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_FLOAT; 750ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SBYTE: 751ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_SINT8; 752ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SSHORT: 753ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_SINT16; 754ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG: 755ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_SINT32; 756ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_DOUBLE: 757ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_DOUBLE; 758ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD: 759ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD8: 760ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_IFD8; 761ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG8: 762ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UINT64; 763ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG8: 764ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_SINT64; 765ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 766ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UNDEFINED; 767ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 768ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 769ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 770ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else if (count >= 1 && passcount == 0) { 771ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (type) 772ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 773ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_BYTE: 774ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_UNDEFINED: 775ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_UINT8; 776ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_ASCII: 777ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_ASCII; 778ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SHORT: 779ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_UINT16; 780ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG: 781ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_UINT32; 782ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_RATIONAL: 783ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SRATIONAL: 784ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_FLOAT: 785ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_FLOAT; 786ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SBYTE: 787ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_SINT8; 788ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SSHORT: 789ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_SINT16; 790ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG: 791ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_SINT32; 792ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_DOUBLE: 793ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_DOUBLE; 794ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD: 795ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD8: 796ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_IFD8; 797ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG8: 798ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_UINT64; 799ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG8: 800ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C0_SINT64; 801ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 802ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UNDEFINED; 803ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 804ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 805ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 806ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else if (count == TIFF_VARIABLE && passcount == 1) { 807ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (type) 808ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 809ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_BYTE: 810ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_UNDEFINED: 811ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_UINT8; 812ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_ASCII: 813ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_ASCII; 814ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SHORT: 815ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_UINT16; 816ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG: 817ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_UINT32; 818ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_RATIONAL: 819ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SRATIONAL: 820ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_FLOAT: 821ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_FLOAT; 822ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SBYTE: 823ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_SINT8; 824ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SSHORT: 825ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_SINT16; 826ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG: 827ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_SINT32; 828ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_DOUBLE: 829ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_DOUBLE; 830ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD: 831ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD8: 832ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_IFD8; 833ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG8: 834ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_UINT64; 835ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG8: 836ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C16_SINT64; 837ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 838ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UNDEFINED; 839ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 840ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 841ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 842ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else if (count == TIFF_VARIABLE2 && passcount == 1) { 843ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (type) 844ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 845ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_BYTE: 846ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_UNDEFINED: 847ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_UINT8; 848ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_ASCII: 849ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_ASCII; 850ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SHORT: 851ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_UINT16; 852ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG: 853ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_UINT32; 854ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_RATIONAL: 855ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SRATIONAL: 856ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_FLOAT: 857ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_FLOAT; 858ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SBYTE: 859ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_SINT8; 860ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SSHORT: 861ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_SINT16; 862ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG: 863ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_SINT32; 864ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_DOUBLE: 865ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_DOUBLE; 866ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD: 867ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_IFD8: 868ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_IFD8; 869ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_LONG8: 870ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_UINT64; 871ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case TIFF_SLONG8: 872ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_C32_SINT64; 873ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 874ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UNDEFINED; 875ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 876ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 877ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 878ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TIFF_SETGET_UNDEFINED; 879ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 880ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 881ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint 882ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannTIFFMergeFieldInfo(TIFF* tif, const TIFFFieldInfo info[], uint32 n) 883ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann{ 884ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static const char module[] = "TIFFMergeFieldInfo"; 885ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static const char reason[] = "for fields array"; 886ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFField *tp; 887ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann size_t nfields; 888ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint32 i; 889ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 890ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (tif->tif_nfieldscompat > 0) { 891ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fieldscompat = (TIFFFieldArray *) 892ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFCheckRealloc(tif, tif->tif_fieldscompat, 893ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_nfieldscompat + 1, 894ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann sizeof(TIFFFieldArray), reason); 895ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 896ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fieldscompat = (TIFFFieldArray *) 897ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFCheckMalloc(tif, 1, sizeof(TIFFFieldArray), 898ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann reason); 899ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 900ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!tif->tif_fieldscompat) { 901ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFErrorExt(tif->tif_clientdata, module, 902ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann "Failed to allocate fields array"); 903ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return -1; 904ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 905ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nfields = tif->tif_nfieldscompat++; 906ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 907ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fieldscompat[nfields].type = tfiatOther; 908ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fieldscompat[nfields].allocated_size = n; 909ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fieldscompat[nfields].count = n; 910ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tif->tif_fieldscompat[nfields].fields = 911ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (TIFFField *)_TIFFCheckMalloc(tif, n, sizeof(TIFFField), 912ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann reason); 913ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!tif->tif_fieldscompat[nfields].fields) { 914ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFErrorExt(tif->tif_clientdata, module, 915ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann "Failed to allocate fields array"); 916ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return -1; 917ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 918ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 919ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp = tif->tif_fieldscompat[nfields].fields; 920ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (i = 0; i < n; i++) { 921ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_tag = info[i].field_tag; 922ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_readcount = info[i].field_readcount; 923ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_writecount = info[i].field_writecount; 924ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_type = info[i].field_type; 925ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->reserved = 0; 926ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->set_field_type = 927ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFSetGetType(info[i].field_type, 928ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann info[i].field_readcount, 929ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann info[i].field_passcount); 930ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->get_field_type = 931ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _TIFFSetGetType(info[i].field_type, 932ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann info[i].field_readcount, 933ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann info[i].field_passcount); 934ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_bit = info[i].field_bit; 935ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_oktochange = info[i].field_oktochange; 936ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_passcount = info[i].field_passcount; 937ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_name = info[i].field_name; 938ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp->field_subfields = NULL; 939ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tp++; 940ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 941ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 942ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!_TIFFMergeFields(tif, tif->tif_fieldscompat[nfields].fields, n)) { 943ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TIFFErrorExt(tif->tif_clientdata, module, 944ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann "Setting up field info failed"); 945ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return -1; 946ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 947ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 948ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 0; 949ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 950ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 951ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* vim: set ts=8 sts=8 sw=8 noet: */ 952ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 953ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 954ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Local Variables: 955ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * mode: c 956ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * c-basic-offset: 8 957ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * fill-column: 78 958ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * End: 959ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 960