1
/* $Id: tif_codec.c,v 1.15 2010-12-14 12:53:00 dron Exp $ */
4
* Copyright (c) 1988-1997 Sam Leffler
5
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
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.
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.
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
30
* Builtin Compression Scheme Configuration Support.
34
static int NotConfigured(TIFF*, int);
37
#define TIFFInitLZW NotConfigured
39
#ifndef PACKBITS_SUPPORT
40
#define TIFFInitPackBits NotConfigured
42
#ifndef THUNDER_SUPPORT
43
#define TIFFInitThunderScan NotConfigured
46
#define TIFFInitNeXT NotConfigured
49
#define TIFFInitJPEG NotConfigured
52
#define TIFFInitOJPEG NotConfigured
55
#define TIFFInitCCITTRLE NotConfigured
56
#define TIFFInitCCITTRLEW NotConfigured
57
#define TIFFInitCCITTFax3 NotConfigured
58
#define TIFFInitCCITTFax4 NotConfigured
61
#define TIFFInitJBIG NotConfigured
64
#define TIFFInitZIP NotConfigured
66
#ifndef PIXARLOG_SUPPORT
67
#define TIFFInitPixarLog NotConfigured
69
#ifndef LOGLUV_SUPPORT
70
#define TIFFInitSGILog NotConfigured
73
#define TIFFInitLZMA NotConfigured
77
* Compression schemes statically built into the library.
80
const TIFFCodec _TIFFBuiltinCODECS[] = {
82
TIFFCodec _TIFFBuiltinCODECS[] = {
84
{ "None", COMPRESSION_NONE, TIFFInitDumpMode },
85
{ "LZW", COMPRESSION_LZW, TIFFInitLZW },
86
{ "PackBits", COMPRESSION_PACKBITS, TIFFInitPackBits },
87
{ "ThunderScan", COMPRESSION_THUNDERSCAN,TIFFInitThunderScan },
88
{ "NeXT", COMPRESSION_NEXT, TIFFInitNeXT },
89
{ "JPEG", COMPRESSION_JPEG, TIFFInitJPEG },
90
{ "Old-style JPEG", COMPRESSION_OJPEG, TIFFInitOJPEG },
91
{ "CCITT RLE", COMPRESSION_CCITTRLE, TIFFInitCCITTRLE },
92
{ "CCITT RLE/W", COMPRESSION_CCITTRLEW, TIFFInitCCITTRLEW },
93
{ "CCITT Group 3", COMPRESSION_CCITTFAX3, TIFFInitCCITTFax3 },
94
{ "CCITT Group 4", COMPRESSION_CCITTFAX4, TIFFInitCCITTFax4 },
95
{ "ISO JBIG", COMPRESSION_JBIG, TIFFInitJBIG },
96
{ "Deflate", COMPRESSION_DEFLATE, TIFFInitZIP },
97
{ "AdobeDeflate", COMPRESSION_ADOBE_DEFLATE , TIFFInitZIP },
98
{ "PixarLog", COMPRESSION_PIXARLOG, TIFFInitPixarLog },
99
{ "SGILog", COMPRESSION_SGILOG, TIFFInitSGILog },
100
{ "SGILog24", COMPRESSION_SGILOG24, TIFFInitSGILog },
101
{ "LZMA", COMPRESSION_LZMA, TIFFInitLZMA },
106
_notConfigured(TIFF* tif)
108
const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
109
char compression_code[20];
111
sprintf( compression_code, "%d", tif->tif_dir.td_compression );
112
TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
113
"%s compression support is not configured",
114
c ? c->name : compression_code );
119
NotConfigured(TIFF* tif, int scheme)
123
tif->tif_fixuptags = _notConfigured;
124
tif->tif_decodestatus = FALSE;
125
tif->tif_setupdecode = _notConfigured;
126
tif->tif_encodestatus = FALSE;
127
tif->tif_setupencode = _notConfigured;
131
/************************************************************************/
132
/* TIFFIsCODECConfigured() */
133
/************************************************************************/
136
* Check whether we have working codec for the specific coding scheme.
138
* @return returns 1 if the codec is configured and working. Otherwise
139
* 0 will be returned.
143
TIFFIsCODECConfigured(uint16 scheme)
145
const TIFFCodec* codec = TIFFFindCODEC(scheme);
150
if(codec->init == NULL) {
153
if(codec->init != NotConfigured){