Blame libtiff/tiffiop.h

Packit 85355f
/* $Id: tiffiop.h,v 1.95 2017-09-07 14:02:52 erouault Exp $ */
Packit 85355f
Packit 85355f
/*
Packit 85355f
 * Copyright (c) 1988-1997 Sam Leffler
Packit 85355f
 * Copyright (c) 1991-1997 Silicon Graphics, Inc.
Packit 85355f
 *
Packit 85355f
 * Permission to use, copy, modify, distribute, and sell this software and 
Packit 85355f
 * its documentation for any purpose is hereby granted without fee, provided
Packit 85355f
 * that (i) the above copyright notices and this permission notice appear in
Packit 85355f
 * all copies of the software and related documentation, and (ii) the names of
Packit 85355f
 * Sam Leffler and Silicon Graphics may not be used in any advertising or
Packit 85355f
 * publicity relating to the software without the specific, prior written
Packit 85355f
 * permission of Sam Leffler and Silicon Graphics.
Packit 85355f
 * 
Packit 85355f
 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
Packit 85355f
 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
Packit 85355f
 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
Packit 85355f
 * 
Packit 85355f
 * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
Packit 85355f
 * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
Packit 85355f
 * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
Packit 85355f
 * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
Packit 85355f
 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
Packit 85355f
 * OF THIS SOFTWARE.
Packit 85355f
 */
Packit 85355f
Packit 85355f
#ifndef _TIFFIOP_
Packit 85355f
#define	_TIFFIOP_
Packit 85355f
/*
Packit 85355f
 * ``Library-private'' definitions.
Packit 85355f
 */
Packit 85355f
Packit 85355f
#include "tif_config.h"
Packit 85355f
Packit 85355f
#ifdef HAVE_FCNTL_H
Packit 85355f
# include <fcntl.h>
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#ifdef HAVE_SYS_TYPES_H
Packit 85355f
# include <sys/types.h>
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#ifdef HAVE_STRING_H
Packit 85355f
# include <string.h>
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#ifdef HAVE_ASSERT_H
Packit 85355f
# include <assert.h>
Packit 85355f
#else
Packit 85355f
# define assert(x) 
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#ifdef HAVE_SEARCH_H
Packit 85355f
# include <search.h>
Packit 85355f
#else
Packit 85355f
extern void *lfind(const void *, const void *, size_t *, size_t,
Packit 85355f
		   int (*)(const void *, const void *));
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#if !defined(HAVE_SNPRINTF) && !defined(HAVE__SNPRINTF)
Packit 85355f
#undef snprintf
Packit 85355f
#define snprintf _TIFF_snprintf_f
Packit 85355f
extern int snprintf(char* str, size_t size, const char* format, ...);
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#include "tiffio.h"
Packit 85355f
Packit 85355f
#include "tif_dir.h"
Packit 85355f
Packit 85355f
#ifndef STRIP_SIZE_DEFAULT
Packit 85355f
# define STRIP_SIZE_DEFAULT 8192
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#define    streq(a,b)      (strcmp(a,b) == 0)
Packit 33866a
#define    strneq(a,b,n)   (strncmp(a,b,n) == 0)
Packit 85355f
Packit 85355f
#ifndef TRUE
Packit 85355f
#define	TRUE	1
Packit 85355f
#define	FALSE	0
Packit 85355f
#endif
Packit 85355f
Packit f4d615
#define TIFF_SIZE_T_MAX ((size_t) ~ ((size_t)0))
Packit f4d615
#define TIFF_TMSIZE_T_MAX (tmsize_t)(TIFF_SIZE_T_MAX >> 1)
Packit f4d615
Packit 85355f
typedef struct client_info {
Packit 85355f
    struct client_info *next;
Packit 85355f
    void *data;
Packit 85355f
    char *name;
Packit 85355f
} TIFFClientInfoLink;
Packit 85355f
Packit 85355f
/*
Packit 85355f
 * Typedefs for ``method pointers'' used internally.
Packit 85355f
 * these are deprecated and provided only for backwards compatibility.
Packit 85355f
 */
