src/java.desktop/share/native/libsplashscreen/libpng/README
changeset 47216 71c04702a3d5
parent 43321 2b8d397c03a4
child 48280 791d551bcdb8
equal deleted inserted replaced
47215:4ebc2e2fb97c 47216:71c04702a3d5
       
     1 README for libpng version 1.6.28 - January 5, 2017 (shared library 16.0)
       
     2 See the note about version numbers near the top of png.h
       
     3 
       
     4 See INSTALL for instructions on how to install libpng.
       
     5 
       
     6 Libpng comes in several distribution formats.  Get libpng-*.tar.gz or
       
     7 libpng-*.tar.xz or if you want UNIX-style line endings in the text files,
       
     8 or lpng*.7z or lpng*.zip if you want DOS-style line endings.
       
     9 
       
    10 Version 0.89 was the first official release of libpng.  Don't let the
       
    11 fact that it's the first release fool you.  The libpng library has been in
       
    12 extensive use and testing since mid-1995.  By late 1997 it had
       
    13 finally gotten to the stage where there hadn't been significant
       
    14 changes to the API in some time, and people have a bad feeling about
       
    15 libraries with versions < 1.0.  Version 1.0.0 was released in
       
    16 March 1998.
       
    17 
       
    18 ****
       
    19 Note that some of the changes to the png_info structure render this
       
    20 version of the library binary incompatible with libpng-0.89 or
       
    21 earlier versions if you are using a shared library.  The type of the
       
    22 "filler" parameter for png_set_filler() has changed from png_byte to
       
    23 png_uint_32, which will affect shared-library applications that use
       
    24 this function.
       
    25 
       
    26 To avoid problems with changes to the internals of png info_struct,
       
    27 new APIs have been made available in 0.95 to avoid direct application
       
    28 access to info_ptr.  These functions are the png_set_<chunk> and
       
    29 png_get_<chunk> functions.  These functions should be used when
       
    30 accessing/storing the info_struct data, rather than manipulating it
       
    31 directly, to avoid such problems in the future.
       
    32 
       
    33 It is important to note that the APIs did not make current programs
       
    34 that access the info struct directly incompatible with the new
       
    35 library, through libpng-1.2.x.  In libpng-1.4.x, which was meant to
       
    36 be a transitional release, members of the png_struct and the
       
    37 info_struct can still be accessed, but the compiler will issue a
       
    38 warning about deprecated usage.  Since libpng-1.5.0, direct access
       
    39 to these structs is not allowed, and the definitions of the structs
       
    40 reside in private pngstruct.h and pnginfo.h header files that are not
       
    41 accessible to applications.  It is strongly suggested that new
       
    42 programs use the new APIs (as shown in example.c and pngtest.c), and
       
    43 older programs be converted to the new format, to facilitate upgrades
       
    44 in the future.
       
    45 ****
       
    46 
       
    47 Additions since 0.90 include the ability to compile libpng as a
       
    48 Windows DLL, and new APIs for accessing data in the info struct.
       
    49 Experimental functions include the ability to set weighting and cost
       
    50 factors for row filter selection, direct reads of integers from buffers
       
    51 on big-endian processors that support misaligned data access, faster
       
    52 methods of doing alpha composition, and more accurate 16->8 bit color
       
    53 conversion.
       
    54 
       
    55 The additions since 0.89 include the ability to read from a PNG stream
       
    56 which has had some (or all) of the signature bytes read by the calling
       
    57 application.  This also allows the reading of embedded PNG streams that
       
    58 do not have the PNG file signature.  As well, it is now possible to set
       
    59 the library action on the detection of chunk CRC errors.  It is possible
       
    60 to set different actions based on whether the CRC error occurred in a
       
    61 critical or an ancillary chunk.
       
    62 
       
    63 The changes made to the library, and bugs fixed are based on discussions
       
    64 on the PNG-implement mailing list and not on material submitted
       
    65 privately to Guy, Andreas, or Glenn.  They will forward any good
       
    66 suggestions to the list.
       
    67 
       
    68 For a detailed description on using libpng, read libpng-manual.txt.  For
       
    69 examples of libpng in a program, see example.c and pngtest.c.  For usage
       
    70 information and restrictions (what little they are) on libpng, see
       
    71 png.h.  For a description on using zlib (the compression library used by
       
    72 libpng) and zlib's restrictions, see zlib.h
       
    73 
       
    74 I have included a general makefile, as well as several machine and
       
    75 compiler specific ones, but you may have to modify one for your own needs.
       
    76 
       
    77 You should use zlib 1.0.4 or later to run this, but it MAY work with
       
    78 versions as old as zlib 0.95.  Even so, there are bugs in older zlib
       
    79 versions which can cause the output of invalid compression streams for
       
    80 some images.  You will definitely need zlib 1.0.4 or later if you are
       
    81 taking advantage of the MS-DOS "far" structure allocation for the small
       
    82 and medium memory models.  You should also note that zlib is a
       
    83 compression library that is useful for more things than just PNG files.
       
    84 You can use zlib as a drop-in replacement for fread() and fwrite() if
       
    85 you are so inclined.
       
    86 
       
    87 zlib should be available at the same place that libpng is, or at zlib.net.
       
    88 
       
    89 You may also want a copy of the PNG specification.  It is available
       
    90 as an RFC, a W3C Recommendation, and an ISO/IEC Standard.  You can find
       
    91 these at http://www.libpng.org/pub/png/documents/
       
    92 
       
    93 This code is currently being archived at libpng.sf.net in the
       
    94 [DOWNLOAD] area, and at ftp://ftp.simplesystems.org.  If you can't find it
       
    95 in any of those places, e-mail me, and I'll help you find it.
       
    96 
       
    97 I am not a lawyer, but I believe that the Export Control Classification
       
    98 Number (ECCN) for libpng is EAR99, which means not subject to export
       
    99 controls or International Traffic in Arms Regulations (ITAR) because it
       
   100 is open source, publicly available software, that does not contain any
       
   101 encryption software.  See the EAR, paragraphs 734.3(b)(3) and 734.7(b).
       
   102 
       
   103 If you have any code changes, requests, problems, etc., please e-mail
       
   104 them to me.  Also, I'd appreciate any make files or project files,
       
   105 and any modifications you needed to make to get libpng to compile,
       
   106 along with a #define variable to tell what compiler/system you are on.
       
   107 If you needed to add transformations to libpng, or wish libpng would
       
   108 provide the image in a different way, drop me a note (and code, if
       
   109 possible), so I can consider supporting the transformation.
       
   110 Finally, if you get any warning messages when compiling libpng
       
   111 (note: not zlib), and they are easy to fix, I'd appreciate the
       
   112 fix.  Please mention "libpng" somewhere in the subject line.  Thanks.
       
   113 
       
   114 This release was created and will be supported by myself (of course
       
   115 based in a large way on Guy's and Andreas' earlier work), and the PNG
       
   116 development group.
       
   117 
       
   118 Send comments/corrections/commendations to png-mng-implement at
       
   119 lists.sourceforge.net (subscription required; visit
       
   120 https://lists.sourceforge.net/lists/listinfo/png-mng-implement
       
   121 to subscribe) or to glennrp at users.sourceforge.net
       
   122 
       
   123 You can't reach Guy, the original libpng author, at the addresses
       
   124 given in previous versions of this document.  He and Andreas will
       
   125 read mail addressed to the png-implement list, however.
       
   126 
       
   127 Please do not send general questions about PNG.  Send them to
       
   128 png-mng-misc at lists.sf.net (subscription required; visit
       
   129 https://lists.sourceforge.net/lists/listinfo/png-mng-misc to
       
   130 subscribe).  If you have a question about something
       
   131 in the PNG specification that is related to using libpng, send it
       
   132 to me.  Send me any questions that start with "I was using libpng,
       
   133 and ...".  If in doubt, send questions to me.  I'll bounce them
       
   134 to others, if necessary.
       
   135 
       
   136 Please do not send suggestions on how to change PNG.  We have
       
   137 been discussing PNG for twenty years now, and it is official and
       
   138 finished.  If you have suggestions for libpng, however, I'll
       
   139 gladly listen.  Even if your suggestion is not used immediately,
       
   140 it may be used later.
       
   141 
       
   142 Files in this distribution:
       
   143 
       
   144       ANNOUNCE      =>  Announcement of this version, with recent changes
       
   145       CHANGES       =>  Description of changes between libpng versions
       
   146       KNOWNBUG      =>  List of known bugs and deficiencies
       
   147       LICENSE       =>  License to use and redistribute libpng
       
   148       README        =>  This file
       
   149       TODO          =>  Things not implemented in the current library
       
   150       Y2KINFO       =>  Statement of Y2K compliance
       
   151       example.c     =>  Example code for using libpng functions
       
   152       libpng.3      =>  manual page for libpng (includes libpng-manual.txt)
       
   153       libpng-manual.txt  =>  Description of libpng and its functions
       
   154       libpngpf.3    =>  manual page for libpng's private functions
       
   155       png.5         =>  manual page for the PNG format
       
   156       png.c         =>  Basic interface functions common to library
       
   157       png.h         =>  Library function and interface declarations (public)
       
   158       pngpriv.h     =>  Library function and interface declarations (private)
       
   159       pngconf.h     =>  System specific library configuration (public)
       
   160       pngstruct.h   =>  png_struct declaration (private)
       
   161       pnginfo.h     =>  png_info struct declaration (private)
       
   162       pngdebug.h    =>  debugging macros (private)
       
   163       pngerror.c    =>  Error/warning message I/O functions
       
   164       pngget.c      =>  Functions for retrieving info from struct
       
   165       pngmem.c      =>  Memory handling functions
       
   166       pngbar.png    =>  PNG logo, 88x31
       
   167       pngnow.png    =>  PNG logo, 98x31
       
   168       pngpread.c    =>  Progressive reading functions
       
   169       pngread.c     =>  Read data/helper high-level functions
       
   170       pngrio.c      =>  Lowest-level data read I/O functions
       
   171       pngrtran.c    =>  Read data transformation functions
       
   172       pngrutil.c    =>  Read data utility functions
       
   173       pngset.c      =>  Functions for storing data into the info_struct
       
   174       pngtest.c     =>  Library test program
       
   175       pngtest.png   =>  Library test sample image
       
   176       pngtrans.c    =>  Common data transformation functions
       
   177       pngwio.c      =>  Lowest-level write I/O functions
       
   178       pngwrite.c    =>  High-level write functions
       
   179       pngwtran.c    =>  Write data transformations
       
   180       pngwutil.c    =>  Write utility functions
       
   181       arm           =>  Contains optimized code for the ARM platform
       
   182       contrib       =>  Contributions
       
   183        arm-neon         =>  Optimized code for ARM-NEON platform
       
   184        examples         =>  Example programs
       
   185        gregbook         =>  source code for PNG reading and writing, from
       
   186                             Greg Roelofs' "PNG: The Definitive Guide",
       
   187                             O'Reilly, 1999
       
   188        intel            =>  Optimized code for INTEL-SSE2 platform
       
   189        libtests         =>  Test programs
       
   190        pngminim         =>  Minimal decoder, encoder, and progressive decoder
       
   191                             programs demonstrating use of pngusr.dfa
       
   192        pngminus         =>  Simple pnm2png and png2pnm programs
       
   193        pngsuite         =>  Test images
       
   194        testpngs
       
   195        tools            =>  Various tools
       
   196        visupng          =>  Contains a MSVC workspace for VisualPng
       
   197       projects      =>  Contains project files and workspaces for
       
   198                         building a DLL
       
   199        owatcom          =>  Contains a WATCOM project for building libpng
       
   200        visualc71        =>  Contains a Microsoft Visual C++ (MSVC)
       
   201                             workspace for building libpng and zlib
       
   202        vstudio          =>  Contains a Microsoft Visual C++ (MSVC)
       
   203                             workspace for building libpng and zlib
       
   204       scripts       =>  Directory containing scripts for building libpng:
       
   205                             (see scripts/README.txt for the list of scripts)
       
   206 
       
   207 Good luck, and happy coding.
       
   208 
       
   209 -Glenn Randers-Pehrson (current maintainer, since 1998)
       
   210  Internet: glennrp at users.sourceforge.net
       
   211 
       
   212 -Andreas Eric Dilger (former maintainer, 1996-1997)
       
   213  Internet: adilger at enel.ucalgary.ca
       
   214  Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/
       
   215 
       
   216 -Guy Eric Schalnat (original author and former maintainer, 1995-1996)
       
   217  (formerly of Group 42, Inc)
       
   218  Internet: gschal at infinet.com