ReactOS 0.4.16-dev-2613-g9533ad7
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 "tiffiop.h"
33
35
36{
37 TIFFDirectory *td = &tif->tif_dir;
38
39 return td->td_customValueCount;
40}
41
42uint32_t 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_t)(-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
64void *TIFFGetClientInfo(TIFF *tif, const char *name)
65
66{
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
78void TIFFSetClientInfo(TIFF *tif, void *data, const char *name)
79
80{
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 =
102 assert(psLink != NULL);
103 psLink->next = tif->tif_clientinfo;
104 psLink->name = (char *)_TIFFmallocExt(tif, (tmsize_t)(strlen(name) + 1));
105 assert(psLink->name != NULL);
106 strcpy(psLink->name, name);
107 psLink->data = data;
108
109 tif->tif_clientinfo = psLink;
110}
#define NULL
Definition: types.h:112
UINT32 uint32_t
Definition: types.h:75
#define assert(_expr)
Definition: assert.h:32
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1592
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3319
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
strcpy
Definition: string.h:131
int td_customValueCount
Definition: tif_dir.h:142
TIFFTagValue * td_customValues
Definition: tif_dir.h:143
const TIFFField * info
Definition: tif_dir.h:37
uint32_t field_tag
Definition: tif_dir.h:332
void * data
Definition: tiffiop.h:77
struct client_info * next
Definition: tiffiop.h:76
char * name
Definition: tiffiop.h:78
Definition: name.c:39
Definition: tiffiop.h:113
TIFFTagMethods tif_tagmethods
Definition: tiffiop.h:244
TIFFClientInfoLink * tif_clientinfo
Definition: tiffiop.h:245
TIFFDirectory tif_dir
Definition: tiffiop.h:157
uint32_t TIFFGetTagListEntry(TIFF *tif, int tag_index)
Definition: tif_extension.c:42
int TIFFGetTagListCount(TIFF *tif)
Definition: tif_extension.c:34
TIFFTagMethods * TIFFAccessTagMethods(TIFF *tif)
Definition: tif_extension.c:58
void TIFFSetClientInfo(TIFF *tif, void *data, const char *name)
Definition: tif_extension.c:78
void * TIFFGetClientInfo(TIFF *tif, const char *name)
Definition: tif_extension.c:64
void * _TIFFmallocExt(TIFF *tif, tmsize_t s)
Definition: tif_open.c:173
TIFF_SSIZE_T tmsize_t
Definition: tiffio.h:67