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