| 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 |