Packit 85355f
typedef unsigned char tidataval_t;    /* internal image data value type */
Packit 85355f
typedef tidataval_t* tidata_t;        /* reference to internal image data */
Packit 85355f
Packit 85355f
typedef void (*TIFFVoidMethod)(TIFF*);
Packit 85355f
typedef int (*TIFFBoolMethod)(TIFF*);
Packit 85355f
typedef int (*TIFFPreMethod)(TIFF*, uint16);
Packit 85355f
typedef int (*TIFFCodeMethod)(TIFF* tif, uint8* buf, tmsize_t size, uint16 sample);
Packit 85355f
typedef int (*TIFFSeekMethod)(TIFF*, uint32);
Packit 85355f
typedef void (*TIFFPostMethod)(TIFF* tif, uint8* buf, tmsize_t size);
Packit 85355f
typedef uint32 (*TIFFStripMethod)(TIFF*, uint32);
Packit 85355f
typedef void (*TIFFTileMethod)(TIFF*, uint32*, uint32*);
Packit 85355f
Packit 85355f
struct tiff {
Packit 85355f
	char*                tif_name;         /* name of open file */
Packit 85355f
	int                  tif_fd;           /* open file descriptor */
Packit 85355f
	int                  tif_mode;         /* open mode (O_*) */
Packit 85355f
	uint32               tif_flags;
Packit 85355f
	#define TIFF_FILLORDER   0x00003U /* natural bit fill order for machine */
Packit 85355f
	#define TIFF_DIRTYHEADER 0x00004U /* header must be written on close */
Packit 85355f
	#define TIFF_DIRTYDIRECT 0x00008U /* current directory must be written */
Packit 85355f
	#define TIFF_BUFFERSETUP 0x00010U /* data buffers setup */
Packit 85355f
	#define TIFF_CODERSETUP  0x00020U /* encoder/decoder setup done */
Packit 85355f
	#define TIFF_BEENWRITING 0x00040U /* written 1+ scanlines to file */
Packit 85355f
	#define TIFF_SWAB        0x00080U /* byte swap file information */
Packit 85355f
	#define TIFF_NOBITREV    0x00100U /* inhibit bit reversal logic */
Packit 85355f
	#define TIFF_MYBUFFER    0x00200U /* my raw data buffer; free on close */
Packit 85355f
	#define TIFF_ISTILED     0x00400U /* file is tile, not strip- based */
Packit 85355f
	#define TIFF_MAPPED      0x00800U /* file is mapped into memory */
Packit 85355f
	#define TIFF_POSTENCODE  0x01000U /* need call to postencode routine */
Packit 85355f
	#define TIFF_INSUBIFD    0x02000U /* currently writing a subifd */
Packit 85355f
	#define TIFF_UPSAMPLED   0x04000U /* library is doing data up-sampling */
Packit 85355f
	#define TIFF_STRIPCHOP   0x08000U /* enable strip chopping support */
Packit 85355f
	#define TIFF_HEADERONLY  0x10000U /* read header only, do not process the first directory */
Packit 85355f
	#define TIFF_NOREADRAW   0x20000U /* skip reading of raw uncompressed image data */
Packit 85355f
	#define TIFF_INCUSTOMIFD 0x40000U /* currently writing a custom IFD */
Packit 85355f
	#define TIFF_BIGTIFF     0x80000U /* read/write bigtiff */
Packit 85355f
        #define TIFF_BUF4WRITE  0x100000U /* rawcc bytes are for writing */
Packit 85355f
        #define TIFF_DIRTYSTRIP 0x200000U /* stripoffsets/stripbytecount dirty*/
Packit 85355f
        #define TIFF_PERSAMPLE  0x400000U /* get/set per sample tags as arrays */
Packit 85355f
        #define TIFF_BUFFERMMAP 0x800000U /* read buffer (tif_rawdata) points into mmap() memory */
Packit 85355f
	uint64               tif_diroff;       /* file offset of current directory */
Packit 85355f
	uint64               tif_nextdiroff;   /* file offset of following directory */
Packit 85355f
	uint64*              tif_dirlist;      /* list of offsets to already seen directories to prevent IFD looping */
Packit 85355f
	uint16               tif_dirlistsize;  /* number of entries in offset list */
Packit 85355f
	uint16               tif_dirnumber;    /* number of already seen directories */
Packit 85355f
	TIFFDirectory        tif_dir;          /* internal rep of current directory */
Packit 85355f
	TIFFDirectory        tif_customdir;    /* custom IFDs are separated from the main ones */
Packit 85355f
	union {
Packit 85355f
		TIFFHeaderCommon common;
Packit 85355f
		TIFFHeaderClassic classic;
Packit 85355f
		TIFFHeaderBig big;
Packit 85355f
	} tif_header;
Packit 85355f
	uint16               tif_header_size;  /* file's header block and its length */
Packit 85355f
	uint32               tif_row;          /* current scanline */
Packit 85355f
	uint16               tif_curdir;       /* current directory (index) */
Packit 85355f
	uint32               tif_curstrip;     /* current strip for read/write */
Packit 85355f
	uint64               tif_curoff;       /* current offset for read/write */
Packit 85355f
	uint64               tif_dataoff;      /* current offset for writing dir */
Packit 85355f
	/* SubIFD support */
Packit 85355f
	uint16               tif_nsubifd;      /* remaining subifds to write */
Packit 85355f
	uint64               tif_subifdoff;    /* offset for patching SubIFD link */
Packit 85355f
	/* tiling support */
Packit 85355f
	uint32               tif_col;          /* current column (offset by row too) */
Packit 85355f
	uint32               tif_curtile;      /* current tile for read/write */
Packit 85355f
	tmsize_t             tif_tilesize;     /* # of bytes in a tile */
Packit 85355f
	/* compression scheme hooks */
Packit 85355f
	int                  tif_decodestatus;
Packit 85355f
	TIFFBoolMethod       tif_fixuptags;    /* called in TIFFReadDirectory */
Packit 85355f
	TIFFBoolMethod       tif_setupdecode;  /* called once before predecode */
Packit 85355f
	TIFFPreMethod        tif_predecode;    /* pre- row/strip/tile decoding */
Packit 85355f
	TIFFBoolMethod       tif_setupencode;  /* called once before preencode */
Packit 85355f
	int                  tif_encodestatus;
Packit 85355f
	TIFFPreMethod        tif_preencode;    /* pre- row/strip/tile encoding */
Packit 85355f
	TIFFBoolMethod       tif_postencode;   /* post- row/strip/tile encoding */
Packit 85355f
	TIFFCodeMethod       tif_decoderow;    /* scanline decoding routine */
Packit 85355f
	TIFFCodeMethod       tif_encoderow;    /* scanline encoding routine */
Packit 85355f
	TIFFCodeMethod       tif_decodestrip;  /* strip decoding routine */
Packit 85355f
	TIFFCodeMethod       tif_encodestrip;  /* strip encoding routine */
Packit 85355f
	TIFFCodeMethod       tif_decodetile;   /* tile decoding routine */
Packit 85355f
	TIFFCodeMethod       tif_encodetile;   /* tile encoding routine */
Packit 85355f
	TIFFVoidMethod       tif_close;        /* cleanup-on-close routine */
Packit 85355f
	TIFFSeekMethod       tif_seek;         /* position within a strip routine */
Packit 85355f
	TIFFVoidMethod       tif_cleanup;      /* cleanup state routine */
Packit 85355f
	TIFFStripMethod      tif_defstripsize; /* calculate/constrain strip size */
Packit 85355f
	TIFFTileMethod       tif_deftilesize;  /* calculate/constrain tile size */
Packit 85355f
	uint8*               tif_data;         /* compression scheme private data */
Packit 85355f
	/* input/output buffering */
Packit 85355f
	tmsize_t             tif_scanlinesize; /* # of bytes in a scanline */
Packit 85355f
	tmsize_t             tif_scanlineskew; /* scanline skew for reading strips */
Packit 85355f
	uint8*               tif_rawdata;      /* raw data buffer */
Packit 85355f
	tmsize_t             tif_rawdatasize;  /* # of bytes in raw data buffer */
Packit 85355f
        tmsize_t             tif_rawdataoff;   /* rawdata offset within strip */
Packit 85355f
        tmsize_t             tif_rawdataloaded;/* amount of data in rawdata */
Packit 85355f
	uint8*               tif_rawcp;        /* current spot in raw buffer */
Packit 85355f
	tmsize_t             tif_rawcc;        /* bytes unread from raw buffer */
Packit 85355f
	/* memory-mapped file support */
Packit 85355f
	uint8*               tif_base;         /* base of mapped file */
Packit 85355f
	tmsize_t             tif_size;         /* size of mapped file region (bytes, thus tmsize_t) */
Packit 85355f
	TIFFMapFileProc      tif_mapproc;      /* map file method */
Packit 85355f
	TIFFUnmapFileProc    tif_unmapproc;    /* unmap file method */
Packit 85355f
	/* input/output callback methods */
Packit 85355f
	thandle_t            tif_clientdata;   /* callback parameter */
Packit 85355f
	TIFFReadWriteProc    tif_readproc;     /* read method */
Packit 85355f
	TIFFReadWriteProc    tif_writeproc;    /* write method */
Packit 85355f
	TIFFSeekProc         tif_seekproc;     /* lseek method */
Packit 85355f
	TIFFCloseProc        tif_closeproc;    /* close method */
Packit 85355f
	TIFFSizeProc         tif_sizeproc;     /* filesize method */
Packit 85355f
	/* post-decoding support */
Packit 85355f
	TIFFPostMethod       tif_postdecode;   /* post decoding routine */
Packit 85355f
	/* tag support */
Packit 85355f
	TIFFField**          tif_fields;       /* sorted table of registered tags */
Packit 85355f
	size_t               tif_nfields;      /* # entries in registered tag table */
Packit 85355f
	const TIFFField*     tif_foundfield;   /* cached pointer to already found tag */
Packit 85355f
	TIFFTagMethods       tif_tagmethods;   /* tag get/set/print routines */
Packit 85355f
	TIFFClientInfoLink*  tif_clientinfo;   /* extra client information. */
Packit 85355f
	/* Backward compatibility stuff. We need these two fields for
Packit 85355f
	 * setting up an old tag extension scheme. */
Packit 85355f
	TIFFFieldArray*      tif_fieldscompat;
Packit 85355f
	size_t               tif_nfieldscompat;
Packit 85355f
};
Packit 85355f
Packit 85355f
#define isPseudoTag(t) (t > 0xffff)            /* is tag value normal or pseudo */
Packit 85355f
Packit 85355f
#define isTiled(tif) (((tif)->tif_flags & TIFF_ISTILED) != 0)
Packit 85355f
#define isMapped(tif) (((tif)->tif_flags & TIFF_MAPPED) != 0)
Packit 85355f
#define isFillOrder(tif, o) (((tif)->tif_flags & (o)) != 0)
Packit 85355f
#define isUpSampled(tif) (((tif)->tif_flags & TIFF_UPSAMPLED) != 0)
Packit 85355f
#define TIFFReadFile(tif, buf, size) \
Packit 85355f
	((*(tif)->tif_readproc)((tif)->tif_clientdata,(buf),(size)))
