Merge Windows platform patches by tgotic

This commit is contained in:
hooper114 2009-06-02 20:23:38 +00:00
parent f121cf65ac
commit b65cd26527
33 changed files with 1093 additions and 129 deletions

86
backend/Makefile.mingw Normal file
View File

@ -0,0 +1,86 @@
# Linux makefile for libzint
#
# make compiles with QR Code support
# make libzint_noqr compiles without QR Code support
# make install copies to /usr/local/lib
# make uninstall removes library
# make clean cleans up a previous compilation and any object or editor files
#
ZINT_VERSION:=-DZINT_VERSION=\"2.1.3\"
CC:= gcc
AR:= ar rc
RANLIB:= ranlib
INCLUDE:= -I/mingw/include
CFLAGS:= -D_WIN32 -O2 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -Wall
prefix := /mingw
includedir := $(prefix)/include
libdir := $(prefix)/lib
bindir := $(prefix)/bin
DESTDIR :=
APP:=zint
DLL:=$(APP).dll
STATLIB:=lib$(APP).a
COMMON_OBJ:= common.o png.o library.o ps.o large.o reedsol.o gs1.o svg.o
ONEDIM_OBJ:= code.o code128.o 2of5.o upcean.o telepen.o medical.o plessey.o rss.o
POSTAL_OBJ:= postal.o auspost.o imail.o
TWODIM_OBJ:= code16k.o blockf.o dmatrix.o dm200.o pdf417.o qr.o maxicode.o composite.o aztec.o micqr.o code49.o
LIB_OBJ:= $(COMMON_OBJ) $(ONEDIM_OBJ) $(TWODIM_OBJ) $(POSTAL_OBJ)
DLL_OBJ:= $(LIB_OBJ:.o=.lo) dllversion.lo
ifeq ($(NO_QR),true)
DEFINES+= -DNO_QR
else
DEFINES_DLL+= -DQRENCODE_DLL
LIBS+= -lqrencode
endif
ifeq ($(NO_PNG),true)
DEFINES+= -DNO_PNG
else
DEFINES_DLL+= -DPNG_DLL -DZLIB_DLL
LIBS+= -lpng -lz
endif
LIBS+= -lm
all: $(DLL) $(STATLIB)
%.lo:%.c
@echo Compiling $< ...
$(CC) $(CFLAGS) $(DEFINES) $(DEFINES_DLL) -DDLL_EXPORT -DPIC $(ZINT_VERSION) -c -o $@ $<
%.o:%.c
@echo Compiling $< ...
$(CC) $(CFLAGS) $(DEFINES) $(ZINT_VERSION) -c -o $@ $<
$(DLL):$(DLL_OBJ)
@echo Linking $@...
o2dll.sh -o $@ $(DLL_OBJ) $(LIBS) #-version-info 2:1:3 -version-number 2:1:3
$(STATLIB): $(LIB_OBJ)
@echo Linking $@...
$(AR) $@ $(LIB_OBJ)
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
.PHONY: install uninstall clean dist
install:
cp -fp libzint.* $(DESTDIR)$(libdir)
cp -fp zint.h $(DESTDIR)$(includedir)/zint.h
cp -fp zint.dll $(DESTDIR)$(bindir)
uninstall:
rm $(DESTDIR)$(libdir)/libzint.*
rm $(DESTDIR)$(includedir)/zint.h
rm $(DESTDIR)$(bindir)/zint.dll
clean:
rm -f *.lib *.dll *.o *.a *~ *.res *.exe *.def *.lo *.bak

View File

