Leptonica
1.82.0
Image processing and image analysis suite
imageio.h
Go to the documentation of this file.
1
/*====================================================================*
2
- Copyright (C) 2001 Leptonica. All rights reserved.
3
-
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions
6
- are met:
7
- 1. Redistributions of source code must retain the above copyright
8
- notice, this list of conditions and the following disclaimer.
9
- 2. Redistributions in binary form must reproduce the above
10
- copyright notice, this list of conditions and the following
11
- disclaimer in the documentation and/or other materials
12
- provided with the distribution.
13
-
14
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY
18
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
23
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*====================================================================*/
26
70
#ifndef LEPTONICA_IMAGEIO_H
71
#define LEPTONICA_IMAGEIO_H
72
73
/* --------------------------------------------------------------- *
74
* Image file format types *
75
* --------------------------------------------------------------- */
76
/*
77
* The IFF_DEFAULT flag is used to write the file out in the
78
* same (input) file format that the pix was read from. If the pix
79
* was not read from file, the input format field will be
80
* IFF_UNKNOWN and the output file format will be chosen to
81
* be compressed and lossless; namely, IFF_TIFF_G4 for d = 1
82
* and IFF_PNG for everything else.
83
*
84
* In the future, new format types that have defined extensions
85
* will be added before IFF_DEFAULT, and will be kept in sync with
86
* the file format extensions in writefile.c. The positions of
87
* file formats before IFF_DEFAULT will remain invariant.
88
*/
89
91
enum
{
92
IFF_UNKNOWN = 0,
93
IFF_BMP = 1,
94
IFF_JFIF_JPEG = 2,
95
IFF_PNG = 3,
96
IFF_TIFF = 4,
97
IFF_TIFF_PACKBITS = 5,
98
IFF_TIFF_RLE = 6,
99
IFF_TIFF_G3 = 7,
100
IFF_TIFF_G4 = 8,
101
IFF_TIFF_LZW = 9,
102
IFF_TIFF_ZIP = 10,
103
IFF_PNM = 11,
104
IFF_PS = 12,
105
IFF_GIF = 13,
106
IFF_JP2 = 14,
107
IFF_WEBP = 15,
108
IFF_LPDF = 16,
109
IFF_TIFF_JPEG = 17,
110
IFF_DEFAULT = 18,
111
IFF_SPIX = 19
112
};
113
114
/* Convenient macro for checking requested tiff output */
115
#define L_FORMAT_IS_TIFF(f) ((f) == IFF_TIFF || (f) == IFF_TIFF_PACKBITS || \
116
(f) == IFF_TIFF_RLE || (f) == IFF_TIFF_G3 || \
117
(f) == IFF_TIFF_G4 || (f) == IFF_TIFF_LZW || \
118
(f) == IFF_TIFF_ZIP || (f) == IFF_TIFF_JPEG)
119
120
121
/* --------------------------------------------------------------- *
122
* Format header ids *
123
* --------------------------------------------------------------- */
125
enum
{
126
BMP_ID
= 0x4d42,
127
TIFF_BIGEND_ID
= 0x4d4d,
128
TIFF_LITTLEEND_ID
= 0x4949
129
};
130
131
132
/* --------------------------------------------------------------- *
133
* Hinting bit flags in jpeg reader *
134
* --------------------------------------------------------------- */
136
/* The default behavior is now to fail on data corruption. */
137
enum
{
138
L_JPEG_READ_LUMINANCE
= 1,
139
L_JPEG_CONTINUE_WITH_BAD_DATA
= 2
140
};
141
142
143
/* --------------------------------------------------------------- *
144
* Jp2k codecs *
145
* --------------------------------------------------------------- */
147
enum
{
148
L_J2K_CODEC
= 1,
149
L_JP2_CODEC
= 2
150
};
151
152
153
/* --------------------------------------------------------------- *
154
* Pdf formatted encoding types *
155
* --------------------------------------------------------------- */
157
enum
{
158
L_DEFAULT_ENCODE
= 0,
159
L_JPEG_ENCODE
= 1,
160
L_G4_ENCODE
= 2,
161
L_FLATE_ENCODE
= 3,
162
L_JP2K_ENCODE
= 4
163
};
164
165
166
/* --------------------------------------------------------------- *
167
* Compressed image data *
168
* --------------------------------------------------------------- */
169
/*
170
* In use, either datacomp or data85 will be produced, depending
171
* on whether the data needs to be ascii85 encoded. PostScript
172
* requires ascii85 encoding; pdf does not.
173
*
174
* For the colormap (flate compression only), PostScript uses ascii85
175
* encoding and pdf uses a bracketed array of space-separated
176
* hex-encoded rgb triples. Only tiff g4 (type == L_G4_ENCODE) uses
177
* the minisblack field.
178
*/
179
181
struct
L_Compressed_Data
182
{
183
l_int32
type
;
184
l_uint8 *
datacomp
;
185
size_t
nbytescomp
;
186
char
*
data85
;
187
size_t
nbytes85
;
188
char
*
cmapdata85
;
189
char
*
cmapdatahex
;
190
l_int32
ncolors
;
191
l_int32
w
;
192
l_int32
h
;
193
l_int32
bps
;
194
l_int32
spp
;
195
l_int32
minisblack
;
196
l_int32
predictor
;
197
size_t
nbytes
;
198
l_int32
res
;
199
};
200
typedef
struct
L_Compressed_Data
L_COMP_DATA
;
201
202
203
/* ------------------------------------------------------------------------- *
204
* Pdf multi image flags *
205
* ------------------------------------------------------------------------- */
207
enum
{
208
L_FIRST_IMAGE
= 1,
209
L_NEXT_IMAGE
= 2,
210
L_LAST_IMAGE
= 3
211
};
212
213
214
/* ------------------------------------------------------------------------- *
215
* Intermediate pdf generation data *
216
* ------------------------------------------------------------------------- */
217
/*
218
* This accumulates data for generating a pdf of a single page consisting
219
* of an arbitrary number of images.
220
*
221
* None of the strings have a trailing newline.
222
*/
223
225
struct
L_Pdf_Data
226
{
227
char
*
title
;
228
l_int32
n
;
229
l_int32
ncmap
;
230
struct
L_Ptra
*
cida
;
231
char
*
id
;
232
char
*
obj1
;
233
char
*
obj2
;
234
char
*
obj3
;
235
char
*
obj4
;
236
char
*
obj5
;
237
char
*
poststream
;
238
char
*
trailer
;
239
struct
Pta
*
xy
;
240
struct
Pta
*
wh
;
241
struct
Box
*
mediabox
;
242
struct
Sarray
*
saprex
;
243
struct
Sarray
*
sacmap
;
244
struct
L_Dna
*
objsize
;
245
struct
L_Dna
*
objloc
;
246
l_int32
xrefloc
;
247
};
248
typedef
struct
L_Pdf_Data
L_PDF_DATA
;
249
250
#endif
/* LEPTONICA_IMAGEIO_H */
L_Pdf_Data::saprex
struct Sarray * saprex
Definition:
imageio.h:242
L_LAST_IMAGE
Definition:
imageio.h:210
L_Compressed_Data::ncolors
l_int32 ncolors
Definition:
imageio.h:190
L_Compressed_Data::predictor
l_int32 predictor
Definition:
imageio.h:196
L_Pdf_Data
Definition:
imageio.h:225
L_Compressed_Data::cmapdata85
char * cmapdata85
Definition:
imageio.h:188
L_Pdf_Data::cida
struct L_Ptra * cida
Definition:
imageio.h:230
L_Pdf_Data::trailer
char * trailer
Definition:
imageio.h:238
L_Dna
Definition:
array.h:94
L_Compressed_Data::w
l_int32 w
Definition:
imageio.h:191
L_G4_ENCODE
Definition:
imageio.h:160
L_JP2_CODEC
Definition:
imageio.h:149
L_Compressed_Data::nbytes85
size_t nbytes85
Definition:
imageio.h:187
L_JPEG_READ_LUMINANCE
Definition:
imageio.h:138
Sarray
Definition:
array.h:126
L_Pdf_Data::objsize
struct L_Dna * objsize
Definition:
imageio.h:244
L_Compressed_Data::type
l_int32 type
Definition:
imageio.h:183
L_FLATE_ENCODE
Definition:
imageio.h:161
L_Pdf_Data::id
char * id
Definition:
imageio.h:231
L_Pdf_Data::xrefloc
l_int32 xrefloc
Definition:
imageio.h:246
L_Compressed_Data::res
l_int32 res
Definition:
imageio.h:198
L_Compressed_Data::bps
l_int32 bps
Definition:
imageio.h:193
TIFF_LITTLEEND_ID
Definition:
imageio.h:128
L_Ptra
Definition:
ptra.h:53
L_JP2K_ENCODE
Definition:
imageio.h:162
L_Compressed_Data::datacomp
l_uint8 * datacomp
Definition:
imageio.h:184
L_Pdf_Data::obj3
char * obj3
Definition:
imageio.h:234
TIFF_BIGEND_ID
Definition:
imageio.h:127
L_Pdf_Data::obj5
char * obj5
Definition:
imageio.h:236
L_Pdf_Data::xy
struct Pta * xy
Definition:
imageio.h:239
L_Pdf_Data::n
l_int32 n
Definition:
imageio.h:228
L_Compressed_Data::h
l_int32 h
Definition:
imageio.h:192
L_Compressed_Data::cmapdatahex
char * cmapdatahex
Definition:
imageio.h:189
L_Pdf_Data::obj4
char * obj4
Definition:
imageio.h:235
L_Pdf_Data::poststream
char * poststream
Definition:
imageio.h:237
L_Pdf_Data::wh
struct Pta * wh
Definition:
imageio.h:240
L_Pdf_Data::sacmap
struct Sarray * sacmap
Definition:
imageio.h:243
L_JPEG_ENCODE
Definition:
imageio.h:159
L_NEXT_IMAGE
Definition:
imageio.h:209
L_JPEG_CONTINUE_WITH_BAD_DATA
Definition:
imageio.h:139
L_J2K_CODEC
Definition:
imageio.h:148
L_Pdf_Data::title
char * title
Definition:
imageio.h:227
L_Compressed_Data::minisblack
l_int32 minisblack
Definition:
imageio.h:195
L_Pdf_Data::obj1
char * obj1
Definition:
imageio.h:232
L_Pdf_Data::obj2
char * obj2
Definition:
imageio.h:233
BMP_ID
Definition:
imageio.h:126
L_Compressed_Data
Definition:
imageio.h:181
L_Pdf_Data::objloc
struct L_Dna * objloc
Definition:
imageio.h:245
L_Compressed_Data::spp
l_int32 spp
Definition:
imageio.h:194
L_Compressed_Data::nbytes
size_t nbytes
Definition:
imageio.h:197
L_DEFAULT_ENCODE
Definition:
imageio.h:158
L_Pdf_Data::ncmap
l_int32 ncmap
Definition:
imageio.h:229
Box
Definition:
pix.h:480
L_Pdf_Data::mediabox
struct Box * mediabox
Definition:
imageio.h:241
Pta
Definition:
pix.h:516
L_Compressed_Data::nbytescomp
size_t nbytescomp
Definition:
imageio.h:185
L_FIRST_IMAGE
Definition:
imageio.h:208
L_Compressed_Data::data85
char * data85
Definition:
imageio.h:186
src
imageio.h
Generated by
1.8.15