qrcode : add quick response code

source : https://github.com/BlueDragon747/qrencode-win32

Change-Id: I0fbe4f37100afcfa761b0cef90e34b4198fccf0e
Tuleap: #1233
diff --git a/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.dll b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.dll
new file mode 100644
index 0000000..6ae0b5d
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.dll
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.exp b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.exp
new file mode 100644
index 0000000..5587157
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.exp
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.iobj b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.iobj
new file mode 100644
index 0000000..1997108
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.iobj
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.ipdb b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.ipdb
new file mode 100644
index 0000000..f972c8b
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.ipdb
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.lib b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.lib
new file mode 100644
index 0000000..a943248
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/Release-Dll/qrcodelib.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.command.1.tlog b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.command.1.tlog
new file mode 100644
index 0000000..3374044
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.command.1.tlog
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.read.1.tlog b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.read.1.tlog
new file mode 100644
index 0000000..fe35bc7
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.read.1.tlog
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.write.1.tlog b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.write.1.tlog
new file mode 100644
index 0000000..cd088ca
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/CL.write.1.tlog
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.command.1.tlog b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.command.1.tlog
new file mode 100644
index 0000000..5c8c8d7
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.command.1.tlog
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.read.1.tlog b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.read.1.tlog
new file mode 100644
index 0000000..7a1b636
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.read.1.tlog
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.write.1.tlog b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.write.1.tlog
new file mode 100644
index 0000000..55f4571
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/link.write.1.tlog
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/qrcodelib.lastbuildstate b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/qrcodelib.lastbuildstate
new file mode 100644
index 0000000..34ace4d
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/qrcodelib.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1

+Release-Dll|Win32|C:\msys64\home\user\qrencode-win32\qrencode-win32\vc8\|

diff --git a/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/qrcodelib.write.1u.tlog b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/qrcodelib.write.1u.tlog
new file mode 100644
index 0000000..0f40487
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/.build/qrcodelib/Release-Dll/qrcodelib.tlog/qrcodelib.write.1u.tlog
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qr.iss b/contrib/qrencode-win32/vc8/qr.iss
new file mode 100644
index 0000000..31283e7
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qr.iss
@@ -0,0 +1,25 @@
+

+[Setup]

+AppName=QRCodeGui

+AppVersion=3.4.4.0

+DefaultDirName={pf}\QRCodeGui

+DefaultGroupName=QRCodeGui

+UninstallDisplayIcon={app}\qrcodegui.exe

+Compression=lzma2

+SolidCompression=yes

+LicenseFile=..\COPYING

+OutputDir=.\.build\setup

+OutputBaseFilename=qrcodegui_setup-3.4.4

+

+[Files]

+Source: "settings.ini"; DestDir: "{userappdata}\QRCodeGui"

+Source: ".\.build\release-lib\qrcodegui.exe"; DestDir: "{app}"; Flags: ignoreversion

+Source: ".\.build\release-lib\qrcodecon.exe"; DestDir: "{app}"; Flags: ignoreversion

+Source: ".\.build\release-lib\qrcode.exe"; DestDir: "{app}"; Flags: ignoreversion

+Source: ".\test.bat"; DestDir: "{app}"; Flags: ignoreversion

+

+[Run]

+Filename: "{app}\qrcodegui.exe"; Description: "Open QRCodeGui after finish"; Flags: postinstall

+

+[Icons]

+Name: "{group}\QRCodeGui"; Filename: "{app}\qrcodegui.exe"

diff --git a/contrib/qrencode-win32/vc8/qrcode.sln b/contrib/qrencode-win32/vc8/qrcode.sln
new file mode 100644
index 0000000..89c2bb3
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode.sln
@@ -0,0 +1,58 @@
+

+Microsoft Visual Studio Solution File, Format Version 12.00

+# Visual Studio 14

+VisualStudioVersion = 14.0.25420.1

+MinimumVisualStudioVersion = 10.0.40219.1

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qrcodelib", "qrcodelib\qrcodelib.vcxproj", "{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qrcode", "qrcode\qrcode.vcxproj", "{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qrcodegui", "qrcodegui\qrcodegui.vcxproj", "{B77F9451-3595-427C-9366-A8D82F27B33B}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qrcodecon", "qrcodecon\qrcodecon.vcxproj", "{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}"

+EndProject

+Global

+	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+		Debug-Dll|Win32 = Debug-Dll|Win32

+		Debug-Lib|Win32 = Debug-Lib|Win32

+		Release-Dll|Win32 = Release-Dll|Win32

+		Release-Lib|Win32 = Release-Lib|Win32

+	EndGlobalSection

+	GlobalSection(ProjectConfigurationPlatforms) = postSolution

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Debug-Dll|Win32.ActiveCfg = Debug-Dll|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Debug-Dll|Win32.Build.0 = Debug-Dll|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Debug-Lib|Win32.ActiveCfg = Debug-Lib|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Debug-Lib|Win32.Build.0 = Debug-Lib|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Release-Dll|Win32.ActiveCfg = Release-Dll|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Release-Dll|Win32.Build.0 = Release-Dll|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Release-Lib|Win32.ActiveCfg = Release-Lib|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Release-Lib|Win32.Build.0 = Release-Lib|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Debug-Dll|Win32.ActiveCfg = Debug-Dll|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Debug-Dll|Win32.Build.0 = Debug-Dll|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Debug-Lib|Win32.ActiveCfg = Debug-Lib|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Debug-Lib|Win32.Build.0 = Debug-Lib|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Release-Dll|Win32.ActiveCfg = Release-Dll|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Release-Dll|Win32.Build.0 = Release-Dll|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Release-Lib|Win32.ActiveCfg = Release-Lib|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Release-Lib|Win32.Build.0 = Release-Lib|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Debug-Dll|Win32.ActiveCfg = Debug-Dll|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Debug-Dll|Win32.Build.0 = Debug-Dll|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Debug-Lib|Win32.ActiveCfg = Debug-Lib|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Debug-Lib|Win32.Build.0 = Debug-Lib|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Release-Dll|Win32.ActiveCfg = Release-Dll|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Release-Dll|Win32.Build.0 = Release-Dll|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Release-Lib|Win32.ActiveCfg = Release-Lib|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Release-Lib|Win32.Build.0 = Release-Lib|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Debug-Dll|Win32.ActiveCfg = Debug-Dll|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Debug-Dll|Win32.Build.0 = Debug-Dll|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Debug-Lib|Win32.ActiveCfg = Debug-Lib|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Debug-Lib|Win32.Build.0 = Debug-Lib|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Release-Dll|Win32.ActiveCfg = Release-Dll|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Release-Dll|Win32.Build.0 = Release-Dll|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Release-Lib|Win32.ActiveCfg = Release-Lib|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Release-Lib|Win32.Build.0 = Release-Lib|Win32

+	EndGlobalSection

+	GlobalSection(SolutionProperties) = preSolution

+		HideSolutionNode = FALSE

+	EndGlobalSection

+EndGlobal

diff --git a/contrib/qrencode-win32/vc8/qrcode/ReadMe.txt b/contrib/qrencode-win32/vc8/qrcode/ReadMe.txt
new file mode 100644
index 0000000..94ef38b
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/ReadMe.txt
@@ -0,0 +1,33 @@
+========================================================================

+    CONSOLE APPLICATION : qrcode Project Overview

+========================================================================

+

+AppWizard has created this qrcode application for you.  

+

+This file contains a summary of what you will find in each of the files that

+make up your qrcode application.

+

+

+qrcode.vcproj

+    This is the main project file for VC++ projects generated using an Application Wizard. 

+    It contains information about the version of Visual C++ that generated the file, and 

+    information about the platforms, configurations, and project features selected with the

+    Application Wizard.

+

+qrcode.cpp

+    This is the main application source file.

+

+/////////////////////////////////////////////////////////////////////////////

+Other standard files:

+

+StdAfx.h, StdAfx.cpp

+    These files are used to build a precompiled header (PCH) file

+    named qrcode.pch and a precompiled types file named StdAfx.obj.

+

+/////////////////////////////////////////////////////////////////////////////

+Other notes:

+

+AppWizard uses "TODO:" comments to indicate parts of the source code you

+should add to or customize.

+

+/////////////////////////////////////////////////////////////////////////////

diff --git a/contrib/qrencode-win32/vc8/qrcode/config.h b/contrib/qrencode-win32/vc8/qrcode/config.h
new file mode 100644
index 0000000..0f09943
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/config.h
@@ -0,0 +1,17 @@
+

+

+#define MAJOR_VERSION 3

+#define MINOR_VERSION 4

+#define MICRO_VERSION 4

+#define VERSION "3.4.4"

+

+#define __STATIC static

+

+#if defined(_WIN32) || defined(_WIN64)

+  #define strcasecmp _stricmp

+  #define strncasecmp _strnicmp

+  #if _MSC_VER < 1900   

+    #define snprintf _snprintf

+    #define vsnprintf _vsnprintf

+  #endif

+#endif

diff --git a/contrib/qrencode-win32/vc8/qrcode/getopt.c b/contrib/qrencode-win32/vc8/qrcode/getopt.c
new file mode 100644
index 0000000..1011323
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/getopt.c
@@ -0,0 +1,533 @@
+/* Getopt for Microsoft C  

+This code is a modification of the Free Software Foundation, Inc. 

+Getopt library for parsing command line argument the purpose was

+to provide a Microsoft Visual C friendly derivative. This code

+provides functionality for both Unicode and Multibyte builds.

+

+Date: 02/03/2011 - Ludvik Jerabek - Initial Release

+Version: 1.0

+Comment: Supports getopt, getopt_long, and getopt_long_only

+and POSIXLY_CORRECT environment flag

+License: LGPL

+

+Revisions:

+

+02/03/2011 - Ludvik Jerabek - Initial Release

+02/20/2011 - Ludvik Jerabek - Fixed compiler warnings at Level 4

+07/05/2011 - Ludvik Jerabek - Added no_argument, required_argument, optional_argument defs

+08/03/2011 - Ludvik Jerabek - Fixed non-argument runtime bug which caused runtime exception

+08/09/2011 - Ludvik Jerabek - Added code to export functions for DLL and LIB

+02/15/2012 - Ludvik Jerabek - Fixed _GETOPT_THROW definition missing in implementation file

+

+**DISCLAIMER**

+THIS MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,

+EITHER EXPRESS OR IMPLIED, INCLUDING, BUT Not LIMITED TO, THE

+IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR

+PURPOSE, OR NON-INFRINGEMENT. SOME JURISDICTIONS DO NOT ALLOW THE

+EXCLUSION OF IMPLIED WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT

+APPLY TO YOU. IN NO EVENT WILL I BE LIABLE TO ANY PARTY FOR ANY

+DIRECT, INDIRECT, SPECIAL OR OTHER CONSEQUENTIAL DAMAGES FOR ANY

+USE OF THIS MATERIAL INCLUDING, WITHOUT LIMITATION, ANY LOST

+PROFITS, BUSINESS INTERRUPTION, LOSS OF PROGRAMS OR OTHER DATA ON

+YOUR INFORMATION HANDLING SYSTEM OR OTHERWISE, EVEN If WE ARE

+EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 

+*/

+

+#define _CRT_SECURE_NO_WARNINGS

+#include <stdlib.h>

+#include <stdio.h>

+#include "getopt.h"

+

+#ifdef __cplusplus

+#define _GETOPT_THROW throw()

+#else

+#define _GETOPT_THROW

+#endif

+

+enum ENUM_ORDERING { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER };

+

+struct _getopt_data

+{

+	int optind;

+	int opterr;

+	int optopt;

+	TCHAR *optarg;

+	int __initialized;

+	TCHAR *__nextchar;

+	int __ordering;

+	int __posixly_correct;

+	int __first_nonopt;

+	int __last_nonopt;

+};

+

+static struct _getopt_data getopt_data;

+

+TCHAR *optarg;

+int optind = 1;

+int opterr = 1;

+int optopt = _T('?');

+

+static void exchange(TCHAR **argv, struct _getopt_data *d)

+{

+	int bottom = d->__first_nonopt;

+	int middle = d->__last_nonopt;

+	int top = d->optind;

+	TCHAR *tem;

+	while (top > middle && middle > bottom)

+	{

+		if (top - middle > middle - bottom)

+		{

+			int len = middle - bottom;

+			register int i;

+			for (i = 0; i < len; i++)

+			{

+				tem = argv[bottom + i];

+				argv[bottom + i] = argv[top - (middle - bottom) + i];

+				argv[top - (middle - bottom) + i] = tem;

+			}

+			top -= len;

+		}

+		else

+		{

+			int len = top - middle;

+			register int i;

+			for (i = 0; i < len; i++)

+			{

+				tem = argv[bottom + i];

+				argv[bottom + i] = argv[middle + i];

+				argv[middle + i] = tem;

+			}

+			bottom += len;

+		}

+	}

+	d->__first_nonopt += (d->optind - d->__last_nonopt);

+	d->__last_nonopt = d->optind;

+}

+

+

+static const TCHAR *_getopt_initialize (const TCHAR *optstring, struct _getopt_data *d, int posixly_correct)

+{

+	d->__first_nonopt = d->__last_nonopt = d->optind;

+	d->__nextchar = NULL;

+	d->__posixly_correct = posixly_correct | !!_tgetenv(_T("POSIXLY_CORRECT"));

+

+

+	if (optstring[0] == _T('-'))

+	{

+		d->__ordering = RETURN_IN_ORDER;

+		++optstring;

+	}

+	else if (optstring[0] == _T('+'))

+	{

+		d->__ordering = REQUIRE_ORDER;

+		++optstring;

+	}

+	else if (d->__posixly_correct)

+		d->__ordering = REQUIRE_ORDER;

+	else

+		d->__ordering = PERMUTE;

+	return optstring;

+}

+

+int _getopt_internal_r (int argc, TCHAR *const *argv, const TCHAR *optstring, const struct option *longopts, int *longind, int long_only, struct _getopt_data *d, int posixly_correct)

+{

+	int print_errors = d->opterr;

+

+	if (argc < 1)

+		return -1;

+

+	d->optarg = NULL;

+

+	if (d->optind == 0 || !d->__initialized)

+	{

+		if (d->optind == 0)

+			d->optind = 1;

+		optstring = _getopt_initialize (optstring, d, posixly_correct);

+		d->__initialized = 1;

+	}

+	else if (optstring[0] == _T('-') || optstring[0] == _T('+'))

+		optstring++;

+	if (optstring[0] == _T(':'))

+		print_errors = 0;

+

+	if (d->__nextchar == NULL || *d->__nextchar == _T('\0'))

+	{

+		if (d->__last_nonopt > d->optind)

+			d->__last_nonopt = d->optind;

+		if (d->__first_nonopt > d->optind)

+			d->__first_nonopt = d->optind;

+

+		if (d->__ordering == PERMUTE)

+		{

+			if (d->__first_nonopt != d->__last_nonopt && d->__last_nonopt != d->optind)

+				exchange ((TCHAR **) argv, d);

+			else if (d->__last_nonopt != d->optind)

+				d->__first_nonopt = d->optind;

+

+			while (d->optind < argc && (argv[d->optind][0] != _T('-') || argv[d->optind][1] == _T('\0')))

+				d->optind++;

+			d->__last_nonopt = d->optind;

+		}

+

+		if (d->optind != argc && !_tcscmp(argv[d->optind], _T("--")))

+		{

+			d->optind++;

+

+			if (d->__first_nonopt != d->__last_nonopt && d->__last_nonopt != d->optind)

+				exchange ((TCHAR **) argv, d);

+			else if (d->__first_nonopt == d->__last_nonopt)

+				d->__first_nonopt = d->optind;

+			d->__last_nonopt = argc;

+

+			d->optind = argc;

+		}

+

+		if (d->optind == argc)

+		{

+			if (d->__first_nonopt != d->__last_nonopt)

+				d->optind = d->__first_nonopt;

+			return -1;

+		}

+

+		if ((argv[d->optind][0] != _T('-') || argv[d->optind][1] == _T('\0')))

+		{

+			if (d->__ordering == REQUIRE_ORDER)

+				return -1;

+			d->optarg = argv[d->optind++];

+			return 1;

+		}

+

+		d->__nextchar = (argv[d->optind] + 1 + (longopts != NULL && argv[d->optind][1] == _T('-')));

+	}

+

+	if (longopts != NULL && (argv[d->optind][1] == _T('-') || (long_only && (argv[d->optind][2] || !_tcschr(optstring, argv[d->optind][1])))))

+	{

+		TCHAR *nameend;

+		const struct option *p;

+		const struct option *pfound = NULL;

+		int exact = 0;

+		int ambig = 0;

+		int indfound = -1;

+		int option_index;

+

+		for (nameend = d->__nextchar; *nameend && *nameend != _T('='); nameend++);

+

+		for (p = longopts, option_index = 0; p->name; p++, option_index++)

+			if (!_tcsncmp(p->name, d->__nextchar, nameend - d->__nextchar))

+			{

+				if ((unsigned int)(nameend - d->__nextchar) == (unsigned int)_tcslen(p->name))

+				{

+					pfound = p;

+					indfound = option_index;

+					exact = 1;

+					break;

+				}

+				else if (pfound == NULL)

+				{

+					pfound = p;

+					indfound = option_index;

+				}

+				else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val)

+					ambig = 1;

+			}

+

+			if (ambig && !exact)

+			{

+				if (print_errors)

+				{

+					_ftprintf(stderr, _T("%s: option '%s' is ambiguous\n"),

+						argv[0], argv[d->optind]);

+				}

+				d->__nextchar += _tcslen(d->__nextchar);

+				d->optind++;

+				d->optopt = 0;

+				return _T('?');

+			}

+

+			if (pfound != NULL)

+			{

+				option_index = indfound;

+				d->optind++;

+				if (*nameend)

+				{

+					if (pfound->has_arg)

+						d->optarg = nameend + 1;

+					else

+					{

+						if (print_errors)

+						{

+							if (argv[d->optind - 1][1] == _T('-'))

+							{

+								_ftprintf(stderr, _T("%s: option '--%s' doesn't allow an argument\n"),argv[0], pfound->name);

+							}

+							else

+							{

+								_ftprintf(stderr, _T("%s: option '%c%s' doesn't allow an argument\n"),argv[0], argv[d->optind - 1][0],pfound->name);

+							}

+

+						}

+

+						d->__nextchar += _tcslen(d->__nextchar);

+

+						d->optopt = pfound->val;

+						return _T('?');

+					}

+				}

+				else if (pfound->has_arg == 1)

+				{

+					if (d->optind < argc)

+						d->optarg = argv[d->optind++];

+					else

+					{

+						if (print_errors)

+						{

+							_ftprintf(stderr,_T("%s: option '--%s' requires an argument\n"),argv[0], pfound->name);

+						}

+						d->__nextchar += _tcslen(d->__nextchar);

+						d->optopt = pfound->val;

+						return optstring[0] == _T(':') ? _T(':') : _T('?');

+					}

+				}

+				d->__nextchar += _tcslen(d->__nextchar);

+				if (longind != NULL)

+					*longind = option_index;

+				if (pfound->flag)

+				{

+					*(pfound->flag) = pfound->val;

+					return 0;

+				}

+				return pfound->val;

+			}

+

+			if (!long_only || argv[d->optind][1] == _T('-') || _tcschr(optstring, *d->__nextchar) == NULL)

+			{

+				if (print_errors)

+				{

+					if (argv[d->optind][1] == _T('-'))

+					{

+						/* --option */

+						_ftprintf(stderr, _T("%s: unrecognized option '--%s'\n"),argv[0], d->__nextchar);

+					}

+					else

+					{

+						/* +option or -option */

+						_ftprintf(stderr, _T("%s: unrecognized option '%c%s'\n"),argv[0], argv[d->optind][0], d->__nextchar);

+					}

+				}

+				d->__nextchar = (TCHAR *)_T("");

+				d->optind++;

+				d->optopt = 0;

+				return _T('?');

+			}

+	}

+

+	{

+		TCHAR c = *d->__nextchar++;

+		TCHAR *temp = (TCHAR*)_tcschr(optstring, c);

+

+		if (*d->__nextchar == _T('\0'))

+			++d->optind;

+

+		if (temp == NULL || c == _T(':') || c == _T(';'))

+		{

+			if (print_errors)

+			{

+				_ftprintf(stderr, _T("%s: invalid option -- '%c'\n"), argv[0], c);

+			}

+			d->optopt = c;

+			return _T('?');

+		}

+		if (temp[0] == _T('W') && temp[1] == _T(';'))

+		{

+			TCHAR *nameend;

+			const struct option *p;

+			const struct option *pfound = NULL;

+			int exact = 0;

+			int ambig = 0;

+			int indfound = 0;

+			int option_index;

+

+			if (*d->__nextchar != _T('\0'))

+			{

+				d->optarg = d->__nextchar;

+				d->optind++;

+			}

+			else if (d->optind == argc)

+			{

+				if (print_errors)

+				{

+					_ftprintf(stderr,

+						_T("%s: option requires an argument -- '%c'\n"),

+						argv[0], c);

+				}

+				d->optopt = c;

+				if (optstring[0] == _T(':'))

+					c = _T(':');

+				else

+					c = _T('?');

+				return c;

+			}

+			else

+				d->optarg = argv[d->optind++];

+

+			for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != _T('='); nameend++);

+

+			for (p = longopts, option_index = 0; p->name; p++, option_index++)

+				if (!_tcsncmp(p->name, d->__nextchar, nameend - d->__nextchar))

+				{

+					if ((unsigned int) (nameend - d->__nextchar) == _tcslen(p->name))

+					{

+						pfound = p;

+						indfound = option_index;

+						exact = 1;

+						break;

+					}

+					else if (pfound == NULL)

+					{

+						pfound = p;

+						indfound = option_index;

+					}

+					else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val)

+						ambig = 1;

+				}

+				if (ambig && !exact)

+				{

+					if (print_errors)

+					{

+						_ftprintf(stderr, _T("%s: option '-W %s' is ambiguous\n"),

+							argv[0], d->optarg);

+					}

+					d->__nextchar += _tcslen(d->__nextchar);

+					d->optind++;

+					return _T('?');

+				}

+				if (pfound != NULL)

+				{

+					option_index = indfound;

+					if (*nameend)

+					{

+						if (pfound->has_arg)

+							d->optarg = nameend + 1;

+						else

+						{

+							if (print_errors)

+							{

+								_ftprintf(stderr, _T("\

+													 %s: option '-W %s' doesn't allow an argument\n"),

+													 argv[0], pfound->name);

+							}

+

+							d->__nextchar += _tcslen(d->__nextchar);

+							return _T('?');

+						}

+					}

+					else if (pfound->has_arg == 1)

+					{

+						if (d->optind < argc)

+							d->optarg = argv[d->optind++];

+						else

+						{

+							if (print_errors)

+							{

+								_ftprintf(stderr, _T("\

+													 %s: option '-W %s' requires an argument\n"),

+													 argv[0], pfound->name);

+							}

+							d->__nextchar += _tcslen(d->__nextchar);

+							return optstring[0] == _T(':') ? _T(':') : _T('?');

+						}

+					}

+					else

+						d->optarg = NULL;

+					d->__nextchar += _tcslen(d->__nextchar);

+					if (longind != NULL)

+						*longind = option_index;

+					if (pfound->flag)

+					{

+						*(pfound->flag) = pfound->val;

+						return 0;

+					}

+					return pfound->val;

+				}

+				d->__nextchar = NULL;

+				return _T('W');

+		}

+		if (temp[1] == _T(':'))

+		{

+			if (temp[2] == _T(':'))

+			{

+				if (*d->__nextchar != _T('\0'))

+				{

+					d->optarg = d->__nextchar;

+					d->optind++;

+				}

+				else

+					d->optarg = NULL;

+				d->__nextchar = NULL;

+			}

+			else

+			{

+				if (*d->__nextchar != _T('\0'))

+				{

+					d->optarg = d->__nextchar;

+					d->optind++;

+				}

+				else if (d->optind == argc)

+				{

+					if (print_errors)

+					{

+						_ftprintf(stderr,

+							_T("%s: option requires an argument -- '%c'\n"),

+							argv[0], c);

+					}

+					d->optopt = c;

+					if (optstring[0] == _T(':'))

+						c = _T(':');

+					else

+						c = _T('?');

+				}

+				else

+					d->optarg = argv[d->optind++];

+				d->__nextchar = NULL;

+			}

+		}

+		return c;

+	}

+}

+

+int _getopt_internal (int argc, TCHAR *const *argv, const TCHAR *optstring, const struct option *longopts, int *longind, int long_only, int posixly_correct)

+{

+	int result;

+	getopt_data.optind = optind;

+	getopt_data.opterr = opterr;

+	result = _getopt_internal_r (argc, argv, optstring, longopts,longind, long_only, &getopt_data,posixly_correct);

+	optind = getopt_data.optind;

+	optarg = getopt_data.optarg;

+	optopt = getopt_data.optopt;

+	return result;

+}

+

+int getopt (int argc, TCHAR *const *argv, const TCHAR *optstring) _GETOPT_THROW

+{

+	return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0, 0);

+}

+

+int getopt_long (int argc, TCHAR *const *argv, const TCHAR *options, const struct option *long_options, int *opt_index) _GETOPT_THROW

+{

+	return _getopt_internal (argc, argv, options, long_options, opt_index, 0, 0);

+}

+

+int _getopt_long_r (int argc, TCHAR *const *argv, const TCHAR *options, const struct option *long_options, int *opt_index, struct _getopt_data *d)

+{

+	return _getopt_internal_r (argc, argv, options, long_options, opt_index,0, d, 0);

+}

+

+int getopt_long_only (int argc, TCHAR *const *argv, const TCHAR *options, const struct option *long_options, int *opt_index) _GETOPT_THROW

+{

+	return _getopt_internal (argc, argv, options, long_options, opt_index, 1, 0);

+}

+

+int _getopt_long_only_r (int argc, TCHAR *const *argv, const TCHAR *options, const struct option *long_options, int *opt_index, struct _getopt_data *d)

+{

+	return _getopt_internal_r (argc, argv, options, long_options, opt_index, 1, d, 0);

+}

diff --git a/contrib/qrencode-win32/vc8/qrcode/getopt.h b/contrib/qrencode-win32/vc8/qrcode/getopt.h
new file mode 100644
index 0000000..7cfef10
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/getopt.h
@@ -0,0 +1,107 @@
+/* Getopt for Microsoft C  

+This code is a modification of the Free Software Foundation, Inc. 

+Getopt library for parsing command line argument the purpose was

+to provide a Microsoft Visual C friendly derivative. This code

+provides functionality for both Unicode and Multibyte builds.

+

+Date: 02/03/2011 - Ludvik Jerabek - Initial Release

+Version: 1.0

+Comment: Supports getopt, getopt_long, and getopt_long_only

+and POSIXLY_CORRECT environment flag

+License: LGPL

+

+Revisions:

+

+02/03/2011 - Ludvik Jerabek - Initial Release

+02/20/2011 - Ludvik Jerabek - Fixed compiler warnings at Level 4

+07/05/2011 - Ludvik Jerabek - Added no_argument, required_argument, optional_argument defs

+08/03/2011 - Ludvik Jerabek - Fixed non-argument runtime bug which caused runtime exception

+08/09/2011 - Ludvik Jerabek - Added code to export functions for DLL and LIB

+02/15/2012 - Ludvik Jerabek - Fixed _GETOPT_THROW definition missing in implementation file

+

+**DISCLAIMER**

+THIS MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,

+EITHER EXPRESS OR IMPLIED, INCLUDING, BUT Not LIMITED TO, THE

+IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR

+PURPOSE, OR NON-INFRINGEMENT. SOME JURISDICTIONS DO NOT ALLOW THE

+EXCLUSION OF IMPLIED WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT

+APPLY TO YOU. IN NO EVENT WILL I BE LIABLE TO ANY PARTY FOR ANY

+DIRECT, INDIRECT, SPECIAL OR OTHER CONSEQUENTIAL DAMAGES FOR ANY

+USE OF THIS MATERIAL INCLUDING, WITHOUT LIMITATION, ANY LOST

+PROFITS, BUSINESS INTERRUPTION, LOSS OF PROGRAMS OR OTHER DATA ON

+YOUR INFORMATION HANDLING SYSTEM OR OTHERWISE, EVEN If WE ARE

+EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 

+*/

+#ifndef __GETOPT_H_

+#define __GETOPT_H_

+

+#ifdef _GETOPT_API

+#undef _GETOPT_API

+#endif

+

+#if defined(EXPORTS_GETOPT) && defined(STATIC_GETOPT)

+#error "The preprocessor definitions of EXPORTS_GETOPT and STATIC_GETOPT can only be used individually"

+#elif defined(STATIC_GETOPT)

+#pragma message("Warning static builds of getopt violate the Lesser GNU Public License")

+#define _GETOPT_API

+#elif defined(EXPORTS_GETOPT)

+#pragma message("Exporting getopt library")

+#define _GETOPT_API __declspec(dllexport)	

+#else

+#pragma message("Importing getopt library")

+#define _GETOPT_API __declspec(dllimport)

+#endif

+

+

+#include <tchar.h>

+

+// Standard GNU options

+#define	null_argument		0 /*Argument Null*/

+#define	no_argument		0 /*Argument Switch Only*/

+#define required_argument	1 /*Argument Required*/

+#define optional_argument	2 /*Argument Optional*/

+

+// Shorter Versions of options

+#define ARG_NULL 0 /*Argument Null*/

+#define ARG_NONE 0 /*Argument Switch Only*/

+#define ARG_REQ 1  /*Argument Required*/

+#define ARG_OPT 2  /*Argument Optional*/

+

+// Change behavior for C\C++

+#ifdef __cplusplus

+#define _BEGIN_EXTERN_C extern "C" {

+#define _END_EXTERN_C }

+#define _GETOPT_THROW throw()

+#else

+#define _BEGIN_EXTERN_C

+#define _END_EXTERN_C

+#define _GETOPT_THROW

+#endif

+

+_BEGIN_EXTERN_C

+

+	extern _GETOPT_API TCHAR *optarg;

+extern _GETOPT_API int optind;

+extern _GETOPT_API int opterr;