@ -22,6 +22,9 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "common.h" #include "common.h"
#include "aztec.h" #include "aztec.h"
#include "reedsol.h" #include "reedsol.h"
@ -50,10 +53,17 @@ void insert(char binary_string[], int posn, char newbit)
int aztec_text_process(unsigned char source[], char binary_string[], int gs1) int aztec_text_process(unsigned char source[], char binary_string[], int gs1)
{ /* Encode input data into a binary string */ { /* Encode input data into a binary string */
int i, j, k, bytes; int i, j, k, bytes;
int charmap[ustrlen(source)], typemap[ustrlen(source)], maplength; int curtable, newtable, lasttable, chartype, maplength, blocks, debug;
int curtable, newtable, lasttable, chartype; #ifndef _MSC_VER
int blockmap[2][ustrlen(source)], blocks, debug; int charmap[ustrlen(source)], typemap[ustrlen(source)];
int blockmap[2][ustrlen(source)];
#else
int* charmap = (int*)_alloca(ustrlen(source) * sizeof(int));
int* typemap = (int*)_alloca(ustrlen(source) * sizeof(int));
int* blockmap[2];
blockmap[0] = (int*)_alloca(ustrlen(source) * sizeof(int));
blockmap[1] = (int*)_alloca(ustrlen(source) * sizeof(int));
#endif
/* Lookup input string in encoding table */ /* Lookup input string in encoding table */
maplength = 0; maplength = 0;
debug = 0; debug = 0;

View File

@ -23,6 +23,9 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "common.h" #include "common.h"
#include "gs1.h" #include "gs1.h"
@ -39,7 +42,7 @@
#define DPDSET "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*" #define DPDSET "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*"
int list[2][170]; static int list[2][170];
/* Code 128 tables checked against ISO/IEC 15417:2007 */ /* Code 128 tables checked against ISO/IEC 15417:2007 */
@ -582,11 +585,15 @@ int ean_128(struct zint_symbol *symbol, unsigned char source[])
{ /* Handle EAN-128 (Now known as GS1-128) */ { /* Handle EAN-128 (Now known as GS1-128) */
int i, j, e_count, values[170], bar_characters, read, total_sum; int i, j, e_count, values[170], bar_characters, read, total_sum;
int error_number, indexchaine, indexliste, sourcelen; int error_number, indexchaine, indexliste, sourcelen;
char set[170], mode, last_set, reduced[ustrlen(source)]; char set[170], mode, last_set;
float glyph_count; float glyph_count;
char dest[1000]; char dest[1000];
int separator_row, linkage_flag; int separator_row, linkage_flag;
#ifndef _MSC_VER
char reduced[ustrlen(source)];
#else
char* reduced = (char*)_alloca(ustrlen(source));
#endif
error_number = 0; error_number = 0;
strcpy(dest, ""); strcpy(dest, "");
linkage_flag = 0; linkage_flag = 0;

View File

@ -41,7 +41,7 @@
#define CANDB 98 #define CANDB 98
#define CANDBB 99 #define CANDBB 99
int list[2][170]; static int list[2][170];
/* EN 12323 Table 1 - "Code 16K" character encodations */ /* EN 12323 Table 1 - "Code 16K" character encodations */
static char *C16KTable[107] = {"212222", "222122", "222221", "121223", "121322", "131222", "122213", static char *C16KTable[107] = {"212222", "222122", "222221", "121223", "121322", "131222", "122213",

View File

@ -25,7 +25,7 @@
#define SSET "0123456789ABCDEF" #define SSET "0123456789ABCDEF"
int ustrlen(unsigned char data[]) { const int ustrlen(unsigned char data[]) {
/* Local replacement for strlen() with unsigned char strings */ /* Local replacement for strlen() with unsigned char strings */
int i; int i;
for (i=0;data[i];i++); for (i=0;data[i];i++);

View File

@ -20,28 +20,45 @@
*/ */
/* Used in some logic */ /* Used in some logic */
#ifndef __COMMON_H
#define __COMMON_H
#ifndef FALSE
#define FALSE 0 #define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1 #define TRUE 1
#endif
/* The most commonly used set */ /* The most commonly used set */
#define NESET "0123456789" #define NESET "0123456789"
#include "zint.h" #include "zint.h"
int ustrlen(unsigned char source[]); #ifdef __cplusplus
void ustrcpy(unsigned char target[], unsigned char source[]); extern "C"
void concat(char dest[], char source[]); {
void uconcat(unsigned char dest[], unsigned char source[]); #endif /* __cplusplus */
int ctoi(char source);
char itoc(int source);
void to_upper(unsigned char source[]);
int is_sane(char test_string[], unsigned char source[]);
void lookup(char set_string[], char *table[], char data, char dest[]);
int posn(char set_string[], char data);
void expand(struct zint_symbol *symbol, char data[]);
int is_stackable(int symbology);
int roundup(float input);
int module_is_set(struct zint_symbol *symbol, int y_coord, int x_coord);
void set_module(struct zint_symbol *symbol, int y_coord, int x_coord);
void unset_module(struct zint_symbol *symbol, int y_coord, int x_coord);
extern const int ustrlen(unsigned char source[]);
extern void ustrcpy(unsigned char target[], unsigned char source[]);
extern void concat(char dest[], char source[]);
extern void uconcat(unsigned char dest[], unsigned char source[]);
extern int ctoi(char source);
extern char itoc(int source);
extern void to_upper(unsigned char source[]);
extern int is_sane(char test_string[], unsigned char source[]);
extern void lookup(char set_string[], char *table[], char data, char dest[]);
extern int posn(char set_string[], char data);
extern void expand(struct zint_symbol *symbol, char data[]);
extern int is_stackable(int symbology);
extern int roundup(float input);
extern int module_is_set(struct zint_symbol *symbol, int y_coord, int x_coord);
extern void set_module(struct zint_symbol *symbol, int y_coord, int x_coord);
extern void unset_module(struct zint_symbol *symbol, int y_coord, int x_coord);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __COMMON_H */

View File

@ -41,6 +41,9 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <math.h> #include <math.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "common.h" #include "common.h"
#include "large.h" #include "large.h"
#include "composite.h" #include "composite.h"
@ -330,7 +333,11 @@ int cc_a(struct zint_symbol *symbol, unsigned char source[], int cc_width)
int cc_b(struct zint_symbol *symbol, unsigned char source[], int cc_width) int cc_b(struct zint_symbol *symbol, unsigned char source[], int cc_width)
{ /* CC-B 2D component */ { /* CC-B 2D component */
int length, i, binloc; int length, i, binloc;
#ifndef _MSC_VER
unsigned char data_string[(ustrlen(source) / 8) + 3]; unsigned char data_string[(ustrlen(source) / 8) + 3];
#else
unsigned char* data_string = (unsigned char*)_alloca((ustrlen(source) / 8) + 3);
#endif
int chainemc[180], mclength; int chainemc[180], mclength;
int k, j, longueur, mccorrection[50], offset; int k, j, longueur, mccorrection[50], offset;
int total, dummy[5]; int total, dummy[5];
@ -557,7 +564,11 @@ int cc_b(struct zint_symbol *symbol, unsigned char source[], int cc_width)
int cc_c(struct zint_symbol *symbol, unsigned char source[], int cc_width, int ecc_level) int cc_c(struct zint_symbol *symbol, unsigned char source[], int cc_width, int ecc_level)
{ /* CC-C 2D component - byte compressed PDF417 */ { /* CC-C 2D component - byte compressed PDF417 */
int length, i, binloc; int length, i, binloc;
#ifndef _MSC_VER
unsigned char data_string[(ustrlen(source) / 8) + 4]; unsigned char data_string[(ustrlen(source) / 8) + 4];
#else
unsigned char* data_string = (unsigned char*)_alloca((ustrlen(source) / 8) + 4);
#endif
int chainemc[1000], mclength, k; int chainemc[1000], mclength, k;
int offset, longueur, loop, total, j, mccorrection[520]; int offset, longueur, loop, total, j, mccorrection[520];
int c1, c2, c3, dummy[35]; int c1, c2, c3, dummy[35];
@ -693,14 +704,19 @@ int cc_c(struct zint_symbol *symbol, unsigned char source[], int cc_width, int e
return 0; return 0;
} }
int cc_binary_string(struct zint_symbol *symbol, char source[], char binary_string[], int cc_mode, int *cc_width, int *ecc, int lin_width) int cc_binary_string(struct zint_symbol *symbol, const char source[], char binary_string[], int cc_mode, int *cc_width, int *ecc, int lin_width)
{ /* Handles all data encodation from section 5 of ISO/IEC 24723 */ { /* Handles all data encodation from section 5 of ISO/IEC 24723 */
int encoding_method, read_posn, d1, d2, value, alpha_pad; int encoding_method, read_posn, d1, d2, value, alpha_pad;
int i, j, mask, ai_crop, ai_crop_posn, fnc1_latch; int i, j, mask, ai_crop, ai_crop_posn, fnc1_latch;
long int group_val; long int group_val;
int ai90_mode, latch, remainder, binary_length; int ai90_mode, latch, remainder, binary_length;
char date_str[4]; char date_str[4];
char general_field[strlen(source)], general_field_type[strlen(source)]; #ifndef _MSC_VER
char general_field[strlen(source) + 1], general_field_type[strlen(source) + 1];
#else
char* general_field = (char*)_alloca(strlen(source) + 1);
char* general_field_type = (char*)_alloca(strlen(source) + 1);
#endif
int target_bitsize; int target_bitsize;
encoding_method = 1; encoding_method = 1;
@ -710,7 +726,7 @@ int cc_binary_string(struct zint_symbol *symbol, char source[], char binary_stri
fnc1_latch = 0; fnc1_latch = 0;
alpha_pad = 0; alpha_pad = 0;
ai90_mode = 0; ai90_mode = 0;
*(ecc) = 0; *ecc = 0;
value = 0; value = 0;
target_bitsize = 0; target_bitsize = 0;
@ -783,7 +799,12 @@ int cc_binary_string(struct zint_symbol *symbol, char source[], char binary_stri
if (encoding_method == 3) { if (encoding_method == 3) {
/* Encodation Method field of "11" - AI 90 */ /* Encodation Method field of "11" - AI 90 */
char ninety[strlen(source)], numeric_part[4]; #ifndef _MSC_VER
char ninety[strlen(source) + 1];
#else
char* ninety = (char*)_alloca(strlen(source) + 1);
#endif
char numeric_part[4];
int alpha, alphanum, numeric, test1, test2, test3, next_ai_posn; int alpha, alphanum, numeric, test1, test2, test3, next_ai_posn;
int numeric_value, table3_letter, mask; int numeric_value, table3_letter, mask;
@ -796,7 +817,7 @@ int cc_binary_string(struct zint_symbol *symbol, char source[], char binary_stri
do { do {
ninety[i] = source[i + 2]; ninety[i] = source[i + 2];
i++; i++;
} while ((source[i + 2] != '[') && ((i + 2) < strlen(source))); } while ((strlen(source) > i + 2) && ('[' != source[i + 2]));
ninety[i] = '\0'; ninety[i] = '\0';
/* Find out if the AI 90 data is alphabetic or numeric or both */ /* Find out if the AI 90 data is alphabetic or numeric or both */
@ -1675,8 +1696,13 @@ int composite(struct zint_symbol *symbol, unsigned char source[])
{ {
int error_number, cc_mode, cc_width, ecc_level; int error_number, cc_mode, cc_width, ecc_level;
int j, i, k, separator_row; int j, i, k, separator_row;
#ifndef _MSC_VER
char reduced[ustrlen(source)]; char reduced[ustrlen(source)];
char binary_string[10 * ustrlen(source)]; char binary_string[10 * ustrlen(source)];
#else
char* reduced = (char*)_alloca(ustrlen(source) + 1);
char* binary_string = (char*)_alloca(20 * (ustrlen(source) + 1));
#endif
struct zint_symbol *linear; struct zint_symbol *linear;
int top_shift, bottom_shift; int top_shift, bottom_shift;
@ -1762,7 +1788,7 @@ int composite(struct zint_symbol *symbol, unsigned char source[])
case BARCODE_RSS_EXPSTACK_CC: cc_width = 4; break; case BARCODE_RSS_EXPSTACK_CC: cc_width = 4; break;
} }
strcpy(binary_string, ""); memset(binary_string, 0, sizeof(binary_string));
if(cc_mode < 1 || cc_mode > 3) { cc_mode = 1; } if(cc_mode < 1 || cc_mode > 3) { cc_mode = 1; }
@ -1875,6 +1901,10 @@ int composite(struct zint_symbol *symbol, unsigned char source[])
symbol->rows += linear->rows; symbol->rows += linear->rows;
ustrcpy(symbol->text, (unsigned char *)linear->text); ustrcpy(symbol->text, (unsigned char *)linear->text);
//#ifdef _MSC_VER
// free(reduced);
// free(binary_string);
//#endif
ZBarcode_Delete(linear); ZBarcode_Delete(linear);
return error_number; return error_number;

31
backend/dllversion.c Normal file
View File

@ -0,0 +1,31 @@
/* Sed: http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/versions.asp */
#if defined (_WIN32) && (defined(_USRDLL) || defined(DLL_EXPORT) || defined(PIC))
#include <windows.h>
#include <shlwapi.h>
#ifdef __cplusplus
extern "C"
{
#endif
__declspec(dllexport) HRESULT DllGetVersion (DLLVERSIONINFO2* pdvi);
#ifdef __cplusplus
}
#endif
HRESULT DllGetVersion (DLLVERSIONINFO2* pdvi)
{
if (!pdvi || (sizeof(*pdvi) != pdvi->info1.cbSize))
return (E_INVALIDARG);
pdvi->info1.dwMajorVersion = 2;
pdvi->info1.dwMinorVersion = 1;
pdvi->info1.dwBuildNumber = 3;
pdvi->info1.dwPlatformID = DLLVER_PLATFORM_WINDOWS;
if (sizeof(DLLVERSIONINFO2) == pdvi->info1.cbSize)
pdvi->ullVersion = MAKEDLLVERULL(2, 1, 3, 0);
return S_OK;
}
#endif /* _WIN32 */

View File

@ -31,6 +31,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h> #include <ctype.h>
#include <string.h> #include <string.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "reedsol.h" #include "reedsol.h"
#include "common.h" #include "common.h"
#include "dm200.h" #include "dm200.h"
@ -191,7 +194,7 @@ static void ecc200(unsigned char *binary, int bytes, int datablock, int rsblock)
float dmroundup(float input) float dmroundup(float input)
{ {
float fraction, output; float fraction, output = 0.0;
fraction = input - (int)input; fraction = input - (int)input;
if(fraction > 0.01) { output = (input - fraction) + 1.0; } else { output = input; } if(fraction > 0.01) { output = (input - fraction) + 1.0; } else { output = input; }
@ -358,8 +361,11 @@ int dm200encode(struct zint_symbol *symbol, unsigned char source[], unsigned cha
int text_buffer[6], text_p; int text_buffer[6], text_p;
int x12_buffer[6], x12_p; int x12_buffer[6], x12_p;
int edifact_buffer[8], edifact_p; int edifact_buffer[8], edifact_p;
#ifndef _MSC_VER
char binary[2 * inputlen]; char binary[2 * inputlen];
#else
char* binary = (char*)_alloca(2 * inputlen);
#endif
sp = 0; sp = 0;
tp = 0; tp = 0;
memset(c40_buffer, 0, 6); memset(c40_buffer, 0, 6);
@ -813,9 +819,9 @@ int data_matrix_200(struct zint_symbol *symbol, unsigned char source[])
int x, y, NC, NR, *places; int x, y, NC, NR, *places;
NC = W - 2 * (W / FW); NC = W - 2 * (W / FW);
NR = H - 2 * (H / FH); NR = H - 2 * (H / FH);
places = safemalloc(NC * NR * sizeof(int)); places = (int*)safemalloc(NC * NR * sizeof(int));
ecc200placement(places, NR, NC); ecc200placement(places, NR, NC);
grid = safemalloc(W * H); grid = (unsigned char*)safemalloc(W * H);
memset(grid, 0, W * H); memset(grid, 0, W * H);
for (y = 0; y < H; y += FH) { for (y = 0; y < H; y += FH) {
for (x = 0; x < W; x++) for (x = 0; x < W; x++)

View File

@ -23,8 +23,17 @@
#ifndef __IEC16022ECC200_H #ifndef __IEC16022ECC200_H
#define __IEC16022ECC200_H #define __IEC16022ECC200_H
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
extern int data_matrix_200(struct zint_symbol *symbol, unsigned char source[]);
#ifdef __cplusplus
}
#endif /* __cplusplus */
int data_matrix_200(struct zint_symbol *symbol, unsigned char source[]);
#define MAXBARCODE 3116 #define MAXBARCODE 3116
#define DM_ASCII 1 #define DM_ASCII 1

View File

@ -21,10 +21,16 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "dmatrix.h" #include "dmatrix.h"
#include "common.h" #include "common.h"
#ifdef _MSC_VER
int data_matrix_200(struct zint_symbol *symbol, unsigned char source[]); #include "dm200.h"
#else
extern int data_matrix_200(struct zint_symbol *symbol, unsigned char source[]);
#endif
#define B11SET " 0123456789" #define B11SET " 0123456789"
#define B27SET " ABCDEFGHIJKLMNOPQRSTUVWXYZ" #define B27SET " ABCDEFGHIJKLMNOPQRSTUVWXYZ"
@ -36,8 +42,13 @@ void crc_machine(char data_prefix_bitstream[], int scheme, unsigned char source[
int input_length, i; int input_length, i;
input_length = ustrlen(source); input_length = ustrlen(source);
char xor_register[17]; char xor_register[17];
#ifndef _MSC_VER
char precrc_bitstream[(input_length * 8) + 16]; char precrc_bitstream[(input_length * 8) + 16];
char precrc_bitstream_reversed[(input_length * 8) + 16]; char precrc_bitstream_reversed[(input_length * 8) + 16];
#else
char* precrc_bitstream = (char*)_alloca((input_length * 8) + 16);
char* precrc_bitstream_reversed = (char*)_alloca((input_length * 8) + 16);
#endif
int machine_cycles; int machine_cycles;
char input_bit, out1, out2, out3; char input_bit, out1, out2, out3;

View File

@ -22,7 +22,11 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "common.h" #include "common.h"
#include "gs1.h"
/* This code does some checks on the integrity of GS1 data. It is not intended /* This code does some checks on the integrity of GS1 data. It is not intended
to be bulletproof, nor does it report very accurately what problem was found to be bulletproof, nor does it report very accurately what problem was found
@ -257,7 +261,11 @@ int gs1_verify(struct zint_symbol *symbol, unsigned char source[], char reduced[
int ugs1_verify(struct zint_symbol *symbol, unsigned char source[], unsigned char reduced[]) int ugs1_verify(struct zint_symbol *symbol, unsigned char source[], unsigned char reduced[])
{ {
/* Only to keep the compiler happy */ /* Only to keep the compiler happy */
#ifndef _MSC_VER
char temp[ustrlen(source) + 5]; char temp[ustrlen(source) + 5];
#else
char* temp = (char*)_alloca(ustrlen(source) + 5);
#endif
int error_number, i; int error_number, i;
error_number = gs1_verify(symbol, source, temp); error_number = gs1_verify(symbol, source, temp);

View File

@ -18,6 +18,18 @@
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#ifndef __GS1_H
#define __GS1_H
int gs1_verify(struct zint_symbol *symbol, unsigned char source[], char reduced[]); #ifdef __cplusplus
int ugs1_verify(struct zint_symbol *symbol, unsigned char source[], unsigned char reduced[]); extern "C" {
#endif /* __cplusplus */
extern int gs1_verify(struct zint_symbol *symbol, unsigned char source[], char reduced[]);
extern int ugs1_verify(struct zint_symbol *symbol, unsigned char source[], unsigned char reduced[]);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __GS1_H */

View File

@ -19,9 +19,10 @@
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#include "common.h"
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "common.h"
#include "large.h"
static short int BCD[40] = { static short int BCD[40] = {
0, 0, 0, 0, 0, 0, 0, 0,

View File

@ -18,13 +18,23 @@
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#ifndef __LARGE_H
#define __LARGE_H
void binary_load(short int reg[], char data[]); #ifdef __cplusplus
void binary_add(short int accumulator[], short int input_buffer[]); extern "C" {
void binary_subtract(short int accumulator[], short int input_buffer[]); #endif /* __cplusplus */
void shiftdown(short int buffer[]);
void shiftup(short int buffer[]);
short int islarger(short int accum[], short int reg[]);
void hex_dump(short int input_buffer[]);
extern void binary_load(short int reg[], char data[]);
extern void binary_add(short int accumulator[], short int input_buffer[]);
extern void binary_subtract(short int accumulator[], short int input_buffer[]);
extern void shiftdown(short int buffer[]);
extern void shiftup(short int buffer[]);
extern short int islarger(short int accum[], short int reg[]);
extern void hex_dump(short int input_buffer[]);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __LARGE_H */

View File

@ -21,6 +21,9 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "common.h" #include "common.h"
#include "gs1.h" #include "gs1.h"
#include "sjis.h" #include "sjis.h"
@ -32,7 +35,7 @@ struct zint_symbol *ZBarcode_Create()
struct zint_symbol *symbol; struct zint_symbol *symbol;
int i, j; int i, j;
symbol = malloc(sizeof(*symbol)); symbol = (struct zint_symbol*)malloc(sizeof(*symbol));
if (!symbol) return NULL; if (!symbol) return NULL;
memset(symbol, 0, sizeof(*symbol)); memset(symbol, 0, sizeof(*symbol));
@ -386,7 +389,11 @@ int ZBarcode_Encode(struct zint_symbol *symbol, unsigned char *source)
int input_length; int input_length;
input_length = ustrlen(source); input_length = ustrlen(source);
#ifndef _MSC_VER
unsigned char preprocessed[input_length]; unsigned char preprocessed[input_length];
#else
unsigned char* preprocessed = (unsigned char*)_alloca(input_length + 1);
#endif
if(ustrlen(source) == 0) { if(ustrlen(source) == 0) {
strcpy(symbol->errtxt, "No input data"); strcpy(symbol->errtxt, "No input data");

BIN
backend/libzint.so.2.1.3 Executable file

Binary file not shown.

View File

@ -23,8 +23,8 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include "common.h" #include "common.h"
#include "micqr.h"
#include "reedsol.h" #include "reedsol.h"
#include "micqr.h"
#define NUMERIC 1 #define NUMERIC 1
#define ALPHANUM 2 #define ALPHANUM 2

View File

@ -113,15 +113,15 @@ void regroupe(int *indexliste)
/* 478 */ /* 478 */
void pdfsmooth(int *indexliste) void pdfsmooth(int *indexliste)
{ {
int i, this, last, next, length; int i, crnt, last, next, length;
for(i = 0; i < *(indexliste); i++) { for(i = 0; i < *(indexliste); i++) {
this = liste[1][i]; crnt = liste[1][i];
length = liste[0][i]; length = liste[0][i];
if(i != 0) { last = liste[1][i - 1]; } else { last = FALSE; } if(i != 0) { last = liste[1][i - 1]; } else { last = FALSE; }
if(i != *(indexliste) - 1) { next = liste[1][i + 1]; } else { next = FALSE; } if(i != *(indexliste) - 1) { next = liste[1][i + 1]; } else { next = FALSE; }
if(this == NUM) { if(crnt == NUM) {
if(i == 0) { /* first block */ if(i == 0) { /* first block */
if(*(indexliste) > 1) { /* and there are others */ if(*(indexliste) > 1) { /* and there are others */
if((next == TEX) && (length < 8)) { liste[1][i] = TEX;} if((next == TEX) && (length < 8)) { liste[1][i] = TEX;}
@ -143,12 +143,12 @@ void pdfsmooth(int *indexliste)
regroupe(indexliste); regroupe(indexliste);
/* 520 */ /* 520 */
for(i = 0; i < *(indexliste); i++) { for(i = 0; i < *(indexliste); i++) {
this = liste[1][i]; crnt = liste[1][i];
length = liste[0][i]; length = liste[0][i];
if(i != 0) { last = liste[1][i - 1]; } else { last = FALSE; } if(i != 0) { last = liste[1][i - 1]; } else { last = FALSE; }
if(i != *(indexliste) - 1) { next = liste[1][i + 1]; } else { next = FALSE; } if(i != *(indexliste) - 1) { next = liste[1][i + 1]; } else { next = FALSE; }
if((this == TEX) && (i > 0)) { /* not the first */ if((crnt == TEX) && (i > 0)) { /* not the first */
if(i == *(indexliste) - 1) { /* the last one */ if(i == *(indexliste) - 1) { /* the last one */
if((last == BYT) && (length == 1)) { liste[1][i] = BYT; } if((last == BYT) && (length == 1)) { liste[1][i] = BYT; }
} else { /* not the last one */ } else { /* not the last one */
@ -554,7 +554,7 @@ int pdf417(struct zint_symbol *symbol, unsigned char chaine[])
if(symbol->option_2 < 1) { if(symbol->option_2 < 1) {
/* This is a much more simple formula to Grand Zebu's - /* This is a much more simple formula to Grand Zebu's -
it does not try to make the symbol square */ it does not try to make the symbol square */
symbol->option_2 = 0.5 + sqrt((longueur + k) / 3); symbol->option_2 = 0.5 + sqrt((longueur + k) / 3.0);
} }
if(((longueur + k) / symbol->option_2) > 90) { if(((longueur + k) / symbol->option_2) > 90) {
/* stop the symbol from becoming too high */ /* stop the symbol from becoming too high */

View File

@ -55,7 +55,7 @@ int plessey(struct zint_symbol *symbol, unsigned char source[])
strcpy(symbol->errtxt, "Invalid characters in data"); strcpy(symbol->errtxt, "Invalid characters in data");
return error_number; return error_number;
} }
checkptr = calloc (1, ustrlen(source) * 4 + 8); checkptr = (unsigned char *)calloc (1, ustrlen(source) * 4 + 8);
/* Start character */ /* Start character */
concat(dest, "31311331"); concat(dest, "31311331");

View File

@ -22,9 +22,17 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "png.h" /* libpng header; includes zlib.h and setjmp.h */
#include "common.h" #include "common.h"
#ifdef _MSC_VER
#include <malloc.h>
#endif /* _MSC_VER */
#ifndef NO_PNG
#include "png.h" /* libpng header; includes zlib.h and setjmp.h */
#include "maxipng.h" /* Maxicode shapes */ #include "maxipng.h" /* Maxicode shapes */
#endif /* NO_PNG */
#include "font.h" /* Font for human readable text */ #include "font.h" /* Font for human readable text */
#define SSET "0123456789ABCDEF" #define SSET "0123456789ABCDEF"
@ -43,7 +51,7 @@ static void writepng_error_handler(png_structp png_ptr, png_const_charp msg)
fprintf(stderr, "writepng libpng error: %s\n", msg); fprintf(stderr, "writepng libpng error: %s\n", msg);
fflush(stderr); fflush(stderr);
graphic = png_get_error_ptr(png_ptr); graphic = (struct mainprog_info_type*)png_get_error_ptr(png_ptr);
if (graphic == NULL) { /* we are completely hosed now */ if (graphic == NULL) { /* we are completely hosed now */
fprintf(stderr, fprintf(stderr,
"writepng severe error: jmpbuf not recoverable; terminating.\n"); "writepng severe error: jmpbuf not recoverable; terminating.\n");
@ -57,7 +65,11 @@ int png_to_file(struct zint_symbol *symbol, int image_height, int image_width, c
{ {
struct mainprog_info_type wpng_info; struct mainprog_info_type wpng_info;
struct mainprog_info_type *graphic; struct mainprog_info_type *graphic;
#ifndef _MSC_VER
unsigned char outdata[image_width * 3]; unsigned char outdata[image_width * 3];
#else
unsigned char* outdata = (unsigned char*)_alloca(image_width * 3);
#endif
png_structp png_ptr; png_structp png_ptr;
png_infop info_ptr; png_infop info_ptr;
graphic = &wpng_info; graphic = &wpng_info;
@ -472,7 +484,11 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
int error_number; int error_number;
int scaler = (int)(2 * symbol->scale); int scaler = (int)(2 * symbol->scale);
int default_text_posn; int default_text_posn;
#ifndef _MSC_VER
unsigned char local_text[ustrlen(symbol->text)]; unsigned char local_text[ustrlen(symbol->text)];
#else
unsigned char* local_text = (unsigned char*)_alloca(ustrlen(symbol->text));
#endif
to_latin1(symbol->text, local_text); to_latin1(symbol->text, local_text);
@ -561,7 +577,7 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
image_height = scaler * (symbol->height + textoffset + yoffset + yoffset); image_height = scaler * (symbol->height + textoffset + yoffset + yoffset);
if (!(pixelbuf = (char *) malloc(image_width * image_height))) { if (!(pixelbuf = (char *) malloc(image_width * image_height))) {
printf("Insifficient memory for pixel buffer"); printf("Insufficient memory for pixel buffer");
return ERROR_ENCODING_PROBLEM; return ERROR_ENCODING_PROBLEM;
} else { } else {
for(i = 0; i < (image_width * image_height); i++) { for(i = 0; i < (image_width * image_height); i++) {

View File

@ -22,6 +22,9 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "common.h" #include "common.h"
#define BESET "ABCD" #define BESET "ABCD"
@ -101,8 +104,8 @@ int post_plot(struct zint_symbol *symbol, unsigned char source[])
char height_pattern[200]; char height_pattern[200];
unsigned int loopey; unsigned int loopey;
int writer; int writer;
strcpy(height_pattern, "");
int error_number; int error_number;
strcpy(height_pattern, "");
error_number = 0; error_number = 0;
@ -503,8 +506,14 @@ int japan_post(struct zint_symbol *symbol, unsigned char source[])
input_length = ustrlen(source); input_length = ustrlen(source);
inter_length = input_length * 2; inter_length = input_length * 2;
if(inter_length < 20) { inter_length = 20; } if(inter_length < 20) { inter_length = 20; }
#ifndef _MSC_VER
char inter[inter_length]; char inter[inter_length];
char local_source[input_length]; char local_source[input_length];
#else
char* inter = (char*)_alloca(inter_length);
char* local_source = (char*)_alloca(inter_length);
#endif
inter_posn = 0; inter_posn = 0;
error_number = 0; error_number = 0;

View File

@ -63,7 +63,7 @@ QRcode *encode(int security, int size, const unsigned char *intext, int kanji)
int qr_code(struct zint_symbol *symbol, unsigned char source[]) int qr_code(struct zint_symbol *symbol, unsigned char source[])
{ {
QRcode *code; QRcode *code;
int errno = 0; /*int errno = 0;*/
int i, j; int i, j;
int kanji; int kanji;
@ -89,7 +89,7 @@ int qr_code(struct zint_symbol *symbol, unsigned char source[])
QRcode_free(code); QRcode_free(code);
return errno; return 0;
} }
#else #else

View File

@ -40,13 +40,13 @@
#include <stdio.h> // only needed for debug (main) #include <stdio.h> // only needed for debug (main)
#include <stdlib.h> // only needed for malloc/free #include <stdlib.h> // only needed for malloc/free
#include "reedsol.h"
static int gfpoly; static int gfpoly;
static int symsize; // in bits static int symsize; // in bits
static int logmod; // 2**symsize - 1 static int logmod; // 2**symsize - 1
static int rlen; static int rlen;
static int *log = NULL, *alog = NULL, *rspoly = NULL; static int *logt = NULL, *alog = NULL, *rspoly = NULL;
// rs_init_gf(poly) initialises the parameters for the Galois Field. // rs_init_gf(poly) initialises the parameters for the Galois Field.
// The symbol size is determined from the highest bit set in poly // The symbol size is determined from the highest bit set in poly
@ -72,12 +72,12 @@ void rs_init_gf(int poly)
// Calculate the log/alog tables // Calculate the log/alog tables
logmod = (1 << m) - 1; logmod = (1 << m) - 1;
log = (int *)malloc(sizeof(int) * (logmod + 1)); logt = (int *)malloc(sizeof(int) * (logmod + 1));
alog = (int *)malloc(sizeof(int) * logmod); alog = (int *)malloc(sizeof(int) * logmod);
for (p = 1, v = 0; v < logmod; v++) { for (p = 1, v = 0; v < logmod; v++) {
alog[v] = p; alog[v] = p;
log[p] = v; logt[p] = v;
p <<= 1; p <<= 1;
if (p & b) if (p & b)
p ^= poly; p ^= poly;
@ -104,10 +104,10 @@ void rs_init_code(int nsym, int index)
rspoly[i] = 1; rspoly[i] = 1;
for (k = i - 1; k > 0; k--) { for (k = i - 1; k > 0; k--) {
if (rspoly[k]) if (rspoly[k])
rspoly[k] = alog[(log[rspoly[k]] + index) % logmod]; rspoly[k] = alog[(logt[rspoly[k]] + index) % logmod];
rspoly[k] ^= rspoly[k - 1]; rspoly[k] ^= rspoly[k - 1];
} }
rspoly[0] = alog[(log[rspoly[0]] + index) % logmod]; rspoly[0] = alog[(logt[rspoly[0]] + index) % logmod];
index++; index++;
} }
} }
@ -121,12 +121,12 @@ void rs_encode(int len, unsigned char *data, unsigned char *res)
m = res[rlen - 1] ^ data[i]; m = res[rlen - 1] ^ data[i];
for (k = rlen - 1; k > 0; k--) { for (k = rlen - 1; k > 0; k--) {
if (m && rspoly[k]) if (m && rspoly[k])
res[k] = res[k - 1] ^ alog[(log[m] + log[rspoly[k]]) % logmod]; res[k] = res[k - 1] ^ alog[(logt[m] + logt[rspoly[k]]) % logmod];
else else
res[k] = res[k - 1]; res[k] = res[k - 1];
} }
if (m && rspoly[0]) if (m && rspoly[0])
res[0] = alog[(log[m] + log[rspoly[0]]) % logmod]; res[0] = alog[(logt[m] + logt[rspoly[0]]) % logmod];
else else
res[0] = 0; res[0] = 0;
} }
@ -141,20 +141,20 @@ void rs_encode_long(int len, unsigned int *data, unsigned int *res)
m = res[rlen - 1] ^ data[i]; m = res[rlen - 1] ^ data[i];
for (k = rlen - 1; k > 0; k--) { for (k = rlen - 1; k > 0; k--) {
if (m && rspoly[k]) if (m && rspoly[k])
res[k] = res[k - 1] ^ alog[(log[m] + log[rspoly[k]]) % logmod]; res[k] = res[k - 1] ^ alog[(logt[m] + logt[rspoly[k]]) % logmod];
else else
res[k] = res[k - 1]; res[k] = res[k - 1];
} }
if (m && rspoly[0]) if (m && rspoly[0])
res[0] = alog[(log[m] + log[rspoly[0]]) % logmod]; res[0] = alog[(logt[m] + logt[rspoly[0]]) % logmod];
else else
res[0] = 0; res[0] = 0;
} }
} }
void rs_free() void rs_free(void)
{ /* Free memory */ { /* Free memory */
free(log); free(logt);
free(alog); free(alog);
free(rspoly); free(rspoly);
rspoly = NULL; rspoly = NULL;

View File

@ -40,6 +40,9 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef _MSC_VER
#include <malloc.h>
#endif
#include "common.h" #include "common.h"
#include "large.h" #include "large.h"
#include "rss.h" #include "rss.h"
@ -951,7 +954,7 @@ int general_rules(char field[], char type[])
for(i = 0; i < block_count; i++) { for(i = 0; i < block_count; i++) {
current = block[1][i]; current = block[1][i];
next = block[1][i + 1]; next = (block[1][i + 1] & 0xFF);
if((current == ISOIEC) && (i != (block_count - 1))) { if((current == ISOIEC) && (i != (block_count - 1))) {
if((next == ANY_ENC) && (block[0][i + 1] >= 4)) { if((next == ANY_ENC) && (block[0][i + 1] >= 4)) {
@ -1039,7 +1042,12 @@ int general_rules(char field[], char type[])
int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_string[]) int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_string[])
{ /* Handles all data encodation from section 7.2.5 of ISO/IEC 24724 */ { /* Handles all data encodation from section 7.2.5 of ISO/IEC 24724 */
int encoding_method, i, mask, j, read_posn, latch; int encoding_method, i, mask, j, read_posn, latch;
#ifndef _MSC_VER
char general_field[strlen(source)], general_field_type[strlen(source)]; char general_field[strlen(source)], general_field_type[strlen(source)];
#else
char* general_field = (char*)_alloca(strlen(source));
char* general_field_type = (char*)_alloca(strlen(source));
#endif
int remainder, d1, d2, value; int remainder, d1, d2, value;
char padstring[14]; char padstring[14];
@ -1853,13 +1861,18 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
int rssexpanded(struct zint_symbol *symbol, unsigned char source[]) int rssexpanded(struct zint_symbol *symbol, unsigned char source[])
{ /* GS1 DataBar Expanded */ { /* GS1 DataBar Expanded */
int i, j, k, l, data_chars, vs[21], group[21], v_odd[21], v_even[21]; int i, j, k, l, data_chars, vs[21], group[21], v_odd[21], v_even[21];
char binary_string[7 * ustrlen(source)], substring[21][14], latch; char substring[21][14], latch;
int char_widths[21][8], checksum, check_widths[8], c_group; int char_widths[21][8], checksum, check_widths[8], c_group;
int check_char, c_odd, c_even, elements[235], pattern_width, reader, writer; int check_char, c_odd, c_even, elements[235], pattern_width, reader, writer;
int row, elements_in_sub, special_case_row, left_to_right; int row, elements_in_sub, special_case_row, left_to_right;
int codeblocks, sub_elements[235], stack_rows, current_row, current_block; int codeblocks, sub_elements[235], stack_rows, current_row, current_block;
int separator_row; int separator_row;
char reduced[ustrlen(source)]; #ifndef _MSC_VER
char reduced[ustrlen(source)], binary_string[7 * ustrlen(source)];
#else
char* reduced = (char*)_alloca(ustrlen(source));
char* binary_string = (char*)_alloca(7 * ustrlen(source));
#endif
separator_row = 0; separator_row = 0;
reader=0; reader=0;

View File

@ -29,7 +29,7 @@
int svg_plot(struct zint_symbol *symbol) int svg_plot(struct zint_symbol *symbol)
{ {
int i, block_width, latch, r, this_row; int i, block_width, latch, r, this_row;
float textpos, large_bar_height, preset_height, row_height, row_posn = 0; float textpos, large_bar_height, preset_height, row_height, row_posn = 0.0;
FILE *fsvg; FILE *fsvg;
int fgred, fggrn, fgblu, bgred, bggrn, bgblu; int fgred, fggrn, fgblu, bgred, bggrn, bgblu;
float red_ink, green_ink, blue_ink, red_paper, green_paper, blue_paper; float red_ink, green_ink, blue_ink, red_paper, green_paper, blue_paper;

View File

@ -159,15 +159,27 @@ struct zint_symbol {
#define ERROR_FILE_ACCESS 10 #define ERROR_FILE_ACCESS 10
#define ERROR_MEMORY 11 #define ERROR_MEMORY 11
extern struct zint_symbol *ZBarcode_Create(); #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(_MSC_VER)
extern int ZBarcode_Delete(struct zint_symbol *symbol); # if defined (DLL_EXPORT) || defined(PIC) || defined(_USRDLL)
extern int ZBarcode_Encode(struct zint_symbol *symbol, unsigned char *input); # define ZINT_EXTERN __declspec(dllexport)
extern int ZBarcode_Print(struct zint_symbol *symbol); # elif defined(ZINT_DLL)
extern int ZBarcode_Encode_and_Print(struct zint_symbol *symbol, unsigned char *input); # define ZINT_EXTERN __declspec(dllimport)
extern int ZBarcode_Encode_and_Print_Rotated(struct zint_symbol *symbol, unsigned char *input, int rotate_angle); # else
# define ZINT_EXTERN extern
# endif
#else
# define ZINT_EXTERN extern
#endif
ZINT_EXTERN struct zint_symbol *ZBarcode_Create(void);
ZINT_EXTERN int ZBarcode_Delete(struct zint_symbol *symbol);
ZINT_EXTERN int ZBarcode_Encode(struct zint_symbol *symbol, unsigned char *input);
ZINT_EXTERN int ZBarcode_Print(struct zint_symbol *symbol);
ZINT_EXTERN int ZBarcode_Encode_and_Print(struct zint_symbol *symbol, unsigned char *input);
ZINT_EXTERN int ZBarcode_Encode_and_Print_Rotated(struct zint_symbol *symbol, unsigned char *input, int rotate_angle);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif #endif /* ZINT_H */

View File

@ -22,9 +22,13 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#ifndef _MSC_VER
#include <getopt.h> #include <getopt.h>
#include <zint.h> #include <zint.h>
#else
#include "getopt.h"
#include "zint.h"
#endif
#define NESET "0123456789" #define NESET "0123456789"
void types(void) { void types(void) {
@ -92,16 +96,6 @@ void usage(void)
, ZINT_VERSION); , ZINT_VERSION);
} }
int ustrlen(unsigned char data[]) {
/* Local replacement for strlen() with unsigned char strings */
int i;
i = -1;
do { i++; } while (data[i] != '\0');
return i;
}
int validator(char test_string[], char source[]) int validator(char test_string[], char source[])
{ /* Verifies that a string only uses valid characters */ { /* Verifies that a string only uses valid characters */
unsigned int i, j, latch; unsigned int i, j, latch;
@ -146,23 +140,23 @@ int main(int argc, char **argv)
{"directeps", 0, 0, 0}, {"directeps", 0, 0, 0},
{"directpng", 0, 0, 0}, {"directpng", 0, 0, 0},
{"directsvg", 0, 0, 0}, {"directsvg", 0, 0, 0},
{"barcode=", 1, 0, 'b'}, {"barcode", 1, 0, 'b'},
{"height=", 1, 0, 0}, {"height", 1, 0, 0},
{"whitesp=", 1, 0, 'w'}, {"whitesp", 1, 0, 'w'},
{"border=", 1, 0, 0}, {"border", 1, 0, 0},
{"data=", 1, 0, 'd'}, {"data", 1, 0, 'd'},
{"output=", 1, 0, 'o'}, {"output", 1, 0, 'o'},
{"fg=", 1, 0, 0}, {"fg", 1, 0, 0},
{"bg=", 1, 0, 0}, {"bg", 1, 0, 0},
{"cols=", 1, 0, 0}, {"cols", 1, 0, 0},
{"vers=", 1, 0, 0}, {"vers", 1, 0, 0},
{"rotate=", 1, 0, 0}, {"rotate", 1, 0, 0},
{"secure=", 1, 0, 0}, {"secure", 1, 0, 0},
{"reverse", 1, 0, 'r'}, {"reverse", 1, 0, 'r'},
{"mode=", 1, 0, 0}, {"mode", 1, 0, 0},
{"primary=", 1, 0, 0}, {"primary", 1, 0, 0},
{"scale=", 1, 0, 0}, {"scale", 1, 0, 0},
{"null=", 1, 0, 0}, {"null", 1, 0, 0},
{"gs1", 0, 0, 0}, {"gs1", 0, 0, 0},
{"kanji", 0, 0, 0}, {"kanji", 0, 0, 0},
{"sjis", 0, 0, 0}, {"sjis", 0, 0, 0},
@ -200,13 +194,13 @@ int main(int argc, char **argv)
if(!strcmp(long_options[option_index].name, "sjis")) { if(!strcmp(long_options[option_index].name, "sjis")) {
my_symbol->input_mode = SJIS_MODE; my_symbol->input_mode = SJIS_MODE;
} }
if(!strcmp(long_options[option_index].name, "fg=")) { if(!strcmp(long_options[option_index].name, "fg")) {
strncpy(my_symbol->fgcolour, optarg, 7); strncpy(my_symbol->fgcolour, optarg, 7);
} }
if(!strcmp(long_options[option_index].name, "bg=")) { if(!strcmp(long_options[option_index].name, "bg")) {
strncpy(my_symbol->bgcolour, optarg, 7); strncpy(my_symbol->bgcolour, optarg, 7);
} }
if(!strcmp(long_options[option_index].name, "scale=")) { if(!strcmp(long_options[option_index].name, "scale")) {
my_symbol->scale = (float)(atof(optarg)); my_symbol->scale = (float)(atof(optarg));
if(my_symbol->scale < 0.01) { if(my_symbol->scale < 0.01) {
/* Zero and negative values are not permitted */ /* Zero and negative values are not permitted */
@ -214,7 +208,7 @@ int main(int argc, char **argv)
my_symbol->scale = 1.0; my_symbol->scale = 1.0;
} }
} }
if(!strcmp(long_options[option_index].name, "border=")) { if(!strcmp(long_options[option_index].name, "border")) {
error_number = validator(NESET, optarg); error_number = validator(NESET, optarg);
if(error_number == ERROR_INVALID_DATA) { if(error_number == ERROR_INVALID_DATA) {
fprintf(stderr, "Invalid border width\n"); fprintf(stderr, "Invalid border width\n");
@ -226,7 +220,7 @@ int main(int argc, char **argv)
fprintf(stderr, "Border width out of range\n"); fprintf(stderr, "Border width out of range\n");
} }
} }
if(!strcmp(long_options[option_index].name, "null=")) { if(!strcmp(long_options[option_index].name, "null")) {
error_number = validator(NESET, optarg); error_number = validator(NESET, optarg);
if(error_number == ERROR_INVALID_DATA) { if(error_number == ERROR_INVALID_DATA) {
fprintf(stderr, "Invalid NULL replacement\n"); fprintf(stderr, "Invalid NULL replacement\n");
@ -238,7 +232,7 @@ int main(int argc, char **argv)
fprintf(stderr, "Invalid NULL replacement\n"); fprintf(stderr, "Invalid NULL replacement\n");
} }
} }
if(!strcmp(long_options[option_index].name, "height=")) { if(!strcmp(long_options[option_index].name, "height")) {
error_number = validator(NESET, optarg); error_number = validator(NESET, optarg);
if(error_number == ERROR_INVALID_DATA) { if(error_number == ERROR_INVALID_DATA) {
fprintf(stderr, "Invalid symbol height\n"); fprintf(stderr, "Invalid symbol height\n");
@ -251,35 +245,35 @@ int main(int argc, char **argv)
} }
} }
if(!strcmp(long_options[option_index].name, "cols=")) { if(!strcmp(long_options[option_index].name, "cols")) {
if((atoi(optarg) >= 1) && (atoi(optarg) <= 30)) { if((atoi(optarg) >= 1) && (atoi(optarg) <= 30)) {
my_symbol->option_2 = atoi(optarg); my_symbol->option_2 = atoi(optarg);
} else { } else {
fprintf(stderr, "Number of columns out of range\n"); fprintf(stderr, "Number of columns out of range\n");
} }
} }
if(!strcmp(long_options[option_index].name, "vers=")) { if(!strcmp(long_options[option_index].name, "vers")) {
if((atoi(optarg) >= 1) && (atoi(optarg) <= 40)) { if((atoi(optarg) >= 1) && (atoi(optarg) <= 40)) {
my_symbol->option_2 = atoi(optarg); my_symbol->option_2 = atoi(optarg);
} else { } else {
fprintf(stderr, "Invalid QR Code version\n"); fprintf(stderr, "Invalid QR Code version\n");
} }
} }
if(!strcmp(long_options[option_index].name, "secure=")) { if(!strcmp(long_options[option_index].name, "secure")) {
if((atoi(optarg) >= 1) && (atoi(optarg) <= 8)) { if((atoi(optarg) >= 1) && (atoi(optarg) <= 8)) {
my_symbol->option_1 = atoi(optarg); my_symbol->option_1 = atoi(optarg);
} else { } else {
fprintf(stderr, "ECC level out of range\n"); fprintf(stderr, "ECC level out of range\n");
} }
} }
if(!strcmp(long_options[option_index].name, "primary=")) { if(!strcmp(long_options[option_index].name, "primary")) {
if(strlen(optarg) <= 90) { if(strlen(optarg) <= 90) {
strcpy(my_symbol->primary, optarg); strcpy(my_symbol->primary, optarg);
} else { } else {
fprintf(stderr, "Primary data string too long"); fprintf(stderr, "Primary data string too long");
} }
} }
if(!strcmp(long_options[option_index].name, "mode=")) { if(!strcmp(long_options[option_index].name, "mode")) {
/* Don't allow specification of modes 2 and 3 - do it /* Don't allow specification of modes 2 and 3 - do it
automagically instead */ automagically instead */
if((optarg[0] >= '0') && (optarg[0] <= '6')) { if((optarg[0] >= '0') && (optarg[0] <= '6')) {
@ -288,7 +282,7 @@ int main(int argc, char **argv)
fprintf(stderr, "Invalid mode\n"); fprintf(stderr, "Invalid mode\n");
} }
} }
if(!strcmp(long_options[option_index].name, "rotate=")) { if(!strcmp(long_options[option_index].name, "rotate")) {
/* Only certain inputs allowed */ /* Only certain inputs allowed */
error_number = validator(NESET, optarg); error_number = validator(NESET, optarg);
if(error_number == ERROR_INVALID_DATA) { if(error_number == ERROR_INVALID_DATA) {

42
frontend/zint.rc Normal file
View File

@ -0,0 +1,42 @@
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winver.h>
#ifdef GCC_WINDRES
VS_VERSION_INFO VERSIONINFO
#else
VS_VERSION_INFO VERSIONINFO
#endif
FILEVERSION 2,1,3,0
PRODUCTVERSION 2,1,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0
#endif
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
//language ID = U.S. English, char set = Windows, Multilingual
BEGIN
VALUE "FileDescription", "libzint barcode library\0"
VALUE "FileVersion", "2.1.3.0\0"
VALUE "InternalName", "zint.exe\0"
VALUE "LegalCopyright", "Copyright © 2009 Robin Stuart & BogDan Vatra\0"
VALUE "OriginalFilename", "zint.exe\0"
VALUE "ProductName", "libzint\0"
VALUE "ProductVersion", "2.1.3.0\0"
VALUE "License", "GNU General Public License version 3\0"
VALUE "WWW", "http://www.sourceforge.net/projects/zint\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 1250
END
END

399
win32/libzint.vcproj Normal file
View File

@ -0,0 +1,399 @@
<?xml version="1.0" encoding="windows-1250"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="libzint"
ProjectGUID="{63287BBA-3B4C-44A8-B538-B2E8530B2BE6}"
RootNamespace="libzint"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(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=""
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;ZINT_VERSION=&quot;\&quot;2.1.3\&quot;&quot;;BUILD_ZINT_DLL;NO_PNG;NO_QR"
MinimalRebuild="true"
ExceptionHandling="0"
BasicRuntimeChecks="3"
SmallerTypeCheck="true"
RuntimeLibrary="3"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
CompileAs="2"
DisableSpecificWarnings="4018;4244;4305"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkLibraryDependencies="false"
OutputFile="$(OutDir)\zintd.dll"
LinkIncremental="2"
AdditionalLibraryDirectories=""
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="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="false"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;ZINT_VERSION=&quot;\&quot;2.1.3\&quot;&quot;;BUILD_ZINT_DLL;NO_PNG;NO_QR"
StringPooling="true"
ExceptionHandling="0"
RuntimeLibrary="2"
EnableFunctionLevelLinking="false"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="0"
CompileAs="2"
DisableSpecificWarnings="4018;4244;4305"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkLibraryDependencies="false"
OutputFile="$(OutDir)\zint.dll"
LinkIncremental="1"
GenerateDebugInformation="false"
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="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="..\backend\2of5.c"
>
</File>
<File
RelativePath="..\backend\auspost.c"
>
</File>
<File
RelativePath="..\backend\aztec.c"
>
</File>
<File
RelativePath="..\backend\blockf.c"
>
</File>
<File
RelativePath="..\backend\code.c"
>
</File>
<File
RelativePath="..\backend\code128.c"
>
</File>
<File
RelativePath="..\backend\code16k.c"
>
</File>
<File
RelativePath="..\backend\code49.c"
>
</File>
<File
RelativePath="..\backend\common.c"
>
</File>
<File
RelativePath="..\backend\composite.c"
>
</File>
<File
RelativePath="..\backend\dllversion.c"
>
</File>
<File
RelativePath="..\backend\dm200.c"
>
</File>
<File
RelativePath="..\backend\dmatrix.c"
>
</File>
<File
RelativePath="..\backend\gs1.c"
>
</File>
<File
RelativePath="..\backend\imail.c"
>
</File>
<File
RelativePath="..\backend\large.c"
>
</File>
<File
RelativePath="..\backend\library.c"
>
</File>
<File
RelativePath="..\backend\maxicode.c"
>
</File>
<File
RelativePath="..\backend\medical.c"
>
</File>
<File
RelativePath="..\backend\micqr.c"
>
</File>
<File
RelativePath="..\backend\pdf417.c"
>
</File>
<File
RelativePath="..\backend\plessey.c"
>
</File>
<File
RelativePath="..\backend\postal.c"
>
</File>
<File
RelativePath="..\backend\ps.c"
>
</File>
<File
RelativePath="..\backend\qr.c"
>
</File>
<File
RelativePath="..\backend\reedsol.c"
>
</File>
<File
RelativePath="..\backend\rss.c"
>
</File>
<File
RelativePath="..\backend\svg.c"
>
</File>
<File
RelativePath="..\backend\telepen.c"
>
</File>
<File
RelativePath="..\backend\upcean.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\backend\aztec.h"
>
</File>
<File
RelativePath="..\backend\code49.h"
>
</File>
<File
RelativePath="..\backend\common.h"
>
</File>
<File
RelativePath="..\backend\composite.h"
>
</File>
<File
RelativePath="..\backend\dm200.h"
>
</File>
<File
RelativePath="..\backend\dmatrix.h"
>
</File>
<File
RelativePath="..\backend\font.h"
>
</File>
<File
RelativePath="..\backend\gs1.h"
>
</File>
<File
RelativePath="..\backend\large.h"
>
</File>
<File
RelativePath="..\backend\maxicode.h"
>
</File>
<File
RelativePath="..\backend\maxipng.h"
>
</File>
<File
RelativePath="..\backend\micqr.h"
>
</File>
<File
RelativePath="..\backend\pdf417.h"
>
</File>
<File
RelativePath="..\backend\reedsol.h"
>
</File>
<File
RelativePath="..\backend\rss.h"
>
</File>
<File
RelativePath="..\backend\sjis.h"
>
</File>
<File
RelativePath="..\backend\zint.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="..\backend\zint.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

28
win32/zint.sln Normal file
View File

@ -0,0 +1,28 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zint", "zint.vcproj", "{3169C7FA-E52C-4BFC-B7BB-E55EBA133770}"
ProjectSection(ProjectDependencies) = postProject
{63287BBA-3B4C-44A8-B538-B2E8530B2BE6} = {63287BBA-3B4C-44A8-B538-B2E8530B2BE6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzint", "libzint.vcproj", "{63287BBA-3B4C-44A8-B538-B2E8530B2BE6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3169C7FA-E52C-4BFC-B7BB-E55EBA133770}.Debug|Win32.ActiveCfg = Debug|Win32
{3169C7FA-E52C-4BFC-B7BB-E55EBA133770}.Debug|Win32.Build.0 = Debug|Win32
{3169C7FA-E52C-4BFC-B7BB-E55EBA133770}.Release|Win32.ActiveCfg = Release|Win32
{3169C7FA-E52C-4BFC-B7BB-E55EBA133770}.Release|Win32.Build.0 = Release|Win32
{63287BBA-3B4C-44A8-B538-B2E8530B2BE6}.Debug|Win32.ActiveCfg = Debug|Win32
{63287BBA-3B4C-44A8-B538-B2E8530B2BE6}.Debug|Win32.Build.0 = Debug|Win32
{63287BBA-3B4C-44A8-B538-B2E8530B2BE6}.Release|Win32.ActiveCfg = Release|Win32
{63287BBA-3B4C-44A8-B538-B2E8530B2BE6}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

BIN
win32/zint.suo Normal file

Binary file not shown.

206
win32/zint.vcproj Normal file
View File

@ -0,0 +1,206 @@
<?xml version="1.0" encoding="windows-1250"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="zint"
ProjectGUID="{3169C7FA-E52C-4BFC-B7BB-E55EBA133770}"
RootNamespace="zint"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(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="..\backend"
PreprocessorDefinitions="WIN32;_WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;ZINT_VERSION=&quot;\&quot;2.1.3\&quot;&quot;;ZINT_DLL"
MinimalRebuild="true"
ExceptionHandling="0"
BasicRuntimeChecks="3"
SmallerTypeCheck="true"
RuntimeLibrary="3"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="..\backend"
PreprocessorDefinitions="WIN32;_WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;ZINT_VERSION=&quot;\&quot;2.1.3\&quot;&quot;;ZINT_DLL"
ExceptionHandling="0"
RuntimeLibrary="2"
EnableFunctionLevelLinking="false"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<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="..\frontend\getopt.c"
>
</File>
<File
RelativePath="..\frontend\getopt1.c"
>
</File>
<File
RelativePath="..\frontend\main.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\frontend\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}"
>
<File
RelativePath="..\frontend\zint.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>