[devel] Changed Windows calling convention back to __cdecl for API functions.

For Windows/x86 platforms only:
  __stdcall is no longer needed for Visual Basic, so libpng-1.5.0 uses
  __cdecl throughout (both API functions and callbacks) on Windows/x86
  platforms.
diff --git a/ANNOUNCE b/ANNOUNCE
index 0b6b464..ef196db 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -178,6 +178,11 @@
     is to use the macros - this allows applications to choose at app build
     time whether or not to use macros (previously impossible because the
     functions weren't in the default build.)
+  Changed Windows calling convention back to __cdecl for API functions.
+    For Windows/x86 platforms only:
+      __stdcall is no longer needed for Visual Basic, so libpng-1.5.0 uses
+      __cdecl throughout (both API functions and callbacks) on Windows/x86
+      platforms.
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net:
 (subscription required; visit
diff --git a/CHANGES b/CHANGES
index 7be4c88..521a7b3 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2660,6 +2660,11 @@
     is to use the macros - this allows applications to choose at app build
     time whether or not to use macros (previously impossible because the
     functions weren't in the default build.)
+  Changed Windows calling convention back to __cdecl for API functions.
+    For Windows/x86 platforms only:
+      __stdcall is no longer needed for Visual Basic, so libpng-1.5.0 uses
+      __cdecl throughout (both API functions and callbacks) on Windows/x86
+      platforms.
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
diff --git a/pngconf.h b/pngconf.h
index 52a58df..f04e686 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -90,9 +90,9 @@
  * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems
  * and some others) there are multiple ways to call a function and the
  * default can be changed on the compiler command line.  For this reason
- * libpng allows the calling convention of every exported function and
- * every function called via a user supplied function pointer to be
- * specified.  This is done by defining the following macros:
+ * libpng specifies the calling convention of every exported function and
+ * every function called via a user supplied function pointer.  This is
+ * done in this file by defining the following macros:
  *
  * PNGAPI    Calling convention for exported functions.
  * PNGCBAPI  Calling convention for user provided (callback) functions.
@@ -100,16 +100,19 @@
  *           for longjmp callbacks and sometimes used internally to
  *           specify the calling convention for zlib).
  *
+ * These macros should never be overridden.  If it is necessary to
+ * change calling convention in a private build this can be done
+ * by setting PNG_API_RULE (which defaults to 0) to one of the values
+ * below to select the correct 'API' variants.
  *
- * Two common cases are supported:
- *
- * PNG_API_RULE=0  Use the operating system convention for PNGAPI and
+ * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout.
+ *                This is correct in every known environment.
+ * PNG_API_RULE=1 Use the operating system convention for PNGAPI and
  *                the 'C' calling convention (from PNGCAPI) for
- *                callbacks (PNGCBAPI).
- * PNG_API_RULE=1  Use PNGCAPI - the 'C' calling convention - throughout.
- *                This is correct on Cygwin implementations, assumed to
- *                be correct on MingW compilations and likely to work
- *                in C/C++ only environments everywhere else.
+ *                callbacks (PNGCBAPI).  This is no longer required
+ *                in any known environment - if it has to be used
+ *                please post an explanation of the problem to the
+ *                libpng mailing list.
  *
  * These cases only differ if the operating system does not use the C
  * calling convention, at present this just means the above cases
@@ -160,82 +163,66 @@
  * ==========================
  * This code is used at build time to find PNG_IMPEXP, the API settings
  * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL
- * import processing is possible.
- *
- * NOTE: this is poorly tested and may miss many cases, the default
- * (everything empty) is harmless unless the result is a DLL that is
- * intended to be distributed!
+ * import processing is possible.  On Windows/x86 systems it also sets
+ * compiler-specific macros to the values required to change the calling
+ * conventions of the various functions.
  */
-#if defined(__CYGWIN__)
-  /* Cygwin: force PNGCAPI to cdecl. */
-#  ifndef PNGCAPI
-#    define PNGCAPI __cdecl
-#  endif
-
-  /* Provide the appropriate defaults for exporting a symbol from
-   * the DLL and forcing import.  Always set these - the choice to
-   * use them is made below.
+#if ( defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\
+      defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) ) &&\
+    ( defined(_X86_) || defined(_X64_) || defined(_M_IX86) ||\
+      defined(_M_X64) || defined(_M_IA64) )
+  /* Windows system (DOS doesn't support DLLs) running on x86/x64.
+   * Includes builds under Cygwin or MinGW.
    */
-#  ifndef PNG_DLL_EXPORT
-#    define PNG_DLL_EXPORT __declspec(dllexport)
-#  endif
-#  ifndef PNG_DLL_IMPORT
-#    define PNG_DLL_IMPORT __declspec(dllimport)
-#  endif
-
-#else /* !Cygwin */
-#  if ( defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\
-        defined(_WIN32) || defined(__WIN32__) ) &&\
-      ( defined(_X86_) || defined(_X64_) || defined(_M_IX86) ||\
-        defined(_M_X64) || defined(_M_IA64) )
-    /* Windows system (DOS doesn't support DLLs) running on x86/x64 and
-     * not being built under Cygwin or by a MingW compiler.
+#  if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800))
+#    define PNGCAPI __cdecl
+#    if PNG_API_RULE == 1
+#      define PNGAPI __stdcall
+#    endif
+#  else
+    /* An older compiler, or one not detected (erroneously) above,
+     * if necessary override on the command line to get the correct
+     * variants for the compiler.
      */