+extern _GETOPT_API int optopt;

+

+struct option

+{

+	const TCHAR* name;

+	int has_arg;

+	int *flag;

+	TCHAR val;

+};

+

+extern _GETOPT_API int getopt(int argc, TCHAR *const *argv, const TCHAR *optstring) _GETOPT_THROW;

+extern _GETOPT_API int getopt_long(int ___argc, TCHAR *const *___argv, const TCHAR *__shortopts, const struct option *__longopts, int *__longind) _GETOPT_THROW;

+extern _GETOPT_API int getopt_long_only(int ___argc, TCHAR *const *___argv, const TCHAR *__shortopts, const struct option *__longopts, int *__longind) _GETOPT_THROW;

+_END_EXTERN_C

+

+// Undefine so the macros are not included

+#undef _BEGIN_EXTERN_C

+#undef _END_EXTERN_C

+#undef _GETOPT_THROW

+#undef _GETOPT_API

+

+#endif  // __GETOPT_H_

diff --git a/contrib/qrencode-win32/vc8/qrcode/png/libpng.lib b/contrib/qrencode-win32/vc8/qrcode/png/libpng.lib
new file mode 100644
index 0000000..629eab5
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/libpng.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/libpng15.dll b/contrib/qrencode-win32/vc8/qrcode/png/libpng15.dll
new file mode 100644
index 0000000..994f0ad
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/libpng15.dll
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/libpng15.lib b/contrib/qrencode-win32/vc8/qrcode/png/libpng15.lib
new file mode 100644
index 0000000..b75709d
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/libpng15.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/libpng15d.dll b/contrib/qrencode-win32/vc8/qrcode/png/libpng15d.dll
new file mode 100644
index 0000000..1aee49a
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/libpng15d.dll
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/libpng15d.lib b/contrib/qrencode-win32/vc8/qrcode/png/libpng15d.lib
new file mode 100644
index 0000000..786fb37
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/libpng15d.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/libpngd.lib b/contrib/qrencode-win32/vc8/qrcode/png/libpngd.lib
new file mode 100644
index 0000000..2e34660
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/libpngd.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/png.h b/contrib/qrencode-win32/vc8/qrcode/png/png.h
new file mode 100644
index 0000000..29f4481
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/png.h
@@ -0,0 +1,2280 @@
+

+/* png.h - header file for PNG reference library

+ *

+ * libpng version 1.5.1 - February 3, 2011

+ * Copyright (c) 1998-2011 Glenn Randers-Pehrson

+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)

+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)

+ *

+ * This code is released under the libpng license (See LICENSE, below)

+ *

+ * Authors and maintainers:

+ *   libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat

+ *   libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger

+ *   libpng versions 0.97, January 1998, through 1.5.1 - February 3, 2011: Glenn

+ *   See also "Contributing Authors", below.

+ *

+ * Note about libpng version numbers:

+ *

+ *   Due to various miscommunications, unforeseen code incompatibilities

+ *   and occasional factors outside the authors' control, version numbering

+ *   on the library has not always been consistent and straightforward.

+ *   The following table summarizes matters since version 0.89c, which was

+ *   the first widely used release:

+ *

+ *    source                 png.h  png.h  shared-lib

+ *    version                string   int  version

+ *    -------                ------ -----  ----------

+ *    0.89c "1.0 beta 3"     0.89      89  1.0.89

+ *    0.90  "1.0 beta 4"     0.90      90  0.90  [should have been 2.0.90]

+ *    0.95  "1.0 beta 5"     0.95      95  0.95  [should have been 2.0.95]

+ *    0.96  "1.0 beta 6"     0.96      96  0.96  [should have been 2.0.96]

+ *    0.97b "1.00.97 beta 7" 1.00.97   97  1.0.1 [should have been 2.0.97]

+ *    0.97c                  0.97      97  2.0.97

+ *    0.98                   0.98      98  2.0.98

+ *    0.99                   0.99      98  2.0.99

+ *    0.99a-m                0.99      99  2.0.99

+ *    1.00                   1.00     100  2.1.0 [100 should be 10000]

+ *    1.0.0      (from here on, the   100  2.1.0 [100 should be 10000]

+ *    1.0.1       png.h string is   10001  2.1.0

+ *    1.0.1a-e    identical to the  10002  from here on, the shared library

+ *    1.0.2       source version)   10002  is 2.V where V is the source code

+ *    1.0.2a-b                      10003  version, except as noted.

+ *    1.0.3                         10003

+ *    1.0.3a-d                      10004

+ *    1.0.4                         10004

+ *    1.0.4a-f                      10005

+ *    1.0.5 (+ 2 patches)           10005

+ *    1.0.5a-d                      10006

+ *    1.0.5e-r                      10100 (not source compatible)

+ *    1.0.5s-v                      10006 (not binary compatible)

+ *    1.0.6 (+ 3 patches)           10006 (still binary incompatible)

+ *    1.0.6d-f                      10007 (still binary incompatible)

+ *    1.0.6g                        10007

+ *    1.0.6h                        10007  10.6h (testing xy.z so-numbering)

+ *    1.0.6i                        10007  10.6i

+ *    1.0.6j                        10007  2.1.0.6j (incompatible with 1.0.0)

+ *    1.0.7beta11-14        DLLNUM  10007  2.1.0.7beta11-14 (binary compatible)

+ *    1.0.7beta15-18           1    10007  2.1.0.7beta15-18 (binary compatible)

+ *    1.0.7rc1-2               1    10007  2.1.0.7rc1-2 (binary compatible)

+ *    1.0.7                    1    10007  (still compatible)

+ *    1.0.8beta1-4             1    10008  2.1.0.8beta1-4

+ *    1.0.8rc1                 1    10008  2.1.0.8rc1

+ *    1.0.8                    1    10008  2.1.0.8

+ *    1.0.9beta1-6             1    10009  2.1.0.9beta1-6

+ *    1.0.9rc1                 1    10009  2.1.0.9rc1

+ *    1.0.9beta7-10            1    10009  2.1.0.9beta7-10

+ *    1.0.9rc2                 1    10009  2.1.0.9rc2

+ *    1.0.9                    1    10009  2.1.0.9

+ *    1.0.10beta1              1    10010  2.1.0.10beta1

+ *    1.0.10rc1                1    10010  2.1.0.10rc1

+ *    1.0.10                   1    10010  2.1.0.10

+ *    1.0.11beta1-3            1    10011  2.1.0.11beta1-3

+ *    1.0.11rc1                1    10011  2.1.0.11rc1

+ *    1.0.11                   1    10011  2.1.0.11

+ *    1.0.12beta1-2            2    10012  2.1.0.12beta1-2

+ *    1.0.12rc1                2    10012  2.1.0.12rc1

+ *    1.0.12                   2    10012  2.1.0.12

+ *    1.1.0a-f                 -    10100  2.1.1.0a-f (branch abandoned)

+ *    1.2.0beta1-2             2    10200  2.1.2.0beta1-2

+ *    1.2.0beta3-5             3    10200  3.1.2.0beta3-5

+ *    1.2.0rc1                 3    10200  3.1.2.0rc1

+ *    1.2.0                    3    10200  3.1.2.0

+ *    1.2.1beta1-4             3    10201  3.1.2.1beta1-4

+ *    1.2.1rc1-2               3    10201  3.1.2.1rc1-2

+ *    1.2.1                    3    10201  3.1.2.1

+ *    1.2.2beta1-6            12    10202  12.so.0.1.2.2beta1-6

+ *    1.0.13beta1             10    10013  10.so.0.1.0.13beta1

+ *    1.0.13rc1               10    10013  10.so.0.1.0.13rc1

+ *    1.2.2rc1                12    10202  12.so.0.1.2.2rc1

+ *    1.0.13                  10    10013  10.so.0.1.0.13

+ *    1.2.2                   12    10202  12.so.0.1.2.2

+ *    1.2.3rc1-6              12    10203  12.so.0.1.2.3rc1-6

+ *    1.2.3                   12    10203  12.so.0.1.2.3

+ *    1.2.4beta1-3            13    10204  12.so.0.1.2.4beta1-3

+ *    1.0.14rc1               13    10014  10.so.0.1.0.14rc1

+ *    1.2.4rc1                13    10204  12.so.0.1.2.4rc1

+ *    1.0.14                  10    10014  10.so.0.1.0.14

+ *    1.2.4                   13    10204  12.so.0.1.2.4

+ *    1.2.5beta1-2            13    10205  12.so.0.1.2.5beta1-2

+ *    1.0.15rc1-3             10    10015  10.so.0.1.0.15rc1-3

+ *    1.2.5rc1-3              13    10205  12.so.0.1.2.5rc1-3

+ *    1.0.15                  10    10015  10.so.0.1.0.15

+ *    1.2.5                   13    10205  12.so.0.1.2.5

+ *    1.2.6beta1-4            13    10206  12.so.0.1.2.6beta1-4

+ *    1.0.16                  10    10016  10.so.0.1.0.16

+ *    1.2.6                   13    10206  12.so.0.1.2.6

+ *    1.2.7beta1-2            13    10207  12.so.0.1.2.7beta1-2

+ *    1.0.17rc1               10    10017  12.so.0.1.0.17rc1

+ *    1.2.7rc1                13    10207  12.so.0.1.2.7rc1

+ *    1.0.17                  10    10017  12.so.0.1.0.17

+ *    1.2.7                   13    10207  12.so.0.1.2.7

+ *    1.2.8beta1-5            13    10208  12.so.0.1.2.8beta1-5

+ *    1.0.18rc1-5             10    10018  12.so.0.1.0.18rc1-5

+ *    1.2.8rc1-5              13    10208  12.so.0.1.2.8rc1-5

+ *    1.0.18                  10    10018  12.so.0.1.0.18

+ *    1.2.8                   13    10208  12.so.0.1.2.8

+ *    1.2.9beta1-3            13    10209  12.so.0.1.2.9beta1-3

+ *    1.2.9beta4-11           13    10209  12.so.0.9[.0]

+ *    1.2.9rc1                13    10209  12.so.0.9[.0]

+ *    1.2.9                   13    10209  12.so.0.9[.0]

+ *    1.2.10beta1-7           13    10210  12.so.0.10[.0]

+ *    1.2.10rc1-2             13    10210  12.so.0.10[.0]

+ *    1.2.10                  13    10210  12.so.0.10[.0]

+ *    1.4.0beta1-5            14    10400  14.so.0.0[.0]

+ *    1.2.11beta1-4           13    10211  12.so.0.11[.0]

+ *    1.4.0beta7-8            14    10400  14.so.0.0[.0]

+ *    1.2.11                  13    10211  12.so.0.11[.0]

+ *    1.2.12                  13    10212  12.so.0.12[.0]

+ *    1.4.0beta9-14           14    10400  14.so.0.0[.0]

+ *    1.2.13                  13    10213  12.so.0.13[.0]

+ *    1.4.0beta15-36          14    10400  14.so.0.0[.0]

+ *    1.4.0beta37-87          14    10400  14.so.14.0[.0]

+ *    1.4.0rc01               14    10400  14.so.14.0[.0]

+ *    1.4.0beta88-109         14    10400  14.so.14.0[.0]

+ *    1.4.0rc02-08            14    10400  14.so.14.0[.0]

+ *    1.4.0                   14    10400  14.so.14.0[.0]

+ *    1.4.1beta01-03          14    10401  14.so.14.1[.0]

+ *    1.4.1rc01               14    10401  14.so.14.1[.0]

+ *    1.4.1beta04-12          14    10401  14.so.14.1[.0]

+ *    1.4.1                   14    10401  14.so.14.1[.0]

+ *    1.4.2                   14    10402  14.so.14.2[.0]

+ *    1.4.3                   14    10403  14.so.14.3[.0]

+ *    1.4.4                   14    10404  14.so.14.4[.0]

+ *    1.5.0beta01-58          15    10500  15.so.15.0[.0]

+ *    1.5.0rc01-07            15    10500  15.so.15.0[.0]

+ *    1.5.0                   15    10500  15.so.15.0[.0]

+ *    1.5.1beta01-11          15    10501  15.so.15.1[.0]

+ *    1.5.1rc01-02            15    10501  15.so.15.1[.0]

+ *    1.5.1                   15    10501  15.so.15.1[.0]

+ *

+ *   Henceforth the source version will match the shared-library major

+ *   and minor numbers; the shared-library major version number will be

+ *   used for changes in backward compatibility, as it is intended.  The

+ *   PNG_LIBPNG_VER macro, which is not used within libpng but is available

+ *   for applications, is an unsigned integer of the form xyyzz corresponding

+ *   to the source version x.y.z (leading zeros in y and z).  Beta versions

+ *   were given the previous public release number plus a letter, until

+ *   version 1.0.6j; from then on they were given the upcoming public

+ *   release number plus "betaNN" or "rcN".

+ *

+ *   Binary incompatibility exists only when applications make direct access

+ *   to the info_ptr or png_ptr members through png.h, and the compiled

+ *   application is loaded with a different version of the library.

+ *

+ *   DLLNUM will change each time there are forward or backward changes

+ *   in binary compatibility (e.g., when a new feature is added).

+ *

+ * See libpng-manual.txt or libpng.3 for more information.  The PNG

+ * specification is available as a W3C Recommendation and as an ISO

+ * Specification, <http://www.w3.org/TR/2003/REC-PNG-20031110/

+ */

+

+/*

+ * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:

+ *

+ * If you modify libpng you may insert additional notices immediately following

+ * this sentence.

+ *

+ * This code is released under the libpng license.

+ *

+ * libpng versions 1.2.6, August 15, 2004, through 1.5.1, February 3, 2011, are

+ * Copyright (c) 2004, 2006-2011 Glenn Randers-Pehrson, and are

+ * distributed according to the same disclaimer and license as libpng-1.2.5

+ * with the following individual added to the list of Contributing Authors:

+ *

+ *    Cosmin Truta

+ *

+ * libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are

+ * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are

+ * distributed according to the same disclaimer and license as libpng-1.0.6

+ * with the following individuals added to the list of Contributing Authors:

+ *

+ *    Simon-Pierre Cadieux

+ *    Eric S. Raymond

+ *    Gilles Vollant

+ *

+ * and with the following additions to the disclaimer:

+ *

+ *    There is no warranty against interference with your enjoyment of the

+ *    library or against infringement.  There is no warranty that our

+ *    efforts or the library will fulfill any of your particular purposes

+ *    or needs.  This library is provided with all faults, and the entire

+ *    risk of satisfactory quality, performance, accuracy, and effort is with

+ *    the user.

+ *

+ * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are

+ * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are

+ * distributed according to the same disclaimer and license as libpng-0.96, 

+ * with the following individuals added to the list of Contributing Authors:

+ *

+ *    Tom Lane

+ *    Glenn Randers-Pehrson

+ *    Willem van Schaik

+ *

+ * libpng versions 0.89, June 1996, through 0.96, May 1997, are

+ * Copyright (c) 1996, 1997 Andreas Dilger

+ * Distributed according to the same disclaimer and license as libpng-0.88, 

+ * with the following individuals added to the list of Contributing Authors:

+ *

+ *    John Bowler

+ *    Kevin Bracey

+ *    Sam Bushell

+ *    Magnus Holmgren

+ *    Greg Roelofs

+ *    Tom Tanner

+ *

+ * libpng versions 0.5, May 1995, through 0.88, January 1996, are

+ * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.

+ *

+ * For the purposes of this copyright and license, "Contributing Authors"

+ * is defined as the following set of individuals:

+ *

+ *    Andreas Dilger

+ *    Dave Martindale

+ *    Guy Eric Schalnat

+ *    Paul Schmidt

+ *    Tim Wegner

+ *

+ * The PNG Reference Library is supplied "AS IS".  The Contributing Authors

+ * and Group 42, Inc. disclaim all warranties, expressed or implied, 

+ * including, without limitation, the warranties of merchantability and of

+ * fitness for any purpose.  The Contributing Authors and Group 42, Inc.

+ * assume no liability for direct, indirect, incidental, special, exemplary, 

+ * or consequential damages, which may result from the use of the PNG

+ * Reference Library, even if advised of the possibility of such damage.

+ *

+ * Permission is hereby granted to use, copy, modify, and distribute this

+ * source code, or portions hereof, for any purpose, without fee, subject

+ * to the following restrictions:

+ *

+ *   1. The origin of this source code must not be misrepresented.

+ *

+ *   2. Altered versions must be plainly marked as such and must not

+ *      be misrepresented as being the original source.

+ *

+ *   3. This Copyright notice may not be removed or altered from

+ *      any source or altered source distribution.

+ *

+ * The Contributing Authors and Group 42, Inc. specifically permit, without

+ * fee, and encourage the use of this source code as a component to

+ * supporting the PNG file format in commercial products.  If you use this

+ * source code in a product, acknowledgment is not required but would be

+ * appreciated.

+ */

+

+/*

+ * A "png_get_copyright" function is available, for convenient use in "about"

+ * boxes and the like:

+ *

+ *     printf("%s", png_get_copyright(NULL));

+ *

+ * Also, the PNG logo (in PNG format, of course) is supplied in the

+ * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).

+ */

+

+/*

+ * Libpng is OSI Certified Open Source Software.  OSI Certified is a

+ * certification mark of the Open Source Initiative.

+ */

+

+/*

+ * The contributing authors would like to thank all those who helped

+ * with testing, bug fixes, and patience.  This wouldn't have been

+ * possible without all of you.

+ *

+ * Thanks to Frank J. T. Wojcik for helping with the documentation.

+ */

+

+/*

+ * Y2K compliance in libpng:

+ * =========================

+ *

+ *    February 3, 2011

+ *

+ *    Since the PNG Development group is an ad-hoc body, we can't make

+ *    an official declaration.

+ *

+ *    This is your unofficial assurance that libpng from version 0.71 and

+ *    upward through 1.5.1 are Y2K compliant.  It is my belief that

+ *    earlier versions were also Y2K compliant.

+ *

+ *    Libpng only has three year fields.  One is a 2-byte unsigned integer

+ *    that will hold years up to 65535.  The other two hold the date in text

+ *    format, and will hold years up to 9999.

+ *

+ *    The integer is

+ *        "png_uint_16 year" in png_time_struct.

+ *

+ *    The strings are

+ *        "png_charp time_buffer" in png_struct and

+ *        "near_time_buffer", which is a local character string in png.c.

+ *

+ *    There are seven time-related functions:

+ *        png.c: png_convert_to_rfc_1123() in png.c

+ *          (formerly png_convert_to_rfc_1152() in error)

+ *        png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c

+ *        png_convert_from_time_t() in pngwrite.c

+ *        png_get_tIME() in pngget.c

+ *        png_handle_tIME() in pngrutil.c, called in pngread.c

+ *        png_set_tIME() in pngset.c

+ *        png_write_tIME() in pngwutil.c, called in pngwrite.c

+ *

+ *    All handle dates properly in a Y2K environment.  The

+ *    png_convert_from_time_t() function calls gmtime() to convert from system

+ *    clock time, which returns (year - 1900), which we properly convert to

+ *    the full 4-digit year.  There is a possibility that applications using

+ *    libpng are not passing 4-digit years into the png_convert_to_rfc_1123()

+ *    function, or that they are incorrectly passing only a 2-digit year

+ *    instead of "year - 1900" into the png_convert_from_struct_tm() function, 

+ *    but this is not under our control.  The libpng documentation has always

+ *    stated that it works with 4-digit years, and the APIs have been

+ *    documented as such.

+ *

+ *    The tIME chunk itself is also Y2K compliant.  It uses a 2-byte unsigned

+ *    integer to hold the year, and can hold years as large as 65535.

+ *

+ *    zlib, upon which libpng depends, is also Y2K compliant.  It contains

+ *    no date-related code.

+ *

+ *       Glenn Randers-Pehrson

+ *       libpng maintainer

+ *       PNG Development Group

+ */

+

+#ifndef PNG_H

+#define PNG_H

+

+/* This is not the place to learn how to use libpng. The file libpng-manual.txt

+ * describes how to use libpng, and the file example.c summarizes it

+ * with some code on which to build.  This file is useful for looking

+ * at the actual function definitions and structure components.

+ */

+

+/* Version information for png.h - this should match the version in png.c */

+#define PNG_LIBPNG_VER_STRING "1.5.1"

+#define PNG_HEADER_VERSION_STRING \

+     " libpng version 1.5.1 - February 3, 2011\n"

+

+#define PNG_LIBPNG_VER_SONUM   15

+#define PNG_LIBPNG_VER_DLLNUM  15

+

+/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */

+#define PNG_LIBPNG_VER_MAJOR   1

+#define PNG_LIBPNG_VER_MINOR   5

+#define PNG_LIBPNG_VER_RELEASE 1

+/* This should match the numeric part of the final component of

+ * PNG_LIBPNG_VER_STRING, omitting any leading zero:

+ */

+

+#define PNG_LIBPNG_VER_BUILD  0

+

+/* Release Status */

+#define PNG_LIBPNG_BUILD_ALPHA    1

+#define PNG_LIBPNG_BUILD_BETA     2

+#define PNG_LIBPNG_BUILD_RC       3

+#define PNG_LIBPNG_BUILD_STABLE   4

+#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7

+

+/* Release-Specific Flags */

+#define PNG_LIBPNG_BUILD_PATCH    8 /* Can be OR'ed with

+                                       PNG_LIBPNG_BUILD_STABLE only */

+#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with

+                                       PNG_LIBPNG_BUILD_SPECIAL */

+#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with

+                                       PNG_LIBPNG_BUILD_PRIVATE */

+

+#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_BETA

+

+/* Careful here.  At one time, Guy wanted to use 082, but that would be octal.

+ * We must not include leading zeros.

+ * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only

+ * version 1.0.0 was mis-numbered 100 instead of 10000).  From

+ * version 1.0.1 it's    xxyyzz, where x=major, y=minor, z=release

+ */

+#define PNG_LIBPNG_VER 10501 /* 1.5.1 */

+

+/* Library configuration: these options cannot be changed after

+ * the library has been built.

+ */

+#ifndef PNGLCONF_H

+    /* If pnglibconf.h is missing, you can

+     * copy scripts/pnglibconf.h.prebuilt to pnglibconf.h

+     */

+#   include "pnglibconf.h"

+#endif

+

+#ifndef PNG_VERSION_INFO_ONLY

+/* Standard header files (not needed for the version info) */

+#  ifdef PNG_SETJMP_SUPPORTED

+#    include <setjmp.h>

+#  endif

+

+/* Need the time information for converting tIME chunks, it

+ * defines struct tm:

+ */

+#ifdef PNG_CONVERT_tIME_SUPPORTED

+   /* "time.h" functions are not supported on all operating systems */

+#  include <time.h>

+#endif

+

+/* Machine specific configuration. */

+#  include "pngconf.h"

+#endif

+

+/*

+ * Added at libpng-1.2.8

+ *

+ * Ref MSDN: Private as priority over Special

+ * VS_FF_PRIVATEBUILD File *was not* built using standard release

+ * procedures. If this value is given, the StringFileInfo block must

+ * contain a PrivateBuild string.

+ *

+ * VS_FF_SPECIALBUILD File *was* built by the original company using

+ * standard release procedures but is a variation of the standard

+ * file of the same version number. If this value is given, the

+ * StringFileInfo block must contain a SpecialBuild string.

+ */

+

+#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */

+#  define PNG_LIBPNG_BUILD_TYPE \

+       (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE)

+#else

+#  ifdef PNG_LIBPNG_SPECIALBUILD

+#    define PNG_LIBPNG_BUILD_TYPE \

+         (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL)

+#  else

+#    define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE)

+#  endif

+#endif

+

+#ifndef PNG_VERSION_INFO_ONLY

+

+/* Inhibit C++ name-mangling for libpng functions but not for system calls. */

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

+/* Version information for C files, stored in png.c.  This had better match

+ * the version above.

+ */

+#define png_libpng_ver png_get_header_ver(NULL)

+

+/* This file is arranged in several sections:

+ *

+ * 1. Any configuration options that can be specified by for the application

+ *    code when it is built.  (Build time configuration is in pnglibconf.h)

+ * 2. Type definitions (base types are defined in pngconf.h), structure

+ *    definitions.

+ * 3. Exported library functions.

+ *

+ * The library source code has additional files (principally pngpriv.h) that

+ * allow configuration of the library.

+ */

+/* Section 1: run time configuration

+ * See pnglibconf.h for build time configuration

+ *

+ * Run time configuration allows the application to choose between

+ * implementations of certain arithmetic APIs.  The default is set

+ * at build time and recorded in pnglibconf.h, but it is safe to

+ * override these (and only these) settings.  Note that this won't

+ * change what the library does, only application code, and the

+ * settings can (and probably should) be made on a per-file basis

+ * by setting the #defines before including png.h

+ *

+ * Use macros to read integers from PNG data or use the exported

+ * functions?

+ *   PNG_USE_READ_MACROS: use the macros (see below)  Note that

+ *     the macros evaluate their argument multiple times.

+ *   PNG_NO_USE_READ_MACROS: call the relevant library function.

+ *

+ * Use the alternative algorithm for compositing alpha samples that

+ * does not use division?

+ *   PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division'

+ *      algorithm.

+ *   PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm.

+ *

+ * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is

+ * false?

+ *   PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error

+ *      APIs to png_warning.

+ * Otherwise the calls are mapped to png_error.

+ */

+

+/* Section 2: type definitions, including structures and compile time

+ * constants.

+ * See pngconf.h for base types that vary by machine/system

+ */

+

+/* This triggers a compiler error in png.c, if png.c and png.h

+ * do not agree upon the version number.

+ */

+typedef char* png_libpng_version_1_5_1;

+

+/* Three color definitions.  The order of the red, green, and blue, (and the

+ * exact size) is not important, although the size of the fields need to

+ * be png_byte or png_uint_16 (as defined below).

+ */

+typedef struct png_color_struct

+{

+   png_byte red;

+   png_byte green;

+   png_byte blue;

+} png_color;

+typedef png_color FAR * png_colorp;

+typedef PNG_CONST png_color FAR * png_const_colorp;

+typedef png_color FAR * FAR * png_colorpp;

+

+typedef struct png_color_16_struct

+{

+   png_byte index;    /* used for palette files */

+   png_uint_16 red;   /* for use in red green blue files */

+   png_uint_16 green;

+   png_uint_16 blue;

+   png_uint_16 gray;  /* for use in grayscale files */

+} png_color_16;

+typedef png_color_16 FAR * png_color_16p;

+typedef PNG_CONST png_color_16 FAR * png_const_color_16p;

+typedef png_color_16 FAR * FAR * png_color_16pp;

+

+typedef struct png_color_8_struct

+{

+   png_byte red;   /* for use in red green blue files */

+   png_byte green;

+   png_byte blue;

+   png_byte gray;  /* for use in grayscale files */

+   png_byte alpha; /* for alpha channel files */

+} png_color_8;

+typedef png_color_8 FAR * png_color_8p;

+typedef PNG_CONST png_color_8 FAR * png_const_color_8p;

+typedef png_color_8 FAR * FAR * png_color_8pp;

+

+/*

+ * The following two structures are used for the in-core representation

+ * of sPLT chunks.

+ */

+typedef struct png_sPLT_entry_struct

+{

+   png_uint_16 red;

+   png_uint_16 green;

+   png_uint_16 blue;

+   png_uint_16 alpha;

+   png_uint_16 frequency;

+} png_sPLT_entry;

+typedef png_sPLT_entry FAR * png_sPLT_entryp;

+typedef PNG_CONST png_sPLT_entry FAR * png_const_sPLT_entryp;

+typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp;

+

+/*  When the depth of the sPLT palette is 8 bits, the color and alpha samples

+ *  occupy the LSB of their respective members, and the MSB of each member

+ *  is zero-filled.  The frequency member always occupies the full 16 bits.

+ */

+

+typedef struct png_sPLT_struct

+{

+   png_charp name;           /* palette name */

+   png_byte depth;           /* depth of palette samples */

+   png_sPLT_entryp entries;  /* palette entries */

+   png_int_32 nentries;      /* number of palette entries */

+} png_sPLT_t;

+typedef png_sPLT_t FAR * png_sPLT_tp;

+typedef PNG_CONST png_sPLT_t FAR * png_const_sPLT_tp;

+typedef png_sPLT_t FAR * FAR * png_sPLT_tpp;

+

+#ifdef PNG_TEXT_SUPPORTED

+/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, 

+ * and whether that contents is compressed or not.  The "key" field

+ * points to a regular zero-terminated C string.  The "text", "lang", and

+ * "lang_key" fields can be regular C strings, empty strings, or NULL pointers.

+ * However, the * structure returned by png_get_text() will always contain

+ * regular zero-terminated C strings (possibly empty), never NULL pointers, 

+ * so they can be safely used in printf() and other string-handling functions.

+ */

+typedef struct png_text_struct

+{

+   int  compression;       /* compression value:

+                             -1: tEXt, none

+                              0: zTXt, deflate

+                              1: iTXt, none

+                              2: iTXt, deflate  */

+   png_charp key;          /* keyword, 1-79 character description of "text" */

+   png_charp text;         /* comment, may be an empty string (ie "")

+                              or a NULL pointer */

+   png_size_t text_length; /* length of the text string */

+   png_size_t itxt_length; /* length of the itxt string */

+   png_charp lang;         /* language code, 0-79 characters

+                              or a NULL pointer */

+   png_charp lang_key;     /* keyword translated UTF-8 string, 0 or more

+                              chars or a NULL pointer */

+} png_text;

+typedef png_text FAR * png_textp;

+typedef PNG_CONST png_text FAR * png_const_textp;

+typedef png_text FAR * FAR * png_textpp;

+#endif

+

+/* Supported compression types for text in PNG files (tEXt, and zTXt).

+ * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */

+#define PNG_TEXT_COMPRESSION_NONE_WR -3

+#define PNG_TEXT_COMPRESSION_zTXt_WR -2

+#define PNG_TEXT_COMPRESSION_NONE    -1

+#define PNG_TEXT_COMPRESSION_zTXt     0

+#define PNG_ITXT_COMPRESSION_NONE     1

+#define PNG_ITXT_COMPRESSION_zTXt     2

