Changeset 43 for vendor/libpng/libpng.3

Show
Ignore:
Timestamp:
02/15/10 11:37:15 (2 years ago)
Author:
Carsten
Message:

Upgraded vendor/libpng from 1.2.40 to 1.2.42.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • vendor/libpng/libpng.3

    r11 r43  
    1 .TH LIBPNG 3 "September 10, 2009" 
     1.TH LIBPNG 3 "January 3, 2010" 
    22.SH NAME 
    3 libpng \- Portable Network Graphics (PNG) Reference Library 1.2.40 
     3libpng \- Portable Network Graphics (PNG) Reference Library 1.2.42 
    44.SH SYNOPSIS 
    55\fI\fB 
     
    822822libpng.txt - A description on how to use and modify libpng 
    823823 
    824  libpng version 1.2.40 - September 10, 2009 
     824 libpng version 1.2.42 - January 3, 2010 
    825825 Updated and distributed by Glenn Randers-Pehrson 
    826826 <glennrp at users.sourceforge.net> 
     
    833833 Based on: 
    834834 
    835  libpng versions 0.97, January 1998, through 1.2.40 - September 10, 2009 
     835 libpng versions 0.97, January 1998, through 1.2.42 - January 3, 2010 
    836836 Updated and distributed by Glenn Randers-Pehrson 
    837837 Copyright (c) 1998-2009 Glenn Randers-Pehrson 
     
    862862 
    863863For examples of libpng usage, see the files "example.c", "pngtest.c", 
    864 and the files in the "contrib" directory, all of which are included in the 
    865 libpng distribution. 
     864and the files in the "contrib" directory, all of which are included in 
     865the libpng distribution. 
    866866 
    867867Libpng was written as a companion to the PNG specification, as a way 
     
    12311231   width_max = png_get_user_width_max(png_ptr); 
    12321232   height_max = png_get_user_height_max(png_ptr); 
     1233 
     1234The PNG specification sets no limit on the number of ancillary chunks 
     1235allowed in a PNG datastream.  You can impose a limit on the total number 
     1236of sPLT, tEXt, iTXt, zTXt, and unknown chunks that will be stored, with 
     1237 
     1238   png_set_chunk_cache_max(png_ptr, user_chunk_cache_max); 
     1239 
     1240where 0x7fffffffL means unlimited.  You can retrieve this limit with 
     1241 
     1242   chunk_cache_max = png_get_chunk_cache_max(png_ptr); 
     1243 
     1244This limit also applies to the number of buffers that can be allocated 
     1245by png_decompress_chunk() while decompressing iTXt, zTXt, and iCCP chunks. 
    12331246 
    12341247.SS The high-level read interface 
     
    12591272                                to transparency 
    12601273    PNG_TRANSFORM_SWAP_ENDIAN   Byte-swap 16-bit samples 
     1274    PNG_TRANSFORM_GRAY_TO_RGB   Expand grayscale samples 
     1275                                to RGB (or GA to RGBA) 
    12611276 
    12621277(This excludes setting a background color, doing gamma transformation, 
     
    12651280    png_read_png(png_ptr, info_ptr, png_transforms, NULL) 
    12661281 
    1267 where png_transforms is an integer containing the bitwise OR of 
    1268 some set of transformation flags.  This call is equivalent to png_read_info(), 
     1282where png_transforms is an integer containing the bitwise OR of some 
     1283set of transformation flags.  This call is equivalent to png_read_info(), 
    12691284followed the set of transformations indicated by the transform mask, 
    12701285then png_read_image(), and finally png_read_end(). 
     
    13671382    interlace_type - (PNG_INTERLACE_NONE or 
    13681383                     PNG_INTERLACE_ADAM7) 
    1369     Any or all of interlace_type, compression_type, of 
     1384 
     1385    Any or all of interlace_type, compression_type, or 
    13701386    filter_method can be NULL if you are 
    13711387    not interested in their values. 
    13721388 
    1373     channels = png_get_channels(png_ptr, info_ptr); 
    1374     channels       - number of channels of info for the 
    1375                      color type (valid values are 1 (GRAY, 
    1376                      PALETTE), 2 (GRAY_ALPHA), 3 (RGB), 
    1377                      4 (RGB_ALPHA or RGB + filler byte)) 
    1378     rowbytes = png_get_rowbytes(png_ptr, info_ptr); 
    1379     rowbytes       - number of bytes needed to hold a row 
    1380  
    1381     signature = png_get_signature(png_ptr, info_ptr); 
    1382     signature      - holds the signature read from the 
    1383                      file (if any).  The data is kept in 
    1384                      the same offset it would be if the 
    1385                      whole signature were read (i.e. if an 
    1386                      application had already read in 4 
    1387                      bytes of signature before starting 
    1388                      libpng, the remaining 4 bytes would 
    1389                      be in signature[4] through signature[7] 
    1390                      (see png_set_sig_bytes())). 
    1391  
     1389    Note that png_get_IHDR() returns 32-bit data into 
     1390    the application's width and height variables. 
     1391    This is an unsafe situation if these are 16-bit 
     1392    variables.  In such situations, the 
     1393    png_get_image_width() and png_get_image_height() 
     1394    functions described below are safer. 
    13921395 
    13931396    width            = png_get_image_width(png_ptr, 
     
    14061409                         info_ptr); 
    14071410 
     1411    channels = png_get_channels(png_ptr, info_ptr); 
     1412    channels       - number of channels of info for the 
     1413                     color type (valid values are 1 (GRAY, 
     1414                     PALETTE), 2 (GRAY_ALPHA), 3 (RGB), 
     1415                     4 (RGB_ALPHA or RGB + filler byte)) 
     1416    rowbytes = png_get_rowbytes(png_ptr, info_ptr); 
     1417    rowbytes       - number of bytes needed to hold a row 
     1418 
     1419    signature = png_get_signature(png_ptr, info_ptr); 
     1420    signature      - holds the signature read from the 
     1421                     file (if any).  The data is kept in 
     1422                     the same offset it would be if the 
     1423                     whole signature were read (i.e. if an 
     1424                     application had already read in 4 
     1425                     bytes of signature before starting 
     1426                     libpng, the remaining 4 bytes would 
     1427                     be in signature[4] through signature[7] 
     1428                     (see png_set_sig_bytes())). 
    14081429 
    14091430These are also important, but their validity depends on whether the chunk 
     
    14111432png_get_<chunk>(png_ptr, info_ptr, ...) functions return non-zero if the 
    14121433data has been read, or zero if it is missing.  The parameters to the 
    1413 png_get_<chunk> are set directly if they are simple data types, or a pointer 
    1414 into the info_ptr is returned for any complex types. 
     1434png_get_<chunk> are set directly if they are simple data types, or a 
     1435pointer into the info_ptr is returned for any complex types. 
    14151436 
    14161437    png_get_PLTE(png_ptr, info_ptr, &palette, 
     
    14521473    png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, 
    14531474                     &trans_values); 
    1454     trans          - array of transparent entries for 
    1455                      palette (PNG_INFO_tRNS) 
     1475    trans          - array of transparent 
     1476                     entries for palette (PNG_INFO_tRNS) 
    14561477    trans_values   - graylevel or color sample values of 
    14571478                     the single transparent color for 
     
    14961517    text_ptr[i].lang_key  - keyword in UTF-8 
    14971518                         (empty string for unknown). 
     1519    Note that the itxt_length, lang, and lang_key 
     1520    members of the text_ptr structure only exist 
     1521    when the library is built with iTXt chunk support. 
     1522 
    14981523    num_text       - number of comments (same as 
    14991524                     num_comments; you can put NULL here 
     
    16751700added.  It expands the sample depth without changing tRNS to alpha. 
    16761701 
     1702As of libpng version 1.2.42, not all possible expansions are supported. 
     1703 
     1704In the following table, the 01 means grayscale with depth<8, 31 means 
     1705indexed with depth<8, other numerals represent the color type, "T" means 
     1706the tRNS chunk is present, A means an alpha channel is present, and O 
     1707means tRNS or alpha is present but all pixels in the image are opaque. 
     1708 
     1709  FROM  01  31   0  0T  0O   2  2T  2O   3  3T  3O  4A  4O  6A  6O  
     1710   TO 
     1711   01    -                    
     1712   31        - 
     1713    0    1       -            
     1714   0T                - 
     1715   0O                    - 
     1716    2           GX           - 
     1717   2T                            - 
     1718   2O                                - 
     1719    3        1                           - 
     1720   3T                                        - 
     1721   3O                                            - 
     1722   4A                T                               - 
     1723   4O                                                    - 
     1724   6A               GX         TX           TX               - 
     1725   6O                   GX                      TX               - 
     1726 
     1727Within the matrix, 
     1728     "-" means the transformation is not supported. 
     1729     "X" means the transformation is obtained by png_set_expand(). 
     1730     "1" means the transformation is obtained by 
     1731         png_set_expand_gray_1_2_4_to_8 
     1732     "G" means the transformation is obtained by 
     1733         png_set_gray_to_rgb(). 
     1734     "P" means the transformation is obtained by 
     1735         png_set_expand_palette_to_rgb(). 
     1736     "T" means the transformation is obtained by 
     1737         png_set_tRNS_to_alpha(). 
     1738 
    16771739PNG can have files with 16 bits per channel.  If you only can handle 
    167817408 bits per channel, this will strip the pixels down to 8 bit. 
     
    16981760    png_set_invert_alpha(png_ptr); 
    16991761 
     1762The PNG format only supports pixels with postmultiplied alpha. 
     1763If you want to replace the pixels, after reading them, with pixels 
     1764that have premultiplied color samples, you can do this with 
     1765 
     1766    png_set_premultiply_alpha(png_ptr); 
     1767 
     1768If you do this, any input with a tRNS chunk will be expanded to 
     1769have an alpha channel. 
     1770 
    17001771PNG files pack pixels of bit depths 1, 2, and 4 into bytes as small as 
    17011772they can, resulting in, for example, 8 pixels per byte for 1 bit 
     
    17081779PNG files have possible bit depths of 1, 2, 4, 8, and 16.  All pixels 
    17091780stored in a PNG image have been "scaled" or "shifted" up to the next 
    1710 higher possible bit depth (e.g. from 5 bits/sample in the range [0,31] to 
    1711 8 bits/sample in the range [0, 255]).  However, it is also possible to 
    1712 convert the PNG pixel data back to the original bit depth of the image. 
    1713 This call reduces the pixels back down to the original bit depth: 
     1781higher possible bit depth (e.g. from 5 bits/sample in the range [0,31] 
     1782to 8 bits/sample in the range [0, 255]).  However, it is also possible 
     1783to convert the PNG pixel data back to the original bit depth of the 
     1784image.  This call reduces the pixels back down to the original bit depth: 
    17141785 
    17151786    png_color_8p sig_bit; 
     
    21582229This function may be safely called when the relevant storage has 
    21592230already been freed, or has not yet been allocated, or was allocated 
    2160 by the user and not by libpng,  and will in those 
    2161 cases do nothing.  The "seq" parameter is ignored if only one item 
    2162 of the selected data type, such as PLTE, is allowed.  If "seq" is not 
    2163 -1, and multiple items are allowed for the data type identified in 
    2164 the mask, such as text or sPLT, only the n'th item in the structure 
    2165 is freed, where n is "seq". 
     2231by the user and not by libpng,  and will in those cases do nothing. 
     2232The "seq" parameter is ignored if only one item of the selected data 
     2233type, such as PLTE, is allowed.  If "seq" is not -1, and multiple items 
     2234are allowed for the data type identified in the mask, such as text or 
     2235sPLT, only the n'th item in the structure is freed, where n is "seq". 
    21662236 
    21672237The default behavior is only to free data that was allocated internally 
     
    22022272 
    22032273The png_free_data() function will turn off the "valid" flag for anything 
    2204 it frees.  If you need to turn the flag off for a chunk that was freed by your 
    2205 application instead of by libpng, you can use 
     2274it frees.  If you need to turn the flag off for a chunk that was freed by 
     2275your application instead of by libpng, you can use 
    22062276 
    22072277    png_set_invalid(png_ptr, info_ptr, mask); 
     
    25132583a PNG datastream that is to be embedded in a MNG datastream).  The third 
    25142584parameter is a flag that indicates which filter type(s) are to be tested 
    2515 for each scanline.  See the PNG specification for details on the specific filter 
    2516 types. 
     2585for each scanline.  See the PNG specification for details on the specific 
     2586filter types. 
    25172587 
    25182588 
     
    26822752    png_set_tRNS(png_ptr, info_ptr, trans, num_trans, 
    26832753       trans_values); 
    2684     trans          - array of transparent entries for 
    2685                      palette (PNG_INFO_tRNS) 
     2754    trans          - array of transparent 
     2755                     entries for palette (PNG_INFO_tRNS) 
    26862756    trans_values   - graylevel or color sample values 
    26872757                     (in order red, green, blue) of the 
     
    27232793    text_ptr[i].translated_keyword  - keyword in UTF-8 (NULL 
    27242794                         or empty for unknown). 
     2795    Note that the itxt_length, lang, and lang_key 
     2796    members of the text_ptr structure only exist 
     2797    when the library is built with iTXt chunk support. 
     2798 
    27252799    num_text       - number of comments 
    27262800 
     
    29283002Note that there is one transformation you may need to do before 
    29293003png_write_info().  In PNG files, the alpha channel in an image is the 
    2930 level of opacity.  If your data is supplied as a level of 
    2931 transparency, you can invert the alpha channel before you write it, so 
    2932 that 0 is fully transparent and 255 (in 8-bit or paletted images) or 
    2933 65535 (in 16-bit images) is fully opaque, with 
     3004level of opacity.  If your data is supplied as a level of transparency, 
     3005you can invert the alpha channel before you write it, so that 0 is 
     3006fully transparent and 255 (in 8-bit or paletted images) or 65535 
     3007(in 16-bit images) is fully opaque, with 
    29343008 
    29353009    png_set_invert_alpha(png_ptr); 
     
    31183192    png_write_row(png_ptr, row_pointer); 
    31193193 
    3120 When the file is interlaced, things can get a good deal more 
    3121 complicated.  The only currently (as of the PNG Specification 
    3122 version 1.2, dated July 1999) defined interlacing scheme for PNG files 
    3123 is the "Adam7" interlace scheme, that breaks down an 
    3124 image into seven smaller images of varying size.  libpng will build 
    3125 these images for you, or you can do them yourself.  If you want to 
    3126 build them yourself, see the PNG specification for details of which 
    3127 pixels to write when. 
     3194When the file is interlaced, things can get a good deal more complicated. 
     3195The only currently (as of the PNG Specification version 1.2, dated July 
     31961999) defined interlacing scheme for PNG files is the "Adam7" interlace 
     3197scheme, that breaks down an image into seven smaller images of varying 
     3198size.  libpng will build these images for you, or you can do them 
     3199yourself.  If you want to build them yourself, see the PNG specification 
     3200for details of which pixels to write when. 
    31283201 
    31293202If you don't want libpng to handle the interlacing details, just 
     
    31373210       png_set_interlace_handling(png_ptr); 
    31383211 
    3139 This will return the number of passes needed.  Currently, this 
    3140 is seven, but may change if another interlace type is added. 
     3212This will return the number of passes needed.  Currently, this is seven, 
     3213but may change if another interlace type is added. 
    31413214 
    31423215Then write the complete image number_of_passes times. 
     
    31453218       number_of_rows); 
    31463219 
    3147 As some of these rows are not used, and thus return immediately, 
    3148 you may want to read about interlacing in the PNG specification, 
    3149 and only update the rows that are actually used. 
     3220As some of these rows are not used, and thus return immediately, you may 
     3221want to read about interlacing in the PNG specification, and only update 
     3222the rows that are actually used. 
    31503223 
    31513224.SS Finishing a sequential write 
     
    31803253This function may be safely called when the relevant storage has 
    31813254already been freed, or has not yet been allocated, or was allocated 
    3182 by the user  and not by libpng,  and will in those 
    3183 cases do nothing.  The "seq" parameter is ignored if only one item 
    3184 of the selected data type, such as PLTE, is allowed.  If "seq" is not 
    3185 -1, and multiple items are allowed for the data type identified in 
    3186 the mask, such as text or sPLT, only the n'th item in the structure 
    3187 is freed, where n is "seq". 
    3188  
    3189 If you allocated data such as a palette that you passed 
    3190 in to libpng with png_set_*, you must not free it until just before the call to 
     3255by the user  and not by libpng,  and will in those cases do nothing. 
     3256The "seq" parameter is ignored if only one item of the selected data 
     3257type, such as PLTE, is allowed.  If "seq" is not -1, and multiple items 
     3258are allowed for the data type identified in the mask, such as text or 
     3259sPLT, only the n'th item in the structure is freed, where n is "seq". 
     3260 
     3261If you allocated data such as a palette that you passed in to libpng 
     3262with png_set_*, you must not free it until just before the call to 
    31913263png_destroy_write_struct(). 
    31923264 
     
    32543326these functions, call the appropriate png_set_*_fn() function. 
    32553327 
    3256 Memory allocation is done through the functions png_malloc() 
    3257 and png_free().  These currently just call the standard C functions.  If 
    3258 your pointers can't access more then 64K at a time, you will want to set 
    3259 MAXSEG_64K in zlib.h.  Since it is unlikely that the method of handling 
    3260 memory allocation on a platform will change between applications, these 
    3261 functions must be modified in the library at compile time.  If you prefer 
    3262 to use a different method of allocating and freeing data, you can use 
    3263 png_create_read_struct_2() or png_create_write_struct_2() to register 
    3264 your own functions as described above. 
    3265 These functions also provide a void pointer that can be retrieved via 
     3328Memory allocation is done through the functions png_malloc(), png_calloc(), 
     3329and png_free().  These currently just call the standard C functions. 
     3330png_calloc() calls png_malloc() and then png_memset() to clear the newly 
     3331allocated memory to zero.  If your pointers can't access more then 64K 
     3332at a time, you will want to set MAXSEG_64K in zlib.h.  Since it is 
     3333unlikely that the method of handling memory allocation on a platform 
     3334will change between applications, these functions must be modified in 
     3335the library at compile time.  If you prefer to use a different method 
     3336of allocating and freeing data, you can use png_create_read_struct_2() or 
     3337png_create_write_struct_2() to register your own functions as described 
     3338above.  These functions also provide a void pointer that can be retrieved 
     3339via 
    32663340 
    32673341    mem_ptr=png_get_mem_ptr(png_ptr); 
     
    33553429as there is no need to check every return code of every function call. 
    33563430However, there are some uncertainties about the status of local variables 
    3357 after a longjmp, so the user may want to be careful about doing anything after 
    3358 setjmp returns non-zero besides returning itself.  Consult your compiler 
    3359 documentation for more details.  For an alternative approach, you may wish 
    3360 to use the "cexcept" facility (see http://cexcept.sourceforge.net). 
     3431after a longjmp, so the user may want to be careful about doing anything 
     3432after setjmp returns non-zero besides returning itself.  Consult your 
     3433compiler documentation for more details.  For an alternative approach, you 
     3434may wish to use the "cexcept" facility (see http://cexcept.sourceforge.net). 
    33613435 
    33623436.SS Custom chunks 
     
    33703444 
    33713445If you need to write a new intrinsic chunk, first read the PNG 
    3372 specification. Acquire a first level of 
    3373 understanding of how it works.  Pay particular attention to the 
    3374 sections that describe chunk names, and look at how other chunks were 
    3375 designed, so you can do things similarly.  Second, check out the 
    3376 sections of libpng that read and write chunks.  Try to find a chunk 
    3377 that is similar to yours and use it as a template.  More details can 
    3378 be found in the comments inside the code.  It is best to handle unknown 
    3379 chunks in a generic method, via callback functions, instead of by 
    3380 modifying libpng functions. 
     3446specification. Acquire a first level of understanding of how it works. 
     3447Pay particular attention to the sections that describe chunk names, 
     3448and look at how other chunks were designed, so you can do things 
     3449similarly.  Second, check out the sections of libpng that read and 
     3450write chunks.  Try to find a chunk that is similar to yours and use 
     3451it as a template.  More details can be found in the comments inside 
     3452the code.  It is best to handle unknown chunks in a generic method, 
     3453via callback functions, instead of by modifying libpng functions. 
    33813454 
    33823455If you wish to write your own transformation for the data, look through 
     
    35553628or all four, 
    35563629along with directives to turn on any of the capabilities that you do 
    3557 want.  The PNG_NO_READ[or WRITE]_TRANSFORMS directives disable 
    3558 the extra transformations but still leave the library fully capable of reading 
    3559 and writing PNG files with all known public chunks 
    3560 Use of the PNG_NO_READ[or WRITE]_ANCILLARY_CHUNKS directive 
    3561 produces a library that is incapable of reading or writing ancillary chunks. 
    3562 If you are not using the progressive reading capability, you can 
    3563 turn that off with PNG_NO_PROGRESSIVE_READ (don't confuse 
    3564 this with the INTERLACING capability, which you'll still have). 
     3630want.  The PNG_NO_READ[or WRITE]_TRANSFORMS directives disable the extra 
     3631transformations but still leave the library fully capable of reading 
     3632and writing PNG files with all known public chunks. Use of the 
     3633PNG_NO_READ[or WRITE]_ANCILLARY_CHUNKS directive produces a library 
     3634that is incapable of reading or writing ancillary chunks.  If you are 
     3635not using the progressive reading capability, you can turn that off 
     3636with PNG_NO_PROGRESSIVE_READ (don't confuse this with the INTERLACING 
     3637capability, which you'll still have). 
    35653638 
    35663639All the reading and writing specific code are in separate files, so the 
     
    36963769png_create_write_struct_2(), png_set_mem_fn(), png_get_mem_ptr(), 
    36973770png_malloc_default(), and png_free_default() were added. 
     3771 
     3772Support for the iTXt chunk has been enabled by default as of 
     3773version 1.2.41. 
    36983774 
    36993775Support for certain MNG features was enabled. 
     
    37513827when the Intel assembler code was removed due to a licensing issue. 
    37523828 
     3829These macros are deprecated: 
     3830 
     3831    PNG_READ_TRANSFORMS_NOT_SUPPORTED 
     3832    PNG_PROGRESSIVE_READ_NOT_SUPPORTED 
     3833    PNG_NO_SEQUENTIAL_READ_SUPPORTED 
     3834    PNG_WRITE_TRANSFORMS_NOT_SUPPORTED 
     3835    PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED 
     3836    PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED 
     3837 
     3838They have been replaced, respectively, by: 
     3839 
     3840    PNG_NO_READ_TRANSFORMS 
     3841    PNG_NO_PROGRESSIVE_READ 
     3842    PNG_NO_SEQUENTIAL_READ 
     3843    PNG_NO_WRITE_TRANSFORMS 
     3844    PNG_NO_READ_ANCILLARY_CHUNKS 
     3845    PNG_NO_WRITE_ANCILLARY_CHUNKS 
     3846 
     3847PNG_MAX_UINT was replaced with PNG_UINT_31_MAX.  It has been 
     3848deprecated since libpng-1.0.16 and libpng-1.2.6. 
     3849 
     3850The function 
     3851    png_check_sig(sig, num) 
     3852was replaced with 
     3853    !png_sig_cmp(sig, 0, num) 
     3854It has been deprecated since libpng-0.90. 
     3855 
     3856The function 
     3857    png_set_gray_1_2_4_to_8() 
     3858which also expands tRNS to alpha was replaced with 
     3859    png_set_expand_gray_1_2_4_to_8() 
     3860which does not. It has been deprecated since libpng-1.0.18 and 1.2.9. 
     3861 
    37533862.SH IX.  (Omitted) 
     3863 
    37543864 
    37553865.SH X. Detecting libpng 
     
    38043914are usually indented the same as the first line of the statement 
    38053915plus four more spaces. 
     3916 
     3917For macro definitions we use 2-space indentation, always leaving the "#" 
     3918in the first column. 
     3919 
     3920    #ifndef PNG_NO_FEATURE 
     3921    #  ifndef PNG_FEATURE_SUPPORTED 
     3922    #    define PNG_FEATURE_SUPPORTED 
     3923    #  endif 
     3924    #endif 
    38063925 
    38073926Comments appear with the leading "/*" at the same indentation as 
     
    38693988 
    38703989    for (i = 2; i > 0; --i) 
    3871        x[i] = a(x) + (int)b; 
     3990       y[i] = a(x) + (int)b; 
    38723991 
    38733992We prefer #ifdef and #ifndef to #if defined() and if !defined() 
    38743993when there is only one macro being tested. 
    38753994 
    3876 Other rules can be inferred by inspecting the libpng 
    3877 source. 
     3995We do not use the TAB character for indentation in the C sources. 
     3996 
     3997Lines do not exceed 80 characters. 
     3998 
     3999Other rules can be inferred by inspecting the libpng source. 
    38784000 
    38794001.SH XIII. Y2K Compliance in libpng 
    38804002 
    3881 September 10, 2009 
     4003January 3, 2010 
    38824004 
    38834005Since the PNG Development group is an ad-hoc body, we can't make 
     
    38854007 
    38864008This is your unofficial assurance that libpng from version 0.71 and 
    3887 upward through 1.2.40 are Y2K compliant.  It is my belief that earlier 
     4009upward through 1.2.42 are Y2K compliant.  It is my belief that earlier 
    38884010versions were also Y2K compliant. 
    38894011 
     
    41644286 1.0.48              10    10048  10.so.0.48[.0] 
    41654287 1.2.39              13    10239  12.so.0.39[.0] 
     4288 1.2.40beta01        13    10240  12.so.0.40[.0] 
    41664289 1.2.40rc01          13    10240  12.so.0.40[.0] 
    41674290 1.0.49              10    10049  10.so.0.49[.0] 
    41684291 1.2.40              13    10240  12.so.0.40[.0] 
     4292 1.0.50              10    10050  10.so.0.50[.0] 
     4293 1.2.41beta01-18     13    10241  12.so.0.41[.0] 
     4294 1.0.51rc01          10    10051  10.so.0.51[.0] 
     4295 1.2.41rc01-03       13    10241  12.so.0.41[.0] 
     4296 1.0.51              10    10051  10.so.0.51[.0] 
     4297 1.2.41              13    10241  12.so.0.41[.0] 
     4298 1.2.42beta01-02     13    10242  12.so.0.42[.0] 
     4299 1.2.42rc01-05       13    10242  12.so.0.42[.0] 
     4300 1.0.52              10    10052  10.so.0.52[.0] 
     4301 1.2.42              13    10242  12.so.0.42[.0] 
    41694302 
    41704303Henceforth the source version will match the shared-library minor 
     
    42224355Thanks to Frank J. T. Wojcik for helping with the documentation. 
    42234356 
    4224 Libpng version 1.2.40 - September 10, 2009: 
     4357Libpng version 1.2.42 - January 3, 2010: 
    42254358Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. 
    42264359Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net). 
     
    42454378This code is released under the libpng license. 
    42464379 
    4247 libpng versions 1.2.6, August 15, 2004, through 1.2.40, September 10, 2009, are 
     4380libpng versions 1.2.6, August 15, 2004, through 1.2.42, January 3, 2010, are 
    42484381Copyright (c) 2004,2006-2008 Glenn Randers-Pehrson, and are 
    42494382distributed according to the same disclaimer and license as libpng-1.2.5 
     
    43444477Glenn Randers-Pehrson 
    43454478glennrp at users.sourceforge.net 
    4346 September 10, 2009 
     4479January 3, 2010 
    43474480 
    43484481.\" end of man page