-#    if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800))
-#      ifndef PNGCAPI
-#        define PNGCAPI __cdecl
-#      endif
-#      if PNG_API_RULE == 0 && !defined(PNGAPI)
-#        define PNGAPI __stdcall
-#      endif
-#    else
-      /* An older compiler, or one not detected (erroneously) above. */
-#      ifndef PNGCAPI
-#        define PNGCAPI _cdecl
-#      endif
-#      if PNG_API_RULE == 0 && !defined(PNGAPI)
-#        define PNGAPI _stdcall
-#      endif
-#    endif /* compiler/api */
-    /* NOTE: PNGCBAPI always defaults to PNGCAPI. */
+#    ifndef PNGCAPI
+#      define PNGCAPI _cdecl
+#    endif
+#    if PNG_API_RULE == 1 && !defined(PNGAPI)
+#      define PNGAPI _stdcall
+#    endif
+#  endif /* compiler/api */
+  /* NOTE: PNGCBAPI always defaults to PNGCAPI. */
 
-#    if (defined(_MSC_VER) && _MSC_VER < 800) ||\
-        (defined(__BORLANDC__) && __BORLANDC__ < 0x500)
-      /* older Borland and MSC
-       * compilers used '__export' and required this to be after
-       * the type.
-       */
-#      ifndef PNG_EXPORT_TYPE
-#        define PNG_EXPORT_TYPE(type) type PNG_IMPEXP
-#      endif
-#      define PNG_DLL_EXPORT __export
-#    else /* newer compiler */
-#      define PNG_DLL_EXPORT __declspec(dllexport)
-#      ifndef PNG_DLL_IMPORT
-#        define PNG_DLL_IMPORT __declspec(dllimport)
-#      endif
-#    endif /* compiler */
+#  if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD)
+   ERROR: PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed
+#  endif
 