+#define PNG_TEXT_COMPRESSION_LAST     3  /* Not a valid value */

+

+/* png_time is a way to hold the time in an machine independent way.

+ * Two conversions are provided, both from time_t and struct tm.  There

+ * is no portable way to convert to either of these structures, as far

+ * as I know.  If you know of a portable way, send it to me.  As a side

+ * note - PNG has always been Year 2000 compliant!

+ */

+typedef struct png_time_struct

+{

+   png_uint_16 year; /* full year, as in, 1995 */

+   png_byte month;   /* month of year, 1 - 12 */

+   png_byte day;     /* day of month, 1 - 31 */

+   png_byte hour;    /* hour of day, 0 - 23 */

+   png_byte minute;  /* minute of hour, 0 - 59 */

+   png_byte second;  /* second of minute, 0 - 60 (for leap seconds) */

+} png_time;

+typedef png_time FAR * png_timep;

+typedef PNG_CONST png_time FAR * png_const_timep;

+typedef png_time FAR * FAR * png_timepp;

+

+#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \

+    defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED)

+/* png_unknown_chunk is a structure to hold queued chunks for which there is

+ * no specific support.  The idea is that we can use this to queue

+ * up private chunks for output even though the library doesn't actually

+ * know about their semantics.

+ */

+typedef struct png_unknown_chunk_t

+{

+    png_byte name[5];

+    png_byte *data;

+    png_size_t size;

+

+    /* libpng-using applications should NOT directly modify this byte. */

+    png_byte location; /* mode of operation at read time */

+}

+png_unknown_chunk;

+typedef png_unknown_chunk FAR * png_unknown_chunkp;

+typedef PNG_CONST png_unknown_chunk FAR * png_const_unknown_chunkp;

+typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp;

+#endif

+

+typedef struct png_info_def png_info;

+typedef png_info FAR * png_infop;

+typedef PNG_CONST png_info FAR * png_const_infop;

+typedef png_info FAR * FAR * png_infopp;

+

+/* Maximum positive integer used in PNG is (2^31)-1 */

+#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)

+#define PNG_UINT_32_MAX ((png_uint_32)(-1))

+#define PNG_SIZE_MAX ((png_size_t)(-1))

+

+/* These are constants for fixed point values encoded in the

+ * PNG specification manner (x100000)

+ */

+#define PNG_FP_1    100000

+#define PNG_FP_HALF  50000

+

+/* These describe the color_type field in png_info. */

+/* color type masks */

+#define PNG_COLOR_MASK_PALETTE    1

+#define PNG_COLOR_MASK_COLOR      2

+#define PNG_COLOR_MASK_ALPHA      4

+

+/* color types.  Note that not all combinations are legal */

+#define PNG_COLOR_TYPE_GRAY 0

+#define PNG_COLOR_TYPE_PALETTE  (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE)

+#define PNG_COLOR_TYPE_RGB        (PNG_COLOR_MASK_COLOR)

+#define PNG_COLOR_TYPE_RGB_ALPHA  (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA)

+#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA)

+/* aliases */

+#define PNG_COLOR_TYPE_RGBA  PNG_COLOR_TYPE_RGB_ALPHA

+#define PNG_COLOR_TYPE_GA  PNG_COLOR_TYPE_GRAY_ALPHA

+

+/* This is for compression type. PNG 1.0-1.2 only define the single type. */

+#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */

+#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE

+

+/* This is for filter type. PNG 1.0-1.2 only define the single type. */

+#define PNG_FILTER_TYPE_BASE      0 /* Single row per-byte filtering */

+#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */

+#define PNG_FILTER_TYPE_DEFAULT   PNG_FILTER_TYPE_BASE

+

+/* These are for the interlacing type.  These values should NOT be changed. */

+#define PNG_INTERLACE_NONE        0 /* Non-interlaced image */

+#define PNG_INTERLACE_ADAM7       1 /* Adam7 interlacing */

+#define PNG_INTERLACE_LAST        2 /* Not a valid value */

+

+/* These are for the oFFs chunk.  These values should NOT be changed. */

+#define PNG_OFFSET_PIXEL          0 /* Offset in pixels */

+#define PNG_OFFSET_MICROMETER     1 /* Offset in micrometers (1/10^6 meter) */

+#define PNG_OFFSET_LAST           2 /* Not a valid value */

+

+/* These are for the pCAL chunk.  These values should NOT be changed. */

+#define PNG_EQUATION_LINEAR       0 /* Linear transformation */

+#define PNG_EQUATION_BASE_E       1 /* Exponential base e transform */

+#define PNG_EQUATION_ARBITRARY    2 /* Arbitrary base exponential transform */

+#define PNG_EQUATION_HYPERBOLIC   3 /* Hyperbolic sine transformation */

+#define PNG_EQUATION_LAST         4 /* Not a valid value */

+

+/* These are for the sCAL chunk.  These values should NOT be changed. */

+#define PNG_SCALE_UNKNOWN         0 /* unknown unit (image scale) */

+#define PNG_SCALE_METER           1 /* meters per pixel */

+#define PNG_SCALE_RADIAN          2 /* radians per pixel */

+#define PNG_SCALE_LAST            3 /* Not a valid value */

+

+/* These are for the pHYs chunk.  These values should NOT be changed. */

+#define PNG_RESOLUTION_UNKNOWN    0 /* pixels/unknown unit (aspect ratio) */

+#define PNG_RESOLUTION_METER      1 /* pixels/meter */

+#define PNG_RESOLUTION_LAST       2 /* Not a valid value */

+

+/* These are for the sRGB chunk.  These values should NOT be changed. */

+#define PNG_sRGB_INTENT_PERCEPTUAL 0

+#define PNG_sRGB_INTENT_RELATIVE   1

+#define PNG_sRGB_INTENT_SATURATION 2

+#define PNG_sRGB_INTENT_ABSOLUTE   3

+#define PNG_sRGB_INTENT_LAST       4 /* Not a valid value */

+

+/* This is for text chunks */

+#define PNG_KEYWORD_MAX_LENGTH     79

+

+/* Maximum number of entries in PLTE/sPLT/tRNS arrays */

+#define PNG_MAX_PALETTE_LENGTH    256

+

+/* These determine if an ancillary chunk's data has been successfully read

+ * from the PNG header, or if the application has filled in the corresponding

+ * data in the info_struct to be written into the output file.  The values

+ * of the PNG_INFO_<chunk> defines should NOT be changed.

+ */

+#define PNG_INFO_gAMA 0x0001

+#define PNG_INFO_sBIT 0x0002

+#define PNG_INFO_cHRM 0x0004

+#define PNG_INFO_PLTE 0x0008

+#define PNG_INFO_tRNS 0x0010

+#define PNG_INFO_bKGD 0x0020

+#define PNG_INFO_hIST 0x0040

+#define PNG_INFO_pHYs 0x0080

+#define PNG_INFO_oFFs 0x0100

+#define PNG_INFO_tIME 0x0200

+#define PNG_INFO_pCAL 0x0400

+#define PNG_INFO_sRGB 0x0800   /* GR-P, 0.96a */

+#define PNG_INFO_iCCP 0x1000   /* ESR, 1.0.6 */

+#define PNG_INFO_sPLT 0x2000   /* ESR, 1.0.6 */

+#define PNG_INFO_sCAL 0x4000   /* ESR, 1.0.6 */

+#define PNG_INFO_IDAT 0x8000L  /* ESR, 1.0.6 */

+

+/* This is used for the transformation routines, as some of them

+ * change these values for the row.  It also should enable using

+ * the routines for other purposes.

+ */

+typedef struct png_row_info_struct

+{

+   png_uint_32 width;    /* width of row */

+   png_size_t rowbytes;  /* number of bytes in row */

+   png_byte color_type;  /* color type of row */

+   png_byte bit_depth;   /* bit depth of row */

+   png_byte channels;    /* number of channels (1, 2, 3, or 4) */

+   png_byte pixel_depth; /* bits per pixel (depth * channels) */

+} png_row_info;

+

+typedef png_row_info FAR * png_row_infop;

+typedef png_row_info FAR * FAR * png_row_infopp;

+

+/* These are the function types for the I/O functions and for the functions

+ * that allow the user to override the default I/O functions with his or her

+ * own.  The png_error_ptr type should match that of user-supplied warning

+ * and error functions, while the png_rw_ptr type should match that of the

+ * user read/write data functions.  Note that the 'write' function must not

+ * modify the buffer it is passed. The 'read' function, on the other hand, is

+ * expected to return the read data in the buffer.

+ */

+typedef struct png_struct_def png_struct;

+typedef PNG_CONST png_struct FAR * png_const_structp;

+typedef png_struct FAR * png_structp;

+

+typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp), );

+typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t), );

+typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp), );

+typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, 

+    int), );

+typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, 

+    int), );

+

+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED

+typedef PNG_CALLBACK(void, *png_progressive_info_ptr, 

+    (png_structp, png_infop), );

+typedef PNG_CALLBACK(void, *png_progressive_end_ptr,

+    (png_structp, png_infop), );

+typedef PNG_CALLBACK(void, *png_progressive_row_ptr,

+    (png_structp, png_bytep, png_uint_32, int), );

+#endif

+

+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \

+    defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)

+typedef PNG_CALLBACK(void, *png_user_transform_ptr,

+    (png_structp, png_row_infop, png_bytep), );

+#endif

+

+#ifdef PNG_USER_CHUNKS_SUPPORTED

+typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, 

+    png_unknown_chunkp), );

+#endif

+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED

+typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp), );

+#endif

+

+#ifdef PNG_SETJMP_SUPPORTED

+/* This must match the function definition in <setjmp.h>, and the

+ * application must include this before png.h to obtain the definition

+ * of jmp_buf.  The function is required to be PNG_NORETURN.  (Note that

+ * PNG_PTR_NORETURN is used here because current versions of the Microsoft

+ * C compiler do not support the PNG_NORETURN attribute on a pointer.)

+ *

+ * If you get a type warning from the compiler when linking against this line

+ * then your compiler has 'longjmp' that does not match the requirements of the

+ * compiler that built libpng.  You will have to write a wrapper function for

+ * your compiler's longjmp and call png_set_longjmp_fn directly (not via the

+ * png_jmpbuf macro.)

+ *

+ * If you get a warning here while building the library you will need to make

+ * changes to ensure that pnglibconf.h records the calling convention used by

+ * your compiler.  This may be very difficult - try using a different compiler

+ * to build the library!

+ */

+typedef PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), 

+   PNG_PTR_NORETURN);

+#endif

+

+/* Transform masks for the high-level interface */

+#define PNG_TRANSFORM_IDENTITY       0x0000    /* read and write */

+#define PNG_TRANSFORM_STRIP_16       0x0001    /* read only */

+#define PNG_TRANSFORM_STRIP_ALPHA    0x0002    /* read only */

+#define PNG_TRANSFORM_PACKING        0x0004    /* read and write */

+#define PNG_TRANSFORM_PACKSWAP       0x0008    /* read and write */

+#define PNG_TRANSFORM_EXPAND         0x0010    /* read only */

+#define PNG_TRANSFORM_INVERT_MONO    0x0020    /* read and write */

+#define PNG_TRANSFORM_SHIFT          0x0040    /* read and write */

+#define PNG_TRANSFORM_BGR            0x0080    /* read and write */

+#define PNG_TRANSFORM_SWAP_ALPHA     0x0100    /* read and write */

+#define PNG_TRANSFORM_SWAP_ENDIAN    0x0200    /* read and write */

+#define PNG_TRANSFORM_INVERT_ALPHA   0x0400    /* read and write */

+#define PNG_TRANSFORM_STRIP_FILLER   0x0800    /* write only */

+/* Added to libpng-1.2.34 */

+#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER

+#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */

+/* Added to libpng-1.4.0 */

+#define PNG_TRANSFORM_GRAY_TO_RGB   0x2000      /* read only */

+

+/* Flags for MNG supported features */

+#define PNG_FLAG_MNG_EMPTY_PLTE     0x01

+#define PNG_FLAG_MNG_FILTER_64      0x04

+#define PNG_ALL_MNG_FEATURES        0x05

+

+/* NOTE: prior to 1.5 these functions had no 'API' style declaration, 

+ * this allowed the zlib default functions to be used on Windows

+ * platforms.  In 1.5 the zlib default malloc (which just calls malloc and

+ * ignores the first argument) should be completely compatible with the

+ * following.

+ */

+typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, 

+    png_alloc_size_t), );

+typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp), );

+

+typedef png_struct FAR * FAR * png_structpp;

+

+/* Section 3: exported functions

+ * Here are the function definitions most commonly used.  This is not

+ * the place to find out how to use libpng.  See libpng-manual.txt for the

+ * full explanation, see example.c for the summary.  This just provides

+ * a simple one line description of the use of each function.

+ *

+ * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in

+ * pngconf.h and in the *.dfn files in the scripts directory.

+ *

+ *   PNG_EXPORT(ordinal, type, name, (args));

+ *

+ *       ordinal:    ordinal that is used while building

+ *                   *.def files. The ordinal value is only

+ *                   relevant when preprocessing png.h with

+ *                   the *.dfn files for building symbol table

+ *                   entries, and are removed by pngconf.h.

+ *       type:       return type of the function

+ *       name:       function name

+ *       args:       function arguments, with types

+ *

+ * When we wish to append attributes to a function prototype we use

+ * the PNG_EXPORTA() macro instead.

+ *

+ *   PNG_EXPORTA(ordinal, type, name, (args), attributes);

+ *

+ *       ordinal, type, name, and args: same as in PNG_EXPORT().

+ *       attributes: function attributes

+ */

+

+/* Returns the version number of the library */

+PNG_EXPORT(1, png_uint_32, png_access_version_number, (void));

+

+/* Tell lib we have already handled the first <num_bytes> magic bytes.

+ * Handling more than 8 bytes from the beginning of the file is an error.

+ */

+PNG_EXPORT(2, void, png_set_sig_bytes, (png_structp png_ptr, int num_bytes));

+

+/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a

+ * PNG file.  Returns zero if the supplied bytes match the 8-byte PNG

+ * signature, and non-zero otherwise.  Having num_to_check == 0 or

+ * start > 7 will always fail (ie return non-zero).

+ */

+PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, 

+    png_size_t num_to_check));

+

+/* Simple signature checking function.  This is the same as calling

+ * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).

+ */

+#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n))

+

+/* Allocate and initialize png_ptr struct for reading, and any other memory. */

+PNG_EXPORTA(4, png_structp, png_create_read_struct,

+    (png_const_charp user_png_ver, png_voidp error_ptr,

+    png_error_ptr error_fn, png_error_ptr warn_fn), 

+    PNG_ALLOCATED);

+

+/* Allocate and initialize png_ptr struct for writing, and any other memory */

+PNG_EXPORTA(5, png_structp, png_create_write_struct,

+    (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,

+    png_error_ptr warn_fn), 

+    PNG_ALLOCATED);

+

+PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size,

+    (png_const_structp png_ptr));

+

+PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structp png_ptr, 

+    png_size_t size));

+

+/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp

+ * match up.

+ */

+#ifdef PNG_SETJMP_SUPPORTED

+/* This function returns the jmp_buf built in to *png_ptr.  It must be

+ * supplied with an appropriate 'longjmp' function to use on that jmp_buf

+ * unless the default error function is overridden in which case NULL is

+ * acceptable.  The size of the jmp_buf is checked against the actual size

+ * allocated by the library - the call will return NULL on a mismatch

+ * indicating an ABI mismatch.

+ */

+PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structp png_ptr, 

+    png_longjmp_ptr longjmp_fn, size_t jmp_buf_size));

+#  define png_jmpbuf(png_ptr) \

+      (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf)))

+#else

+#  define png_jmpbuf(png_ptr) \

+      (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP)

+#endif

+/* This function should be used by libpng applications in place of

+ * longjmp(png_ptr->jmpbuf, val).  If longjmp_fn() has been set, it

+ * will use it; otherwise it will call PNG_ABORT().  This function was

+ * added in libpng-1.5.0.

+ */

+PNG_EXPORTA(9, void, png_longjmp, (png_structp png_ptr, int val),

+    PNG_NORETURN);

+

+#ifdef PNG_READ_SUPPORTED

+/* Reset the compression stream */

+PNG_EXPORT(10, int, png_reset_zstream, (png_structp png_ptr));

+#endif

+

+/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */

+#ifdef PNG_USER_MEM_SUPPORTED

+PNG_EXPORTA(11, png_structp, png_create_read_struct_2,

+    (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,

+    png_error_ptr warn_fn, 

+    png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), 

+    PNG_ALLOCATED);

+PNG_EXPORTA(12, png_structp, png_create_write_struct_2,

+    (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,

+    png_error_ptr warn_fn, 

+    png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), 

+    PNG_ALLOCATED);

+#endif

+

+/* Write the PNG file signature. */

+PNG_EXPORT(13, void, png_write_sig, (png_structp png_ptr));

+

+/* Write a PNG chunk - size, type, (optional) data, CRC. */

+PNG_EXPORT(14, void, png_write_chunk, (png_structp png_ptr, png_const_bytep

+    chunk_name, png_const_bytep data, png_size_t length));

+

+/* Write the start of a PNG chunk - length and chunk name. */

+PNG_EXPORT(15, void, png_write_chunk_start, (png_structp png_ptr, 

+    png_const_bytep chunk_name, png_uint_32 length));

+

+/* Write the data of a PNG chunk started with png_write_chunk_start(). */

+PNG_EXPORT(16, void, png_write_chunk_data, (png_structp png_ptr,

+    png_const_bytep data, png_size_t length));

+

+/* Finish a chunk started with png_write_chunk_start() (includes CRC). */

+PNG_EXPORT(17, void, png_write_chunk_end, (png_structp png_ptr));

+

+/* Allocate and initialize the info structure */

+PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_structp png_ptr), 

+    PNG_ALLOCATED);

+

+PNG_EXPORT(19, void, png_info_init_3, (png_infopp info_ptr, 

+    png_size_t png_info_struct_size));

+

+/* Writes all the PNG information before the image. */

+PNG_EXPORT(20, void, png_write_info_before_PLTE,

+    (png_structp png_ptr, png_infop info_ptr));

+PNG_EXPORT(21, void, png_write_info,

+    (png_structp png_ptr, png_infop info_ptr));

+

+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED

+/* Read the information before the actual image data. */

+PNG_EXPORT(22, void, png_read_info,

+    (png_structp png_ptr, png_infop info_ptr));

+#endif

+

+#ifdef PNG_TIME_RFC1123_SUPPORTED

+PNG_EXPORT(23, png_const_charp, png_convert_to_rfc1123,

+    (png_structp png_ptr, 

+    png_const_timep ptime));

+#endif

+

+#ifdef PNG_CONVERT_tIME_SUPPORTED

+/* Convert from a struct tm to png_time */

+PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, 

+    PNG_CONST struct tm FAR * ttime));

+

+/* Convert from time_t to png_time.  Uses gmtime() */

+PNG_EXPORT(25, void, png_convert_from_time_t,

+    (png_timep ptime, time_t ttime));

+#endif /* PNG_CONVERT_tIME_SUPPORTED */

+

+#ifdef PNG_READ_EXPAND_SUPPORTED

+/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */

+PNG_EXPORT(26, void, png_set_expand, (png_structp png_ptr));

+PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structp png_ptr));

+PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structp png_ptr));

+PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structp png_ptr));

+#endif

+

+#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)

+/* Use blue, green, red order for pixels. */

+PNG_EXPORT(30, void, png_set_bgr, (png_structp png_ptr));

+#endif

+

+#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED

+/* Expand the grayscale to 24-bit RGB if necessary. */

+PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structp png_ptr));

+#endif

+

+#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED

+/* Reduce RGB to grayscale. */

+PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structp png_ptr,

+    int error_action, double red, double green));

+PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structp png_ptr, 

+    int error_action, png_fixed_point red, png_fixed_point green));

+

+PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structp

+    png_ptr));

+#endif

+

+PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, 

+    png_colorp palette));

+

+#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED

+PNG_EXPORT(36, void, png_set_strip_alpha, (png_structp png_ptr));

+#endif

+

+#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \

+    defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)

+PNG_EXPORT(37, void, png_set_swap_alpha, (png_structp png_ptr));

+#endif

+

+#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \

+    defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)

+PNG_EXPORT(38, void, png_set_invert_alpha, (png_structp png_ptr));

+#endif

+

+#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)

+/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */

+PNG_EXPORT(39, void, png_set_filler, (png_structp png_ptr, png_uint_32 filler, 

+    int flags));

+/* The values of the PNG_FILLER_ defines should NOT be changed */

+#  define PNG_FILLER_BEFORE 0

+#  define PNG_FILLER_AFTER 1

+/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */

+PNG_EXPORT(40, void, png_set_add_alpha,

+    (png_structp png_ptr, png_uint_32 filler, 

+    int flags));

+#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */

+

+#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)

+/* Swap bytes in 16-bit depth files. */

+PNG_EXPORT(41, void, png_set_swap, (png_structp png_ptr));

+#endif

+

+#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)

+/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */

+PNG_EXPORT(42, void, png_set_packing, (png_structp png_ptr));

+#endif

+

+#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \

+    defined(PNG_WRITE_PACKSWAP_SUPPORTED)

+/* Swap packing order of pixels in bytes. */

+PNG_EXPORT(43, void, png_set_packswap, (png_structp png_ptr));

+#endif

+

+#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)

+/* Converts files to legal bit depths. */

+PNG_EXPORT(44, void, png_set_shift, (png_structp png_ptr, png_const_color_8p

+    true_bits));

+#endif

+

+#if defined(PNG_READ_INTERLACING_SUPPORTED) || \

+    defined(PNG_WRITE_INTERLACING_SUPPORTED)

+/* Have the code handle the interlacing.  Returns the number of passes.

+ * MUST be called before png_read_update_info or png_start_read_image,

+ * otherwise it will not have the desired effect.  Note that it is still

+ * necessary to call png_read_row or png_read_rows png_get_image_height

+ * times for each pass.

+*/

+PNG_EXPORT(45, int, png_set_interlace_handling, (png_structp png_ptr));

+#endif

+

+#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)

+/* Invert monochrome files */

+PNG_EXPORT(46, void, png_set_invert_mono, (png_structp png_ptr));

+#endif

+

+#ifdef PNG_READ_BACKGROUND_SUPPORTED

+/* Handle alpha and tRNS by replacing with a background color. */

+PNG_FP_EXPORT(47, void, png_set_background, (png_structp png_ptr, 

+    png_const_color_16p background_color, int background_gamma_code, 

+    int need_expand, double background_gamma));

+PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structp png_ptr,

+    png_const_color_16p background_color, int background_gamma_code, 

+    int need_expand, png_fixed_point background_gamma));

+#endif

+#ifdef PNG_READ_BACKGROUND_SUPPORTED

+#  define PNG_BACKGROUND_GAMMA_UNKNOWN 0

+#  define PNG_BACKGROUND_GAMMA_SCREEN  1

+#  define PNG_BACKGROUND_GAMMA_FILE    2

+#  define PNG_BACKGROUND_GAMMA_UNIQUE  3

+#endif

+

+#ifdef PNG_READ_16_TO_8_SUPPORTED

+/* Strip the second byte of information from a 16-bit depth file. */

+PNG_EXPORT(48, void, png_set_strip_16, (png_structp png_ptr));

+#endif

+

+#ifdef PNG_READ_QUANTIZE_SUPPORTED

+/* Turn on quantizing, and reduce the palette to the number of colors

+ * available.

+ */

+PNG_EXPORT(49, void, png_set_quantize,

+    (png_structp png_ptr, png_colorp palette, 

+    int num_palette, int maximum_colors, png_const_uint_16p histogram, 

+    int full_quantize));

+#endif

+

+#ifdef PNG_READ_GAMMA_SUPPORTED

+/* The threshold on gamma processing is configurable but hard-wired into the

+ * library.  The following is the floating point variant.

+ */

+#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001)

+

+/* Handle gamma correction. Screen_gamma=(display_exponent) */

+PNG_FP_EXPORT(50, void, png_set_gamma,

+    (png_structp png_ptr, double screen_gamma, 

+    double default_file_gamma));

+PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structp png_ptr, 

+    png_fixed_point screen_gamma, png_fixed_point default_file_gamma));

+#endif

+

+#ifdef PNG_WRITE_FLUSH_SUPPORTED

+/* Set how many lines between output flushes - 0 for no flushing */

+PNG_EXPORT(51, void, png_set_flush, (png_structp png_ptr, int nrows));

+/* Flush the current PNG output buffer */

+PNG_EXPORT(52, void, png_write_flush, (png_structp png_ptr));

+#endif

+

+/* Optional update palette with requested transformations */

+PNG_EXPORT(53, void, png_start_read_image, (png_structp png_ptr));

+

+/* Optional call to update the users info structure */

+PNG_EXPORT(54, void, png_read_update_info,

+    (png_structp png_ptr, png_infop info_ptr));

+

+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED

+/* Read one or more rows of image data. */

+PNG_EXPORT(55, void, png_read_rows, (png_structp png_ptr, png_bytepp row, 

+    png_bytepp display_row, png_uint_32 num_rows));

+#endif

+

+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED

+/* Read a row of data. */

+PNG_EXPORT(56, void, png_read_row, (png_structp png_ptr, png_bytep row, 

+    png_bytep display_row));

+#endif

+

+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED

+/* Read the whole image into memory at once. */

+PNG_EXPORT(57, void, png_read_image, (png_structp png_ptr, png_bytepp image));

+#endif

+

+/* Write a row of image data */

+PNG_EXPORT(58, void, png_write_row,

+    (png_structp png_ptr, png_const_bytep row));

+

+/* Write a few rows of image data: (*row) is not written; however, the type

+ * is declared as writeable to maintain compatibility with previous versions

+ * of libpng and to allow the 'display_row' array from read_rows to be passed

+ * unchanged to write_rows.

+ */

+PNG_EXPORT(59, void, png_write_rows, (png_structp png_ptr, png_bytepp row, 

+    png_uint_32 num_rows));

+

+/* Write the image data */

+PNG_EXPORT(60, void, png_write_image,

+    (png_structp png_ptr, png_bytepp image));

+

+/* Write the end of the PNG file. */

+PNG_EXPORT(61, void, png_write_end,

+    (png_structp png_ptr, png_infop info_ptr));

+

+#ifdef PNG_SEQUENTIAL_READ_SUPPORTED

+/* Read the end of the PNG file. */

+PNG_EXPORT(62, void, png_read_end, (png_structp png_ptr, png_infop info_ptr));

+#endif

+

+/* Free any memory associated with the png_info_struct */

+PNG_EXPORT(63, void, png_destroy_info_struct, (png_structp png_ptr, 

+    png_infopp info_ptr_ptr));

+

+/* Free any memory associated with the png_struct and the png_info_structs */

+PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, 

+    png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));

+

+/* Free any memory associated with the png_struct and the png_info_structs */

+PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, 

+    png_infopp info_ptr_ptr));

+

+/* Set the libpng method of handling chunk CRC errors */

+PNG_EXPORT(66, void, png_set_crc_action,

+    (png_structp png_ptr, int crit_action, int ancil_action));

+

+/* Values for png_set_crc_action() say how to handle CRC errors in

+ * ancillary and critical chunks, and whether to use the data contained

+ * therein.  Note that it is impossible to "discard" data in a critical

+ * chunk.  For versions prior to 0.90, the action was always error/quit, 

+ * whereas in version 0.90 and later, the action for CRC errors in ancillary

+ * chunks is warn/discard.  These values should NOT be changed.

+ *

+ *      value                       action:critical     action:ancillary

+ */

+#define PNG_CRC_DEFAULT       0  /* error/quit          warn/discard data */

+#define PNG_CRC_ERROR_QUIT    1  /* error/quit          error/quit        */

+#define PNG_CRC_WARN_DISCARD  2  /* (INVALID)           warn/discard data */

+#define PNG_CRC_WARN_USE      3  /* warn/use data       warn/use data     */

+#define PNG_CRC_QUIET_USE     4  /* quiet/use data      quiet/use data    */

+#define PNG_CRC_NO_CHANGE     5  /* use current value   use current value */

+

+/* These functions give the user control over the scan-line filtering in

+ * libpng and the compression methods used by zlib.  These functions are

+ * mainly useful for testing, as the defaults should work with most users.

+ * Those users who are tight on memory or want faster performance at the

+ * expense of compression can modify them.  See the compression library

+ * header file (zlib.h) for an explination of the compression functions.

+ */

+

+/* Set the filtering method(s) used by libpng.  Currently, the only valid

+ * value for "method" is 0.

+ */

+PNG_EXPORT(67, void, png_set_filter,

+    (png_structp png_ptr, int method, int filters));

+

+/* Flags for png_set_filter() to say which filters to use.  The flags

+ * are chosen so that they don't conflict with real filter types

+ * below, in case they are supplied instead of the #defined constants.

+ * These values should NOT be changed.

+ */

+#define PNG_NO_FILTERS     0x00

+#define PNG_FILTER_NONE    0x08

+#define PNG_FILTER_SUB     0x10

+#define PNG_FILTER_UP      0x20

+#define PNG_FILTER_AVG     0x40

+#define PNG_FILTER_PAETH   0x80

+#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \

+                         PNG_FILTER_AVG | PNG_FILTER_PAETH)

+

+/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now.

+ * These defines should NOT be changed.

+ */

+#define PNG_FILTER_VALUE_NONE  0

+#define PNG_FILTER_VALUE_SUB   1

+#define PNG_FILTER_VALUE_UP    2

+#define PNG_FILTER_VALUE_AVG   3

+#define PNG_FILTER_VALUE_PAETH 4

+#define PNG_FILTER_VALUE_LAST  5

+

+#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* EXPERIMENTAL */

+/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_

+ * defines, either the default (minimum-sum-of-absolute-differences), or

+ * the experimental method (weighted-minimum-sum-of-absolute-differences).

+ *

+ * Weights are factors >= 1.0, indicating how important it is to keep the

+ * filter type consistent between rows.  Larger numbers mean the current

+ * filter is that many times as likely to be the same as the "num_weights"

+ * previous filters.  This is cumulative for each previous row with a weight.

