1 /* $Header: /usr/people/sam/tiff/libtiff/RCS/tiffio.h,v 1.53 92/02/19 14:24:20 sam Exp $ */
2 
3 /*
4  * Copyright (c) 1988, 1989, 1990, 1991, 1992 Sam Leffler
5  * Copyright (c) 1991, 1992 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 #ifndef _TIFFIO_
28 #define	_TIFFIO_
29 
30 /*
31  * TIFF I/O Library Definitions.
32  */
33 #include "tiff.h"
34 
35 /*
36  * TIFF is defined as an incomplete type to hide the
37  * library's internal data structures from clients.
38  */
39 typedef	struct tiff TIFF;
40 
41 #ifndef NULL
42 #define	NULL	0
43 #endif
44 
45 /*
46  * Flags to pass to TIFFPrintDirectory to control
47  * printing of data structures that are potentially
48  * very large.   Bit-or these flags to enable printing
49  * multiple items.
50  */
51 #define	TIFFPRINT_NONE		0x0		/* no extra info */
52 #define	TIFFPRINT_STRIPS	0x1		/* strips/tiles info */
53 #define	TIFFPRINT_CURVES	0x2		/* color/gray response curves */
54 #define	TIFFPRINT_COLORMAP	0x4		/* colormap */
55 #define	TIFFPRINT_JPEGQTABLES	0x100		/* JPEG Q matrices */
56 #define	TIFFPRINT_JPEGACTABLES	0x200		/* JPEG AC tables */
57 #define	TIFFPRINT_JPEGDCTABLES	0x200		/* JPEG DC tables */
58 
59 #if defined(__STDC__) || defined(__EXTENDED__) || USE_CONST
60 extern const char TIFFVersion[];
61 extern const unsigned char TIFFBitRevTable[256];
62 extern const unsigned char TIFFNoBitRevTable[256];
63 #else
64 extern char TIFFVersion[];
65 extern unsigned char TIFFBitRevTable[256];
66 extern unsigned char TIFFNoBitRevTable[256];
67 #endif
68 
69 /*
70  * Macros for extracting components from the
71  * packed ABGR form returned by TIFFReadRGBAImage.
72  */
73 #define	TIFFGetR(abgr)	((abgr) & 0xff)
74 #define	TIFFGetG(abgr)	(((abgr) >> 8) & 0xff)
75 #define	TIFFGetB(abgr)	(((abgr) >> 16) & 0xff)
76 #define	TIFFGetA(abgr)	(((abgr) >> 24) & 0xff)
77 
78 #if defined(c_plusplus) || defined(__cplusplus) || defined(__STDC__) || defined(__EXTENDED__) || USE_PROTOTYPES
79 #include <stdio.h>
80 #include <stdarg.h>
81 
82 typedef	void (*TIFFErrorHandler)(char* module, char* fmt, va_list ap);
83 
84 #if defined(__cplusplus)
85 extern "C" {
86 #endif
87 extern	void TIFFClose(TIFF*);
88 extern	int TIFFFlush(TIFF*);
89 extern	int TIFFFlushData(TIFF*);
90 extern	int TIFFGetField(TIFF*, int, ...);
91 extern	int TIFFVGetField(TIFF*, int, va_list);
92 extern	int TIFFGetFieldDefaulted(TIFF*, int, ...);
93 extern	int TIFFVGetFieldDefaulted(TIFF*, int, va_list);
94 extern	int TIFFReadDirectory(TIFF*);
95 extern	int TIFFScanlineSize(TIFF*);
96 extern	unsigned long TIFFStripSize(TIFF*);
97 extern	unsigned long TIFFVStripSize(TIFF*, unsigned long);
98 extern	unsigned long TIFFTileRowSize(TIFF*);
99 extern	unsigned long TIFFTileSize(TIFF*);
100 extern	unsigned long TIFFVTileSize(TIFF*, unsigned long);
101 extern	int TIFFFileno(TIFF*);
102 extern	int TIFFGetMode(TIFF*);
103 extern	int TIFFIsTiled(TIFF*);
104 extern	long TIFFCurrentRow(TIFF*);
105 extern	int TIFFCurrentDirectory(TIFF*);
106 extern	int TIFFCurrentStrip(TIFF*);
107 extern	int TIFFCurrentTile(TIFF*);
108 extern	int TIFFReadBufferSetup(TIFF*, char*, unsigned);
109 extern	int TIFFSetDirectory(TIFF*, int);
110 extern	int TIFFSetField(TIFF*, int, ...);
111 extern	int TIFFVSetField(TIFF*, int, va_list);
112 extern	int TIFFWriteDirectory(TIFF *);
113 #if defined(c_plusplus) || defined(__cplusplus)
114 extern	TIFF* TIFFOpen(const char*, const char*);
115 extern	TIFF* TIFFFdOpen(const int, const char*, const char*);
116 extern	const char* TIFFFileName(TIFF*);
117 extern	void TIFFError(const char*, const char*, ...);
118 extern	void TIFFWarning(const char*, const char*, ...);
119 extern	void TIFFPrintDirectory(TIFF*, FILE*, long = 0);
120 extern	int TIFFReadScanline(TIFF*, unsigned char*, unsigned, unsigned = 0);
121 extern	int TIFFWriteScanline(TIFF*, unsigned char*, unsigned, unsigned = 0);
122 extern	int TIFFReadRGBAImage(TIFF*, unsigned long, unsigned long, unsigned long*, int stop = 0);
123 #else
124 extern	TIFF* TIFFOpen(char*, char*);
125 extern	TIFF* TIFFFdOpen(int, char*, char*);
126 extern	char* TIFFFileName(TIFF*);
127 extern	void TIFFError(char*, char*, ...);
128 extern	TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler handler);
129 extern	void TIFFWarning(char*, char*, ...);
130 extern	TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler handler);
131 extern	void TIFFPrintDirectory(TIFF*, FILE*, long);
132 extern	int TIFFReadScanline(TIFF*, unsigned char*, unsigned, unsigned);
133 extern	int TIFFWriteScanline(TIFF*, unsigned char*, unsigned, unsigned);
134 extern	int TIFFReadRGBAImage(TIFF*, unsigned long, unsigned long, unsigned long*, int stop);
135 #endif
136 extern	unsigned int TIFFComputeTile(TIFF*, unsigned long, unsigned long, unsigned int, unsigned long);
137 extern	int TIFFCheckTile(TIFF*, unsigned long, unsigned long, unsigned long, unsigned);
138 extern	unsigned int TIFFNumberOfTiles(TIFF*);
139 extern	int TIFFReadTile(TIFF*, unsigned char*, unsigned long, unsigned long, unsigned long, unsigned);
140 extern	unsigned int TIFFComputeStrip(TIFF*, unsigned long, unsigned int);
141 extern	unsigned int TIFFNumberOfStrips(TIFF*);
142 extern	int TIFFReadEncodedStrip(TIFF*, unsigned, unsigned char*, unsigned);
143 extern	int TIFFReadRawStrip(TIFF*, unsigned, unsigned char*, unsigned);
144 extern	int TIFFReadEncodedTile(TIFF*, unsigned, unsigned char*, unsigned);
145 extern	int TIFFReadRawTile(TIFF*, unsigned, unsigned char*, unsigned);
146 extern	int TIFFWriteEncodedStrip(TIFF*, unsigned, unsigned char*, unsigned);
147 extern	int TIFFWriteRawStrip(TIFF*, unsigned, unsigned char*, unsigned);
148 extern	int TIFFWriteEncodedTile(TIFF*, unsigned, unsigned char*, unsigned);
149 extern	int TIFFWriteRawTile(TIFF*, unsigned, unsigned char*, unsigned);
150 extern	int TIFFSwabShort(unsigned short *);
151 extern	int TIFFSwabLong(unsigned long *);
152 extern	int TIFFSwabArrayOfShort(unsigned short *, int);
153 extern	int TIFFSwabArrayOfLong(unsigned long *, int);
154 extern	int TIFFReverseBits(unsigned char *, int);
155 #if defined(__cplusplus)
156 }
157 #endif
158 #else
159 typedef	void (*TIFFErrorHandler)();
160 
161 extern	void TIFFClose();
162 extern	TIFF *TIFFOpen();
163 extern	TIFF *TIFFFdOpen();
164 extern	char* TIFFFileName();
165 extern	int TIFFFileno();
166 extern	int TIFFGetMode();
167 extern	int TIFFIsTiled();
168 extern	unsigned int TIFFComputeTile();
169 extern	long TIFFCurrentRow();
170 extern	int TIFFCurrentDirectory();
171 extern	int TIFFCurrentStrip();
172 extern	int TIFFCurrentTile();
173 extern	void TIFFError();
174 extern	TIFFErrorHandler TIFFSetErrorHandler();
175 extern	int TIFFFlush();
176 extern	int TIFFFlushData();
177 extern	int TIFFGetField();
178 extern	int TIFFVGetField();
179 extern	int TIFFGetFieldDefaulted();
180 extern	int TIFFVGetFieldDefaulted();
181 extern	unsigned int TIFFNumberOfTiles();
182 extern	void TIFFPrintDirectory();
183 extern	int TIFFReadDirectory();
184 extern	int TIFFReadBufferSetup();
185 extern	int TIFFReadScanline();
186 extern	int TIFFReadTile();
187 extern	unsigned int TIFFComputeStrip();
188 extern	unsigned int TIFFNumberOfStrips();
189 extern	int TIFFReadEncodedStrip();
190 extern	int TIFFReadRawStrip();
191 extern	int TIFFReadEncodedTile();
192 extern	int TIFFReadRGBAImage();
193 extern	int TIFFReadRawTile();
194 extern	int TIFFScanlineSize();
195 extern	unsigned long TIFFStripSize();
196 extern	unsigned long TIFFVStripSize();
197 extern	unsigned long TIFFTileRowSize();
198 extern	unsigned long TIFFTileSize();
199 extern	unsigned long TIFFVTileSize();
200 extern	int TIFFSetDirectory();
201 extern	int TIFFSetField();
202 extern	int TIFFVSetField();
203 extern	void TIFFWarning();
204 extern	TIFFErrorHandler TIFFSetWarningHandler();
205 extern	int TIFFWriteDirectory();
206 extern	int TIFFWriteScanline();
207 extern	int TIFFWriteEncodedStrip();
208 extern	int TIFFWriteRawStrip();
209 extern	int TIFFWriteEncodedTile();
210 extern	int TIFFWriteRawTile();
211 extern	int TIFFSwabShort();
212 extern	int TIFFSwabLong();
213 extern	int TIFFSwabArrayOfShort();
214 extern	int TIFFSwabArrayOfLong();
215 extern	int TIFFReverseBits();
216 extern	int TIFFCheckTile();
217 #endif
218 #endif /* _TIFFIO_ */
219