ReactOS  0.4.14-dev-376-gaedba84
tif_extension.c
Go to the documentation of this file.
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 
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 */
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  */
TIFFTagMethods tif_tagmethods
Definition: tiffiop.h:203
void * data
Definition: tiffiop.h:82
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
unsigned int uint32
Definition: types.h:32
TIFFClientInfoLink * tif_clientinfo
Definition: tiffiop.h:204
TIFFTagValue * td_customValues
Definition: tif_dir.h:120
#define assert(x)
Definition: debug.h:53
int td_customValueCount
Definition: tif_dir.h:119
Definition: tiffiop.h:102
char * name
Definition: tiffiop.h:83
uint32 TIFFGetTagListEntry(TIFF *tif, int tag_index)
Definition: tif_extension.c:42
TIFF_SSIZE_T tmsize_t
Definition: tiffio.h:65
smooth NULL
Definition: ftsmooth.c:416
void * _TIFFmalloc(tmsize_t s)
Definition: tif_unix.c:309
TIFFTagMethods * TIFFAccessTagMethods(TIFF *tif)
Definition: tif_extension.c:58
const TIFFField * info
Definition: tif_dir.h:36
void TIFFSetClientInfo(TIFF *tif, void *data, const char *name)
Definition: tif_extension.c:78
uint32 field_tag
Definition: tif_dir.h:279
struct client_info * next
Definition: tiffiop.h:81
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
int TIFFGetTagListCount(TIFF *tif)
Definition: tif_extension.c:34
TIFFDirectory tif_dir
Definition: tiffiop.h:135
Definition: name.c:36
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
void * TIFFGetClientInfo(TIFF *tif, const char *name)
Definition: tif_extension.c:64