+ * There needs to be "num_weights" values in "filter_weights", or it can be

+ * NULL if the weights aren't being specified.  Weights have no influence on

+ * the selection of the first row filter.  Well chosen weights can (in theory)

+ * improve the compression for a given image.

+ *

+ * Costs are factors >= 1.0 indicating the relative decoding costs of a

+ * filter type.  Higher costs indicate more decoding expense, and are

+ * therefore less likely to be selected over a filter with lower computational

+ * costs.  There needs to be a value in "filter_costs" for each valid filter

+ * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't

+ * setting the costs.  Costs try to improve the speed of decompression without

+ * unduly increasing the compressed image size.

+ *

+ * A negative weight or cost indicates the default value is to be used, and

+ * values in the range [0.0, 1.0) indicate the value is to remain unchanged.

+ * The default values for both weights and costs are currently 1.0, but may

+ * change if good general weighting/cost heuristics can be found.  If both

+ * the weights and costs are set to 1.0, this degenerates the WEIGHTED method

+ * to the UNWEIGHTED method, but with added encoding time/computation.

+ */

+PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structp png_ptr, 

+    int heuristic_method, int num_weights, png_const_doublep filter_weights, 

+    png_const_doublep filter_costs));

+PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed,

+    (png_structp png_ptr, 

+    int heuristic_method, int num_weights, png_const_fixed_point_p

+    filter_weights, png_const_fixed_point_p filter_costs));

+#endif /*  PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */

+

+/* Heuristic used for row filter selection.  These defines should NOT be

+ * changed.

+ */

+#define PNG_FILTER_HEURISTIC_DEFAULT    0  /* Currently "UNWEIGHTED" */

+#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1  /* Used by libpng < 0.95 */

+#define PNG_FILTER_HEURISTIC_WEIGHTED   2  /* Experimental feature */

+#define PNG_FILTER_HEURISTIC_LAST       3  /* Not a valid value */

+

+/* Set the library compression level.  Currently, valid values range from

+ * 0 - 9, corresponding directly to the zlib compression levels 0 - 9

+ * (0 - no compression, 9 - "maximal" compression).  Note that tests have

+ * shown that zlib compression levels 3-6 usually perform as well as level 9

+ * for PNG images, and do considerably fewer caclulations.  In the future, 

+ * these values may not correspond directly to the zlib compression levels.

+ */

+PNG_EXPORT(69, void, png_set_compression_level,

+    (png_structp png_ptr, int level));

+

+PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structp png_ptr, 

+    int mem_level));

+

+PNG_EXPORT(71, void, png_set_compression_strategy, (png_structp png_ptr, 

+    int strategy));

+

+PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structp png_ptr, 

+    int window_bits));

+

+PNG_EXPORT(73, void, png_set_compression_method, (png_structp png_ptr,

+    int method));

+

+/* These next functions are called for input/output, memory, and error

+ * handling.  They are in the file pngrio.c, pngwio.c, and pngerror.c, 

+ * and call standard C I/O routines such as fread(), fwrite(), and

+ * fprintf().  These functions can be made to use other I/O routines

+ * at run time for those applications that need to handle I/O in a

+ * different manner by calling png_set_???_fn().  See libpng-manual.txt for

+ * more information.

+ */

+

+#ifdef PNG_STDIO_SUPPORTED

+/* Initialize the input/output for the PNG file to the default functions. */

+PNG_EXPORT(74, void, png_init_io, (png_structp png_ptr, png_FILE_p fp));

+#endif

+

+/* Replace the (error and abort), and warning functions with user

+ * supplied functions.  If no messages are to be printed you must still

+ * write and use replacement functions. The replacement error_fn should

+ * still do a longjmp to the last setjmp location if you are using this

+ * method of error handling.  If error_fn or warning_fn is NULL, the

+ * default function will be used.

+ */

+

+PNG_EXPORT(75, void, png_set_error_fn,

+    (png_structp png_ptr, png_voidp error_ptr, 

+    png_error_ptr error_fn, png_error_ptr warning_fn));

+

+/* Return the user pointer associated with the error functions */

+PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structp png_ptr));

+

+/* Replace the default data output functions with a user supplied one(s).

+ * If buffered output is not used, then output_flush_fn can be set to NULL.

+ * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time

+ * output_flush_fn will be ignored (and thus can be NULL).

+ * It is probably a mistake to use NULL for output_flush_fn if

+ * write_data_fn is not also NULL unless you have built libpng with

+ * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's

+ * default flush function, which uses the standard *FILE structure, will

+ * be used.

+ */

+PNG_EXPORT(77, void, png_set_write_fn, (png_structp png_ptr, png_voidp io_ptr, 

+    png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));

+

+/* Replace the default data input function with a user supplied one. */

+PNG_EXPORT(78, void, png_set_read_fn, (png_structp png_ptr, png_voidp io_ptr, 

+    png_rw_ptr read_data_fn));

+

+/* Return the user pointer associated with the I/O functions */

+PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_structp png_ptr));

+

+PNG_EXPORT(80, void, png_set_read_status_fn, (png_structp png_ptr, 

+    png_read_status_ptr read_row_fn));

+

+PNG_EXPORT(81, void, png_set_write_status_fn, (png_structp png_ptr, 

+    png_write_status_ptr write_row_fn));

+

+#ifdef PNG_USER_MEM_SUPPORTED

+/* Replace the default memory allocation functions with user supplied one(s). */

+PNG_EXPORT(82, void, png_set_mem_fn, (png_structp png_ptr, png_voidp mem_ptr, 

+    png_malloc_ptr malloc_fn, png_free_ptr free_fn));

+/* Return the user pointer associated with the memory functions */

+PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structp png_ptr));

+#endif

+

+#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED

+PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structp png_ptr, 

+    png_user_transform_ptr read_user_transform_fn));

+#endif

+

+#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED

+PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structp png_ptr, 

+    png_user_transform_ptr write_user_transform_fn));

+#endif

+

+#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED

+PNG_EXPORT(86, void, png_set_user_transform_info, (png_structp png_ptr, 

+    png_voidp user_transform_ptr, int user_transform_depth, 

+    int user_transform_channels));

+/* Return the user pointer associated with the user transform functions */

+PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr,

+    (png_const_structp png_ptr));

+#endif

+

+#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED

+/* Return information about the row currently being processed.  Note that these

+ * APIs do not fail but will return unexpected results if called outside a user

+ * transform callback.  Also note that when transforming an interlaced image the

+ * row number is still the row in the final, de-interlaced, image but the row

+ * only contains the data of the current pass - consult png_row_info for the

+ * actual width of the row!

+ */

+PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structp));

+PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structp));

+#endif

+

+#ifdef PNG_USER_CHUNKS_SUPPORTED

+PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structp png_ptr, 

+    png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn));

+PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structp png_ptr));

+#endif

+

+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED

+/* Sets the function callbacks for the push reader, and a pointer to a

+ * user-defined structure available to the callback functions.

+ */

+PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structp png_ptr, 

+    png_voidp progressive_ptr, png_progressive_info_ptr info_fn, 

+    png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn));

+

+/* Returns the user pointer associated with the push read functions */

+PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, (png_const_structp png_ptr));

+

+/* Function to be called when data becomes available */

+PNG_EXPORT(92, void, png_process_data,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_bytep buffer, png_size_t buffer_size));

+

+/* A function which may be called *only* within png_process_data to stop the

+ * processing of any more data.  The function returns the number of bytes

+ * remaining, excluding any that libpng has cached internally.  A subsequent

+ * call to png_process_data must supply these bytes again.  If the argument

+ * 'save' is set to true the routine will first save all the pending data and

+ * will always return 0.

+ */

+PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structp, int save));

+

+/* A function which may be called *only* outside (after) a call to

+ * png_process_data.  It returns the number of bytes of data to skip in the

+ * input.  Normally it will return 0, but if it returns a non-zero value the

+ * application must skip than number of bytes of input data and pass the

+ * following data to the next call to png_process_data.

+ */

+PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structp));

+

+/* Function that combines rows.  'new_row' is a flag that should come from

+ * the callback and be non-NULL if anything needs to be done; the library

+ * stores its own version of the new data internally and ignores the passed

+ * in value.

+ */

+PNG_EXPORT(93, void, png_progressive_combine_row, (png_structp png_ptr, 

+    png_bytep old_row, png_const_bytep new_row));

+#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */

+

+PNG_EXPORTA(94, png_voidp, png_malloc,

+    (png_structp png_ptr, png_alloc_size_t size), 

+    PNG_ALLOCATED);

+/* Added at libpng version 1.4.0 */

+PNG_EXPORTA(95, png_voidp, png_calloc,

+    (png_structp png_ptr, png_alloc_size_t size), 

+    PNG_ALLOCATED);

+

+/* Added at libpng version 1.2.4 */

+PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_structp png_ptr, 

+    png_alloc_size_t size), PNG_ALLOCATED);

+

+/* Frees a pointer allocated by png_malloc() */

+PNG_EXPORT(97, void, png_free, (png_structp png_ptr, png_voidp ptr));

+

+/* Free data that was allocated internally */

+PNG_EXPORT(98, void, png_free_data,

+    (png_structp png_ptr, png_infop info_ptr, png_uint_32 free_me, int num));

+

+/* Reassign responsibility for freeing existing data, whether allocated

+ * by libpng or by the application */

+PNG_EXPORT(99, void, png_data_freer,

+    (png_structp png_ptr, png_infop info_ptr, int freer, png_uint_32 mask));

+

+/* Assignments for png_data_freer */

+#define PNG_DESTROY_WILL_FREE_DATA 1

+#define PNG_SET_WILL_FREE_DATA 1

+#define PNG_USER_WILL_FREE_DATA 2

+/* Flags for png_ptr->free_me and info_ptr->free_me */

+#define PNG_FREE_HIST 0x0008

+#define PNG_FREE_ICCP 0x0010

+#define PNG_FREE_SPLT 0x0020

+#define PNG_FREE_ROWS 0x0040

+#define PNG_FREE_PCAL 0x0080

+#define PNG_FREE_SCAL 0x0100

+#define PNG_FREE_UNKN 0x0200

+#define PNG_FREE_LIST 0x0400

+#define PNG_FREE_PLTE 0x1000

+#define PNG_FREE_TRNS 0x2000

+#define PNG_FREE_TEXT 0x4000

+#define PNG_FREE_ALL  0x7fff

+#define PNG_FREE_MUL  0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */

+

+#ifdef PNG_USER_MEM_SUPPORTED

+PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_structp png_ptr, 

+    png_alloc_size_t size), PNG_ALLOCATED);

+PNG_EXPORT(101, void, png_free_default, (png_structp png_ptr, png_voidp ptr));

+#endif

+

+#ifdef PNG_ERROR_TEXT_SUPPORTED

+/* Fatal error in PNG image of libpng - can't continue */

+PNG_EXPORTA(102, void, png_error,

+    (png_structp png_ptr, png_const_charp error_message), 

+    PNG_NORETURN);

+

+/* The same, but the chunk name is prepended to the error string. */

+PNG_EXPORTA(103, void, png_chunk_error, (png_structp png_ptr, 

+    png_const_charp error_message), PNG_NORETURN);

+

+#else

+/* Fatal error in PNG image of libpng - can't continue */

+PNG_EXPORTA(104, void, png_err, (png_structp png_ptr), PNG_NORETURN);

+#endif

+

+/* Non-fatal error in libpng.  Can continue, but may have a problem. */

+PNG_EXPORT(105, void, png_warning, (png_structp png_ptr, 

+    png_const_charp warning_message));

+

+/* Non-fatal error in libpng, chunk name is prepended to message. */

+PNG_EXPORT(106, void, png_chunk_warning, (png_structp png_ptr, 

+    png_const_charp warning_message));

+

+#ifdef PNG_BENIGN_ERRORS_SUPPORTED

+/* Benign error in libpng.  Can continue, but may have a problem.

+ * User can choose whether to handle as a fatal error or as a warning. */

+#  undef png_benign_error

+PNG_EXPORT(107, void, png_benign_error, (png_structp png_ptr, 

+    png_const_charp warning_message));

+

+/* Same, chunk name is prepended to message. */

+#  undef png_chunk_benign_error

+PNG_EXPORT(108, void, png_chunk_benign_error, (png_structp png_ptr, 

+    png_const_charp warning_message));

+

+PNG_EXPORT(109, void, png_set_benign_errors,

+    (png_structp png_ptr, int allowed));

+#else

+#  ifdef PNG_ALLOW_BENIGN_ERRORS

+#    define png_benign_error png_warning

+#    define png_chunk_benign_error png_chunk_warning

+#  else

+#    define png_benign_error png_error

+#    define png_chunk_benign_error png_chunk_error

+#  endif

+#endif

+

+/* The png_set_<chunk> functions are for storing values in the png_info_struct.

+ * Similarly, the png_get_<chunk> calls are used to read values from the

+ * png_info_struct, either storing the parameters in the passed variables, or

+ * setting pointers into the png_info_struct where the data is stored.  The

+ * png_get_<chunk> functions return a non-zero value if the data was available

+ * in info_ptr, or return zero and do not change any of the parameters if the

+ * data was not available.

+ *

+ * These functions should be used instead of directly accessing png_info

+ * to avoid problems with future changes in the size and internal layout of

+ * png_info_struct.

+ */

+/* Returns "flag" if chunk data is valid in info_ptr. */

+PNG_EXPORT(110, png_uint_32, png_get_valid,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_uint_32 flag));

+

+/* Returns number of bytes needed to hold a transformed row. */

+PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structp png_ptr, 

+    png_const_infop info_ptr));

+

+#ifdef PNG_INFO_IMAGE_SUPPORTED

+/* Returns row_pointers, which is an array of pointers to scanlines that was

+ * returned from png_read_png().

+ */

+PNG_EXPORT(112, png_bytepp, png_get_rows,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+/* Set row_pointers, which is an array of pointers to scanlines for use

+ * by png_write_png().

+ */

+PNG_EXPORT(113, void, png_set_rows, (png_structp png_ptr,

+    png_infop info_ptr, png_bytepp row_pointers));

+#endif

+

+/* Returns number of color channels in image. */

+PNG_EXPORT(114, png_byte, png_get_channels,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+

+#ifdef PNG_EASY_ACCESS_SUPPORTED

+/* Returns image width in pixels. */

+PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structp png_ptr, 

+    png_const_infop info_ptr));

+

+/* Returns image height in pixels. */

+PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structp png_ptr, 

+    png_const_infop info_ptr));

+

+/* Returns image bit_depth. */

+PNG_EXPORT(117, png_byte, png_get_bit_depth,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+

+/* Returns image color_type. */

+PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structp png_ptr, 

+    png_const_infop info_ptr));

+

+/* Returns image filter_type. */

+PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structp png_ptr, 

+    png_const_infop info_ptr));

+

+/* Returns image interlace_type. */

+PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structp png_ptr, 

+    png_const_infop info_ptr));

+

+/* Returns image compression_type. */

+PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structp png_ptr, 

+    png_const_infop info_ptr));

+

+/* Returns image resolution in pixels per meter, from pHYs chunk data. */

+PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+

+/* Returns pixel aspect ratio, computed from pHYs chunk data.  */

+PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, 

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+

+/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */

+PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+PNG_EXPORT(128, png_int_32, png_get_x_offset_microns,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+PNG_EXPORT(129, png_int_32, png_get_y_offset_microns,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+

+#endif /* PNG_EASY_ACCESS_SUPPORTED */

+

+/* Returns pointer to signature string read from PNG header */

+PNG_EXPORT(130, png_const_bytep, png_get_signature,

+    (png_const_structp png_ptr, png_infop info_ptr));

+

+#ifdef PNG_bKGD_SUPPORTED

+PNG_EXPORT(131, png_uint_32, png_get_bKGD,

+    (png_const_structp png_ptr, png_infop info_ptr, 

+    png_color_16p *background));

+#endif

+

+#ifdef PNG_bKGD_SUPPORTED

+PNG_EXPORT(132, void, png_set_bKGD, (png_structp png_ptr, png_infop info_ptr, 

+    png_const_color_16p background));

+#endif

+

+#ifdef PNG_cHRM_SUPPORTED

+PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structp png_ptr, 

+   png_const_infop info_ptr, double *white_x, double *white_y, double *red_x, 

+    double *red_y, double *green_x, double *green_y, double *blue_x, 

+    double *blue_y));

+#ifdef PNG_FIXED_POINT_SUPPORTED /* Otherwise not implemented */

+PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed,

+    (png_const_structp png_ptr, 

+    png_const_infop info_ptr, png_fixed_point *int_white_x, 

+    png_fixed_point *int_white_y, png_fixed_point *int_red_x, 

+    png_fixed_point *int_red_y, png_fixed_point *int_green_x, 

+    png_fixed_point *int_green_y, png_fixed_point *int_blue_x, 

+    png_fixed_point *int_blue_y));

+#endif

+#endif

+

+#ifdef PNG_cHRM_SUPPORTED

+PNG_FP_EXPORT(135, void, png_set_cHRM,

+    (png_structp png_ptr, png_infop info_ptr, 

+    double white_x, double white_y, double red_x, double red_y, double green_x, 

+    double green_y, double blue_x, double blue_y));

+PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_structp png_ptr, 

+    png_infop info_ptr, png_fixed_point int_white_x, 

+    png_fixed_point int_white_y, png_fixed_point int_red_x, 

+    png_fixed_point int_red_y, png_fixed_point int_green_x, 

+    png_fixed_point int_green_y, png_fixed_point int_blue_x, 

+    png_fixed_point int_blue_y));

+#endif

+

+#ifdef PNG_gAMA_SUPPORTED

+PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    double *file_gamma));

+PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed,

+    (png_const_structp png_ptr, png_const_infop info_ptr,

+    png_fixed_point *int_file_gamma));

+#endif

+

+#ifdef PNG_gAMA_SUPPORTED

+PNG_FP_EXPORT(139, void, png_set_gAMA, (png_structp png_ptr,

+    png_infop info_ptr, double file_gamma));

+PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_structp png_ptr, 

+    png_infop info_ptr, png_fixed_point int_file_gamma));

+#endif

+

+#ifdef PNG_hIST_SUPPORTED

+PNG_EXPORT(141, png_uint_32, png_get_hIST,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_uint_16p *hist));

+#endif

+

+#ifdef PNG_hIST_SUPPORTED

+PNG_EXPORT(142, void, png_set_hIST, (png_structp png_ptr,

+    png_infop info_ptr, png_const_uint_16p hist));

+#endif

+

+PNG_EXPORT(143, png_uint_32, png_get_IHDR,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_uint_32 *width, png_uint_32 *height, int *bit_depth, int *color_type, 

+    int *interlace_method, int *compression_method, int *filter_method));

+

+PNG_EXPORT(144, void, png_set_IHDR,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, 

+    int interlace_method, int compression_method, int filter_method));

+

+#ifdef PNG_oFFs_SUPPORTED

+PNG_EXPORT(145, png_uint_32, png_get_oFFs,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type));

+#endif

+

+#ifdef PNG_oFFs_SUPPORTED

+PNG_EXPORT(146, void, png_set_oFFs,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_int_32 offset_x, png_int_32 offset_y, int unit_type));

+#endif

+

+#ifdef PNG_pCAL_SUPPORTED

+PNG_EXPORT(147, png_uint_32, png_get_pCAL,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type,

+    int *nparams, 

+    png_charp *units, png_charpp *params));

+#endif

+

+#ifdef PNG_pCAL_SUPPORTED

+PNG_EXPORT(148, void, png_set_pCAL, (png_structp png_ptr,

+    png_infop info_ptr, 

+    png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type, 

+    int nparams, png_const_charp units, png_charpp params));

+#endif

+

+#ifdef PNG_pHYs_SUPPORTED

+PNG_EXPORT(149, png_uint_32, png_get_pHYs,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));

+#endif

+

+#ifdef PNG_pHYs_SUPPORTED

+PNG_EXPORT(150, void, png_set_pHYs,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_uint_32 res_x, png_uint_32 res_y, int unit_type));

+#endif

+

+PNG_EXPORT(151, png_uint_32, png_get_PLTE,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_colorp *palette, int *num_palette));

+

+PNG_EXPORT(152, void, png_set_PLTE,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_const_colorp palette, int num_palette));

+

+#ifdef PNG_sBIT_SUPPORTED

+PNG_EXPORT(153, png_uint_32, png_get_sBIT,

+    (png_const_structp png_ptr, png_infop info_ptr, 

+    png_color_8p *sig_bit));

+#endif

+

+#ifdef PNG_sBIT_SUPPORTED

+PNG_EXPORT(154, void, png_set_sBIT,

+    (png_structp png_ptr, png_infop info_ptr, png_const_color_8p sig_bit));

+#endif

+

+#ifdef PNG_sRGB_SUPPORTED

+PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structp png_ptr,

+    png_const_infop info_ptr, int *file_srgb_intent));

+#endif

+

+#ifdef PNG_sRGB_SUPPORTED

+PNG_EXPORT(156, void, png_set_sRGB,

+    (png_structp png_ptr, png_infop info_ptr, int srgb_intent));

+PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_structp png_ptr, 

+    png_infop info_ptr, int srgb_intent));

+#endif

+

+#ifdef PNG_iCCP_SUPPORTED

+PNG_EXPORT(158, png_uint_32, png_get_iCCP,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_charpp name, int *compression_type, png_bytepp profile, 

+    png_uint_32 *proflen));

+#endif

+

+#ifdef PNG_iCCP_SUPPORTED

+PNG_EXPORT(159, void, png_set_iCCP,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_const_charp name, int compression_type, png_const_bytep profile, 

+    png_uint_32 proflen));

+#endif

+

+#ifdef PNG_sPLT_SUPPORTED

+PNG_EXPORT(160, png_uint_32, png_get_sPLT,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_sPLT_tpp entries));

+#endif

+

+#ifdef PNG_sPLT_SUPPORTED

+PNG_EXPORT(161, void, png_set_sPLT,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_const_sPLT_tp entries, int nentries));

+#endif

+

+#ifdef PNG_TEXT_SUPPORTED

+/* png_get_text also returns the number of text chunks in *num_text */

+PNG_EXPORT(162, png_uint_32, png_get_text,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    png_textp *text_ptr, int *num_text));

+#endif

+

+/* Note while png_set_text() will accept a structure whose text, 

+ * language, and  translated keywords are NULL pointers, the structure

+ * returned by png_get_text will always contain regular

+ * zero-terminated C strings.  They might be empty strings but

+ * they will never be NULL pointers.

+ */

+

+#ifdef PNG_TEXT_SUPPORTED

+PNG_EXPORT(163, void, png_set_text,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_const_textp text_ptr, int num_text));

+#endif

+

+#ifdef PNG_tIME_SUPPORTED

+PNG_EXPORT(164, png_uint_32, png_get_tIME,

+    (png_const_structp png_ptr, png_infop info_ptr, png_timep *mod_time));

+#endif

+

+#ifdef PNG_tIME_SUPPORTED

+PNG_EXPORT(165, void, png_set_tIME,

+    (png_structp png_ptr, png_infop info_ptr, png_const_timep mod_time));

+#endif

+

+#ifdef PNG_tRNS_SUPPORTED

+PNG_EXPORT(166, png_uint_32, png_get_tRNS,

+    (png_const_structp png_ptr, png_infop info_ptr, 

+    png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color));

+#endif

+

+#ifdef PNG_tRNS_SUPPORTED

+PNG_EXPORT(167, void, png_set_tRNS,

+    (png_structp png_ptr, png_infop info_ptr, 

+    png_const_bytep trans_alpha, int num_trans, 

+    png_const_color_16p trans_color));

+#endif

+

+#ifdef PNG_sCAL_SUPPORTED

+PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL,

+    (png_const_structp png_ptr, png_const_infop info_ptr, 

+    int *unit, double *width, double *height));

+#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED

+/* NOTE: this API is currently implemented using floating point arithmetic, 

+ * consequently it can only be used on systems with floating point support.

+ * In any case the range of values supported by png_fixed_point is small and it

+ * is highly recommended that png_get_sCAL_s be used instead.

+ */

+PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed,

+    (png_structp png_ptr, png_const_infop info_ptr, int *unit,

+    png_fixed_point *width, 

+    png_fixed_point *height));

+#endif

+PNG_EXPORT(169, png_uint_32, png_get_sCAL_s,

+    (png_const_structp png_ptr, png_const_infop info_ptr,

+    int *unit, png_charpp swidth, png_charpp sheight));

+

+PNG_FP_EXPORT(170, void, png_set_sCAL,

+    (png_structp png_ptr, png_infop info_ptr, 

+    int unit, double width, double height));

+PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_structp png_ptr, 

+   png_infop info_ptr, int unit, png_fixed_point width, 

+   png_fixed_point height));

+PNG_EXPORT(171, void, png_set_sCAL_s,

+    (png_structp png_ptr, png_infop info_ptr, 

+    int unit, png_const_charp swidth, png_const_charp sheight));

+#endif /* PNG_sCAL_SUPPORTED */

+

+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED

+/* Provide a list of chunks and how they are to be handled, if the built-in

+   handling or default unknown chunk handling is not desired.  Any chunks not

+   listed will be handled in the default manner.  The IHDR and IEND chunks

+   must not be listed.

+      keep = 0: follow default behaviour

+           = 1: do not keep

+           = 2: keep only if safe-to-copy

+           = 3: keep even if unsafe-to-copy

+*/

+PNG_EXPORT(172, void, png_set_keep_unknown_chunks,

+    (png_structp png_ptr, int keep, 

+    png_const_bytep chunk_list, int num_chunks));

+PNG_EXPORT(173, int, png_handle_as_unknown, (png_structp png_ptr, 

+    png_const_bytep chunk_name));

+#endif

+#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED

+PNG_EXPORT(174, void, png_set_unknown_chunks, (png_structp png_ptr, 

+    png_infop info_ptr, png_const_unknown_chunkp unknowns,

+    int num_unknowns));

+PNG_EXPORT(175, void, png_set_unknown_chunk_location,

+    (png_structp png_ptr, png_infop info_ptr, int chunk, int location));

+PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structp png_ptr, 

+    png_const_infop info_ptr, png_unknown_chunkpp entries));

+#endif

+

+/* Png_free_data() will turn off the "valid" flag for anything it frees.

+ * If you need to turn it off for a chunk that your application has freed, 

+ * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK);

+ */

+PNG_EXPORT(177, void, png_set_invalid,

+    (png_structp png_ptr, png_infop info_ptr, int mask));

+

+#ifdef PNG_INFO_IMAGE_SUPPORTED

+/* The "params" pointer is currently not used and is for future expansion. */

+PNG_EXPORT(178, void, png_read_png, (png_structp png_ptr, png_infop info_ptr, 

+    int transforms, png_voidp params));

+PNG_EXPORT(179, void, png_write_png, (png_structp png_ptr, png_infop info_ptr, 

+    int transforms, png_voidp params));

+#endif

+

+PNG_EXPORT(180, png_const_charp, png_get_copyright,

+    (png_const_structp png_ptr));

+PNG_EXPORT(181, png_const_charp, png_get_header_ver,

+    (png_const_structp png_ptr));

+PNG_EXPORT(182, png_const_charp, png_get_header_version,

+    (png_const_structp png_ptr));

+PNG_EXPORT(183, png_const_charp, png_get_libpng_ver,

+    (png_const_structp png_ptr));

+

+#ifdef PNG_MNG_FEATURES_SUPPORTED

+PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structp png_ptr, 

+    png_uint_32 mng_features_permitted));

+#endif

+

+/* For use in png_set_keep_unknown, added to version 1.2.6 */

+#define PNG_HANDLE_CHUNK_AS_DEFAULT   0

+#define PNG_HANDLE_CHUNK_NEVER        1

+#define PNG_HANDLE_CHUNK_IF_SAFE      2

+#define PNG_HANDLE_CHUNK_ALWAYS       3

+

+/* Strip the prepended error numbers ("#nnn ") from error and warning

+ * messages before passing them to the error or warning handler.

+ */

+#ifdef PNG_ERROR_NUMBERS_SUPPORTED

+PNG_EXPORT(185, void, png_set_strip_error_numbers,

+    (png_structp png_ptr, 

+    png_uint_32 strip_mode));

+#endif

+

+/* Added in libpng-1.2.6 */

+#ifdef PNG_SET_USER_LIMITS_SUPPORTED

+PNG_EXPORT(186, void, png_set_user_limits, (png_structp png_ptr, 

+    png_uint_32 user_width_max, png_uint_32 user_height_max));

+PNG_EXPORT(187, png_uint_32, png_get_user_width_max,

+    (png_const_structp png_ptr));

+PNG_EXPORT(188, png_uint_32, png_get_user_height_max,

+    (png_const_structp png_ptr));

+/* Added in libpng-1.4.0 */

+PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structp png_ptr, 

+    png_uint_32 user_chunk_cache_max));

+PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max,

+    (png_const_structp png_ptr));

+/* Added in libpng-1.4.1 */

+PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structp png_ptr, 

+    png_alloc_size_t user_chunk_cache_max));

+PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max,

+    (png_const_structp png_ptr));

+#endif

+

+#if defined(PNG_INCH_CONVERSIONS_SUPPORTED)

+PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+

+PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+

+PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+

+PNG_FP_EXPORT(196, float, png_get_x_offset_inches,

+    (png_const_structp png_ptr, png_const_infop info_ptr));

+#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */

+PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, 

+    (png_structp png_ptr, png_const_infop info_ptr));

+#endif

+

+PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structp png_ptr, 

+    png_const_infop info_ptr));

+#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */

+PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, 

+    (png_structp png_ptr, png_const_infop info_ptr));

+#endif

+

+#  ifdef PNG_pHYs_SUPPORTED

+PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structp png_ptr, 

+    png_const_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y,

+    int *unit_type));

+#  endif /* PNG_pHYs_SUPPORTED */

+#endif  /* PNG_INCH_CONVERSIONS_SUPPORTED */

+

+/* Added in libpng-1.4.0 */

+#ifdef PNG_IO_STATE_SUPPORTED

+PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_structp png_ptr));

+