Packit 85355f
#define TIFFWriteFile(tif, buf, size) \
Packit 85355f
	((*(tif)->tif_writeproc)((tif)->tif_clientdata,(buf),(size)))
Packit 85355f
#define TIFFSeekFile(tif, off, whence) \
Packit 85355f
	((*(tif)->tif_seekproc)((tif)->tif_clientdata,(off),(whence)))
Packit 85355f
#define TIFFCloseFile(tif) \
Packit 85355f
	((*(tif)->tif_closeproc)((tif)->tif_clientdata))
Packit 85355f
#define TIFFGetFileSize(tif) \
Packit 85355f
	((*(tif)->tif_sizeproc)((tif)->tif_clientdata))
Packit 85355f
#define TIFFMapFileContents(tif, paddr, psize) \
Packit 85355f
	((*(tif)->tif_mapproc)((tif)->tif_clientdata,(paddr),(psize)))
Packit 85355f
#define TIFFUnmapFileContents(tif, addr, size) \
Packit 85355f
	((*(tif)->tif_unmapproc)((tif)->tif_clientdata,(addr),(size)))
Packit 85355f
Packit 85355f
/*
Packit 85355f
 * Default Read/Seek/Write definitions.
Packit 85355f
 */
Packit 85355f
#ifndef ReadOK
Packit 85355f
#define ReadOK(tif, buf, size) \
Packit 85355f
	(TIFFReadFile((tif),(buf),(size))==(size))
