#define PNG_VERSION_INFO_ONLY

#include <windows.h>
#include "../png.h"

#define _QUOTE(x) # x
#define QUOTE(x) _QUOTE(x)

#define PNG_LIBPNG_DLLFNAME "LIBPNG"

#if defined(DLLFNAME_POSTFIX) && !defined(PRIVATEBUILD) && !defined(SPECIALBUILD)
#  error PRIVATEBUILD or SPECIALBUILD must be defined as a string describing the type of change brought to the standard library
#endif /* defined(DLLFNAME_POSTFIX)... */

#if defined(PNG_USE_PNGVCRD)
#  if !defined(SPECIALBUILD)
#    define SPECIALBUILD "Use MMX instructions"
#  endif /* SPECIALBUILD */
#endif

#if defined(PNG_DEBUG) && (PNG_DEBUG > 0)
#  define VS_DEBUG VS_FF_DEBUG
#  ifndef DLLFNAME_POSTFIX
#    define DLLFNAME_POSTFIX "D"
#  endif /* DLLFNAME_POSTFIX */
#  ifndef COMMENTS 
#    define COMMENTS "PNG_DEBUG=" QUOTE(PNG_DEBUG)
#  endif /* COMMENTS */
#else
#  define VS_DEBUG 0
#  ifndef DLLFNAME_POSTFIX
#     define DLLFNAME_POSTFIX
#  endif /* DLLFNAME_POSTFIX */
#endif /* defined(DEBUG)... */

#ifdef PRIVATEBUILD
#  define VS_PRIVATEBUILD VS_FF_PRIVATEBUILD
#else
#  define VS_PRIVATEBUILD 0
#endif /* PRIVATEBUILD */

#ifdef SPECIALBUILD
#  define VS_SPECIALBUILD VS_FF_SPECIALBUILD
#else
#  define VS_SPECIALBUILD 0
#endif /* SPECIALBUILD */

#if ((PNG_LIBPNG_BUILD_TYPE & PNG_LIBPNG_BUILD_TYPEMASK) != \
      PNG_LIBPNG_BUILD_STABLE)
#  define VS_PRERELEASE VS_FF_PRERELEASE
#  define VS_PATCHED 0
#else
#  define VS_PRERELEASE 0
#  if (PNG_LIBPNG_BUILD_TYPE & PNG_LIBPNG_BUILD_PATCHED)
#    define VS_PATCHED VS_FF_PATCHED
#  else
#    define VS_PATCHED 0
#  endif
#endif

VS_VERSION_INFO VERSIONINFO 
FILEVERSION PNG_LIBPNG_VER_MAJOR, PNG_LIBPNG_VER_MINOR, PNG_LIBPNG_VER_RELEASE, PNG_LIBPNG_VER_BUILD
PRODUCTVERSION PNG_LIBPNG_VER_MAJOR, PNG_LIBPNG_VER_MINOR, PNG_LIBPNG_VER_RELEASE, PNG_LIBPNG_VER_BUILD
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS VS_DEBUG | VS_PRIVATEBUILD | VS_SPECIALBUILD | VS_PRERELEASE | VS_PATCHED
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE VFT2_UNKNOWN
BEGIN
  BLOCK "StringFileInfo"
  BEGIN BLOCK "040904E4" /* Language type = U.S English(0x0409) and Character Set = Windows, Multilingual(0x04E4) */
    BEGIN
#ifdef COMMENTS
      VALUE "Comments", COMMENTS "\000"
#endif /* COMMENTS */
      VALUE "FileDescription", "PNG image compression library\000"
      VALUE "FileVersion", PNG_LIBPNG_VER_STRING "\000"
      VALUE "InternalName", PNG_LIBPNG_DLLFNAME QUOTE(PNG_LIBPNG_VER_DLLNUM) DLLFNAME_POSTFIX " (Windows 32 bit)\000"
      VALUE "LegalCopyright", "\251 1998-2004 Glenn Randers-Pehrson et al.\000"
      VALUE "OriginalFilename", PNG_LIBPNG_DLLFNAME QUOTE(PNG_LIBPNG_VER_DLLNUM) DLLFNAME_POSTFIX ".DLL\000"
#ifdef PRIVATEBUILD
      VALUE "PrivateBuild", PRIVATEBUILD
#endif /* PRIVATEBUILD */
      VALUE "ProductName", "LibPNG\000"
      VALUE "ProductVersion", "1\000"
#ifdef SPECIALBUILD
      VALUE "SpecialBuild", SPECIALBUILD
#endif /* SPECIALBUILD */
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x0409, 0x04E4
  END
END