+PNG_EXPORTA(200, png_const_bytep, png_get_io_chunk_name,

+    (png_structp png_ptr), PNG_DEPRECATED);

+PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type,

+    (png_const_structp png_ptr));

+

+/* The flags returned by png_get_io_state() are the following: */

+#  define PNG_IO_NONE        0x0000   /* no I/O at this moment */

+#  define PNG_IO_READING     0x0001   /* currently reading */

+#  define PNG_IO_WRITING     0x0002   /* currently writing */

+#  define PNG_IO_SIGNATURE   0x0010   /* currently at the file signature */

+#  define PNG_IO_CHUNK_HDR   0x0020   /* currently at the chunk header */

+#  define PNG_IO_CHUNK_DATA  0x0040   /* currently at the chunk data */

+#  define PNG_IO_CHUNK_CRC   0x0080   /* currently at the chunk crc */

+#  define PNG_IO_MASK_OP     0x000f   /* current operation: reading/writing */

+#  define PNG_IO_MASK_LOC    0x00f0   /* current location: sig/hdr/data/crc */

+#endif /* ?PNG_IO_STATE_SUPPORTED */

+

+/* Interlace support.  The following macros are always defined so that if

+ * libpng interlace handling is turned off the macros may be used to handle

+ * interlaced images within the application.

+ */

+#define PNG_INTERLACE_ADAM7_PASSES 7

+

+/* Two macros to return the first row and first column of the original,

+ * full, image which appears in a given pass.  'pass' is in the range 0

+ * to 6 and the result is in the range 0 to 7.

+ */

+#define PNG_PASS_START_ROW(pass) (((1U&~(pass))<<(3-((pass)>>1)))&7)

+#define PNG_PASS_START_COL(pass) (((1U& (pass))<<(3-(((pass)+1)>>1)))&7)

+

+/* Two macros to help evaluate the number of rows or columns in each

+ * pass.  This is expressed as a shift - effectively log2 of the number or

+ * rows or columns in each 8x8 tile of the original image.

+ */

+#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3)

+#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3)

+

+/* Hence two macros to determine the number of rows or columns in a given

+ * pass of an image given its height or width.  In fact these macros may

+ * return non-zero even though the sub-image is empty, because the other

+ * dimension may be empty for a small image.

+ */

+#define PNG_PASS_ROWS(height, pass) (((height)+(((1<<PNG_PASS_ROW_SHIFT(pass))\

+   -1)-PNG_PASS_START_ROW(pass)))>>PNG_PASS_ROW_SHIFT(pass))

+#define PNG_PASS_COLS(width, pass) (((width)+(((1<<PNG_PASS_COL_SHIFT(pass))\

+   -1)-PNG_PASS_START_COL(pass)))>>PNG_PASS_COL_SHIFT(pass))

+

+/* For the progressive reader it is necessary to find the row in the output

+ * image given a row in an interlaced image, so two more macros:

+ */

+#define PNG_ROW_FROM_PASS_ROW(yIn, pass) \

+   (((yIn)<<PNG_PASS_ROW_SHIFT(pass))+PNG_PASS_START_ROW(pass))

+#define PNG_COL_FROM_PASS_COL(xIn, pass) \

+   (((xIn)<<PNG_PASS_COL_SHIFT(pass))+PNG_PASS_START_COL(pass))

+

+/* Two macros which return a boolean (0 or 1) saying whether the given row

+ * or column is in a particular pass.  These use a common utility macro that

+ * returns a mask for a given pass - the offset 'off' selects the row or

+ * column version.  The mask has the appropriate bit set for each column in

+ * the tile.

+ */

+#define PNG_PASS_MASK(pass,off) ( \

+   ((0x110145AFU>>(((7-(off))-(pass))<<2)) & 0xFU) | \

+   ((0x01145AF0U>>(((7-(off))-(pass))<<2)) & 0xF0U))

+

+#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \

+   ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1)

+#define PNG_COL_IN_INTERLACE_PASS(x, pass) \

+   ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1)

+

+#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED

+/* With these routines we avoid an integer divide, which will be slower on

+ * most machines.  However, it does take more operations than the corresponding

+ * divide method, so it may be slower on a few RISC systems.  There are two

+ * shifts (by 8 or 16 bits) and an addition, versus a single integer divide.

+ *

+ * Note that the rounding factors are NOT supposed to be the same!  128 and

+ * 32768 are correct for the NODIV code; 127 and 32767 are correct for the

+ * standard method.

+ *

+ * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ]

+ */

+

+ /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */

+

+#  define png_composite(composite, fg, alpha, bg)         \

+     { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \

+           * (png_uint_16)(alpha)                         \

+           + (png_uint_16)(bg)*(png_uint_16)(255          \

+           - (png_uint_16)(alpha)) + (png_uint_16)128);   \

+       (composite) = (png_byte)((temp + (temp >> 8)) >> 8); }

+

+#  define png_composite_16(composite, fg, alpha, bg)       \

+     { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg)  \

+           * (png_uint_32)(alpha)                          \

+           + (png_uint_32)(bg)*(png_uint_32)(65535L        \

+           - (png_uint_32)(alpha)) + (png_uint_32)32768L); \

+       (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); }

+

+#else  /* Standard method using integer division */

+

+#  define png_composite(composite, fg, alpha, bg)                          \

+     (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) +  \

+     (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) +       \

+     (png_uint_16)127) / 255)

+

+#  define png_composite_16(composite, fg, alpha, bg)                         \

+     (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \

+     (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) +        \

+     (png_uint_32)32767) / (png_uint_32)65535L)

+#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */

+

+#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED

+PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf));

+PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf));

+PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf));

+#endif

+

+PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_structp png_ptr, 

+    png_const_bytep buf));

+/* No png_get_int_16 -- may be added if there's a real need for it. */

+

+/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */

+#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED

+PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i));

+#endif

+#ifdef PNG_SAVE_INT_32_SUPPORTED

+PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i));

+#endif

+

+/* Place a 16-bit number into a buffer in PNG byte order.

+ * The parameter is declared unsigned int, not png_uint_16, 

+ * just to avoid potential problems on pre-ANSI C compilers.

+ */

+#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED

+PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i));

+/* No png_save_int_16 -- may be added if there's a real need for it. */

+#endif

+

+#ifdef PNG_USE_READ_MACROS

+/* Inline macros to do direct reads of bytes from the input buffer.

+ * The png_get_int_32() routine assumes we are using two's complement

+ * format for negative values, which is almost certainly true.

+ */

+#  define png_get_uint_32(buf) \

+     (((png_uint_32)(*(buf)) << 24) + \

+      ((png_uint_32)(*((buf) + 1)) << 16) + \

+      ((png_uint_32)(*((buf) + 2)) << 8) + \

+      ((png_uint_32)(*((buf) + 3))))

+

+   /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the

+    * function) incorrectly returned a value of type png_uint_32.

+    */

+#  define png_get_uint_16(buf) \

+     ((png_uint_16) \

+      (((unsigned int)(*(buf)) << 8) + \

+       ((unsigned int)(*((buf) + 1)))))

+

+#  define png_get_int_32(buf) \

+     ((png_int_32)((*(buf) & 0x80) \

+      ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \

+      : (png_int_32)png_get_uint_32(buf)))

+#endif

+

+/* Maintainer: Put new public prototypes here ^, in libpng.3, and project

+ * defs

+ */

+

+/* The last ordinal number (this is the *last* one already used; the next

+ * one to use is one more than this.)  Maintainer, remember to add an entry to

+ * scripts/symbols.def as well.

+ */

+#ifdef PNG_EXPORT_LAST_ORDINAL

+  PNG_EXPORT_LAST_ORDINAL(220);

+#endif

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif /* PNG_VERSION_INFO_ONLY */

+/* Do not put anything past this line */

+#endif /* PNG_H */

diff --git a/contrib/qrencode-win32/vc8/qrcode/png/pngconf.h b/contrib/qrencode-win32/vc8/qrcode/png/pngconf.h
new file mode 100644
index 0000000..6be43af
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/pngconf.h
@@ -0,0 +1,632 @@
+

+/* pngconf.h - machine configurable file for libpng

+ *

+ * libpng version 1.5.1 - February 3, 2011

+ *

+ * Copyright (c) 1998-2011 Glenn Randers-Pehrson

+ * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)

+ * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)

+ *

+ * This code is released under the libpng license.

+ * For conditions of distribution and use, see the disclaimer

+ * and license in png.h

+ *

+ */

+

+/* Any machine specific code is near the front of this file, so if you

+ * are configuring libpng for a machine, you may want to read the section

+ * starting here down to where it starts to typedef png_color, png_text,

+ * and png_info.

+ */

+

+#ifndef PNGCONF_H

+#define PNGCONF_H

+

+/* PNG_NO_LIMITS_H may be used to turn off the use of the standard C

+ * definition file for  machine specific limits, this may impact the

+ * correctness of the definitons below (see uses of INT_MAX).

+ */

+#ifndef PNG_NO_LIMITS_H

+#  include <limits.h>

+#endif

+

+/* For the memory copy APIs (i.e. the standard definitions of these),

+ * because this file defines png_memcpy and so on the base APIs must

+ * be defined here.

+ */

+#ifdef BSD

+#  include <strings.h>

+#else

+#  include <string.h>

+#endif

+

+/* For png_FILE_p - this provides the standard definition of a

+ * FILE

+ */

+#ifdef PNG_STDIO_SUPPORTED

+#  include <stdio.h>

+#endif

+

+/* This controls optimization of the reading of 16 and 32 bit values

+ * from PNG files.  It can be set on a per-app-file basis - it

+ * just changes whether a macro is used to the function is called.

+ * The library builder sets the default, if read functions are not

+ * built into the library the macro implementation is forced on.

+ */

+#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED

+#  define PNG_USE_READ_MACROS

+#endif

+#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS)

+#  if PNG_DEFAULT_READ_MACROS

+#    define PNG_USE_READ_MACROS

+#  endif

+#endif

+

+/* COMPILER SPECIFIC OPTIONS.

+ *

+ * These options are provided so that a variety of difficult compilers

+ * can be used.  Some are fixed at build time (e.g. PNG_API_RULE

+ * below) but still have compiler specific implementations, others

+ * may be changed on a per-file basis when compiling against libpng.

+ */

+

+/* The PNGARG macro protects us against machines that don't have function

+ * prototypes (ie K&R style headers).  If your compiler does not handle

+ * function prototypes, define this macro and use the included ansi2knr.

+ * I've always been able to use _NO_PROTO as the indicator, but you may

+ * need to drag the empty declaration out in front of here, or change the

+ * ifdef to suit your own needs.

+ */

+#ifndef PNGARG

+

+#  ifdef OF /* zlib prototype munger */

+#    define PNGARG(arglist) OF(arglist)

+#  else

+

+#    ifdef _NO_PROTO

+#      define PNGARG(arglist) ()

+#    else

+#      define PNGARG(arglist) arglist

+#    endif /* _NO_PROTO */

+

+#  endif /* OF */

+

+#endif /* PNGARG */

+

+/* Function calling conventions.

+ * =============================

+ * Normally it is not necessary to specify to the compiler how to call

+ * a function - it just does it - however on x86 systems derived from

+ * 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 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.

+ * PNGCAPI   Calling convention used by the ANSI-C library (required

+ *           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.

+ *

+ * 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).  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

+ * (x86 DOS/Windows sytems) and, even then, this does not apply to

+ * Cygwin running on those systems.

+ *

+ * Note that the value must be defined in pnglibconf.h so that what

+ * the application uses to call the library matches the conventions

+ * set when building the library.

+ */

+

+/* Symbol export

+ * =============

+ * When building a shared library it is almost always necessary to tell

+ * the compiler which symbols to export.  The png.h macro 'PNG_EXPORT'

+ * is used to mark the symbols.  On some systems these symbols can be

+ * extracted at link time and need no special processing by the compiler,

+ * on other systems the symbols are flagged by the compiler and just

+ * the declaration requires a special tag applied (unfortunately) in a

+ * compiler dependent way.  Some systems can do either.

+ *

+ * A small number of older systems also require a symbol from a DLL to

+ * be flagged to the program that calls it.  This is a problem because

+ * we do not know in the header file included by application code that

+ * the symbol will come from a shared library, as opposed to a statically

+ * linked one.  For this reason the application must tell us by setting

+ * the magic flag PNG_USE_DLL to turn on the special processing before

+ * it includes png.h.

+ *

+ * Four additional macros are used to make this happen:

+ *

+ * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from

+ *            the build or imported if PNG_USE_DLL is set - compiler

+ *            and system specific.

+ *

+ * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to

+ *                       'type', compiler specific.

+ *

+ * PNG_DLL_EXPORT Set to the magic to use during a libpng build to

+ *                make a symbol exported from the DLL.

+ *

+ * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come

+ *                from a DLL - used to define PNG_IMPEXP when

+ *                PNG_USE_DLL is set.

+ */

+

+/* System specific discovery.

+ * ==========================

+ * 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.  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(_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.  Also includes Watcom builds but these need

+   * special treatment because they are not compatible with GCC or Visual C

+   * because of different calling conventions.

+   */

+#  if PNG_API_RULE == 2

+    /* If this line results in an error, either because __watcall is not

+     * understood or because of a redefine just below you cannot use *this*

+     * build of the library with the compiler you are using.  *This* build was

+     * build using Watcom and applications must also be built using Watcom!

+     */

+#    define PNGCAPI __watcall

+#  endif

+

+#  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.

+     */

+#    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(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD)

+   ERROR: PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed

+#  endif

+

+#  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

+#  define PNGCAPI

+#endif

+#ifndef PNGCBAPI

+#  define PNGCBAPI PNGCAPI

+#endif

+#ifndef PNGAPI

+#  define PNGAPI PNGCAPI

+#endif

+

+/* The default for PNG_IMPEXP depends on whether the library is

+ * being built or used.

+ */

+#ifndef PNG_IMPEXP

+#  ifdef PNGLIB_BUILD

+    /* Building the library */

+#    if (defined(DLL_EXPORT)/*from libtool*/ ||\

+        defined(_WINDLL) || defined(_DLL) || defined(__DLL__) ||\

+        defined(_USRDLL) ||\

+        defined(PNG_BUILD_DLL)) && defined(PNG_DLL_EXPORT)

+      /* Building a DLL. */

+#      define PNG_IMPEXP PNG_DLL_EXPORT

+#    endif /* DLL */

+#  else

+    /* Using the library */

+#    if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT)

+      /* This forces use of a DLL, disallowing static linking */

+#      define PNG_IMPEXP PNG_DLL_IMPORT

+#    endif

+#  endif

+

+#  ifndef PNG_IMPEXP

+#    define PNG_IMPEXP

+#  endif

+#endif

+

+/* THe following complexity is concerned with getting the 'attributes' of the

+ * declared function in the correct place.  This potentially requires a separate

+ * PNG_EXPORT function for every compiler.

+ */

+#ifndef PNG_FUNCTION

+#  ifdef __GNUC__

+#     define PNG_FUNCTION(type, name, args, attributes)\

+         attributes type name args

+#  else /* !GNUC */

+#     ifdef _MSC_VER

+#        define PNG_FUNCTION(type, name, args, attributes)\

+         attributes type name args

+#     else /* !MSC */

+#        define PNG_FUNCTION(type, name, args, attributes)\

+            type name args

+#     endif

+#  endif

+#endif

+

+#ifndef PNG_EXPORT_TYPE

+#  define PNG_EXPORT_TYPE(type) PNG_IMPEXP type

+#endif

+

+   /* The ordinal value is only relevant when preprocessing png.h for symbol

+    * table entries, so we discard it here.  See the .dfn files in the

+    * scripts directory.

+    */

+#ifndef PNG_EXPORTA

+#  define PNG_EXPORTA(ordinal, type, name, args, attributes)\

+      extern PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args),\

+         attributes)

+#endif

+

+#define PNG_EXPORT(ordinal, type, name, args)\

+   PNG_EXPORTA(ordinal, type, name, args, )

+

+/* Use PNG_REMOVED to comment out a removed interface. */

+#ifndef PNG_REMOVED

+#  define PNG_REMOVED(ordinal, type, name, args, attributes)

+#endif

+

+#ifndef PNG_CALLBACK

+#  define PNG_CALLBACK(type, name, args, attributes)\

+   type (PNGCBAPI name) PNGARG(args) attributes

+#endif

+

+/* Support for compiler specific function attributes.  These are used

+ * so that where compiler support is available incorrect use of API

+ * functions in png.h will generate compiler warnings.

+ *

+ * Added at libpng-1.2.41.

+ */

+

+#ifndef PNG_NO_PEDANTIC_WARNINGS

+#  ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED

+#    define PNG_PEDANTIC_WARNINGS_SUPPORTED

+#  endif

+#endif

+

+#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED

+  /* Support for compiler specific function attributes.  These are used

+   * so that where compiler support is available incorrect use of API

+   * functions in png.h will generate compiler warnings.  Added at libpng

+   * version 1.2.41.

+   */

+#  ifdef __GNUC__

+#    ifndef PNG_USE_RESULT

+#      define PNG_USE_RESULT __attribute__((__warn_unused_result__))

+#    endif

+#    ifndef PNG_NORETURN

+#      define PNG_NORETURN   __attribute__((__noreturn__))

+#    endif

+#    ifndef PNG_PTR_NORETURN

+#      define PNG_PTR_NORETURN   __attribute__((__noreturn__))

+#    endif

+#    ifndef PNG_ALLOCATED

+#      define PNG_ALLOCATED  __attribute__((__malloc__))

+#    endif

+

+    /* This specifically protects structure members that should only be

+     * accessed from within the library, therefore should be empty during

+     * a library build.

+     */

+#    ifndef PNGLIB_BUILD

+#      ifndef PNG_DEPRECATED

+#        define PNG_DEPRECATED __attribute__((__deprecated__))

+#      endif

+#      ifndef PNG_DEPSTRUCT

+#        define PNG_DEPSTRUCT  __attribute__((__deprecated__))

+#      endif

+#      ifndef PNG_PRIVATE

+#        if 0 /* Doesn't work so we use deprecated instead*/

+#          define PNG_PRIVATE \

+            __attribute__((warning("This function is not exported by libpng.")))

+#        else

+#          define PNG_PRIVATE \

+            __attribute__((__deprecated__))

+#        endif

+#      endif /* PNG_PRIVATE */

+#    endif /* PNGLIB_BUILD */

+#  endif /* __GNUC__ */

+#  ifdef _MSC_VER /* may need to check value */

+#    ifndef PNG_USE_RESULT

+#      define PNG_USE_RESULT /*not supported*/

+#    endif

+#    ifndef PNG_NORETURN

+#      define PNG_NORETURN   __declspec(noreturn)

+#    endif

+#    ifndef PNG_PTR_NORETURN

+#      define PNG_PTR_NORETURN /*not supported*/

+#    endif

+#    ifndef PNG_ALLOCATED

+#      define PNG_ALLOCATED __declspec(restrict)

+#    endif

+

+    /* This specifically protects structure members that should only be

+     * accessed from within the library, therefore should be empty during

+     * a library build.

+     */

+#    ifndef PNGLIB_BUILD

+#      ifndef PNG_DEPRECATED

+#        define PNG_DEPRECATED __declspec(deprecated)

+#      endif

+#      ifndef PNG_DEPSTRUCT

+#        define PNG_DEPSTRUCT  __declspec(deprecated)

+#      endif

+#      ifndef PNG_PRIVATE

+#        define PNG_PRIVATE __declspec(deprecated)

+#      endif /* PNG_PRIVATE */

+#    endif /* PNGLIB_BUILD */

+#  endif /* __GNUC__ */

+#endif /* PNG_PEDANTIC_WARNINGS */

+

+#ifndef PNG_DEPRECATED

+#  define PNG_DEPRECATED  /* Use of this function is deprecated */

+#endif

+#ifndef PNG_USE_RESULT

+#  define PNG_USE_RESULT  /* The result of this function must be checked */

+#endif

+#ifndef PNG_NORETURN

+#  define PNG_NORETURN    /* This function does not return */

+#endif

+#ifndef PNG_ALLOCATED

+#  define PNG_ALLOCATED   /* The result of the function is new memory */

+#endif

+#ifndef PNG_DEPSTRUCT

+#  define PNG_DEPSTRUCT   /* Access to this struct member is deprecated */

+#endif

+#ifndef PNG_PRIVATE

+#  define PNG_PRIVATE     /* This is a private libpng function */

+#endif

+#ifndef PNG_FP_EXPORT     /* A floating point API. */

+#  ifdef PNG_FLOATING_POINT_SUPPORTED

+#     define PNG_FP_EXPORT(ordinal, type, name, args)\

+         PNG_EXPORT(ordinal, type, name, args)

+#  else                   /* No floating point APIs */

+#     define PNG_FP_EXPORT(ordinal, type, name, args)

+#  endif

+#endif

+#ifndef PNG_FIXED_EXPORT  /* A fixed point API. */

+#  ifdef PNG_FIXED_POINT_SUPPORTED

+#     define PNG_FIXED_EXPORT(ordinal, type, name, args)\

+         PNG_EXPORT(ordinal, type, name, args)

+#  else                   /* No fixed point APIs */

+#     define PNG_FIXED_EXPORT(ordinal, type, name, args)

+#  endif

+#endif

+

+/* The following uses const char * instead of char * for error

+ * and warning message functions, so some compilers won't complain.

+ * If you do not want to use const, define PNG_NO_CONST here.

+ *

+ * This should not change how the APIs are called, so it can be done

+ * on a per-file basis in the application.

+ */

+#ifndef PNG_CONST

+#  ifndef PNG_NO_CONST

+#    define PNG_CONST const

+#  else

+#    define PNG_CONST

+#  endif

+#endif

+

+/* Some typedefs to get us started.  These should be safe on most of the

+ * common platforms.  The typedefs should be at least as large as the

+ * numbers suggest (a png_uint_32 must be at least 32 bits long), but they

+ * don't have to be exactly that size.  Some compilers dislike passing

+ * unsigned shorts as function parameters, so you may be better off using

+ * unsigned int for png_uint_16.

+ */

+

+#if defined(INT_MAX) && (INT_MAX > 0x7ffffffeL)

+typedef unsigned int png_uint_32;

+typedef int png_int_32;

+#else

+typedef unsigned long png_uint_32;

+typedef long png_int_32;

+#endif

+typedef unsigned short png_uint_16;

+typedef short png_int_16;

+typedef unsigned char png_byte;

+

+#ifdef PNG_NO_SIZE_T

+typedef unsigned int png_size_t;

+#else

+typedef size_t png_size_t;

+#endif

+#define png_sizeof(x) (sizeof (x))

+

+/* The following is needed for medium model support.  It cannot be in the

+ * pngpriv.h header.  Needs modification for other compilers besides

+ * MSC.  Model independent support declares all arrays and pointers to be

+ * large using the far keyword.  The zlib version used must also support

+ * model independent data.  As of version zlib 1.0.4, the necessary changes

+ * have been made in zlib.  The USE_FAR_KEYWORD define triggers other

+ * changes that are needed. (Tim Wegner)

+ */

+

+/* Separate compiler dependencies (problem here is that zlib.h always

+ * defines FAR. (SJT)

+ */

+#ifdef __BORLANDC__

+#  if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)

+#    define LDATA 1

+#  else

+#    define LDATA 0

+#  endif

+  /* GRR:  why is Cygwin in here?  Cygwin is not Borland C... */

+#  if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__)

+#    define PNG_MAX_MALLOC_64K /* only used in build */

+#    if (LDATA != 1)

+#      ifndef FAR

+#        define FAR __far

+#      endif

+#      define USE_FAR_KEYWORD

+#    endif   /* LDATA != 1 */

+         /* Possibly useful for moving data out of default segment.

+          * Uncomment it if you want. Could also define FARDATA as

+          * const if your compiler supports it. (SJT)

+#        define FARDATA FAR

+          */

+#  endif  /* __WIN32__, __FLAT__, __CYGWIN__ */

+#endif   /* __BORLANDC__ */

+

+

+/* Suggest testing for specific compiler first before testing for

+ * FAR.  The Watcom compiler defines both __MEDIUM__ and M_I86MM,

+ * making reliance oncertain keywords suspect. (SJT)

+ */

+

+/* MSC Medium model */

+#ifdef FAR

+#  ifdef M_I86MM

+#    define USE_FAR_KEYWORD

+#    define FARDATA FAR

+#    include <dos.h>

+#  endif

+#endif

+

+/* SJT: default case */

+#ifndef FAR

+#  define FAR

+#endif

+

+/* At this point FAR is always defined */

+#ifndef FARDATA

+#  define FARDATA

+#endif

+

+/* Typedef for floating-point numbers that are converted

+ * to fixed-point with a multiple of 100,000, e.g., gamma

+ */

+typedef png_int_32 png_fixed_point;

+

+/* Add typedefs for pointers */

+typedef void                      FAR * png_voidp;

+typedef PNG_CONST void            FAR * png_const_voidp;

+typedef png_byte                  FAR * png_bytep;

+typedef PNG_CONST png_byte        FAR * png_const_bytep;

+typedef png_uint_32               FAR * png_uint_32p;

+typedef PNG_CONST png_uint_32     FAR * png_const_uint_32p;

+typedef png_int_32                FAR * png_int_32p;

+typedef PNG_CONST png_int_32      FAR * png_const_int_32p;

+typedef png_uint_16               FAR * png_uint_16p;

+typedef PNG_CONST png_uint_16     FAR * png_const_uint_16p;

+typedef png_int_16                FAR * png_int_16p;

+typedef PNG_CONST png_int_16      FAR * png_const_int_16p;

+typedef char                      FAR * png_charp;

+typedef PNG_CONST char            FAR * png_const_charp;

+typedef png_fixed_point           FAR * png_fixed_point_p;

+typedef PNG_CONST png_fixed_point FAR * png_const_fixed_point_p;

+typedef png_size_t                FAR * png_size_tp;

+typedef PNG_CONST png_size_t      FAR * png_const_size_tp;

+

+#ifdef PNG_STDIO_SUPPORTED

+typedef FILE            * png_FILE_p;

+#endif

+

+#ifdef PNG_FLOATING_POINT_SUPPORTED

+typedef double           FAR * png_doublep;

+typedef PNG_CONST double FAR * png_const_doublep;

+#endif

+

+/* Pointers to pointers; i.e. arrays */

+typedef png_byte        FAR * FAR * png_bytepp;

+typedef png_uint_32     FAR * FAR * png_uint_32pp;

+typedef png_int_32      FAR * FAR * png_int_32pp;

+typedef png_uint_16     FAR * FAR * png_uint_16pp;

+typedef png_int_16      FAR * FAR * png_int_16pp;

+typedef PNG_CONST char  FAR * FAR * png_const_charpp;

+typedef char            FAR * FAR * png_charpp;

+typedef png_fixed_point FAR * FAR * png_fixed_point_pp;

+#ifdef PNG_FLOATING_POINT_SUPPORTED

+typedef double          FAR * FAR * png_doublepp;

+#endif

+

+/* Pointers to pointers to pointers; i.e., pointer to array */

+typedef char            FAR * FAR * FAR * png_charppp;

+

+/* png_alloc_size_t is guaranteed to be no smaller than png_size_t,

+ * and no smaller than png_uint_32.  Casts from png_size_t or png_uint_32

+ * to png_alloc_size_t are not necessary; in fact, it is recommended

+ * not to use them at all so that the compiler can complain when something

+ * turns out to be problematic.

+ * Casts in the other direction (from png_alloc_size_t to png_size_t or

+ * png_uint_32) should be explicitly applied; however, we do not expect

+ * to encounter practical situations that require such conversions.

+ */

+#if defined(__TURBOC__) && !defined(__FLAT__)

+   typedef unsigned long png_alloc_size_t;

+#else

+#  if defined(_MSC_VER) && defined(MAXSEG_64K)

+     typedef unsigned long    png_alloc_size_t;

+#  else

+     /* This is an attempt to detect an old Windows system where (int) is

+      * actually 16 bits, in that case png_malloc must have an argument with a

+      * bigger size to accomodate the requirements of the library.

+      */

+#    if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) && \

+        (!defined(INT_MAX) || INT_MAX <= 0x7ffffffeL)

+       typedef DWORD         png_alloc_size_t;

+#    else

+       typedef png_size_t    png_alloc_size_t;

+#    endif

+#  endif

+#endif

+

+#endif /* PNGCONF_H */

diff --git a/contrib/qrencode-win32/vc8/qrcode/png/pnglibconf.h b/contrib/qrencode-win32/vc8/qrcode/png/pnglibconf.h
new file mode 100644
index 0000000..1656f64
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/pnglibconf.h
@@ -0,0 +1,176 @@
+

+/* libpng STANDARD API DEFINITION */

+

+/* pnglibconf.h - library build configuration */

+

+/* libpng version 1.5.0 - last changed on January 6, 2011 */

+

+/* Copyright (c) 1998-2011 Glenn Randers-Pehrson */

+

+/* This code is released under the libpng license. */

+/* For conditions of distribution and use, see the disclaimer */

+/* and license in png.h */

+

+/* pnglibconf.h */

+/* Machine generated file: DO NOT EDIT */

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

+#ifndef PNGLCONF_H

+#define PNGLCONF_H

+/* settings */

+#define PNG_MAX_GAMMA_8 11

+#define PNG_CALLOC_SUPPORTED

+#define PNG_QUANTIZE_RED_BITS 5

+#define PNG_USER_WIDTH_MAX 1000000L

+#define PNG_QUANTIZE_GREEN_BITS 5

+#define PNG_API_RULE 0

+#define PNG_QUANTIZE_BLUE_BITS 5

+#define PNG_USER_CHUNK_CACHE_MAX 0

+#define PNG_USER_HEIGHT_MAX 1000000L

+#define PNG_sCAL_PRECISION 5

+#define PNG_COST_SHIFT 3

+#define PNG_WEIGHT_SHIFT 8

+#define PNG_USER_CHUNK_MALLOC_MAX 0

+#define PNG_DEFAULT_READ_MACROS 1

+#define PNG_ZBUF_SIZE 8192

+#define PNG_GAMMA_THRESHOLD_FIXED 5000

+/* end of settings */

+/* options */

+#define PNG_INFO_IMAGE_SUPPORTED

