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 :
34 : #include "tiffiop.h"
35 :
36 : int TIFFGetTagListCount( TIFF *tif )
37 :
38 0 : {
39 0 : TIFFDirectory* td = &tif->tif_dir;
40 :
41 0 : return td->td_customValueCount;
42 : }
43 :
44 : uint32 TIFFGetTagListEntry( TIFF *tif, int tag_index )
45 :
46 0 : {
47 0 : TIFFDirectory* td = &tif->tif_dir;
48 :
49 0 : if( tag_index < 0 || tag_index >= td->td_customValueCount )
50 0 : return (uint32)(-1);
51 : else
52 0 : return td->td_customValues[tag_index].info->field_tag;
53 : }
54 :
55 : /*
56 : ** This provides read/write access to the TIFFTagMethods within the TIFF
57 : ** structure to application code without giving access to the private
58 : ** TIFF structure.
59 : */
60 : TIFFTagMethods *TIFFAccessTagMethods( TIFF *tif )
61 :
62 0 : {
63 0 : return &(tif->tif_tagmethods);
64 : }
65 :
66 : void *TIFFGetClientInfo( TIFF *tif, const char *name )
67 :
68 0 : {
69 0 : TIFFClientInfoLink *link = tif->tif_clientinfo;
70 :
71 0 : while( link != NULL && strcmp(link->name,name) != 0 )
72 0 : link = link->next;
73 :
74 0 : if( link != NULL )
75 0 : return link->data;
76 : else
77 0 : return NULL;
78 : }
79 :
80 : void TIFFSetClientInfo( TIFF *tif, void *data, const char *name )
81 :
82 0 : {
83 0 : TIFFClientInfoLink *link = tif->tif_clientinfo;
84 :
85 : /*
86 : ** Do we have an existing link with this name? If so, just
87 : ** set it.
88 : */
89 0 : while( link != NULL && strcmp(link->name,name) != 0 )
90 0 : link = link->next;
91 :
92 0 : if( link != NULL )
93 : {
94 0 : link->data = data;
95 0 : return;
96 : }
97 :
98 : /*
99 : ** Create a new link.
100 : */
101 :
102 0 : link = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink));
103 0 : assert (link != NULL);
104 0 : link->next = tif->tif_clientinfo;
105 0 : link->name = (char *) _TIFFmalloc((tmsize_t)(strlen(name)+1));
106 0 : assert (link->name != NULL);
107 0 : strcpy(link->name, name);
108 0 : link->data = data;
109 :
110 0 : tif->tif_clientinfo = link;
111 : }
112 : /*
113 : * Local Variables:
114 : * mode: c
115 : * c-basic-offset: 8
116 : * fill-column: 78
117 : * End:
118 : */
|