Packit 85355f
#endif
Packit 85355f
#ifndef SeekOK
Packit 85355f
#define SeekOK(tif, off) _TIFFSeekOK(tif, off)
Packit 85355f
#endif
Packit 85355f
#ifndef WriteOK
Packit 85355f
#define WriteOK(tif, buf, size) \
Packit 85355f
	(TIFFWriteFile((tif),(buf),(size))==(size))
Packit 85355f
#endif
Packit 85355f
Packit 85355f
/* NB: the uint32 casts are to silence certain ANSI-C compilers */
Packit 85355f
#define TIFFhowmany_32(x, y) (((uint32)x < (0xffffffff - (uint32)(y-1))) ? \
Packit 85355f
			   ((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y))) : \
Packit 85355f
			   0U)
Packit 85355f
/* Variant of TIFFhowmany_32() that doesn't return 0 if x close to MAXUINT. */
Packit 85355f
/* Caution: TIFFhowmany_32_maxuint_compat(x,y)*y might overflow */
Packit 85355f
#define TIFFhowmany_32_maxuint_compat(x, y) \
Packit 85355f
			   (((uint32)(x) / (uint32)(y)) + ((((uint32)(x) % (uint32)(y)) != 0) ? 1 : 0))
Packit 85355f
#define TIFFhowmany8_32(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3)
Packit 85355f
#define TIFFroundup_32(x, y) (TIFFhowmany_32(x,y)*(y))
Packit 85355f
#define TIFFhowmany_64(x, y) ((((uint64)(x))+(((uint64)(y))-1))/((uint64)(y)))
Packit 85355f
#define TIFFhowmany8_64(x) (((x)&0x07)?((uint64)(x)>>3)+1:(uint64)(x)>>3)
Packit 85355f
#define TIFFroundup_64(x, y) (TIFFhowmany_64(x,y)*(y))
Packit 85355f
Packit f4d615
/* Safe multiply which returns zero if there is an *unsigned* integer overflow. This macro is not safe for *signed* integer types */
Packit 85355f
#define TIFFSafeMultiply(t,v,m) ((((t)(m) != (t)0) && (((t)(((v)*(m))/(m))) == (t)(v))) ? (t)((v)*(m)) : (t)0)
Packit 85355f
Packit 85355f
#define TIFFmax(A,B) ((A)>(B)?(A):(B))
Packit 85355f
#define TIFFmin(A,B) ((A)<(B)?(A):(B))
Packit 85355f
Packit 85355f
#define TIFFArrayCount(a) (sizeof (a) / sizeof ((a)[0]))
Packit 85355f
Packit 85355f
/*
Packit 85355f
  Support for large files.
Packit 85355f
Packit 85355f
  Windows read/write APIs support only 'unsigned int' rather than 'size_t'.
Packit 85355f
  Windows off_t is only 32-bit, even in 64-bit builds.
Packit 85355f
*/
Packit 85355f
#if defined(HAVE_FSEEKO)
Packit 85355f
/*
Packit 85355f
  Use fseeko() and ftello() if they are available since they use
Packit 85355f
  'off_t' rather than 'long'.  It is wrong to use fseeko() and
Packit 85355f
  ftello() only on systems with special LFS support since some systems
Packit 85355f
  (e.g. FreeBSD) support a 64-bit off_t by default.
Packit 85355f
Packit 85355f
  For MinGW, __MSVCRT_VERSION__ must be at least 0x800 to expose these
Packit 85355f
  interfaces. The MinGW compiler must support the requested version.  MinGW
Packit 85355f
  does not distribute the CRT (it is supplied by Microsoft) so the correct CRT
Packit 85355f
  must be available on the target computer in order for the program to run.
Packit 85355f
*/
Packit 85355f
#if defined(HAVE_FSEEKO)
Packit 85355f
#  define fseek(stream,offset,whence)  fseeko(stream,offset,whence)
Packit 85355f
#  define ftell(stream,offset,whence)  ftello(stream,offset,whence)
Packit 85355f
#endif
Packit 85355f
#endif
Packit 85355f
#if defined(__WIN32__) && \
Packit 85355f
        !(defined(_MSC_VER) && _MSC_VER < 1400) && \