+#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED

+#define PNG_POINTER_INDEXING_SUPPORTED

+#define PNG_WARNINGS_SUPPORTED

+#define PNG_FLOATING_ARITHMETIC_SUPPORTED

+#define PNG_WRITE_SUPPORTED

+#define PNG_WRITE_INTERLACING_SUPPORTED

+#define PNG_WRITE_16BIT_SUPPORTED

+#define PNG_EASY_ACCESS_SUPPORTED

+#define PNG_ALIGN_MEMORY_SUPPORTED

+#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED

+#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*/

+#define PNG_BENIGN_ERRORS_SUPPORTED

+#define PNG_SETJMP_SUPPORTED

+#define PNG_WRITE_FLUSH_SUPPORTED

+#define PNG_MNG_FEATURES_SUPPORTED

+#define PNG_FLOATING_POINT_SUPPORTED

+#define 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

+#define PNG_WRITE_iCCP_SUPPORTED

+#define PNG_READ_TRANSFORMS_SUPPORTED

+#define PNG_READ_GAMMA_SUPPORTED

+#define PNG_READ_bKGD_SUPPORTED

+#define PNG_UNKNOWN_CHUNKS_SUPPORTED

+#define PNG_READ_sCAL_SUPPORTED

+#define PNG_WRITE_hIST_SUPPORTED

+#define PNG_READ_OPT_PLTE_SUPPORTED

+#define PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED

+#define PNG_WRITE_gAMA_SUPPORTED

+#define PNG_READ_GRAY_TO_RGB_SUPPORTED

+#define PNG_WRITE_pCAL_SUPPORTED

+#define PNG_READ_INVERT_ALPHA_SUPPORTED

+#define PNG_WRITE_TRANSFORMS_SUPPORTED

+#define PNG_READ_sBIT_SUPPORTED

+#define PNG_READ_PACK_SUPPORTED

+#define PNG_WRITE_SWAP_SUPPORTED

+#define PNG_READ_cHRM_SUPPORTED

+#define PNG_WRITE_tIME_SUPPORTED

+#define PNG_READ_INTERLACING_SUPPORTED

+#define PNG_READ_tRNS_SUPPORTED

+#define PNG_WRITE_pHYs_SUPPORTED

+#define PNG_WRITE_INVERT_SUPPORTED

+#define PNG_READ_RGB_TO_GRAY_SUPPORTED

+#define PNG_WRITE_sRGB_SUPPORTED

+#define PNG_READ_oFFs_SUPPORTED

+#define PNG_WRITE_FILLER_SUPPORTED

+#define PNG_WRITE_TEXT_SUPPORTED

+#define PNG_WRITE_SHIFT_SUPPORTED

+#define PNG_PROGRESSIVE_READ_SUPPORTED

+#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_READ_16BIT_SUPPORTED

+#define PNG_READ_SWAP_ALPHA_SUPPORTED

+#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

+#define PNG_READ_sRGB_SUPPORTED

+#define PNG_WRITE_tEXt_SUPPORTED

+#define PNG_READ_gAMA_SUPPORTED

+#define PNG_READ_pCAL_SUPPORTED

+#define PNG_READ_EXPAND_SUPPORTED

+#define PNG_WRITE_sPLT_SUPPORTED

+#define PNG_READ_SWAP_SUPPORTED

+#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_WRITE_PACK_SUPPORTED

+#define PNG_READ_FILLER_SUPPORTED

+#define PNG_WRITE_bKGD_SUPPORTED

+#define PNG_WRITE_tRNS_SUPPORTED

+#define PNG_READ_sPLT_SUPPORTED

+#define PNG_WRITE_sCAL_SUPPORTED

+#define PNG_WRITE_oFFs_SUPPORTED

+#define PNG_READ_tEXt_SUPPORTED

+#define PNG_WRITE_sBIT_SUPPORTED

+#define PNG_READ_INVERT_SUPPORTED

+#define PNG_READ_16_TO_8_SUPPORTED

+#define PNG_WRITE_cHRM_SUPPORTED

+#define PNG_16BIT_SUPPORTED

+#define PNG_WRITE_USER_TRANSFORM_SUPPORTED

+#define PNG_READ_BGR_SUPPORTED

+#define PNG_WRITE_PACKSWAP_SUPPORTED

+#define PNG_WRITE_INVERT_ALPHA_SUPPORTED

+#define PNG_sCAL_SUPPORTED

+#define PNG_WRITE_zTXt_SUPPORTED

+#define PNG_sBIT_SUPPORTED

+#define PNG_cHRM_SUPPORTED

+#define PNG_bKGD_SUPPORTED

+#define PNG_tRNS_SUPPORTED

+#define PNG_WRITE_iTXt_SUPPORTED

+#define PNG_oFFs_SUPPORTED

+#define PNG_USER_TRANSFORM_PTR_SUPPORTED

+#define PNG_USER_TRANSFORM_INFO_SUPPORTED

+#define PNG_hIST_SUPPORTED

+#define PNG_iCCP_SUPPORTED

+#define PNG_sRGB_SUPPORTED

+#define PNG_READ_zTXt_SUPPORTED

+#define PNG_gAMA_SUPPORTED

+#define PNG_pCAL_SUPPORTED

+#define PNG_CHECK_cHRM_SUPPORTED

+#define PNG_tIME_SUPPORTED

+#define PNG_pHYs_SUPPORTED

+#define PNG_READ_iTXt_SUPPORTED

+#define PNG_TEXT_SUPPORTED

+#define PNG_SAVE_INT_32_SUPPORTED

+#define PNG_sPLT_SUPPORTED

+#define PNG_tEXt_SUPPORTED

+#define PNG_zTXt_SUPPORTED

+#define PNG_iTXt_SUPPORTED

+/* end of options */

+#endif /* PNGLCONF_H */

diff --git a/contrib/qrencode-win32/vc8/qrcode/png/zlib.lib b/contrib/qrencode-win32/vc8/qrcode/png/zlib.lib
new file mode 100644
index 0000000..b989fdb
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/zlib.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/zlib1.dll b/contrib/qrencode-win32/vc8/qrcode/png/zlib1.dll
new file mode 100644
index 0000000..97b1f8d
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/zlib1.dll
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/zlib1.lib b/contrib/qrencode-win32/vc8/qrcode/png/zlib1.lib
new file mode 100644
index 0000000..855f716
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/zlib1.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/zlib1d.dll b/contrib/qrencode-win32/vc8/qrcode/png/zlib1d.dll
new file mode 100644
index 0000000..e20896c
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/zlib1d.dll
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/zlib1d.lib b/contrib/qrencode-win32/vc8/qrcode/png/zlib1d.lib
new file mode 100644
index 0000000..b723628
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/zlib1d.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/png/zlibd.lib b/contrib/qrencode-win32/vc8/qrcode/png/zlibd.lib
new file mode 100644
index 0000000..53c800d
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/png/zlibd.lib
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcode/qrcode.cpp b/contrib/qrencode-win32/vc8/qrcode/qrcode.cpp
new file mode 100644
index 0000000..2770f77
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/qrcode.cpp
@@ -0,0 +1,12 @@
+

+#include <stdio.h>

+#include <stdlib.h>

+#include <string.h>

+#include "png/png.h"

+#include "getopt.h"

+

+#define strcasecmp strcmpi

+#if _MSC_VER < 1900 

+#define snprintf sprintf_s

+#endif

+#include "..\..\qrenc.c"

diff --git a/contrib/qrencode-win32/vc8/qrcode/qrcode.vcproj b/contrib/qrencode-win32/vc8/qrcode/qrcode.vcproj
new file mode 100644
index 0000000..0b3cbbf
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/qrcode.vcproj
@@ -0,0 +1,446 @@
+<?xml version="1.0" encoding="windows-1251"?>

+<VisualStudioProject

+	ProjectType="Visual C++"

+	Version="8,00"

+	Name="qrcode"

+	ProjectGUID="{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}"

+	RootNamespace="qrcode"

+	Keyword="Win32Proj"

+	>

+	<Platforms>

+		<Platform

+			Name="Win32"

+		/>

+	</Platforms>

+	<ToolFiles>

+	</ToolFiles>

+	<Configurations>

+		<Configuration

+			Name="Debug-Dll|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			CharacterSet="2"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				Optimization="0"

+				AdditionalIncludeDirectories=".\,.\png"

+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

+				MinimalRebuild="true"

+				BasicRuntimeChecks="3"

+				RuntimeLibrary="3"

+				UsePrecompiledHeader="0"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="4"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="qrcodelib.lib libpng15d.lib"

+				LinkIncremental="2"

+				AdditionalLibraryDirectories="..\.build\debug-dll;.\png"

+				GenerateDebugInformation="true"

+				SubSystem="1"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Release-Dll|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			CharacterSet="2"

+			WholeProgramOptimization="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				AdditionalIncludeDirectories=".\,.\png"

+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

+				RuntimeLibrary="2"

+				UsePrecompiledHeader="0"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="3"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="qrcodelib.lib libpng15.lib"

+				LinkIncremental="1"

+				AdditionalLibraryDirectories="..\.build\release-dll;.\png"

+				GenerateDebugInformation="true"

+				SubSystem="1"

+				OptimizeReferences="2"

+				EnableCOMDATFolding="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Debug-Lib|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			CharacterSet="2"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				Optimization="0"

+				AdditionalIncludeDirectories=".\,.\png"

+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

+				MinimalRebuild="true"

+				BasicRuntimeChecks="3"

+				RuntimeLibrary="1"

+				UsePrecompiledHeader="0"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="4"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="qrcodelib.lib libpngd.lib zlibd.lib"

+				LinkIncremental="2"

+				AdditionalLibraryDirectories="..\.build\debug-lib;.\png"

+				GenerateDebugInformation="true"

+				SubSystem="1"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Release-Lib|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			UseOfMFC="0"

+			CharacterSet="2"

+			WholeProgramOptimization="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				AdditionalIncludeDirectories=".\,.\png"

+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

+				RuntimeLibrary="0"

+				UsePrecompiledHeader="0"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="3"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="qrcodelib.lib libpng.lib zlib.lib"

+				LinkIncremental="1"

+				AdditionalLibraryDirectories="..\.build\release-lib;.\png"

+				GenerateDebugInformation="true"

+				SubSystem="1"

+				OptimizeReferences="2"

+				EnableCOMDATFolding="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+	</Configurations>

+	<References>

+	</References>

+	<Files>

+		<Filter

+			Name="Source Files"

+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"

+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"

+			>

+			<File

+				RelativePath=".\getopt.c"

+				>

+				<FileConfiguration

+					Name="Debug-Dll|Win32"

+					ExcludedFromBuild="true"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="0"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Release-Dll|Win32"

+					ExcludedFromBuild="true"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="0"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Debug-Lib|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="0"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Release-Lib|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="0"

+					/>

+				</FileConfiguration>

+			</File>

+			<File

+				RelativePath=".\qrcode.cpp"

+				>

+			</File>

+			<File

+				RelativePath="..\..\qrenc.c"

+				>

+				<FileConfiguration

+					Name="Debug-Dll|Win32"

+					ExcludedFromBuild="true"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Release-Dll|Win32"

+					ExcludedFromBuild="true"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Debug-Lib|Win32"

+					ExcludedFromBuild="true"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Release-Lib|Win32"

+					ExcludedFromBuild="true"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+					/>

+				</FileConfiguration>

+			</File>

+		</Filter>

+		<Filter

+			Name="Header Files"

+			Filter="h;hpp;hxx;hm;inl;inc;xsd"

+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"

+			>

+			<File

+				RelativePath=".\config.h"

+				>

+			</File>

+			<File

+				RelativePath=".\getopt.h"

+				>

+			</File>

+		</Filter>

+		<Filter

+			Name="Resource Files"

+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"

+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"

+			>

+		</Filter>

+		<File

+			RelativePath=".\ReadMe.txt"

+			>

+		</File>

+	</Files>

+	<Globals>

+	</Globals>

+</VisualStudioProject>

diff --git a/contrib/qrencode-win32/vc8/qrcode/qrcode.vcxproj b/contrib/qrencode-win32/vc8/qrcode/qrcode.vcxproj
new file mode 100644
index 0000000..6ab8572
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/qrcode.vcxproj
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug-Dll|Win32">

+      <Configuration>Debug-Dll</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug-Lib|Win32">

+      <Configuration>Debug-Lib</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release-Dll|Win32">

+      <Configuration>Release-Dll</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release-Lib|Win32">

+      <Configuration>Release-Lib</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+  </ItemGroup>

+  <PropertyGroup Label="Globals">

+    <ProjectGuid>{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}</ProjectGuid>

+    <RootNamespace>qrcode</RootNamespace>

+    <Keyword>Win32Proj</Keyword>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <UseOfMfc>false</UseOfMfc>

+    <CharacterSet>MultiByte</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>MultiByte</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>MultiByte</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>MultiByte</CharacterSet>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

+  <ImportGroup Label="ExtensionSettings">

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <PropertyGroup Label="UserMacros" />

+  <PropertyGroup>

+    <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>true</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>false</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>true</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>false</LinkIncremental>

+  </PropertyGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>.\;.\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>true</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <PrecompiledHeader />

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>qrcodelib.lib;libpng15d.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\.build\debug-dll;.\png;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>.\;.\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader />

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>qrcodelib.lib;libpng15.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\.build\release-dll;.\png;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>.\;.\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>true</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <PrecompiledHeader />

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>qrcodelib.lib;libpngd.lib;zlibd.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\.build\debug-lib;.\png;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>.\;.\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader />

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>qrcodelib.lib;libpng.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\.build\release-lib;.\png;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemGroup>

+    <ClCompile Include="..\..\qrenc.c">

+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">true</ExcludedFromBuild>

+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">true</ExcludedFromBuild>

+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">true</ExcludedFromBuild>

+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">true</ExcludedFromBuild>

+    </ClCompile>

+    <ClCompile Include="getopt.c">

+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">true</ExcludedFromBuild>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+      </PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+      </PrecompiledHeader>

+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">true</ExcludedFromBuild>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+      </PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+      </PrecompiledHeader>

+    </ClCompile>

+    <ClCompile Include="qrcode.cpp" />

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="config.h" />

+    <ClInclude Include="getopt.h" />

+  </ItemGroup>

+  <ItemGroup>

+    <Text Include="ReadMe.txt" />

+  </ItemGroup>

+  <ItemGroup>

+    <ProjectReference Include="..\qrcodelib\qrcodelib.vcxproj">

+      <Project>{9a90bf5c-84b0-41f6-b83c-c20eadc1f46c}</Project>

+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>

+    </ProjectReference>

+  </ItemGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

+  <ImportGroup Label="ExtensionTargets">

+  </ImportGroup>

+</Project>
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/qrcode/qrcode.vcxproj.filters b/contrib/qrencode-win32/vc8/qrcode/qrcode.vcxproj.filters
new file mode 100644
index 0000000..f8e636b
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode/qrcode.vcxproj.filters
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup>

+    <Filter Include="Source Files">

+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>

+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>

+    </Filter>

+    <Filter Include="Header Files">

+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>

+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>

+    </Filter>

+    <Filter Include="Resource Files">

+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>

+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>

+    </Filter>

+  </ItemGroup>

+  <ItemGroup>

+    <ClCompile Include="getopt.c">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="qrcode.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\qrenc.c">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="config.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="getopt.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+  </ItemGroup>

+  <ItemGroup>

+    <Text Include="ReadMe.txt" />

+  </ItemGroup>

+</Project>
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/qrcode_vc11.sln b/contrib/qrencode-win32/vc8/qrcode_vc11.sln
new file mode 100644
index 0000000..54e475a
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcode_vc11.sln
@@ -0,0 +1,56 @@
+

+Microsoft Visual Studio Solution File, Format Version 12.00

+# Visual Studio 2012

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qrcodelib", "qrcodelib\qrcodelib.vcxproj", "{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qrcode", "qrcode\qrcode.vcxproj", "{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qrcodegui", "qrcodegui\qrcodegui.vcxproj", "{B77F9451-3595-427C-9366-A8D82F27B33B}"

+EndProject

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qrcodecon", "qrcodecon\qrcodecon.vcxproj", "{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}"

+EndProject

+Global

+	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+		Debug-Dll|Win32 = Debug-Dll|Win32

+		Debug-Lib|Win32 = Debug-Lib|Win32

+		Release-Dll|Win32 = Release-Dll|Win32

+		Release-Lib|Win32 = Release-Lib|Win32

+	EndGlobalSection

+	GlobalSection(ProjectConfigurationPlatforms) = postSolution

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Debug-Dll|Win32.ActiveCfg = Debug-Dll|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Debug-Dll|Win32.Build.0 = Debug-Dll|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Debug-Lib|Win32.ActiveCfg = Debug-Lib|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Debug-Lib|Win32.Build.0 = Debug-Lib|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Release-Dll|Win32.ActiveCfg = Release-Dll|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Release-Dll|Win32.Build.0 = Release-Dll|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Release-Lib|Win32.ActiveCfg = Release-Lib|Win32

+		{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}.Release-Lib|Win32.Build.0 = Release-Lib|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Debug-Dll|Win32.ActiveCfg = Debug-Dll|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Debug-Dll|Win32.Build.0 = Debug-Dll|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Debug-Lib|Win32.ActiveCfg = Debug-Lib|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Debug-Lib|Win32.Build.0 = Debug-Lib|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Release-Dll|Win32.ActiveCfg = Release-Dll|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Release-Dll|Win32.Build.0 = Release-Dll|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Release-Lib|Win32.ActiveCfg = Release-Lib|Win32

+		{3879D0C5-FBCC-44F0-BA31-A2D3EE20D497}.Release-Lib|Win32.Build.0 = Release-Lib|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Debug-Dll|Win32.ActiveCfg = Debug-Dll|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Debug-Dll|Win32.Build.0 = Debug-Dll|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Debug-Lib|Win32.ActiveCfg = Debug-Lib|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Debug-Lib|Win32.Build.0 = Debug-Lib|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Release-Dll|Win32.ActiveCfg = Release-Dll|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Release-Dll|Win32.Build.0 = Release-Dll|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Release-Lib|Win32.ActiveCfg = Release-Lib|Win32

+		{B77F9451-3595-427C-9366-A8D82F27B33B}.Release-Lib|Win32.Build.0 = Release-Lib|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Debug-Dll|Win32.ActiveCfg = Debug-Dll|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Debug-Dll|Win32.Build.0 = Debug-Dll|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Debug-Lib|Win32.ActiveCfg = Debug-Lib|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Debug-Lib|Win32.Build.0 = Debug-Lib|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Release-Dll|Win32.ActiveCfg = Release-Dll|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Release-Dll|Win32.Build.0 = Release-Dll|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Release-Lib|Win32.ActiveCfg = Release-Lib|Win32

+		{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}.Release-Lib|Win32.Build.0 = Release-Lib|Win32

+	EndGlobalSection

+	GlobalSection(SolutionProperties) = preSolution

+		HideSolutionNode = FALSE

+	EndGlobalSection

+EndGlobal

diff --git a/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.cpp b/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.cpp
new file mode 100644
index 0000000..866ca09
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.cpp
@@ -0,0 +1,156 @@
+// qrcodecon.cpp : Defines the entry point for the console application.

+//

+

+#include "stdafx.h"

+

+#define MAX_DATA_SIZE (7090 * 16) /* from the specification */

+#define CMD_SIZE (MAX_DATA_SIZE + 4096) /* from the specification */

+

+

+BOOL IsOption(wchar_t *p);

+BOOL IsOptionWithParameter(wchar_t *p);

+wchar_t *readStdin();

+

+int _tmain(int argc, _TCHAR* argv[])

+{

+	char bufOut[CMD_SIZE] = {0};

+	TCHAR bufCmd[CMD_SIZE] = {0};

+	TCHAR *intext = NULL;

+	if(argc == 1)

+		wcsncat_s(bufCmd, L"qrcode.exe -h", CMD_SIZE);

+	else

+		wcsncat_s(bufCmd, L"qrcode.exe", CMD_SIZE);

+

+	int i;

+	for(i = 1; i < argc; i++)

+	{

+		if(!IsOption(argv[i]))

+			break;

+

+		wcsncat_s(bufCmd, L" ", CMD_SIZE);

+		wcsncat_s(bufCmd, argv[i], CMD_SIZE);

+		if(IsOptionWithParameter(argv[i]) && (i + 1 < argc))

+		{

+			i++;

+			wcsncat_s(bufCmd, L" ", CMD_SIZE);

+			wcsncat_s(bufCmd, argv[i], CMD_SIZE);

+		}

+	}

+

+	if(i < argc)

+	{

+		wcsncat_s(bufCmd, L" \"", CMD_SIZE);

+		wcsncat_s(bufCmd, argv[i], CMD_SIZE);

+		wcsncat_s(bufCmd, L"\"", CMD_SIZE);

+	}

+	else

+	{

+		intext = readStdin();

+		wcsncat_s(bufCmd, L" \"", CMD_SIZE);

+		wcsncat_s(bufCmd, intext, CMD_SIZE);

+		wcsncat_s(bufCmd, L"\"", CMD_SIZE);

+	}

+

+	DWORD len = ::WideCharToMultiByte(CP_UTF8, 0, bufCmd, wcslen(bufCmd), bufOut, CMD_SIZE, NULL, NULL);

+

+	STARTUPINFOA si;

+	PROCESS_INFORMATION pi;

+

+	ZeroMemory( &si, sizeof(si) );

+	si.cb = sizeof(si);

+	ZeroMemory( &pi, sizeof(pi) );

+

+	// Start the child process. 

+	if( !CreateProcessA( NULL,   // No module name (use command line)

+						bufOut,        // Command line

+						NULL,           // Process handle not inheritable

+						NULL,           // Thread handle not inheritable

+						TRUE,          // Set handle inheritance to FALSE

+						0,

+						NULL,           // Use parent's environment block

+						NULL,           // Use parent's starting directory 

+						&si,            // Pointer to STARTUPINFO structure

+						&pi )           // Pointer to PROCESS_INFORMATION structure

+	) 

+	{

+		return FALSE;

+	}

+

+	// Wait until child process exits.

+	WaitForSingleObject( pi.hProcess, INFINITE );

+	

+	// Close process and thread handles. 

+	CloseHandle( pi.hProcess );

+	CloseHandle( pi.hThread );

+

+	return 0;

+}

+

+BOOL IsOption(wchar_t *arg)

+{

+	if( (!wcscmp(arg, L"-h")) ||

+		(!wcscmp(arg, L"--help")) ||

+

+		(!wcscmp(arg, L"-o")) ||

+		(!wcscmp(arg, L"-s")) ||

+		(!wcscmp(arg, L"-l")) ||

+		(!wcscmp(arg, L"-v")) ||

+		(!wcscmp(arg, L"-m")) ||

+		(!wcscmp(arg, L"-d")) ||

+		(!wcscmp(arg, L"-t")) ||

+

+		(!wcscmp(arg, L"-S")) ||

+		(!wcscmp(arg, L"-k")) ||

+		(!wcscmp(arg, L"-c")) ||

+		(!wcscmp(arg, L"-i")) ||

+		(!wcscmp(arg, L"-8")) ||

+		(!wcscmp(arg, L"-M")) ||

+		(!wcscmp(arg, L"-V"))

+		)

+	{

+		return TRUE;

+	}

+

+	return FALSE;

+}

+

+BOOL IsOptionWithParameter(wchar_t *arg)

+{

+	if(	(!wcscmp(arg, L"-o")) ||

+		(!wcscmp(arg, L"-s")) ||

+		(!wcscmp(arg, L"-l")) ||

+		(!wcscmp(arg, L"-v")) ||

+		(!wcscmp(arg, L"-m")) ||

+		(!wcscmp(arg, L"-d")) ||

+		(!wcscmp(arg, L"-t")) 

+		)

+	{

+		return TRUE;

+	}

+

+	return FALSE;

+}

+

+static wchar_t *readStdin()

+{

+	char buffer[MAX_DATA_SIZE];

+	static wchar_t bufferOut[MAX_DATA_SIZE];

+	memset(bufferOut, 0, sizeof(bufferOut));

+	int ret;

+

+	ret = fread(buffer, 1, MAX_DATA_SIZE, stdin);

+	if(ret == 0) {

+		fprintf(stderr, "No input data.\n");

+		return L"";

+	}

+	if(feof(stdin) == 0) {

+		fprintf(stderr, "Input data is too large.\n");

+		return L"";

+	}

+

+	buffer[ret] = '\0';

+

+	::MultiByteToWideChar(CP_OEMCP, 0, buffer, ret, bufferOut, MAX_DATA_SIZE);

+

+	return bufferOut;

+}
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcproj b/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcproj
new file mode 100644
index 0000000..4ae12df
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcproj
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="windows-1251"?>

+<VisualStudioProject

+	ProjectType="Visual C++"

+	Version="8,00"

+	Name="qrcodecon"

+	ProjectGUID="{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}"

+	RootNamespace="qrcodecon"

+	Keyword="Win32Proj"

+	>

+	<Platforms>

+		<Platform

+			Name="Win32"

+		/>

+	</Platforms>

+	<ToolFiles>

+	</ToolFiles>

+	<Configurations>

+		<Configuration

+			Name="Debug-Lib|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			CharacterSet="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				Optimization="0"

+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

+				MinimalRebuild="true"

+				BasicRuntimeChecks="3"

+				RuntimeLibrary="1"

+				UsePrecompiledHeader="2"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="4"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				LinkIncremental="2"

+				GenerateDebugInformation="true"

+				SubSystem="1"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Release-Lib|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			CharacterSet="1"

+			WholeProgramOptimization="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

+				RuntimeLibrary="0"

+				UsePrecompiledHeader="2"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="3"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				LinkIncremental="1"

+				GenerateDebugInformation="true"

+				SubSystem="1"

+				OptimizeReferences="2"

+				EnableCOMDATFolding="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Release-Dll|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			CharacterSet="1"

+			WholeProgramOptimization="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

+				RuntimeLibrary="2"

+				UsePrecompiledHeader="2"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="3"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				LinkIncremental="1"

+				GenerateDebugInformation="true"

+				SubSystem="1"

+				OptimizeReferences="2"

+				EnableCOMDATFolding="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Debug-Dll|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			CharacterSet="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				Optimization="0"

+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

+				MinimalRebuild="true"

+				BasicRuntimeChecks="3"

+				RuntimeLibrary="3"

+				UsePrecompiledHeader="2"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="4"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				LinkIncremental="2"

+				GenerateDebugInformation="true"

+				SubSystem="1"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+	</Configurations>

+	<References>

+	</References>

+	<Files>

+		<Filter

+			Name="Source Files"

+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"

+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"

+			>

+			<File

+				RelativePath=".\qrcodecon.cpp"

+				>

+			</File>

+			<File

+				RelativePath=".\stdafx.cpp"

+				>

+				<FileConfiguration

+					Name="Debug-Lib|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="1"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Release-Lib|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="1"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Release-Dll|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="1"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Debug-Dll|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="1"

+					/>

+				</FileConfiguration>

+			</File>

+		</Filter>

+		<Filter

+			Name="Header Files"

+			Filter="h;hpp;hxx;hm;inl;inc;xsd"

+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"

+			>

+			<File

+				RelativePath=".\stdafx.h"

+				>

+			</File>

+		</Filter>

+		<Filter

+			Name="Resource Files"

+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"

+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"

+			>

+		</Filter>

+		<File

+			RelativePath=".\ReadMe.txt"

+			>

+		</File>

+	</Files>

+	<Globals>

+	</Globals>

+</VisualStudioProject>

diff --git a/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcxproj b/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcxproj
new file mode 100644
index 0000000..f8416fe
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcxproj
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug-Dll|Win32">

+      <Configuration>Debug-Dll</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug-Lib|Win32">

+      <Configuration>Debug-Lib</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release-Dll|Win32">

+      <Configuration>Release-Dll</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release-Lib|Win32">

+      <Configuration>Release-Lib</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+  </ItemGroup>

+  <PropertyGroup Label="Globals">

+    <ProjectGuid>{0346F4B4-9908-43DA-BEDE-2F1BE6AFDF50}</ProjectGuid>

+    <RootNamespace>qrcodecon</RootNamespace>

+    <Keyword>Win32Proj</Keyword>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

+  <ImportGroup Label="ExtensionSettings">

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <PropertyGroup Label="UserMacros" />

+  <PropertyGroup>

+    <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>true</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>false</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>false</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>true</LinkIncremental>

+  </PropertyGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>true</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <PrecompiledHeader>Use</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+    <ClCompile>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>Use</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+    <ClCompile>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>Use</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>true</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <PrecompiledHeader>Use</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemGroup>

+    <ClCompile Include="qrcodecon.cpp" />

+    <ClCompile Include="stdafx.cpp">

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">Create</PrecompiledHeader>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="stdafx.h" />

+  </ItemGroup>

+  <ItemGroup>

+    <Text Include="ReadMe.txt" />

+  </ItemGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

+  <ImportGroup Label="ExtensionTargets">

+  </ImportGroup>

+</Project>
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcxproj.filters b/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcxproj.filters
new file mode 100644
index 0000000..528e36e
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodecon/qrcodecon.vcxproj.filters
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup>

+    <Filter Include="Source Files">

+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>

+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>

+    </Filter>

+    <Filter Include="Header Files">

+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>

+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>

+    </Filter>

+    <Filter Include="Resource Files">

+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>

+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>

+    </Filter>

+  </ItemGroup>

+  <ItemGroup>

+    <ClCompile Include="qrcodecon.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="stdafx.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="stdafx.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+  </ItemGroup>

+  <ItemGroup>

+    <Text Include="ReadMe.txt" />

+  </ItemGroup>

+</Project>
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/qrcodecon/stdafx.cpp b/contrib/qrencode-win32/vc8/qrcodecon/stdafx.cpp
new file mode 100644
index 0000000..8ca4a4d
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodecon/stdafx.cpp
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes

+// qrcodecon.pch will be the pre-compiled header

+// stdafx.obj will contain the pre-compiled type information

+

+#include "stdafx.h"

+

+// TODO: reference any additional headers you need in STDAFX.H

+// and not in this file

diff --git a/contrib/qrencode-win32/vc8/qrcodecon/stdafx.h b/contrib/qrencode-win32/vc8/qrcodecon/stdafx.h
new file mode 100644
index 0000000..2fe56b7
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodecon/stdafx.h
@@ -0,0 +1,12 @@
+// stdafx.h : include file for standard system include files,

+// or project specific include files that are used frequently, but

+// are changed infrequently

+//

+

+#pragma once

+

+

+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers

+#include <stdio.h>

+#include <tchar.h>

+#include <Windows.h>

diff --git a/contrib/qrencode-win32/vc8/qrcodegui.png b/contrib/qrencode-win32/vc8/qrcodegui.png
new file mode 100644
index 0000000..c124f5e
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui.png
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcodegui/FileUtils.cpp b/contrib/qrencode-win32/vc8/qrcodegui/FileUtils.cpp
new file mode 100644
index 0000000..3bafa1f
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/FileUtils.cpp
@@ -0,0 +1,205 @@
+#include "StdAfx.h"

+#include "FileUtils.h"

+

+CString FileUtils::GetIniValue(CString strKey)

+{

+	CheckCreateIni();

+

+	wchar_t buf[1024];

+	GetPrivateProfileString(L"qrcodegui", strKey, L"", buf, 1024, m_strIniFile);

+

+	return CString(buf);

+}

+

+void FileUtils::SetIniValue(CString strKey, CString strValue)

+{

+	CheckCreateIni();

+

+	WritePrivateProfileString(L"qrcodegui", strKey, strValue, m_strIniFile);

+}

+

+void FileUtils::CheckCreateIni()

+{

+	if(!m_strIniFile.IsEmpty())

+		return;

+

+	wchar_t path[1024];

+	CString strPath;

+	SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, path);

+	strPath = path;

+

+	m_strIniFile = strPath;

+	m_strIniFile += L"\\QRCodeGui\\Settings.ini";

+

+	if(INVALID_FILE_ATTRIBUTES == GetFileAttributes(m_strIniFile))

+	{

+		strPath += L"\\QRCodeGui";

+		::CreateDirectory(strPath, NULL);

+

+		strPath += L"\\Settings.ini";

+		HANDLE hFile = ::CreateFile(strPath,

+			GENERIC_WRITE,          // open for writing

+			0,                      // do not share

+			NULL,                   // default security

+			CREATE_NEW,             // create new file only

+			FILE_ATTRIBUTE_NORMAL,  // normal file

+			NULL);

+

+		if(hFile != INVALID_HANDLE_VALUE)

+		{

+			DWORD dwWritten;

+			char buf[] = "[qrcodegui]\noutputx=20\noutputy=20\nwinx=20\nwiny=20\nwinw=400\nwinh=300\npixel=3\nmargin=3\nlevel=L";

+			::WriteFile(hFile, buf, sizeof(buf), &dwWritten, NULL);

+			::CloseHandle(hFile);

+		}

+	}

+}

+

+FileSession::FileSession()

+{

+	m_strTextFile = L"";

+	m_strImageFile = L"";

+	m_strResultFile = L"";

+}

+

+FileSession::~FileSession()

+{

+	Reset();

+}

+

+

+void FileSession::Reset()

+{

+	m_strErrorMsg = L"";

+

+	if(!m_strTextFile.IsEmpty())

+		::DeleteFile(m_strTextFile);

+

+	if(!m_strImageFile.IsEmpty())

+		::DeleteFile(m_strImageFile);

+

+	if(!m_strResultFile.IsEmpty())

+		::DeleteFile(m_strResultFile);

+}

+

+

+void FileSession::CopyImageTo(CString strNewPath)

+{

+	if(!m_strImageFile.IsEmpty())

+		::CopyFile(m_strImageFile, strNewPath, FALSE);

+}

+

+BOOL FileSession::RunQRcode(CString strPixel, CString strMargin, CString strError, long fgcolor, long bgcolor)

+{

+	CString strCmd;

+	CString strFgColorPart;

+	CString strBgColorPart;

+	if(fgcolor)

+		strFgColorPart.Format(L"--foreground=%06X ", fgcolor);

+	if(bgcolor)

+		strBgColorPart.Format(L"--background=%06X ", bgcolor);

+

+	strCmd.Format(L"cmd.exe /c qrcode.exe %s%s-s %s -m %s -l %c -o %s 2> %s < %s", 

+		strFgColorPart,

+		strBgColorPart,

+		strPixel,

+		strMargin, 

+		strError[0],

+		m_strImageFile,

+		m_strResultFile,

+		m_strTextFile

+	);

+

+	STARTUPINFO si;

+	PROCESS_INFORMATION pi;

+

+	ZeroMemory( &si, sizeof(si) );

+	si.cb = sizeof(si);

+	ZeroMemory( &pi, sizeof(pi) );

+

+	// Start the child process. 

+	if( !CreateProcess( NULL,   // No module name (use command line)

+						const_cast<LPWSTR>((LPCWSTR)strCmd),        // Command line

+						NULL,           // Process handle not inheritable

+						NULL,           // Thread handle not inheritable

+						FALSE,          // Set handle inheritance to FALSE

+						CREATE_NO_WINDOW,

+						NULL,           // Use parent's environment block

+						NULL,           // Use parent's starting directory 

+						&si,            // Pointer to STARTUPINFO structure

+						&pi )           // Pointer to PROCESS_INFORMATION structure

+	) 

+	{

+		return FALSE;

+	}

+

+	// Wait until child process exits.

+	WaitForSingleObject( pi.hProcess, INFINITE );

+	

+	// Close process and thread handles. 

+	CloseHandle( pi.hProcess );

+	CloseHandle( pi.hThread );

+

+	return TRUE;

+}

+

+BOOL FileSession::Generate(CString strPixel, CString strMargin, CString strError, CString strText, long fgcolor, long bgcolor)

+{

+	Reset();

+

+	DWORD dwWritten = 0;

+	long micro_version = 0;

+	wchar_t lpTempPathBuffer[MAX_PATH];

+	wchar_t szTempFileName[MAX_PATH];

+	GetTempPath(MAX_PATH, lpTempPathBuffer); 

+

+	GetTempFileName(lpTempPathBuffer, TEXT("QRT"), 0, szTempFileName);

+	m_strTextFile = szTempFileName;

+

+	char buf[7*32*1024];

+	DWORD len = ::WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)strText, strText.GetLength(), buf, 7*32*1024, NULL, NULL);