-#  else /* !Cygwin && !Windows/x86 */
-#    if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
-#      ifndef PNGAPI
-#        define PNGAPI _System
-#      endif
-#    else /* !Cygwin && !Windows/x86 && !OS/2 */
-      /* Use the defaults */
-#    endif /* other system, !OS/2 */
-#  endif /* !Windows/x86 */
-#endif /* !Cygwin */
+#  if (defined(_MSC_VER) && _MSC_VER < 800) ||\
+      (defined(__BORLANDC__) && __BORLANDC__ < 0x500)
+    /* older Borland and MSC
+     * compilers used '__export' and required this to be after
+     * the type.
+     */
+#    ifndef PNG_EXPORT_TYPE
+#      define PNG_EXPORT_TYPE(type) type PNG_IMPEXP
+#    endif
+#    define PNG_DLL_EXPORT __export
+#  else /* newer compiler */
+#    define PNG_DLL_EXPORT __declspec(dllexport)
+#    ifndef PNG_DLL_IMPORT
+#      define PNG_DLL_IMPORT __declspec(dllimport)
+#    endif
+#  endif /* compiler */
+
+#else /* !Windows/x86 */
+#  if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
+#    define PNGAPI _System
+#  else /* !Windows/x86 && !OS/2 */
+    /* Use the defaults, or define PNG*API on the command line (but
+     * this will have to be done for every compile!)
+     */
+#  endif /* other system, !OS/2 */
+#endif /* !Windows/x86 */
 
 /* Now do all the defaulting . */
 #ifndef PNGCAPI
diff --git a/projects/visualc6/pnglibconf.h b/projects/visualc6/pnglibconf.h
index e91f0de..9c7ca58 100644
--- a/projects/visualc6/pnglibconf.h
+++ b/projects/visualc6/pnglibconf.h
@@ -1,6 +1,7 @@
+/* 1.5.0beta19 STANDARD API DEFINITION */

 /* pnglibconf.h - library build configuration */

 

-/* libpng version 1.5.0beta17 - April 2, 2010 */

+/* libpng version 1.5.0beta19 - April 2, 2010 */

 

 /* Copyright (c) 1998-2010 Glenn Randers-Pehrson */

 

@@ -8,17 +9,12 @@
 /* For conditions of distribution and use, see the disclaimer */

 /* and license in png.h */

 

-/* This file generates a libpng library with no STDIO support,

- * it is provided to allow generation of a DLL suitable for use

- * with Visual Basic and for no other purpose.

- */

+/* pnglibconf.h */

 /* Machine generated file: DO NOT EDIT */

-/* Derived from: scripts/pnglibconf.dfa with PNG_NO_STDIO */

+/* Derived from: scripts/pnglibconf.dfa */

 #ifndef PNGLCONF_H

 #define PNGLCONF_H

 /* settings */

-#define PNG_USER_PRIVATEBUILD "libpng DLL for use with Visual Basic"

-#define PNG_USER_DLLFNAME_POSTFIX "VB"

 #define PNG_CALLOC_SUPPORTED

 #define PNG_USER_WIDTH_MAX 1000000L

 #define PNG_API_RULE 0

@@ -36,17 +32,23 @@
 #define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED

 #define PNG_USER_LIMITS_SUPPORTED

 #define PNG_FIXED_POINT_SUPPORTED

+/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/

 #define PNG_ERROR_TEXT_SUPPORTED

 #define PNG_READ_SUPPORTED

+/*#undef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED*/

+/*#undef PNG_BENIGN_ERRORS_SUPPORTED*/

 #define PNG_SETJMP_SUPPORTED

 #define PNG_WRITE_FLUSH_SUPPORTED

 #define PNG_MNG_FEATURES_SUPPORTED

 #define PNG_FLOATING_POINT_SUPPORTED

+/*#undef PNG_INCH_CONVERSIONS_SUPPORTED*/

+#define PNG_STDIO_SUPPORTED

 #define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED

 #define PNG_USER_MEM_SUPPORTED

 #define PNG_IO_STATE_SUPPORTED

 #define PNG_SET_USER_LIMITS_SUPPORTED

 #define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED

+#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED

 #define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED

 #define PNG_WRITE_FILTER_SUPPORTED

 #define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED

@@ -83,6 +85,7 @@
 #define PNG_READ_SHIFT_SUPPORTED

 #define PNG_CONVERT_tIME_SUPPORTED

 #define PNG_READ_USER_TRANSFORM_SUPPORTED

+#define PNG_READ_INT_FUNCTIONS_SUPPORTED

 #define PNG_READ_USER_CHUNKS_SUPPORTED

 #define PNG_READ_hIST_SUPPORTED

 #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED

