12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 */
24
25 /* pngstruct.h - header file for PNG reference library
26 *
27 * This file is available under and governed by the GNU General Public
28 * License version 2 only, as published by the Free Software Foundation.
29 * However, the following notice accompanied the original version of this
30 * file and, per its terms, should not be removed:
31 *
32 * Last changed in libpng 1.6.18 [July 23, 2015]
33 * Copyright (c) 1998-2002,2004,2006-2015 Glenn Randers-Pehrson
34 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
35 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
36 *
37 * This code is released under the libpng license.
38 * For conditions of distribution and use, see the disclaimer
39 * and license in png.h
40 */
41
42 /* The structure that holds the information to read and write PNG files.
43 * The only people who need to care about what is inside of this are the
44 * people who will be modifying the library for their own special needs.
45 * It should NOT be accessed directly by an application.
46 */
47
48 #ifndef PNGSTRUCT_H
49 #define PNGSTRUCT_H
50 /* zlib.h defines the structure z_stream, an instance of which is included
51 * in this structure and is required for decompressing the LZ compressed
52 * data in PNG files.
53 */
260 png_bytep try_row; /* buffer to save trial row when filtering */
261 png_bytep tst_row; /* buffer to save best trial row when filtering */
262 #endif
263 png_size_t info_rowbytes; /* Added in 1.5.4: cache of updated row bytes */
264
265 png_uint_32 idat_size; /* current IDAT size for read */
266 png_uint_32 crc; /* current chunk CRC value */
267 png_colorp palette; /* palette from the input file */
268 png_uint_16 num_palette; /* number of color entries in palette */
269
270 /* Added at libpng-1.5.10 */
271 #ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED
272 int num_palette_max; /* maximum palette index found in IDAT */
273 #endif
274
275 png_uint_16 num_trans; /* number of transparency values */
276 png_byte compression; /* file compression type (always 0) */
277 png_byte filter; /* file filter type (always 0) */
278 png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
279 png_byte pass; /* current interlace pass (0 - 6) */
280 png_byte do_filter; /* row filter flags (see PNG_FILTER_ below ) */
281 png_byte color_type; /* color type of file */
282 png_byte bit_depth; /* bit depth of file */
283 png_byte usr_bit_depth; /* bit depth of users row: write only */
284 png_byte pixel_depth; /* number of bits per pixel */
285 png_byte channels; /* number of channels in file */
286 #ifdef PNG_WRITE_SUPPORTED
287 png_byte usr_channels; /* channels at start of write: write only */
288 #endif
289 png_byte sig_bytes; /* magic bytes read/written from start of file */
290 png_byte maximum_pixel_depth;
291 /* pixel depth used for the row buffers */
292 png_byte transformed_pixel_depth;
293 /* pixel depth after read/write transforms */
294 #if PNG_ZLIB_VERNUM >= 0x1240
295 png_byte zstream_start; /* at start of an input zlib stream */
296 #endif /* Zlib >= 1.2.4 */
297 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
298 png_uint_16 filler; /* filler bytes for pixel expansion */
299 #endif
300
301 #if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) ||\
302 defined(PNG_READ_ALPHA_MODE_SUPPORTED)
303 png_byte background_gamma_type;
304 png_fixed_point background_gamma;
305 png_color_16 background; /* background color in screen gamma space */
306 #ifdef PNG_READ_GAMMA_SUPPORTED
307 png_color_16 background_1; /* background normalized to gamma 1.0 */
308 #endif
309 #endif /* bKGD */
310
311 #ifdef PNG_WRITE_FLUSH_SUPPORTED
312 png_flush_ptr output_flush_fn; /* Function for flushing output */
313 png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */
314 png_uint_32 flush_rows; /* number of rows written since last flush */
364 int cur_palette; /* current push library palette index */
365
366 #endif /* PROGRESSIVE_READ */
367
368 #if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
369 /* For the Borland special 64K segment handler */
370 png_bytepp offset_table_ptr;
371 png_bytep offset_table;
372 png_uint_16 offset_table_number;
373 png_uint_16 offset_table_count;
374 png_uint_16 offset_table_count_free;
375 #endif
376
377 #ifdef PNG_READ_QUANTIZE_SUPPORTED
378 png_bytep palette_lookup; /* lookup table for quantizing */
379 png_bytep quantize_index; /* index translation for palette files */
380 #endif
381
382 /* Options */
383 #ifdef PNG_SET_OPTION_SUPPORTED
384 png_byte options; /* On/off state (up to 4 options) */
385 #endif
386
387 #if PNG_LIBPNG_VER < 10700
388 /* To do: remove this from libpng-1.7 */
389 #ifdef PNG_TIME_RFC1123_SUPPORTED
390 char time_buffer[29]; /* String to hold RFC 1123 time text */
391 #endif
392 #endif
393
394 /* New members added in libpng-1.0.6 */
395
396 png_uint_32 free_me; /* flags items libpng is responsible for freeing */
397
398 #ifdef PNG_USER_CHUNKS_SUPPORTED
399 png_voidp user_chunk_ptr;
400 #ifdef PNG_READ_USER_CHUNKS_SUPPORTED
401 png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */
402 #endif
403 #endif
404
|
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 */
24
25 /* pngstruct.h - header file for PNG reference library
26 *
27 * This file is available under and governed by the GNU General Public
28 * License version 2 only, as published by the Free Software Foundation.
29 * However, the following notice accompanied the original version of this
30 * file and, per its terms, should not be removed:
31 *
32 * Last changed in libpng 1.6.28 [January 5, 2017]
33 * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
34 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
35 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
36 *
37 * This code is released under the libpng license.
38 * For conditions of distribution and use, see the disclaimer
39 * and license in png.h
40 */
41
42 /* The structure that holds the information to read and write PNG files.
43 * The only people who need to care about what is inside of this are the
44 * people who will be modifying the library for their own special needs.
45 * It should NOT be accessed directly by an application.
46 */
47
48 #ifndef PNGSTRUCT_H
49 #define PNGSTRUCT_H
50 /* zlib.h defines the structure z_stream, an instance of which is included
51 * in this structure and is required for decompressing the LZ compressed
52 * data in PNG files.
53 */
260 png_bytep try_row; /* buffer to save trial row when filtering */
261 png_bytep tst_row; /* buffer to save best trial row when filtering */
262 #endif
263 png_size_t info_rowbytes; /* Added in 1.5.4: cache of updated row bytes */
264
265 png_uint_32 idat_size; /* current IDAT size for read */
266 png_uint_32 crc; /* current chunk CRC value */
267 png_colorp palette; /* palette from the input file */
268 png_uint_16 num_palette; /* number of color entries in palette */
269
270 /* Added at libpng-1.5.10 */
271 #ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED
272 int num_palette_max; /* maximum palette index found in IDAT */
273 #endif
274
275 png_uint_16 num_trans; /* number of transparency values */
276 png_byte compression; /* file compression type (always 0) */
277 png_byte filter; /* file filter type (always 0) */
278 png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
279 png_byte pass; /* current interlace pass (0 - 6) */
280 png_byte do_filter; /* row filter flags (see PNG_FILTER_ in png.h ) */
281 png_byte color_type; /* color type of file */
282 png_byte bit_depth; /* bit depth of file */
283 png_byte usr_bit_depth; /* bit depth of users row: write only */
284 png_byte pixel_depth; /* number of bits per pixel */
285 png_byte channels; /* number of channels in file */
286 #ifdef PNG_WRITE_SUPPORTED
287 png_byte usr_channels; /* channels at start of write: write only */
288 #endif
289 png_byte sig_bytes; /* magic bytes read/written from start of file */
290 png_byte maximum_pixel_depth;
291 /* pixel depth used for the row buffers */
292 png_byte transformed_pixel_depth;
293 /* pixel depth after read/write transforms */
294 #if ZLIB_VERNUM >= 0x1240
295 png_byte zstream_start; /* at start of an input zlib stream */
296 #endif /* Zlib >= 1.2.4 */
297 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
298 png_uint_16 filler; /* filler bytes for pixel expansion */
299 #endif
300
301 #if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) ||\
302 defined(PNG_READ_ALPHA_MODE_SUPPORTED)
303 png_byte background_gamma_type;
304 png_fixed_point background_gamma;
305 png_color_16 background; /* background color in screen gamma space */
306 #ifdef PNG_READ_GAMMA_SUPPORTED
307 png_color_16 background_1; /* background normalized to gamma 1.0 */
308 #endif
309 #endif /* bKGD */
310
311 #ifdef PNG_WRITE_FLUSH_SUPPORTED
312 png_flush_ptr output_flush_fn; /* Function for flushing output */
313 png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */
314 png_uint_32 flush_rows; /* number of rows written since last flush */
364 int cur_palette; /* current push library palette index */
365
366 #endif /* PROGRESSIVE_READ */
367
368 #if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
369 /* For the Borland special 64K segment handler */
370 png_bytepp offset_table_ptr;
371 png_bytep offset_table;
372 png_uint_16 offset_table_number;
373 png_uint_16 offset_table_count;
374 png_uint_16 offset_table_count_free;
375 #endif
376
377 #ifdef PNG_READ_QUANTIZE_SUPPORTED
378 png_bytep palette_lookup; /* lookup table for quantizing */
379 png_bytep quantize_index; /* index translation for palette files */
380 #endif
381
382 /* Options */
383 #ifdef PNG_SET_OPTION_SUPPORTED
384 png_uint_32 options; /* On/off state (up to 16 options) */
385 #endif
386
387 #if PNG_LIBPNG_VER < 10700
388 /* To do: remove this from libpng-1.7 */
389 #ifdef PNG_TIME_RFC1123_SUPPORTED
390 char time_buffer[29]; /* String to hold RFC 1123 time text */
391 #endif
392 #endif
393
394 /* New members added in libpng-1.0.6 */
395
396 png_uint_32 free_me; /* flags items libpng is responsible for freeing */
397
398 #ifdef PNG_USER_CHUNKS_SUPPORTED
399 png_voidp user_chunk_ptr;
400 #ifdef PNG_READ_USER_CHUNKS_SUPPORTED
401 png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */
402 #endif
403 #endif
404
|