+

+	if(!len)

+	{

+		m_strErrorMsg = "Conversion to UTF-8 string failed.";

+		return FALSE;

+	}

+	

+	HANDLE hFile = ::CreateFile(m_strTextFile, GENERIC_WRITE, 0, NULL, 

+		OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

+	::WriteFile(hFile, buf, len, &dwWritten, NULL);

+	::CloseHandle(hFile);

+

+	GetTempFileName(lpTempPathBuffer, TEXT("QRI"), 0, szTempFileName);

+	m_strImageFile = szTempFileName;

+

+	GetTempFileName(lpTempPathBuffer, TEXT("QRR"), 0, szTempFileName);

+	m_strResultFile = szTempFileName;

+

+	if(!RunQRcode(strPixel, strMargin, strError, fgcolor, bgcolor))

+	{

+		m_strErrorMsg = "QRCode.exe execution failed.";

+		return FALSE;

+	}

+

+	{

+		char buf[32*1024];

+		DWORD dwRead = 0;

+		HANDLE hFile = ::CreateFile(m_strResultFile, GENERIC_READ, 0, NULL, 

+			OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

+		::ReadFile(hFile, buf, 32*1024, &dwRead, NULL);

+		::CloseHandle(hFile);

+		if(dwRead)

+		{

+			wchar_t bufw[32*1024];	

+			ZeroMemory(bufw, 32*1024*sizeof(wchar_t));

+			::MultiByteToWideChar(CP_OEMCP, 0, buf, dwRead, bufw, 32*1024); 

+			m_strErrorMsg = bufw;

+			return FALSE;

+		}

+	}

+

+	return TRUE;

+}

+

+

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/FileUtils.h b/contrib/qrencode-win32/vc8/qrcodegui/FileUtils.h
new file mode 100644
index 0000000..65a9ef1
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/FileUtils.h
@@ -0,0 +1,39 @@
+#pragma once

+

+class FileUtils

+{

+public:

+	FileUtils(void) { m_strIniFile = L""; };

+	~FileUtils(void) {};

+

+	CString GetIniValue(CString strKey);

+	void SetIniValue(CString strKey, CString strValue);

+

+	void CheckCreateIni();

+

+protected:

+	CString m_strIniFile;

+};

+

+class FileSession

+{

+public:

+	FileSession();

+	~FileSession();

+

+	void Reset();

+	BOOL Generate(CString strPixel, CString strMargin, CString strError, CString strText, long fgcolor, long bgcolor);

+

+	void CopyImageTo(CString strNewPath);

+	CString GetErrorMessage() { return m_strErrorMsg; };

+	CString GetImagePath() { return m_strImageFile; };

+protected:

+	BOOL RunQRcode(CString strPixel, CString strMargin, CString strError, long fgcolor, long bgcolor);

+

+protected:

+	CString m_strTextFile;

+	CString m_strImageFile;

+	CString m_strResultFile;

+

+	CString m_strErrorMsg;

+};

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/ReadMe.txt b/contrib/qrencode-win32/vc8/qrcodegui/ReadMe.txt
new file mode 100644
index 0000000..ab664e2
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/ReadMe.txt
@@ -0,0 +1,55 @@
+========================================================================

+    WIN32 APPLICATION : qrcodegui Project Overview

+========================================================================

+

+AppWizard has created this qrcodegui application for you.  

+

+This file contains a summary of what you will find in each of the files that

+make up your qrcodegui application.

+

+

+qrcodegui.vcproj

+    This is the main project file for VC++ projects generated using an Application Wizard. 

+    It contains information about the version of Visual C++ that generated the file, and 

+    information about the platforms, configurations, and project features selected with the

+    Application Wizard.

+

+qrcodegui.cpp

+    This is the main application source file.

+

+/////////////////////////////////////////////////////////////////////////////

+AppWizard has created the following resources:

+

+qrcodegui.rc

+    This is a listing of all of the Microsoft Windows resources that the

+    program uses.  It includes the icons, bitmaps, and cursors that are stored

+    in the RES subdirectory.  This file can be directly edited in Microsoft

+    Visual C++.

+

+Resource.h

+    This is the standard header file, which defines new resource IDs.

+    Microsoft Visual C++ reads and updates this file.

+

+qrcodegui.ico

+    This is an icon file, which is used as the application's icon (32x32).

+    This icon is included by the main resource file qrcodegui.rc.

+

+small.ico

+    This is an icon file, which contains a smaller version (16x16)

+    of the application's icon. This icon is included by the main resource

+    file qrcodegui.rc.

+

+/////////////////////////////////////////////////////////////////////////////

+Other standard files:

+

+StdAfx.h, StdAfx.cpp

+    These files are used to build a precompiled header (PCH) file

+    named qrcodegui.pch and a precompiled types file named StdAfx.obj.

+

+/////////////////////////////////////////////////////////////////////////////

+Other notes:

+

+AppWizard uses "TODO:" comments to indicate parts of the source code you

+should add to or customize.

+

+/////////////////////////////////////////////////////////////////////////////

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.cpp b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.cpp
new file mode 100644
index 0000000..57e8103
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.cpp
@@ -0,0 +1,317 @@
+// qrcodegui.cpp : Defines the entry point for the application.

+//

+

+#include "stdafx.h"

+#include "qrcodegui.h"

+using namespace Gdiplus;

+

+#define MAX_LOADSTRING 100

+

+// Global Variables:

+HINSTANCE hInst;								// current instance

+TCHAR szTitle[MAX_LOADSTRING];					// The title bar text

+TCHAR szWindowClass[MAX_LOADSTRING];			// the main window class name

+FileSession *gpFileSession = NULL;

+GdiplusStartupInput gdiplusStartupInput;

+ULONG_PTR           gdiplusToken;

+

+

+// Forward declarations of functions included in this code module:

+INT_PTR CALLBACK	MainWnd(HWND, UINT, WPARAM, LPARAM);

+INT_PTR CALLBACK	ImageWnd(HWND, UINT, WPARAM, LPARAM);

+long FixColor(wchar_t*szColor);

+void DrawColoredRect(HWND, long, long);

+

+

+

+int APIENTRY _tWinMain(HINSTANCE hInstance,

+                     HINSTANCE hPrevInstance,

+                     LPTSTR    lpCmdLine,

+                     int       nCmdShow)

+{

+	UNREFERENCED_PARAMETER(hPrevInstance);

+	UNREFERENCED_PARAMETER(lpCmdLine);

+

+	hInst = hInstance;

+

+	wchar_t szPath[MAX_PATH] = {0}; 

+	GetModuleFileName( NULL, szPath, MAX_PATH);

+	CString strPath = szPath;

+	int pos = strPath.ReverseFind('\\');

+	SetCurrentDirectory(strPath.Left(pos));

+

+	GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

+	gpFileSession = new FileSession;

+

+	DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN), NULL, MainWnd);

+

+	delete gpFileSession;

+	gpFileSession = NULL;

+	

+	GdiplusShutdown(gdiplusToken);

+

+	return 0;

+}

+

