media/libpng/pngstruct.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     2 /* pngstruct.h - header file for PNG reference library
     3  *
     4  * Copyright (c) 1998-2013 Glenn Randers-Pehrson
     5  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
     6  * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
     7  *
     8  * Last changed in libpng 1.6.1 [March 28, 2013]
     9  *
    10  * This code is released under the libpng license.
    11  * For conditions of distribution and use, see the disclaimer
    12  * and license in png.h
    13  */
    15 /* The structure that holds the information to read and write PNG files.
    16  * The only people who need to care about what is inside of this are the
    17  * people who will be modifying the library for their own special needs.
    18  * It should NOT be accessed directly by an application.
    19  */
    21 #ifndef PNGSTRUCT_H
    22 #define PNGSTRUCT_H
    23 /* zlib.h defines the structure z_stream, an instance of which is included
    24  * in this structure and is required for decompressing the LZ compressed
    25  * data in PNG files.
    26  */
    27 #ifndef ZLIB_CONST
    28    /* We must ensure that zlib uses 'const' in declarations. */
    29 #  define ZLIB_CONST
    30 #endif
    31 #include "zlib.h"
    32 #ifdef const
    33    /* zlib.h sometimes #defines const to nothing, undo this. */
    34 #  undef const
    35 #endif
    37 /* zlib.h has mediocre z_const use before 1.2.6, this stuff is for compatibility
    38  * with older builds.
    39  */
    40 #if ZLIB_VERNUM < 0x1260
    41 #  define PNGZ_MSG_CAST(s) png_constcast(char*,s)
    42 #  define PNGZ_INPUT_CAST(b) png_constcast(png_bytep,b)
    43 #else
    44 #  define PNGZ_MSG_CAST(s) (s)
    45 #  define PNGZ_INPUT_CAST(b) (b)
    46 #endif
    48 /* zlib.h declares a magic type 'uInt' that limits the amount of data that zlib
    49  * can handle at once.  This type need be no larger than 16 bits (so maximum of
    50  * 65535), this define allows us to discover how big it is, but limited by the
    51  * maximuum for png_size_t.  The value can be overriden in a library build
    52  * (pngusr.h, or set it in CPPFLAGS) and it works to set it to a considerably
    53  * lower value (e.g. 255 works).  A lower value may help memory usage (slightly)
    54  * and may even improve performance on some systems (and degrade it on others.)
    55  */
    56 #ifndef ZLIB_IO_MAX
    57 #  define ZLIB_IO_MAX ((uInt)-1)
    58 #endif
    60 #ifdef PNG_WRITE_SUPPORTED
    61 /* The type of a compression buffer list used by the write code. */
    62 typedef struct png_compression_buffer
    63 {
    64    struct png_compression_buffer *next;
    65    png_byte                       output[1]; /* actually zbuf_size */
    66 } png_compression_buffer, *png_compression_bufferp;
    68 #define PNG_COMPRESSION_BUFFER_SIZE(pp)\
    69    (offsetof(png_compression_buffer, output) + (pp)->zbuffer_size)
    70 #endif
    72 /* Colorspace support; structures used in png_struct, png_info and in internal
    73  * functions to hold and communicate information about the color space.
    74  *
    75  * PNG_COLORSPACE_SUPPORTED is only required if the application will perform
    76  * colorspace corrections, otherwise all the colorspace information can be
    77  * skipped and the size of libpng can be reduced (significantly) by compiling
    78  * out the colorspace support.
    79  */
    80 #ifdef PNG_COLORSPACE_SUPPORTED
    81 /* The chromaticities of the red, green and blue colorants and the chromaticity
    82  * of the corresponding white point (i.e. of rgb(1.0,1.0,1.0)).
    83  */
    84 typedef struct png_xy
    85 {
    86    png_fixed_point redx, redy;
    87    png_fixed_point greenx, greeny;
    88    png_fixed_point bluex, bluey;
    89    png_fixed_point whitex, whitey;
    90 } png_xy;
    92 /* The same data as above but encoded as CIE XYZ values.  When this data comes
    93  * from chromaticities the sum of the Y values is assumed to be 1.0
    94  */
    95 typedef struct png_XYZ
    96 {
    97    png_fixed_point red_X, red_Y, red_Z;
    98    png_fixed_point green_X, green_Y, green_Z;
    99    png_fixed_point blue_X, blue_Y, blue_Z;
   100 } png_XYZ;
   101 #endif /* COLORSPACE */
   103 #if defined(PNG_COLORSPACE_SUPPORTED) || defined(PNG_GAMMA_SUPPORTED)
   104 /* A colorspace is all the above plus, potentially, profile information,
   105  * however at present libpng does not use the profile internally so it is only
   106  * stored in the png_info struct (if iCCP is supported.)  The rendering intent
   107  * is retained here and is checked.
   108  *
   109  * The file gamma encoding information is also stored here and gamma correction
   110  * is done by libpng, whereas color correction must currently be done by the
   111  * application.
   112  */
   113 typedef struct png_colorspace
   114 {
   115 #ifdef PNG_GAMMA_SUPPORTED
   116    png_fixed_point gamma;        /* File gamma */
   117 #endif
   119 #ifdef PNG_COLORSPACE_SUPPORTED
   120    png_xy      end_points_xy;    /* End points as chromaticities */
   121    png_XYZ     end_points_XYZ;   /* End points as CIE XYZ colorant values */
   122    png_uint_16 rendering_intent; /* Rendering intent of a profile */
   123 #endif
   125    /* Flags are always defined to simplify the code. */
   126    png_uint_16 flags;            /* As defined below */
   127 } png_colorspace, * PNG_RESTRICT png_colorspacerp;
   129 typedef const png_colorspace * PNG_RESTRICT png_const_colorspacerp;
   131 /* General flags for the 'flags' field */
   132 #define PNG_COLORSPACE_HAVE_GAMMA           0x0001
   133 #define PNG_COLORSPACE_HAVE_ENDPOINTS       0x0002
   134 #define PNG_COLORSPACE_HAVE_INTENT          0x0004
   135 #define PNG_COLORSPACE_FROM_gAMA            0x0008
   136 #define PNG_COLORSPACE_FROM_cHRM            0x0010
   137 #define PNG_COLORSPACE_FROM_sRGB            0x0020
   138 #define PNG_COLORSPACE_ENDPOINTS_MATCH_sRGB 0x0040
   139 #define PNG_COLORSPACE_MATCHES_sRGB         0x0080 /* exact match on profile */
   140 #define PNG_COLORSPACE_INVALID              0x8000
   141 #define PNG_COLORSPACE_CANCEL(flags)        (0xffff ^ (flags))
   142 #endif /* COLORSPACE || GAMMA */
   144 struct png_struct_def
   145 {
   146 #ifdef PNG_SETJMP_SUPPORTED
   147    jmp_buf jmp_buf_local;     /* New name in 1.6.0 for jmp_buf in png_struct */
   148    png_longjmp_ptr longjmp_fn;/* setjmp non-local goto function. */
   149    jmp_buf *jmp_buf_ptr;      /* passed to longjmp_fn */
   150    size_t jmp_buf_size;       /* size of the above, if allocated */
   151 #endif
   152    png_error_ptr error_fn;    /* function for printing errors and aborting */
   153 #ifdef PNG_WARNINGS_SUPPORTED
   154    png_error_ptr warning_fn;  /* function for printing warnings */
   155 #endif
   156    png_voidp error_ptr;       /* user supplied struct for error functions */
   157    png_rw_ptr write_data_fn;  /* function for writing output data */
   158    png_rw_ptr read_data_fn;   /* function for reading input data */
   159    png_voidp io_ptr;          /* ptr to application struct for I/O functions */
   161 #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
   162    png_user_transform_ptr read_user_transform_fn; /* user read transform */
   163 #endif
   165 #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
   166    png_user_transform_ptr write_user_transform_fn; /* user write transform */
   167 #endif
   169 /* These were added in libpng-1.0.2 */
   170 #ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
   171 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
   172     defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
   173    png_voidp user_transform_ptr; /* user supplied struct for user transform */
   174    png_byte user_transform_depth;    /* bit depth of user transformed pixels */
   175    png_byte user_transform_channels; /* channels in user transformed pixels */
   176 #endif
   177 #endif
   179    png_uint_32 mode;          /* tells us where we are in the PNG file */
   180    png_uint_32 flags;         /* flags indicating various things to libpng */
   181    png_uint_32 transformations; /* which transformations to perform */
   183    png_uint_32 zowner;        /* ID (chunk type) of zstream owner, 0 if none */
   184    z_stream    zstream;       /* decompression structure */
   186 #ifdef PNG_WRITE_SUPPORTED
   187    png_compression_bufferp zbuffer_list; /* Created on demand during write */
   188    uInt                    zbuffer_size; /* size of the actual buffer */
   190    int zlib_level;            /* holds zlib compression level */
   191    int zlib_method;           /* holds zlib compression method */
   192    int zlib_window_bits;      /* holds zlib compression window bits */
   193    int zlib_mem_level;        /* holds zlib compression memory level */
   194    int zlib_strategy;         /* holds zlib compression strategy */
   195 #endif
   196 /* Added at libpng 1.5.4 */
   197 #ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED
   198    int zlib_text_level;            /* holds zlib compression level */
   199    int zlib_text_method;           /* holds zlib compression method */
   200    int zlib_text_window_bits;      /* holds zlib compression window bits */
   201    int zlib_text_mem_level;        /* holds zlib compression memory level */
   202    int zlib_text_strategy;         /* holds zlib compression strategy */
   203 #endif
   204 /* End of material added at libpng 1.5.4 */
   205 /* Added at libpng 1.6.0 */
   206 #ifdef PNG_WRITE_SUPPORTED
   207    int zlib_set_level;        /* Actual values set into the zstream on write */
   208    int zlib_set_method;
   209    int zlib_set_window_bits;
   210    int zlib_set_mem_level;
   211    int zlib_set_strategy;
   212 #endif
   214    png_uint_32 width;         /* width of image in pixels */
   215    png_uint_32 height;        /* height of image in pixels */
   216    png_uint_32 num_rows;      /* number of rows in current pass */
   217    png_uint_32 usr_width;     /* width of row at start of write */
   218    png_size_t rowbytes;       /* size of row in bytes */
   219    png_uint_32 iwidth;        /* width of current interlaced row in pixels */
   220    png_uint_32 row_number;    /* current row in interlace pass */
   221    png_uint_32 chunk_name;    /* PNG_CHUNK() id of current chunk */
   222    png_bytep prev_row;        /* buffer to save previous (unfiltered) row.
   223                                * This is a pointer into big_prev_row
   224                                */
   225    png_bytep row_buf;         /* buffer to save current (unfiltered) row.
   226                                * This is a pointer into big_row_buf
   227                                */
   228 #ifdef PNG_WRITE_SUPPORTED
   229    png_bytep sub_row;         /* buffer to save "sub" row when filtering */
   230    png_bytep up_row;          /* buffer to save "up" row when filtering */
   231    png_bytep avg_row;         /* buffer to save "avg" row when filtering */
   232    png_bytep paeth_row;       /* buffer to save "Paeth" row when filtering */
   233 #endif
   234    png_size_t info_rowbytes;  /* Added in 1.5.4: cache of updated row bytes */
   236    png_uint_32 idat_size;     /* current IDAT size for read */
   237    png_uint_32 crc;           /* current chunk CRC value */
   238    png_colorp palette;        /* palette from the input file */
   239    png_uint_16 num_palette;   /* number of color entries in palette */
   241 /* Added at libpng-1.5.10 */
   242 #ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED
   243    int num_palette_max;       /* maximum palette index found in IDAT */
   244 #endif
   246    png_uint_16 num_trans;     /* number of transparency values */
   247    png_byte compression;      /* file compression type (always 0) */
   248    png_byte filter;           /* file filter type (always 0) */
   249    png_byte interlaced;       /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
   250    png_byte pass;             /* current interlace pass (0 - 6) */
   251    png_byte do_filter;        /* row filter flags (see PNG_FILTER_ below ) */
   252    png_byte color_type;       /* color type of file */
   253    png_byte bit_depth;        /* bit depth of file */
   254    png_byte usr_bit_depth;    /* bit depth of users row: write only */
   255    png_byte pixel_depth;      /* number of bits per pixel */
   256    png_byte channels;         /* number of channels in file */
   257 #ifdef PNG_WRITE_SUPPORTED
   258    png_byte usr_channels;     /* channels at start of write: write only */
   259 #endif
   260    png_byte sig_bytes;        /* magic bytes read/written from start of file */
   261    png_byte maximum_pixel_depth;
   262                               /* pixel depth used for the row buffers */
   263    png_byte transformed_pixel_depth;
   264                               /* pixel depth after read/write transforms */
   265 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
   266    png_uint_16 filler;           /* filler bytes for pixel expansion */
   267 #endif
   269 #if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) ||\
   270    defined(PNG_READ_ALPHA_MODE_SUPPORTED)
   271    png_byte background_gamma_type;
   272    png_fixed_point background_gamma;
   273    png_color_16 background;   /* background color in screen gamma space */
   274 #ifdef PNG_READ_GAMMA_SUPPORTED
   275    png_color_16 background_1; /* background normalized to gamma 1.0 */
   276 #endif
   277 #endif /* PNG_bKGD_SUPPORTED */
   279 #ifdef PNG_WRITE_FLUSH_SUPPORTED
   280    png_flush_ptr output_flush_fn; /* Function for flushing output */
   281    png_uint_32 flush_dist;    /* how many rows apart to flush, 0 - no flush */
   282    png_uint_32 flush_rows;    /* number of rows written since last flush */
   283 #endif
   285 #ifdef PNG_READ_GAMMA_SUPPORTED
   286    int gamma_shift;      /* number of "insignificant" bits in 16-bit gamma */
   287    png_fixed_point screen_gamma; /* screen gamma value (display_exponent) */
   289    png_bytep gamma_table;     /* gamma table for 8-bit depth files */
   290    png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */
   291 #if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
   292    defined(PNG_READ_ALPHA_MODE_SUPPORTED) || \
   293    defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
   294    png_bytep gamma_from_1;    /* converts from 1.0 to screen */
   295    png_bytep gamma_to_1;      /* converts from file to 1.0 */
   296    png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */
   297    png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */
   298 #endif /* READ_BACKGROUND || READ_ALPHA_MODE || RGB_TO_GRAY */
   299 #endif
   301 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED)
   302    png_color_8 sig_bit;       /* significant bits in each available channel */
   303 #endif
   305 #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
   306    png_color_8 shift;         /* shift for significant bit tranformation */
   307 #endif
   309 #if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
   310  || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
   311    png_bytep trans_alpha;           /* alpha values for paletted files */
   312    png_color_16 trans_color;  /* transparent color for non-paletted files */
   313 #endif
   315    png_read_status_ptr read_row_fn;   /* called after each row is decoded */
   316    png_write_status_ptr write_row_fn; /* called after each row is encoded */
   317 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
   318    png_progressive_info_ptr info_fn; /* called after header data fully read */
   319    png_progressive_row_ptr row_fn;   /* called after a prog. row is decoded */
   320    png_progressive_end_ptr end_fn;   /* called after image is complete */
   321    png_bytep save_buffer_ptr;        /* current location in save_buffer */
   322    png_bytep save_buffer;            /* buffer for previously read data */
   323    png_bytep current_buffer_ptr;     /* current location in current_buffer */
   324    png_bytep current_buffer;         /* buffer for recently used data */
   325    png_uint_32 push_length;          /* size of current input chunk */
   326    png_uint_32 skip_length;          /* bytes to skip in input data */
   327    png_size_t save_buffer_size;      /* amount of data now in save_buffer */
   328    png_size_t save_buffer_max;       /* total size of save_buffer */
   329    png_size_t buffer_size;           /* total amount of available input data */
   330    png_size_t current_buffer_size;   /* amount of data now in current_buffer */
   331    int process_mode;                 /* what push library is currently doing */
   332    int cur_palette;                  /* current push library palette index */
   334 #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
   336 #if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
   337 /* For the Borland special 64K segment handler */
   338    png_bytepp offset_table_ptr;
   339    png_bytep offset_table;
   340    png_uint_16 offset_table_number;
   341    png_uint_16 offset_table_count;
   342    png_uint_16 offset_table_count_free;
   343 #endif
   345 #ifdef PNG_READ_QUANTIZE_SUPPORTED
   346    png_bytep palette_lookup; /* lookup table for quantizing */
   347    png_bytep quantize_index; /* index translation for palette files */
   348 #endif
   350 #ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
   351    png_byte heuristic_method;        /* heuristic for row filter selection */
   352    png_byte num_prev_filters;        /* number of weights for previous rows */
   353    png_bytep prev_filters;           /* filter type(s) of previous row(s) */
   354    png_uint_16p filter_weights;      /* weight(s) for previous line(s) */
   355    png_uint_16p inv_filter_weights;  /* 1/weight(s) for previous line(s) */
   356    png_uint_16p filter_costs;        /* relative filter calculation cost */
   357    png_uint_16p inv_filter_costs;    /* 1/relative filter calculation cost */
   358 #endif
   360    /* Options */
   361 #ifdef PNG_SET_OPTION_SUPPORTED
   362    png_byte options;           /* On/off state (up to 4 options) */
   363 #endif
   365 #if PNG_LIBPNG_VER < 10700
   366 /* To do: remove this from libpng-1.7 */
   367 #ifdef PNG_TIME_RFC1123_SUPPORTED
   368    char time_buffer[29]; /* String to hold RFC 1123 time text */
   369 #endif
   370 #endif
   372 /* New members added in libpng-1.0.6 */
   374    png_uint_32 free_me;    /* flags items libpng is responsible for freeing */
   376 #ifdef PNG_USER_CHUNKS_SUPPORTED
   377    png_voidp user_chunk_ptr;
   378 #ifdef PNG_READ_USER_CHUNKS_SUPPORTED
   379    png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */
   380 #endif
   381 #endif
   383 #ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED
   384    int          unknown_default; /* As PNG_HANDLE_* */
   385    unsigned int num_chunk_list;  /* Number of entries in the list */
   386    png_bytep    chunk_list;      /* List of png_byte[5]; the textual chunk name
   387                                   * followed by a PNG_HANDLE_* byte */
   388 #endif
   390 /* New members added in libpng-1.0.3 */
   391 #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
   392    png_byte rgb_to_gray_status;
   393    /* Added in libpng 1.5.5 to record setting of coefficients: */
   394    png_byte rgb_to_gray_coefficients_set;
   395    /* These were changed from png_byte in libpng-1.0.6 */
   396    png_uint_16 rgb_to_gray_red_coeff;
   397    png_uint_16 rgb_to_gray_green_coeff;
   398    /* deleted in 1.5.5: rgb_to_gray_blue_coeff; */
   399 #endif
   401 /* New member added in libpng-1.0.4 (renamed in 1.0.9) */
   402 #if defined(PNG_MNG_FEATURES_SUPPORTED)
   403 /* Changed from png_byte to png_uint_32 at version 1.2.0 */
   404    png_uint_32 mng_features_permitted;
   405 #endif
   407 /* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */
   408 #ifdef PNG_MNG_FEATURES_SUPPORTED
   409    png_byte filter_type;
   410 #endif
   412 #ifdef PNG_APNG_SUPPORTED
   413    png_uint_32 apng_flags;
   414    png_uint_32 next_seq_num;         /* next fcTL/fdAT chunk sequence number */
   415    png_uint_32 first_frame_width;
   416    png_uint_32 first_frame_height;
   418 #ifdef PNG_READ_APNG_SUPPORTED
   419    png_uint_32 num_frames_read;      /* incremented after all image data of */
   420                                      /* a frame is read */
   421 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
   422    png_progressive_frame_ptr frame_info_fn; /* frame info read callback */
   423    png_progressive_frame_ptr frame_end_fn;  /* frame data read callback */
   424 #endif
   425 #endif
   427 #ifdef PNG_WRITE_APNG_SUPPORTED
   428    png_uint_32 num_frames_to_write;
   429    png_uint_32 num_frames_written;
   430 #endif
   431 #endif /* PNG_APNG_SUPPORTED */
   433 /* New members added in libpng-1.2.0 */
   435 /* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
   436 #ifdef PNG_USER_MEM_SUPPORTED
   437    png_voidp mem_ptr;             /* user supplied struct for mem functions */
   438    png_malloc_ptr malloc_fn;      /* function for allocating memory */
   439    png_free_ptr free_fn;          /* function for freeing memory */
   440 #endif
   442 /* New member added in libpng-1.0.13 and 1.2.0 */
   443    png_bytep big_row_buf;         /* buffer to save current (unfiltered) row */
   445 #ifdef PNG_READ_QUANTIZE_SUPPORTED
   446 /* The following three members were added at version 1.0.14 and 1.2.4 */
   447    png_bytep quantize_sort;          /* working sort array */
   448    png_bytep index_to_palette;       /* where the original index currently is
   449                                         in the palette */
   450    png_bytep palette_to_index;       /* which original index points to this
   451                                          palette color */
   452 #endif
   454 /* New members added in libpng-1.0.16 and 1.2.6 */
   455    png_byte compression_type;
   457 #ifdef PNG_USER_LIMITS_SUPPORTED
   458    png_uint_32 user_width_max;
   459    png_uint_32 user_height_max;
   461    /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown
   462     * chunks that can be stored (0 means unlimited).
   463     */
   464    png_uint_32 user_chunk_cache_max;
   466    /* Total memory that a zTXt, sPLT, iTXt, iCCP, or unknown chunk
   467     * can occupy when decompressed.  0 means unlimited.
   468     */
   469    png_alloc_size_t user_chunk_malloc_max;
   470 #endif
   472 /* New member added in libpng-1.0.25 and 1.2.17 */
   473 #ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
   474    /* Temporary storage for unknown chunk that the library doesn't recognize,
   475     * used while reading the chunk.
   476     */
   477    png_unknown_chunk unknown_chunk;
   478 #endif
   480 /* New member added in libpng-1.2.26 */
   481   png_size_t old_big_row_buf_size;
   483 #ifdef PNG_READ_SUPPORTED
   484 /* New member added in libpng-1.2.30 */
   485   png_bytep        read_buffer;      /* buffer for reading chunk data */
   486   png_alloc_size_t read_buffer_size; /* current size of the buffer */
   487 #endif
   488 #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
   489   uInt             IDAT_read_size;   /* limit on read buffer size for IDAT */
   490 #endif
   492 #ifdef PNG_IO_STATE_SUPPORTED
   493 /* New member added in libpng-1.4.0 */
   494    png_uint_32 io_state;
   495 #endif
   497 /* New member added in libpng-1.5.6 */
   498    png_bytep big_prev_row;
   500 /* New member added in libpng-1.5.7 */
   501    void (*read_filter[PNG_FILTER_VALUE_LAST-1])(png_row_infop row_info,
   502       png_bytep row, png_const_bytep prev_row);
   504 #ifdef PNG_READ_SUPPORTED
   505 #if defined(PNG_COLORSPACE_SUPPORTED) || defined(PNG_GAMMA_SUPPORTED)
   506    png_colorspace   colorspace;
   507 #endif
   508 #endif
   509 };
   510 #endif /* PNGSTRUCT_H */

mercurial