Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/3rdparty/libtiff/tif_codec.c
16337 views
1
/* $Id: tif_codec.c,v 1.17 2015-08-19 02:31:04 bfriesen 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
167