OLD | NEW |
| (Empty) |
1 /* $Id: tif_codec.c,v 1.15 2010-12-14 12:53:00 dron Exp $ */ | |
2 | |
3 /* | |
4 * Copyright (c) 1988-1997 Sam Leffler | |
5 * Copyright (c) 1991-1997 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 /* | |
28 * TIFF Library | |
29 * | |
30 * Builtin Compression Scheme Configuration Support. | |
31 */ | |
32 #include "tiffiop.h" | |
33 | |
34 static int NotConfigured(TIFF*, int); | |
35 | |
36 #ifndef LZW_SUPPORT | |
37 #define TIFFInitLZW NotConfigured | |
38 #endif | |
39 #ifndef PACKBITS_SUPPORT | |
40 #define TIFFInitPackBits NotConfigured | |
41 #endif | |
42 #ifndef THUNDER_SUPPORT | |
43 #define TIFFInitThunderScan NotConfigured | |
44 #endif | |
45 #ifndef NEXT_SUPPORT | |
46 #define TIFFInitNeXT NotConfigured | |
47 #endif | |
48 #ifndef JPEG_SUPPORT | |
49 #define TIFFInitJPEG NotConfigured | |
50 #endif | |
51 #ifndef OJPEG_SUPPORT | |
52 #define TIFFInitOJPEG NotConfigured | |
53 #endif | |
54 #ifndef CCITT_SUPPORT | |
55 #define TIFFInitCCITTRLE NotConfigured | |
56 #define TIFFInitCCITTRLEW NotConfigured | |
57 #define TIFFInitCCITTFax3 NotConfigured | |
58 #define TIFFInitCCITTFax4 NotConfigured | |
59 #endif | |
60 #ifndef JBIG_SUPPORT | |
61 #define TIFFInitJBIG NotConfigured | |
62 #endif | |
63 #ifndef ZIP_SUPPORT | |
64 #define TIFFInitZIP NotConfigured | |
65 #endif | |
66 #ifndef PIXARLOG_SUPPORT | |
67 #define TIFFInitPixarLog NotConfigured | |
68 #endif | |
69 #ifndef LOGLUV_SUPPORT | |
70 #define TIFFInitSGILog NotConfigured | |
71 #endif | |
72 #ifndef LZMA_SUPPORT | |
73 #define TIFFInitLZMA NotConfigured | |
74 #endif | |
75 | |
76 /* | |
77 * Compression schemes statically built into the library. | |
78 */ | |
79 #ifdef VMS | |
80 const TIFFCodec _TIFFBuiltinCODECS[] = { | |
81 #else | |
82 TIFFCodec _TIFFBuiltinCODECS[] = { | |
83 #endif | |
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 }, | |
102 { NULL, 0, NULL } | |
103 }; | |
104 | |
105 static int | |
106 _notConfigured(TIFF* tif) | |
107 { | |
108 const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); | |
109 char compression_code[20]; | |
110 | |
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 ); | |
115 return (0); | |
116 } | |
117 | |
118 static int | |
119 NotConfigured(TIFF* tif, int scheme) | |
120 { | |
121 (void) scheme; | |
122 | |
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; | |
128 return (1); | |
129 } | |
130 | |
131 /************************************************************************/ | |
132 /* TIFFIsCODECConfigured() */ | |
133 /************************************************************************/ | |
134 | |
135 /** | |
136 * Check whether we have working codec for the specific coding scheme. | |
137 * | |
138 * @return returns 1 if the codec is configured and working. Otherwise | |
139 * 0 will be returned. | |
140 */ | |
141 | |
142 int | |
143 TIFFIsCODECConfigured(uint16 scheme) | |
144 { | |
145 const TIFFCodec* codec = TIFFFindCODEC(scheme); | |
146 | |
147 if(codec == NULL) { | |
148 return 0; | |
149 } | |
150 if(codec->init == NULL) { | |
151 return 0; | |
152 } | |
153 if(codec->init != NotConfigured){ | |
154 return 1; | |
155 } | |
156 return 0; | |
157 } | |
158 | |
159 /* | |
160 * Local Variables: | |
161 * mode: c | |
162 * c-basic-offset: 8 | |
163 * fill-column: 78 | |
164 * End: | |
165 */ | |
166 | |
OLD | NEW |