Leptonica 1.85.0
Image processing and image analysis suite
Loading...
Searching...
No Matches
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
91enum {
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 * --------------------------------------------------------------- */
125enum {
126 BMP_ID = 0x4d42,
127 TIFF_BIGEND_ID = 0x4d4d,
128 TIFF_LITTLEEND_ID = 0x4949
130
131
132/* --------------------------------------------------------------- *
133 * Hinting bit flags in jpeg reader *
134 * --------------------------------------------------------------- */
136/* The default behavior is now to fail on data corruption. */
137enum {
141
142
143/* --------------------------------------------------------------- *
144 * Jp2k codecs *
145 * --------------------------------------------------------------- */
147enum {
149 L_JP2_CODEC = 2
151
152
153/* --------------------------------------------------------------- *
154 * Pdf formatted encoding types *
155 * --------------------------------------------------------------- */
157enum {
162 L_JP2K_ENCODE = 4
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
182{
183 l_int32 type;
184 l_uint8 *datacomp;
185 size_t nbytescomp;
186 char *data85;
187 size_t nbytes85;
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};
200typedef struct L_Compressed_Data L_COMP_DATA;
201
202
203/* ------------------------------------------------------------------------- *
204 * Pdf multi image flags *
205 * ------------------------------------------------------------------------- */
207enum {
210 L_LAST_IMAGE = 3
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
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;
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};
248typedef struct L_Pdf_Data L_PDF_DATA;
249
250#endif /* LEPTONICA_IMAGEIO_H */
@ L_J2K_CODEC
Definition imageio.h:148
@ L_JP2_CODEC
Definition imageio.h:149
@ L_DEFAULT_ENCODE
Definition imageio.h:158
@ L_FLATE_ENCODE
Definition imageio.h:161
@ L_G4_ENCODE
Definition imageio.h:160
@ L_JP2K_ENCODE
Definition imageio.h:162
@ L_JPEG_ENCODE
Definition imageio.h:159
@ L_FIRST_IMAGE
Definition imageio.h:208
@ L_NEXT_IMAGE
Definition imageio.h:209
@ L_LAST_IMAGE
Definition imageio.h:210
@ TIFF_LITTLEEND_ID
Definition imageio.h:128
@ TIFF_BIGEND_ID
Definition imageio.h:127
@ BMP_ID
Definition imageio.h:126
@ L_JPEG_CONTINUE_WITH_BAD_DATA
Definition imageio.h:139
@ L_JPEG_READ_LUMINANCE
Definition imageio.h:138
l_int32 ncolors
Definition imageio.h:190
l_int32 predictor
Definition imageio.h:196
char * cmapdatahex
Definition imageio.h:189
l_uint8 * datacomp
Definition imageio.h:184
size_t nbytescomp
Definition imageio.h:185
l_int32 minisblack
Definition imageio.h:195
char * cmapdata85
Definition imageio.h:188
l_int32 xrefloc
Definition imageio.h:246
char * poststream
Definition imageio.h:237
struct Sarray * saprex
Definition imageio.h:242
struct L_Ptra * cida
Definition imageio.h:230
struct Pta * xy
Definition imageio.h:239
l_int32 ncmap
Definition imageio.h:229
char * obj2
Definition imageio.h:233
char * trailer
Definition imageio.h:238
char * obj1
Definition imageio.h:232
struct Sarray * sacmap
Definition imageio.h:243
l_int32 n
Definition imageio.h:228
struct L_Dna * objsize
Definition imageio.h:244
struct L_Dna * objloc
Definition imageio.h:245
char * title
Definition imageio.h:227
char * id
Definition imageio.h:231
struct Pta * wh
Definition imageio.h:240
char * obj5
Definition imageio.h:236
char * obj4
Definition imageio.h:235
struct Box * mediabox
Definition imageio.h:241
char * obj3
Definition imageio.h:234
Definition ptra.h:54