Leptonica  1.83.1
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 {
140 };
141 
142 
143 /* --------------------------------------------------------------- *
144  * Jp2k codecs *
145  * --------------------------------------------------------------- */
147 enum {
149  L_JP2_CODEC = 2
150 };
151 
152 
153 /* --------------------------------------------------------------- *
154  * Pdf formatted encoding types *
155  * --------------------------------------------------------------- */
157 enum {
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 
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 {
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 
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_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 type
Definition: imageio.h:183
size_t nbytes85
Definition: imageio.h:187
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