Packit 85355f
        !(defined(__MSVCRT_VERSION__) && __MSVCRT_VERSION__ < 0x800)
Packit 85355f
typedef unsigned int TIFFIOSize_t;
Packit 85355f
#define _TIFF_lseek_f(fildes,offset,whence)  _lseeki64(fildes,/* __int64 */ offset,whence)
Packit 85355f
/* #define _TIFF_tell_f(fildes) /\* __int64 *\/ _telli64(fildes) */
Packit 85355f
#define _TIFF_fseek_f(stream,offset,whence) _fseeki64(stream,/* __int64 */ offset,whence)
Packit 85355f
#define _TIFF_fstat_f(fildes,stat_buff) _fstati64(fildes,/* struct _stati64 */ stat_buff)
Packit 85355f
/* #define _TIFF_ftell_f(stream) /\* __int64 *\/ _ftelli64(stream) */
Packit 85355f
/* #define _TIFF_stat_f(path,stat_buff) _stati64(path,/\* struct _stati64 *\/ stat_buff) */
Packit 85355f
#define _TIFF_stat_s struct _stati64
Packit 85355f
#define _TIFF_off_t __int64
Packit 85355f
#else
Packit 85355f
typedef size_t TIFFIOSize_t;
Packit 85355f
#define _TIFF_lseek_f(fildes,offset,whence) lseek(fildes,offset,whence)
Packit 85355f
/* #define _TIFF_tell_f(fildes) (_TIFF_lseek_f(fildes,0,SEEK_CUR)) */
Packit 85355f
#define _TIFF_fseek_f(stream,offset,whence) fseek(stream,offset,whence)
Packit 85355f
#define _TIFF_fstat_f(fildes,stat_buff) fstat(fildes,stat_buff)
Packit 85355f
/* #define _TIFF_ftell_f(stream) ftell(stream) */
Packit 85355f
/* #define _TIFF_stat_f(path,stat_buff) stat(path,stat_buff) */
Packit 85355f
#define _TIFF_stat_s struct stat
Packit 85355f
#define _TIFF_off_t off_t
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#if __clang_major__ >= 4 || (__clang_major__ == 3 && __clang_minor__ >= 8)
Packit 85355f
#define TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW __attribute__((no_sanitize("unsigned-integer-overflow")))
Packit 85355f
#else
Packit 85355f
#define TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW
Packit 85355f
#endif
Packit 85355f
Packit 85355f
Packit 85355f
#if defined(__cplusplus)
Packit 85355f
extern "C" {
Packit 85355f
#endif
Packit 85355f
extern int _TIFFgetMode(const char* mode, const char* module);
Packit 85355f
extern int _TIFFNoRowEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s);
Packit 85355f
extern int _TIFFNoStripEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s);
Packit 85355f
extern int _TIFFNoTileEncode(TIFF*, uint8* pp, tmsize_t cc, uint16 s);
Packit 85355f
extern int _TIFFNoRowDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s);
Packit 85355f
extern int _TIFFNoStripDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s);
Packit 85355f
extern int _TIFFNoTileDecode(TIFF*, uint8* pp, tmsize_t cc, uint16 s);
Packit 85355f
extern void _TIFFNoPostDecode(TIFF* tif, uint8* buf, tmsize_t cc);
Packit 85355f
extern int _TIFFNoPreCode(TIFF* tif, uint16 s);
Packit 85355f
extern int _TIFFNoSeek(TIFF* tif, uint32 off);
Packit 85355f
extern void _TIFFSwab16BitData(TIFF* tif, uint8* buf, tmsize_t cc);
Packit 85355f
extern void _TIFFSwab24BitData(TIFF* tif, uint8* buf, tmsize_t cc);
Packit 85355f
extern void _TIFFSwab32BitData(TIFF* tif, uint8* buf, tmsize_t cc);
Packit 85355f
extern void _TIFFSwab64BitData(TIFF* tif, uint8* buf, tmsize_t cc);
Packit 85355f
extern int TIFFFlushData1(TIFF* tif);
Packit 85355f
extern int TIFFDefaultDirectory(TIFF* tif);
Packit 85355f
extern void _TIFFSetDefaultCompressionState(TIFF* tif);
Packit 85355f
extern int _TIFFRewriteField(TIFF *, uint16, TIFFDataType, tmsize_t, void *);
Packit 85355f
extern int TIFFSetCompressionScheme(TIFF* tif, int scheme);
Packit 85355f
extern int TIFFSetDefaultCompressionState(TIFF* tif);
Packit 85355f
extern uint32 _TIFFDefaultStripSize(TIFF* tif, uint32 s);
Packit 85355f
extern void _TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th);
Packit 85355f
extern int _TIFFDataSize(TIFFDataType type);
Packit 85355f
Packit 85355f
extern void _TIFFsetByteArray(void**, void*, uint32);
Packit 85355f
extern void _TIFFsetString(char**, char*);
Packit 85355f
extern void _TIFFsetShortArray(uint16**, uint16*, uint32);
Packit 85355f
extern void _TIFFsetLongArray(uint32**, uint32*, uint32);
Packit 85355f
extern void _TIFFsetFloatArray(float**, float*, uint32);
Packit 85355f
extern void _TIFFsetDoubleArray(double**, double*, uint32);
Packit 85355f
Packit 85355f
extern void _TIFFprintAscii(FILE*, const char*);
Packit 85355f
extern void _TIFFprintAsciiTag(FILE*, const char*, const char*);
Packit 85355f
Packit 85355f
extern TIFFErrorHandler _TIFFwarningHandler;
Packit 85355f
extern TIFFErrorHandler _TIFFerrorHandler;
Packit 85355f
extern TIFFErrorHandlerExt _TIFFwarningHandlerExt;
Packit 85355f
extern TIFFErrorHandlerExt _TIFFerrorHandlerExt;
Packit 85355f
Packit 85355f
extern uint32 _TIFFMultiply32(TIFF*, uint32, uint32, const char*);
Packit 85355f
extern uint64 _TIFFMultiply64(TIFF*, uint64, uint64, const char*);
Packit f4d615
extern tmsize_t _TIFFMultiplySSize(TIFF*, tmsize_t, tmsize_t, const char*);
Packit f4d615
extern tmsize_t _TIFFCastUInt64ToSSize(TIFF*, uint64, const char*);
Packit 85355f
extern void* _TIFFCheckMalloc(TIFF*, tmsize_t, tmsize_t, const char*);
Packit 85355f
extern void* _TIFFCheckRealloc(TIFF*, void*, tmsize_t, tmsize_t, const char*);
Packit 85355f
Packit 85355f
extern double _TIFFUInt64ToDouble(uint64);
Packit 85355f
extern float _TIFFUInt64ToFloat(uint64);
Packit 85355f
Packit 85355f
extern tmsize_t
Packit 85355f
_TIFFReadEncodedStripAndAllocBuffer(TIFF* tif, uint32 strip,
Packit 85355f
                                    void **buf, tmsize_t bufsizetoalloc,
Packit 85355f
                                    tmsize_t size_to_read);