@@ -90,6 +93,7 @@
 #define PNG_READ_COMPOSITE_NODIV_SUPPORTED

 #define PNG_SEQUENTIAL_READ_SUPPORTED

 #define PNG_READ_BACKGROUND_SUPPORTED

+#define PNG_READ_QUANTIZE_SUPPORTED

 #define PNG_READ_iCCP_SUPPORTED

 #define PNG_READ_STRIP_ALPHA_SUPPORTED

 #define PNG_READ_PACKSWAP_SUPPORTED

@@ -103,9 +107,11 @@
 #define PNG_READ_tIME_SUPPORTED

 #define PNG_READ_pHYs_SUPPORTED

 #define PNG_WRITE_SWAP_ALPHA_SUPPORTED

+#define PNG_TIME_RFC1123_SUPPORTED

 #define PNG_READ_TEXT_SUPPORTED

 #define PNG_WRITE_BGR_SUPPORTED

 #define PNG_USER_CHUNKS_SUPPORTED

+#define PNG_CONSOLE_IO_SUPPORTED

 #define PNG_GET_INT_32_SUPPORTED

 #define PNG_WRITE_PACK_SUPPORTED

 #define PNG_READ_FILLER_SUPPORTED

diff --git a/projects/visualc71/README.txt b/projects/visualc71/README.txt
index 508b6de..dd66eb6 100644
--- a/projects/visualc71/README.txt
+++ b/projects/visualc71/README.txt
@@ -6,10 +6,6 @@
 For conditions of distribution and use, see copyright notice in png.h
 
 Changes in libpng 15:
-* The standard calling convention (used in all builds) is __stdcall for
-  libpng exported functions and __cdecl for function callbacks.
-  Consequently the VB configuration is no longer required but is provided
-  in libpng15vb.dll for backward compatibility.
 * The DEF file is no longer required, the DLLs link by name.  A standard
   DEF file, pngwin.def, is included in the distribution for applications
   that require link by number (ordinal), builds that require link by
@@ -18,9 +14,14 @@
 Assumptions:
 * The libpng source files are in ..\..
 * The zlib source files are in ..\..\..\zlib
-* The zlib project file is in . /* Warning: This is until the zlib project
-  files get intergrated into the next zlib release. The final zlib project
-  directory will then be ..\..\..\zlib\projects\visualc71. */
+  The source files must be from zlib version 1.2.3 - this project file
+  will not work with any other version.
+* The zlib project file is in .
+
+You may delete the zlib project from the solution and use the official
+zlib build instead - take care to link against either zlib.lib or zdll.lib
+as appropriate.  You must do this if you want to use a version of zlib other
+than zlib-1.2.3!
 
 To use:
 
@@ -46,7 +47,7 @@
 
 * Win32_DLL_Release\libpng15.dll      DLL build
 * Win32_DLL_Debug\libpng15d.dll       DLL build (debug version)
-* Win32_DLL_VB\libpng15vb.dll         DLL build for Visual Basic, using stdcall
+* Win32_DLL_VB\libpng15vb.dll         DLL build for Visual Basic (no stdio)
 * Win32_LIB_Release\libpng.lib        static build
 * Win32_LIB_Debug\libpngd.lib         static build (debug version)
 
diff --git a/projects/visualc71/pnglibconf.h b/projects/visualc71/pnglibconf.h
index e91f0de..9c7ca58 100644
--- a/projects/visualc71/pnglibconf.h
+++ b/projects/visualc71/pnglibconf.h
@@ -1,6 +1,7 @@
+/* 1.5.0beta19 STANDARD API DEFINITION */

 /* pnglibconf.h - library build configuration */

 

-/* libpng version 1.5.0beta17 - April 2, 2010 */

+/* libpng version 1.5.0beta19 - April 2, 2010 */

 

 /* Copyright (c) 1998-2010 Glenn Randers-Pehrson */

 

@@ -8,17 +9,12 @@
 /* For conditions of distribution and use, see the disclaimer */

 /* and license in png.h */

 

