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 */ 117