Packit 85355f
extern tmsize_t
Packit 85355f
_TIFFReadEncodedTileAndAllocBuffer(TIFF* tif, uint32 tile,
Packit 85355f
                                    void **buf, tmsize_t bufsizetoalloc,
Packit 85355f
                                    tmsize_t size_to_read);
Packit 85355f
extern tmsize_t
Packit 85355f
_TIFFReadTileAndAllocBuffer(TIFF* tif,
Packit 85355f
                            void **buf, tmsize_t bufsizetoalloc,
Packit 85355f
                            uint32 x, uint32 y, uint32 z, uint16 s);
Packit 85355f
extern int _TIFFSeekOK(TIFF* tif, toff_t off);
Packit 85355f
Packit 85355f
extern int TIFFInitDumpMode(TIFF*, int);
Packit 85355f
#ifdef PACKBITS_SUPPORT
Packit 85355f
extern int TIFFInitPackBits(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef CCITT_SUPPORT
Packit 85355f
extern int TIFFInitCCITTRLE(TIFF*, int), TIFFInitCCITTRLEW(TIFF*, int);
Packit 85355f
extern int TIFFInitCCITTFax3(TIFF*, int), TIFFInitCCITTFax4(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef THUNDER_SUPPORT
Packit 85355f
extern int TIFFInitThunderScan(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef NEXT_SUPPORT
Packit 85355f
extern int TIFFInitNeXT(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef LZW_SUPPORT
Packit 85355f
extern int TIFFInitLZW(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef OJPEG_SUPPORT
Packit 85355f
extern int TIFFInitOJPEG(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef JPEG_SUPPORT
Packit 85355f
extern int TIFFInitJPEG(TIFF*, int);
Packit 85355f
extern int TIFFJPEGIsFullStripRequired(TIFF*);
Packit 85355f
#endif
Packit 85355f
#ifdef JBIG_SUPPORT
Packit 85355f
extern int TIFFInitJBIG(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef ZIP_SUPPORT
Packit 85355f
extern int TIFFInitZIP(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef PIXARLOG_SUPPORT
Packit 85355f
extern int TIFFInitPixarLog(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef LOGLUV_SUPPORT
Packit 85355f
extern int TIFFInitSGILog(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef LZMA_SUPPORT
Packit 85355f
extern int TIFFInitLZMA(TIFF*, int);
Packit 85355f
#endif
Packit 85355f
#ifdef VMS
Packit 85355f
extern const TIFFCodec _TIFFBuiltinCODECS[];
Packit 85355f
#else
Packit 85355f
extern TIFFCodec _TIFFBuiltinCODECS[];
Packit 85355f
#endif
Packit 85355f
Packit 85355f
#if defined(__cplusplus)
Packit 85355f
}
Packit 85355f
#endif
Packit 85355f
#endif /* _TIFFIOP_ */
Packit 85355f
Packit 85355f
/* vim: set ts=8 sts=8 sw=8 noet: */
Packit 85355f
/*
Packit 85355f
 * Local Variables:
Packit 85355f
 * mode: c
Packit 85355f
 * c-basic-offset: 8
Packit 85355f
 * fill-column: 78
Packit 85355f
 * End:
Packit 85355f
 */