-/* This file generates a libpng library with no STDIO support,

- * it is provided to allow generation of a DLL suitable for use

- * with Visual Basic and for no other purpose.

- */

+/* pnglibconf.h */

 /* Machine generated file: DO NOT EDIT */

-/* Derived from: scripts/pnglibconf.dfa with PNG_NO_STDIO */

+/* Derived from: scripts/pnglibconf.dfa */

 #ifndef PNGLCONF_H

 #define PNGLCONF_H

 /* settings */

-#define PNG_USER_PRIVATEBUILD "libpng DLL for use with Visual Basic"

-#define PNG_USER_DLLFNAME_POSTFIX "VB"

 #define PNG_CALLOC_SUPPORTED

 #define PNG_USER_WIDTH_MAX 1000000L

 #define PNG_API_RULE 0

@@ -36,17 +32,23 @@
 #define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED

 #define PNG_USER_LIMITS_SUPPORTED

 #define PNG_FIXED_POINT_SUPPORTED

+/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/

 #define PNG_ERROR_TEXT_SUPPORTED

 #define PNG_READ_SUPPORTED

+/*#undef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED*/

+/*#undef PNG_BENIGN_ERRORS_SUPPORTED*/

 #define PNG_SETJMP_SUPPORTED

 #define PNG_WRITE_FLUSH_SUPPORTED

 #define PNG_MNG_FEATURES_SUPPORTED

 #define PNG_FLOATING_POINT_SUPPORTED

+/*#undef PNG_INCH_CONVERSIONS_SUPPORTED*/

+#define PNG_STDIO_SUPPORTED

 #define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED

 #define PNG_USER_MEM_SUPPORTED

 #define PNG_IO_STATE_SUPPORTED

 #define PNG_SET_USER_LIMITS_SUPPORTED

 #define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED

+#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED

 #define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED

 #define PNG_WRITE_FILTER_SUPPORTED

 #define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED

@@ -83,6 +85,7 @@
 #define PNG_READ_SHIFT_SUPPORTED

 #define PNG_CONVERT_tIME_SUPPORTED

 #define PNG_READ_USER_TRANSFORM_SUPPORTED

+#define PNG_READ_INT_FUNCTIONS_SUPPORTED

 #define PNG_READ_USER_CHUNKS_SUPPORTED

 #define PNG_READ_hIST_SUPPORTED

 #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED

@@ -90,6 +93,7 @@
 #define PNG_READ_COMPOSITE_NODIV_SUPPORTED

 #define PNG_SEQUENTIAL_READ_SUPPORTED

 #define PNG_READ_BACKGROUND_SUPPORTED

+#define PNG_READ_QUANTIZE_SUPPORTED

 #define PNG_READ_iCCP_SUPPORTED

 #define PNG_READ_STRIP_ALPHA_SUPPORTED

 #define PNG_READ_PACKSWAP_SUPPORTED

@@ -103,9 +107,11 @@
 #define PNG_READ_tIME_SUPPORTED

 #define PNG_READ_pHYs_SUPPORTED

 #define PNG_WRITE_SWAP_ALPHA_SUPPORTED

+#define PNG_TIME_RFC1123_SUPPORTED

 #define PNG_READ_TEXT_SUPPORTED

 #define PNG_WRITE_BGR_SUPPORTED

 #define PNG_USER_CHUNKS_SUPPORTED

+#define PNG_CONSOLE_IO_SUPPORTED

 #define PNG_GET_INT_32_SUPPORTED

 #define PNG_WRITE_PACK_SUPPORTED

 #define PNG_READ_FILLER_SUPPORTED

diff --git a/scripts/README.txt b/scripts/README.txt
index 5f69080..5084083 100644
--- a/scripts/README.txt
+++ b/scripts/README.txt
@@ -1,5 +1,5 @@
 
-Makefiles for  libpng version 1.5.0beta19 - April 18, 2010
+Makefiles for  libpng version 1.5.0beta19 - April 24, 2010
 
 pnglibconf.h       =>  Stores configuration settings
  makefile.linux    =>  Linux/ELF makefile