opencv
1/*
2* Copyright (c) 1988-1997 Sam Leffler
3* Copyright (c) 1991-1997 Silicon Graphics, Inc.
4*
5* Permission to use, copy, modify, distribute, and sell this software and
6* its documentation for any purpose is hereby granted without fee, provided
7* that (i) the above copyright notices and this permission notice appear in
8* all copies of the software and related documentation, and (ii) the names of
9* Sam Leffler and Silicon Graphics may not be used in any advertising or
10* publicity relating to the software without the specific, prior written
11* permission of Sam Leffler and Silicon Graphics.
12*
13* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
14* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
15* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
16*
17* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
18* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
19* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
20* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
21* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
22* OF THIS SOFTWARE.
23*/
24
25/*
26* TIFF Library.
27*
28* Various routines support external extension of the tag set, and other
29* application extension capabilities.
30*/
31
32#include "tiffiop.h"33
34int TIFFGetTagListCount(TIFF *tif)35
36{
37TIFFDirectory *td = &tif->tif_dir;38
39return td->td_customValueCount;40}
41
42uint32_t TIFFGetTagListEntry(TIFF *tif, int tag_index)43
44{
45TIFFDirectory *td = &tif->tif_dir;46
47if (tag_index < 0 || tag_index >= td->td_customValueCount)48return (uint32_t)(-1);49else50return td->td_customValues[tag_index].info->field_tag;51}
52
53/*
54** This provides read/write access to the TIFFTagMethods within the TIFF
55** structure to application code without giving access to the private
56** TIFF structure.
57*/
58TIFFTagMethods *TIFFAccessTagMethods(TIFF *tif)59
60{
61return &(tif->tif_tagmethods);62}
63
64void *TIFFGetClientInfo(TIFF *tif, const char *name)65
66{
67TIFFClientInfoLink *psLink = tif->tif_clientinfo;68
69while (psLink != NULL && strcmp(psLink->name, name) != 0)70psLink = psLink->next;71
72if (psLink != NULL)73return psLink->data;74else75return NULL;76}
77
78void TIFFSetClientInfo(TIFF *tif, void *data, const char *name)79
80{
81TIFFClientInfoLink *psLink = tif->tif_clientinfo;82
83/*84** Do we have an existing link with this name? If so, just
85** set it.
86*/
87while (psLink != NULL && strcmp(psLink->name, name) != 0)88psLink = psLink->next;89
90if (psLink != NULL)91{92psLink->data = data;93return;94}95
96/*97** Create a new link.
98*/
99
100psLink =101(TIFFClientInfoLink *)_TIFFmallocExt(tif, sizeof(TIFFClientInfoLink));102assert(psLink != NULL);103psLink->next = tif->tif_clientinfo;104psLink->name = (char *)_TIFFmallocExt(tif, (tmsize_t)(strlen(name) + 1));105assert(psLink->name != NULL);106strcpy(psLink->name, name);107psLink->data = data;108
109tif->tif_clientinfo = psLink;110}
111