[LIBTIFF] Update to version 4.0.10. CORE-15854
[reactos.git] / dll / 3rdparty / libtiff / tif_extension.c
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 <precomp.h>
33
34 int TIFFGetTagListCount( TIFF *tif )
35
36 {
37 TIFFDirectory* td = &tif->tif_dir;
38
39 return td->td_customValueCount;
40 }
41
42 uint32 TIFFGetTagListEntry( TIFF *tif, int tag_index )
43
44 {
45 TIFFDirectory* td = &tif->tif_dir;
46
47 if( tag_index < 0 || tag_index >= td->td_customValueCount )
48 return (uint32)(-1);
49 else
50 return 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 */
58 TIFFTagMethods *TIFFAccessTagMethods( TIFF *tif )
59
60 {
61 return &(tif->tif_tagmethods);
62 }
63
64 void *TIFFGetClientInfo( TIFF *tif, const char *name )
65
66 {
67 TIFFClientInfoLink *psLink = tif->tif_clientinfo;
68
69 while( psLink != NULL && strcmp(psLink->name,name) != 0 )
70 psLink = psLink->next;
71
72 if( psLink != NULL )
73 return psLink->data;
74 else
75 return NULL;
76 }
77
78 void TIFFSetClientInfo( TIFF *tif, void *data, const char *name )
79
80 {
81 TIFFClientInfoLink *psLink = tif->tif_clientinfo;
82
83 /*
84 ** Do we have an existing link with this name? If so, just
85 ** set it.
86 */
87 while( psLink != NULL && strcmp(psLink->name,name) != 0 )
88 psLink = psLink->next;
89
90 if( psLink != NULL )
91 {
92 psLink->data = data;
93 return;
94 }
95
96 /*
97 ** Create a new link.
98 */
99
100 psLink = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink));
101 assert (psLink != NULL);
102 psLink->next = tif->tif_clientinfo;
103 psLink->name = (char *) _TIFFmalloc((tmsize_t)(strlen(name)+1));
104 assert (psLink->name != NULL);
105 strcpy(psLink->name, name);
106 psLink->data = data;
107
108 tif->tif_clientinfo = psLink;
109 }
110 /*
111 * Local Variables:
112 * mode: c
113 * c-basic-offset: 8
114 * fill-column: 78
115 * End:
116 */