+INT_PTR CALLBACK MainWnd(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

+{

+	UNREFERENCED_PARAMETER(lParam);

+	switch (message)

+	{

+	case WM_GETMINMAXINFO:

+		MINMAXINFO mmi;

+		memcpy(&mmi, (void*)lParam, sizeof(mmi));

+		mmi.ptMinTrackSize.x = 250;

+		mmi.ptMinTrackSize.y = 200;

+		memcpy((void*)lParam, &mmi, sizeof(mmi));

+		return 0;

+	case WM_SIZE:

+		{

+			if(wParam != SIZE_RESTORED)

+				return (INT_PTR)FALSE;

+

+			LayoutCalc lc(LOWORD(lParam), HIWORD(lParam));

+			SetWindowPos(GetDlgItem(hDlg, IDC_EDIT_TEXT), NULL, lc.x1(), lc.y1(), lc.w1(), lc.h1(), SWP_NOZORDER);

+			SetWindowPos(GetDlgItem(hDlg, IDOK), NULL, lc.x2(), lc.y2(), lc.w2(), lc.h2(), SWP_NOZORDER);

+			SetWindowPos(GetDlgItem(hDlg, IDCANCEL), NULL, lc.x3(), lc.y3(), lc.w3(), lc.h3(), SWP_NOZORDER);

+		}

+		return (INT_PTR)TRUE;

+	case WM_INITDIALOG:

+		{

+			FileUtils fu;

+			SetWindowText(GetDlgItem(hDlg, IDC_EDIT_PIXEL), fu.GetIniValue(L"pixel"));

+			SetWindowText(GetDlgItem(hDlg, IDC_EDIT_MARGIN), fu.GetIniValue(L"margin"));

+			SetWindowText(GetDlgItem(hDlg, IDC_EDIT_FGCOLOR), fu.GetIniValue(L"fgcolor").IsEmpty() ? L"#000000" : fu.GetIniValue(L"fgcolor"));

+			SetWindowText(GetDlgItem(hDlg, IDC_EDIT_BGCOLOR), fu.GetIniValue(L"bgcolor").IsEmpty() ? L"#FFFFFF" : fu.GetIniValue(L"bgcolor"));

+

+			SendMessage(GetDlgItem(hDlg, IDC_COMBO_LEVEL), CB_ADDSTRING, 0, (LPARAM)L"L (lowest)"); 

+			SendMessage(GetDlgItem(hDlg, IDC_COMBO_LEVEL), CB_ADDSTRING, 0, (LPARAM)L"M"); 

+			SendMessage(GetDlgItem(hDlg, IDC_COMBO_LEVEL), CB_ADDSTRING, 0, (LPARAM)L"Q"); 

+			SendMessage(GetDlgItem(hDlg, IDC_COMBO_LEVEL), CB_ADDSTRING, 0, (LPARAM)L"H (highest)");

+			SendMessage(GetDlgItem(hDlg, IDC_COMBO_LEVEL), CB_SELECTSTRING, 0, (LPARAM)(LPCWSTR)fu.GetIniValue(L"level"));

+

+			SetWindowPos(hDlg, NULL, 

+				_wtoi(fu.GetIniValue(L"winx")), 

+				_wtoi(fu.GetIniValue(L"winy")), 

+				_wtoi(fu.GetIniValue(L"winw")), 

+				_wtoi(fu.GetIniValue(L"winh")), 

+				SWP_NOZORDER);

+

+		    HICON hIcon = LoadIcon (hInst, MAKEINTRESOURCE (IDI_QRCODEGUI));

+			SendMessage (hDlg, WM_SETICON, WPARAM (ICON_SMALL), LPARAM (hIcon));

+			EnableWindow(GetDlgItem(hDlg, IDOK), FALSE);

+		}

+		return (INT_PTR)TRUE;

+

+	case WM_COMMAND:

+		if (LOWORD(wParam) == IDCANCEL)

+		{

+			FileUtils fu;

+			RECT rc;

+			GetWindowRect(hDlg, &rc); 

+			wchar_t buf[100];

+			_itow_s(rc.left, buf, 100, 10);

+			fu.SetIniValue(L"winx", buf);

+			_itow_s(rc.top, buf, 100, 10);

+			fu.SetIniValue(L"winy", buf);

+			_itow_s(rc.right - rc.left, buf, 100, 10);

+			fu.SetIniValue(L"winw", buf);

+			_itow_s(rc.bottom - rc.top, buf, 100, 10);

+			fu.SetIniValue(L"winh", buf);

+

+			EndDialog(hDlg, LOWORD(wParam));

+			return (INT_PTR)TRUE;

+		}

+

+		if (LOWORD(wParam) == IDOK)

+		{

+			wchar_t szPixel[1024];

+			wchar_t szMargin[1024];

+			wchar_t szLevel[1024];

+			wchar_t szFgColor[1024];

+			wchar_t szBgColor[1024];

+			wchar_t szText[32*1024];

+			GetWindowText(GetDlgItem(hDlg, IDC_EDIT_PIXEL), szPixel, 1024);

+			GetWindowText(GetDlgItem(hDlg, IDC_EDIT_MARGIN), szMargin, 1024);

+			GetWindowText(GetDlgItem(hDlg, IDC_COMBO_LEVEL), szLevel, 1024);

+			GetWindowText(GetDlgItem(hDlg, IDC_EDIT_FGCOLOR), szFgColor, 1024);

+			GetWindowText(GetDlgItem(hDlg, IDC_EDIT_BGCOLOR), szBgColor, 1024);

+			GetWindowText(GetDlgItem(hDlg, IDC_EDIT_TEXT), szText, 32*1024);

+			BOOL bRes = gpFileSession->Generate(szPixel, szMargin, szLevel, szText, FixColor(szFgColor), FixColor(szBgColor));

+			if(bRes)

+			{

+				DialogBox(hInst, MAKEINTRESOURCE(IDD_IMAGE), hDlg, ImageWnd);

+			}

+			else

+			{

+				MessageBox(hDlg, gpFileSession->GetErrorMessage(), szTitle, MB_OK | MB_ICONERROR);

+			}

+

+			FileUtils fu;

+			fu.SetIniValue(L"pixel", szPixel);

+			fu.SetIniValue(L"margin", szMargin);

+			fu.SetIniValue(L"level", szLevel);

+			fu.SetIniValue(L"fgcolor",szFgColor);

+			fu.SetIniValue(L"bgcolor",szBgColor);

+

+			return (INT_PTR)TRUE;

+		}

+		if ((HIWORD(wParam) == EN_UPDATE) && (LOWORD(wParam) == IDC_EDIT_TEXT))

+		{

+			BOOL bEnable = !!GetWindowTextLength(GetDlgItem(hDlg, IDC_EDIT_TEXT));

+			EnableWindow(GetDlgItem(hDlg, IDOK), bEnable);

+		}

+		if((HIWORD(wParam) == EN_KILLFOCUS) && (LOWORD(wParam) == IDC_EDIT_FGCOLOR))

+		{

+			wchar_t szColor[1024];

+			GetWindowText(GetDlgItem(hDlg, IDC_EDIT_FGCOLOR), szColor, 1024);

+			long color = FixColor(szColor);

+			DrawColoredRect(hDlg, IDC_EDIT_FGCOLOR, color);

+			SetWindowText(GetDlgItem(hDlg, IDC_EDIT_FGCOLOR), szColor);

+			return (INT_PTR)TRUE;

+		}

+		if((HIWORD(wParam) == EN_KILLFOCUS) && (LOWORD(wParam) == IDC_EDIT_BGCOLOR))

+		{

+			wchar_t szColor[1024];

+			GetWindowText(GetDlgItem(hDlg, IDC_EDIT_BGCOLOR), szColor, 1024);

+			long color = FixColor(szColor);

+			DrawColoredRect(hDlg, IDC_EDIT_BGCOLOR, color);

+			SetWindowText(GetDlgItem(hDlg, IDC_EDIT_BGCOLOR), szColor);

+			return (INT_PTR)TRUE;

+		}

+		break;

+	}

+	return (INT_PTR)FALSE;

+}

+

+Image *myImage;

+

+INT_PTR CALLBACK ImageWnd(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

+{

+	UNREFERENCED_PARAMETER(lParam);

+	switch (message)

+	{

+	case WM_INITDIALOG:

+		{

+			myImage = new Image(gpFileSession->GetImagePath(), true);

+		

+			FileUtils fu;

+			LayoutCalc lc(myImage->GetWidth(), myImage->GetHeight());

+

+			SetWindowPos(hDlg, NULL, _wtoi(fu.GetIniValue(L"outputx")), 

+				_wtoi(fu.GetIniValue(L"outputy")), lc.w7(), lc.h7(), SWP_NOZORDER);

+			SetWindowPos(GetDlgItem(hDlg, IDOK), NULL, lc.x8(), lc.y8(), lc.w8(), lc.h8(), SWP_NOZORDER);

+			SetWindowPos(GetDlgItem(hDlg, IDCANCEL), NULL, lc.x9(), lc.y9(), lc.w9(), lc.h9(), SWP_NOZORDER);

+		}

+		return (INT_PTR)TRUE;

+

+	case WM_PAINT:

+		{

+			if(!myImage)

+				return 0;

+

+	        HDC          hdc;

+	        PAINTSTRUCT  ps;

+

+		    hdc = BeginPaint(hDlg, &ps);

+			Graphics graphics(hdc);

+			graphics.DrawImage(myImage, LayoutCalc::mw, LayoutCalc::mw, myImage->GetWidth(), myImage->GetHeight());

+			EndPaint(hDlg, &ps);

+		}

+		return (INT_PTR)FALSE;

+

+	case WM_COMMAND:

+		if (LOWORD(wParam) == IDCANCEL)

+		{

+			FileUtils fu;

+			RECT rc;

+			GetWindowRect(hDlg, &rc); 

+			wchar_t buf[100];

+			_itow_s(rc.left, buf, 100, 10);

+			fu.SetIniValue(L"outputx", buf);

+			_itow_s(rc.top, buf, 100, 10);

+			fu.SetIniValue(L"outputy", buf);

+

+			EndDialog(hDlg, LOWORD(wParam));

+			return (INT_PTR)TRUE;

+		}

+		if (LOWORD(wParam) == IDOK)

+		{

+			OPENFILENAME ofn;       // common dialog box structure

+			ZeroMemory(&ofn, sizeof(ofn));

+			wchar_t szFile[MAX_PATH];

+			szFile[0] = '\0'; 

+			 

+			ofn.lStructSize = sizeof(OPENFILENAME); 

+			ofn.hwndOwner = hDlg; 

+			ofn.lpstrFilter = L"PNG Image\0*,png\0";

+			ofn.lpstrFile= szFile; 

+			ofn.nMaxFile = sizeof(szFile)/ sizeof(*szFile); 

+			ofn.lpstrFileTitle = NULL; 

+			ofn.nMaxFileTitle = 0; 

+			ofn.lpstrInitialDir = (LPWSTR)NULL; 

+			ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT; 

+			ofn.lpstrTitle = szTitle; 

+

+			if(GetSaveFileName(&ofn))

+			{

+				CString strName = ofn.lpstrFile;

+				if( (-1 == strName.Find(L".png", strName.ReverseFind('.'))) 

+					&& (-1 == strName.Find(L".PNG", strName.ReverseFind('.'))))

+					strName += L".png";

+				gpFileSession->CopyImageTo(strName);

+			}

+

+			return (INT_PTR)TRUE;

+		}

+		break;

+

+	case WM_DESTROY:

+		{

+			delete myImage;

+			myImage = NULL;

+		}

+		break;

+	}

+	return (INT_PTR)FALSE;

+}

+

+

+

+long FixColor(wchar_t* szColor)

+{

+	long color = 0;

+	if(szColor[0] == L'#')

+		swscanf_s(szColor+1, L"%x", &color);

+	else

+		swscanf_s(szColor, L"%x", &color);

+

+	color &= 0xFFFFFF;

+	swprintf_s(szColor, 1024, L"#%06X",color);

+	return color;

+}

+

+void DrawColoredRect(HWND hWnd, long nElement, long nColor)

+{

+	HDC hdc = GetDC(hWnd);

+

+	HWND hItem = GetDlgItem(hWnd, nElement);

+	RECT rc;

+	GetWindowRect(hItem, &rc);

+	POINT pt1;

+	POINT pt2; 

+	pt1.x = rc.left; pt1.y = rc.top;

+	pt2.x = rc.right; pt2.y = rc.bottom;

+	ScreenToClient(hWnd, &pt1);

+	ScreenToClient(hWnd, &pt2);

+	rc.left = pt1.x; rc.top = pt1.y;

+	rc.right = pt2.x; rc.bottom = pt2.y;

+	

+	rc.left = rc.right;

+	rc.right = rc.right + (rc.bottom - rc.top);

+	HBRUSH hBrush = CreateSolidBrush( ((nColor & 0xff0000) >> 16) | (nColor & 0xff00) | ((nColor & 0xff) << 16));

+	FillRect(hdc, &rc, hBrush);

+

+	DeleteObject(hBrush);

+	ReleaseDC(hWnd, hdc);

+}

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.h b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.h
new file mode 100644
index 0000000..4083398
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.h
@@ -0,0 +1,47 @@
+#pragma once

+

+#include "resource.h"

+

+class LayoutCalc

+{

+public:

+	LayoutCalc(int w, int h) {m_w = w; m_h = h; };

+	~LayoutCalc() {};

+

+	static const int bw = 90; // button width

+	static const int bh = 25; // button height

+	static const int mw = 10; // margin width

+

+	int x1() { return mw; };

+	int y1() { return bh*4; };

+	int w1() { return m_w - mw - mw; };

+	int h1() { return m_h - bh*4 - mw - bh - mw; };

+

+	int x2() { return m_w - mw - bw - mw - bw; };

+	int y2() { return m_h - mw - bh; };

+	int w2() { return bw; };

+	int h2() { return bh; };

+

+	int x3() { return m_w - mw - bw; };

+	int y3() { return m_h - mw - bh; };

+	int w3() { return bw; };

+	int h3() { return bh; };

+

+

+	int w7() { return mw + m_w + mw + bw + mw + 2*mw; };

+	int h7() { return mw + m_h + mw + mw + mw + 2*mw; };

+

+	int x8() { return mw + m_w + mw; };

+	int y8() { return mw; };

+	int w8() { return bw; };

+	int h8() { return bh; };

+

+	int x9() { return mw + m_w + mw; };

+	int y9() { return mw + bh + mw; };

+	int w9() { return bw; };

+	int h9() { return bh; };

+

+protected:

+	int m_w;

+	int m_h;

+};

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.ico b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.ico
new file mode 100644
index 0000000..3737ecd
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.ico
Binary files differ
diff --git a/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.rc b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.rc
new file mode 100644
index 0000000..d32c2fb
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.rc
@@ -0,0 +1,197 @@
+// Microsoft Visual C++ generated resource script.

+//

+#include "resource.h"

+

+#define APSTUDIO_READONLY_SYMBOLS

+/////////////////////////////////////////////////////////////////////////////

+//

+// Generated from the TEXTINCLUDE 2 resource.

+//

+#define APSTUDIO_HIDDEN_SYMBOLS

+#include "windows.h"

+#undef APSTUDIO_HIDDEN_SYMBOLS

+

+/////////////////////////////////////////////////////////////////////////////

+#undef APSTUDIO_READONLY_SYMBOLS

+

+/////////////////////////////////////////////////////////////////////////////

+// Russian (Russia) resources

+

+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)

+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

+#pragma code_page(1251)

+

+/////////////////////////////////////////////////////////////////////////////

+//

+// Icon

+//

+

+// Icon with lowest ID value placed first to ensure application icon

+// remains consistent on all systems.

+IDI_QRCODEGUI           ICON                    "qrcodegui.ico"

+

+/////////////////////////////////////////////////////////////////////////////

+//

+// Dialog

+//

+

+IDD_MAIN DIALOGEX 0, 0, 195, 130

+STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME

+CAPTION "QR Code"

+FONT 8, "MS Shell Dlg", 400, 0, 0x1

+BEGIN

+    EDITTEXT        IDC_EDIT_TEXT,7,64,181,44,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL

+    PUSHBUTTON      "Generate",IDOK,77,109,50,14

+    PUSHBUTTON      "Close",IDCANCEL,138,109,50,14

+    LTEXT           "Pixel size:",IDC_STATIC_PIXEL,7,10,39,8

+    EDITTEXT        IDC_EDIT_PIXEL,48,7,40,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT

+    LTEXT           "Margin size:",IDC_STATIC_MARGIN,7,25,39,8

+    EDITTEXT        IDC_EDIT_MARGIN,48,22,40,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT

+    LTEXT           "Error level:",IDC_STATIC_ERROR,7,40,39,8

+    COMBOBOX        IDC_COMBO_LEVEL,48,37,40,59,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP

+    LTEXT           "Text:",IDC_STATIC_TEXT,7,53,29,8

+    LTEXT           "Foreground:",IDC_STATIC_PIXEL2,106,10,39,8

+    EDITTEXT        IDC_EDIT_FGCOLOR,148,7,40,12,ES_AUTOHSCROLL,WS_EX_RIGHT

+    EDITTEXT        IDC_EDIT_BGCOLOR,148,22,40,12,ES_AUTOHSCROLL,WS_EX_RIGHT

+    LTEXT           "Background:",IDC_STATIC_PIXEL3,106,25,39,8

+END

+

+IDD_IMAGE DIALOGEX 0, 0, 137, 66

+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU

+CAPTION "QR Code"

+FONT 8, "MS Shell Dlg", 400, 0, 0x1

+BEGIN

+    PUSHBUTTON      "Save As...",IDOK,80,7,50,14

+    PUSHBUTTON      "Close",IDCANCEL,80,26,50,14

+END

+

+

+#ifdef APSTUDIO_INVOKED

+/////////////////////////////////////////////////////////////////////////////

+//

+// TEXTINCLUDE

+//

+

+1 TEXTINCLUDE 

+BEGIN

+    "resource.h\0"

+END

+

+2 TEXTINCLUDE 

+BEGIN

+    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"

+    "#include ""windows.h""\r\n"

+    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"

+    "\0"

+END

+

+3 TEXTINCLUDE 

+BEGIN

+    "\r\n"

+    "\0"

+END

+

+#endif    // APSTUDIO_INVOKED

+

+

+/////////////////////////////////////////////////////////////////////////////

+//

+// DESIGNINFO

+//

+

+#ifdef APSTUDIO_INVOKED

+GUIDELINES DESIGNINFO

+BEGIN

+    IDD_MAIN, DIALOG

+    BEGIN

+        LEFTMARGIN, 7

+        RIGHTMARGIN, 188

+        TOPMARGIN, 7

+        BOTTOMMARGIN, 123

+    END

+

+    IDD_IMAGE, DIALOG

+    BEGIN

+        LEFTMARGIN, 7

+        RIGHTMARGIN, 130

+        TOPMARGIN, 7

+        BOTTOMMARGIN, 59

+    END

+END

+#endif    // APSTUDIO_INVOKED

+

+

+/////////////////////////////////////////////////////////////////////////////

+//

+// String Table

+//

+

+STRINGTABLE

+BEGIN

+    IDS_APP_TITLE           "qrcodegui"

+    IDC_QRCODEGUI           "QRCODEGUI"

+END

+

+#endif    // Russian (Russia) resources

+/////////////////////////////////////////////////////////////////////////////

+

+

+/////////////////////////////////////////////////////////////////////////////

+// English (United States) resources

+

+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

+#pragma code_page(1252)

+

+/////////////////////////////////////////////////////////////////////////////

+//

+// Version

+//

+

+VS_VERSION_INFO VERSIONINFO

+ FILEVERSION 3,4,4,0

+ PRODUCTVERSION 3,4,4,0

+ FILEFLAGSMASK 0x17L

+#ifdef _DEBUG

+ FILEFLAGS 0x1L

+#else

+ FILEFLAGS 0x0L

+#endif

+ FILEOS 0x4L

+ FILETYPE 0x0L

+ FILESUBTYPE 0x0L

+BEGIN

+    BLOCK "StringFileInfo"

+    BEGIN

+        BLOCK "040904b0"

+        BEGIN

+            VALUE "FileDescription", "qrcodegu"

+            VALUE "FileVersion", "3.4.4.0"

+            VALUE "InternalName", "qrcodegu"

+            VALUE "LegalCopyright", "Copyright (C) 2011"

+            VALUE "OriginalFilename", "qrcodegu"

+            VALUE "ProductName", " qrcodegu"

+            VALUE "ProductVersion", "3.4.4.0"

+        END

+    END

+    BLOCK "VarFileInfo"

+    BEGIN

+        VALUE "Translation", 0x409, 1200

+    END

+END

+

+#endif    // English (United States) resources

+/////////////////////////////////////////////////////////////////////////////

+

+

+

+#ifndef APSTUDIO_INVOKED

+/////////////////////////////////////////////////////////////////////////////

+//

+// Generated from the TEXTINCLUDE 3 resource.

+//

+

+

+/////////////////////////////////////////////////////////////////////////////

+#endif    // not APSTUDIO_INVOKED

+

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcproj b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcproj
new file mode 100644
index 0000000..9204753
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcproj
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="windows-1251"?>

+<VisualStudioProject

+	ProjectType="Visual C++"

+	Version="8,00"

+	Name="qrcodegui"

+	ProjectGUID="{B77F9451-3595-427C-9366-A8D82F27B33B}"

+	RootNamespace="qrcodegui"

+	Keyword="Win32Proj"

+	>

+	<Platforms>

+		<Platform

+			Name="Win32"

+		/>

+	</Platforms>

+	<ToolFiles>

+	</ToolFiles>

+	<Configurations>

+		<Configuration

+			Name="Debug-Lib|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			UseOfATL="1"

+			CharacterSet="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				Optimization="0"

+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"

+				MinimalRebuild="true"

+				BasicRuntimeChecks="3"

+				RuntimeLibrary="1"

+				UsePrecompiledHeader="2"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="4"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="Gdiplus.lib"

+				LinkIncremental="2"

+				GenerateDebugInformation="true"

+				SubSystem="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Release-Lib|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			UseOfATL="1"

+			CharacterSet="1"

+			WholeProgramOptimization="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"

+				RuntimeLibrary="0"

+				UsePrecompiledHeader="2"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="3"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="Gdiplus.lib"

+				LinkIncremental="1"

+				GenerateDebugInformation="true"

+				SubSystem="2"

+				OptimizeReferences="2"

+				EnableCOMDATFolding="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Debug-Dll|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			UseOfATL="1"

+			CharacterSet="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				Optimization="0"

+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"

+				MinimalRebuild="true"

+				BasicRuntimeChecks="3"

+				RuntimeLibrary="3"

+				UsePrecompiledHeader="2"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="4"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="Gdiplus.lib"

+				LinkIncremental="2"

+				GenerateDebugInformation="true"

+				SubSystem="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Release-Dll|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="1"

+			UseOfATL="1"

+			CharacterSet="1"

+			WholeProgramOptimization="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"

+				RuntimeLibrary="2"

+				UsePrecompiledHeader="2"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="3"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="Gdiplus.lib"

+				LinkIncremental="1"

+				GenerateDebugInformation="true"

+				SubSystem="2"

+				OptimizeReferences="2"

+				EnableCOMDATFolding="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+	</Configurations>

+	<References>

+	</References>

+	<Files>

+		<Filter

+			Name="Source Files"

+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"

+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"

+			>

+			<File

+				RelativePath=".\FileUtils.cpp"

+				>

+			</File>

+			<File

+				RelativePath=".\qrcodegui.cpp"

+				>

+			</File>

+			<File

+				RelativePath=".\stdafx.cpp"

+				>

+				<FileConfiguration

+					Name="Debug-Lib|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="1"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Release-Lib|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="1"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Debug-Dll|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="1"

+					/>

+				</FileConfiguration>

+				<FileConfiguration

+					Name="Release-Dll|Win32"

+					>

+					<Tool

+						Name="VCCLCompilerTool"

+						UsePrecompiledHeader="1"

+					/>

+				</FileConfiguration>

+			</File>

+		</Filter>

+		<Filter

+			Name="Header Files"

+			Filter="h;hpp;hxx;hm;inl;inc;xsd"

+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"

+			>

+			<File

+				RelativePath=".\FileUtils.h"

+				>

+			</File>

+			<File

+				RelativePath=".\qrcodegui.h"

+				>

+			</File>

+			<File

+				RelativePath=".\Resource.h"

+				>

+			</File>

+			<File

+				RelativePath=".\stdafx.h"

+				>

+			</File>

+		</Filter>

+		<Filter

+			Name="Resource Files"

+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"

+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"

+			>

+			<File

+				RelativePath=".\qrcodegui.ico"

+				>

+			</File>

+			<File

+				RelativePath=".\qrcodegui.rc"

+				>

+			</File>

+			<File

+				RelativePath=".\small.ico"

+				>

+			</File>

+		</Filter>

+		<File

+			RelativePath=".\ReadMe.txt"

+			>

+		</File>

+	</Files>

+	<Globals>

+	</Globals>

+</VisualStudioProject>

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcxproj b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcxproj
new file mode 100644
index 0000000..6164f85
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcxproj
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug-Dll|Win32">

+      <Configuration>Debug-Dll</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug-Lib|Win32">

+      <Configuration>Debug-Lib</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release-Dll|Win32">

+      <Configuration>Release-Dll</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release-Lib|Win32">

+      <Configuration>Release-Lib</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+  </ItemGroup>

+  <PropertyGroup Label="Globals">

+    <ProjectGuid>{B77F9451-3595-427C-9366-A8D82F27B33B}</ProjectGuid>

+    <RootNamespace>qrcodegui</RootNamespace>

+    <Keyword>Win32Proj</Keyword>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <UseOfAtl>Static</UseOfAtl>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <UseOfAtl>Static</UseOfAtl>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <UseOfAtl>Static</UseOfAtl>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <UseOfAtl>Static</UseOfAtl>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

+  <ImportGroup Label="ExtensionSettings">

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <PropertyGroup Label="UserMacros" />

+  <PropertyGroup>

+    <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>true</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>false</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>true</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>false</LinkIncremental>

+  </PropertyGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>true</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <PrecompiledHeader>Use</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+    <ClCompile>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>Use</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>true</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <PrecompiledHeader>Use</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+    <ClCompile>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>Use</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemGroup>

+    <ClCompile Include="FileUtils.cpp" />

+    <ClCompile Include="qrcodegui.cpp" />

+    <ClCompile Include="stdafx.cpp">

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">Create</PrecompiledHeader>

+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">Create</PrecompiledHeader>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="FileUtils.h" />

+    <ClInclude Include="qrcodegui.h" />

+    <ClInclude Include="Resource.h" />

+    <ClInclude Include="stdafx.h" />

+  </ItemGroup>

+  <ItemGroup>

+    <Image Include="qrcodegui.ico" />

+    <Image Include="small.ico" />

+  </ItemGroup>

+  <ItemGroup>

+    <ResourceCompile Include="qrcodegui.rc" />

+  </ItemGroup>

+  <ItemGroup>

+    <Text Include="ReadMe.txt" />

+  </ItemGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

+  <ImportGroup Label="ExtensionTargets">

+  </ImportGroup>

+</Project>
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcxproj.filters b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcxproj.filters
new file mode 100644
index 0000000..68dce91
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/qrcodegui.vcxproj.filters
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup>

+    <Filter Include="Source Files">

+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>

+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>

+    </Filter>

+    <Filter Include="Header Files">

+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>

+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>

+    </Filter>

+    <Filter Include="Resource Files">

+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>

+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>

+    </Filter>

+  </ItemGroup>

+  <ItemGroup>

+    <ClCompile Include="FileUtils.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="qrcodegui.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="stdafx.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="FileUtils.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="qrcodegui.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="Resource.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="stdafx.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+  </ItemGroup>

+  <ItemGroup>

+    <Image Include="qrcodegui.ico">

+      <Filter>Resource Files</Filter>

+    </Image>

+    <Image Include="small.ico">

+      <Filter>Resource Files</Filter>

+    </Image>

+  </ItemGroup>

+  <ItemGroup>

+    <ResourceCompile Include="qrcodegui.rc">

+      <Filter>Resource Files</Filter>

+    </ResourceCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <Text Include="ReadMe.txt" />

+  </ItemGroup>

+</Project>
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/qrcodegui/resource.h b/contrib/qrencode-win32/vc8/qrcodegui/resource.h
new file mode 100644
index 0000000..d08cb1d
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/resource.h
@@ -0,0 +1,39 @@
+//{{NO_DEPENDENCIES}}

+// Microsoft Visual C++ generated include file.

+// Used by qrcodegui.rc

+//

+#define IDI_QRCODEGUI                   101

+#define IDD_QRCODEGUI_DIALOG            102

+#define IDS_APP_TITLE                   103

+#define IDM_ABOUT                       104

+#define IDM_EXIT                        105

+#define IDC_QRCODEGUI                   109

+#define IDR_MAINFRAME                   128

+#define IDD_MAIN                        129

+#define IDD_IMAGE                       130

+#define IDC_EDIT_TEXT                   1000

+#define IDC_STATIC_TEXT                 1001

+#define IDC_STATIC_PIXEL                1002

+#define IDC_STATIC_MARGIN               1003

+#define IDC_STATIC_ERROR                1004

+#define IDC_EDIT_PIXEL                  1005

+#define IDC_EDIT_MARGIN                 1006

+#define IDC_COMBO_LEVEL                 1007

+#define IDC_STATIC_PIXEL2               1008

+#define IDC_EDIT_FGCOLOR                1009

+#define IDC_EDIT_BGCOLOR                1011

+#define IDC_STATIC_PIXEL3               1012

+#define IDC_BUTTON1                     1013

+#define IDC_STATIC                      -1

+

+// Next default values for new objects

+// 

+#ifdef APSTUDIO_INVOKED

+#ifndef APSTUDIO_READONLY_SYMBOLS

+#define _APS_NO_MFC                     1

+#define _APS_NEXT_RESOURCE_VALUE        131

+#define _APS_NEXT_COMMAND_VALUE         32771

+#define _APS_NEXT_CONTROL_VALUE         1014

+#define _APS_NEXT_SYMED_VALUE           110

+#endif

+#endif

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/stdafx.cpp b/contrib/qrencode-win32/vc8/qrcodegui/stdafx.cpp
new file mode 100644
index 0000000..c7ca2ae
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/stdafx.cpp
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes

+// qrcodegui.pch will be the pre-compiled header

+// stdafx.obj will contain the pre-compiled type information

+

+#include "stdafx.h"

+

+// TODO: reference any additional headers you need in STDAFX.H

+// and not in this file

diff --git a/contrib/qrencode-win32/vc8/qrcodegui/stdafx.h b/contrib/qrencode-win32/vc8/qrcodegui/stdafx.h
new file mode 100644
index 0000000..4c80057
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodegui/stdafx.h
@@ -0,0 +1,45 @@
+// stdafx.h : include file for standard system include files,

+// or project specific include files that are used frequently, but

+// are changed infrequently

+//

+

+#pragma once

+

+// Modify the following defines if you have to target a platform prior to the ones specified below.

+// Refer to MSDN for the latest info on corresponding values for different platforms.

+#ifndef WINVER				// Allow use of features specific to Windows XP or later.

+#define WINVER 0x0501		// Change this to the appropriate value to target other versions of Windows.

+#endif

+

+#ifndef _WIN32_WINNT		// Allow use of features specific to Windows XP or later.                   

+#define _WIN32_WINNT 0x0501	// Change this to the appropriate value to target other versions of Windows.

+#endif						

+

+#ifndef _WIN32_WINDOWS		// Allow use of features specific to Windows 98 or later.

+#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.

+#endif

+

+#ifndef _WIN32_IE			// Allow use of features specific to IE 6.0 or later.

+#define _WIN32_IE 0x0600	// Change this to the appropriate value to target other versions of IE.

+#endif

+

+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers

+// Windows Header Files:

+#include <windows.h>

+#include <Shlobj.h>

+// C RunTime Header Files

+#include <stdlib.h>

+#include <malloc.h>

+#include <memory.h>

+#include <tchar.h>

+

+#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructors will be explicit

+#include <Commdlg.h>

+#include <atlbase.h>

+#include <atlstr.h>

+#include <gdiplus.h>

+

+#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

+

+#include "FileUtils.h"

+

diff --git a/contrib/qrencode-win32/vc8/qrcodelib/config.h b/contrib/qrencode-win32/vc8/qrcodelib/config.h
new file mode 100644
index 0000000..8b64f3f
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodelib/config.h
@@ -0,0 +1,17 @@
+

+

+#define MAJOR_VERSION 3

+#define MINOR_VERSION 4

+#define MICRO_VERSION 4

+#define VERSION "3.4.4"

+

+#define __STATIC static

+

+#if defined(_WIN32) || defined(_WIN64)

+  #define strcasecmp _stricmp

+  #define strncasecmp _strnicmp

+  #if _MSC_VER < 1900 

+    #define snprintf _snprintf

+    #define vsnprintf _vsnprintf

+  #endif

+#endif

diff --git a/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.cpp b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.cpp
new file mode 100644
index 0000000..f9ec7cf
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.cpp
@@ -0,0 +1,30 @@
+// qrcodelib.cpp : Defines the entry point for the DLL application.

+//

+

+#ifdef _MANAGED

+#pragma managed(push, off)

+#endif

+

+#include <windows.h>

+

+

+BOOL APIENTRY DllMain( HMODULE hModule,

+                       DWORD  ul_reason_for_call,

+                       LPVOID lpReserved

+					 )

+{

+	switch (ul_reason_for_call)

+	{

+	case DLL_PROCESS_ATTACH:

+	case DLL_THREAD_ATTACH:

+	case DLL_THREAD_DETACH:

+	case DLL_PROCESS_DETACH:

+		break;

+	}

+    return TRUE;

+}

+

+#ifdef _MANAGED

+#pragma managed(pop)

+#endif

+

diff --git a/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.def b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.def
new file mode 100644
index 0000000..78bee0d
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.def
@@ -0,0 +1,42 @@
+LIBRARY   qrcodelib
+DESCRIPTION "QR Code Library"
+EXPORTS
+
+	QRinput_new @1
+	QRinput_new2 @2
+	QRinput_newMQR @3
+	QRinput_append @4
+	QRinput_appendECIheader @5
+	QRinput_getVersion @6
+	QRinput_setVersion @7
+	QRinput_getErrorCorrectionLevel @8
+	QRinput_setErrorCorrectionLevel @9
+	QRinput_setVersionAndErrorCorrectionLevel @10
+	QRinput_free @11
+	QRinput_check @12
+	QRinput_Struct_new @13
+	QRinput_Struct_setParity @14
+	QRinput_Struct_appendInput @15
+	QRinput_Struct_free @16
+	QRinput_splitQRinputToStruct @17
+	QRinput_Struct_insertStructuredAppendHeaders @18
+	QRinput_setFNC1First @19
+	QRinput_setFNC1Second @20
+	QRcode_encodeInput @21
+	QRcode_encodeString @22
+	QRcode_encodeString8bit @23
+	QRcode_encodeStringMQR @24
+	QRcode_encodeString8bitMQR @25
+	QRcode_encodeData @26
+	QRcode_encodeDataMQR @27
+	QRcode_free @28
+	QRcode_encodeInputStructured @29
+	QRcode_encodeStringStructured @30
+	QRcode_encodeString8bitStructured @31
+	QRcode_encodeDataStructured @32
+	QRcode_List_size @33
+	QRcode_List_free @34
+	QRcode_APIVersion @35
+	QRcode_APIVersionString @36
+	QRcode_clearCache @37
+
diff --git a/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcproj b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcproj
new file mode 100644
index 0000000..3f17ae8
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcproj
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="windows-1251"?>

+<VisualStudioProject

+	ProjectType="Visual C++"

+	Version="8,00"

+	Name="qrcodelib"

+	ProjectGUID="{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}"

+	RootNamespace="qrcodelib"

+	Keyword="Win32Proj"

+	>

+	<Platforms>

+		<Platform

+			Name="Win32"

+		/>

+	</Platforms>

+	<ToolFiles>

+	</ToolFiles>

+	<Configurations>

+		<Configuration

+			Name="Debug-Dll|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="2"

+			CharacterSet="2"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				Optimization="0"

+				AdditionalIncludeDirectories=".\,..\qrcode,..\qrcode\png"

+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H"

+				MinimalRebuild="true"

+				BasicRuntimeChecks="3"

+				RuntimeLibrary="3"

+				UsePrecompiledHeader="0"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="4"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies=" libpng15d.lib"

+				LinkIncremental="2"

+				AdditionalLibraryDirectories="..\qrcode\png"

+				ModuleDefinitionFile="qrcodelib.def"

+				GenerateDebugInformation="true"

+				SubSystem="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Release-Dll|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="2"

+			CharacterSet="2"

+			WholeProgramOptimization="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				AdditionalIncludeDirectories=".\,..\qrcode,..\qrcode\png"

+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H"

+				RuntimeLibrary="2"

+				UsePrecompiledHeader="0"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="3"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLinkerTool"

+				AdditionalDependencies="libpng15.lib"

+				LinkIncremental="1"

+				AdditionalLibraryDirectories="..\qrcode\png"

+				ModuleDefinitionFile="qrcodelib.def"

+				GenerateDebugInformation="true"

+				SubSystem="2"

+				OptimizeReferences="2"

+				EnableCOMDATFolding="2"

+				TargetMachine="1"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCManifestTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCAppVerifierTool"

+			/>

+			<Tool

+				Name="VCWebDeploymentTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Debug-Lib|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="4"

+			CharacterSet="2"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				Optimization="0"

+				AdditionalIncludeDirectories=".\,..\qrcode,..\qrcode\png"

+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H"

+				MinimalRebuild="true"

+				BasicRuntimeChecks="3"

+				RuntimeLibrary="1"

+				UsePrecompiledHeader="0"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="4"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLibrarianTool"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+		<Configuration

+			Name="Release-Lib|Win32"

+			OutputDirectory="../.build/$(ConfigurationName)"

+			IntermediateDirectory="../.build/$(ProjectName)/$(ConfigurationName)"

+			ConfigurationType="4"

+			CharacterSet="2"

+			WholeProgramOptimization="1"

+			>

+			<Tool

+				Name="VCPreBuildEventTool"

+			/>

+			<Tool

+				Name="VCCustomBuildTool"

+			/>

+			<Tool

+				Name="VCXMLDataGeneratorTool"

+			/>

+			<Tool

+				Name="VCWebServiceProxyGeneratorTool"

+			/>

+			<Tool

+				Name="VCMIDLTool"

+			/>

+			<Tool

+				Name="VCCLCompilerTool"

+				AdditionalIncludeDirectories=".\,..\qrcode,..\qrcode\png"

+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H"

+				RuntimeLibrary="0"

+				UsePrecompiledHeader="0"

+				WarningLevel="3"

+				Detect64BitPortabilityProblems="true"

+				DebugInformationFormat="3"

+			/>

+			<Tool

+				Name="VCManagedResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCResourceCompilerTool"

+			/>

+			<Tool

+				Name="VCPreLinkEventTool"

+			/>

+			<Tool

+				Name="VCLibrarianTool"

+			/>

+			<Tool

+				Name="VCALinkTool"

+			/>

+			<Tool

+				Name="VCXDCMakeTool"

+			/>

+			<Tool

+				Name="VCBscMakeTool"

+			/>

+			<Tool

+				Name="VCFxCopTool"

+			/>

+			<Tool

+				Name="VCPostBuildEventTool"

+			/>

+		</Configuration>

+	</Configurations>

+	<References>

+	</References>

+	<Files>

+		<Filter

+			Name="Source Files"

+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"

+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"

+			>

+			<File

+				RelativePath=".\qrcodelib.cpp"

+				>

+			</File>

+			<File

+				RelativePath=".\qrcodelib.def"

+				>

+			</File>

+		</Filter>

+		<Filter

+			Name="Header Files"

+			Filter="h;hpp;hxx;hm;inl;inc;xsd"

+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"

+			>

+			<File

+				RelativePath=".\config.h"

+				>

+			</File>

+		</Filter>

+		<Filter

+			Name="Resource Files"

+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"

+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"

+			>

+		</Filter>

+		<Filter

+			Name="libqrencode"

+			>

+			<File

+				RelativePath="..\..\bitstream.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\bitstream.h"

+				>

+			</File>

+			<File

+				RelativePath="..\qrcode\getopt.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\mask.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\mask.h"

+				>

+			</File>

+			<File

+				RelativePath="..\..\mmask.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\mmask.h"

+				>

+			</File>

+			<File

+				RelativePath="..\..\mqrspec.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\mqrspec.h"

+				>

+			</File>

+			<File

+				RelativePath="..\..\qrenc.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\qrencode.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\qrencode.h"

+				>

+			</File>

+			<File

+				RelativePath="..\..\qrinput.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\qrinput.h"

+				>

+			</File>

+			<File

+				RelativePath="..\..\qrspec.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\qrspec.h"

+				>

+			</File>

+			<File

+				RelativePath="..\..\rscode.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\rscode.h"

+				>

+			</File>

+			<File

+				RelativePath="..\..\split.c"

+				>

+			</File>

+			<File

+				RelativePath="..\..\split.h"

+				>

+			</File>

+		</Filter>

+		<File

+			RelativePath=".\ReadMe.txt"

+			>

+		</File>

+	</Files>

+	<Globals>

+	</Globals>

+</VisualStudioProject>

diff --git a/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj
new file mode 100644
index 0000000..ca475d6
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug-Dll|Win32">

+      <Configuration>Debug-Dll</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug-Lib|Win32">

+      <Configuration>Debug-Lib</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release-Dll|Win32">

+      <Configuration>Release-Dll</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release-Lib|Win32">

+      <Configuration>Release-Lib</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+  </ItemGroup>

+  <PropertyGroup Label="Globals">

+    <ProjectGuid>{9A90BF5C-84B0-41F6-B83C-C20EADC1F46C}</ProjectGuid>

+    <RootNamespace>qrcodelib</RootNamespace>

+    <Keyword>Win32Proj</Keyword>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>MultiByte</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>MultiByte</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">

+    <ConfigurationType>DynamicLibrary</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>MultiByte</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">

+    <ConfigurationType>DynamicLibrary</ConfigurationType>

+    <PlatformToolset>v140</PlatformToolset>

+    <CharacterSet>MultiByte</CharacterSet>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

+  <ImportGroup Label="ExtensionSettings">

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <PropertyGroup Label="UserMacros" />

+  <PropertyGroup>

+    <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>true</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+    <LinkIncremental>false</LinkIncremental>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+    <OutDir>../.build/$(Configuration)\</OutDir>

+    <IntDir>../.build/$(ProjectName)/$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>true</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <PrecompiledHeader />

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>libpng15d.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\qrcode\png;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

+      <ModuleDefinitionFile>qrcodelib.def</ModuleDefinitionFile>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader />

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>libpng15.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\qrcode\png;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

+      <ModuleDefinitionFile>qrcodelib.def</ModuleDefinitionFile>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>true</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <PrecompiledHeader />

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+    </ClCompile>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>.\;..\qrcode;..\qrcode\png;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;QRCODELIB_EXPORTS;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader />

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+    </ClCompile>

+  </ItemDefinitionGroup>

+  <ItemGroup>

+    <ClCompile Include="..\..\bitstream.c" />

+    <ClCompile Include="..\..\mask.c" />

+    <ClCompile Include="..\..\mmask.c" />

+    <ClCompile Include="..\..\mqrspec.c" />

+    <ClCompile Include="..\..\qrenc.c" />

+    <ClCompile Include="..\..\qrencode.c" />

+    <ClCompile Include="..\..\qrinput.c" />

+    <ClCompile Include="..\..\qrspec.c" />

+    <ClCompile Include="..\..\rscode.c" />

+    <ClCompile Include="..\..\split.c" />

+    <ClCompile Include="..\qrcode\getopt.c" />

+    <ClCompile Include="qrcodelib.cpp" />

+  </ItemGroup>

+  <ItemGroup>

+    <None Include="qrcodelib.def" />

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="..\..\bitstream.h" />

+    <ClInclude Include="..\..\mask.h" />

+    <ClInclude Include="..\..\mmask.h" />

+    <ClInclude Include="..\..\mqrspec.h" />

+    <ClInclude Include="..\..\qrencode.h" />

+    <ClInclude Include="..\..\qrinput.h" />

+    <ClInclude Include="..\..\qrspec.h" />

+    <ClInclude Include="..\..\rscode.h" />

+    <ClInclude Include="..\..\split.h" />

+    <ClInclude Include="config.h" />

+  </ItemGroup>

+  <ItemGroup>

+    <Text Include="ReadMe.txt" />

+  </ItemGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

+  <ImportGroup Label="ExtensionTargets">

+  </ImportGroup>

+</Project>
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj.filters b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj.filters
new file mode 100644
index 0000000..df54736
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/qrcodelib/qrcodelib.vcxproj.filters
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup>

+    <Filter Include="Source Files">

+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>

+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>

+    </Filter>

+    <Filter Include="Header Files">

+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>

+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>

+    </Filter>

+    <Filter Include="Resource Files">

+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>

+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>

+    </Filter>

+    <Filter Include="libqrencode">

+      <UniqueIdentifier>{028cb178-238a-4290-ae02-af6392847b87}</UniqueIdentifier>

+    </Filter>

+  </ItemGroup>

+  <ItemGroup>

+    <ClCompile Include="qrcodelib.cpp">

+      <Filter>Source Files</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\bitstream.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\qrcode\getopt.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\mask.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\mmask.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\mqrspec.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\qrenc.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\qrencode.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\qrinput.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\qrspec.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\rscode.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\split.c">

+      <Filter>libqrencode</Filter>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <None Include="qrcodelib.def">

+      <Filter>Source Files</Filter>

+    </None>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="config.h">

+      <Filter>Header Files</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\bitstream.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\mask.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\mmask.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\mqrspec.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\qrencode.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\qrinput.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\qrspec.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\rscode.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\split.h">

+      <Filter>libqrencode</Filter>

+    </ClInclude>

+  </ItemGroup>

+  <ItemGroup>

+    <Text Include="ReadMe.txt" />

+  </ItemGroup>

+</Project>
\ No newline at end of file
diff --git a/contrib/qrencode-win32/vc8/settings.ini b/contrib/qrencode-win32/vc8/settings.ini
new file mode 100644
index 0000000..bacb1d0
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/settings.ini
@@ -0,0 +1,10 @@
+[qrcodegui]
+outputx=120
+outputy=20
+winx=20
+winy=20
+winw=400
+winh=300
+pixel=3
+margin=3
+level=L

diff --git a/contrib/qrencode-win32/vc8/test.bat b/contrib/qrencode-win32/vc8/test.bat
new file mode 100644
index 0000000..7d03bfe
--- /dev/null
+++ b/contrib/qrencode-win32/vc8/test.bat
@@ -0,0 +1 @@
+qrcode.exe -o test.png -s 5 -l H http://fukuchi.org/works/qrencode/index.en.html
\ No newline at end of file