CMakeLists.txt: cmake min required 3.13 -> 3.5 using CMAKE_REQUIRED_LIBRARIES; add ZINT_COVERAGE option

bmp/emf/ps.c: allow for foreground colour in ULTRA
bmp/gif/pcx.c: allow for BARCODE_STDOUT (fflush/fclose)
emf.c: hexagon rotation field not used; dont't use float index in font loop; Windows stdout binary mode
png.c: remove unused 8-bit; simplify libpng error handling and fclose outfile on error
ps.c: fix buffer overflow on colour_to_pscolor() CMYK
tif.c: fix BLACKISZERO indexes
CODE39: simplify check digit setting
reedsol.c: rs_uint_init_gf() log/alog tables must be zeroed
ZBarcode_Encode: debug: fix access out-of-bounds on non-NUL-terminated source if length < 10
manual.txt/zint.h: document NUL-terminated strings
tests: cover further cases for output (bmp/emf/etc), eci/gb18030/gb2312/sjis, reedsol, AZTEC, CODE39
This commit is contained in:
gitlost
2021-07-26 15:29:05 +01:00
parent 059abdf6a1
commit 3f33ed3eb9
90 changed files with 3754 additions and 863 deletions

View File

@ -3,7 +3,7 @@
# Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
# vim: set ts=4 sw=4 et :
cmake_minimum_required(VERSION 3.13)
cmake_minimum_required(VERSION 3.5)
project(zint_backend_tests)
enable_testing()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 714 B

After

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,98 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 119 224
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath
1.00 1.00 1.00 setrgbcolor
224.00 0.00 TB 0.00 118.90 TR
TE
0.00 0.00 0.00 setrgbcolor
4.00 220.00 TB 18.90 100.00 TR
TE
2.00 216.00 TB 18.90 100.00 TR
TE
2.00 210.00 TB 18.90 100.00 TR
TE
2.00 200.00 TB 18.90 100.00 TR
TE
8.00 190.00 TB 18.90 100.00 TR
TE
6.00 182.00 TB 18.90 100.00 TR
TE
4.00 176.00 TB 18.90 100.00 TR
TE
2.00 168.00 TB 18.90 100.00 TR
TE
2.00 160.00 TB 18.90 100.00 TR
TE
2.00 156.00 TB 18.90 100.00 TR
TE
4.00 148.00 TB 18.90 100.00 TR
TE
2.00 144.00 TB 18.90 100.00 TR
TE
2.00 134.00 TB 18.90 100.00 TR
TE
4.00 122.00 TB 18.90 100.00 TR
TE
2.00 116.00 TB 18.90 100.00 TR
TE
2.00 112.00 TB 18.90 100.00 TR
TE
2.00 108.00 TB 18.90 100.00 TR
TE
8.00 96.00 TB 18.90 100.00 TR
TE
2.00 90.00 TB 18.90 100.00 TR
TE
2.00 84.00 TB 18.90 100.00 TR
TE
8.00 74.00 TB 18.90 100.00 TR
TE
4.00 66.00 TB 18.90 100.00 TR
TE
4.00 60.00 TB 18.90 100.00 TR
TE
8.00 50.00 TB 18.90 100.00 TR
TE
2.00 46.00 TB 18.90 100.00 TR
TE
4.00 36.00 TB 18.90 100.00 TR
TE
2.00 28.00 TB 18.90 100.00 TR
TE
4.00 22.00 TB 18.90 100.00 TR
TE
6.00 10.00 TB 18.90 100.00 TR
TE
2.00 6.00 TB 18.90 100.00 TR
TE
4.00 0.00 TB 18.90 100.00 TR
TE
/Helvetica-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding ISOLatin1Encoding def
currentdict
end
/Helvetica-ISOLatin1 exch definefont pop
matrix currentmatrix
/Helvetica-ISOLatin1 findfont
14.00 scalefont setfont
0 0 moveto 3.50 112.00 translate 0.00 rotate 0 0 moveto
(<EFBFBD>gjpqy) stringwidth
gsave
270 rotate
pop
-2 div 0 rmoveto
(<EFBFBD>gjpqy) show
grestore
setmatrix

View File

@ -0,0 +1,76 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 128 119
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath
0.00 0.40 0.81 0.02 setcmykcolor
118.90 0.00 TB 0.00 128.00 TR
TE
0.90 0.41 0.00 0.19 setcmykcolor
100.00 18.90 TB 0.00 2.00 TR
TE
100.00 18.90 TB 6.00 2.00 TR
TE
100.00 18.90 TB 10.00 4.00 TR
TE
100.00 18.90 TB 16.00 4.00 TR
TE
100.00 18.90 TB 22.00 2.00 TR
TE
100.00 18.90 TB 26.00 4.00 TR
TE
100.00 18.90 TB 32.00 2.00 TR
TE
100.00 18.90 TB 38.00 2.00 TR
TE
100.00 18.90 TB 42.00 2.00 TR
TE
100.00 18.90 TB 46.00 4.00 TR
TE
100.00 18.90 TB 52.00 2.00 TR
TE
100.00 18.90 TB 56.00 4.00 TR
TE
100.00 18.90 TB 64.00 2.00 TR
TE
100.00 18.90 TB 68.00 2.00 TR
TE
100.00 18.90 TB 72.00 4.00 TR
TE
100.00 18.90 TB 78.00 4.00 TR
TE
100.00 18.90 TB 84.00 4.00 TR
TE
100.00 18.90 TB 92.00 2.00 TR
TE
100.00 18.90 TB 96.00 2.00 TR
TE
100.00 18.90 TB 100.00 2.00 TR
TE
100.00 18.90 TB 104.00 2.00 TR
TE
100.00 18.90 TB 110.00 2.00 TR
TE
100.00 18.90 TB 114.00 4.00 TR
TE
100.00 18.90 TB 120.00 4.00 TR
TE
100.00 18.90 TB 126.00 2.00 TR
TE
matrix currentmatrix
/Helvetica findfont
14.00 scalefont setfont
0 0 moveto 64.00 3.50 translate 0.00 rotate 0 0 moveto
(*123*) stringwidth
pop
-2 div 0 rmoveto
(*123*) show
setmatrix

View File

@ -0,0 +1,42 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 22 16
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath
1.00 0.00 0.00 setrgbcolor
1.00 15.00 0.80 TD
9.00 15.00 0.80 TD
13.00 15.00 0.80 TD
17.00 15.00 0.80 TD
21.00 15.00 0.80 TD
7.00 13.00 0.80 TD
11.00 13.00 0.80 TD
15.00 13.00 0.80 TD
1.00 11.00 0.80 TD
5.00 11.00 0.80 TD
13.00 11.00 0.80 TD
17.00 11.00 0.80 TD
21.00 11.00 0.80 TD
3.00 9.00 0.80 TD
1.00 7.00 0.80 TD
21.00 7.00 0.80 TD
3.00 5.00 0.80 TD
7.00 5.00 0.80 TD
11.00 5.00 0.80 TD
15.00 5.00 0.80 TD
1.00 3.00 0.80 TD
5.00 3.00 0.80 TD
17.00 3.00 0.80 TD
21.00 3.00 0.80 TD
3.00 1.00 0.80 TD
7.00 1.00 0.80 TD
15.00 1.00 0.80 TD
19.00 1.00 0.80 TD

View File

@ -0,0 +1,382 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 58 60
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath
0.00 0.00 0.00 0.00 setcmykcolor
60.00 0.00 TB 0.00 57.73 TR
TE
0.00 0.00 0.00 1.00 setcmykcolor
0.15 3.00 0.65 3.87 1.65 3.87 2.15 3.00 1.65 2.13 0.65 2.13 TH
0.15 7.00 0.65 7.87 1.65 7.87 2.15 7.00 1.65 6.13 0.65 6.13 TH
0.15 11.00 0.65 11.87 1.65 11.87 2.15 11.00 1.65 10.13 0.65 10.13 TH
0.15 15.00 0.65 15.87 1.65 15.87 2.15 15.00 1.65 14.13 0.65 14.13 TH
0.15 19.00 0.65 19.87 1.65 19.87 2.15 19.00 1.65 18.13 0.65 18.13 TH
0.15 23.00 0.65 23.87 1.65 23.87 2.15 23.00 1.65 22.13 0.65 22.13 TH
0.15 27.00 0.65 27.87 1.65 27.87 2.15 27.00 1.65 26.13 0.65 26.13 TH
0.15 31.00 0.65 31.87 1.65 31.87 2.15 31.00 1.65 30.13 0.65 30.13 TH
0.15 35.00 0.65 35.87 1.65 35.87 2.15 35.00 1.65 34.13 0.65 34.13 TH
0.15 39.00 0.65 39.87 1.65 39.87 2.15 39.00 1.65 38.13 0.65 38.13 TH
0.15 43.00 0.65 43.87 1.65 43.87 2.15 43.00 1.65 42.13 0.65 42.13 TH
0.15 47.00 0.65 47.87 1.65 47.87 2.15 47.00 1.65 46.13 0.65 46.13 TH
0.15 51.00 0.65 51.87 1.65 51.87 2.15 51.00 1.65 50.13 0.65 50.13 TH
0.15 55.00 0.65 55.87 1.65 55.87 2.15 55.00 1.65 54.13 0.65 54.13 TH
0.15 57.00 0.65 57.87 1.65 57.87 2.15 57.00 1.65 56.13 0.65 56.13 TH
0.15 59.00 0.65 59.87 1.65 59.87 2.15 59.00 1.65 58.13 0.65 58.13 TH
3.62 1.00 4.12 1.87 5.12 1.87 5.62 1.00 5.12 0.13 4.12 0.13 TH
3.62 5.00 4.12 5.87 5.12 5.87 5.62 5.00 5.12 4.13 4.12 4.13 TH
3.62 9.00 4.12 9.87 5.12 9.87 5.62 9.00 5.12 8.13 4.12 8.13 TH
3.62 13.00 4.12 13.87 5.12 13.87 5.62 13.00 5.12 12.13 4.12 12.13 TH
3.62 17.00 4.12 17.87 5.12 17.87 5.62 17.00 5.12 16.13 4.12 16.13 TH
3.62 21.00 4.12 21.87 5.12 21.87 5.62 21.00 5.12 20.13 4.12 20.13 TH
3.62 25.00 4.12 25.87 5.12 25.87 5.62 25.00 5.12 24.13 4.12 24.13 TH
3.62 29.00 4.12 29.87 5.12 29.87 5.62 29.00 5.12 28.13 4.12 28.13 TH
3.62 33.00 4.12 33.87 5.12 33.87 5.62 33.00 5.12 32.13 4.12 32.13 TH
3.62 37.00 4.12 37.87 5.12 37.87 5.62 37.00 5.12 36.13 4.12 36.13 TH
3.62 41.00 4.12 41.87 5.12 41.87 5.62 41.00 5.12 40.13 4.12 40.13 TH
3.62 45.00 4.12 45.87 5.12 45.87 5.62 45.00 5.12 44.13 4.12 44.13 TH
3.62 49.00 4.12 49.87 5.12 49.87 5.62 49.00 5.12 48.13 4.12 48.13 TH
3.62 53.00 4.12 53.87 5.12 53.87 5.62 53.00 5.12 52.13 4.12 52.13 TH
3.62 57.00 4.12 57.87 5.12 57.87 5.62 57.00 5.12 56.13 4.12 56.13 TH
5.35 4.00 5.85 4.87 6.85 4.87 7.35 4.00 6.85 3.13 5.85 3.13 TH
5.35 8.00 5.85 8.87 6.85 8.87 7.35 8.00 6.85 7.13 5.85 7.13 TH
5.35 12.00 5.85 12.87 6.85 12.87 7.35 12.00 6.85 11.13 5.85 11.13 TH
5.35 16.00 5.85 16.87 6.85 16.87 7.35 16.00 6.85 15.13 5.85 15.13 TH
5.35 20.00 5.85 20.87 6.85 20.87 7.35 20.00 6.85 19.13 5.85 19.13 TH
5.35 24.00 5.85 24.87 6.85 24.87 7.35 24.00 6.85 23.13 5.85 23.13 TH
5.35 28.00 5.85 28.87 6.85 28.87 7.35 28.00 6.85 27.13 5.85 27.13 TH
5.35 32.00 5.85 32.87 6.85 32.87 7.35 32.00 6.85 31.13 5.85 31.13 TH
5.35 36.00 5.85 36.87 6.85 36.87 7.35 36.00 6.85 35.13 5.85 35.13 TH
5.35 40.00 5.85 40.87 6.85 40.87 7.35 40.00 6.85 39.13 5.85 39.13 TH
5.35 44.00 5.85 44.87 6.85 44.87 7.35 44.00 6.85 43.13 5.85 43.13 TH
5.35 48.00 5.85 48.87 6.85 48.87 7.35 48.00 6.85 47.13 5.85 47.13 TH
5.35 52.00 5.85 52.87 6.85 52.87 7.35 52.00 6.85 51.13 5.85 51.13 TH
5.35 56.00 5.85 56.87 6.85 56.87 7.35 56.00 6.85 55.13 5.85 55.13 TH
5.35 58.00 5.85 58.87 6.85 58.87 7.35 58.00 6.85 57.13 5.85 57.13 TH
7.08 59.00 7.58 59.87 8.58 59.87 9.08 59.00 8.58 58.13 7.58 58.13 TH
8.81 2.00 9.31 2.87 10.31 2.87 10.81 2.00 10.31 1.13 9.31 1.13 TH
8.81 6.00 9.31 6.87 10.31 6.87 10.81 6.00 10.31 5.13 9.31 5.13 TH
8.81 10.00 9.31 10.87 10.31 10.87 10.81 10.00 10.31 9.13 9.31 9.13 TH
8.81 14.00 9.31 14.87 10.31 14.87 10.81 14.00 10.31 13.13 9.31 13.13 TH
8.81 18.00 9.31 18.87 10.31 18.87 10.81 18.00 10.31 17.13 9.31 17.13 TH
8.81 22.00 9.31 22.87 10.31 22.87 10.81 22.00 10.31 21.13 9.31 21.13 TH
8.81 26.00 9.31 26.87 10.31 26.87 10.81 26.00 10.31 25.13 9.31 25.13 TH
8.81 30.00 9.31 30.87 10.31 30.87 10.81 30.00 10.31 29.13 9.31 29.13 TH
8.81 34.00 9.31 34.87 10.31 34.87 10.81 34.00 10.31 33.13 9.31 33.13 TH
8.81 38.00 9.31 38.87 10.31 38.87 10.81 38.00 10.31 37.13 9.31 37.13 TH
8.81 42.00 9.31 42.87 10.31 42.87 10.81 42.00 10.31 41.13 9.31 41.13 TH
8.81 46.00 9.31 46.87 10.31 46.87 10.81 46.00 10.31 45.13 9.31 45.13 TH
8.81 50.00 9.31 50.87 10.31 50.87 10.81 50.00 10.31 49.13 9.31 49.13 TH
8.81 54.00 9.31 54.87 10.31 54.87 10.81 54.00 10.31 53.13 9.31 53.13 TH
10.55 3.00 11.05 3.87 12.05 3.87 12.55 3.00 12.05 2.13 11.05 2.13 TH
10.55 7.00 11.05 7.87 12.05 7.87 12.55 7.00 12.05 6.13 11.05 6.13 TH
10.55 11.00 11.05 11.87 12.05 11.87 12.55 11.00 12.05 10.13 11.05 10.13 TH
10.55 15.00 11.05 15.87 12.05 15.87 12.55 15.00 12.05 14.13 11.05 14.13 TH
10.55 19.00 11.05 19.87 12.05 19.87 12.55 19.00 12.05 18.13 11.05 18.13 TH
10.55 23.00 11.05 23.87 12.05 23.87 12.55 23.00 12.05 22.13 11.05 22.13 TH
10.55 27.00 11.05 27.87 12.05 27.87 12.55 27.00 12.05 26.13 11.05 26.13 TH
10.55 31.00 11.05 31.87 12.05 31.87 12.55 31.00 12.05 30.13 11.05 30.13 TH
10.55 35.00 11.05 35.87 12.05 35.87 12.55 35.00 12.05 34.13 11.05 34.13 TH
10.55 39.00 11.05 39.87 12.05 39.87 12.55 39.00 12.05 38.13 11.05 38.13 TH
10.55 43.00 11.05 43.87 12.05 43.87 12.55 43.00 12.05 42.13 11.05 42.13 TH
10.55 47.00 11.05 47.87 12.05 47.87 12.55 47.00 12.05 46.13 11.05 46.13 TH
10.55 51.00 11.05 51.87 12.05 51.87 12.55 51.00 12.05 50.13 11.05 50.13 TH
10.55 55.00 11.05 55.87 12.05 55.87 12.55 55.00 12.05 54.13 11.05 54.13 TH
10.55 57.00 11.05 57.87 12.05 57.87 12.55 57.00 12.05 56.13 11.05 56.13 TH
12.28 58.00 12.78 58.87 13.78 58.87 14.28 58.00 13.78 57.13 12.78 57.13 TH
14.01 1.00 14.51 1.87 15.51 1.87 16.01 1.00 15.51 0.13 14.51 0.13 TH
14.01 5.00 14.51 5.87 15.51 5.87 16.01 5.00 15.51 4.13 14.51 4.13 TH
14.01 9.00 14.51 9.87 15.51 9.87 16.01 9.00 15.51 8.13 14.51 8.13 TH
14.01 13.00 14.51 13.87 15.51 13.87 16.01 13.00 15.51 12.13 14.51 12.13 TH
14.01 17.00 14.51 17.87 15.51 17.87 16.01 17.00 15.51 16.13 14.51 16.13 TH
14.01 21.00 14.51 21.87 15.51 21.87 16.01 21.00 15.51 20.13 14.51 20.13 TH
14.01 25.00 14.51 25.87 15.51 25.87 16.01 25.00 15.51 24.13 14.51 24.13 TH
14.01 29.00 14.51 29.87 15.51 29.87 16.01 29.00 15.51 28.13 14.51 28.13 TH
14.01 33.00 14.51 33.87 15.51 33.87 16.01 33.00 15.51 32.13 14.51 32.13 TH
14.01 37.00 14.51 37.87 15.51 37.87 16.01 37.00 15.51 36.13 14.51 36.13 TH
14.01 41.00 14.51 41.87 15.51 41.87 16.01 41.00 15.51 40.13 14.51 40.13 TH
14.01 45.00 14.51 45.87 15.51 45.87 16.01 45.00 15.51 44.13 14.51 44.13 TH
14.01 49.00 14.51 49.87 15.51 49.87 16.01 49.00 15.51 48.13 14.51 48.13 TH
14.01 53.00 14.51 53.87 15.51 53.87 16.01 53.00 15.51 52.13 14.51 52.13 TH
14.01 59.00 14.51 59.87 15.51 59.87 16.01 59.00 15.51 58.13 14.51 58.13 TH
15.74 4.00 16.24 4.87 17.24 4.87 17.74 4.00 17.24 3.13 16.24 3.13 TH
15.74 8.00 16.24 8.87 17.24 8.87 17.74 8.00 17.24 7.13 16.24 7.13 TH
15.74 12.00 16.24 12.87 17.24 12.87 17.74 12.00 17.24 11.13 16.24 11.13 TH
15.74 16.00 16.24 16.87 17.24 16.87 17.74 16.00 17.24 15.13 16.24 15.13 TH
15.74 20.00 16.24 20.87 17.24 20.87 17.74 20.00 17.24 19.13 16.24 19.13 TH
15.74 22.00 16.24 22.87 17.24 22.87 17.74 22.00 17.24 21.13 16.24 21.13 TH
15.74 24.00 16.24 24.87 17.24 24.87 17.74 24.00 17.24 23.13 16.24 23.13 TH
15.74 26.00 16.24 26.87 17.24 26.87 17.74 26.00 17.24 25.13 16.24 25.13 TH
15.74 28.00 16.24 28.87 17.24 28.87 17.74 28.00 17.24 27.13 16.24 27.13 TH
15.74 32.00 16.24 32.87 17.24 32.87 17.74 32.00 17.24 31.13 16.24 31.13 TH
15.74 42.00 16.24 42.87 17.24 42.87 17.74 42.00 17.24 41.13 16.24 41.13 TH
15.74 48.00 16.24 48.87 17.24 48.87 17.74 48.00 17.24 47.13 16.24 47.13 TH
15.74 52.00 16.24 52.87 17.24 52.87 17.74 52.00 17.24 51.13 16.24 51.13 TH
15.74 56.00 16.24 56.87 17.24 56.87 17.74 56.00 17.24 55.13 16.24 55.13 TH
17.47 23.00 17.97 23.87 18.97 23.87 19.47 23.00 18.97 22.13 17.97 22.13 TH
17.47 33.00 17.97 33.87 18.97 33.87 19.47 33.00 18.97 32.13 17.97 32.13 TH
17.47 43.00 17.97 43.87 18.97 43.87 19.47 43.00 18.97 42.13 17.97 42.13 TH
19.21 2.00 19.71 2.87 20.71 2.87 21.21 2.00 20.71 1.13 19.71 1.13 TH
19.21 6.00 19.71 6.87 20.71 6.87 21.21 6.00 20.71 5.13 19.71 5.13 TH
19.21 10.00 19.71 10.87 20.71 10.87 21.21 10.00 20.71 9.13 19.71 9.13 TH
19.21 14.00 19.71 14.87 20.71 14.87 21.21 14.00 20.71 13.13 19.71 13.13 TH
19.21 20.00 19.71 20.87 20.71 20.87 21.21 20.00 20.71 19.13 19.71 19.13 TH
19.21 22.00 19.71 22.87 20.71 22.87 21.21 22.00 20.71 21.13 19.71 21.13 TH
19.21 38.00 19.71 38.87 20.71 38.87 21.21 38.00 20.71 37.13 19.71 37.13 TH
19.21 44.00 19.71 44.87 20.71 44.87 21.21 44.00 20.71 43.13 19.71 43.13 TH
19.21 46.00 19.71 46.87 20.71 46.87 21.21 46.00 20.71 45.13 19.71 45.13 TH
19.21 50.00 19.71 50.87 20.71 50.87 21.21 50.00 20.71 49.13 19.71 49.13 TH
19.21 54.00 19.71 54.87 20.71 54.87 21.21 54.00 20.71 53.13 19.71 53.13 TH
19.21 58.00 19.71 58.87 20.71 58.87 21.21 58.00 20.71 57.13 19.71 57.13 TH
20.94 3.00 21.44 3.87 22.44 3.87 22.94 3.00 22.44 2.13 21.44 2.13 TH
20.94 7.00 21.44 7.87 22.44 7.87 22.94 7.00 22.44 6.13 21.44 6.13 TH
20.94 11.00 21.44 11.87 22.44 11.87 22.94 11.00 22.44 10.13 21.44 10.13 TH
20.94 15.00 21.44 15.87 22.44 15.87 22.94 15.00 22.44 14.13 21.44 14.13 TH
20.94 19.00 21.44 19.87 22.44 19.87 22.94 19.00 22.44 18.13 21.44 18.13 TH
20.94 21.00 21.44 21.87 22.44 21.87 22.94 21.00 22.44 20.13 21.44 20.13 TH
20.94 43.00 21.44 43.87 22.44 43.87 22.94 43.00 22.44 42.13 21.44 42.13 TH
20.94 47.00 21.44 47.87 22.44 47.87 22.94 47.00 22.44 46.13 21.44 46.13 TH
20.94 51.00 21.44 51.87 22.44 51.87 22.94 51.00 22.44 50.13 21.44 50.13 TH
20.94 55.00 21.44 55.87 22.44 55.87 22.94 55.00 22.44 54.13 21.44 54.13 TH
20.94 57.00 21.44 57.87 22.44 57.87 22.94 57.00 22.44 56.13 21.44 56.13 TH
22.67 16.00 23.17 16.87 24.17 16.87 24.67 16.00 24.17 15.13 23.17 15.13 TH
22.67 44.00 23.17 44.87 24.17 44.87 24.67 44.00 24.17 43.13 23.17 43.13 TH
24.40 1.00 24.90 1.87 25.90 1.87 26.40 1.00 25.90 0.13 24.90 0.13 TH
24.40 5.00 24.90 5.87 25.90 5.87 26.40 5.00 25.90 4.13 24.90 4.13 TH
24.40 9.00 24.90 9.87 25.90 9.87 26.40 9.00 25.90 8.13 24.90 8.13 TH
24.40 17.00 24.90 17.87 25.90 17.87 26.40 17.00 25.90 16.13 24.90 16.13 TH
24.40 39.00 24.90 39.87 25.90 39.87 26.40 39.00 25.90 38.13 24.90 38.13 TH
24.40 41.00 24.90 41.87 25.90 41.87 26.40 41.00 25.90 40.13 24.90 40.13 TH
24.40 45.00 24.90 45.87 25.90 45.87 26.40 45.00 25.90 44.13 24.90 44.13 TH
24.40 49.00 24.90 49.87 25.90 49.87 26.40 49.00 25.90 48.13 24.90 48.13 TH
24.40 53.00 24.90 53.87 25.90 53.87 26.40 53.00 25.90 52.13 24.90 52.13 TH
26.13 4.00 26.63 4.87 27.63 4.87 28.13 4.00 27.63 3.13 26.63 3.13 TH
26.13 8.00 26.63 8.87 27.63 8.87 28.13 8.00 27.63 7.13 26.63 7.13 TH
26.13 12.00 26.63 12.87 27.63 12.87 28.13 12.00 27.63 11.13 26.63 11.13 TH
26.13 14.00 26.63 14.87 27.63 14.87 28.13 14.00 27.63 13.13 26.63 13.13 TH
26.13 16.00 26.63 16.87 27.63 16.87 28.13 16.00 27.63 15.13 26.63 15.13 TH
26.13 18.00 26.63 18.87 27.63 18.87 28.13 18.00 27.63 17.13 26.63 17.13 TH
26.13 42.00 26.63 42.87 27.63 42.87 28.13 42.00 27.63 41.13 26.63 41.13 TH
26.13 48.00 26.63 48.87 27.63 48.87 28.13 48.00 27.63 47.13 26.63 47.13 TH
26.13 52.00 26.63 52.87 27.63 52.87 28.13 52.00 27.63 51.13 26.63 51.13 TH
26.13 56.00 26.63 56.87 27.63 56.87 28.13 56.00 27.63 55.13 26.63 55.13 TH
26.13 58.00 26.63 58.87 27.63 58.87 28.13 58.00 27.63 57.13 26.63 57.13 TH
27.87 17.00 28.37 17.87 29.37 17.87 29.87 17.00 29.37 16.13 28.37 16.13 TH
27.87 41.00 28.37 41.87 29.37 41.87 29.87 41.00 29.37 40.13 28.37 40.13 TH
27.87 57.00 28.37 57.87 29.37 57.87 29.87 57.00 29.37 56.13 28.37 56.13 TH
29.60 2.00 30.10 2.87 31.10 2.87 31.60 2.00 31.10 1.13 30.10 1.13 TH
29.60 6.00 30.10 6.87 31.10 6.87 31.60 6.00 31.10 5.13 30.10 5.13 TH
29.60 10.00 30.10 10.87 31.10 10.87 31.60 10.00 31.10 9.13 30.10 9.13 TH
29.60 42.00 30.10 42.87 31.10 42.87 31.60 42.00 31.10 41.13 30.10 41.13 TH
29.60 44.00 30.10 44.87 31.10 44.87 31.60 44.00 31.10 43.13 30.10 43.13 TH
29.60 46.00 30.10 46.87 31.10 46.87 31.60 46.00 31.10 45.13 30.10 45.13 TH
29.60 50.00 30.10 50.87 31.10 50.87 31.60 50.00 31.10 49.13 30.10 49.13 TH
29.60 54.00 30.10 54.87 31.10 54.87 31.60 54.00 31.10 53.13 30.10 53.13 TH
31.33 3.00 31.83 3.87 32.83 3.87 33.33 3.00 32.83 2.13 31.83 2.13 TH
31.33 7.00 31.83 7.87 32.83 7.87 33.33 7.00 32.83 6.13 31.83 6.13 TH
31.33 11.00 31.83 11.87 32.83 11.87 33.33 11.00 32.83 10.13 31.83 10.13 TH
31.33 15.00 31.83 15.87 32.83 15.87 33.33 15.00 32.83 14.13 31.83 14.13 TH
31.33 17.00 31.83 17.87 32.83 17.87 33.33 17.00 32.83 16.13 31.83 16.13 TH
31.33 19.00 31.83 19.87 32.83 19.87 33.33 19.00 32.83 18.13 31.83 18.13 TH
31.33 43.00 31.83 43.87 32.83 43.87 33.33 43.00 32.83 42.13 31.83 42.13 TH
31.33 47.00 31.83 47.87 32.83 47.87 33.33 47.00 32.83 46.13 31.83 46.13 TH
31.33 51.00 31.83 51.87 32.83 51.87 33.33 51.00 32.83 50.13 31.83 50.13 TH
31.33 55.00 31.83 55.87 32.83 55.87 33.33 55.00 32.83 54.13 31.83 54.13 TH
31.33 57.00 31.83 57.87 32.83 57.87 33.33 57.00 32.83 56.13 31.83 56.13 TH
31.33 59.00 31.83 59.87 32.83 59.87 33.33 59.00 32.83 58.13 31.83 58.13 TH
33.06 18.00 33.56 18.87 34.56 18.87 35.06 18.00 34.56 17.13 33.56 17.13 TH
33.06 58.00 33.56 58.87 34.56 58.87 35.06 58.00 34.56 57.13 33.56 57.13 TH
34.79 1.00 35.29 1.87 36.29 1.87 36.79 1.00 36.29 0.13 35.29 0.13 TH
34.79 5.00 35.29 5.87 36.29 5.87 36.79 5.00 36.29 4.13 35.29 4.13 TH
34.79 9.00 35.29 9.87 36.29 9.87 36.79 9.00 36.29 8.13 35.29 8.13 TH
34.79 13.00 35.29 13.87 36.29 13.87 36.79 13.00 36.29 12.13 35.29 12.13 TH
34.79 15.00 35.29 15.87 36.29 15.87 36.79 15.00 36.29 14.13 35.29 14.13 TH
34.79 37.00 35.29 37.87 36.29 37.87 36.79 37.00 36.29 36.13 35.29 36.13 TH
34.79 39.00 35.29 39.87 36.29 39.87 36.79 39.00 36.29 38.13 35.29 38.13 TH
34.79 41.00 35.29 41.87 36.29 41.87 36.79 41.00 36.29 40.13 35.29 40.13 TH
34.79 43.00 35.29 43.87 36.29 43.87 36.79 43.00 36.29 42.13 35.29 42.13 TH
34.79 45.00 35.29 45.87 36.29 45.87 36.79 45.00 36.29 44.13 35.29 44.13 TH
34.79 49.00 35.29 49.87 36.29 49.87 36.79 49.00 36.29 48.13 35.29 48.13 TH
34.79 53.00 35.29 53.87 36.29 53.87 36.79 53.00 36.29 52.13 35.29 52.13 TH
34.79 57.00 35.29 57.87 36.29 57.87 36.79 57.00 36.29 56.13 35.29 56.13 TH
34.79 59.00 35.29 59.87 36.29 59.87 36.79 59.00 36.29 58.13 35.29 58.13 TH
36.53 4.00 37.03 4.87 38.03 4.87 38.53 4.00 38.03 3.13 37.03 3.13 TH
36.53 8.00 37.03 8.87 38.03 8.87 38.53 8.00 38.03 7.13 37.03 7.13 TH
36.53 12.00 37.03 12.87 38.03 12.87 38.53 12.00 38.03 11.13 37.03 11.13 TH
36.53 16.00 37.03 16.87 38.03 16.87 38.53 16.00 38.03 15.13 37.03 15.13 TH
36.53 20.00 37.03 20.87 38.03 20.87 38.53 20.00 38.03 19.13 37.03 19.13 TH
36.53 40.00 37.03 40.87 38.03 40.87 38.53 40.00 38.03 39.13 37.03 39.13 TH
36.53 42.00 37.03 42.87 38.03 42.87 38.53 42.00 38.03 41.13 37.03 41.13 TH
36.53 44.00 37.03 44.87 38.03 44.87 38.53 44.00 38.03 43.13 37.03 43.13 TH
36.53 48.00 37.03 48.87 38.03 48.87 38.53 48.00 38.03 47.13 37.03 47.13 TH
36.53 52.00 37.03 52.87 38.03 52.87 38.53 52.00 38.03 51.13 37.03 51.13 TH
36.53 56.00 37.03 56.87 38.03 56.87 38.53 56.00 38.03 55.13 37.03 55.13 TH
38.26 19.00 38.76 19.87 39.76 19.87 40.26 19.00 39.76 18.13 38.76 18.13 TH
38.26 21.00 38.76 21.87 39.76 21.87 40.26 21.00 39.76 20.13 38.76 20.13 TH
38.26 25.00 38.76 25.87 39.76 25.87 40.26 25.00 39.76 24.13 38.76 24.13 TH
38.26 27.00 38.76 27.87 39.76 27.87 40.26 27.00 39.76 26.13 38.76 26.13 TH
38.26 29.00 38.76 29.87 39.76 29.87 40.26 29.00 39.76 28.13 38.76 28.13 TH
38.26 33.00 38.76 33.87 39.76 33.87 40.26 33.00 39.76 32.13 38.76 32.13 TH
38.26 35.00 38.76 35.87 39.76 35.87 40.26 35.00 39.76 34.13 38.76 34.13 TH
38.26 37.00 38.76 37.87 39.76 37.87 40.26 37.00 39.76 36.13 38.76 36.13 TH
38.26 41.00 38.76 41.87 39.76 41.87 40.26 41.00 39.76 40.13 38.76 40.13 TH
38.26 57.00 38.76 57.87 39.76 57.87 40.26 57.00 39.76 56.13 38.76 56.13 TH
38.26 59.00 38.76 59.87 39.76 59.87 40.26 59.00 39.76 58.13 38.76 58.13 TH
39.99 2.00 40.49 2.87 41.49 2.87 41.99 2.00 41.49 1.13 40.49 1.13 TH
39.99 6.00 40.49 6.87 41.49 6.87 41.99 6.00 41.49 5.13 40.49 5.13 TH
39.99 10.00 40.49 10.87 41.49 10.87 41.99 10.00 41.49 9.13 40.49 9.13 TH
39.99 14.00 40.49 14.87 41.49 14.87 41.99 14.00 41.49 13.13 40.49 13.13 TH
39.99 20.00 40.49 20.87 41.49 20.87 41.99 20.00 41.49 19.13 40.49 19.13 TH
39.99 22.00 40.49 22.87 41.49 22.87 41.99 22.00 41.49 21.13 40.49 21.13 TH
39.99 32.00 40.49 32.87 41.49 32.87 41.99 32.00 41.49 31.13 40.49 31.13 TH
39.99 36.00 40.49 36.87 41.49 36.87 41.99 36.00 41.49 35.13 40.49 35.13 TH
39.99 38.00 40.49 38.87 41.49 38.87 41.99 38.00 41.49 37.13 40.49 37.13 TH
39.99 46.00 40.49 46.87 41.49 46.87 41.99 46.00 41.49 45.13 40.49 45.13 TH
39.99 50.00 40.49 50.87 41.49 50.87 41.99 50.00 41.49 49.13 40.49 49.13 TH
39.99 54.00 40.49 54.87 41.49 54.87 41.99 54.00 41.49 53.13 40.49 53.13 TH
39.99 58.00 40.49 58.87 41.49 58.87 41.99 58.00 41.49 57.13 40.49 57.13 TH
41.72 3.00 42.22 3.87 43.22 3.87 43.72 3.00 43.22 2.13 42.22 2.13 TH
41.72 7.00 42.22 7.87 43.22 7.87 43.72 7.00 43.22 6.13 42.22 6.13 TH
41.72 11.00 42.22 11.87 43.22 11.87 43.72 11.00 43.22 10.13 42.22 10.13 TH
41.72 15.00 42.22 15.87 43.22 15.87 43.72 15.00 43.22 14.13 42.22 14.13 TH
41.72 19.00 42.22 19.87 43.22 19.87 43.72 19.00 43.22 18.13 42.22 18.13 TH
41.72 23.00 42.22 23.87 43.22 23.87 43.72 23.00 43.22 22.13 42.22 22.13 TH
41.72 27.00 42.22 27.87 43.22 27.87 43.72 27.00 43.22 26.13 42.22 26.13 TH
41.72 31.00 42.22 31.87 43.22 31.87 43.72 31.00 43.22 30.13 42.22 30.13 TH
41.72 35.00 42.22 35.87 43.22 35.87 43.72 35.00 43.22 34.13 42.22 34.13 TH
41.72 39.00 42.22 39.87 43.22 39.87 43.72 39.00 43.22 38.13 42.22 38.13 TH
41.72 41.00 42.22 41.87 43.22 41.87 43.72 41.00 43.22 40.13 42.22 40.13 TH
41.72 43.00 42.22 43.87 43.22 43.87 43.72 43.00 43.22 42.13 42.22 42.13 TH
41.72 45.00 42.22 45.87 43.22 45.87 43.72 45.00 43.22 44.13 42.22 44.13 TH
41.72 47.00 42.22 47.87 43.22 47.87 43.72 47.00 43.22 46.13 42.22 46.13 TH
41.72 51.00 42.22 51.87 43.22 51.87 43.72 51.00 43.22 50.13 42.22 50.13 TH
41.72 55.00 42.22 55.87 43.22 55.87 43.72 55.00 43.22 54.13 42.22 54.13 TH
41.72 57.00 42.22 57.87 43.22 57.87 43.72 57.00 43.22 56.13 42.22 56.13 TH
41.72 59.00 42.22 59.87 43.22 59.87 43.72 59.00 43.22 58.13 42.22 58.13 TH
43.45 42.00 43.95 42.87 44.95 42.87 45.45 42.00 44.95 41.13 43.95 41.13 TH
43.45 44.00 43.95 44.87 44.95 44.87 45.45 44.00 44.95 43.13 43.95 43.13 TH
43.45 46.00 43.95 46.87 44.95 46.87 45.45 46.00 44.95 45.13 43.95 45.13 TH
43.45 48.00 43.95 48.87 44.95 48.87 45.45 48.00 44.95 47.13 43.95 47.13 TH
43.45 52.00 43.95 52.87 44.95 52.87 45.45 52.00 44.95 51.13 43.95 51.13 TH
43.45 56.00 43.95 56.87 44.95 56.87 45.45 56.00 44.95 55.13 43.95 55.13 TH
43.45 58.00 43.95 58.87 44.95 58.87 45.45 58.00 44.95 57.13 43.95 57.13 TH
45.19 1.00 45.69 1.87 46.69 1.87 47.19 1.00 46.69 0.13 45.69 0.13 TH
45.19 5.00 45.69 5.87 46.69 5.87 47.19 5.00 46.69 4.13 45.69 4.13 TH
45.19 9.00 45.69 9.87 46.69 9.87 47.19 9.00 46.69 8.13 45.69 8.13 TH
45.19 13.00 45.69 13.87 46.69 13.87 47.19 13.00 46.69 12.13 45.69 12.13 TH
45.19 17.00 45.69 17.87 46.69 17.87 47.19 17.00 46.69 16.13 45.69 16.13 TH
45.19 21.00 45.69 21.87 46.69 21.87 47.19 21.00 46.69 20.13 45.69 20.13 TH
45.19 25.00 45.69 25.87 46.69 25.87 47.19 25.00 46.69 24.13 45.69 24.13 TH
45.19 29.00 45.69 29.87 46.69 29.87 47.19 29.00 46.69 28.13 45.69 28.13 TH
45.19 33.00 45.69 33.87 46.69 33.87 47.19 33.00 46.69 32.13 45.69 32.13 TH
45.19 37.00 45.69 37.87 46.69 37.87 47.19 37.00 46.69 36.13 45.69 36.13 TH
45.19 57.00 45.69 57.87 46.69 57.87 47.19 57.00 46.69 56.13 45.69 56.13 TH
46.92 2.00 47.42 2.87 48.42 2.87 48.92 2.00 48.42 1.13 47.42 1.13 TH
46.92 4.00 47.42 4.87 48.42 4.87 48.92 4.00 48.42 3.13 47.42 3.13 TH
46.92 6.00 47.42 6.87 48.42 6.87 48.92 6.00 48.42 5.13 47.42 5.13 TH
46.92 8.00 47.42 8.87 48.42 8.87 48.92 8.00 48.42 7.13 47.42 7.13 TH
46.92 10.00 47.42 10.87 48.42 10.87 48.92 10.00 48.42 9.13 47.42 9.13 TH
46.92 12.00 47.42 12.87 48.42 12.87 48.92 12.00 48.42 11.13 47.42 11.13 TH
46.92 14.00 47.42 14.87 48.42 14.87 48.92 14.00 48.42 13.13 47.42 13.13 TH
46.92 16.00 47.42 16.87 48.42 16.87 48.92 16.00 48.42 15.13 47.42 15.13 TH
46.92 26.00 47.42 26.87 48.42 26.87 48.92 26.00 48.42 25.13 47.42 25.13 TH
46.92 28.00 47.42 28.87 48.42 28.87 48.92 28.00 48.42 27.13 47.42 27.13 TH
46.92 30.00 47.42 30.87 48.42 30.87 48.92 30.00 48.42 29.13 47.42 29.13 TH
46.92 32.00 47.42 32.87 48.42 32.87 48.92 32.00 48.42 31.13 47.42 31.13 TH
46.92 44.00 47.42 44.87 48.42 44.87 48.92 44.00 48.42 43.13 47.42 43.13 TH
46.92 48.00 47.42 48.87 48.42 48.87 48.92 48.00 48.42 47.13 47.42 47.13 TH
48.65 3.00 49.15 3.87 50.15 3.87 50.65 3.00 50.15 2.13 49.15 2.13 TH
48.65 7.00 49.15 7.87 50.15 7.87 50.65 7.00 50.15 6.13 49.15 6.13 TH
48.65 9.00 49.15 9.87 50.15 9.87 50.65 9.00 50.15 8.13 49.15 8.13 TH
48.65 13.00 49.15 13.87 50.15 13.87 50.65 13.00 50.15 12.13 49.15 12.13 TH
48.65 17.00 49.15 17.87 50.15 17.87 50.65 17.00 50.15 16.13 49.15 16.13 TH
48.65 19.00 49.15 19.87 50.15 19.87 50.65 19.00 50.15 18.13 49.15 18.13 TH
48.65 21.00 49.15 21.87 50.15 21.87 50.65 21.00 50.15 20.13 49.15 20.13 TH
48.65 23.00 49.15 23.87 50.15 23.87 50.65 23.00 50.15 22.13 49.15 22.13 TH
48.65 33.00 49.15 33.87 50.15 33.87 50.65 33.00 50.15 32.13 49.15 32.13 TH
48.65 35.00 49.15 35.87 50.15 35.87 50.65 35.00 50.15 34.13 49.15 34.13 TH
48.65 37.00 49.15 37.87 50.15 37.87 50.65 37.00 50.15 36.13 49.15 36.13 TH
48.65 39.00 49.15 39.87 50.15 39.87 50.65 39.00 50.15 38.13 49.15 38.13 TH
48.65 43.00 49.15 43.87 50.15 43.87 50.65 43.00 50.15 42.13 49.15 42.13 TH
48.65 47.00 49.15 47.87 50.15 47.87 50.65 47.00 50.15 46.13 49.15 46.13 TH
48.65 51.00 49.15 51.87 50.15 51.87 50.65 51.00 50.15 50.13 49.15 50.13 TH
48.65 55.00 49.15 55.87 50.15 55.87 50.65 55.00 50.15 54.13 49.15 54.13 TH
50.38 2.00 50.88 2.87 51.88 2.87 52.38 2.00 51.88 1.13 50.88 1.13 TH
50.38 6.00 50.88 6.87 51.88 6.87 52.38 6.00 51.88 5.13 50.88 5.13 TH
50.38 10.00 50.88 10.87 51.88 10.87 52.38 10.00 51.88 9.13 50.88 9.13 TH
50.38 14.00 50.88 14.87 51.88 14.87 52.38 14.00 51.88 13.13 50.88 13.13 TH
50.38 28.00 50.88 28.87 51.88 28.87 52.38 28.00 51.88 27.13 50.88 27.13 TH
50.38 32.00 50.88 32.87 51.88 32.87 52.38 32.00 51.88 31.13 50.88 31.13 TH
50.38 36.00 50.88 36.87 51.88 36.87 52.38 36.00 51.88 35.13 50.88 35.13 TH
50.38 40.00 50.88 40.87 51.88 40.87 52.38 40.00 51.88 39.13 50.88 39.13 TH
50.38 42.00 50.88 42.87 51.88 42.87 52.38 42.00 51.88 41.13 50.88 41.13 TH
50.38 44.00 50.88 44.87 51.88 44.87 52.38 44.00 51.88 43.13 50.88 43.13 TH
50.38 46.00 50.88 46.87 51.88 46.87 52.38 46.00 51.88 45.13 50.88 45.13 TH
50.38 48.00 50.88 48.87 51.88 48.87 52.38 48.00 51.88 47.13 50.88 47.13 TH
50.38 50.00 50.88 50.87 51.88 50.87 52.38 50.00 51.88 49.13 50.88 49.13 TH
50.38 54.00 50.88 54.87 51.88 54.87 52.38 54.00 51.88 53.13 50.88 53.13 TH
50.38 58.00 50.88 58.87 51.88 58.87 52.38 58.00 51.88 57.13 50.88 57.13 TH
52.11 1.00 52.61 1.87 53.61 1.87 54.11 1.00 53.61 0.13 52.61 0.13 TH
52.11 3.00 52.61 3.87 53.61 3.87 54.11 3.00 53.61 2.13 52.61 2.13 TH
52.11 5.00 52.61 5.87 53.61 5.87 54.11 5.00 53.61 4.13 52.61 4.13 TH
52.11 7.00 52.61 7.87 53.61 7.87 54.11 7.00 53.61 6.13 52.61 6.13 TH
52.11 11.00 52.61 11.87 53.61 11.87 54.11 11.00 53.61 10.13 52.61 10.13 TH
52.11 15.00 52.61 15.87 53.61 15.87 54.11 15.00 53.61 14.13 52.61 14.13 TH
52.11 17.00 52.61 17.87 53.61 17.87 54.11 17.00 53.61 16.13 52.61 16.13 TH
52.11 21.00 52.61 21.87 53.61 21.87 54.11 21.00 53.61 20.13 52.61 20.13 TH
52.11 33.00 52.61 33.87 53.61 33.87 54.11 33.00 53.61 32.13 52.61 32.13 TH
52.11 35.00 52.61 35.87 53.61 35.87 54.11 35.00 53.61 34.13 52.61 34.13 TH
52.11 37.00 52.61 37.87 53.61 37.87 54.11 37.00 53.61 36.13 52.61 36.13 TH
52.11 39.00 52.61 39.87 53.61 39.87 54.11 39.00 53.61 38.13 52.61 38.13 TH
52.11 43.00 52.61 43.87 53.61 43.87 54.11 43.00 53.61 42.13 52.61 42.13 TH
52.11 47.00 52.61 47.87 53.61 47.87 54.11 47.00 53.61 46.13 52.61 46.13 TH
52.11 49.00 52.61 49.87 53.61 49.87 54.11 49.00 53.61 48.13 52.61 48.13 TH
52.11 53.00 52.61 53.87 53.61 53.87 54.11 53.00 53.61 52.13 52.61 52.13 TH
52.11 57.00 52.61 57.87 53.61 57.87 54.11 57.00 53.61 56.13 52.61 56.13 TH
53.85 4.00 54.35 4.87 55.35 4.87 55.85 4.00 55.35 3.13 54.35 3.13 TH
53.85 8.00 54.35 8.87 55.35 8.87 55.85 8.00 55.35 7.13 54.35 7.13 TH
53.85 10.00 54.35 10.87 55.35 10.87 55.85 10.00 55.35 9.13 54.35 9.13 TH
53.85 14.00 54.35 14.87 55.35 14.87 55.85 14.00 55.35 13.13 54.35 13.13 TH
53.85 18.00 54.35 18.87 55.35 18.87 55.85 18.00 55.35 17.13 54.35 17.13 TH
53.85 20.00 54.35 20.87 55.35 20.87 55.85 20.00 55.35 19.13 54.35 19.13 TH
53.85 22.00 54.35 22.87 55.35 22.87 55.85 22.00 55.35 21.13 54.35 21.13 TH
53.85 24.00 54.35 24.87 55.35 24.87 55.85 24.00 55.35 23.13 54.35 23.13 TH
53.85 28.00 54.35 28.87 55.35 28.87 55.85 28.00 55.35 27.13 54.35 27.13 TH
53.85 32.00 54.35 32.87 55.35 32.87 55.85 32.00 55.35 31.13 54.35 31.13 TH
53.85 34.00 54.35 34.87 55.35 34.87 55.85 34.00 55.35 33.13 54.35 33.13 TH
53.85 38.00 54.35 38.87 55.35 38.87 55.85 38.00 55.35 37.13 54.35 37.13 TH
53.85 42.00 54.35 42.87 55.35 42.87 55.85 42.00 55.35 41.13 54.35 41.13 TH
53.85 46.00 54.35 46.87 55.35 46.87 55.85 46.00 55.35 45.13 54.35 45.13 TH
53.85 50.00 54.35 50.87 55.35 50.87 55.85 50.00 55.35 49.13 54.35 49.13 TH
53.85 52.00 54.35 52.87 55.35 52.87 55.85 52.00 55.35 51.13 54.35 51.13 TH
53.85 54.00 54.35 54.87 55.35 54.87 55.85 54.00 55.35 53.13 54.35 53.13 TH
53.85 56.00 54.35 56.87 55.35 56.87 55.85 56.00 55.35 55.13 54.35 55.13 TH
55.58 3.00 56.08 3.87 57.08 3.87 57.58 3.00 57.08 2.13 56.08 2.13 TH
55.58 7.00 56.08 7.87 57.08 7.87 57.58 7.00 57.08 6.13 56.08 6.13 TH
55.58 27.00 56.08 27.87 57.08 27.87 57.58 27.00 57.08 26.13 56.08 26.13 TH
55.58 31.00 56.08 31.87 57.08 31.87 57.58 31.00 57.08 30.13 56.08 30.13 TH
55.58 33.00 56.08 33.87 57.08 33.87 57.58 33.00 57.08 32.13 56.08 32.13 TH
55.58 37.00 56.08 37.87 57.08 37.87 57.58 37.00 57.08 36.13 56.08 36.13 TH
55.58 41.00 56.08 41.87 57.08 41.87 57.58 41.00 57.08 40.13 56.08 40.13 TH
55.58 45.00 56.08 45.87 57.08 45.87 57.58 45.00 57.08 44.13 56.08 44.13 TH
55.58 51.00 56.08 51.87 57.08 51.87 57.58 51.00 57.08 50.13 56.08 50.13 TH
55.58 55.00 56.08 55.87 57.08 55.87 57.58 55.00 57.08 54.13 56.08 54.13 TH
28.87 29.00 9.00 TD
0.00 0.00 0.00 0.00 setcmykcolor
28.87 29.00 7.43 TD
0.00 0.00 0.00 1.00 setcmykcolor
28.87 29.00 5.86 TD
0.00 0.00 0.00 0.00 setcmykcolor
28.87 29.00 4.29 TD
0.00 0.00 0.00 1.00 setcmykcolor
28.87 29.00 2.72 TD
0.00 0.00 0.00 0.00 setcmykcolor
28.87 29.00 1.15 TD

View File

@ -0,0 +1,227 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 40 30
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath
1.00 0.00 0.00 setrgbcolor
30.00 0.00 TB 0.00 40.00 TR
TE
0.00 0.00 1.00 setrgbcolor
2.00 28.00 TB 0.00 40.00 TR
TE
2.00 0.00 TB 0.00 40.00 TR
TE
26.00 2.00 TB 0.00 2.00 TR
TE
26.00 2.00 TB 38.00 2.00 TR
TE
0.00 1.00 1.00 setrgbcolor
2.00 24.00 TB 22.00 4.00 TR
TE
2.00 24.00 TB 28.00 4.00 TR
TE
2.00 22.00 TB 18.00 2.00 TR
TE
2.00 20.00 TB 10.00 2.00 TR
TE
2.00 20.00 TB 22.00 2.00 TR
TE
2.00 20.00 TB 28.00 4.00 TR
TE
2.00 16.00 TB 16.00 2.00 TR
TE
2.00 12.00 TB 16.00 2.00 TR
TE
2.00 12.00 TB 20.00 2.00 TR
TE
2.00 12.00 TB 24.00 8.00 TR
TE
2.00 10.00 TB 10.00 2.00 TR
TE
2.00 10.00 TB 22.00 2.00 TR
TE
2.00 8.00 TB 26.00 4.00 TR
TE
2.00 6.00 TB 16.00 6.00 TR
TE
2.00 6.00 TB 30.00 2.00 TR
TE
2.00 4.00 TB 10.00 2.00 TR
TE
1.00 0.00 1.00 setrgbcolor
2.00 24.00 TB 20.00 2.00 TR
TE
2.00 22.00 TB 10.00 2.00 TR
TE
2.00 22.00 TB 16.00 2.00 TR
TE
2.00 22.00 TB 22.00 4.00 TR
TE
2.00 20.00 TB 18.00 2.00 TR
TE
2.00 18.00 TB 20.00 2.00 TR
TE
2.00 18.00 TB 24.00 2.00 TR
TE
2.00 16.00 TB 10.00 2.00 TR
TE
2.00 16.00 TB 22.00 2.00 TR
TE
2.00 16.00 TB 28.00 2.00 TR
TE
2.00 10.00 TB 16.00 2.00 TR
TE
2.00 10.00 TB 24.00 4.00 TR
TE
2.00 10.00 TB 30.00 2.00 TR
TE
2.00 8.00 TB 20.00 2.00 TR
TE
2.00 4.00 TB 16.00 12.00 TR
TE
1.00 1.00 0.00 setrgbcolor
2.00 24.00 TB 10.00 2.00 TR
TE
2.00 24.00 TB 18.00 2.00 TR
TE
2.00 24.00 TB 26.00 2.00 TR
TE
2.00 20.00 TB 20.00 2.00 TR
TE
2.00 20.00 TB 26.00 2.00 TR
TE
2.00 18.00 TB 10.00 2.00 TR
TE
2.00 18.00 TB 16.00 2.00 TR
TE
2.00 18.00 TB 22.00 2.00 TR
TE
2.00 18.00 TB 28.00 2.00 TR
TE
2.00 16.00 TB 18.00 4.00 TR
TE
2.00 16.00 TB 26.00 2.00 TR
TE
2.00 16.00 TB 30.00 2.00 TR
TE
2.00 12.00 TB 22.00 2.00 TR
TE
2.00 10.00 TB 18.00 4.00 TR
TE
2.00 8.00 TB 10.00 2.00 TR
TE
2.00 8.00 TB 16.00 2.00 TR
TE
2.00 8.00 TB 22.00 4.00 TR
TE
2.00 8.00 TB 30.00 2.00 TR
TE
2.00 6.00 TB 28.00 2.00 TR
TE
2.00 4.00 TB 30.00 2.00 TR
TE
0.00 1.00 0.00 setrgbcolor
2.00 24.00 TB 16.00 2.00 TR
TE
2.00 22.00 TB 20.00 2.00 TR
TE
2.00 22.00 TB 26.00 6.00 TR
TE
2.00 20.00 TB 16.00 2.00 TR
TE
2.00 20.00 TB 24.00 2.00 TR
TE
2.00 18.00 TB 18.00 2.00 TR
TE
2.00 18.00 TB 26.00 2.00 TR
TE
2.00 18.00 TB 30.00 2.00 TR
TE
2.00 16.00 TB 24.00 2.00 TR
TE
2.00 12.00 TB 10.00 2.00 TR
TE
2.00 12.00 TB 18.00 2.00 TR
TE
2.00 10.00 TB 28.00 2.00 TR
TE
2.00 8.00 TB 18.00 2.00 TR
TE
2.00 6.00 TB 10.00 2.00 TR
TE
2.00 6.00 TB 22.00 6.00 TR
TE
2.00 4.00 TB 28.00 2.00 TR
TE
0.00 0.00 0.00 setrgbcolor
2.00 26.00 TB 6.00 28.00 TR
TE
2.00 24.00 TB 6.00 2.00 TR
TE
22.00 4.00 TB 12.00 2.00 TR
TE
22.00 4.00 TB 32.00 2.00 TR
TE
2.00 22.00 TB 6.00 4.00 TR
TE
2.00 20.00 TB 6.00 2.00 TR
TE
2.00 18.00 TB 6.00 4.00 TR
TE
2.00 16.00 TB 6.00 2.00 TR
TE
2.00 14.00 TB 6.00 4.00 TR
TE
2.00 14.00 TB 16.00 2.00 TR
TE
2.00 14.00 TB 20.00 2.00 TR
TE
2.00 14.00 TB 24.00 2.00 TR
TE
2.00 14.00 TB 28.00 2.00 TR
TE
2.00 12.00 TB 6.00 2.00 TR
TE
2.00 10.00 TB 6.00 4.00 TR
TE
2.00 8.00 TB 6.00 2.00 TR
TE
2.00 6.00 TB 6.00 4.00 TR
TE
2.00 4.00 TB 6.00 2.00 TR
TE
2.00 2.00 TB 6.00 28.00 TR
TE
1.00 1.00 1.00 setrgbcolor
2.00 24.00 TB 8.00 2.00 TR
TE
22.00 4.00 TB 14.00 2.00 TR
TE
2.00 20.00 TB 8.00 2.00 TR
TE
2.00 16.00 TB 8.00 2.00 TR
TE
2.00 14.00 TB 10.00 2.00 TR
TE
2.00 14.00 TB 18.00 2.00 TR
TE
2.00 14.00 TB 22.00 2.00 TR
TE
2.00 14.00 TB 26.00 2.00 TR
TE
2.00 14.00 TB 30.00 2.00 TR
TE
2.00 12.00 TB 8.00 2.00 TR
TE
2.00 8.00 TB 8.00 2.00 TR
TE
2.00 4.00 TB 8.00 2.00 TR
TE

View File

@ -0,0 +1,227 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 40 38
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath
0.00 1.00 1.00 0.00 setcmykcolor
38.00 0.00 TB 0.00 40.00 TR
TE
1.00 1.00 0.00 0.00 setcmykcolor
4.00 32.00 TB 0.00 40.00 TR
TE
4.00 2.00 TB 0.00 40.00 TR
TE
26.00 6.00 TB 0.00 4.00 TR
TE
26.00 6.00 TB 36.00 4.00 TR
TE
1.00 0.00 0.00 0.00 setcmykcolor
2.00 28.00 TB 22.00 4.00 TR
TE
2.00 28.00 TB 28.00 4.00 TR
TE
2.00 26.00 TB 18.00 2.00 TR
TE
2.00 24.00 TB 10.00 2.00 TR
TE
2.00 24.00 TB 22.00 2.00 TR
TE
2.00 24.00 TB 28.00 4.00 TR
TE
2.00 20.00 TB 16.00 2.00 TR
TE
2.00 16.00 TB 16.00 2.00 TR
TE
2.00 16.00 TB 20.00 2.00 TR
TE
2.00 16.00 TB 24.00 8.00 TR
TE
2.00 14.00 TB 10.00 2.00 TR
TE
2.00 14.00 TB 22.00 2.00 TR
TE
2.00 12.00 TB 26.00 4.00 TR
TE
2.00 10.00 TB 16.00 6.00 TR
TE
2.00 10.00 TB 30.00 2.00 TR
TE
2.00 8.00 TB 10.00 2.00 TR
TE
0.00 1.00 0.00 0.00 setcmykcolor
2.00 28.00 TB 20.00 2.00 TR
TE
2.00 26.00 TB 10.00 2.00 TR
TE
2.00 26.00 TB 16.00 2.00 TR
TE
2.00 26.00 TB 22.00 4.00 TR
TE
2.00 24.00 TB 18.00 2.00 TR
TE
2.00 22.00 TB 20.00 2.00 TR
TE
2.00 22.00 TB 24.00 2.00 TR
TE
2.00 20.00 TB 10.00 2.00 TR
TE
2.00 20.00 TB 22.00 2.00 TR
TE
2.00 20.00 TB 28.00 2.00 TR
TE
2.00 14.00 TB 16.00 2.00 TR
TE
2.00 14.00 TB 24.00 4.00 TR
TE
2.00 14.00 TB 30.00 2.00 TR
TE
2.00 12.00 TB 20.00 2.00 TR
TE
2.00 8.00 TB 16.00 12.00 TR
TE
0.00 0.00 1.00 0.00 setcmykcolor
2.00 28.00 TB 10.00 2.00 TR
TE
2.00 28.00 TB 18.00 2.00 TR
TE
2.00 28.00 TB 26.00 2.00 TR
TE
2.00 24.00 TB 20.00 2.00 TR
TE
2.00 24.00 TB 26.00 2.00 TR
TE
2.00 22.00 TB 10.00 2.00 TR
TE
2.00 22.00 TB 16.00 2.00 TR
TE
2.00 22.00 TB 22.00 2.00 TR
TE
2.00 22.00 TB 28.00 2.00 TR
TE
2.00 20.00 TB 18.00 4.00 TR
TE
2.00 20.00 TB 26.00 2.00 TR
TE
2.00 20.00 TB 30.00 2.00 TR
TE
2.00 16.00 TB 22.00 2.00 TR
TE
2.00 14.00 TB 18.00 4.00 TR
TE
2.00 12.00 TB 10.00 2.00 TR
TE
2.00 12.00 TB 16.00 2.00 TR
TE
2.00 12.00 TB 22.00 4.00 TR
TE
2.00 12.00 TB 30.00 2.00 TR
TE
2.00 10.00 TB 28.00 2.00 TR
TE
2.00 8.00 TB 30.00 2.00 TR
TE
1.00 0.00 1.00 0.00 setcmykcolor
2.00 28.00 TB 16.00 2.00 TR
TE
2.00 26.00 TB 20.00 2.00 TR
TE
2.00 26.00 TB 26.00 6.00 TR
TE
2.00 24.00 TB 16.00 2.00 TR
TE
2.00 24.00 TB 24.00 2.00 TR
TE
2.00 22.00 TB 18.00 2.00 TR
TE
2.00 22.00 TB 26.00 2.00 TR
TE
2.00 22.00 TB 30.00 2.00 TR
TE
2.00 20.00 TB 24.00 2.00 TR
TE
2.00 16.00 TB 10.00 2.00 TR
TE
2.00 16.00 TB 18.00 2.00 TR
TE
2.00 14.00 TB 28.00 2.00 TR
TE
2.00 12.00 TB 18.00 2.00 TR
TE
2.00 10.00 TB 10.00 2.00 TR
TE
2.00 10.00 TB 22.00 6.00 TR
TE
2.00 8.00 TB 28.00 2.00 TR
TE
0.00 0.00 0.00 1.00 setcmykcolor
2.00 30.00 TB 6.00 28.00 TR
TE
2.00 28.00 TB 6.00 2.00 TR
TE
22.00 8.00 TB 12.00 2.00 TR
TE
22.00 8.00 TB 32.00 2.00 TR
TE
2.00 26.00 TB 6.00 4.00 TR
TE
2.00 24.00 TB 6.00 2.00 TR
TE
2.00 22.00 TB 6.00 4.00 TR
TE
2.00 20.00 TB 6.00 2.00 TR
TE
2.00 18.00 TB 6.00 4.00 TR
TE
2.00 18.00 TB 16.00 2.00 TR
TE
2.00 18.00 TB 20.00 2.00 TR
TE
2.00 18.00 TB 24.00 2.00 TR
TE
2.00 18.00 TB 28.00 2.00 TR
TE
2.00 16.00 TB 6.00 2.00 TR
TE
2.00 14.00 TB 6.00 4.00 TR
TE
2.00 12.00 TB 6.00 2.00 TR
TE
2.00 10.00 TB 6.00 4.00 TR
TE
2.00 8.00 TB 6.00 2.00 TR
TE
2.00 6.00 TB 6.00 28.00 TR
TE
0.00 0.00 0.00 0.00 setcmykcolor
2.00 28.00 TB 8.00 2.00 TR
TE
22.00 8.00 TB 14.00 2.00 TR
TE
2.00 24.00 TB 8.00 2.00 TR
TE
2.00 20.00 TB 8.00 2.00 TR
TE
2.00 18.00 TB 10.00 2.00 TR
TE
2.00 18.00 TB 18.00 2.00 TR
TE
2.00 18.00 TB 22.00 2.00 TR
TE
2.00 18.00 TB 26.00 2.00 TR
TE
2.00 18.00 TB 30.00 2.00 TR
TE
2.00 16.00 TB 8.00 2.00 TR
TE
2.00 12.00 TB 8.00 2.00 TR
TE
2.00 8.00 TB 8.00 2.00 TR
TE

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

View File

@ -0,0 +1,380 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="58" height="60" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<desc>Zint Generated Symbol
</desc>
<g id="barcode" fill="#121212">
<rect x="0" y="0" width="58" height="60" fill="#EEEEEE" opacity="0.133" />
<path d="M 55.58 25.00 L 56.08 25.87 L 57.08 25.87 L 57.58 25.00 L 57.08 24.13 L 56.08 24.13 Z" opacity="0.867" />
<path d="M 55.58 29.00 L 56.08 29.87 L 57.08 29.87 L 57.58 29.00 L 57.08 28.13 L 56.08 28.13 Z" opacity="0.867" />
<path d="M 55.58 33.00 L 56.08 33.87 L 57.08 33.87 L 57.58 33.00 L 57.08 32.13 L 56.08 32.13 Z" opacity="0.867" />
<path d="M 55.58 37.00 L 56.08 37.87 L 57.08 37.87 L 57.58 37.00 L 57.08 36.13 L 56.08 36.13 Z" opacity="0.867" />
<path d="M 55.58 41.00 L 56.08 41.87 L 57.08 41.87 L 57.58 41.00 L 57.08 40.13 L 56.08 40.13 Z" opacity="0.867" />
<path d="M 55.58 45.00 L 56.08 45.87 L 57.08 45.87 L 57.58 45.00 L 57.08 44.13 L 56.08 44.13 Z" opacity="0.867" />
<path d="M 55.58 49.00 L 56.08 49.87 L 57.08 49.87 L 57.58 49.00 L 57.08 48.13 L 56.08 48.13 Z" opacity="0.867" />
<path d="M 55.58 53.00 L 56.08 53.87 L 57.08 53.87 L 57.58 53.00 L 57.08 52.13 L 56.08 52.13 Z" opacity="0.867" />
<path d="M 55.58 57.00 L 56.08 57.87 L 57.08 57.87 L 57.58 57.00 L 57.08 56.13 L 56.08 56.13 Z" opacity="0.867" />
<path d="M 55.58 59.00 L 56.08 59.87 L 57.08 59.87 L 57.58 59.00 L 57.08 58.13 L 56.08 58.13 Z" opacity="0.867" />
<path d="M 53.85 4.00 L 54.35 4.87 L 55.35 4.87 L 55.85 4.00 L 55.35 3.13 L 54.35 3.13 Z" opacity="0.867" />
<path d="M 53.85 8.00 L 54.35 8.87 L 55.35 8.87 L 55.85 8.00 L 55.35 7.13 L 54.35 7.13 Z" opacity="0.867" />
<path d="M 53.85 10.00 L 54.35 10.87 L 55.35 10.87 L 55.85 10.00 L 55.35 9.13 L 54.35 9.13 Z" opacity="0.867" />
<path d="M 53.85 12.00 L 54.35 12.87 L 55.35 12.87 L 55.85 12.00 L 55.35 11.13 L 54.35 11.13 Z" opacity="0.867" />
<path d="M 53.85 14.00 L 54.35 14.87 L 55.35 14.87 L 55.85 14.00 L 55.35 13.13 L 54.35 13.13 Z" opacity="0.867" />
<path d="M 53.85 16.00 L 54.35 16.87 L 55.35 16.87 L 55.85 16.00 L 55.35 15.13 L 54.35 15.13 Z" opacity="0.867" />
<path d="M 53.85 18.00 L 54.35 18.87 L 55.35 18.87 L 55.85 18.00 L 55.35 17.13 L 54.35 17.13 Z" opacity="0.867" />
<path d="M 53.85 20.00 L 54.35 20.87 L 55.35 20.87 L 55.85 20.00 L 55.35 19.13 L 54.35 19.13 Z" opacity="0.867" />
<path d="M 53.85 22.00 L 54.35 22.87 L 55.35 22.87 L 55.85 22.00 L 55.35 21.13 L 54.35 21.13 Z" opacity="0.867" />
<path d="M 53.85 24.00 L 54.35 24.87 L 55.35 24.87 L 55.85 24.00 L 55.35 23.13 L 54.35 23.13 Z" opacity="0.867" />
<path d="M 53.85 42.00 L 54.35 42.87 L 55.35 42.87 L 55.85 42.00 L 55.35 41.13 L 54.35 41.13 Z" opacity="0.867" />
<path d="M 53.85 46.00 L 54.35 46.87 L 55.35 46.87 L 55.85 46.00 L 55.35 45.13 L 54.35 45.13 Z" opacity="0.867" />
<path d="M 53.85 50.00 L 54.35 50.87 L 55.35 50.87 L 55.85 50.00 L 55.35 49.13 L 54.35 49.13 Z" opacity="0.867" />
<path d="M 53.85 54.00 L 54.35 54.87 L 55.35 54.87 L 55.85 54.00 L 55.35 53.13 L 54.35 53.13 Z" opacity="0.867" />
<path d="M 52.11 3.00 L 52.61 3.87 L 53.61 3.87 L 54.11 3.00 L 53.61 2.13 L 52.61 2.13 Z" opacity="0.867" />
<path d="M 52.11 5.00 L 52.61 5.87 L 53.61 5.87 L 54.11 5.00 L 53.61 4.13 L 52.61 4.13 Z" opacity="0.867" />
<path d="M 52.11 7.00 L 52.61 7.87 L 53.61 7.87 L 54.11 7.00 L 53.61 6.13 L 52.61 6.13 Z" opacity="0.867" />
<path d="M 52.11 13.00 L 52.61 13.87 L 53.61 13.87 L 54.11 13.00 L 53.61 12.13 L 52.61 12.13 Z" opacity="0.867" />
<path d="M 52.11 19.00 L 52.61 19.87 L 53.61 19.87 L 54.11 19.00 L 53.61 18.13 L 52.61 18.13 Z" opacity="0.867" />
<path d="M 52.11 21.00 L 52.61 21.87 L 53.61 21.87 L 54.11 21.00 L 53.61 20.13 L 52.61 20.13 Z" opacity="0.867" />
<path d="M 52.11 23.00 L 52.61 23.87 L 53.61 23.87 L 54.11 23.00 L 53.61 22.13 L 52.61 22.13 Z" opacity="0.867" />
<path d="M 52.11 29.00 L 52.61 29.87 L 53.61 29.87 L 54.11 29.00 L 53.61 28.13 L 52.61 28.13 Z" opacity="0.867" />
<path d="M 52.11 35.00 L 52.61 35.87 L 53.61 35.87 L 54.11 35.00 L 53.61 34.13 L 52.61 34.13 Z" opacity="0.867" />
<path d="M 52.11 37.00 L 52.61 37.87 L 53.61 37.87 L 54.11 37.00 L 53.61 36.13 L 52.61 36.13 Z" opacity="0.867" />
<path d="M 52.11 39.00 L 52.61 39.87 L 53.61 39.87 L 54.11 39.00 L 53.61 38.13 L 52.61 38.13 Z" opacity="0.867" />
<path d="M 52.11 45.00 L 52.61 45.87 L 53.61 45.87 L 54.11 45.00 L 53.61 44.13 L 52.61 44.13 Z" opacity="0.867" />
<path d="M 52.11 51.00 L 52.61 51.87 L 53.61 51.87 L 54.11 51.00 L 53.61 50.13 L 52.61 50.13 Z" opacity="0.867" />
<path d="M 52.11 53.00 L 52.61 53.87 L 53.61 53.87 L 54.11 53.00 L 53.61 52.13 L 52.61 52.13 Z" opacity="0.867" />
<path d="M 52.11 55.00 L 52.61 55.87 L 53.61 55.87 L 54.11 55.00 L 53.61 54.13 L 52.61 54.13 Z" opacity="0.867" />
<path d="M 52.11 57.00 L 52.61 57.87 L 53.61 57.87 L 54.11 57.00 L 53.61 56.13 L 52.61 56.13 Z" opacity="0.867" />
<path d="M 52.11 59.00 L 52.61 59.87 L 53.61 59.87 L 54.11 59.00 L 53.61 58.13 L 52.61 58.13 Z" opacity="0.867" />
<path d="M 50.38 4.00 L 50.88 4.87 L 51.88 4.87 L 52.38 4.00 L 51.88 3.13 L 50.88 3.13 Z" opacity="0.867" />
<path d="M 50.38 8.00 L 50.88 8.87 L 51.88 8.87 L 52.38 8.00 L 51.88 7.13 L 50.88 7.13 Z" opacity="0.867" />
<path d="M 50.38 12.00 L 50.88 12.87 L 51.88 12.87 L 52.38 12.00 L 51.88 11.13 L 50.88 11.13 Z" opacity="0.867" />
<path d="M 50.38 16.00 L 50.88 16.87 L 51.88 16.87 L 52.38 16.00 L 51.88 15.13 L 50.88 15.13 Z" opacity="0.867" />
<path d="M 50.38 20.00 L 50.88 20.87 L 51.88 20.87 L 52.38 20.00 L 51.88 19.13 L 50.88 19.13 Z" opacity="0.867" />
<path d="M 50.38 24.00 L 50.88 24.87 L 51.88 24.87 L 52.38 24.00 L 51.88 23.13 L 50.88 23.13 Z" opacity="0.867" />
<path d="M 50.38 28.00 L 50.88 28.87 L 51.88 28.87 L 52.38 28.00 L 51.88 27.13 L 50.88 27.13 Z" opacity="0.867" />
<path d="M 50.38 32.00 L 50.88 32.87 L 51.88 32.87 L 52.38 32.00 L 51.88 31.13 L 50.88 31.13 Z" opacity="0.867" />
<path d="M 50.38 36.00 L 50.88 36.87 L 51.88 36.87 L 52.38 36.00 L 51.88 35.13 L 50.88 35.13 Z" opacity="0.867" />
<path d="M 50.38 40.00 L 50.88 40.87 L 51.88 40.87 L 52.38 40.00 L 51.88 39.13 L 50.88 39.13 Z" opacity="0.867" />
<path d="M 50.38 44.00 L 50.88 44.87 L 51.88 44.87 L 52.38 44.00 L 51.88 43.13 L 50.88 43.13 Z" opacity="0.867" />
<path d="M 50.38 46.00 L 50.88 46.87 L 51.88 46.87 L 52.38 46.00 L 51.88 45.13 L 50.88 45.13 Z" opacity="0.867" />
<path d="M 50.38 50.00 L 50.88 50.87 L 51.88 50.87 L 52.38 50.00 L 51.88 49.13 L 50.88 49.13 Z" opacity="0.867" />
<path d="M 50.38 54.00 L 50.88 54.87 L 51.88 54.87 L 52.38 54.00 L 51.88 53.13 L 50.88 53.13 Z" opacity="0.867" />
<path d="M 50.38 58.00 L 50.88 58.87 L 51.88 58.87 L 52.38 58.00 L 51.88 57.13 L 50.88 57.13 Z" opacity="0.867" />
<path d="M 48.65 47.00 L 49.15 47.87 L 50.15 47.87 L 50.65 47.00 L 50.15 46.13 L 49.15 46.13 Z" opacity="0.867" />
<path d="M 48.65 51.00 L 49.15 51.87 L 50.15 51.87 L 50.65 51.00 L 50.15 50.13 L 49.15 50.13 Z" opacity="0.867" />
<path d="M 48.65 55.00 L 49.15 55.87 L 50.15 55.87 L 50.65 55.00 L 50.15 54.13 L 49.15 54.13 Z" opacity="0.867" />
<path d="M 48.65 57.00 L 49.15 57.87 L 50.15 57.87 L 50.65 57.00 L 50.15 56.13 L 49.15 56.13 Z" opacity="0.867" />
<path d="M 46.92 2.00 L 47.42 2.87 L 48.42 2.87 L 48.92 2.00 L 48.42 1.13 L 47.42 1.13 Z" opacity="0.867" />
<path d="M 46.92 6.00 L 47.42 6.87 L 48.42 6.87 L 48.92 6.00 L 48.42 5.13 L 47.42 5.13 Z" opacity="0.867" />
<path d="M 46.92 10.00 L 47.42 10.87 L 48.42 10.87 L 48.92 10.00 L 48.42 9.13 L 47.42 9.13 Z" opacity="0.867" />
<path d="M 46.92 14.00 L 47.42 14.87 L 48.42 14.87 L 48.92 14.00 L 48.42 13.13 L 47.42 13.13 Z" opacity="0.867" />
<path d="M 46.92 18.00 L 47.42 18.87 L 48.42 18.87 L 48.92 18.00 L 48.42 17.13 L 47.42 17.13 Z" opacity="0.867" />
<path d="M 46.92 22.00 L 47.42 22.87 L 48.42 22.87 L 48.92 22.00 L 48.42 21.13 L 47.42 21.13 Z" opacity="0.867" />
<path d="M 46.92 26.00 L 47.42 26.87 L 48.42 26.87 L 48.92 26.00 L 48.42 25.13 L 47.42 25.13 Z" opacity="0.867" />
<path d="M 46.92 30.00 L 47.42 30.87 L 48.42 30.87 L 48.92 30.00 L 48.42 29.13 L 47.42 29.13 Z" opacity="0.867" />
<path d="M 46.92 34.00 L 47.42 34.87 L 48.42 34.87 L 48.92 34.00 L 48.42 33.13 L 47.42 33.13 Z" opacity="0.867" />
<path d="M 46.92 38.00 L 47.42 38.87 L 48.42 38.87 L 48.92 38.00 L 48.42 37.13 L 47.42 37.13 Z" opacity="0.867" />
<path d="M 46.92 42.00 L 47.42 42.87 L 48.42 42.87 L 48.92 42.00 L 48.42 41.13 L 47.42 41.13 Z" opacity="0.867" />
<path d="M 46.92 48.00 L 47.42 48.87 L 48.42 48.87 L 48.92 48.00 L 48.42 47.13 L 47.42 47.13 Z" opacity="0.867" />
<path d="M 46.92 50.00 L 47.42 50.87 L 48.42 50.87 L 48.92 50.00 L 48.42 49.13 L 47.42 49.13 Z" opacity="0.867" />
<path d="M 45.19 3.00 L 45.69 3.87 L 46.69 3.87 L 47.19 3.00 L 46.69 2.13 L 45.69 2.13 Z" opacity="0.867" />
<path d="M 45.19 7.00 L 45.69 7.87 L 46.69 7.87 L 47.19 7.00 L 46.69 6.13 L 45.69 6.13 Z" opacity="0.867" />
<path d="M 45.19 11.00 L 45.69 11.87 L 46.69 11.87 L 47.19 11.00 L 46.69 10.13 L 45.69 10.13 Z" opacity="0.867" />
<path d="M 45.19 15.00 L 45.69 15.87 L 46.69 15.87 L 47.19 15.00 L 46.69 14.13 L 45.69 14.13 Z" opacity="0.867" />
<path d="M 45.19 19.00 L 45.69 19.87 L 46.69 19.87 L 47.19 19.00 L 46.69 18.13 L 45.69 18.13 Z" opacity="0.867" />
<path d="M 45.19 23.00 L 45.69 23.87 L 46.69 23.87 L 47.19 23.00 L 46.69 22.13 L 45.69 22.13 Z" opacity="0.867" />
<path d="M 45.19 27.00 L 45.69 27.87 L 46.69 27.87 L 47.19 27.00 L 46.69 26.13 L 45.69 26.13 Z" opacity="0.867" />
<path d="M 45.19 31.00 L 45.69 31.87 L 46.69 31.87 L 47.19 31.00 L 46.69 30.13 L 45.69 30.13 Z" opacity="0.867" />
<path d="M 45.19 35.00 L 45.69 35.87 L 46.69 35.87 L 47.19 35.00 L 46.69 34.13 L 45.69 34.13 Z" opacity="0.867" />
<path d="M 45.19 39.00 L 45.69 39.87 L 46.69 39.87 L 47.19 39.00 L 46.69 38.13 L 45.69 38.13 Z" opacity="0.867" />
<path d="M 45.19 43.00 L 45.69 43.87 L 46.69 43.87 L 47.19 43.00 L 46.69 42.13 L 45.69 42.13 Z" opacity="0.867" />
<path d="M 45.19 47.00 L 45.69 47.87 L 46.69 47.87 L 47.19 47.00 L 46.69 46.13 L 45.69 46.13 Z" opacity="0.867" />
<path d="M 45.19 51.00 L 45.69 51.87 L 46.69 51.87 L 47.19 51.00 L 46.69 50.13 L 45.69 50.13 Z" opacity="0.867" />
<path d="M 45.19 55.00 L 45.69 55.87 L 46.69 55.87 L 47.19 55.00 L 46.69 54.13 L 45.69 54.13 Z" opacity="0.867" />
<path d="M 45.19 57.00 L 45.69 57.87 L 46.69 57.87 L 47.19 57.00 L 46.69 56.13 L 45.69 56.13 Z" opacity="0.867" />
<path d="M 45.19 59.00 L 45.69 59.87 L 46.69 59.87 L 47.19 59.00 L 46.69 58.13 L 45.69 58.13 Z" opacity="0.867" />
<path d="M 41.72 1.00 L 42.22 1.87 L 43.22 1.87 L 43.72 1.00 L 43.22 0.13 L 42.22 0.13 Z" opacity="0.867" />
<path d="M 41.72 5.00 L 42.22 5.87 L 43.22 5.87 L 43.72 5.00 L 43.22 4.13 L 42.22 4.13 Z" opacity="0.867" />
<path d="M 41.72 9.00 L 42.22 9.87 L 43.22 9.87 L 43.72 9.00 L 43.22 8.13 L 42.22 8.13 Z" opacity="0.867" />
<path d="M 41.72 13.00 L 42.22 13.87 L 43.22 13.87 L 43.72 13.00 L 43.22 12.13 L 42.22 12.13 Z" opacity="0.867" />
<path d="M 41.72 17.00 L 42.22 17.87 L 43.22 17.87 L 43.72 17.00 L 43.22 16.13 L 42.22 16.13 Z" opacity="0.867" />
<path d="M 41.72 21.00 L 42.22 21.87 L 43.22 21.87 L 43.72 21.00 L 43.22 20.13 L 42.22 20.13 Z" opacity="0.867" />
<path d="M 41.72 25.00 L 42.22 25.87 L 43.22 25.87 L 43.72 25.00 L 43.22 24.13 L 42.22 24.13 Z" opacity="0.867" />
<path d="M 41.72 29.00 L 42.22 29.87 L 43.22 29.87 L 43.72 29.00 L 43.22 28.13 L 42.22 28.13 Z" opacity="0.867" />
<path d="M 41.72 33.00 L 42.22 33.87 L 43.22 33.87 L 43.72 33.00 L 43.22 32.13 L 42.22 32.13 Z" opacity="0.867" />
<path d="M 41.72 37.00 L 42.22 37.87 L 43.22 37.87 L 43.72 37.00 L 43.22 36.13 L 42.22 36.13 Z" opacity="0.867" />
<path d="M 41.72 41.00 L 42.22 41.87 L 43.22 41.87 L 43.72 41.00 L 43.22 40.13 L 42.22 40.13 Z" opacity="0.867" />
<path d="M 41.72 45.00 L 42.22 45.87 L 43.22 45.87 L 43.72 45.00 L 43.22 44.13 L 42.22 44.13 Z" opacity="0.867" />
<path d="M 41.72 49.00 L 42.22 49.87 L 43.22 49.87 L 43.72 49.00 L 43.22 48.13 L 42.22 48.13 Z" opacity="0.867" />
<path d="M 41.72 53.00 L 42.22 53.87 L 43.22 53.87 L 43.72 53.00 L 43.22 52.13 L 42.22 52.13 Z" opacity="0.867" />
<path d="M 41.72 57.00 L 42.22 57.87 L 43.22 57.87 L 43.72 57.00 L 43.22 56.13 L 42.22 56.13 Z" opacity="0.867" />
<path d="M 39.99 4.00 L 40.49 4.87 L 41.49 4.87 L 41.99 4.00 L 41.49 3.13 L 40.49 3.13 Z" opacity="0.867" />
<path d="M 39.99 8.00 L 40.49 8.87 L 41.49 8.87 L 41.99 8.00 L 41.49 7.13 L 40.49 7.13 Z" opacity="0.867" />
<path d="M 39.99 12.00 L 40.49 12.87 L 41.49 12.87 L 41.99 12.00 L 41.49 11.13 L 40.49 11.13 Z" opacity="0.867" />
<path d="M 39.99 16.00 L 40.49 16.87 L 41.49 16.87 L 41.99 16.00 L 41.49 15.13 L 40.49 15.13 Z" opacity="0.867" />
<path d="M 39.99 20.00 L 40.49 20.87 L 41.49 20.87 L 41.99 20.00 L 41.49 19.13 L 40.49 19.13 Z" opacity="0.867" />
<path d="M 39.99 22.00 L 40.49 22.87 L 41.49 22.87 L 41.99 22.00 L 41.49 21.13 L 40.49 21.13 Z" opacity="0.867" />
<path d="M 39.99 24.00 L 40.49 24.87 L 41.49 24.87 L 41.99 24.00 L 41.49 23.13 L 40.49 23.13 Z" opacity="0.867" />
<path d="M 39.99 42.00 L 40.49 42.87 L 41.49 42.87 L 41.99 42.00 L 41.49 41.13 L 40.49 41.13 Z" opacity="0.867" />
<path d="M 39.99 44.00 L 40.49 44.87 L 41.49 44.87 L 41.99 44.00 L 41.49 43.13 L 40.49 43.13 Z" opacity="0.867" />
<path d="M 39.99 48.00 L 40.49 48.87 L 41.49 48.87 L 41.99 48.00 L 41.49 47.13 L 40.49 47.13 Z" opacity="0.867" />
<path d="M 39.99 52.00 L 40.49 52.87 L 41.49 52.87 L 41.99 52.00 L 41.49 51.13 L 40.49 51.13 Z" opacity="0.867" />
<path d="M 39.99 56.00 L 40.49 56.87 L 41.49 56.87 L 41.99 56.00 L 41.49 55.13 L 40.49 55.13 Z" opacity="0.867" />
<path d="M 38.26 17.00 L 38.76 17.87 L 39.76 17.87 L 40.26 17.00 L 39.76 16.13 L 38.76 16.13 Z" opacity="0.867" />
<path d="M 38.26 21.00 L 38.76 21.87 L 39.76 21.87 L 40.26 21.00 L 39.76 20.13 L 38.76 20.13 Z" opacity="0.867" />
<path d="M 38.26 23.00 L 38.76 23.87 L 39.76 23.87 L 40.26 23.00 L 39.76 22.13 L 38.76 22.13 Z" opacity="0.867" />
<path d="M 38.26 29.00 L 38.76 29.87 L 39.76 29.87 L 40.26 29.00 L 39.76 28.13 L 38.76 28.13 Z" opacity="0.867" />
<path d="M 38.26 33.00 L 38.76 33.87 L 39.76 33.87 L 40.26 33.00 L 39.76 32.13 L 38.76 32.13 Z" opacity="0.867" />
<path d="M 38.26 39.00 L 38.76 39.87 L 39.76 39.87 L 40.26 39.00 L 39.76 38.13 L 38.76 38.13 Z" opacity="0.867" />
<path d="M 38.26 41.00 L 38.76 41.87 L 39.76 41.87 L 40.26 41.00 L 39.76 40.13 L 38.76 40.13 Z" opacity="0.867" />
<path d="M 38.26 59.00 L 38.76 59.87 L 39.76 59.87 L 40.26 59.00 L 39.76 58.13 L 38.76 58.13 Z" opacity="0.867" />
<path d="M 36.53 2.00 L 37.03 2.87 L 38.03 2.87 L 38.53 2.00 L 38.03 1.13 L 37.03 1.13 Z" opacity="0.867" />
<path d="M 36.53 6.00 L 37.03 6.87 L 38.03 6.87 L 38.53 6.00 L 38.03 5.13 L 37.03 5.13 Z" opacity="0.867" />
<path d="M 36.53 10.00 L 37.03 10.87 L 38.03 10.87 L 38.53 10.00 L 38.03 9.13 L 37.03 9.13 Z" opacity="0.867" />
<path d="M 36.53 14.00 L 37.03 14.87 L 38.03 14.87 L 38.53 14.00 L 38.03 13.13 L 37.03 13.13 Z" opacity="0.867" />
<path d="M 36.53 38.00 L 37.03 38.87 L 38.03 38.87 L 38.53 38.00 L 38.03 37.13 L 37.03 37.13 Z" opacity="0.867" />
<path d="M 36.53 40.00 L 37.03 40.87 L 38.03 40.87 L 38.53 40.00 L 38.03 39.13 L 37.03 39.13 Z" opacity="0.867" />
<path d="M 36.53 46.00 L 37.03 46.87 L 38.03 46.87 L 38.53 46.00 L 38.03 45.13 L 37.03 45.13 Z" opacity="0.867" />
<path d="M 36.53 50.00 L 37.03 50.87 L 38.03 50.87 L 38.53 50.00 L 38.03 49.13 L 37.03 49.13 Z" opacity="0.867" />
<path d="M 36.53 54.00 L 37.03 54.87 L 38.03 54.87 L 38.53 54.00 L 38.03 53.13 L 37.03 53.13 Z" opacity="0.867" />
<path d="M 34.79 3.00 L 35.29 3.87 L 36.29 3.87 L 36.79 3.00 L 36.29 2.13 L 35.29 2.13 Z" opacity="0.867" />
<path d="M 34.79 7.00 L 35.29 7.87 L 36.29 7.87 L 36.79 7.00 L 36.29 6.13 L 35.29 6.13 Z" opacity="0.867" />
<path d="M 34.79 11.00 L 35.29 11.87 L 36.29 11.87 L 36.79 11.00 L 36.29 10.13 L 35.29 10.13 Z" opacity="0.867" />
<path d="M 34.79 13.00 L 35.29 13.87 L 36.29 13.87 L 36.79 13.00 L 36.29 12.13 L 35.29 12.13 Z" opacity="0.867" />
<path d="M 34.79 21.00 L 35.29 21.87 L 36.29 21.87 L 36.79 21.00 L 36.29 20.13 L 35.29 20.13 Z" opacity="0.867" />
<path d="M 34.79 47.00 L 35.29 47.87 L 36.29 47.87 L 36.79 47.00 L 36.29 46.13 L 35.29 46.13 Z" opacity="0.867" />
<path d="M 34.79 51.00 L 35.29 51.87 L 36.29 51.87 L 36.79 51.00 L 36.29 50.13 L 35.29 50.13 Z" opacity="0.867" />
<path d="M 34.79 55.00 L 35.29 55.87 L 36.29 55.87 L 36.79 55.00 L 36.29 54.13 L 35.29 54.13 Z" opacity="0.867" />
<path d="M 34.79 57.00 L 35.29 57.87 L 36.29 57.87 L 36.79 57.00 L 36.29 56.13 L 35.29 56.13 Z" opacity="0.867" />
<path d="M 33.06 20.00 L 33.56 20.87 L 34.56 20.87 L 35.06 20.00 L 34.56 19.13 L 33.56 19.13 Z" opacity="0.867" />
<path d="M 33.06 38.00 L 33.56 38.87 L 34.56 38.87 L 35.06 38.00 L 34.56 37.13 L 33.56 37.13 Z" opacity="0.867" />
<path d="M 33.06 42.00 L 33.56 42.87 L 34.56 42.87 L 35.06 42.00 L 34.56 41.13 L 33.56 41.13 Z" opacity="0.867" />
<path d="M 33.06 44.00 L 33.56 44.87 L 34.56 44.87 L 35.06 44.00 L 34.56 43.13 L 33.56 43.13 Z" opacity="0.867" />
<path d="M 31.33 1.00 L 31.83 1.87 L 32.83 1.87 L 33.33 1.00 L 32.83 0.13 L 31.83 0.13 Z" opacity="0.867" />
<path d="M 31.33 5.00 L 31.83 5.87 L 32.83 5.87 L 33.33 5.00 L 32.83 4.13 L 31.83 4.13 Z" opacity="0.867" />
<path d="M 31.33 9.00 L 31.83 9.87 L 32.83 9.87 L 33.33 9.00 L 32.83 8.13 L 31.83 8.13 Z" opacity="0.867" />
<path d="M 31.33 13.00 L 31.83 13.87 L 32.83 13.87 L 33.33 13.00 L 32.83 12.13 L 31.83 12.13 Z" opacity="0.867" />
<path d="M 31.33 17.00 L 31.83 17.87 L 32.83 17.87 L 33.33 17.00 L 32.83 16.13 L 31.83 16.13 Z" opacity="0.867" />
<path d="M 31.33 39.00 L 31.83 39.87 L 32.83 39.87 L 33.33 39.00 L 32.83 38.13 L 31.83 38.13 Z" opacity="0.867" />
<path d="M 31.33 41.00 L 31.83 41.87 L 32.83 41.87 L 33.33 41.00 L 32.83 40.13 L 31.83 40.13 Z" opacity="0.867" />
<path d="M 31.33 43.00 L 31.83 43.87 L 32.83 43.87 L 33.33 43.00 L 32.83 42.13 L 31.83 42.13 Z" opacity="0.867" />
<path d="M 31.33 45.00 L 31.83 45.87 L 32.83 45.87 L 33.33 45.00 L 32.83 44.13 L 31.83 44.13 Z" opacity="0.867" />
<path d="M 31.33 49.00 L 31.83 49.87 L 32.83 49.87 L 33.33 49.00 L 32.83 48.13 L 31.83 48.13 Z" opacity="0.867" />
<path d="M 31.33 53.00 L 31.83 53.87 L 32.83 53.87 L 33.33 53.00 L 32.83 52.13 L 31.83 52.13 Z" opacity="0.867" />
<path d="M 31.33 57.00 L 31.83 57.87 L 32.83 57.87 L 33.33 57.00 L 32.83 56.13 L 31.83 56.13 Z" opacity="0.867" />
<path d="M 31.33 59.00 L 31.83 59.87 L 32.83 59.87 L 33.33 59.00 L 32.83 58.13 L 31.83 58.13 Z" opacity="0.867" />
<path d="M 29.60 4.00 L 30.10 4.87 L 31.10 4.87 L 31.60 4.00 L 31.10 3.13 L 30.10 3.13 Z" opacity="0.867" />
<path d="M 29.60 8.00 L 30.10 8.87 L 31.10 8.87 L 31.60 8.00 L 31.10 7.13 L 30.10 7.13 Z" opacity="0.867" />
<path d="M 29.60 12.00 L 30.10 12.87 L 31.10 12.87 L 31.60 12.00 L 31.10 11.13 L 30.10 11.13 Z" opacity="0.867" />
<path d="M 29.60 16.00 L 30.10 16.87 L 31.10 16.87 L 31.60 16.00 L 31.10 15.13 L 30.10 15.13 Z" opacity="0.867" />
<path d="M 29.60 48.00 L 30.10 48.87 L 31.10 48.87 L 31.60 48.00 L 31.10 47.13 L 30.10 47.13 Z" opacity="0.867" />
<path d="M 29.60 52.00 L 30.10 52.87 L 31.10 52.87 L 31.60 52.00 L 31.10 51.13 L 30.10 51.13 Z" opacity="0.867" />
<path d="M 29.60 56.00 L 30.10 56.87 L 31.10 56.87 L 31.60 56.00 L 31.10 55.13 L 30.10 55.13 Z" opacity="0.867" />
<path d="M 27.87 17.00 L 28.37 17.87 L 29.37 17.87 L 29.87 17.00 L 29.37 16.13 L 28.37 16.13 Z" opacity="0.867" />
<path d="M 27.87 41.00 L 28.37 41.87 L 29.37 41.87 L 29.87 41.00 L 29.37 40.13 L 28.37 40.13 Z" opacity="0.867" />
<path d="M 27.87 57.00 L 28.37 57.87 L 29.37 57.87 L 29.87 57.00 L 29.37 56.13 L 28.37 56.13 Z" opacity="0.867" />
<path d="M 26.13 2.00 L 26.63 2.87 L 27.63 2.87 L 28.13 2.00 L 27.63 1.13 L 26.63 1.13 Z" opacity="0.867" />
<path d="M 26.13 6.00 L 26.63 6.87 L 27.63 6.87 L 28.13 6.00 L 27.63 5.13 L 26.63 5.13 Z" opacity="0.867" />
<path d="M 26.13 10.00 L 26.63 10.87 L 27.63 10.87 L 28.13 10.00 L 27.63 9.13 L 26.63 9.13 Z" opacity="0.867" />
<path d="M 26.13 16.00 L 26.63 16.87 L 27.63 16.87 L 28.13 16.00 L 27.63 15.13 L 26.63 15.13 Z" opacity="0.867" />
<path d="M 26.13 42.00 L 26.63 42.87 L 27.63 42.87 L 28.13 42.00 L 27.63 41.13 L 26.63 41.13 Z" opacity="0.867" />
<path d="M 26.13 46.00 L 26.63 46.87 L 27.63 46.87 L 28.13 46.00 L 27.63 45.13 L 26.63 45.13 Z" opacity="0.867" />
<path d="M 26.13 50.00 L 26.63 50.87 L 27.63 50.87 L 28.13 50.00 L 27.63 49.13 L 26.63 49.13 Z" opacity="0.867" />
<path d="M 26.13 54.00 L 26.63 54.87 L 27.63 54.87 L 28.13 54.00 L 27.63 53.13 L 26.63 53.13 Z" opacity="0.867" />
<path d="M 24.40 3.00 L 24.90 3.87 L 25.90 3.87 L 26.40 3.00 L 25.90 2.13 L 24.90 2.13 Z" opacity="0.867" />
<path d="M 24.40 7.00 L 24.90 7.87 L 25.90 7.87 L 26.40 7.00 L 25.90 6.13 L 24.90 6.13 Z" opacity="0.867" />
<path d="M 24.40 11.00 L 24.90 11.87 L 25.90 11.87 L 26.40 11.00 L 25.90 10.13 L 24.90 10.13 Z" opacity="0.867" />
<path d="M 24.40 15.00 L 24.90 15.87 L 25.90 15.87 L 26.40 15.00 L 25.90 14.13 L 24.90 14.13 Z" opacity="0.867" />
<path d="M 24.40 41.00 L 24.90 41.87 L 25.90 41.87 L 26.40 41.00 L 25.90 40.13 L 24.90 40.13 Z" opacity="0.867" />
<path d="M 24.40 43.00 L 24.90 43.87 L 25.90 43.87 L 26.40 43.00 L 25.90 42.13 L 24.90 42.13 Z" opacity="0.867" />
<path d="M 24.40 47.00 L 24.90 47.87 L 25.90 47.87 L 26.40 47.00 L 25.90 46.13 L 24.90 46.13 Z" opacity="0.867" />
<path d="M 24.40 51.00 L 24.90 51.87 L 25.90 51.87 L 26.40 51.00 L 25.90 50.13 L 24.90 50.13 Z" opacity="0.867" />
<path d="M 24.40 55.00 L 24.90 55.87 L 25.90 55.87 L 26.40 55.00 L 25.90 54.13 L 24.90 54.13 Z" opacity="0.867" />
<path d="M 22.67 16.00 L 23.17 16.87 L 24.17 16.87 L 24.67 16.00 L 24.17 15.13 L 23.17 15.13 Z" opacity="0.867" />
<path d="M 22.67 40.00 L 23.17 40.87 L 24.17 40.87 L 24.67 40.00 L 24.17 39.13 L 23.17 39.13 Z" opacity="0.867" />
<path d="M 22.67 44.00 L 23.17 44.87 L 24.17 44.87 L 24.67 44.00 L 24.17 43.13 L 23.17 43.13 Z" opacity="0.867" />
<path d="M 20.94 1.00 L 21.44 1.87 L 22.44 1.87 L 22.94 1.00 L 22.44 0.13 L 21.44 0.13 Z" opacity="0.867" />
<path d="M 20.94 5.00 L 21.44 5.87 L 22.44 5.87 L 22.94 5.00 L 22.44 4.13 L 21.44 4.13 Z" opacity="0.867" />
<path d="M 20.94 9.00 L 21.44 9.87 L 22.44 9.87 L 22.94 9.00 L 22.44 8.13 L 21.44 8.13 Z" opacity="0.867" />
<path d="M 20.94 15.00 L 21.44 15.87 L 22.44 15.87 L 22.94 15.00 L 22.44 14.13 L 21.44 14.13 Z" opacity="0.867" />
<path d="M 20.94 19.00 L 21.44 19.87 L 22.44 19.87 L 22.94 19.00 L 22.44 18.13 L 21.44 18.13 Z" opacity="0.867" />
<path d="M 20.94 45.00 L 21.44 45.87 L 22.44 45.87 L 22.94 45.00 L 22.44 44.13 L 21.44 44.13 Z" opacity="0.867" />
<path d="M 20.94 49.00 L 21.44 49.87 L 22.44 49.87 L 22.94 49.00 L 22.44 48.13 L 21.44 48.13 Z" opacity="0.867" />
<path d="M 20.94 53.00 L 21.44 53.87 L 22.44 53.87 L 22.94 53.00 L 22.44 52.13 L 21.44 52.13 Z" opacity="0.867" />
<path d="M 20.94 57.00 L 21.44 57.87 L 22.44 57.87 L 22.94 57.00 L 22.44 56.13 L 21.44 56.13 Z" opacity="0.867" />
<path d="M 19.21 4.00 L 19.71 4.87 L 20.71 4.87 L 21.21 4.00 L 20.71 3.13 L 19.71 3.13 Z" opacity="0.867" />
<path d="M 19.21 8.00 L 19.71 8.87 L 20.71 8.87 L 21.21 8.00 L 20.71 7.13 L 19.71 7.13 Z" opacity="0.867" />
<path d="M 19.21 12.00 L 19.71 12.87 L 20.71 12.87 L 21.21 12.00 L 20.71 11.13 L 19.71 11.13 Z" opacity="0.867" />
<path d="M 19.21 16.00 L 19.71 16.87 L 20.71 16.87 L 21.21 16.00 L 20.71 15.13 L 19.71 15.13 Z" opacity="0.867" />
<path d="M 19.21 18.00 L 19.71 18.87 L 20.71 18.87 L 21.21 18.00 L 20.71 17.13 L 19.71 17.13 Z" opacity="0.867" />
<path d="M 19.21 20.00 L 19.71 20.87 L 20.71 20.87 L 21.21 20.00 L 20.71 19.13 L 19.71 19.13 Z" opacity="0.867" />
<path d="M 19.21 40.00 L 19.71 40.87 L 20.71 40.87 L 21.21 40.00 L 20.71 39.13 L 19.71 39.13 Z" opacity="0.867" />
<path d="M 19.21 42.00 L 19.71 42.87 L 20.71 42.87 L 21.21 42.00 L 20.71 41.13 L 19.71 41.13 Z" opacity="0.867" />
<path d="M 19.21 44.00 L 19.71 44.87 L 20.71 44.87 L 21.21 44.00 L 20.71 43.13 L 19.71 43.13 Z" opacity="0.867" />
<path d="M 19.21 48.00 L 19.71 48.87 L 20.71 48.87 L 21.21 48.00 L 20.71 47.13 L 19.71 47.13 Z" opacity="0.867" />
<path d="M 19.21 52.00 L 19.71 52.87 L 20.71 52.87 L 21.21 52.00 L 20.71 51.13 L 19.71 51.13 Z" opacity="0.867" />
<path d="M 19.21 56.00 L 19.71 56.87 L 20.71 56.87 L 21.21 56.00 L 20.71 55.13 L 19.71 55.13 Z" opacity="0.867" />
<path d="M 19.21 58.00 L 19.71 58.87 L 20.71 58.87 L 21.21 58.00 L 20.71 57.13 L 19.71 57.13 Z" opacity="0.867" />
<path d="M 17.47 19.00 L 17.97 19.87 L 18.97 19.87 L 19.47 19.00 L 18.97 18.13 L 17.97 18.13 Z" opacity="0.867" />
<path d="M 17.47 21.00 L 17.97 21.87 L 18.97 21.87 L 19.47 21.00 L 18.97 20.13 L 17.97 20.13 Z" opacity="0.867" />
<path d="M 17.47 29.00 L 17.97 29.87 L 18.97 29.87 L 19.47 29.00 L 18.97 28.13 L 17.97 28.13 Z" opacity="0.867" />
<path d="M 17.47 33.00 L 17.97 33.87 L 18.97 33.87 L 19.47 33.00 L 18.97 32.13 L 17.97 32.13 Z" opacity="0.867" />
<path d="M 17.47 35.00 L 17.97 35.87 L 18.97 35.87 L 19.47 35.00 L 18.97 34.13 L 17.97 34.13 Z" opacity="0.867" />
<path d="M 17.47 59.00 L 17.97 59.87 L 18.97 59.87 L 19.47 59.00 L 18.97 58.13 L 17.97 58.13 Z" opacity="0.867" />
<path d="M 15.74 2.00 L 16.24 2.87 L 17.24 2.87 L 17.74 2.00 L 17.24 1.13 L 16.24 1.13 Z" opacity="0.867" />
<path d="M 15.74 6.00 L 16.24 6.87 L 17.24 6.87 L 17.74 6.00 L 17.24 5.13 L 16.24 5.13 Z" opacity="0.867" />
<path d="M 15.74 10.00 L 16.24 10.87 L 17.24 10.87 L 17.74 10.00 L 17.24 9.13 L 16.24 9.13 Z" opacity="0.867" />
<path d="M 15.74 14.00 L 16.24 14.87 L 17.24 14.87 L 17.74 14.00 L 17.24 13.13 L 16.24 13.13 Z" opacity="0.867" />
<path d="M 15.74 18.00 L 16.24 18.87 L 17.24 18.87 L 17.74 18.00 L 17.24 17.13 L 16.24 17.13 Z" opacity="0.867" />
<path d="M 15.74 20.00 L 16.24 20.87 L 17.24 20.87 L 17.74 20.00 L 17.24 19.13 L 16.24 19.13 Z" opacity="0.867" />
<path d="M 15.74 22.00 L 16.24 22.87 L 17.24 22.87 L 17.74 22.00 L 17.24 21.13 L 16.24 21.13 Z" opacity="0.867" />
<path d="M 15.74 24.00 L 16.24 24.87 L 17.24 24.87 L 17.74 24.00 L 17.24 23.13 L 16.24 23.13 Z" opacity="0.867" />
<path d="M 15.74 36.00 L 16.24 36.87 L 17.24 36.87 L 17.74 36.00 L 17.24 35.13 L 16.24 35.13 Z" opacity="0.867" />
<path d="M 15.74 38.00 L 16.24 38.87 L 17.24 38.87 L 17.74 38.00 L 17.24 37.13 L 16.24 37.13 Z" opacity="0.867" />
<path d="M 15.74 40.00 L 16.24 40.87 L 17.24 40.87 L 17.74 40.00 L 17.24 39.13 L 16.24 39.13 Z" opacity="0.867" />
<path d="M 15.74 42.00 L 16.24 42.87 L 17.24 42.87 L 17.74 42.00 L 17.24 41.13 L 16.24 41.13 Z" opacity="0.867" />
<path d="M 15.74 44.00 L 16.24 44.87 L 17.24 44.87 L 17.74 44.00 L 17.24 43.13 L 16.24 43.13 Z" opacity="0.867" />
<path d="M 15.74 46.00 L 16.24 46.87 L 17.24 46.87 L 17.74 46.00 L 17.24 45.13 L 16.24 45.13 Z" opacity="0.867" />
<path d="M 15.74 50.00 L 16.24 50.87 L 17.24 50.87 L 17.74 50.00 L 17.24 49.13 L 16.24 49.13 Z" opacity="0.867" />
<path d="M 15.74 54.00 L 16.24 54.87 L 17.24 54.87 L 17.74 54.00 L 17.24 53.13 L 16.24 53.13 Z" opacity="0.867" />
<path d="M 14.01 3.00 L 14.51 3.87 L 15.51 3.87 L 16.01 3.00 L 15.51 2.13 L 14.51 2.13 Z" opacity="0.867" />
<path d="M 14.01 7.00 L 14.51 7.87 L 15.51 7.87 L 16.01 7.00 L 15.51 6.13 L 14.51 6.13 Z" opacity="0.867" />
<path d="M 14.01 11.00 L 14.51 11.87 L 15.51 11.87 L 16.01 11.00 L 15.51 10.13 L 14.51 10.13 Z" opacity="0.867" />
<path d="M 14.01 15.00 L 14.51 15.87 L 15.51 15.87 L 16.01 15.00 L 15.51 14.13 L 14.51 14.13 Z" opacity="0.867" />
<path d="M 14.01 19.00 L 14.51 19.87 L 15.51 19.87 L 16.01 19.00 L 15.51 18.13 L 14.51 18.13 Z" opacity="0.867" />
<path d="M 14.01 23.00 L 14.51 23.87 L 15.51 23.87 L 16.01 23.00 L 15.51 22.13 L 14.51 22.13 Z" opacity="0.867" />
<path d="M 14.01 27.00 L 14.51 27.87 L 15.51 27.87 L 16.01 27.00 L 15.51 26.13 L 14.51 26.13 Z" opacity="0.867" />
<path d="M 14.01 31.00 L 14.51 31.87 L 15.51 31.87 L 16.01 31.00 L 15.51 30.13 L 14.51 30.13 Z" opacity="0.867" />
<path d="M 14.01 35.00 L 14.51 35.87 L 15.51 35.87 L 16.01 35.00 L 15.51 34.13 L 14.51 34.13 Z" opacity="0.867" />
<path d="M 14.01 39.00 L 14.51 39.87 L 15.51 39.87 L 16.01 39.00 L 15.51 38.13 L 14.51 38.13 Z" opacity="0.867" />
<path d="M 14.01 43.00 L 14.51 43.87 L 15.51 43.87 L 16.01 43.00 L 15.51 42.13 L 14.51 42.13 Z" opacity="0.867" />
<path d="M 14.01 45.00 L 14.51 45.87 L 15.51 45.87 L 16.01 45.00 L 15.51 44.13 L 14.51 44.13 Z" opacity="0.867" />
<path d="M 14.01 49.00 L 14.51 49.87 L 15.51 49.87 L 16.01 49.00 L 15.51 48.13 L 14.51 48.13 Z" opacity="0.867" />
<path d="M 14.01 51.00 L 14.51 51.87 L 15.51 51.87 L 16.01 51.00 L 15.51 50.13 L 14.51 50.13 Z" opacity="0.867" />
<path d="M 14.01 53.00 L 14.51 53.87 L 15.51 53.87 L 16.01 53.00 L 15.51 52.13 L 14.51 52.13 Z" opacity="0.867" />
<path d="M 14.01 57.00 L 14.51 57.87 L 15.51 57.87 L 16.01 57.00 L 15.51 56.13 L 14.51 56.13 Z" opacity="0.867" />
<path d="M 14.01 59.00 L 14.51 59.87 L 15.51 59.87 L 16.01 59.00 L 15.51 58.13 L 14.51 58.13 Z" opacity="0.867" />
<path d="M 12.28 46.00 L 12.78 46.87 L 13.78 46.87 L 14.28 46.00 L 13.78 45.13 L 12.78 45.13 Z" opacity="0.867" />
<path d="M 12.28 52.00 L 12.78 52.87 L 13.78 52.87 L 14.28 52.00 L 13.78 51.13 L 12.78 51.13 Z" opacity="0.867" />
<path d="M 12.28 54.00 L 12.78 54.87 L 13.78 54.87 L 14.28 54.00 L 13.78 53.13 L 12.78 53.13 Z" opacity="0.867" />
<path d="M 12.28 56.00 L 12.78 56.87 L 13.78 56.87 L 14.28 56.00 L 13.78 55.13 L 12.78 55.13 Z" opacity="0.867" />
<path d="M 10.55 1.00 L 11.05 1.87 L 12.05 1.87 L 12.55 1.00 L 12.05 0.13 L 11.05 0.13 Z" opacity="0.867" />
<path d="M 10.55 5.00 L 11.05 5.87 L 12.05 5.87 L 12.55 5.00 L 12.05 4.13 L 11.05 4.13 Z" opacity="0.867" />
<path d="M 10.55 9.00 L 11.05 9.87 L 12.05 9.87 L 12.55 9.00 L 12.05 8.13 L 11.05 8.13 Z" opacity="0.867" />
<path d="M 10.55 13.00 L 11.05 13.87 L 12.05 13.87 L 12.55 13.00 L 12.05 12.13 L 11.05 12.13 Z" opacity="0.867" />
<path d="M 10.55 17.00 L 11.05 17.87 L 12.05 17.87 L 12.55 17.00 L 12.05 16.13 L 11.05 16.13 Z" opacity="0.867" />
<path d="M 10.55 21.00 L 11.05 21.87 L 12.05 21.87 L 12.55 21.00 L 12.05 20.13 L 11.05 20.13 Z" opacity="0.867" />
<path d="M 10.55 25.00 L 11.05 25.87 L 12.05 25.87 L 12.55 25.00 L 12.05 24.13 L 11.05 24.13 Z" opacity="0.867" />
<path d="M 10.55 29.00 L 11.05 29.87 L 12.05 29.87 L 12.55 29.00 L 12.05 28.13 L 11.05 28.13 Z" opacity="0.867" />
<path d="M 10.55 33.00 L 11.05 33.87 L 12.05 33.87 L 12.55 33.00 L 12.05 32.13 L 11.05 32.13 Z" opacity="0.867" />
<path d="M 10.55 37.00 L 11.05 37.87 L 12.05 37.87 L 12.55 37.00 L 12.05 36.13 L 11.05 36.13 Z" opacity="0.867" />
<path d="M 10.55 41.00 L 11.05 41.87 L 12.05 41.87 L 12.55 41.00 L 12.05 40.13 L 11.05 40.13 Z" opacity="0.867" />
<path d="M 10.55 43.00 L 11.05 43.87 L 12.05 43.87 L 12.55 43.00 L 12.05 42.13 L 11.05 42.13 Z" opacity="0.867" />
<path d="M 10.55 45.00 L 11.05 45.87 L 12.05 45.87 L 12.55 45.00 L 12.05 44.13 L 11.05 44.13 Z" opacity="0.867" />
<path d="M 10.55 51.00 L 11.05 51.87 L 12.05 51.87 L 12.55 51.00 L 12.05 50.13 L 11.05 50.13 Z" opacity="0.867" />
<path d="M 10.55 53.00 L 11.05 53.87 L 12.05 53.87 L 12.55 53.00 L 12.05 52.13 L 11.05 52.13 Z" opacity="0.867" />
<path d="M 10.55 57.00 L 11.05 57.87 L 12.05 57.87 L 12.55 57.00 L 12.05 56.13 L 11.05 56.13 Z" opacity="0.867" />
<path d="M 8.81 4.00 L 9.31 4.87 L 10.31 4.87 L 10.81 4.00 L 10.31 3.13 L 9.31 3.13 Z" opacity="0.867" />
<path d="M 8.81 8.00 L 9.31 8.87 L 10.31 8.87 L 10.81 8.00 L 10.31 7.13 L 9.31 7.13 Z" opacity="0.867" />
<path d="M 8.81 10.00 L 9.31 10.87 L 10.31 10.87 L 10.81 10.00 L 10.31 9.13 L 9.31 9.13 Z" opacity="0.867" />
<path d="M 8.81 12.00 L 9.31 12.87 L 10.31 12.87 L 10.81 12.00 L 10.31 11.13 L 9.31 11.13 Z" opacity="0.867" />
<path d="M 8.81 14.00 L 9.31 14.87 L 10.31 14.87 L 10.81 14.00 L 10.31 13.13 L 9.31 13.13 Z" opacity="0.867" />
<path d="M 8.81 16.00 L 9.31 16.87 L 10.31 16.87 L 10.81 16.00 L 10.31 15.13 L 9.31 15.13 Z" opacity="0.867" />
<path d="M 8.81 26.00 L 9.31 26.87 L 10.31 26.87 L 10.81 26.00 L 10.31 25.13 L 9.31 25.13 Z" opacity="0.867" />
<path d="M 8.81 28.00 L 9.31 28.87 L 10.31 28.87 L 10.81 28.00 L 10.31 27.13 L 9.31 27.13 Z" opacity="0.867" />
<path d="M 8.81 32.00 L 9.31 32.87 L 10.31 32.87 L 10.81 32.00 L 10.31 31.13 L 9.31 31.13 Z" opacity="0.867" />
<path d="M 8.81 36.00 L 9.31 36.87 L 10.31 36.87 L 10.81 36.00 L 10.31 35.13 L 9.31 35.13 Z" opacity="0.867" />
<path d="M 8.81 40.00 L 9.31 40.87 L 10.31 40.87 L 10.81 40.00 L 10.31 39.13 L 9.31 39.13 Z" opacity="0.867" />
<path d="M 8.81 42.00 L 9.31 42.87 L 10.31 42.87 L 10.81 42.00 L 10.31 41.13 L 9.31 41.13 Z" opacity="0.867" />
<path d="M 8.81 46.00 L 9.31 46.87 L 10.31 46.87 L 10.81 46.00 L 10.31 45.13 L 9.31 45.13 Z" opacity="0.867" />
<path d="M 8.81 50.00 L 9.31 50.87 L 10.31 50.87 L 10.81 50.00 L 10.31 49.13 L 9.31 49.13 Z" opacity="0.867" />
<path d="M 8.81 54.00 L 9.31 54.87 L 10.31 54.87 L 10.81 54.00 L 10.31 53.13 L 9.31 53.13 Z" opacity="0.867" />
<path d="M 8.81 56.00 L 9.31 56.87 L 10.31 56.87 L 10.81 56.00 L 10.31 55.13 L 9.31 55.13 Z" opacity="0.867" />
<path d="M 8.81 58.00 L 9.31 58.87 L 10.31 58.87 L 10.81 58.00 L 10.31 57.13 L 9.31 57.13 Z" opacity="0.867" />
<path d="M 7.08 1.00 L 7.58 1.87 L 8.58 1.87 L 9.08 1.00 L 8.58 0.13 L 7.58 0.13 Z" opacity="0.867" />
<path d="M 7.08 5.00 L 7.58 5.87 L 8.58 5.87 L 9.08 5.00 L 8.58 4.13 L 7.58 4.13 Z" opacity="0.867" />
<path d="M 7.08 7.00 L 7.58 7.87 L 8.58 7.87 L 9.08 7.00 L 8.58 6.13 L 7.58 6.13 Z" opacity="0.867" />
<path d="M 7.08 9.00 L 7.58 9.87 L 8.58 9.87 L 9.08 9.00 L 8.58 8.13 L 7.58 8.13 Z" opacity="0.867" />
<path d="M 7.08 11.00 L 7.58 11.87 L 8.58 11.87 L 9.08 11.00 L 8.58 10.13 L 7.58 10.13 Z" opacity="0.867" />
<path d="M 7.08 19.00 L 7.58 19.87 L 8.58 19.87 L 9.08 19.00 L 8.58 18.13 L 7.58 18.13 Z" opacity="0.867" />
<path d="M 7.08 21.00 L 7.58 21.87 L 8.58 21.87 L 9.08 21.00 L 8.58 20.13 L 7.58 20.13 Z" opacity="0.867" />
<path d="M 7.08 23.00 L 7.58 23.87 L 8.58 23.87 L 9.08 23.00 L 8.58 22.13 L 7.58 22.13 Z" opacity="0.867" />
<path d="M 7.08 25.00 L 7.58 25.87 L 8.58 25.87 L 9.08 25.00 L 8.58 24.13 L 7.58 24.13 Z" opacity="0.867" />
<path d="M 7.08 37.00 L 7.58 37.87 L 8.58 37.87 L 9.08 37.00 L 8.58 36.13 L 7.58 36.13 Z" opacity="0.867" />
<path d="M 7.08 43.00 L 7.58 43.87 L 8.58 43.87 L 9.08 43.00 L 8.58 42.13 L 7.58 42.13 Z" opacity="0.867" />
<path d="M 7.08 53.00 L 7.58 53.87 L 8.58 53.87 L 9.08 53.00 L 8.58 52.13 L 7.58 52.13 Z" opacity="0.867" />
<path d="M 7.08 59.00 L 7.58 59.87 L 8.58 59.87 L 9.08 59.00 L 8.58 58.13 L 7.58 58.13 Z" opacity="0.867" />
<path d="M 5.35 2.00 L 5.85 2.87 L 6.85 2.87 L 7.35 2.00 L 6.85 1.13 L 5.85 1.13 Z" opacity="0.867" />
<path d="M 5.35 4.00 L 5.85 4.87 L 6.85 4.87 L 7.35 4.00 L 6.85 3.13 L 5.85 3.13 Z" opacity="0.867" />
<path d="M 5.35 8.00 L 5.85 8.87 L 6.85 8.87 L 7.35 8.00 L 6.85 7.13 L 5.85 7.13 Z" opacity="0.867" />
<path d="M 5.35 14.00 L 5.85 14.87 L 6.85 14.87 L 7.35 14.00 L 6.85 13.13 L 5.85 13.13 Z" opacity="0.867" />
<path d="M 5.35 18.00 L 5.85 18.87 L 6.85 18.87 L 7.35 18.00 L 6.85 17.13 L 5.85 17.13 Z" opacity="0.867" />
<path d="M 5.35 20.00 L 5.85 20.87 L 6.85 20.87 L 7.35 20.00 L 6.85 19.13 L 5.85 19.13 Z" opacity="0.867" />
<path d="M 5.35 24.00 L 5.85 24.87 L 6.85 24.87 L 7.35 24.00 L 6.85 23.13 L 5.85 23.13 Z" opacity="0.867" />
<path d="M 5.35 28.00 L 5.85 28.87 L 6.85 28.87 L 7.35 28.00 L 6.85 27.13 L 5.85 27.13 Z" opacity="0.867" />
<path d="M 5.35 34.00 L 5.85 34.87 L 6.85 34.87 L 7.35 34.00 L 6.85 33.13 L 5.85 33.13 Z" opacity="0.867" />
<path d="M 5.35 38.00 L 5.85 38.87 L 6.85 38.87 L 7.35 38.00 L 6.85 37.13 L 5.85 37.13 Z" opacity="0.867" />
<path d="M 5.35 48.00 L 5.85 48.87 L 6.85 48.87 L 7.35 48.00 L 6.85 47.13 L 5.85 47.13 Z" opacity="0.867" />
<path d="M 5.35 52.00 L 5.85 52.87 L 6.85 52.87 L 7.35 52.00 L 6.85 51.13 L 5.85 51.13 Z" opacity="0.867" />
<path d="M 3.62 1.00 L 4.12 1.87 L 5.12 1.87 L 5.62 1.00 L 5.12 0.13 L 4.12 0.13 Z" opacity="0.867" />
<path d="M 3.62 3.00 L 4.12 3.87 L 5.12 3.87 L 5.62 3.00 L 5.12 2.13 L 4.12 2.13 Z" opacity="0.867" />
<path d="M 3.62 5.00 L 4.12 5.87 L 5.12 5.87 L 5.62 5.00 L 5.12 4.13 L 4.12 4.13 Z" opacity="0.867" />
<path d="M 3.62 7.00 L 4.12 7.87 L 5.12 7.87 L 5.62 7.00 L 5.12 6.13 L 4.12 6.13 Z" opacity="0.867" />
<path d="M 3.62 13.00 L 4.12 13.87 L 5.12 13.87 L 5.62 13.00 L 5.12 12.13 L 4.12 12.13 Z" opacity="0.867" />
<path d="M 3.62 17.00 L 4.12 17.87 L 5.12 17.87 L 5.62 17.00 L 5.12 16.13 L 4.12 16.13 Z" opacity="0.867" />
<path d="M 3.62 19.00 L 4.12 19.87 L 5.12 19.87 L 5.62 19.00 L 5.12 18.13 L 4.12 18.13 Z" opacity="0.867" />
<path d="M 3.62 21.00 L 4.12 21.87 L 5.12 21.87 L 5.62 21.00 L 5.12 20.13 L 4.12 20.13 Z" opacity="0.867" />
<path d="M 3.62 23.00 L 4.12 23.87 L 5.12 23.87 L 5.62 23.00 L 5.12 22.13 L 4.12 22.13 Z" opacity="0.867" />
<path d="M 3.62 25.00 L 4.12 25.87 L 5.12 25.87 L 5.62 25.00 L 5.12 24.13 L 4.12 24.13 Z" opacity="0.867" />
<path d="M 3.62 31.00 L 4.12 31.87 L 5.12 31.87 L 5.62 31.00 L 5.12 30.13 L 4.12 30.13 Z" opacity="0.867" />
<path d="M 3.62 35.00 L 4.12 35.87 L 5.12 35.87 L 5.62 35.00 L 5.12 34.13 L 4.12 34.13 Z" opacity="0.867" />
<path d="M 3.62 37.00 L 4.12 37.87 L 5.12 37.87 L 5.62 37.00 L 5.12 36.13 L 4.12 36.13 Z" opacity="0.867" />
<path d="M 3.62 43.00 L 4.12 43.87 L 5.12 43.87 L 5.62 43.00 L 5.12 42.13 L 4.12 42.13 Z" opacity="0.867" />
<path d="M 3.62 53.00 L 4.12 53.87 L 5.12 53.87 L 5.62 53.00 L 5.12 52.13 L 4.12 52.13 Z" opacity="0.867" />
<path d="M 3.62 55.00 L 4.12 55.87 L 5.12 55.87 L 5.62 55.00 L 5.12 54.13 L 4.12 54.13 Z" opacity="0.867" />
<path d="M 3.62 57.00 L 4.12 57.87 L 5.12 57.87 L 5.62 57.00 L 5.12 56.13 L 4.12 56.13 Z" opacity="0.867" />
<path d="M 3.62 59.00 L 4.12 59.87 L 5.12 59.87 L 5.62 59.00 L 5.12 58.13 L 4.12 58.13 Z" opacity="0.867" />
<path d="M 1.89 2.00 L 2.39 2.87 L 3.39 2.87 L 3.89 2.00 L 3.39 1.13 L 2.39 1.13 Z" opacity="0.867" />
<path d="M 1.89 4.00 L 2.39 4.87 L 3.39 4.87 L 3.89 4.00 L 3.39 3.13 L 2.39 3.13 Z" opacity="0.867" />
<path d="M 1.89 6.00 L 2.39 6.87 L 3.39 6.87 L 3.89 6.00 L 3.39 5.13 L 2.39 5.13 Z" opacity="0.867" />
<path d="M 1.89 8.00 L 2.39 8.87 L 3.39 8.87 L 3.89 8.00 L 3.39 7.13 L 2.39 7.13 Z" opacity="0.867" />
<path d="M 1.89 10.00 L 2.39 10.87 L 3.39 10.87 L 3.89 10.00 L 3.39 9.13 L 2.39 9.13 Z" opacity="0.867" />
<path d="M 1.89 12.00 L 2.39 12.87 L 3.39 12.87 L 3.89 12.00 L 3.39 11.13 L 2.39 11.13 Z" opacity="0.867" />
<path d="M 1.89 16.00 L 2.39 16.87 L 3.39 16.87 L 3.89 16.00 L 3.39 15.13 L 2.39 15.13 Z" opacity="0.867" />
<path d="M 1.89 20.00 L 2.39 20.87 L 3.39 20.87 L 3.89 20.00 L 3.39 19.13 L 2.39 19.13 Z" opacity="0.867" />
<path d="M 1.89 22.00 L 2.39 22.87 L 3.39 22.87 L 3.89 22.00 L 3.39 21.13 L 2.39 21.13 Z" opacity="0.867" />
<path d="M 1.89 24.00 L 2.39 24.87 L 3.39 24.87 L 3.89 24.00 L 3.39 23.13 L 2.39 23.13 Z" opacity="0.867" />
<path d="M 1.89 30.00 L 2.39 30.87 L 3.39 30.87 L 3.89 30.00 L 3.39 29.13 L 2.39 29.13 Z" opacity="0.867" />
<path d="M 1.89 32.00 L 2.39 32.87 L 3.39 32.87 L 3.89 32.00 L 3.39 31.13 L 2.39 31.13 Z" opacity="0.867" />
<path d="M 1.89 36.00 L 2.39 36.87 L 3.39 36.87 L 3.89 36.00 L 3.39 35.13 L 2.39 35.13 Z" opacity="0.867" />
<path d="M 1.89 38.00 L 2.39 38.87 L 3.39 38.87 L 3.89 38.00 L 3.39 37.13 L 2.39 37.13 Z" opacity="0.867" />
<path d="M 1.89 42.00 L 2.39 42.87 L 3.39 42.87 L 3.89 42.00 L 3.39 41.13 L 2.39 41.13 Z" opacity="0.867" />
<path d="M 1.89 48.00 L 2.39 48.87 L 3.39 48.87 L 3.89 48.00 L 3.39 47.13 L 2.39 47.13 Z" opacity="0.867" />
<path d="M 1.89 50.00 L 2.39 50.87 L 3.39 50.87 L 3.89 50.00 L 3.39 49.13 L 2.39 49.13 Z" opacity="0.867" />
<path d="M 1.89 52.00 L 2.39 52.87 L 3.39 52.87 L 3.89 52.00 L 3.39 51.13 L 2.39 51.13 Z" opacity="0.867" />
<path d="M 1.89 54.00 L 2.39 54.87 L 3.39 54.87 L 3.89 54.00 L 3.39 53.13 L 2.39 53.13 Z" opacity="0.867" />
<path d="M 1.89 56.00 L 2.39 56.87 L 3.39 56.87 L 3.89 56.00 L 3.39 55.13 L 2.39 55.13 Z" opacity="0.867" />
<path d="M 1.89 58.00 L 2.39 58.87 L 3.39 58.87 L 3.89 58.00 L 3.39 57.13 L 2.39 57.13 Z" opacity="0.867" />
<path d="M 0.15 1.00 L 0.65 1.87 L 1.65 1.87 L 2.15 1.00 L 1.65 0.13 L 0.65 0.13 Z" opacity="0.867" />
<path d="M 0.15 7.00 L 0.65 7.87 L 1.65 7.87 L 2.15 7.00 L 1.65 6.13 L 0.65 6.13 Z" opacity="0.867" />
<path d="M 0.15 17.00 L 0.65 17.87 L 1.65 17.87 L 2.15 17.00 L 1.65 16.13 L 0.65 16.13 Z" opacity="0.867" />
<path d="M 0.15 21.00 L 0.65 21.87 L 1.65 21.87 L 2.15 21.00 L 1.65 20.13 L 0.65 20.13 Z" opacity="0.867" />
<path d="M 0.15 23.00 L 0.65 23.87 L 1.65 23.87 L 2.15 23.00 L 1.65 22.13 L 0.65 22.13 Z" opacity="0.867" />
<path d="M 0.15 31.00 L 0.65 31.87 L 1.65 31.87 L 2.15 31.00 L 1.65 30.13 L 0.65 30.13 Z" opacity="0.867" />
<path d="M 0.15 33.00 L 0.65 33.87 L 1.65 33.87 L 2.15 33.00 L 1.65 32.13 L 0.65 32.13 Z" opacity="0.867" />
<path d="M 0.15 37.00 L 0.65 37.87 L 1.65 37.87 L 2.15 37.00 L 1.65 36.13 L 0.65 36.13 Z" opacity="0.867" />
<path d="M 0.15 39.00 L 0.65 39.87 L 1.65 39.87 L 2.15 39.00 L 1.65 38.13 L 0.65 38.13 Z" opacity="0.867" />
<path d="M 0.15 51.00 L 0.65 51.87 L 1.65 51.87 L 2.15 51.00 L 1.65 50.13 L 0.65 50.13 Z" opacity="0.867" />
<path d="M 0.15 59.00 L 0.65 59.87 L 1.65 59.87 L 2.15 59.00 L 1.65 58.13 L 0.65 58.13 Z" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="9.00" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="7.43" fill="#EEEEEE" opacity="0.133" />
<circle cx="28.87" cy="29.00" r="5.86" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="4.29" fill="#EEEEEE" opacity="0.133" />
<circle cx="28.87" cy="29.00" r="2.72" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="1.15" fill="#EEEEEE" opacity="0.133" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -0,0 +1,181 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="68" height="46" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<desc>Zint Generated Symbol
</desc>
<g id="barcode" fill="#FF0000">
<rect x="0" y="0" width="68" height="46" fill="#0000FF" />
<rect x="10.00" y="10.00" width="48.00" height="2.00" fill="#000000" />
<rect x="10.00" y="12.00" width="2.00" height="2.00" fill="#000000" />
<rect x="12.00" y="12.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="14.00" y="12.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="16.00" y="12.00" width="2.00" height="22.00" fill="#000000" />
<rect x="18.00" y="12.00" width="2.00" height="22.00" fill="#ffffff" />
<rect x="20.00" y="12.00" width="4.00" height="2.00" fill="#00ff00" />
<rect x="24.00" y="12.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="26.00" y="12.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="28.00" y="12.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="30.00" y="12.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="32.00" y="12.00" width="16.00" height="2.00" fill="#00ffff" />
<rect x="48.00" y="12.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="50.00" y="12.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="54.00" y="12.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="56.00" y="12.00" width="2.00" height="22.00" fill="#000000" />
<rect x="10.00" y="14.00" width="4.00" height="2.00" fill="#000000" />
<rect x="14.00" y="14.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="20.00" y="14.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="22.00" y="14.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="24.00" y="14.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="26.00" y="14.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="28.00" y="14.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="30.00" y="14.00" width="18.00" height="2.00" fill="#00ff00" />
<rect x="48.00" y="14.00" width="2.00" height="2.00" fill="#000000" />
<rect x="50.00" y="14.00" width="4.00" height="2.00" fill="#00ff00" />
<rect x="54.00" y="14.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="10.00" y="16.00" width="2.00" height="2.00" fill="#000000" />
<rect x="12.00" y="16.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="14.00" y="16.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="20.00" y="16.00" width="4.00" height="2.00" fill="#00ff00" />
<rect x="24.00" y="16.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="26.00" y="16.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="28.00" y="16.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="30.00" y="16.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="32.00" y="16.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="36.00" y="16.00" width="6.00" height="2.00" fill="#ff00ff" />
<rect x="42.00" y="16.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="46.00" y="16.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="48.00" y="16.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="50.00" y="16.00" width="4.00" height="2.00" fill="#ff00ff" />
<rect x="54.00" y="16.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="10.00" y="18.00" width="4.00" height="2.00" fill="#000000" />
<rect x="14.00" y="18.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="20.00" y="18.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="22.00" y="18.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="24.00" y="18.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="26.00" y="18.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="30.00" y="18.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="32.00" y="18.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="34.00" y="18.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="36.00" y="18.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="38.00" y="18.00" width="6.00" height="2.00" fill="#ffff00" />
<rect x="44.00" y="18.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="46.00" y="18.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="48.00" y="18.00" width="2.00" height="2.00" fill="#000000" />
<rect x="50.00" y="18.00" width="4.00" height="2.00" fill="#ffff00" />
<rect x="54.00" y="18.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="10.00" y="20.00" width="2.00" height="2.00" fill="#000000" />
<rect x="12.00" y="20.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="14.00" y="20.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="20.00" y="20.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="22.00" y="20.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="24.00" y="20.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="26.00" y="20.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="28.00" y="20.00" width="4.00" height="2.00" fill="#ffff00" />
<rect x="32.00" y="20.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="34.00" y="20.00" width="4.00" height="2.00" fill="#ffff00" />
<rect x="38.00" y="20.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="40.00" y="20.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="42.00" y="20.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="44.00" y="20.00" width="4.00" height="2.00" fill="#ffff00" />
<rect x="48.00" y="20.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="50.00" y="20.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="52.00" y="20.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="54.00" y="20.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="10.00" y="22.00" width="4.00" height="2.00" fill="#000000" />
<rect x="14.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="20.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="22.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="24.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="26.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="28.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="30.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="32.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="34.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="36.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="38.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="40.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="42.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="44.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="46.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="48.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="50.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="52.00" y="22.00" width="2.00" height="2.00" fill="#000000" />
<rect x="54.00" y="22.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="10.00" y="24.00" width="2.00" height="2.00" fill="#000000" />
<rect x="12.00" y="24.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="14.00" y="24.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="20.00" y="24.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="22.00" y="24.00" width="6.00" height="2.00" fill="#00ff00" />
<rect x="28.00" y="24.00" width="20.00" height="2.00" fill="#00ffff" />
<rect x="48.00" y="24.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="50.00" y="24.00" width="6.00" height="2.00" fill="#00ffff" />
<rect x="10.00" y="26.00" width="4.00" height="2.00" fill="#000000" />
<rect x="14.00" y="26.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="20.00" y="26.00" width="8.00" height="2.00" fill="#ff00ff" />
<rect x="28.00" y="26.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="30.00" y="26.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="32.00" y="26.00" width="16.00" height="2.00" fill="#00ff00" />
<rect x="48.00" y="26.00" width="2.00" height="2.00" fill="#000000" />
<rect x="50.00" y="26.00" width="4.00" height="2.00" fill="#00ff00" />
<rect x="54.00" y="26.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="10.00" y="28.00" width="2.00" height="2.00" fill="#000000" />
<rect x="12.00" y="28.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="14.00" y="28.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="20.00" y="28.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="22.00" y="28.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="24.00" y="28.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="26.00" y="28.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="28.00" y="28.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="30.00" y="28.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="34.00" y="28.00" width="6.00" height="2.00" fill="#ff00ff" />
<rect x="40.00" y="28.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="44.00" y="28.00" width="4.00" height="2.00" fill="#ff00ff" />
<rect x="48.00" y="28.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="50.00" y="28.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="52.00" y="28.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="54.00" y="28.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="10.00" y="30.00" width="4.00" height="2.00" fill="#000000" />
<rect x="14.00" y="30.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="20.00" y="30.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="22.00" y="30.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="24.00" y="30.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="26.00" y="30.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="30.00" y="30.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="32.00" y="30.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="34.00" y="30.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="38.00" y="30.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="40.00" y="30.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="42.00" y="30.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="44.00" y="30.00" width="4.00" height="2.00" fill="#00ffff" />
<rect x="48.00" y="30.00" width="2.00" height="2.00" fill="#000000" />
<rect x="50.00" y="30.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="52.00" y="30.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="54.00" y="30.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="10.00" y="32.00" width="2.00" height="2.00" fill="#000000" />
<rect x="12.00" y="32.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="14.00" y="32.00" width="2.00" height="2.00" fill="#00ffff" />
<rect x="20.00" y="32.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="22.00" y="32.00" width="4.00" height="2.00" fill="#ff00ff" />
<rect x="26.00" y="32.00" width="4.00" height="2.00" fill="#ffff00" />
<rect x="30.00" y="32.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="32.00" y="32.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="34.00" y="32.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="36.00" y="32.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="38.00" y="32.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="40.00" y="32.00" width="4.00" height="2.00" fill="#00ff00" />
<rect x="44.00" y="32.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="46.00" y="32.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="48.00" y="32.00" width="2.00" height="2.00" fill="#ffffff" />
<rect x="50.00" y="32.00" width="2.00" height="2.00" fill="#ff00ff" />
<rect x="52.00" y="32.00" width="2.00" height="2.00" fill="#00ff00" />
<rect x="54.00" y="32.00" width="2.00" height="2.00" fill="#ffff00" />
<rect x="10.00" y="34.00" width="48.00" height="2.00" fill="#000000" />
<rect x="0.00" y="4.00" width="68.00" height="6.00" />
<rect x="0.00" y="36.00" width="68.00" height="6.00" />
<rect x="0.00" y="10.00" width="6.00" height="26.00" />
<rect x="62.00" y="10.00" width="6.00" height="26.00" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,107 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="192" height="117" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<desc>Zint Generated Symbol
</desc>
<g id="barcode" fill="#FF0000">
<rect x="0" y="0" width="192" height="117" fill="#0000FF" opacity="0.067" />
<rect x="18.00" y="0.00" width="4.00" height="20.00" opacity="0.933" />
<rect x="24.00" y="0.00" width="4.00" height="16.00" opacity="0.933" />
<rect x="32.00" y="0.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="38.00" y="0.00" width="8.00" height="4.00" opacity="0.933" />
<rect x="48.00" y="0.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="56.00" y="0.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="60.00" y="0.00" width="10.00" height="4.00" opacity="0.933" />
<rect x="72.00" y="0.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="76.00" y="0.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="84.00" y="0.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="92.00" y="0.00" width="8.00" height="4.00" opacity="0.933" />
<rect x="106.00" y="0.00" width="8.00" height="4.00" opacity="0.933" />
<rect x="116.00" y="0.00" width="2.00" height="8.00" opacity="0.933" />
<rect x="120.00" y="0.00" width="2.00" height="16.00" opacity="0.933" />
<rect x="126.00" y="0.00" width="2.00" height="20.00" opacity="0.933" />
<rect x="30.00" y="4.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="38.00" y="4.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="46.00" y="4.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="58.00" y="4.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="66.00" y="4.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="72.00" y="4.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="82.00" y="4.00" width="2.00" height="8.00" opacity="0.933" />
<rect x="86.00" y="4.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="90.00" y="4.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="106.00" y="4.00" width="6.00" height="16.00" opacity="0.933" />
<rect x="30.00" y="8.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="38.00" y="8.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="48.00" y="8.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="52.00" y="8.00" width="10.00" height="4.00" opacity="0.933" />
<rect x="64.00" y="8.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="72.00" y="8.00" width="8.00" height="4.00" opacity="0.933" />
<rect x="92.00" y="8.00" width="2.00" height="8.00" opacity="0.933" />
<rect x="98.00" y="8.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="114.00" y="8.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="30.00" y="12.00" width="2.00" height="8.00" opacity="0.933" />
<rect x="38.00" y="12.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="44.00" y="12.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="52.00" y="12.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="62.00" y="12.00" width="8.00" height="4.00" opacity="0.933" />
<rect x="72.00" y="12.00" width="6.00" height="8.00" opacity="0.933" />
<rect x="82.00" y="12.00" width="8.00" height="4.00" opacity="0.933" />
<rect x="96.00" y="12.00" width="6.00" height="4.00" opacity="0.933" />
<rect x="114.00" y="12.00" width="2.00" height="8.00" opacity="0.933" />
<rect x="24.00" y="16.00" width="2.00" height="8.00" opacity="0.933" />
<rect x="38.00" y="16.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="46.00" y="16.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="54.00" y="16.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="68.00" y="16.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="80.00" y="16.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="88.00" y="16.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="94.00" y="16.00" width="8.00" height="4.00" opacity="0.933" />
<rect x="120.00" y="16.00" width="4.00" height="4.00" opacity="0.933" />
<rect x="124.00" y="20.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="22.00" y="24.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="126.00" y="24.00" width="2.00" height="4.00" opacity="0.933" />
<rect x="24.00" y="28.00" width="2.00" height="82.00" opacity="0.933" />
<rect x="124.00" y="28.00" width="2.00" height="82.00" opacity="0.933" />
<rect x="28.00" y="32.00" width="2.00" height="78.00" opacity="0.933" />
<rect x="38.00" y="32.00" width="2.00" height="68.00" opacity="0.933" />
<rect x="42.00" y="32.00" width="2.00" height="68.00" opacity="0.933" />
<rect x="46.00" y="32.00" width="4.00" height="68.00" opacity="0.933" />
<rect x="56.00" y="32.00" width="2.00" height="68.00" opacity="0.933" />
<rect x="62.00" y="32.00" width="6.00" height="68.00" opacity="0.933" />
<rect x="70.00" y="32.00" width="2.00" height="68.00" opacity="0.933" />
<rect x="74.00" y="32.00" width="8.00" height="68.00" opacity="0.933" />
<rect x="84.00" y="32.00" width="2.00" height="68.00" opacity="0.933" />
<rect x="90.00" y="32.00" width="4.00" height="68.00" opacity="0.933" />
<rect x="96.00" y="32.00" width="4.00" height="68.00" opacity="0.933" />
<rect x="104.00" y="32.00" width="4.00" height="68.00" opacity="0.933" />
<rect x="112.00" y="32.00" width="2.00" height="68.00" opacity="0.933" />
<rect x="116.00" y="32.00" width="2.00" height="78.00" opacity="0.933" />
<rect x="120.00" y="32.00" width="2.00" height="78.00" opacity="0.933" />
<rect x="140.00" y="51.00" width="2.00" height="49.00" opacity="0.933" />
<rect x="144.00" y="51.00" width="4.00" height="49.00" opacity="0.933" />
<rect x="150.00" y="51.00" width="4.00" height="49.00" opacity="0.933" />
<rect x="156.00" y="51.00" width="6.00" height="49.00" opacity="0.933" />
<rect x="164.00" y="51.00" width="2.00" height="49.00" opacity="0.933" />
<rect x="170.00" y="51.00" width="2.00" height="49.00" opacity="0.933" />
<rect x="174.00" y="51.00" width="6.00" height="49.00" opacity="0.933" />
<text x="14.00" y="116.00" text-anchor="end"
font-family="Helvetica, sans-serif" font-size="14.0" opacity="0.933" >
0
</text>
<text x="72.00" y="116.00" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="20.0" opacity="0.933" >
654321
</text>
<text x="132.00" y="116.00" text-anchor="start"
font-family="Helvetica, sans-serif" font-size="14.0" opacity="0.933" >
7
</text>
<text x="160.00" y="47.00" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="20.0" opacity="0.933" >
89
</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -0,0 +1,106 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="192" height="117" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<desc>Zint Generated Symbol
</desc>
<g id="barcode" fill="#000000">
<rect x="18.00" y="0.00" width="4.00" height="20.00" />
<rect x="24.00" y="0.00" width="4.00" height="16.00" />
<rect x="32.00" y="0.00" width="4.00" height="4.00" />
<rect x="38.00" y="0.00" width="8.00" height="4.00" />
<rect x="48.00" y="0.00" width="6.00" height="4.00" />
<rect x="56.00" y="0.00" width="2.00" height="4.00" />
<rect x="60.00" y="0.00" width="10.00" height="4.00" />
<rect x="72.00" y="0.00" width="2.00" height="4.00" />
<rect x="76.00" y="0.00" width="2.00" height="4.00" />
<rect x="84.00" y="0.00" width="2.00" height="4.00" />
<rect x="92.00" y="0.00" width="8.00" height="4.00" />
<rect x="106.00" y="0.00" width="8.00" height="4.00" />
<rect x="116.00" y="0.00" width="2.00" height="8.00" />
<rect x="120.00" y="0.00" width="2.00" height="16.00" />
<rect x="126.00" y="0.00" width="2.00" height="20.00" />
<rect x="30.00" y="4.00" width="6.00" height="4.00" />
<rect x="38.00" y="4.00" width="6.00" height="4.00" />
<rect x="46.00" y="4.00" width="4.00" height="4.00" />
<rect x="58.00" y="4.00" width="2.00" height="4.00" />
<rect x="66.00" y="4.00" width="4.00" height="4.00" />
<rect x="72.00" y="4.00" width="6.00" height="4.00" />
<rect x="82.00" y="4.00" width="2.00" height="8.00" />
<rect x="86.00" y="4.00" width="2.00" height="4.00" />
<rect x="90.00" y="4.00" width="6.00" height="4.00" />
<rect x="106.00" y="4.00" width="6.00" height="16.00" />
<rect x="30.00" y="8.00" width="4.00" height="4.00" />
<rect x="38.00" y="8.00" width="4.00" height="4.00" />
<rect x="48.00" y="8.00" width="2.00" height="4.00" />
<rect x="52.00" y="8.00" width="10.00" height="4.00" />
<rect x="64.00" y="8.00" width="6.00" height="4.00" />
<rect x="72.00" y="8.00" width="8.00" height="4.00" />
<rect x="92.00" y="8.00" width="2.00" height="8.00" />
<rect x="98.00" y="8.00" width="2.00" height="4.00" />
<rect x="114.00" y="8.00" width="4.00" height="4.00" />
<rect x="30.00" y="12.00" width="2.00" height="8.00" />
<rect x="38.00" y="12.00" width="2.00" height="4.00" />
<rect x="44.00" y="12.00" width="6.00" height="4.00" />
<rect x="52.00" y="12.00" width="6.00" height="4.00" />
<rect x="62.00" y="12.00" width="8.00" height="4.00" />
<rect x="72.00" y="12.00" width="6.00" height="8.00" />
<rect x="82.00" y="12.00" width="8.00" height="4.00" />
<rect x="96.00" y="12.00" width="6.00" height="4.00" />
<rect x="114.00" y="12.00" width="2.00" height="8.00" />
<rect x="24.00" y="16.00" width="2.00" height="8.00" />
<rect x="38.00" y="16.00" width="4.00" height="4.00" />
<rect x="46.00" y="16.00" width="4.00" height="4.00" />
<rect x="54.00" y="16.00" width="2.00" height="4.00" />
<rect x="68.00" y="16.00" width="2.00" height="4.00" />
<rect x="80.00" y="16.00" width="2.00" height="4.00" />
<rect x="88.00" y="16.00" width="4.00" height="4.00" />
<rect x="94.00" y="16.00" width="8.00" height="4.00" />
<rect x="120.00" y="16.00" width="4.00" height="4.00" />
<rect x="124.00" y="20.00" width="2.00" height="4.00" />
<rect x="22.00" y="24.00" width="2.00" height="4.00" />
<rect x="126.00" y="24.00" width="2.00" height="4.00" />
<rect x="24.00" y="28.00" width="2.00" height="82.00" />
<rect x="124.00" y="28.00" width="2.00" height="82.00" />
<rect x="28.00" y="32.00" width="2.00" height="78.00" />
<rect x="38.00" y="32.00" width="2.00" height="68.00" />
<rect x="42.00" y="32.00" width="2.00" height="68.00" />
<rect x="46.00" y="32.00" width="4.00" height="68.00" />
<rect x="56.00" y="32.00" width="2.00" height="68.00" />
<rect x="62.00" y="32.00" width="6.00" height="68.00" />
<rect x="70.00" y="32.00" width="2.00" height="68.00" />
<rect x="74.00" y="32.00" width="8.00" height="68.00" />
<rect x="84.00" y="32.00" width="2.00" height="68.00" />
<rect x="90.00" y="32.00" width="4.00" height="68.00" />
<rect x="96.00" y="32.00" width="4.00" height="68.00" />
<rect x="104.00" y="32.00" width="4.00" height="68.00" />
<rect x="112.00" y="32.00" width="2.00" height="68.00" />
<rect x="116.00" y="32.00" width="2.00" height="78.00" />
<rect x="120.00" y="32.00" width="2.00" height="78.00" />
<rect x="140.00" y="51.00" width="2.00" height="49.00" />
<rect x="144.00" y="51.00" width="4.00" height="49.00" />
<rect x="150.00" y="51.00" width="4.00" height="49.00" />
<rect x="156.00" y="51.00" width="6.00" height="49.00" />
<rect x="164.00" y="51.00" width="2.00" height="49.00" />
<rect x="170.00" y="51.00" width="2.00" height="49.00" />
<rect x="174.00" y="51.00" width="6.00" height="49.00" />
<text x="14.00" y="116.00" text-anchor="end"
font-family="Helvetica, sans-serif" font-size="14.0" >
0
</text>
<text x="72.00" y="116.00" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="20.0" >
654321
</text>
<text x="132.00" y="116.00" text-anchor="start"
font-family="Helvetica, sans-serif" font-size="14.0" >
7
</text>
<text x="160.00" y="47.00" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="20.0" >
89
</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -0,0 +1,107 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="117" height="192" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<desc>Zint Generated Symbol
</desc>
<g id="barcode" fill="#000000">
<rect x="0" y="0" width="117" height="192" fill="#FFFFFF" />
<rect x="0.00" y="170.00" width="20.00" height="4.00" />
<rect x="0.00" y="164.00" width="16.00" height="4.00" />
<rect x="0.00" y="156.00" width="4.00" height="4.00" />
<rect x="0.00" y="146.00" width="4.00" height="8.00" />
<rect x="0.00" y="138.00" width="4.00" height="6.00" />
<rect x="0.00" y="134.00" width="4.00" height="2.00" />
<rect x="0.00" y="122.00" width="4.00" height="10.00" />
<rect x="0.00" y="118.00" width="4.00" height="2.00" />
<rect x="0.00" y="114.00" width="4.00" height="2.00" />
<rect x="0.00" y="106.00" width="4.00" height="2.00" />
<rect x="0.00" y="92.00" width="4.00" height="8.00" />
<rect x="0.00" y="78.00" width="4.00" height="8.00" />
<rect x="0.00" y="74.00" width="8.00" height="2.00" />
<rect x="0.00" y="70.00" width="16.00" height="2.00" />
<rect x="0.00" y="64.00" width="20.00" height="2.00" />
<rect x="4.00" y="156.00" width="4.00" height="6.00" />
<rect x="4.00" y="148.00" width="4.00" height="6.00" />
<rect x="4.00" y="142.00" width="4.00" height="4.00" />
<rect x="4.00" y="132.00" width="4.00" height="2.00" />
<rect x="4.00" y="122.00" width="4.00" height="4.00" />
<rect x="4.00" y="114.00" width="4.00" height="6.00" />
<rect x="4.00" y="108.00" width="8.00" height="2.00" />
<rect x="4.00" y="104.00" width="4.00" height="2.00" />
<rect x="4.00" y="96.00" width="4.00" height="6.00" />
<rect x="4.00" y="80.00" width="16.00" height="6.00" />
<rect x="8.00" y="158.00" width="4.00" height="4.00" />
<rect x="8.00" y="150.00" width="4.00" height="4.00" />
<rect x="8.00" y="142.00" width="4.00" height="2.00" />
<rect x="8.00" y="130.00" width="4.00" height="10.00" />
<rect x="8.00" y="122.00" width="4.00" height="6.00" />
<rect x="8.00" y="112.00" width="4.00" height="8.00" />
<rect x="8.00" y="98.00" width="8.00" height="2.00" />
<rect x="8.00" y="92.00" width="4.00" height="2.00" />
<rect x="8.00" y="74.00" width="4.00" height="4.00" />
<rect x="12.00" y="160.00" width="8.00" height="2.00" />
<rect x="12.00" y="152.00" width="4.00" height="2.00" />
<rect x="12.00" y="142.00" width="4.00" height="6.00" />
<rect x="12.00" y="134.00" width="4.00" height="6.00" />
<rect x="12.00" y="122.00" width="4.00" height="8.00" />
<rect x="12.00" y="114.00" width="8.00" height="6.00" />
<rect x="12.00" y="102.00" width="4.00" height="8.00" />
<rect x="12.00" y="90.00" width="4.00" height="6.00" />
<rect x="12.00" y="76.00" width="8.00" height="2.00" />
<rect x="16.00" y="166.00" width="8.00" height="2.00" />
<rect x="16.00" y="150.00" width="4.00" height="4.00" />
<rect x="16.00" y="142.00" width="4.00" height="4.00" />
<rect x="16.00" y="136.00" width="4.00" height="2.00" />
<rect x="16.00" y="122.00" width="4.00" height="2.00" />
<rect x="16.00" y="110.00" width="4.00" height="2.00" />
<rect x="16.00" y="100.00" width="4.00" height="4.00" />
<rect x="16.00" y="90.00" width="4.00" height="8.00" />
<rect x="16.00" y="68.00" width="4.00" height="4.00" />
<rect x="20.00" y="66.00" width="4.00" height="2.00" />
<rect x="24.00" y="168.00" width="4.00" height="2.00" />
<rect x="24.00" y="64.00" width="4.00" height="2.00" />
<rect x="28.00" y="166.00" width="82.00" height="2.00" />
<rect x="28.00" y="66.00" width="82.00" height="2.00" />
<rect x="32.00" y="162.00" width="78.00" height="2.00" />
<rect x="32.00" y="152.00" width="68.00" height="2.00" />
<rect x="32.00" y="148.00" width="68.00" height="2.00" />
<rect x="32.00" y="142.00" width="68.00" height="4.00" />
<rect x="32.00" y="134.00" width="68.00" height="2.00" />
<rect x="32.00" y="124.00" width="68.00" height="6.00" />
<rect x="32.00" y="120.00" width="68.00" height="2.00" />
<rect x="32.00" y="110.00" width="68.00" height="8.00" />
<rect x="32.00" y="106.00" width="68.00" height="2.00" />
<rect x="32.00" y="98.00" width="68.00" height="4.00" />
<rect x="32.00" y="92.00" width="68.00" height="4.00" />
<rect x="32.00" y="84.00" width="68.00" height="4.00" />
<rect x="32.00" y="78.00" width="68.00" height="2.00" />
<rect x="32.00" y="74.00" width="78.00" height="2.00" />
<rect x="32.00" y="70.00" width="78.00" height="2.00" />
<rect x="51.00" y="50.00" width="49.00" height="2.00" />
<rect x="51.00" y="44.00" width="49.00" height="4.00" />
<rect x="51.00" y="38.00" width="49.00" height="4.00" />
<rect x="51.00" y="30.00" width="49.00" height="6.00" />
<rect x="51.00" y="26.00" width="49.00" height="2.00" />
<rect x="51.00" y="20.00" width="49.00" height="2.00" />
<rect x="51.00" y="12.00" width="49.00" height="6.00" />
<text x="116.00" y="178.00" text-anchor="end"
font-family="Helvetica, sans-serif" font-size="14.0" transform="rotate(270,116.00,178.00)" >
0
</text>
<text x="116.00" y="120.00" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="20.0" transform="rotate(270,116.00,120.00)" >
654321
</text>
<text x="116.00" y="60.00" text-anchor="start"
font-family="Helvetica, sans-serif" font-size="14.0" transform="rotate(270,116.00,60.00)" >
7
</text>
<text x="47.00" y="32.00" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="20.0" transform="rotate(270,47.00,32.00)" >
89
</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -48,17 +48,22 @@ static void test_options(int index, int debug) {
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { BARCODE_AZTEC, -1, -1, -1, -1, "1234567890", 0, 15, 15 },
/* 1*/ { BARCODE_AZTEC, -1, -1, 4, -1, "1234567890", 0, 19, 19 },
/* 2*/ { BARCODE_AZTEC, -1, -1, 5, -1, "1234567890", ZINT_WARN_INVALID_OPTION, 15, 15 },
/* 3*/ { BARCODE_AZTEC, -1, -1, -1, 36, "1234567890", 0, 151, 151 },
/* 4*/ { BARCODE_AZTEC, -1, -1, -1, 37, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1 },
/* 5*/ { BARCODE_AZTEC, GS1_MODE, READER_INIT, -1, -1, "[91]A", ZINT_ERROR_INVALID_OPTION, -1, -1 },
/* 6*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, "[91]A", 0, 15, 15 },
/* 7*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, "(91)A", 0, 15, 15 },
/* 8*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 26, "A", 0, 109, 109 }, // 22 layers
/* 9*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 27, "A", ZINT_ERROR_TOO_LONG, -1, -1 }, // 23 layers
/* 10*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 1, "A", 0, 15, 15 }, // Compact 1 layer
/* 11*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 2, "A", 0, 19, 19 }, // Compact 2 layers gets set to full 1 layer if READER_INIT set
/* 1*/ { BARCODE_AZTEC, -1, -1, 1, -1, "1234567890", 0, 15, 15 },
/* 2*/ { BARCODE_AZTEC, -1, -1, 4, -1, "1234567890", 0, 19, 19 },
/* 3*/ { BARCODE_AZTEC, -1, -1, 5, -1, "1234567890", ZINT_WARN_INVALID_OPTION, 15, 15 },
/* 4*/ { BARCODE_AZTEC, -1, -1, -1, 1, "12345678901234567890", ZINT_ERROR_TOO_LONG, -1, -1 },
/* 5*/ { BARCODE_AZTEC, -1, -1, -1, 36, "1234567890", 0, 151, 151 },
/* 6*/ { BARCODE_AZTEC, -1, -1, -1, 37, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1 },
/* 7*/ { BARCODE_AZTEC, GS1_MODE, READER_INIT, -1, -1, "[91]A", ZINT_ERROR_INVALID_OPTION, -1, -1 },
/* 8*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, "[91]A", 0, 15, 15 },
/* 9*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, "(91)A", 0, 15, 15 },
/* 10*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 26, "A", 0, 109, 109 }, // 22 layers
/* 11*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 27, "A", ZINT_ERROR_TOO_LONG, -1, -1 }, // 23 layers
/* 12*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 1, "A", 0, 15, 15 }, // Compact 1 layer
/* 13*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 2, "A", 0, 19, 19 }, // Compact 2 layers gets set to full 1 layer if READER_INIT set
/* 14*/ { BARCODE_AZRUNE, -1, -1, -1, -1, "0001", ZINT_ERROR_TOO_LONG, -1, -1 },
/* 15*/ { BARCODE_AZRUNE, -1, -1, -1, -1, "A", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 16*/ { BARCODE_AZRUNE, -1, -1, -1, -1, "256", ZINT_ERROR_INVALID_DATA, -1, -1 },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -902,7 +907,7 @@ static void test_encode(int index, int generate, int debug) {
"101010100011011"
"000000000111010"
},
/* 27*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", -1, 0, 61, 61, 0, "Zint website example gui3.png NOTE now ends with CTRL_DL . instead of CTRL_PS .; BWIPP different encodation (doesn't use CTRL_PS doubles)",
/* 27*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", -1, 0, 61, 61, 0, "Zint website example gui3.png NOTE now ends with D/L . instead of P/S .; BWIPP same encodation but estimates number of Data/ECC codewords differently",
"0010110111101110101100000101001101110100010000100111011100001"
"0001100000000000001101110010000100010101110011000001000011110"
"0001111110101010100101000110101101000110011000101111011100110"
@ -965,7 +970,115 @@ static void test_encode(int index, int generate, int debug) {
"1110000011010000000000100001100001000111011110011010000000001"
"0000010101001111100010001001111100101000010001110010010101101"
},
/* 28*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 36, "Lorem ipsum dolor sit amet.", -1, 0, 151, 151, 1, "Max version 151x151",
/* 28*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, "Colon: etc. NUM. 12345, num. 12345 @, 123. . . . . @.¡.!A ", -1, 0, 27, 27, 0, "BWIPP different encodation (better use of D/L and B/S)",
"001011011101101011011110111"
"101001010000010000111010101"
"011101001100101111010111111"
"110110011100000110101001100"
"001111101101100101101110001"
"100111011111010110000110011"
"001000010001011010000001001"
"001000110100110011000111111"
"110110111111101100110000010"
"011110001111111111110110000"
"100101000100000001011101100"
"001110100101111101010001111"
"001101111101000101100011111"
"110100110101010101100001010"
"111010100101000101110000101"
"000010101101111101000101010"
"000010011100000001011100010"
"001000100111111111101010010"
"010101000000010100010000000"
"011011001101111000010001010"
"001010001110010110111001111"
"110011011101100111101010100"
"011011101110010010110011101"
"011111111001010010100110111"
"011101011001001010010111111"
"000000111111011010100010100"
"010000011101011110110000100"
},
/* 29*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, "1. 1a @ A@@ @@!!@@!!1!!!!¡a ", -1, 0, 23, 23, 0, "BWIPP different encodation (better use of B/S)",
"11110101100111101010011"
"11111111110111111001011"
"00000000001000011111000"
"01011101110100100010110"
"11100111000010110111010"
"10001110100110000111101"
"10110111100111001011101"
"00000111111111111000101"
"10010101000000010101010"
"01100001011111010100010"
"11000001010001010101000"
"11111001010101011000100"
"01010011010001010110100"
"11110001011111010110111"
"00111001000000010110100"
"00110001111111111110100"
"01111000110001100101100"
"00100010011001110001000"
"00001101111011011111001"
"01011001100100111010101"
"11010001100000011111100"
"01100011101111001100010"
"11000011000010110000011"
},
/* 30*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, "1234\01512\015AB\015AB\015ab\015ab\01512\015ab\015!\015!\015a,a,1,a,@,", -1, 0, 27, 27, 0, "BWIPP different encodation (better use of P/S CRs)",
"111111110000010110000011001"
"110110110010011110100000101"
"000011100001000111001100111"
"010010110001110000100100110"
"101001010011110101010100011"
"100111100011101010001101110"
"001001011111111011000000011"
"100011010101001101001011110"
"100010001111100110110101110"
"111011011111111111100110011"
"000110011100000001110110111"
"001010001101111101110000010"
"000000011101000101101010000"
"000011001101010101101110001"
"011110001101000101000100100"
"001100111101111101110100101"
"111111000100000001010101000"
"011010110111111111111011100"
"001111010001101110010011100"
"000001011010011101101000000"
"000011010100101100000000101"
"000101100011010101010110010"
"000000101000011010111000000"
"110000000111001101111000001"
"110010101110100110101001000"
"000110100001100100110010100"
"101110010000110000111111101"
},
/* 31*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 6, "AA!! ", -1, 0, 23, 23, 1, "",
"00110111000010111110110"
"01011001101100101011001"
"00101000101000011110111"
"00011011100111110011101"
"10011100001000000010001"
"00001111111111111110000"
"00010100000000000100111"
"00011101111111110100111"
"01000101000000010101101"
"11110101011111010110011"
"00110101010001010110010"
"01010101010101010101010"
"00010101010001010100011"
"00100101011111010101001"
"00100101000000010101010"
"11001101111111110111100"
"00011100000000000101000"
"00110111111111111111011"
"01100000101000010001001"
"11101001010111001100010"
"11110100110010110001111"
"00111110110110100011111"
"10010010100010101110001"
},
/* 32*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 36, "Lorem ipsum dolor sit amet.", -1, 0, 151, 151, 1, "Max version 151x151",
"0110011000001101111010100010010110101010100001110111111001101101010000111100111111111001000011100001010000101001010001001010101001000111101011111001101"
"1011011111111000001111111001010101111011100101110110001011011000101000010101101100000110011110100000010100110111100111111011011110001000110100111100100"
"1110001110001111110101011110010010011011001011001000001010000010000110101010101011111110110010000010000111000010000011011110001111111001000010000000111"
@ -1118,7 +1231,7 @@ static void test_encode(int index, int generate, int debug) {
"1000000100011011110011111011110000011111110111001111111010110101100011000111010100100010001111000101110110110100000111000011101011011101111111000011111"
"1000110110001001001111110010011100000100011010101101101101101001001001011110101010011110010011011110100111100111110111111110000101100111110000101010011"
},
/* 29*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 31, "aztec barcode", -1, 0, 131, 131, 1, "Layers 27 example from Andre Maute, mailing list 2020-12-16",
/* 33*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 31, "aztec barcode", -1, 0, 131, 131, 1, "Layers 27 example from Andre Maute, mailing list 2020-12-16",
"10101111100010101000001110000100001111111110110110010011000100100000011000101001100000001111111010100010010101111010001011001110001"
"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
"10001110111111000001001111011100100100010011110010101011110111111000000110101100000110101010110000010101101110010010010101001001001"
@ -1251,7 +1364,7 @@ static void test_encode(int index, int generate, int debug) {
"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
"10111010011101110010010111100011101001001011100010101101110000011000110101000011100000011000101000101010001110100000000100101100001"
},
/* 30*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 6, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 23, 23, 1, "Full 2 layers example",
/* 34*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 6, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 23, 23, 1, "Full 2 layers example",
"00000100110001011110010"
"01111011110100100101111"
"00001011010000010011001"
@ -1276,7 +1389,7 @@ static void test_encode(int index, int generate, int debug) {
"11001100111110110000000"
"00011010100010111001011"
},
/* 31*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 7, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", -1, 0, 27, 27, 1, "Full 3 layers example",
/* 35*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 7, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", -1, 0, 27, 27, 1, "Full 3 layers example",
"001011111011101010010010000"
"011111001111111001111010110"
"001111101101101100001011101"
@ -1305,7 +1418,7 @@ static void test_encode(int index, int generate, int debug) {
"110011110110011010110100110"
"101010010111000001000111010"
},
/* 32*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 8, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO", -1, 0, 31, 31, 1, "Full 4 layers example",
/* 36*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 8, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO", -1, 0, 31, 31, 1, "Full 4 layers example",
"0011101110100110101001010110000"
"0110000101110011101111001100111"
"0000011000110010000001101101001"
@ -1338,7 +1451,7 @@ static void test_encode(int index, int generate, int debug) {
"1111011001010111010011101111110"
"1001011100001000011100011001100"
},
/* 33*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 9, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 37, 37, 1, "5 layers example",
/* 37*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 9, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 37, 37, 1, "5 layers example",
"0010010100110011001011100010000111101"
"0101111010111110110100101101010011001"
"1010101010101010101010101010101010101"
@ -1377,7 +1490,7 @@ static void test_encode(int index, int generate, int debug) {
"0101001010110100110101111101011110000"
"0111100001000111001011001100101001111"
},
/* 34*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 12, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 49, 49, 1, "8 layers example",
/* 38*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 12, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 49, 49, 1, "8 layers example",
"0001000111011100100000001101000011110011100000101"
"0110100001000100011100000000110110101100010111110"
"0000011110010100101100001010000010000100110110111"
@ -1428,7 +1541,7 @@ static void test_encode(int index, int generate, int debug) {
"1001110101111010111101010001000110101110000111011"
"1110001110011001010011001001010000100100101000001"
},
/* 35*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 14, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 57, 57, 1, "10 layers example",
/* 39*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 14, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 57, 57, 1, "10 layers example",
"001011000011100111111010110111010001110110001110011100010"
"011110001010001111111111000000100000100100110001001011111"
"000101001001111111010111010010011011111011101011010110010"
@ -1487,7 +1600,7 @@ static void test_encode(int index, int generate, int debug) {
"111101011110010100100011010101100011100110010111011001001"
"001100101001110000101000010011000100001101011001011100010"
},
/* 36*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 16, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 67, 67, 1, "12 layers example",
/* 40*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 16, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 67, 67, 1, "12 layers example",
"0000000100001010000100101101101010101011010000001010001111010001101"
"0101010101010101010101010101010101010101010101010101010101010101010"
"0001010100101010100010110000101110111100001101110000000100111010001"
@ -1556,7 +1669,7 @@ static void test_encode(int index, int generate, int debug) {
"0101010101010101010101010101010101010101010101010101010101010101010"
"0001010011000010100000100100010000011010100101110000010001110001101"
},
/* 37*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 17, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 71, 71, 1, "13 layers example",
/* 41*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 17, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 71, 71, 1, "13 layers example",
"00001101010011011010101011001110001000011100011011001100101000001110111"
"01110010110000100111001011100101010101000111011001110000100101100001100"
"00000111000100010100111110101011100011011010001110001000101100010000011"
@ -1629,7 +1742,7 @@ static void test_encode(int index, int generate, int debug) {
"10110010001101011101001110011001111101100101011010011110111110101111111"
"10000010100001001000010000110101001001110000100011100001100110010100001"
},
/* 38*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 20, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 83, 83, 1, "16 layers example",
/* 42*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 20, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 83, 83, 1, "16 layers example",
"00001011100001101001010010111011000000000010110111001100101011111010100110010011011"
"00001100111101010101111001100010000000000101110110000101011100011010011001001000011"
"00000001101101111000000010100101011010101011110011000000000101010100111000110101100"
@ -1714,7 +1827,7 @@ static void test_encode(int index, int generate, int debug) {
"01101011110001110011001111101100101011010101110111110101111101011001011101100001111"
"00001001000010000110101000101110000100011010001100110010100011011111011100001101110"
},
/* 39*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 23, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 95, 95, 1, "19 layers example",
/* 43*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 23, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 95, 95, 1, "19 layers example",
"00010001011000001001011100000100010100011110001000101101010001101011000110101100111011100100000"
"00111000100000010000111101010111001010100110100100101001100010111101100100110001001101001001000"
"00110000001000100010001011100100111100110000000000111101000101101101011010001100100111011100010"
@ -1811,7 +1924,7 @@ static void test_encode(int index, int generate, int debug) {
"10011001111011010101011010011101111110101111010101011110010010111111000001000011100100110011001"
"00110101001011100000100011100010100110010100111000001111111101000000001100011000110110100110000"
},
/* 40*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 24, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 101, 101, 1, "20 layers example",
/* 44*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 24, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 101, 101, 1, "20 layers example",
"00100011001001111011101000010101101000001111011011100001010111001110100001111011101010011110100110110"
"01001011101010010001000100010011010011001011100001000010011001000001100110100110000010001111010101011"
"10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
@ -1914,7 +2027,7 @@ static void test_encode(int index, int generate, int debug) {
"01011101100101011001001110111110100111101011010110010100101110001100000100001110000011101010010100001"
"01100101110000100011110001100110011010011000001110100010010101000111010001001111111100001101100010111"
},
/* 41*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 30, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 125, 125, 1, "26 layers example",
/* 45*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 30, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 125, 125, 1, "26 layers example",
"00100110111101111000100011101010001011000100011001100001000110110101101111011010100110010101111010000000001001111011011101111"
"01000110110001010011111011000100001101000010100100110101101011001111101101110000100110101000000100001011010101000110110110011"
"00100000111011111011100111001111100011001111101001011011011111100001111010110111111101111111011010001000100011110110101111001"
@ -2041,7 +2154,7 @@ static void test_encode(int index, int generate, int debug) {
"11111010111101011001001001001000000000110100010101011110101011001010101011000101010010100111110010111001110100001111110111011"
"10011001010011111111011111100010010011110010001010100100000110100111000110011010110111001010011011101001111100110010110010011"
},
/* 42*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "0", -1, 0, 11, 11, 1, "ISO/IEC 24778:2008 Figure A.1 (1st)",
/* 46*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "0", -1, 0, 11, 11, 1, "ISO/IEC 24778:2008 Figure A.1 (1st)",
"11101010101"
"11111111111"
"01000000010"
@ -2054,7 +2167,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00101010100"
},
/* 43*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "25", -1, 0, 11, 11, 1, "ISO/IEC 24778:2008 Figure A.1 (2nd)",
/* 47*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "25", -1, 0, 11, 11, 1, "ISO/IEC 24778:2008 Figure A.1 (2nd)",
"11101100101"
"11111111111"
"01000000011"
@ -2067,7 +2180,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00100100000"
},
/* 44*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "125", -1, 0, 11, 11, 1, "ISO/IEC 24778:2008 Figure A.1 (3rd)",
/* 48*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "125", -1, 0, 11, 11, 1, "ISO/IEC 24778:2008 Figure A.1 (3rd)",
"11110101101"
"11111111111"
"11000000011"
@ -2080,7 +2193,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00111101000"
},
/* 45*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "255", -1, 0, 11, 11, 1, "ISO/IEC 24778:2008 Figure A.1 (4th)",
/* 49*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "255", -1, 0, 11, 11, 1, "ISO/IEC 24778:2008 Figure A.1 (4th)",
"11010101001"
"11111111111"
"01000000011"
@ -2093,7 +2206,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00110011100"
},
/* 46*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "1", -1, 0, 11, 11, 1, "",
/* 50*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "1", -1, 0, 11, 11, 1, "",
"11101010101"
"11111111111"
"11000000011"
@ -2106,7 +2219,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00100110100"
},
/* 47*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "15", -1, 0, 11, 11, 1, "",
/* 51*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "15", -1, 0, 11, 11, 1, "",
"11101001001"
"11111111111"
"11000000011"
@ -2119,7 +2232,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00001111100"
},
/* 48*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "16", -1, 0, 11, 11, 1, "",
/* 52*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "16", -1, 0, 11, 11, 1, "",
"11101110101"
"11111111111"
"11000000010"
@ -2132,7 +2245,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00111100100"
},
/* 49*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "63", -1, 0, 11, 11, 1, "",
/* 53*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "63", -1, 0, 11, 11, 1, "",
"11100101001"
"11111111111"
"11000000011"
@ -2145,7 +2258,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00101010000"
},
/* 50*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "64", -1, 0, 11, 11, 1, "",
/* 54*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "64", -1, 0, 11, 11, 1, "",
"11111010101"
"11111111111"
"01000000010"
@ -2158,7 +2271,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00111011100"
},
/* 51*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "65", -1, 0, 11, 11, 1, "",
/* 55*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "65", -1, 0, 11, 11, 1, "",
"11111010101"
"11111111111"
"11000000011"
@ -2171,7 +2284,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00110111100"
},
/* 52*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "126", -1, 0, 11, 11, 1, "",
/* 56*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "126", -1, 0, 11, 11, 1, "",
"11110101001"
"11111111111"
"01000000010"
@ -2184,7 +2297,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00110111000"
},
/* 53*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "127", -1, 0, 11, 11, 1, "",
/* 57*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "127", -1, 0, 11, 11, 1, "",
"11110101001"
"11111111111"
"11000000011"
@ -2197,7 +2310,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00111011000"
},
/* 54*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "128", -1, 0, 11, 11, 1, "",
/* 58*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "128", -1, 0, 11, 11, 1, "",
"11001010101"
"11111111111"
"11000000010"
@ -2210,7 +2323,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00100010000"
},
/* 55*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "191", -1, 0, 11, 11, 1, "",
/* 59*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "191", -1, 0, 11, 11, 1, "",
"11000101001"
"11111111111"
"01000000011"
@ -2223,7 +2336,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00100010100"
},
/* 56*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "192", -1, 0, 11, 11, 1, "",
/* 60*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "192", -1, 0, 11, 11, 1, "",
"11011010101"
"11111111111"
"11000000010"
@ -2236,7 +2349,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00110011000"
},
/* 57*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "225", -1, 0, 11, 11, 1, "",
/* 61*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "225", -1, 0, 11, 11, 1, "",
"11010010101"
"11111111111"
"11000000011"
@ -2249,7 +2362,7 @@ static void test_encode(int index, int generate, int debug) {
"01111111111"
"00001100100"
},
/* 58*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "254", -1, 0, 11, 11, 1, "",
/* 62*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, "254", -1, 0, 11, 11, 1, "",
"11010101001"
"11111111111"
"11000000010"

View File

@ -41,19 +41,20 @@ static void test_pixel_plot(int index, int debug) {
int height;
char *pattern;
int repeat;
int ret;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 1, 1, "1", 0 },
/* 1*/ { 2, 1, "11", 0 },
/* 2*/ { 2, 2, "10", 1 },
/* 3*/ { 3, 1, "101", 0 },
/* 4*/ { 3, 2, "101010", 0 },
/* 5*/ { 3, 3, "101010101", 0 },
/* 6*/ { 4, 1, "1001", 0 },
/* 7*/ { 4, 3, "1001", 1 },
/* 8*/ { 5, 1, "10101", 0 },
/* 9*/ { 8, 2, "CBMWKRYGGYRKWMBC", 0 },
/* 0*/ { 1, 1, "1", 0, 0 },
/* 1*/ { 2, 1, "11", 0, 0 },
/* 2*/ { 2, 2, "10", 1, 0 },
/* 3*/ { 3, 1, "101", 0, 0 },
/* 4*/ { 3, 2, "101010", 0, 0 },
/* 5*/ { 3, 3, "101010101", 0, 0 },
/* 6*/ { 4, 1, "1001", 0, 0 },
/* 7*/ { 4, 3, "1001", 1, 0 },
/* 8*/ { 5, 1, "10101", 0, 0 },
/* 9*/ { 8, 2, "CBMWKRYGGYRKWMBC", 0, 0 },
};
int data_size = ARRAY_SIZE(data);
int i, ret;
@ -63,12 +64,9 @@ static void test_pixel_plot(int index, int debug) {
char data_buf[8 * 2 + 1];
testStart("test_pixel_plot");
int have_identify = testUtilHaveIdentify();
if (!testUtilHaveIdentify()) {
testSkip("ImageMagick identify not available");
return;
}
testStart("test_pixel_plot");
for (i = 0; i < data_size; i++) {
int size;
@ -94,15 +92,28 @@ static void test_pixel_plot(int index, int debug) {
}
assert_equal(size, (int) strlen(data_buf), "i:%d bmp_pixel_plot size %d != strlen(data_buf) %d\n", i, size, (int) strlen(data_buf));
if (*data_buf > '9') {
symbol->symbology = BARCODE_ULTRA;
}
symbol->bitmap = (unsigned char *) data_buf;
ret = bmp_pixel_plot(symbol, (unsigned char *) data_buf);
assert_zero(ret, "i:%d bmp_pixel_plot ret %d != 0 (%s)\n", i, ret, symbol->errtxt);
assert_equal(ret, data[i].ret, "i:%d bmp_pixel_plot ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d identify %s ret %d != 0\n", i, symbol->outfile, ret);
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
if (ret < ZINT_ERROR) {
if (have_identify) {
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d identify %s ret %d != 0\n", i, symbol->outfile, ret);
}
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
}
} else {
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
(void) remove(symbol->outfile);
}
}
symbol->bitmap = NULL;
@ -116,6 +127,8 @@ static void test_print(int index, int generate, int debug) {
struct item {
int symbology;
int border_width;
int output_options;
int whitespace_width;
int whitespace_height;
int option_1;
@ -126,9 +139,10 @@ static void test_print(int index, int generate, int debug) {
char *expected_file;
};
struct item data[] = {
/* 0*/ { BARCODE_PDF417, 5, -1, -1, -1, "147AD0", "FC9630", "123", "pdf417_fg_bg.bmp" },
/* 1*/ { BARCODE_ULTRA, 5, -1, -1, -1, "147AD0", "FC9630", "123", "ultracode_fg_bg.bmp" },
/* 2*/ { BARCODE_PDF417COMP, 2, 2, -1, -1, "", "", "123", "pdf417comp_hvwsp2.bmp" },
/* 0*/ { BARCODE_PDF417, -1, -1, 5, -1, -1, -1, "147AD0", "FC9630", "123", "pdf417_fg_bg.bmp" },
/* 1*/ { BARCODE_ULTRA, -1, -1, 5, -1, -1, -1, "147AD0", "FC9630", "123", "ultracode_fg_bg.bmp" },
/* 2*/ { BARCODE_ULTRA, 1, BARCODE_BOX, 1, 1, -1, -1, "147AD0", "FC9630", "123", "ultracode_fg_bg_hvwsp1_box1.bmp" },
/* 3*/ { BARCODE_PDF417COMP, -1, -1, 2, 2, -1, -1, "", "", "123", "pdf417comp_hvwsp2.bmp" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -160,7 +174,10 @@ static void test_print(int index, int generate, int debug) {
symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n");
length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug);
length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug);
if (data[i].border_width != -1) {
symbol->border_width = data[i].border_width;
}
if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width;
}
@ -184,8 +201,9 @@ static void test_print(int index, int generate, int debug) {
assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i);
if (generate) {
printf(" /*%3d*/ { %s, %d, %d, %d, %d, \"%s\", \"%s\", \"%s\", \"%s\"},\n",
i, testUtilBarcodeName(data[i].symbology), data[i].whitespace_width, data[i].whitespace_height,
printf(" /*%3d*/ { %s, %d, %s, %d, %d, %d, %d, \"%s\", \"%s\", \"%s\", \"%s\"},\n",
i, testUtilBarcodeName(data[i].symbology), data[i].border_width, testUtilOutputOptionsName(data[i].output_options),
data[i].whitespace_width, data[i].whitespace_height,
data[i].option_1, data[i].option_2, data[i].fgcolour, data[i].bgcolour,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].expected_file);
ret = testUtilRename(symbol->outfile, expected_file);
@ -209,11 +227,37 @@ static void test_print(int index, int generate, int debug) {
testFinish();
}
static void test_outfile(void) {
int ret;
struct zint_symbol symbol = {0};
unsigned char data[] = { "1" };
testStart("test_outfile");
symbol.symbology = BARCODE_CODE128;
symbol.bitmap = data;
symbol.bitmap_width = symbol.bitmap_height = 1;
strcpy(symbol.outfile, "nosuch_dir/out.bmp");
ret = bmp_pixel_plot(&symbol, data);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "bmp_pixel_plot ret %d != ZINT_ERROR_FILE_ACCESS (%d) (%s)\n", ret, ZINT_ERROR_FILE_ACCESS, symbol.errtxt);
symbol.output_options |= BARCODE_STDOUT;
ret = bmp_pixel_plot(&symbol, data);
printf(" - ignore (BMP to stdout)\n"); fflush(stdout);
assert_zero(ret, "bmp_pixel_plot ret %d != 0 (%s)\n", ret, symbol.errtxt);
testFinish();
}
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_pixel_plot", test_pixel_plot, 1, 0, 1 },
{ "test_print", test_print, 1, 1, 1 },
{ "test_outfile", test_outfile, 0, 0, 0 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -55,40 +55,45 @@ static void test_input(int index, int debug) {
/* 10*/ { 3, "000", 0, 1, 19, },
/* 11*/ { 3, "001", 0, 1, 19, },
/* 12*/ { 3, "026", 0, 1, 19, },
/* 13*/ { -1, "026", 0, 1, 23, }, // Defaults to channel 4 due to length
/* 14*/ { 3, "0026", 0, 1, 19, },
/* 15*/ { 3, "1234", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 16*/ { 4, "000", 0, 1, 23 },
/* 17*/ { -1, "000", 0, 1, 23 }, // Defaults to channel 4 due to length
/* 18*/ { 4, "026", 0, 1, 23 },
/* 19*/ { 4, "0000026", 0, 1, 23 },
/* 20*/ { 4, "0000", 0, 1, 23 },
/* 21*/ { 4, "292", 0, 1, 23 },
/* 22*/ { 4, "293", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 23*/ { 5, "0000", 0, 1, 27 },
/* 24*/ { -1, "0000", 0, 1, 27 }, // Defaults to channel 5 due to length
/* 25*/ { -1, "3493", 0, 1, 27 },
/* 26*/ { 5, "3493", 0, 1, 27 },
/* 27*/ { 5, "3494", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 28*/ { 6, "00000", 0, 1, 31 },
/* 29*/ { -1, "00000", 0, 1, 31 }, // Defaults to channel 5 due to length
/* 30*/ { -1, "44072", 0, 1, 31 },
/* 31*/ { 6, "44072", 0, 1, 31 },
/* 32*/ { 6, "44073", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 33*/ { -1, "576688", 0, 1, 35 },
/* 34*/ { 7, "000000", 0, 1, 35 },
/* 35*/ { -1, "000000", 0, 1, 35 }, // Defaults to channel 7 due to length
/* 36*/ { 7, "576688", 0, 1, 35 },
/* 37*/ { 7, "576689", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 38*/ { 7, "0576688", 0, 1, 35 },
/* 39*/ { -1, "1234567", 0, 1, 39 },
/* 40*/ { 8, "0000000", 0, 1, 39, },
/* 41*/ { -1, "0000000", 0, 1, 39, }, // Defaults to channel 8 due to length
/* 42*/ { 8, "1234567", 0, 1, 39, },
/* 43*/ { 8, "7742863", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 44*/ { 8, "01234567", ZINT_ERROR_TOO_LONG, -1, -1 },
/* 45*/ { 8, "00000000", ZINT_ERROR_TOO_LONG, -1, -1 },
/* 46*/ { 9, "7742863", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 13*/ { -1, "27", 0, 1, 23 }, // Channel 4
/* 14*/ { -1, "026", 0, 1, 23, }, // Defaults to channel 4 due to length
/* 15*/ { 3, "0026", 0, 1, 19, },
/* 16*/ { 3, "1234", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 17*/ { 4, "000", 0, 1, 23 },
/* 18*/ { -1, "000", 0, 1, 23 }, // Defaults to channel 4 due to length
/* 19*/ { 4, "026", 0, 1, 23 },
/* 20*/ { 4, "0000026", 0, 1, 23 },
/* 21*/ { 4, "0000", 0, 1, 23 },
/* 22*/ { 4, "292", 0, 1, 23 },
/* 23*/ { 4, "293", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 24*/ { -1, "293", 0, 1, 27 }, // Channel 5
/* 25*/ { 5, "0000", 0, 1, 27 },
/* 26*/ { -1, "0000", 0, 1, 27 }, // Defaults to channel 5 due to length
/* 27*/ { -1, "3493", 0, 1, 27 },
/* 28*/ { 5, "3493", 0, 1, 27 },
/* 29*/ { 5, "3494", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 30*/ { -1, "3494", 0, 1, 31 }, // Channel 6
/* 31*/ { 6, "00000", 0, 1, 31 },
/* 32*/ { -1, "00000", 0, 1, 31 }, // Defaults to channel 5 due to length
/* 33*/ { -1, "44072", 0, 1, 31 },
/* 34*/ { 6, "44072", 0, 1, 31 },
/* 35*/ { 6, "44073", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 36*/ { -1, "44073", 0, 1, 35 }, // Channel 7
/* 37*/ { 7, "000000", 0, 1, 35 },
/* 38*/ { -1, "000000", 0, 1, 35 }, // Defaults to channel 7 due to length
/* 39*/ { 7, "576688", 0, 1, 35 },
/* 40*/ { 7, "576689", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 41*/ { 7, "0576688", 0, 1, 35 },
/* 42*/ { -1, "1234567", 0, 1, 39 },
/* 43*/ { -1, "576689", 0, 1, 39 }, // Channel 8
/* 44*/ { 8, "0000000", 0, 1, 39, },
/* 45*/ { -1, "0000000", 0, 1, 39, }, // Defaults to channel 8 due to length
/* 46*/ { 8, "1234567", 0, 1, 39, },
/* 47*/ { 8, "7742863", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 48*/ { 8, "01234567", ZINT_ERROR_TOO_LONG, -1, -1 },
/* 49*/ { 8, "00000000", ZINT_ERROR_TOO_LONG, -1, -1 },
/* 50*/ { 9, "7742863", ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 51*/ { -1, "A", ZINT_ERROR_INVALID_DATA, -1, -1 },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;

View File

@ -116,21 +116,21 @@ static void test_hrt(int index, int debug) {
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { BARCODE_CODE11, -1, "123-45", -1, "123-4552" }, // 2 checksums
/* 1*/ { BARCODE_CODE11, 1, "123-45", -1, "123-455" }, // 1 checksum
/* 1*/ { BARCODE_CODE11, 1, "123-45", -1, "123-455" }, // 1 check digit
/* 2*/ { BARCODE_CODE11, 2, "123-45", -1, "123-45" }, // No checksums
/* 3*/ { BARCODE_CODE11, -1, "123456789012", -1, "123456789012-8" }, // First checksum 10 (A) goes to hyphen
/* 3*/ { BARCODE_CODE11, -1, "123456789012", -1, "123456789012-8" }, // First check digit 10 (A) goes to hyphen
/* 4*/ { BARCODE_CODE39, -1, "ABC1234", -1, "*ABC1234*" },
/* 5*/ { BARCODE_CODE39, -1, "abc1234", -1, "*ABC1234*" }, // Converts to upper
/* 6*/ { BARCODE_CODE39, -1, "123456789", -1, "*123456789*" },
/* 7*/ { BARCODE_CODE39, 1, "123456789", -1, "*1234567892*" }, // With checksum
/* 7*/ { BARCODE_CODE39, 1, "123456789", -1, "*1234567892*" }, // With check digit
/* 8*/ { BARCODE_EXCODE39, -1, "ABC1234", -1, "ABC1234" },
/* 9*/ { BARCODE_EXCODE39, -1, "abc1234", -1, "abc1234" },
/* 10*/ { BARCODE_EXCODE39, 1, "abc1234", -1, "abc1234" }, // With checksum (not displayed)
/* 10*/ { BARCODE_EXCODE39, 1, "abc1234", -1, "abc1234" }, // With check digit (not displayed)
/* 11*/ { BARCODE_EXCODE39, -1, "a%\000\001$\177z\033\037!+/\\@A~", 16, "a% $ z !+/\\@A~" }, // NUL, ctrls and DEL replaced with spaces
/* 12*/ { BARCODE_LOGMARS, -1, "ABC1234", -1, "ABC1234" },
/* 13*/ { BARCODE_LOGMARS, -1, "abc1234", -1, "ABC1234" }, // Converts to upper
/* 14*/ { BARCODE_LOGMARS, 1, "abc1234", -1, "ABC12340" }, // With checksum
/* 15*/ { BARCODE_LOGMARS, 1, "12345/ABCDE", -1, "12345/ABCDET" }, // With checksum
/* 14*/ { BARCODE_LOGMARS, 1, "abc1234", -1, "ABC12340" }, // With check digit
/* 15*/ { BARCODE_LOGMARS, 1, "12345/ABCDE", -1, "12345/ABCDET" }, // With check digit
/* 16*/ { BARCODE_CODE93, -1, "ABC1234", -1, "ABC1234S5" }, // 2 checksums added (note check digits not shown by bwipp or tec-it)
/* 17*/ { BARCODE_CODE93, -1, "abc1234", -1, "abc1234ZG" },
/* 18*/ { BARCODE_CODE93, -1, "A\001a\000b\177d\037e", 9, "A a b d e1R" }, // NUL, ctrls and DEL replaced with spaces
@ -184,33 +184,37 @@ static void test_input(int index, int debug) {
struct item data[] = {
/* 0*/ { BARCODE_CODE11, -1, "-", -1, 0, 1, 37 },
/* 1*/ { BARCODE_CODE11, -1, "A", -1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 2*/ { BARCODE_CODE39, -1, "a", -1, 0, 1, 38 }, // Converts to upper
/* 3*/ { BARCODE_CODE39, -1, ",", 1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 4*/ { BARCODE_CODE39, -1, "\000", 1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 5*/ { BARCODE_EXCODE39, -1, "A", -1, 0, 1, 38 },
/* 6*/ { BARCODE_EXCODE39, -1, "a", -1, 0, 1, 51 },
/* 7*/ { BARCODE_EXCODE39, -1, ",", -1, 0, 1, 51 },
/* 8*/ { BARCODE_EXCODE39, -1, "\000", 1, 0, 1, 51 },
/* 9*/ { BARCODE_EXCODE39, -1, "é", -1, ZINT_ERROR_INVALID_DATA, -1, -1, },
/* 10*/ { BARCODE_LOGMARS, -1, "A", -1, 0, 1, 47 },
/* 11*/ { BARCODE_LOGMARS, -1, "a", -1, 0, 1, 47 },
/* 12*/ { BARCODE_LOGMARS, -1, ",", -1, ZINT_ERROR_INVALID_DATA, -1, -1, },
/* 13*/ { BARCODE_LOGMARS, -1, "\000", 1, ZINT_ERROR_INVALID_DATA, -1, -1, },
/* 14*/ { BARCODE_CODE93, -1, "A", -1, 0, 1, 46 },
/* 15*/ { BARCODE_CODE93, -1, "a", -1, 0, 1, 55 },
/* 16*/ { BARCODE_CODE93, -1, ",", -1, 0, 1, 55 },
/* 17*/ { BARCODE_CODE93, -1, "\000", 1, 0, 1, 55 },
/* 18*/ { BARCODE_CODE93, -1, "é", -1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 19*/ { BARCODE_PZN, -1, "1", -1, 0, 1, 142 },
/* 20*/ { BARCODE_PZN, -1, "A", -1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 21*/ { BARCODE_PZN, -1, "1000006", -1, ZINT_ERROR_INVALID_DATA, -1, -1 }, // Check digit == 10 so can't be used
/* 22*/ { BARCODE_VIN, -1, "5GZCZ43D13S812715", -1, 0, 1, 246 },
/* 23*/ { BARCODE_VIN, -1, "5GZCZ43D23S812715", -1, ZINT_ERROR_INVALID_CHECK, -1, -1 }, // North American with invalid check character
/* 24*/ { BARCODE_VIN, -1, "WP0ZZZ99ZTS392124", -1, 0, 1, 246 }, // Not North American so no check
/* 25*/ { BARCODE_VIN, -1, "WPOZZZ99ZTS392124", -1, ZINT_ERROR_INVALID_DATA, -1, -1 }, // O not allowed
/* 26*/ { BARCODE_HIBC_39, -1, "a", -1, 0, 1, 79 }, // Converts to upper
/* 27*/ { BARCODE_HIBC_39, -1, ",", -1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 28*/ { BARCODE_HIBC_39, -1, "\000", 1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 2*/ { BARCODE_CODE11, 3, "1", -1, ZINT_ERROR_INVALID_OPTION, -1, -1 },
/* 3*/ { BARCODE_CODE39, -1, "a", -1, 0, 1, 38 }, // Converts to upper
/* 4*/ { BARCODE_CODE39, -1, ",", 1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 5*/ { BARCODE_CODE39, -1, "\000", 1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 6*/ { BARCODE_CODE39, 0, "1", -1, 0, 1, 38 },
/* 7*/ { BARCODE_CODE39, 1, "1", -1, 0, 1, 51 }, // Check digit
/* 8*/ { BARCODE_CODE39, 2, "1", -1, 0, 1, 38 }, // option_2 > 1 gnored
/* 9*/ { BARCODE_EXCODE39, -1, "A", -1, 0, 1, 38 },
/* 10*/ { BARCODE_EXCODE39, -1, "a", -1, 0, 1, 51 },
/* 11*/ { BARCODE_EXCODE39, -1, ",", -1, 0, 1, 51 },
/* 12*/ { BARCODE_EXCODE39, -1, "\000", 1, 0, 1, 51 },
/* 13*/ { BARCODE_EXCODE39, -1, "é", -1, ZINT_ERROR_INVALID_DATA, -1, -1, },
/* 14*/ { BARCODE_LOGMARS, -1, "A", -1, 0, 1, 47 },
/* 15*/ { BARCODE_LOGMARS, -1, "a", -1, 0, 1, 47 },
/* 16*/ { BARCODE_LOGMARS, -1, ",", -1, ZINT_ERROR_INVALID_DATA, -1, -1, },
/* 17*/ { BARCODE_LOGMARS, -1, "\000", 1, ZINT_ERROR_INVALID_DATA, -1, -1, },
/* 18*/ { BARCODE_CODE93, -1, "A", -1, 0, 1, 46 },
/* 19*/ { BARCODE_CODE93, -1, "a", -1, 0, 1, 55 },
/* 20*/ { BARCODE_CODE93, -1, ",", -1, 0, 1, 55 },
/* 21*/ { BARCODE_CODE93, -1, "\000", 1, 0, 1, 55 },
/* 22*/ { BARCODE_CODE93, -1, "é", -1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 23*/ { BARCODE_PZN, -1, "1", -1, 0, 1, 142 },
/* 24*/ { BARCODE_PZN, -1, "A", -1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 25*/ { BARCODE_PZN, -1, "1000006", -1, ZINT_ERROR_INVALID_DATA, -1, -1 }, // Check digit == 10 so can't be used
/* 26*/ { BARCODE_VIN, -1, "5GZCZ43D13S812715", -1, 0, 1, 246 },
/* 27*/ { BARCODE_VIN, -1, "5GZCZ43D23S812715", -1, ZINT_ERROR_INVALID_CHECK, -1, -1 }, // North American with invalid check character
/* 28*/ { BARCODE_VIN, -1, "WP0ZZZ99ZTS392124", -1, 0, 1, 246 }, // Not North American so no check
/* 29*/ { BARCODE_VIN, -1, "WPOZZZ99ZTS392124", -1, ZINT_ERROR_INVALID_DATA, -1, -1 }, // O not allowed
/* 30*/ { BARCODE_HIBC_39, -1, "a", -1, 0, 1, 79 }, // Converts to upper
/* 31*/ { BARCODE_HIBC_39, -1, ",", -1, ZINT_ERROR_INVALID_DATA, -1, -1 },
/* 32*/ { BARCODE_HIBC_39, -1, "\000", 1, ZINT_ERROR_INVALID_DATA, -1, -1 },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -259,79 +263,106 @@ static void test_encode(int index, int generate, int debug) {
/* 0*/ { BARCODE_CODE11, -1, "123-45", -1, 0, 1, 78, "2 check digits (52); verified manually against tec-it",
"101100101101011010010110110010101011010101101101101101011011010100101101011001"
},
/* 1*/ { BARCODE_CODE11, 1, "123-455", -1, 0, 1, 78, "1 check digit (2); verified manually against tec-it",
/* 1*/ { BARCODE_CODE11, -1, "93", -1, 0, 1, 44, "2 check digits (--); verified manually against tec-it",
"10110010110101011001010101101010110101011001"
},
/* 2*/ { BARCODE_CODE11, 1, "123-455", -1, 0, 1, 78, "1 check digit (2); verified manually against tec-it",
"101100101101011010010110110010101011010101101101101101011011010100101101011001"
},
/* 2*/ { BARCODE_CODE11, 2, "123-4552", -1, 0, 1, 78, "0 check digits; verified manually against tec-it",
/* 3*/ { BARCODE_CODE11, 2, "123-4552", -1, 0, 1, 78, "0 check digits; verified manually against tec-it",
"101100101101011010010110110010101011010101101101101101011011010100101101011001"
},
/* 3*/ { BARCODE_CODE11, 1, "123-45", -1, 0, 1, 70, "1 check digit; verified manually against tec-it",
/* 4*/ { BARCODE_CODE11, 1, "123-45", -1, 0, 1, 70, "1 check digit; verified manually against tec-it",
"1011001011010110100101101100101010110101011011011011010110110101011001"
},
/* 4*/ { BARCODE_CODE11, 2, "123-45", -1, 0, 1, 62, "0 check digits; verified manually against tec-it",
/* 5*/ { BARCODE_CODE11, 2, "123-45", -1, 0, 1, 62, "0 check digits; verified manually against tec-it",
"10110010110101101001011011001010101101010110110110110101011001"
},
/* 5*/ { BARCODE_CODE39, -1, "1A", -1, 0, 1, 51, "ISO/IEC 16388:2007 Figure 1",
/* 6*/ { BARCODE_CODE39, -1, "1A", -1, 0, 1, 51, "ISO/IEC 16388:2007 Figure 1",
"100101101101011010010101101101010010110100101101101"
},
/* 6*/ { BARCODE_CODE39, 1, "1A", -1, 0, 1, 64, "With checksum",
/* 7*/ { BARCODE_CODE39, 1, "1A", -1, 0, 1, 64, "With check digit (B)",
"1001011011010110100101011011010100101101011010010110100101101101"
},
/* 7*/ { BARCODE_CODE39, -1, "+A/E%U$A/D%T+Z", -1, 0, 1, 207, "Same as BARCODE_EXCODE39 'a%\000\001$\177z' below",
/* 8*/ { BARCODE_CODE39, 1, "Z1", -1, 0, 1, 64, "Check digit '-'",
"1001011011010100110110101011010010101101001010110110100101101101"
},
/* 9*/ { BARCODE_CODE39, 1, "Z2", -1, 0, 1, 64, "Check digit '.'",
"1001011011010100110110101010110010101101100101011010100101101101"
},
/* 10*/ { BARCODE_CODE39, 1, "Z3", -1, 0, 1, 64, "Check digit space, displayed as underscore",
"1001011011010100110110101011011001010101001101011010100101101101"
},
/* 11*/ { BARCODE_CODE39, 1, "Z4", -1, 0, 1, 64, "Check digit '$'",
"1001011011010100110110101010100110101101001001001010100101101101"
},
/* 12*/ { BARCODE_CODE39, 1, "Z5", -1, 0, 1, 64, "Check digit '/'",
"1001011011010100110110101011010011010101001001010010100101101101"
},
/* 13*/ { BARCODE_CODE39, 1, "Z6", -1, 0, 1, 64, "Check digit '+'",
"1001011011010100110110101010110011010101001010010010100101101101"
},
/* 14*/ { BARCODE_CODE39, 1, "Z7", -1, 0, 1, 64, "Check digit '%'",
"1001011011010100110110101010100101101101010010010010100101101101"
},
/* 15*/ { BARCODE_CODE39, -1, "+A/E%U$A/D%T+Z", -1, 0, 1, 207, "Same as BARCODE_EXCODE39 'a%\000\001$\177z' below",
"100101101101010010100100101101010010110100100101001011010110010101010010010010110010101011010010010010101101010010110100100101001010101100101101010010010010101011011001010010100100101001101101010100101101101"
},
/* 8*/ { BARCODE_EXCODE39, -1, "1A", -1, 0, 1, 51, "ISO/IEC 16388:2007 Figure 1",
/* 16*/ { BARCODE_EXCODE39, -1, "1A", -1, 0, 1, 51, "ISO/IEC 16388:2007 Figure 1",
"100101101101011010010101101101010010110100101101101"
},
/* 9*/ { BARCODE_EXCODE39, 1, "1A", -1, 0, 1, 64, "With checksum",
/* 17*/ { BARCODE_EXCODE39, 1, "1A", -1, 0, 1, 64, "With check digit",
"1001011011010110100101011011010100101101011010010110100101101101"
},
/* 10*/ { BARCODE_EXCODE39, -1, "a%\000\001$\177z", 7, 0, 1, 207, "Verified manually against tec-it",
/* 18*/ { BARCODE_EXCODE39, 1, "Z4", -1, 0, 1, 64, "Check digit $",
"1001011011010100110110101010100110101101001001001010100101101101"
},
/* 19*/ { BARCODE_EXCODE39, -1, "a%\000\001$\177z", 7, 0, 1, 207, "Verified manually against tec-it",
"100101101101010010100100101101010010110100100101001011010110010101010010010010110010101011010010010010101101010010110100100101001010101100101101010010010010101011011001010010100100101001101101010100101101101"
},
/* 11*/ { BARCODE_EXCODE39, -1, "\033\037!+/\\@A~", -1, 0, 1, 246, "Verified manually against tec-it",
/* 20*/ { BARCODE_EXCODE39, -1, "\033\037!+/\\@A~", -1, 0, 1, 246, "Verified manually against tec-it",
"100101101101010100100100101101010010110101001001001011010110010101001001010010110101001011010010010100101101010100110100100101001011010110100101010010010010101101010011010100100100101001101010110110101001011010100100100101011010110010100101101101"
},
/* 12*/ { BARCODE_LOGMARS, -1, "1A", -1, 0, 1, 63, "Verified manually against tec-it",
/* 21*/ { BARCODE_LOGMARS, -1, "1A", -1, 0, 1, 63, "Verified manually against tec-it",
"100010111011101011101000101011101110101000101110100010111011101"
},
/* 13*/ { BARCODE_LOGMARS, 1, "1A", -1, 0, 1, 79, "With checksum; verified manually against tec-it",
/* 22*/ { BARCODE_LOGMARS, 1, "1A", -1, 0, 1, 79, "With check digit; verified manually against tec-it",
"1000101110111010111010001010111011101010001011101011101000101110100010111011101"
},
/* 14*/ { BARCODE_LOGMARS, -1, "ABC", -1, 0, 1, 79, "MIL-STD-1189 Rev. B Figure 1",
/* 23*/ { BARCODE_LOGMARS, -1, "ABC", -1, 0, 1, 79, "MIL-STD-1189 Rev. B Figure 1",
"1000101110111010111010100010111010111010001011101110111010001010100010111011101"
},
/* 15*/ { BARCODE_LOGMARS, -1, "SAMPLE 1", -1, 0, 1, 159, "MIL-STD-1189 Rev. B Figure 2 top",
/* 24*/ { BARCODE_LOGMARS, -1, "SAMPLE 1", -1, 0, 1, 159, "MIL-STD-1189 Rev. B Figure 2 top",
"100010111011101010111010111000101110101000101110111011101010001010111011101000101011101010001110111010111000101010001110101110101110100010101110100010111011101"
},
/* 16*/ { BARCODE_LOGMARS, 1, "12345/ABCDE", -1, 0, 1, 223, "MIL-STD-1189 Rev. B Section 6.2.1 check character example; verified manually against tec-it",
/* 25*/ { BARCODE_LOGMARS, 1, "12345/ABCDE", -1, 0, 1, 223, "MIL-STD-1189 Rev. B Section 6.2.1 check character example; verified manually against tec-it",
"1000101110111010111010001010111010111000101011101110111000101010101000111010111011101000111010101000100010100010111010100010111010111010001011101110111010001010101011100010111011101011100010101010111011100010100010111011101"
},
/* 17*/ { BARCODE_CODE93, -1, "1A", -1, 0, 1, 55, "Verified manually against tec-it",
/* 26*/ { BARCODE_CODE93, -1, "1A", -1, 0, 1, 55, "Verified manually against tec-it",
"1010111101010010001101010001101000101001110101010111101"
},
/* 18*/ { BARCODE_CODE93, -1, "TEST93", -1, 0, 1, 91, "Verified manually against tec-it",
/* 27*/ { BARCODE_CODE93, -1, "TEST93", -1, 0, 1, 91, "Verified manually against tec-it",
"1010111101101001101100100101101011001101001101000010101010000101011101101001000101010111101"
},
/* 19*/ { BARCODE_CODE93, -1, "\000a\177", 3, 0, 1, 91, "Verified manually against tec-it",
/* 28*/ { BARCODE_CODE93, -1, "\000a\177", 3, 0, 1, 91, "Verified manually against tec-it",
"1010111101110110101100101101001100101101010001110110101101001101011011101010010001010111101"
},
/* 20*/ { BARCODE_PZN, -1, "1234567", -1, 0, 1, 142, "Example from IFA Info Code 39 EN V2.1; verified manually against tec-it",
/* 29*/ { BARCODE_PZN, -1, "1234567", -1, 0, 1, 142, "Example from IFA Info Code 39 EN V2.1; verified manually against tec-it",
"1001011011010100101011011011010010101101011001010110110110010101010100110101101101001101010101100110101010100101101101101001011010100101101101"
},
/* 21*/ { BARCODE_PZN, -1, "2758089", -1, 0, 1, 142, "Example from IFA Info Check Digit Calculations EN 15 July 2019; verified manually against tec-it",
/* 30*/ { BARCODE_PZN, -1, "2758089", -1, 0, 1, 142, "Example from IFA Info Check Digit Calculations EN 15 July 2019; verified manually against tec-it",
"1001011011010100101011011010110010101101010010110110110100110101011010010110101010011011010110100101101010110010110101011001011010100101101101"
},
/* 22*/ { BARCODE_VIN, -1, "1FTCR10UXTPA78180", -1, 0, 1, 246, "https://www.vinquery.com/img/vinbarcode/vinbarcode4.jpg",
/* 31*/ { BARCODE_VIN, -1, "1FTCR10UXTPA78180", -1, 0, 1, 246, "https://www.vinquery.com/img/vinbarcode/vinbarcode4.jpg",
"100101101101011010010101101011011001010101011011001011011010010101101010110010110100101011010100110110101100101010110100101101011010101101100101011011010010110101001011010100101101101101001011010110100101011011010010110101010011011010100101101101"
},
/* 23*/ { BARCODE_VIN, 1, "2FTPX28L0XCA15511", -1, 0, 1, 259, "With Import 'I' prefix; https://www.vinquery.com/img/vinbarcode/vinbarcode1.jpg",
/* 32*/ { BARCODE_VIN, 1, "2FTPX28L0XCA15511", -1, 0, 1, 259, "With Import 'I' prefix; https://www.vinquery.com/img/vinbarcode/vinbarcode1.jpg",
"1001011011010101101001101010110010101101011011001010101011011001010110110100101001011010110101100101011011010010110101011010100110101001101101010010110101101101101001010110101001011011010010101101101001101010110100110101011010010101101101001010110100101101101"
},
/* 24*/ { BARCODE_HIBC_39, -1, "A123BJC5D6E71", -1, 0, 1, 271, "ANSI/HIBC 2.6 - 2016 Figure 2, same",
/* 33*/ { BARCODE_HIBC_39, -1, "A123BJC5D6E71", -1, 0, 1, 271, "ANSI/HIBC 2.6 - 2016 Figure 2, same",
"1000101110111010100010100010001011101010001011101110100010101110101110001010111011101110001010101011101000101110101011100011101011101110100010101110100011101010101011100010111010111000111010101110101110001010101000101110111011101000101011101010100011101110100010111011101"
},
/* 25*/ { BARCODE_HIBC_39, -1, "$$52001510X3G", -1, 0, 1, 271, "ANSI/HIBC 2.6 - 2016 Figure 6, same",
/* 34*/ { BARCODE_HIBC_39, -1, "$$52001510X3G", -1, 0, 1, 271, "ANSI/HIBC 2.6 - 2016 Figure 6, same",
"1000101110111010100010100010001010001000100010101000100010001010111010001110101010111000101011101010001110111010101000111011101011101000101011101110100011101010111010001010111010100011101110101000101110101110111011100010101010101000111011101010111000101110100010111011101"
},
};

View File

@ -47,22 +47,24 @@ static void test_large(int index, int debug) {
struct item data[] = {
/* 0*/ { BARCODE_CODE128, "A", 60, 0, 695 },
/* 1*/ { BARCODE_CODE128, "A", 61, ZINT_ERROR_TOO_LONG, -1 },
/* 2*/ { BARCODE_CODE128, "\351A", 40, 0, 695 },
/* 3*/ { BARCODE_CODE128, "\351A", 41, ZINT_ERROR_TOO_LONG, -1 }, // 41 chars (+ 20 shifts)
/* 4*/ { BARCODE_CODE128, "0", 120, 0, 695 },
/* 5*/ { BARCODE_CODE128, "0", 121, ZINT_ERROR_TOO_LONG, -1 },
/* 6*/ { BARCODE_CODE128B, "A", 60, 0, 695 },
/* 7*/ { BARCODE_CODE128B, "A", 61, ZINT_ERROR_TOO_LONG, -1 },
/* 8*/ { BARCODE_CODE128B, "0", 60, 0, 695 },
/* 9*/ { BARCODE_CODE128B, "0", 61, ZINT_ERROR_TOO_LONG, -1 },
/* 10*/ { BARCODE_GS1_128, "[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234567890[92]1234567890", -1, 0, 706 }, // 116 nos + 3 FNC1s
/* 11*/ { BARCODE_GS1_128, "[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234567890[92]1234[93]1234", -1, ZINT_ERROR_TOO_LONG, -1 }, // 116 nos + 4 FNC1s
/* 12*/ { BARCODE_EAN14, "1234567890123", -1, 0, 134 },
/* 13*/ { BARCODE_EAN14, "12345678901234", -1, ZINT_ERROR_TOO_LONG, -1 },
/* 14*/ { BARCODE_NVE18, "12345678901234567", -1, 0, 156 },
/* 15*/ { BARCODE_NVE18, "123456789012345678", -1, ZINT_ERROR_TOO_LONG, -1 },
/* 16*/ { BARCODE_HIBC_128, "1", 110, 0, 684 },
/* 17*/ { BARCODE_HIBC_128, "1", 111, ZINT_ERROR_TOO_LONG, -1 },
/* 2*/ { BARCODE_CODE128, "A", 161, ZINT_ERROR_TOO_LONG, -1 },
/* 3*/ { BARCODE_CODE128, "\351A", 40, 0, 695 },
/* 4*/ { BARCODE_CODE128, "\351A", 41, ZINT_ERROR_TOO_LONG, -1 }, // 41 chars (+ 20 shifts)
/* 5*/ { BARCODE_CODE128, "0", 120, 0, 695 },
/* 6*/ { BARCODE_CODE128, "0", 121, ZINT_ERROR_TOO_LONG, -1 },
/* 7*/ { BARCODE_CODE128B, "A", 60, 0, 695 },
/* 8*/ { BARCODE_CODE128B, "A", 61, ZINT_ERROR_TOO_LONG, -1 },
/* 9*/ { BARCODE_CODE128B, "0", 60, 0, 695 },
/* 10*/ { BARCODE_CODE128B, "0", 61, ZINT_ERROR_TOO_LONG, -1 },
/* 11*/ { BARCODE_GS1_128, "[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234567890[92]1234567890", -1, 0, 706 }, // 116 nos + 3 FNC1s
/* 12*/ { BARCODE_GS1_128, "[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890123456789012345678901234567890[92]1234[93]1234", -1, ZINT_ERROR_TOO_LONG, -1 }, // 116 nos + 4 FNC1s
/* 13*/ { BARCODE_GS1_128, "A", 161, ZINT_ERROR_TOO_LONG, -1 },
/* 14*/ { BARCODE_EAN14, "1234567890123", -1, 0, 134 },
/* 15*/ { BARCODE_EAN14, "12345678901234", -1, ZINT_ERROR_TOO_LONG, -1 },
/* 16*/ { BARCODE_NVE18, "12345678901234567", -1, 0, 156 },
/* 17*/ { BARCODE_NVE18, "123456789012345678", -1, ZINT_ERROR_TOO_LONG, -1 },
/* 18*/ { BARCODE_HIBC_128, "1", 110, 0, 684 },
/* 19*/ { BARCODE_HIBC_128, "1", 111, ZINT_ERROR_TOO_LONG, -1 },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -113,6 +115,7 @@ static void test_hrt_cpy_iso8859_1(int index, int debug) {
char *comment;
};
// NBSP U+00A0 (\240, 160), UTF-8 C2A0 (\302\240)
// ¡ U+00A1 (\241, 161), UTF-8 C2A1 (\302\241)
// é U+00E9 (\351, 233), UTF-8 C3A9
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
@ -123,13 +126,21 @@ static void test_hrt_cpy_iso8859_1(int index, int debug) {
/* 4*/ { "\241\242\243\244\257\260", -1, 12, "¡¢£¤¯°", "" },
/* 5*/ { "\276\277\300\337\377", -1, 10, "¾¿Àßÿ", "" },
/* 6*/ { "\351", -1, 2, "é", "" },
/* 7*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "126 \351" },
/* 8*/ { "a\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 127, "aééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "a + 126 \351" },
/* 9*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351a", -1, 127, "éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééa", "126 \351 + a" },
/* 10*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "127 \351 (truncated)" },
/* 11*/ { "a\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 127, "aééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "a + 127 \351 (truncated)" },
/* 12*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351a", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "127 \351 + a (truncated)" },
/* 13*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "128 \351 (truncated)" },
/* 7*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 126, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "63 \241" },
/* 8*/ { "a\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 127, "a¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "a + 63 \241" },
/* 9*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241a", -1, 127, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a", "63 \241 + a" },
/* 10*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 126, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "64 \241 (truncated)" },
/* 11*/ { "a\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 127, "a¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "a + 64 \241 (truncated)" },
/* 12*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241a", -1, 126, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "64 \241 + a (truncated)" },
/* 13*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 126, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "65 \241 (truncated)" },
/* 14*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "63 \351" },
/* 15*/ { "a\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 127, "aééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "a + 63 \351" },
/* 16*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351a", -1, 127, "éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééa", "63 \351 + a" },
/* 17*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "64 \351 (truncated)" },
/* 18*/ { "a\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 127, "aééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "a + 64 \351 (truncated)" },
/* 19*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351a", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "64 \351 + a (truncated)" },
/* 20*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "65 \351 (truncated)" },
/* 21*/ { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", -1, 127, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "128 A (truncated)" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -148,8 +159,10 @@ static void test_hrt_cpy_iso8859_1(int index, int debug) {
length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length;
ret = hrt_cpy_iso8859_1(&symbol, (unsigned char *) data[i].data, length);
for (j = 0; j < ret; j++) {
//fprintf(stderr, "symbol.text[%d] %2X\n", j, symbol.text[j]);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) {
for (j = 0; j < ret; j++) {
fprintf(stderr, "symbol.text[%d] %2X\n", j, symbol.text[j]);
}
}
assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret);
assert_equal(ret, (int) ustrlen(symbol.text), "i:%d ret %d != strlen %d\n", i, ret, (int) ustrlen(symbol.text));
@ -328,6 +341,7 @@ static void test_input(int index, int generate, int debug) {
/* 31*/ { UNICODE_MODE, "aééééébcdeéé", -1, 0, 233, "(21) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 100 73 19 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é (2)" },
/* 32*/ { UNICODE_MODE, "aééééébcdeééé", -1, 0, 244, "(22) 104 65 100 100 73 73 73 73 73 100 66 100 67 100 68 100 69 73 73 73 83 106", "StartB a Latch é (5) Shift b Shift c Shift d Shift e é (3)" },
/* 33*/ { UNICODE_MODE, "aééééébcdefééé", -1, 0, 255, "(23) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 70 100 100 73 73 73 67 106", "StartB a Latch é (5) Unlatch b c d e f Latch é (3)" },
/* 34*/ { DATA_MODE, "\200\200\200\200\200\101\060\060\060\060\101\200", -1, 0, 222, "(20) 103 101 101 64 64 64 64 64 101 101 33 99 0 0 101 33 101 64 73 106", "StartA Latch PAD (4) Unlatch A CodeC 00 00 CodeA A FNC4 PAD" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -499,6 +513,58 @@ static void test_hibc_input(int index, int generate, int debug) {
testFinish();
}
static void test_ean14_input(int index, int generate, int debug) {
struct item {
char *data;
int ret;
int expected_width;
char *expected;
char *comment;
};
struct item data[] = {
/* 0*/ { "12345678901234", ZINT_ERROR_TOO_LONG, -1, "Error 347: Input too long (13 character maximum)", "" },
/* 1*/ { "A", ZINT_ERROR_INVALID_DATA, -1, "Error 348: Invalid character in data (digits only)", "" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
struct zint_symbol *symbol;
char escaped[1024];
testStart("test_ean14_input");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n");
symbol->debug = ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt
length = testUtilSetSymbol(symbol, BARCODE_EAN14, UNICODE_MODE, -1 /*eci*/, -1 /*option_1*/, -1, -1, -1 /*output_options*/, data[i].data, -1, debug);
ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length);
assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
if (generate) {
printf(" /*%3d*/ { \"%s\", %s, %d, \"%s\", \"%s\" },\n",
i, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)),
testUtilErrorName(data[i].ret), symbol->width, symbol->errtxt, data[i].comment);
} else {
if (ret < ZINT_ERROR) {
assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data);
}
assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected);
}
ZBarcode_Delete(symbol);
}
testFinish();
}
static void test_dpd_input(int index, int generate, int debug) {
struct item {
@ -584,118 +650,124 @@ static void test_encode(int index, int generate, int debug) {
/* 3*/ { BARCODE_CODE128B, UNICODE_MODE, "1234567890", 0, 1, 145, 1, "",
"1101001000010011100110110011100101100101110011001001110110111001001100111010011101101110111010011001110010110010011101100101000110001100011101011"
},
/* 4*/ { BARCODE_GS1_128, GS1_MODE, "[8018]950110153123456781", 0, 1, 167, 1, "GGS Figure 2.5.2-1",
/* 4*/ { BARCODE_CODE128, DATA_MODE, "\101\102\103\104\105\106\200\200\200\200\200", 0, 1, 178, 1, "",
"1101000010010100011000100010110001000100011010110001000100011010001000110001011101011110111010111101010000110010100001100101000011001010000110010100001100110110110001100011101011"
},
/* 5*/ { BARCODE_GS1_128, GS1_MODE, "[8018]950110153123456781", 0, 1, 167, 1, "GGS Figure 2.5.2-1",
"11010011100111101011101010011110011001110010101111010001100110110011001000100101110011001101100011011101101110101110110001000010110010010111100101111001001100011101011"
},
/* 5*/ { BARCODE_GS1_128, GS1_MODE, "[415]5412345678908[3911]710125", 0, 1, 189, 1, "GGS Figure 2.6.6-1 top",
/* 6*/ { BARCODE_GS1_128, GS1_MODE, "[415]5412345678908[3911]710125", 0, 1, 189, 1, "GGS Figure 2.6.6-1 top",
"110100111001111010111011000100010111010001101100010001011101101110101110110001000010110011011011110100011001001101000100011000100100100110100001100110110011100101100100001001101100011101011"
},
/* 6*/ { BARCODE_GS1_128, GS1_MODE, "[12]010425[8020]ABC123", 0, 1, 189, 1, "GGS Figure 2.6.6-1 bottom",
/* 7*/ { BARCODE_GS1_128, GS1_MODE, "[12]010425[8020]ABC123", 0, 1, 189, 1, "GGS Figure 2.6.6-1 bottom",
"110100111001111010111010110011100110011011001001000110011100101100101001111001100100111010111101110101000110001000101100010001000110100111001101100111001011001011100110010111001100011101011"
},
/* 7*/ { BARCODE_GS1_128, GS1_MODE, "[253]950110153005812345678901", 0, 1, 211, 1, "GGS Figure 2.6.9-1",
/* 8*/ { BARCODE_GS1_128, GS1_MODE, "[253]950110153005812345678901", 0, 1, 211, 1, "GGS Figure 2.6.9-1",
"1101001110011110101110111001011001101000100011000101110110001001001100110110011011101110110110011001110110001010110011100100010110001110001011011000010100110111101101011110111010011100110101110110001100011101011"
},
/* 8*/ { BARCODE_GS1_128, GS1_MODE, "[253]950110153006567890543210987", 0, 1, 211, 1, "GGS Figure 2.6.9-2",
/* 9*/ { BARCODE_GS1_128, GS1_MODE, "[253]950110153006567890543210987", 0, 1, 211, 1, "GGS Figure 2.6.9-2",
"1101001110011110101110111001011001101000100011000101110110001001001100110110011011101110110110011001001011000010000101100110110111101000100110010110001110110111001001100100100011110010100101110011001100011101011"
},
/* 9*/ { BARCODE_GS1_128, GS1_MODE, "[253]95011015300657654321", 0, 1, 189, 1, "GGS Figure 2.6.9-3",
/* 10*/ { BARCODE_GS1_128, GS1_MODE, "[253]95011015300657654321", 0, 1, 189, 1, "GGS Figure 2.6.9-3",
"110100111001111010111011100101100110100010001100010111011000100100110011011001101110111011011001100100101100001100101000011101011000110001101101011110111010011100110111001001101100011101011"
},
/* 10*/ { BARCODE_GS1_128, GS1_MODE, "[253]9501101530065123456", 0, 1, 167, 1, "GGS Figure 2.6.9-4",
/* 11*/ { BARCODE_GS1_128, GS1_MODE, "[253]9501101530065123456", 0, 1, 167, 1, "GGS Figure 2.6.9-4",
"11010011100111101011101110010110011010001000110001011101100010010011001101100110111011101101100110010010110000101100111001000101100011100010110100011110101100011101011"
},
/* 11*/ { BARCODE_GS1_128, GS1_MODE, "[01]10857674002017[10]1152KMB", 0, 1, 211, 1, "GGS Figure 4.15.1-1",
/* 12*/ { BARCODE_GS1_128, GS1_MODE, "[01]10857674002017[10]1152KMB", 0, 1, 211, 1, "GGS Figure 4.15.1-1",
"1101001110011110101110110011011001100100010010011110010110010100001000011001011011001100110010011101001110011011001000100110001001001101110001010111101110101100011101011101100010001011000100111001101100011101011"
},
/* 12*/ { BARCODE_GS1_128, GS1_MODE, "[01]09501101530003", 0, 1, 134, 1, "GGS Figure 5.1-3",
/* 13*/ { BARCODE_GS1_128, GS1_MODE, "[01]09501101530003", 0, 1, 134, 1, "GGS Figure 5.1-3",
"11010011100111101011101100110110011001001000110001011101100010010011001101100110111011101101100110010010011000100110100001100011101011"
},
/* 13*/ { BARCODE_GS1_128, GS1_MODE, "[00]395123451234567895", 0, 1, 156, 1, "GGS Figure 5.4.2-1",
/* 14*/ { BARCODE_GS1_128, GS1_MODE, "[00]395123451234567895", 0, 1, 156, 1, "GGS Figure 5.4.2-1",
"110100111001111010111011011001100110100010001101110100011101101110101110110001011001110010001011000111000101101100001010010111101000101111000101100011101011"
},
/* 14*/ { BARCODE_GS1_128, GS1_MODE, "[00]006141411234567890", 0, 1, 156, 1, "GGS Figure 6.6.5-1. (and Figures 6.6.5-3 bottom, 6.6.5-4 bottom)",
/* 15*/ { BARCODE_GS1_128, GS1_MODE, "[00]006141411234567890", 0, 1, 156, 1, "GGS Figure 6.6.5-1. (and Figures 6.6.5-3 bottom, 6.6.5-4 bottom)",
"110100111001111010111011011001100110110011001100100001011000100010110001000101011001110010001011000111000101101100001010011011110110110110110001100011101011"
},
/* 15*/ { BARCODE_GS1_128, GS1_MODE, "[403]402621[401]950110153B01001", 0, 1, 266, 0, "GGS Figure 6.6.5-2 top **NOT SAME**, different encodation for zint, BWIPP & standard, same codeword count",
/* 16*/ { BARCODE_GS1_128, GS1_MODE, "[403]402621[401]950110153B01001", 0, 1, 266, 0, "GGS Figure 6.6.5-2 top **NOT SAME**, different encodation for zint, BWIPP & standard, same codeword count",
"11010011100111101011101100010100010001011000110011001101111000101010111101110100111001101011101111011110101110110001010001100101110011000101110110001001001100110110011011101110101111011101000101100010011101100101110111101100100010011001101100101001111001100011101011"
},
/* 16*/ { BARCODE_GS1_128, GS1_MODE, "[00]395011015300000011", 0, 1, 156, 1, "GGS Figure 6.6.5-2 bottom",
/* 17*/ { BARCODE_GS1_128, GS1_MODE, "[00]395011015300000011", 0, 1, 156, 1, "GGS Figure 6.6.5-2 bottom",
"110100111001111010111011011001100110100010001100010111011000100100110011011001101110111011011001100110110011001101100110011000100100100011101101100011101011"
},
/* 17*/ { BARCODE_GS1_128, GS1_MODE, "[420]45458", 0, 1, 90, 1, "GGS Figure 6.6.5-3 top",
/* 18*/ { BARCODE_GS1_128, GS1_MODE, "[420]45458", 0, 1, 90, 1, "GGS Figure 6.6.5-3 top",
"110100111001111010111010110111000100100011001110101100011101100010111100100101100011101011"
},
/* 18*/ { BARCODE_GS1_128, GS1_MODE, "[02]00614141000418[15]210228[10]451214[37]20", 0, 1, 255, 1, "GGS Figure 6.6.5-4 top",
/* 19*/ { BARCODE_GS1_128, GS1_MODE, "[02]00614141000418[15]210228[10]451214[37]20", 0, 1, 255, 1, "GGS Figure 6.6.5-4 top",
"110100111001111010111011001100110110110011001100100001011000100010110001000101101100110010010001100110011100101011100110011011100100110011001101110011010011001000100101110110001011001110010011001110111101011101000110100011001001110100011110101100011101011"
},
/* 19*/ { BARCODE_GS1_128, GS1_MODE, "[420]87109", 0, 1, 90, 1, "GGS Figure 6.6.5-5 top",
/* 20*/ { BARCODE_GS1_128, GS1_MODE, "[420]87109", 0, 1, 90, 1, "GGS Figure 6.6.5-5 top",
"110100111001111010111010110111000100011001001001101000011001001000111001001101100011101011"
},
/* 20*/ { BARCODE_GS1_128, GS1_MODE, "[90]1528", 0, 1, 79, 1, "GGS Figure 6.6.5-5 middle",
/* 21*/ { BARCODE_GS1_128, GS1_MODE, "[90]1528", 0, 1, 79, 1, "GGS Figure 6.6.5-5 middle",
"1101001110011110101110110111101101011100110011100110100111001100101100011101011"
},
/* 21*/ { BARCODE_GS1_128, GS1_MODE, "[00]000521775138957172", 0, 1, 156, 1, "GGS Figure 6.6.5-5 bottom",
/* 22*/ { BARCODE_GS1_128, GS1_MODE, "[00]000521775138957172", 0, 1, 156, 1, "GGS Figure 6.6.5-5 bottom",
"110100111001111010111011011001100110110011001000100110011011100100111101110101101110100010001100010101111010001001101000010011000010110011011001100011101011"
},
/* 22*/ { BARCODE_GS1_128, GS1_MODE, "[00]395011010013000129", 0, 1, 156, 1, "GGS Figure 6.6.5-6",
"110100111001111010111011011001100110100010001100010111011000100100110011011001101100110010011011100110110011001100110110011100110010111101101101100011101011"
},
/* 23*/ { BARCODE_GS1_128, GS1_MODE, "[00]395011010013000129", 0, 1, 156, 1, "GGS Figure 6.6.5-6",
"110100111001111010111011011001100110100010001100010111011000100100110011011001101100110010011011100110110011001100110110011100110010111101101101100011101011"
},
/* 24*/ { BARCODE_GS1_128, GS1_MODE, "[401]931234518430GR", 0, 1, 167, 1, "GGS Figure 6.6.5-7 top",
/* 24*/ { BARCODE_GS1_128, GS1_MODE, "[00]395011010013000129", 0, 1, 156, 1, "GGS Figure 6.6.5-6",
"110100111001111010111011011001100110100010001100010111011000100100110011011001101100110010011011100110110011001100110110011100110010111101101101100011101011"
},
/* 25*/ { BARCODE_GS1_128, GS1_MODE, "[401]931234518430GR", 0, 1, 167, 1, "GGS Figure 6.6.5-7 top",
"11010011100111101011101100010100011001011100110110001101110110111010111011000110011100101011000111010111101110100111011001101000100011000101110100110111001100011101011"
},
/* 25*/ { BARCODE_GS1_128, GS1_MODE, "[00]093123450000000012", 0, 1, 156, 1, "GGS Figure 6.6.5-7 bottom",
/* 26*/ { BARCODE_GS1_128, GS1_MODE, "[00]093123450000000012", 0, 1, 156, 1, "GGS Figure 6.6.5-7 bottom",
"110100111001111010111011011001100110010010001101100011011101101110101110110001101100110011011001100110110011001101100110010110011100110111010001100011101011"
},
/* 26*/ { BARCODE_GS1_128, GS1_MODE, "[01]95012345678903", 0, 1, 134, 1, "GGS Figure 7.8.5.1-1 1st",
/* 27*/ { BARCODE_GS1_128, GS1_MODE, "[01]95012345678903", 0, 1, 134, 1, "GGS Figure 7.8.5.1-1 1st",
"11010011100111101011101100110110010111101000110011011001110110111010111011000100001011001101101111010010011000110110001101100011101011"
},
/* 27*/ { BARCODE_GS1_128, GS1_MODE, "[3102]000400", 0, 1, 101, 1, "GGS Figure 7.8.5.1-1 2nd",
/* 28*/ { BARCODE_GS1_128, GS1_MODE, "[3102]000400", 0, 1, 101, 1, "GGS Figure 7.8.5.1-1 2nd",
"11010011100111101011101101100011011001100110110110011001001000110011011001100110110111101100011101011"
},
/* 28*/ { BARCODE_GS1_128, GS1_MODE, "[01]95012345678903[3102]000400", 0, 1, 189, 1, "GGS Figure 7.8.5.1-2",
/* 29*/ { BARCODE_GS1_128, GS1_MODE, "[01]95012345678903[3102]000400", 0, 1, 189, 1, "GGS Figure 7.8.5.1-2",
"110100111001111010111011001101100101111010001100110110011101101110101110110001000010110011011011110100100110001101100011011001100110110110011001001000110011011001100100100110001100011101011"
},
/* 29*/ { BARCODE_GS1_128, GS1_MODE, "[8005]000365", 0, 1, 101, 1, "GGS Figure 7.8.5.2-1 1st",
/* 30*/ { BARCODE_GS1_128, GS1_MODE, "[8005]000365", 0, 1, 101, 1, "GGS Figure 7.8.5.2-1 1st",
"11010011100111101011101010011110010001001100110110011001001001100010010110000100100001101100011101011"
},
/* 30*/ { BARCODE_GS1_128, GS1_MODE, "[10]123456", 0, 1, 90, 1, "GGS Figure 7.8.5.2-1 2nd",
/* 31*/ { BARCODE_GS1_128, GS1_MODE, "[10]123456", 0, 1, 90, 1, "GGS Figure 7.8.5.2-1 2nd",
"110100111001111010111011001000100101100111001000101100011100010110110010000101100011101011"
},
/* 31*/ { BARCODE_GS1_128, GS1_MODE, "[8005]000365[10]123456", 0, 1, 156, 1, "GGS Figure 7.8.5.2-2",
/* 32*/ { BARCODE_GS1_128, GS1_MODE, "[8005]000365[10]123456", 0, 1, 156, 1, "GGS Figure 7.8.5.2-2",
"110100111001111010111010100111100100010011001101100110010010011000100101100001111010111011001000100101100111001000101100011100010110101100001001100011101011"
},
/* 32*/ { BARCODE_GS1_128, GS1_MODE, "[403]27653113+99000900090010", 0, 1, 222, 1, "DHL Leitcode https://www.dhl.de/de/geschaeftskunden/paket/information/geschaeftskunden/abrechnung/leitcodierung.html",
/* 33*/ { BARCODE_GS1_128, GS1_MODE, "[403]27653113+99000900090010", 0, 1, 222, 1, "DHL Leitcode https://www.dhl.de/de/geschaeftskunden/paket/information/geschaeftskunden/abrechnung/leitcodierung.html",
"110100111001111010111011000101000110001101101100101000011011101110110001001001011110111011001011100110001001001011101111010111011110110110011001100100100011011001100110010010001101100110011001000100110001000101100011101011"
},
/* 33*/ { BARCODE_GS1_128, GS1_MODE, "[00]340433935039756615", 0, 1, 156, 1, "DHL Identcode https://www.dhl.de/de/geschaeftskunden/paket/information/geschaeftskunden/abrechnung/leitcodierung.html",
/* 34*/ { BARCODE_GS1_128, GS1_MODE, "[00]340433935039756615", 0, 1, 156, 1, "DHL Identcode https://www.dhl.de/de/geschaeftskunden/paket/information/geschaeftskunden/abrechnung/leitcodierung.html",
"110100111001111010111011011001100100010110001001000110010100011000101000111101100010111011010001000110000100101001000011010111001100100111001101100011101011"
},
/* 34*/ { BARCODE_EAN14, GS1_MODE, "4070071967072", 0, 1, 134, 1, "Verified manually against tec-it",
/* 35*/ { BARCODE_GS1_128, GS1_MODE, "[90]ABCDEfGHI", 0, 1, 167, 0, "Shift A; BWIPP different encodation, same codeword count",
"11010010000111101011101110010110010011101100101000110001000101100010001000110101100010001000110100010110000100110100010001100010100011000100010110010011101100011101011"
},
/* 36*/ { BARCODE_EAN14, GS1_MODE, "4070071967072", 0, 1, 134, 1, "Verified manually against tec-it",
"11010011100111101011101100110110011000101000101100001001001100010011001011100100001011001001100010011001001110110111001001100011101011"
},
/* 35*/ { BARCODE_NVE18, GS1_MODE, "40700000071967072", 0, 1, 156, 1, "Verified manually against tec-it",
/* 37*/ { BARCODE_NVE18, GS1_MODE, "40700000071967072", 0, 1, 156, 1, "Verified manually against tec-it",
"110100111001111010111011011001100110001010001011000010011011001100110110011001001100010011001011100100001011001001100010011001001110110111011101100011101011"
},
/* 36*/ { BARCODE_HIBC_128, UNICODE_MODE, "83278F8G9H0J2G", 0, 1, 211, 1, "ANSI/HIBC 2.6 - 2016 Section 4.1, not same, uses different encoding (eg begins StartA instead of StartB)",
/* 38*/ { BARCODE_HIBC_128, UNICODE_MODE, "83278F8G9H0J2G", 0, 1, 211, 1, "ANSI/HIBC 2.6 - 2016 Section 4.1, not same, uses different encoding (eg begins StartA instead of StartB)",
"1101001000011000100100111010011001011101111011000110110110000101001011110111010001100010111010011001101000100011100101100110001010001001110110010110111000110011100101101000100010001001100111101010001100011101011"
},
/* 37*/ { BARCODE_HIBC_128, UNICODE_MODE, "A123BJC5D6E71", 0, 1, 200, 1, "ANSI/HIBC 2.6 - 2016 Figure 1, same",
/* 39*/ { BARCODE_HIBC_128, UNICODE_MODE, "A123BJC5D6E71", 0, 1, 200, 1, "ANSI/HIBC 2.6 - 2016 Figure 1, same",
"11010010000110001001001010001100010011100110110011100101100101110010001011000101101110001000100011011011100100101100010001100111010010001101000111011011101001110011011010001000110001101101100011101011"
},
/* 38*/ { BARCODE_HIBC_128, UNICODE_MODE, "$$52001510X3G", 0, 1, 178, 1, "ANSI/HIBC 2.6 - 2016 Figure 5, same",
/* 40*/ { BARCODE_HIBC_128, UNICODE_MODE, "$$52001510X3G", 0, 1, 178, 1, "ANSI/HIBC 2.6 - 2016 Figure 5, same",
"1101001000011000100100100100011001001000110010111011110110111000101101100110010111001100110010001001011110111011100010110110010111001101000100010110001000100011110101100011101011"
},
/* 39*/ { BARCODE_DPD, UNICODE_MODE, "%000393206219912345678101040", 0, 1, 211, 1, "DPDAPPD 4.0.2 - Illustrations 2, 7, 8, same; NOTE: correct HRT given by Illustration 7 only",
/* 41*/ { BARCODE_DPD, UNICODE_MODE, "%000393206219912345678101040", 0, 1, 211, 1, "DPDAPPD 4.0.2 - Illustrations 2, 7, 8, same; NOTE: correct HRT given by Illustration 7 only",
"1101001000010001001100100111011001011101111011011001100110100010001100011011010011001000110111001001011101111010110011100100010110001110001011011000010100110010001001100100010011000101000101011110001100011101011"
},
/* 40*/ { BARCODE_DPD, UNICODE_MODE, "%007110601782532948375101276", 0, 1, 211, 1, "DPDAPPD 4.0.2 - Illustration 6 **NOT SAME** HRT incorrect, also uses CodeA and inefficient encoding; verified against tec-it",
/* 42*/ { BARCODE_DPD, UNICODE_MODE, "%007110601782532948375101276", 0, 1, 211, 1, "DPDAPPD 4.0.2 - Illustration 6 **NOT SAME** HRT incorrect, also uses CodeA and inefficient encoding; verified against tec-it",
"1101001000010001001100100111011001011101111010011000100110001001001001100100011001101100110000101001110010110011000110110100010111101011110010011000010010110010001001011001110011001010000100010111101100011101011"
},
/* 41*/ { BARCODE_DPD, UNICODE_MODE, "0123456789012345678901234567", 0, 1, 189, 1, "DPDAPPD 4.0.2 - Illustration 9, same (allowing for literal HRT)",
/* 43*/ { BARCODE_DPD, UNICODE_MODE, "0123456789012345678901234567", 0, 1, 189, 1, "DPDAPPD 4.0.2 - Illustration 9, same (allowing for literal HRT)",
"110100111001100110110011101101110101110110001000010110011011011110110011011001110110111010111011000100001011001101101111011001101100111011011101011101100010000101100101011110001100011101011"
},
};
@ -770,6 +842,7 @@ int main(int argc, char *argv[]) {
{ "test_input", test_input, 1, 1, 1 },
{ "test_ean128_input", test_ean128_input, 1, 1, 1 },
{ "test_hibc_input", test_hibc_input, 1, 1, 1 },
{ "test_ean14_input", test_ean14_input, 1, 1, 1 },
{ "test_dpd_input", test_dpd_input, 1, 1, 1 },
{ "test_encode", test_encode, 1, 1, 1 },
};

View File

@ -46,6 +46,7 @@ static void test_large(int index, int debug) {
/* 1*/ { "A", 78, ZINT_ERROR_TOO_LONG, -1, -1 },
/* 2*/ { "0", 154, 0, 16, 70 }, // BS EN 12323:2005 4.1 (l)
/* 3*/ { "0", 155, ZINT_ERROR_TOO_LONG, -1, -1 },
/* 4*/ { "0", 161, ZINT_ERROR_TOO_LONG, -1, -1 },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;

View File

@ -804,6 +804,184 @@ static void test_utf8_to_eci_ucs2be(void) {
}
};
static void test_utf8_to_eci_sjis(void) {
struct item {
int eci;
char *data;
int length;
int ret;
int expected_length;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 20, "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", 32, 0, 32 },
/* 1*/ { 20, " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\177", 95, 0, 95 + 1 }, // Backslash goes to 2 byte
/* 2*/ { 20, "~", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for tilde
/* 3*/ { 20, "\302\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+0080
/* 4*/ { 20, "\302\241", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+00A1 Inverted exclaimation mark
/* 5*/ { 20, "\302\245", -1, 0, 1 }, // U+00A5 Yen goes to backslash
/* 6*/ { 20, "\302\277", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+00BF Inverted question mark
/* 7*/ { 20, "\303\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+00C0 À
/* 8*/ { 20, "\303\251", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+00E9 é
/* 9*/ { 20, "\312\262", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+03B2 β
/* 10*/ { 20, "\342\272\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+2E80 CJK RADICAL REPEAT
/* 11*/ { 20, "\343\200\200", -1, 0, 2 }, // U+3000 IDEOGRAPHIC SPACE
/* 12*/ { 20, "\343\200\204", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+3004 JAPANESE INDUSTRIAL STANDARD SYMBOL
/* 13*/ { 20, "\343\201\201", -1, 0, 2 }, //U+3041 HIRAGANA LETTER SMALL A
/* 14*/ { 20, "\357\277\277", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+FFFF
/* 15*/ { 20, "\357\277\276", -1, ZINT_ERROR_INVALID_DATA, -1 }, // U+FFFE (reversed BOM) not allowed
/* 16*/ { 20, "\355\240\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // U+D800 surrogate not allowed
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
testStart("test_utf8_to_eci_sjis");
for (i = 0; i < data_size; i++) {
int out_length, eci_length;
char dest[1024];
length = data[i].length != -1 ? data[i].length : (int) strlen(data[i].data);
out_length = length;
eci_length = get_eci_length(data[i].eci, (const unsigned char *) data[i].data, length);
assert_nonzero(eci_length + 1 <= 1024, "i:%d eci_length %d + 1 > 1024\n", i, eci_length);
ret = utf8_to_eci(data[i].eci, (const unsigned char *) data[i].data, (unsigned char *) dest, &out_length);
assert_equal(ret, data[i].ret, "i:%d utf8_to_eci ret %d != %d\n", i, ret, data[i].ret);
if (ret == 0) {
assert_equal(out_length, data[i].expected_length, "i:%d length %d != %d\n", i, out_length, data[i].expected_length);
assert_nonzero(out_length <= eci_length, "i:%d out_length %d > eci_length %d\n", i, out_length, eci_length);
}
}
};
static void test_utf8_to_eci_big5(void) {
struct item {
int eci;
char *data;
int length;
int ret;
int expected_length;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 28, "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", 32, 0, 32 },
/* 1*/ { 28, " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\177", 96, 0, 96 },
/* 2*/ { 28, "\302\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+0080
/* 3*/ { 28, "\343\200\200", -1, 0, 2 }, // U+3000 IDEOGRAPHIC SPACE
/* 4*/ { 28, "\357\277\277", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+FFFF
/* 5*/ { 28, "\357\277\276", -1, ZINT_ERROR_INVALID_DATA, -1 }, // U+FFFE (reversed BOM) not allowed
/* 6*/ { 28, "\355\240\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // U+D800 surrogate not allowed
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
testStart("test_utf8_to_eci_big5");
for (i = 0; i < data_size; i++) {
int out_length, eci_length;
char dest[1024];
length = data[i].length != -1 ? data[i].length : (int) strlen(data[i].data);
out_length = length;
eci_length = get_eci_length(data[i].eci, (const unsigned char *) data[i].data, length);
assert_nonzero(eci_length + 1 <= 1024, "i:%d eci_length %d + 1 > 1024\n", i, eci_length);
ret = utf8_to_eci(data[i].eci, (const unsigned char *) data[i].data, (unsigned char *) dest, &out_length);
assert_equal(ret, data[i].ret, "i:%d utf8_to_eci ret %d != %d\n", i, ret, data[i].ret);
if (ret == 0) {
assert_equal(out_length, data[i].expected_length, "i:%d length %d != %d\n", i, out_length, data[i].expected_length);
assert_nonzero(out_length <= eci_length, "i:%d out_length %d > eci_length %d\n", i, out_length, eci_length);
}
}
};
static void test_utf8_to_eci_gb2312(void) {
struct item {
int eci;
char *data;
int length;
int ret;
int expected_length;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 29, "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", 32, 0, 32 },
/* 1*/ { 29, " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\177", 96, 0, 96 },
/* 2*/ { 29, "\302\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+0080
/* 3*/ { 29, "\343\200\200", -1, 0, 2 }, // U+3000 IDEOGRAPHIC SPACE
/* 4*/ { 29, "\357\277\277", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+FFFF
/* 5*/ { 29, "\357\277\276", -1, ZINT_ERROR_INVALID_DATA, -1 }, // U+FFFE (reversed BOM) not allowed
/* 6*/ { 29, "\355\240\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // U+D800 surrogate not allowed
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
testStart("test_utf8_to_eci_gb2312");
for (i = 0; i < data_size; i++) {
int out_length, eci_length;
char dest[1024];
length = data[i].length != -1 ? data[i].length : (int) strlen(data[i].data);
out_length = length;
eci_length = get_eci_length(data[i].eci, (const unsigned char *) data[i].data, length);
assert_nonzero(eci_length + 1 <= 1024, "i:%d eci_length %d + 1 > 1024\n", i, eci_length);
ret = utf8_to_eci(data[i].eci, (const unsigned char *) data[i].data, (unsigned char *) dest, &out_length);
assert_equal(ret, data[i].ret, "i:%d utf8_to_eci ret %d != %d\n", i, ret, data[i].ret);
if (ret == 0) {
assert_equal(out_length, data[i].expected_length, "i:%d length %d != %d\n", i, out_length, data[i].expected_length);
assert_nonzero(out_length <= eci_length, "i:%d out_length %d > eci_length %d\n", i, out_length, eci_length);
}
}
};
static void test_utf8_to_eci_euc_kr(void) {
struct item {
int eci;
char *data;
int length;
int ret;
int expected_length;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 30, "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037", 32, 0, 32 },
/* 1*/ { 30, " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\177", 96, 0, 96 },
/* 2*/ { 30, "\302\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+0080
/* 3*/ { 30, "\343\200\200", -1, 0, 2 }, // U+3000 IDEOGRAPHIC SPACE
/* 4*/ { 30, "\357\277\277", -1, ZINT_ERROR_INVALID_DATA, -1 }, // No mapping for U+FFFF
/* 5*/ { 30, "\357\277\276", -1, ZINT_ERROR_INVALID_DATA, -1 }, // U+FFFE (reversed BOM) not allowed
/* 6*/ { 30, "\355\240\200", -1, ZINT_ERROR_INVALID_DATA, -1 }, // U+D800 surrogate not allowed
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
testStart("test_utf8_to_eci_euc_kr");
for (i = 0; i < data_size; i++) {
int out_length, eci_length;
char dest[1024];
length = data[i].length != -1 ? data[i].length : (int) strlen(data[i].data);
out_length = length;
eci_length = get_eci_length(data[i].eci, (const unsigned char *) data[i].data, length);
assert_nonzero(eci_length + 1 <= 1024, "i:%d eci_length %d + 1 > 1024\n", i, eci_length);
ret = utf8_to_eci(data[i].eci, (const unsigned char *) data[i].data, (unsigned char *) dest, &out_length);
assert_equal(ret, data[i].ret, "i:%d utf8_to_eci ret %d != %d\n", i, ret, data[i].ret);
if (ret == 0) {
assert_equal(out_length, data[i].expected_length, "i:%d length %d != %d\n", i, out_length, data[i].expected_length);
assert_nonzero(out_length <= eci_length, "i:%d out_length %d > eci_length %d\n", i, out_length, eci_length);
}
}
};
static void test_get_best_eci(int index) {
struct item {
@ -849,6 +1027,10 @@ int main(int argc, char *argv[]) {
{ "test_utf8_to_eci_sb", test_utf8_to_eci_sb, 1, 0, 0 },
{ "test_utf8_to_eci_ascii", test_utf8_to_eci_ascii, 0, 0, 0 },
{ "test_utf8_to_eci_ucs2be", test_utf8_to_eci_ucs2be, 0, 0, 0 },
{ "test_utf8_to_eci_sjis", test_utf8_to_eci_sjis, 0, 0, 0 },
{ "test_utf8_to_eci_big5", test_utf8_to_eci_big5, 0, 0, 0 },
{ "test_utf8_to_eci_gb2312", test_utf8_to_eci_gb2312, 0, 0, 0 },
{ "test_utf8_to_eci_euc_kr", test_utf8_to_eci_euc_kr, 0, 0, 0 },
{ "test_get_best_eci", test_get_best_eci, 1, 0, 0 },
};

View File

@ -37,8 +37,10 @@ static void test_print(int index, int generate, int debug) {
struct item {
int symbology;
int input_mode;
int border_width;
int output_options;
int whitespace_width;
int whitespace_height;
int option_1;
int option_2;
char *fgcolour;
@ -49,19 +51,21 @@ static void test_print(int index, int generate, int debug) {
char *comment;
};
struct item data[] = {
/* 0*/ { BARCODE_CODE128, UNICODE_MODE, BOLD_TEXT, -1, -1, -1, "", "", 0, "Égjpqy", "code128_egrave_bold.emf", "" },
/* 1*/ { BARCODE_TELEPEN, -1, -1, -1, -1, -1, "147AD0", "FC9630", 0, "123", "telenum_fg_bg.emf", "" },
/* 2*/ { BARCODE_ULTRA, -1, -1, 5, -1, -1, "147AD0", "FC9630", 0, "123", "ultracode_fg_bg.emf", "" },
/* 3*/ { BARCODE_EANX, -1, -1, -1, -1, -1, "", "", 0, "9780877799306+54321", "ean13_5addon_ggs_5.2.2.5.2-2.emf", "" },
/* 4*/ { BARCODE_EANX, -1, -1, -1, -1, -1, "", "", 0, "210987654321+54321", "ean13_5addon_#185.emf", "#185 Byte count, font data, HeaderExtension1/2" },
/* 5*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, "", "", 0, "012345678905+24", "upca_2addon_ggs_5.2.6.6-5.emf", "" },
/* 6*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, "", "", 0, "0123456+12", "upce_2addon.emf", "" },
/* 7*/ { BARCODE_UPCE, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, "", "", 0, "0123456+12", "upce_2addon_small_bold.emf", "" },
/* 8*/ { BARCODE_ITF14, -1, BOLD_TEXT, -1, -1, -1, "", "", 0, "123", "itf14_bold.emf", "" },
/* 9*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, "", "", 90, "123", "code39_rotate_90.emf", "" },
/* 10*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, "", "", 180, "123", "code39_rotate_180.emf", "" },
/* 11*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, "", "", 270, "123", "code39_rotate_270.emf", "" },
/* 12*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, "E0E0E0", "700070", 0, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_#185.emf", "#185 Maxicode scaling" },
/* 0*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, "", "", 0, "Égjpqy", "code128_egrave_bold.emf", "" },
/* 1*/ { BARCODE_TELEPEN, -1, -1, -1, -1, -1, -1, -1, "147AD0", "FC9630", 0, "123", "telenum_fg_bg.emf", "" },
/* 2*/ { BARCODE_ULTRA, -1, -1, -1, 5, -1, -1, -1, "147AD0", "FC9630", 0, "123", "ultracode_fg_bg.emf", "" },
/* 3*/ { BARCODE_ULTRA, -1, 2, BARCODE_BOX, 2, 2, -1, -1, "FF0000", "0000FF", 0, "123", "ultracode_fg_bg_box2.emf", "" },
/* 4*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, "", "", 0, "9780877799306+54321", "ean13_5addon_ggs_5.2.2.5.2-2.emf", "" },
/* 5*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, "", "", 0, "210987654321+54321", "ean13_5addon_#185.emf", "#185 Byte count, font data, HeaderExtension1/2" },
/* 6*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, "", "", 0, "012345678905+24", "upca_2addon_ggs_5.2.6.6-5.emf", "" },
/* 7*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, "", "", 0, "0123456+12", "upce_2addon.emf", "" },
/* 8*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, "", "", 0, "0123456+12", "upce_2addon_small_bold.emf", "" },
/* 9*/ { BARCODE_ITF14, -1, -1, BOLD_TEXT, -1, -1, -1, -1, "", "", 0, "123", "itf14_bold.emf", "" },
/* 10*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, "", "", 90, "123", "code39_rotate_90.emf", "" },
/* 11*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, "", "", 180, "123", "code39_rotate_180.emf", "" },
/* 12*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, "", "", 270, "123", "code39_rotate_270.emf", "" },
/* 13*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, "E0E0E0", "700070", 0, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_#185.emf", "#185 Maxicode scaling" },
/* 14*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, "", "FFFFFF00", 90, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_rotate_90_nobg.emf", "" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -97,9 +101,15 @@ static void test_print(int index, int generate, int debug) {
assert_nonnull(symbol, "Symbol not created\n");
length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug);
if (data[i].border_width != -1) {
symbol->border_width = data[i].border_width;
}
if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width;
}
if (data[i].whitespace_height != -1) {
symbol->whitespace_height = data[i].whitespace_height;
}
if (*data[i].fgcolour) {
strcpy(symbol->fgcolour, data[i].fgcolour);
}
@ -117,9 +127,9 @@ static void test_print(int index, int generate, int debug) {
assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i);
if (generate) {
printf(" /*%3d*/ { %s, %s, %s, %d, %d, %d, \"%s\", \"%s\", %d, \"%s\", \"%s\" \"%s\" },\n",
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode),
testUtilOutputOptionsName(data[i].output_options), data[i].whitespace_width,
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, \"%s\", \"%s\", %d, \"%s\", \"%s\", \"%s\" },\n",
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].border_width,
testUtilOutputOptionsName(data[i].output_options), data[i].whitespace_width, data[i].whitespace_height,
data[i].option_1, data[i].option_2, data[i].fgcolour, data[i].bgcolour, data[i].rotate_angle,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].expected_file, data[i].comment);
ret = testUtilRename(symbol->outfile, expected_file);
@ -145,10 +155,41 @@ static void test_print(int index, int generate, int debug) {
testFinish();
}
INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle);
static void test_outfile(void) {
int ret;
struct zint_symbol symbol = {0};
struct zint_vector vector = {0};
testStart("test_outfile");
symbol.symbology = BARCODE_CODE128;
symbol.vector = &vector;
strcpy(symbol.outfile, "nosuch_dir/out.emf");
ret = emf_plot(&symbol, 0);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "emf_plot ret %d != ZINT_ERROR_FILE_ACCESS (%d) (%s)\n", ret, ZINT_ERROR_FILE_ACCESS, symbol.errtxt);
symbol.output_options |= BARCODE_STDOUT;
ret = emf_plot(&symbol, 0);
printf(" - ignore (EMF to stdout)\n"); fflush(stdout);
assert_zero(ret, "emf_plot ret %d != 0 (%s)\n", ret, symbol.errtxt);
symbol.vector = NULL;
ret = emf_plot(&symbol, 0);
assert_equal(ret, ZINT_ERROR_INVALID_DATA, "emf_plot ret %d != ZINT_ERROR_INVALID_DATA (%d) (%s)\n", ret, ZINT_ERROR_INVALID_DATA, symbol.errtxt);
testFinish();
}
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_print", test_print, 1, 1, 1 },
{ "test_outfile", test_outfile, 0, 0, 0 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -134,6 +134,13 @@ static void test_gb18030_wctomb_zint(void) {
int ret, ret2;
unsigned int val1_1, val1_2, val2_1, val2_2;
unsigned int i;
/* See: https://file.allitebooks.com/20160708/CJKV%20Information%20Processing.pdf (table 3-37, p.109, 2nd ed.) */
static int nonpua_nonbmp[] = {
0x20087, 0x20089, 0x200CC, 0x215D7, 0x2298F, 0x241FE
};
static unsigned int nonpua_nonbmp_vals[] = {
0xFE51, 0xFE52, 0xFE53, 0xFE6C, 0xFE76, 0xFE91
};
testStart("test_gb18030_wctomb_zint");
@ -151,6 +158,18 @@ static void test_gb18030_wctomb_zint(void) {
}
}
val1_1 = val1_2 = 0;
ret = gb18030_wctomb_zint(&val1_1, &val1_2, 0x110000); /* Invalid Unicode codepoint */
assert_zero(ret, "0x110000 ret %d != 0, val1_1 0x%04X, val1_2 0x%04X\n", ret, val1_1, val1_2);
for (i = 0; i < ARRAY_SIZE(nonpua_nonbmp); i++) {
val1_1 = val1_2 = 0;
ret = gb18030_wctomb_zint(&val1_1, &val1_2, nonpua_nonbmp[i]);
assert_equal(ret, 2, "i:%d 0x%04X ret %d != 2, val1_1 0x%04X, val1_2 0x%04X\n", (int) i, nonpua_nonbmp[i], ret, val1_1, val1_2);
assert_equal(val1_1, nonpua_nonbmp_vals[i], "i:%d 0x%04X val1_1 0x%04X != 0x%04X\n", (int) i, nonpua_nonbmp[i], val1_1, nonpua_nonbmp_vals[i]);
assert_zero(val1_2, "i:%d 0x%04X val1_2 0x%04X != 0\n", (int) i, nonpua_nonbmp[i], val1_2);
}
testFinish();
}
@ -183,6 +202,9 @@ static void test_gb18030_utf8(int index) {
/* 6*/ { "", -1, 0, 1, { 0xA844 }, "GB18030.TXT mapping" },
/* 7*/ { "", -1, 0, 1, { 0xA1AA }, "GB 18030 subset mapping" },
/* 8*/ { "aβc・·—é—Z", -1, 0, 10, { 'a', 0xA6C2, 'c', 0x8139, 0xA739, 0xA1A4, 0xA1AA, 0xA8A6, 0xA1AA, 'Z' }, "" },
/* 9*/ { "\200", -1, ZINT_ERROR_INVALID_DATA, -1, {0}, "Invalid UTF-8" },
/* 10*/ { "\357\277\276", -1, 0, 2, { 0x8431, 0xA438 }, "U+FFFE (reversed BOM)" },
/* 11*/ { "\357\277\277", -1, 0, 2, { 0x8431, 0xA439 }, "U+FFFF" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;

View File

@ -121,6 +121,7 @@ static void test_gb2312_utf8(int index) {
/* 6*/ { "", -1, 0, 1, { 0xA1AA }, "GB2312.TXT mapping" },
/* 7*/ { "", -1, 0, 1, { 0xA1AA }, "GB 18030 subset mapping" },
/* 8*/ { "aβc・·—é—Z", -1, 0, 9, { 'a', 0xA6C2, 'c', 0xA1A4, 0xA1A4, 0xA1AA, 0xA8A6, 0xA1AA, 'Z' }, "" },
/* 9*/ { "\200", -1, ZINT_ERROR_INVALID_DATA, -1, {0}, "Invalid UTF-8" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;

View File

@ -40,19 +40,21 @@ static void test_pixel_plot(int index, int debug) {
int height;
char *pattern;
int repeat;
int ret;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 1, 1, "1", 0 },
/* 1*/ { 2, 1, "11", 0 },
/* 2*/ { 3, 1, "101", 0 },
/* 3*/ { 4, 1, "1010", 0 },
/* 4*/ { 5, 1, "10101", 0 },
/* 5*/ { 3, 2, "101010", 0 },
/* 6*/ { 3, 3, "101010101", 0 },
/* 7*/ { 8, 2, "CBMWKRYGGYRKWMBC", 0 },
/* 8*/ { 20, 30, "WWCWBWMWRWYWGWKCCWCMCRCYCGCKBWBCBBMBRBYBGBKMWMCMBMMRMYMGMKRWRCRBRMRRYRGRKYWYCYBYMYRYYGYKGWGCGBGMGRGYGGKKWKCKBKMKRKYKGKK", 1 }, // Single LZW block, size 255
/* 9*/ { 19, 32, "WWCWBWMWRWYWGWKCCWCMCRCYCGCKBWBCBBMBRBYBGBKMWMCMBMMRMYMGMKRWRCRBRMRRYRGRKYWYCYBYMYRYYGYKGWGCGBGMGRGYGGKKWK", 1 }, // Two LZW blocks, last size 1
/* 0*/ { 1, 1, "1", 0, 0 },
/* 1*/ { 2, 1, "11", 0, 0 },
/* 2*/ { 3, 1, "101", 0, 0 },
/* 3*/ { 4, 1, "1010", 0, 0 },
/* 4*/ { 5, 1, "10101", 0, 0 },
/* 5*/ { 3, 2, "101010", 0, 0 },
/* 6*/ { 3, 3, "101010101", 0, 0 },
/* 7*/ { 8, 2, "CBMWKRYGGYRKWMBC", 0, 0 },
/* 8*/ { 20, 30, "WWCWBWMWRWYWGWKCCWCMCRCYCGCKBWBCBBMBRBYBGBKMWMCMBMMRMYMGMKRWRCRBRMRRYRGRKYWYCYBYMYRYYGYKGWGCGBGMGRGYGGKKWKCKBKMKRKYKGKK", 1, 0 }, // Single LZW block, size 255
/* 9*/ { 19, 32, "WWCWBWMWRWYWGWKCCWCMCRCYCGCKBWBCBBMBRBYBGBKMWMCMBMMRMYMGMKRWRCRBRMRRYRGRKYWYCYBYMYRYYGYKGWGCGBGMGRGYGGKKWK", 1, 0 }, // Two LZW blocks, last size 1
/* 10*/ { 1, 1, "D", 0, ZINT_ERROR_INVALID_DATA },
};
int data_size = ARRAY_SIZE(data);
int i, ret;
@ -62,12 +64,9 @@ static void test_pixel_plot(int index, int debug) {
char data_buf[19 * 32 + 1]; // 19 * 32 == 608
testStart("test_pixel_plot");
int have_identify = testUtilHaveIdentify();
if (!testUtilHaveIdentify()) {
testSkip("ImageMagick identify not available");
return;
}
testStart("test_pixel_plot");
for (i = 0; i < data_size; i++) {
int size;
@ -96,12 +95,21 @@ static void test_pixel_plot(int index, int debug) {
symbol->bitmap = (unsigned char *) data_buf;
ret = gif_pixel_plot(symbol, (unsigned char *) data_buf);
assert_zero(ret, "i:%d gif_pixel_plot ret %d != 0 (%s)\n", i, ret, symbol->errtxt);
assert_equal(ret, data[i].ret, "i:%d gif_pixel_plot ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d identify %s ret %d != 0\n", i, symbol->outfile, ret);
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
if (ret < ZINT_ERROR) {
if (have_identify) {
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d identify %s ret %d != 0\n", i, symbol->outfile, ret);
}
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
}
} else {
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
(void) remove(symbol->outfile);
}
}
symbol->bitmap = NULL;
@ -115,6 +123,8 @@ static void test_print(int index, int generate, int debug) {
struct item {
int symbology;
int border_width;
int output_options;
int whitespace_width;
int whitespace_height;
int option_1;
@ -127,26 +137,29 @@ static void test_print(int index, int generate, int debug) {
char *expected_file;
};
struct item data[] = {
/* 0*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 0, 0, "", "", "12", "dotcode_1.0.gif" },
/* 1*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 0, 0.1, "", "", "12", "dotcode_1.0_ds0.1.gif" },
/* 2*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 0, 1.1, "", "", "12", "dotcode_1.0_ds1.1.gif" },
/* 3*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 1.5, 0, "", "", "12", "dotcode_1.5.gif" },
/* 4*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 1.5, 0.4, "", "", "12", "dotcode_1.5_ds0.4.gif" },
/* 5*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 1.5, 1.1, "", "", "12", "dotcode_1.5_ds1.1.gif" },
/* 6*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 1.5, 2.1, "", "", "12", "dotcode_1.5_ds2.1.gif" },
/* 7*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 2, 0, "", "", "12", "dotcode_2.0.gif" },
/* 8*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 2, 0.9, "", "", "12", "dotcode_2.0_ds0.9.gif" },
/* 9*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 2, 1.1, "", "", "12", "dotcode_2.0_ds1.1.gif" },
/* 10*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 3, 0, "", "", "12", "dotcode_3.0.gif" },
/* 11*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 3, 0.4, "", "", "12", "dotcode_3.0_ds0.4.gif" },
/* 12*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 3, 1.1, "", "", "12", "dotcode_3.0_ds1.1.gif" },
/* 13*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 3.5, 0, "", "", "12", "dotcode_3.5.gif" },
/* 14*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 3.5, 0.4, "", "", "12", "dotcode_3.5_ds0.4.gif" },
/* 15*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 3.5, 1.1, "", "", "12", "dotcode_3.5_ds1.1.gif" },
/* 16*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 5, 0, "", "", "12", "dotcode_5.0.gif" },
/* 17*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 5, 0.2, "", "", "12", "dotcode_5.0_ds0.2.gif" },
/* 18*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 5, 1.1, "", "", "12", "dotcode_5.0_ds1.1.gif" },
/* 19*/ { BARCODE_DOTCODE, -1, -1, -1, -1, 5, 1.7, "", "", "12", "dotcode_5.0_ds1.7.gif" },
/* 0*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12", "dotcode_1.0.gif" },
/* 1*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 0, 0.1, "", "", "12", "dotcode_1.0_ds0.1.gif" },
/* 2*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 0, 1.1, "", "", "12", "dotcode_1.0_ds1.1.gif" },
/* 3*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 1.5, 0, "", "", "12", "dotcode_1.5.gif" },
/* 4*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 1.5, 0.4, "", "", "12", "dotcode_1.5_ds0.4.gif" },
/* 5*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 1.5, 1.1, "", "", "12", "dotcode_1.5_ds1.1.gif" },
/* 6*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 1.5, 2.1, "", "", "12", "dotcode_1.5_ds2.1.gif" },
/* 7*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 2, 0, "", "", "12", "dotcode_2.0.gif" },
/* 8*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 2, 0.9, "", "", "12", "dotcode_2.0_ds0.9.gif" },
/* 9*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 2, 1.1, "", "", "12", "dotcode_2.0_ds1.1.gif" },
/* 10*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 3, 0, "", "", "12", "dotcode_3.0.gif" },
/* 11*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 3, 0.4, "", "", "12", "dotcode_3.0_ds0.4.gif" },
/* 12*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 3, 1.1, "", "", "12", "dotcode_3.0_ds1.1.gif" },
/* 13*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 3.5, 0, "", "", "12", "dotcode_3.5.gif" },
/* 14*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 3.5, 0.4, "", "", "12", "dotcode_3.5_ds0.4.gif" },
/* 15*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 3.5, 1.1, "", "", "12", "dotcode_3.5_ds1.1.gif" },
/* 16*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 5, 0, "", "", "12", "dotcode_5.0.gif" },
/* 17*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 5, 0.2, "", "", "12", "dotcode_5.0_ds0.2.gif" },
/* 18*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 5, 1.1, "", "", "12", "dotcode_5.0_ds1.1.gif" },
/* 19*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 5, 1.7, "", "", "12", "dotcode_5.0_ds1.7.gif" },
/* 20*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 0, 0, "2674C344", "FDFFC2CC", "12", "dotcode_bgfgalpha.gif" },
/* 21*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, 0, 0, "00000000", "FFFFFF00", "12", "dotcode_bgfgtrans.gif" },
/* 22*/ { BARCODE_ULTRA, 1, BARCODE_BOX, 1, 1, -1, -1, 0, 0, "0000FF", "FF0000", "12", "ultra_fgbg_hvwsp1_box1.gif" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -178,7 +191,10 @@ static void test_print(int index, int generate, int debug) {
symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n");
length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug);
length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug);
if (data[i].border_width != -1) {
symbol->border_width = data[i].border_width;
}
if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width;
}
@ -208,8 +224,9 @@ static void test_print(int index, int generate, int debug) {
assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i);
if (generate) {
printf(" /*%3d*/ { %s, %d, %d, %d, %d, %.5g, %.5g, \"%s\", \"%s\", \"%s\", \"%s\" },\n",
i, testUtilBarcodeName(data[i].symbology), data[i].whitespace_width, data[i].whitespace_height,
printf(" /*%3d*/ { %s, %d, %s, %d, %d, %d, %d, %.5g, %.5g, \"%s\", \"%s\", \"%s\", \"%s\" },\n",
i, testUtilBarcodeName(data[i].symbology), data[i].border_width, testUtilOutputOptionsName(data[i].output_options),
data[i].whitespace_width, data[i].whitespace_height,
data[i].option_1, data[i].option_2, data[i].scale, data[i].dot_size, data[i].fgcolour, data[i].bgcolour,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].expected_file);
ret = testUtilRename(symbol->outfile, expected_file);
@ -233,11 +250,37 @@ static void test_print(int index, int generate, int debug) {
testFinish();
}
static void test_outfile(void) {
int ret;
struct zint_symbol symbol = {0};
unsigned char data[] = { "1" };
testStart("test_outfile");
symbol.symbology = BARCODE_CODE128;
symbol.bitmap = data;
symbol.bitmap_width = symbol.bitmap_height = 1;
strcpy(symbol.outfile, "nosuch_dir/out.gif");
ret = gif_pixel_plot(&symbol, data);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "gif_pixel_plot ret %d != ZINT_ERROR_FILE_ACCESS (%d) (%s)\n", ret, ZINT_ERROR_FILE_ACCESS, symbol.errtxt);
symbol.output_options |= BARCODE_STDOUT;
ret = gif_pixel_plot(&symbol, data);
printf(" - ignore (GIF to stdout)\n"); fflush(stdout);
assert_zero(ret, "gif_pixel_plot ret %d != 0 (%s)\n", ret, symbol.errtxt);
testFinish();
}
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_pixel_plot", test_pixel_plot, 1, 0, 1 },
{ "test_print", test_print, 1, 1, 1 },
{ "test_outfile", test_outfile, 0, 0, 0 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -357,6 +357,7 @@ static void test_escape_char_process(int index, int generate, int debug) {
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i);
symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n");

View File

@ -31,41 +31,50 @@
#include "testcommon.h"
static void test_pcx(int index, int debug) {
static void test_print(int index, int generate, int debug) {
struct item {
int symbology;
int border_width;
int output_options;
int whitespace_width;
int whitespace_height;
int option_1;
int option_2;
char *fgcolour;
char *bgcolour;
float scale;
char *data;
char *expected_file;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { BARCODE_CODE128, -1, -1, "", "", 0, "AIM" },
/* 1*/ { BARCODE_QRCODE, 2, 1, "", "", 0, "1234567890" },
/* 2*/ { BARCODE_DOTCODE, -1, -1, "", "", 0, "2741" },
/* 3*/ { BARCODE_MAXICODE, -1, -1, "", "", 0, "1" },
/* 4*/ { BARCODE_GRIDMATRIX, -1, -1, "", "", 0.75, "Grid Matrix" },
/* 5*/ { BARCODE_CODABLOCKF, -1, 20, "FFFFFF", "000000", 0, "1234567890123456789012345678901234567890" },
/* 6*/ { BARCODE_CODE128, -1, -1, "C3C3C3", "", 0, "AIM" },
/* 7*/ { BARCODE_QRCODE, 2, 1, "", "D2E3F4", 0, "1234567890" },
/* 8*/ { BARCODE_DOTCODE, -1, -1, "C2C100", "E0E1F2", 0, "2741" },
/* 9*/ { BARCODE_ULTRA, -1, -1, "", "", 0, "ULTRACODE_123456789!" },
/* 0*/ { BARCODE_GRIDMATRIX, -1, -1, -1, -1, -1, -1, "C3C3C3", "", 0.75, "Grid Matrix", "gridmatrix_fg_0.75.pcx" },
/* 1*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, 20, "FFFFFF", "000000", 0, "1234567890123456789012345678901234567890", "codeblockf_reverse.pcx" },
/* 2*/ { BARCODE_QRCODE, -1, -1, -1, -1, 2, 1, "", "D2E3F4", 0, "1234567890", "qr_bg.pcx" },
/* 3*/ { BARCODE_ULTRA, 1, BARCODE_BOX, 1, 1, -1, -1, "FF0000", "0000FF", 0, "ULTRACODE_123456789!", "ultra_fg_bg_hvwsp1_box1.pcx" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
struct zint_symbol *symbol;
char *filename = "out.pcx";
const char *data_dir = "/backend/tests/data/pcx";
char *pcx = "out.pcx";
char expected_file[4096];
char escaped[1024];
int escaped_size = 1024;
int have_identify = testUtilHaveIdentify();
testStart("test_pcx");
if (!testUtilHaveIdentify()) {
testSkip("ImageMagick identify not available");
return;
if (generate) {
char data_dir_path[1024];
assert_nonzero(testUtilDataPath(data_dir_path, sizeof(data_dir_path), data_dir, NULL), "testUtilDataPath(%s) == 0\n", data_dir);
if (!testUtilDirExists(data_dir_path)) {
ret = testUtilMkDir(data_dir_path);
assert_zero(ret, "testUtilMkDir(%s) ret %d != 0 (%d: %s)\n", data_dir_path, ret, errno, strerror(errno));
}
}
for (i = 0; i < data_size; i++) {
@ -75,12 +84,15 @@ static void test_pcx(int index, int debug) {
symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n");
symbol->symbology = data[i].symbology;
if (data[i].option_1 != -1) {
symbol->option_1 = data[i].option_1;
length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug);
if (data[i].border_width != -1) {
symbol->border_width = data[i].border_width;
}
if (data[i].option_2 != -1) {
symbol->option_2 = data[i].option_2;
if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width;
}
if (data[i].whitespace_height != -1) {
symbol->whitespace_height = data[i].whitespace_height;
}
if (*data[i].fgcolour) {
strcpy(symbol->fgcolour, data[i].fgcolour);
@ -93,19 +105,35 @@ static void test_pcx(int index, int debug) {
}
symbol->debug |= debug;
length = (int) strlen(data[i].data);
ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length);
assert_zero(ret, "i:%d %s ZBarcode_Encode ret %d != 0 %s\n", i, testUtilBarcodeName(data[i].symbology), ret, symbol->errtxt);
strcpy(symbol->outfile, filename);
strcpy(symbol->outfile, pcx);
ret = ZBarcode_Print(symbol, 0);
assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d %s identify %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i);
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
if (generate) {
printf(" /*%3d*/ { %s, %d, %s, %d, %d, %d, %d, \"%s\", \"%s\", \"%s\", \"%s\"},\n",
i, testUtilBarcodeName(data[i].symbology), data[i].border_width, testUtilOutputOptionsName(data[i].output_options),
data[i].whitespace_width, data[i].whitespace_height,
data[i].option_1, data[i].option_2, data[i].fgcolour, data[i].bgcolour,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].expected_file);
ret = testUtilRename(symbol->outfile, expected_file);
assert_zero(ret, "i:%d testUtilRename(%s, %s) ret %d != 0 (%d: %s)\n", i, symbol->outfile, expected_file, ret, errno, strerror(errno));
if (have_identify) {
ret = testUtilVerifyIdentify(expected_file, debug);
assert_zero(ret, "i:%d %s identify %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), expected_file, ret);
}
} else {
assert_nonzero(testUtilExists(symbol->outfile), "i:%d testUtilExists(%s) == 0\n", i, symbol->outfile);
assert_nonzero(testUtilExists(expected_file), "i:%d testUtilExists(%s) == 0\n", i, expected_file);
ret = testUtilCmpBins(symbol->outfile, expected_file);
assert_zero(ret, "i:%d %s testUtilCmpBins(%s, %s) %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, expected_file, ret);
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
}
ZBarcode_Delete(symbol);
}
@ -113,10 +141,38 @@ static void test_pcx(int index, int debug) {
testFinish();
}
INTERNAL int pcx_pixel_plot(struct zint_symbol *symbol, unsigned char *pixelbuf);
static void test_outfile(void) {
int ret;
struct zint_symbol symbol = {0};
unsigned char data[] = { "1" };
testStart("test_outfile");
symbol.symbology = BARCODE_CODE128;
symbol.bitmap = data;
symbol.bitmap_width = symbol.bitmap_height = 1;
strcpy(symbol.outfile, "nosuch_dir/out.pcx");
ret = pcx_pixel_plot(&symbol, data);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "pcx_pixel_plot ret %d != ZINT_ERROR_FILE_ACCESS (%d) (%s)\n", ret, ZINT_ERROR_FILE_ACCESS, symbol.errtxt);
symbol.output_options |= BARCODE_STDOUT;
ret = pcx_pixel_plot(&symbol, data);
printf(" - ignore (PCX to stdout)\n"); fflush(stdout);
assert_zero(ret, "pcx_pixel_plot ret %d != 0 (%s)\n", ret, symbol.errtxt);
testFinish();
}
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_pcx", test_pcx, 1, 0, 1 },
{ "test_print", test_print, 1, 1, 1 },
{ "test_outfile", test_outfile, 0, 0, 0 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -30,6 +30,7 @@
/* vim: set ts=4 sw=4 et : */
#include "testcommon.h"
#include <errno.h>
#include <sys/stat.h>
INTERNAL int png_pixel_plot(struct zint_symbol *symbol, unsigned char *pixelbuf);
@ -41,16 +42,17 @@ static void test_pixel_plot(int index, int debug) {
int height;
char *pattern;
int repeat;
int ret;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 1, 1, "1", 0 },
/* 1*/ { 2, 1, "11", 0 },
/* 2*/ { 2, 2, "10", 1 },
/* 3*/ { 3, 1, "101", 0 },
/* 4*/ { 3, 2, "101010", 0 },
/* 5*/ { 3, 3, "101010101", 0 },
/* 6*/ { 8, 2, "CBMWKRYGGYRKWMBC", 0 },
/* 0*/ { 1, 1, "1", 0, 0 },
/* 1*/ { 2, 1, "11", 0, 0 },
/* 2*/ { 2, 2, "10", 1, 0 },
/* 3*/ { 3, 1, "101", 0, 0 },
/* 4*/ { 3, 2, "101010", 0, 0 },
/* 5*/ { 3, 3, "101010101", 0, 0 },
/* 6*/ { 8, 2, "CBMWKRYGGYRKWMBC", 0, 0 },
};
int data_size = ARRAY_SIZE(data);
int i, ret;
@ -60,12 +62,9 @@ static void test_pixel_plot(int index, int debug) {
char data_buf[8 * 2 + 1];
testStart("test_pixel_plot");
int have_identify = testUtilHaveIdentify();
if (!testUtilHaveIdentify()) {
testSkip("ImageMagick identify not available");
return;
}
testStart("test_pixel_plot");
for (i = 0; i < data_size; i++) {
int size;
@ -94,12 +93,21 @@ static void test_pixel_plot(int index, int debug) {
symbol->bitmap = (unsigned char *) data_buf;
ret = png_pixel_plot(symbol, (unsigned char *) data_buf);
assert_zero(ret, "i:%d png_pixel_plot ret %d != 0 (%s)\n", i, ret, symbol->errtxt);
assert_equal(ret, data[i].ret, "i:%d png_pixel_plot ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d identify %s ret %d != 0\n", i, symbol->outfile, ret);
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
if (ret < ZINT_ERROR) {
if (have_identify) {
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d identify %s ret %d != 0\n", i, symbol->outfile, ret);
}
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
}
} else {
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
(void) remove(symbol->outfile);
}
}
symbol->bitmap = NULL;
@ -173,19 +181,21 @@ static void test_print(int index, int generate, int debug) {
/* 38*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, "", "FF000033", "12345", "", 0, "ultra_bgalpha.png", "" },
/* 39*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, "0000007F", "FF0000", "12345", "", 0, "ultra_fgalpha.png", "" },
/* 40*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "0000007F", "", "12345", "", 0, "ultra_fgalpha_nobg.png", "" },
/* 41*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, "00FF007F", "BABDB6", "12345", "", 0, "ultra_fgalpha_hvwsp1_box1.png", "" },
/* 42*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5f, "", "", "1", "", 0, "ultra_odd.png", "" },
/* 43*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.5.png", "6 dpmm, 150 dpi" },
/* 44*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BOX, 3, -1, -1, -1, -1, 0, 0.7f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.7_wsp3_box1.png", "8 dpmm, 200 dpi" },
/* 45*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1.4f, "1111117F", "EEEEEEEE", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_1.4_bgfgalpha.png", "16 dpmm, 400 dpi" },
/* 46*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2.1f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_2.1.png", "24 dpmm, 600 dpi" },
/* 47*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_hvwsp1_box2.png", "" },
/* 48*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, 0, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.png", "" },
/* 49*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, -1, -1, -1, -1, 0, 2.0f, "", "", "1234", "", 0, "datamatrix_2.0_bind1_dotty.png", "" },
/* 50*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, 2.0f, "", "", "1234", "", 0, "datamatrix_2.0_hvwsp1_bind1_dotty.png", "" },
/* 51*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12345678909", "", 0, "dbar_ltd.png", "" },
/* 52*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5.0f, 0, "", "", "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.png", "" },
/* 53*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75f, 0, "", "", "12345678901234567890", "", 0, "imail_height7.75.png", "" },
/* 41*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, "", "", "12345", "", 0, "ultra_hvwsp1_box1.png", "" },
/* 42*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, "00FF007F", "BABDB6", "12345", "", 0, "ultra_fgalpha_hvwsp1_box1.png", "" },
/* 43*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, "", "", "1", "", 0, "ultra_odd.png", "" },
/* 44*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.5.png", "6 dpmm, 150 dpi" },
/* 45*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BOX, 3, -1, -1, -1, -1, 0, 0.7, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.7_wsp3_box1.png", "8 dpmm, 200 dpi" },
/* 46*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1.4, "1111117F", "EEEEEEEE", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_1.4_bgfgalpha.png", "16 dpmm, 400 dpi" },
/* 47*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2.1, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_2.1.png", "24 dpmm, 600 dpi" },
/* 48*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_hvwsp1_box2.png", "" },
/* 49*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, 0, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.png", "" },
/* 50*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, -1, -1, -1, -1, 0, 2.0f, "", "", "1234", "", 0, "datamatrix_2.0_bind1_dotty.png", "" },
/* 51*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, 2.0f, "", "", "1234", "", 0, "datamatrix_2.0_hvwsp1_bind1_dotty.png", "" },
/* 52*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12345678909", "", 0, "dbar_ltd.png", "" },
/* 53*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5.0, 0, "", "", "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.png", "" },
/* 54*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, 0, "", "", "12345678901234567890", "", 0, "imail_height7.75.png", "" },
/* 55*/ { BARCODE_AZTEC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567890", "", 0, "aztec.png", "" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -262,10 +272,10 @@ static void test_print(int index, int generate, int debug) {
assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i);
if (generate) {
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %.5g, %.5g, \"%s\",\"%s\", \"%s\", \"%s\", \"%s\", \"%s\" },\n",
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %.5g, %.5g, \"%s\", \"%s\", \"%s\", \"%s\", %d, \"%s\", \"%s\" },\n",
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].border_width, testUtilOutputOptionsName(data[i].output_options),
data[i].whitespace_width, data[i].whitespace_height, data[i].show_hrt, data[i].option_1, data[i].option_2, data[i].height, data[i].scale, data[i].fgcolour, data[i].bgcolour,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].expected_file, data[i].comment);
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].ret, data[i].expected_file, data[i].comment);
ret = testUtilRename(symbol->outfile, expected_file);
assert_zero(ret, "i:%d testUtilRename(%s, %s) ret %d != 0\n", i, symbol->outfile, expected_file, ret);
if (have_identify) {
@ -289,11 +299,95 @@ static void test_print(int index, int generate, int debug) {
testFinish();
}
static void test_outfile(void) {
int ret;
struct zint_symbol symbol = {0};
unsigned char data[] = { "1" };
testStart("test_outfile");
symbol.symbology = BARCODE_CODE128;
symbol.bitmap = data;
symbol.bitmap_width = symbol.bitmap_height = 1;
strcpy(symbol.outfile, "nosuch_dir/out.png");
ret = png_pixel_plot(&symbol, data);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "png_pixel_plot ret %d != ZINT_ERROR_FILE_ACCESS (%d) (%s)\n", ret, ZINT_ERROR_FILE_ACCESS, symbol.errtxt);
symbol.output_options |= BARCODE_STDOUT;
ret = png_pixel_plot(&symbol, data);
printf(" - ignore (PNG to stdout)\n"); fflush(stdout);
assert_zero(ret, "png_pixel_plot ret %d != 0 (%s)\n", ret, symbol.errtxt);
testFinish();
}
#include <png.h>
#include <setjmp.h>
struct wpng_error_type {
struct zint_symbol *symbol;
jmp_buf jmpbuf;
};
STATIC_UNLESS_ZINT_TEST void wpng_error_handler(png_structp png_ptr, png_const_charp msg);
static void test_wpng_error_handler(void) {
int ret;
char filename[] = "out.png";
FILE *fp;
struct wpng_error_type wpng_error;
struct zint_symbol symbol = {0};
png_structp png_ptr;
png_infop info_ptr;
testStart("test_wpng_error_handler");
wpng_error.symbol = &symbol;
// Create empty file
(void) remove(filename); // In case junk hanging around
fp = fopen(filename, "w+");
assert_nonnull(fp, "fopen(%s) failed\n", filename);
ret = fclose(fp);
assert_zero(ret, "fclose(%s) %d != 0\n", filename, ret);
// Re-open for read, which will cause libpng to error
fp = fopen(filename, "r");
assert_nonnull(fp, "fopen(%s) for read failed\n", filename);
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, &wpng_error, wpng_error_handler, NULL);
assert_nonnull(png_ptr, "png_create_write_struct failed\n");
info_ptr = png_create_info_struct(png_ptr);
assert_nonnull(info_ptr, "png_create_info_struct failed\n");
if (setjmp(wpng_error.jmpbuf)) {
png_destroy_write_struct(&png_ptr, &info_ptr);
ret = fclose(fp);
assert_zero(ret, "fclose(%s) %d != 0\n", filename, ret);
assert_nonnull(strstr(symbol.errtxt, "635: libpng error:"), "strstr(%s) NULL\n", symbol.errtxt);
assert_zero(remove(filename), "remove(%s) != 0 (%d: %s)\n", filename, errno, strerror(errno));
} else {
png_init_io(png_ptr, fp);
// This should fail and jmp to setjmp
png_write_info(png_ptr, info_ptr);
assert_zero(1, "libpng error setjmp failed\n");
}
testFinish();
}
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_pixel_plot", test_pixel_plot, 1, 0, 1 },
{ "test_print", test_print, 1, 1, 1 },
{ "test_outfile", test_outfile, 0, 0, 0 },
{ "test_wpng_error_handler", test_wpng_error_handler, 0, 0, 0 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -37,47 +37,56 @@ static void test_print(int index, int generate, int debug) {
struct item {
int symbology;
int input_mode;
int border_width;
int output_options;
int whitespace_width;
int whitespace_height;
int option_1;
int option_2;
float scale;
float dot_size;
char *fgcolour;
char *bgcolour;
int rotate_angle;
char *data;
char *expected_file;
};
struct item data[] = {
/* 0*/ { BARCODE_CODE128, UNICODE_MODE, BOLD_TEXT, -1, -1, -1, 0, 0, "", "", "Égjpqy", "code128_egrave_bold.eps" },
/* 1*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, 0, 0, "147AD0", "FC9630", "123", "code39_fg_bg.eps" },
/* 2*/ { BARCODE_ULTRA, -1, 1, -1, -1, -1, 0, 0, "147AD0", "FC9630", "123", "ultra_fg_bg.eps" },
/* 3*/ { BARCODE_EANX, -1, -1, -1, -1, -1, 0, 0, "", "", "9771384524017+12", "ean13_2addon_ggs_5.2.2.5.1-2.eps" },
/* 4*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, 0, 0, "", "", "012345678905+24", "upca_2addon_ggs_5.2.6.6-5.eps" },
/* 5*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, 0, "", "", "0123456+12345", "upce_5addon.eps" },
/* 6*/ { BARCODE_UPCE, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, 0, 0, "", "", "0123456+12345", "upce_5addon_small_bold.eps" },
/* 7*/ { BARCODE_CODE128, UNICODE_MODE, -1, -1, -1, -1, 0, 0, "", "", "A\\B)ç(D", "code128_escape_latin1.eps" },
/* 8*/ { BARCODE_DBAR_LTD, -1, BOLD_TEXT, -1, -1, -1, 0, 0, "", "", "1501234567890", "dbar_ltd_24724_fig7_bold.eps" },
/* 9*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 0, 0, "", "", "12", "dotcode_1.0.eps" },
/* 10*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 0, 0.1, "", "", "12", "dotcode_1.0_ds0.1.eps" },
/* 11*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 0, 1.1, "", "", "12", "dotcode_1.0_ds1.1.eps" },
/* 12*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 1.5, 0, "", "", "12", "dotcode_1.5.eps" },
/* 13*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 1.5, 0.4, "", "", "12", "dotcode_1.5_ds0.4.eps" },
/* 14*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 1.5, 1.1, "", "", "12", "dotcode_1.5_ds1.1.eps" },
/* 15*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 1.5, 2.1, "", "", "12", "dotcode_1.5_ds2.1.eps" },
/* 16*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 2, 0, "", "", "12", "dotcode_2.0.eps" },
/* 17*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 2, 0.9, "", "", "12", "dotcode_2.0_ds0.9.eps" },
/* 18*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 2, 1.1, "", "", "12", "dotcode_2.0_ds1.1.eps" },
/* 19*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 3, 0, "", "", "12", "dotcode_3.0.eps" },
/* 20*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 3, 0.4, "", "", "12", "dotcode_3.0_ds0.4.eps" },
/* 21*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 3, 1.1, "", "", "12", "dotcode_3.0_ds1.1.eps" },
/* 22*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 3.5, 0, "", "", "12", "dotcode_3.5.eps" },
/* 23*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 3.5, 0.4, "", "", "12", "dotcode_3.5_ds0.4.eps" },
/* 24*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 3.5, 1.1, "", "", "12", "dotcode_3.5_ds1.1.eps" },
/* 25*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 5, 0, "", "", "12", "dotcode_5.0.eps" },
/* 26*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 5, 0.2, "", "", "12", "dotcode_5.0_ds0.2.eps" },
/* 27*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 5, 1.1, "", "", "12", "dotcode_5.0_ds1.1.eps" },
/* 28*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, 5, 1.7, "", "", "12", "dotcode_5.0_ds1.7.eps" },
/* 0*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, 0, 0, "", "", 0, "Égjpqy", "code128_egrave_bold.eps" },
/* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, 0, 0, "", "", 90, "Égjpqy", "code128_egrave_bold_rotate_90.eps" },
/* 2*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 0, 0, "147AD0", "FC9630", 0, "123", "code39_fg_bg.eps" },
/* 3*/ { BARCODE_CODE39, -1, -1, CMYK_COLOUR, -1, -1, -1, -1, 0, 0, "147AD0EE", "FC9630", 0, "123", "code39_fgalpha_bg_cmyk.eps" },
/* 4*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, 0, 0, "147AD0", "FC9630", 0, "123", "ultra_fg_bg.eps" },
/* 5*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 2, -1, -1, -1, 0, 0, "0000FF", "FF0000", 0, "123", "ultra_fg_bg_box.eps" },
/* 6*/ { BARCODE_ULTRA, -1, 2, BARCODE_BOX | CMYK_COLOUR, 1, 1, -1, -1, 0, 0, "0000FF", "FF0000", 0, "123", "ultra_fg_bg_box_cmyk.eps" },
/* 7*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", 0, "9771384524017+12", "ean13_2addon_ggs_5.2.2.5.1-2.eps" },
/* 8*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", 0, "012345678905+24", "upca_2addon_ggs_5.2.6.6-5.eps" },
/* 9*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", 0, "0123456+12345", "upce_5addon.eps" },
/* 10*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, 0, 0, "", "", 0, "0123456+12345", "upce_5addon_small_bold.eps" },
/* 11*/ { BARCODE_CODE128, UNICODE_MODE, -1, -1, -1, -1, -1, -1, 0, 0, "", "", 0, "A\\B)ç(D", "code128_escape_latin1.eps" },
/* 12*/ { BARCODE_DBAR_LTD, -1, -1, BOLD_TEXT, -1, -1, -1, -1, 0, 0, "", "", 0, "1501234567890", "dbar_ltd_24724_fig7_bold.eps" },
/* 13*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", 0, "12", "dotcode_1.0.eps" },
/* 14*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 0, 0.1, "", "", 0, "12", "dotcode_1.0_ds0.1.eps" },
/* 15*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 0, 1.1, "", "", 0, "12", "dotcode_1.0_ds1.1.eps" },
/* 16*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 1.5, 0, "", "", 0, "12", "dotcode_1.5.eps" },
/* 17*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 1.5, 0.4, "", "", 0, "12", "dotcode_1.5_ds0.4.eps" },
/* 18*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 1.5, 1.1, "", "", 0, "12", "dotcode_1.5_ds1.1.eps" },
/* 19*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 1.5, 2.1, "", "", 0, "12", "dotcode_1.5_ds2.1.eps" },
/* 20*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 2, 0, "", "", 0, "12", "dotcode_2.0.eps" },
/* 21*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 2, 0.9, "", "", 0, "12", "dotcode_2.0_ds0.9.eps" },
/* 22*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 2, 1.1, "", "", 0, "12", "dotcode_2.0_ds1.1.eps" },
/* 23*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 3, 0, "", "", 0, "12", "dotcode_3.0.eps" },
/* 24*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 3, 0.4, "", "", 0, "12", "dotcode_3.0_ds0.4.eps" },
/* 25*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 3, 1.1, "", "", 0, "12", "dotcode_3.0_ds1.1.eps" },
/* 26*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 3.5, 0, "", "", 0, "12", "dotcode_3.5.eps" },
/* 27*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 3.5, 0.4, "", "", 0, "12", "dotcode_3.5_ds0.4.eps" },
/* 28*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 3.5, 1.1, "", "", 0, "12", "dotcode_3.5_ds1.1.eps" },
/* 29*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 5, 0, "", "", 0, "12", "dotcode_5.0.eps" },
/* 30*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 5, 0.2, "", "", 0, "12", "dotcode_5.0_ds0.2.eps" },
/* 31*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 5, 1.1, "", "", 0, "12", "dotcode_5.0_ds1.1.eps" },
/* 32*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 5, 1.7, "", "", 0, "12", "dotcode_5.0_ds1.7.eps" },
/* 33*/ { BARCODE_DOTCODE, -1, -1, -1, -1, -1, -1, -1, 0, 0, "FF0000", "0000FF00", 0, "12", "dotcode_no_bg.eps" },
/* 34*/ { BARCODE_MAXICODE, -1, -1, CMYK_COLOUR, -1, -1, -1, -1, 0, 0, "", "", 270, "12", "maxicode_rotate_270_cmyk.eps" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -110,9 +119,15 @@ static void test_print(int index, int generate, int debug) {
assert_nonnull(symbol, "Symbol not created\n");
length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug);
if (data[i].border_width != -1) {
symbol->border_width = data[i].border_width;
}
if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width;
}
if (data[i].whitespace_height != -1) {
symbol->whitespace_height = data[i].whitespace_height;
}
if (data[i].scale) {
symbol->scale = data[i].scale;
}
@ -130,15 +145,16 @@ static void test_print(int index, int generate, int debug) {
assert_zero(ret, "i:%d %s ZBarcode_Encode ret %d != 0 %s\n", i, testUtilBarcodeName(data[i].symbology), ret, symbol->errtxt);
strcpy(symbol->outfile, eps);
ret = ZBarcode_Print(symbol, 0);
ret = ZBarcode_Print(symbol, data[i].rotate_angle);
assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i);
if (generate) {
printf(" /*%3d*/ { %s, %s, %s, %d, %d, %d, %.5g, %.5g, \"%s\", \"%s\", \"%s\", \"%s\"},\n",
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), testUtilOutputOptionsName(data[i].output_options), data[i].whitespace_width,
data[i].option_1, data[i].option_2, data[i].scale, data[i].dot_size, data[i].fgcolour, data[i].bgcolour,
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %.5g, %.5g, \"%s\", \"%s\", %d, \"%s\", \"%s\"},\n",
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].border_width,
testUtilOutputOptionsName(data[i].output_options), data[i].whitespace_width, data[i].whitespace_height, data[i].option_1, data[i].option_2,
data[i].scale, data[i].dot_size, data[i].fgcolour, data[i].bgcolour, data[i].rotate_angle,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].expected_file);
ret = testUtilRename(symbol->outfile, expected_file);
assert_zero(ret, "i:%d testUtilRename(%s, %s) ret %d != 0\n", i, symbol->outfile, expected_file, ret);
@ -170,7 +186,7 @@ static void test_ps_convert(int index) {
char *expected;
};
struct item data[] = {
/* 0*/ { "1\\(é)2€3", "1\\\\\\(\351\\)23" },
/* 0*/ { "1\\(é)2€3¿", "1\\\\\\(\351\\)23\277" },
};
int data_size = ARRAY_SIZE(data);
int i;
@ -190,11 +206,42 @@ static void test_ps_convert(int index) {
testFinish();
}
INTERNAL int ps_plot(struct zint_symbol *symbol, int rotate_angle);
static void test_outfile(void) {
int ret;
struct zint_symbol symbol = {0};
struct zint_vector vector = {0};
testStart("test_outfile");
symbol.symbology = BARCODE_CODE128;
symbol.vector = &vector;
strcpy(symbol.outfile, "nosuch_dir/out.eps");
ret = ps_plot(&symbol, 0);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "ps_plot ret %d != ZINT_ERROR_FILE_ACCESS (%d) (%s)\n", ret, ZINT_ERROR_FILE_ACCESS, symbol.errtxt);
symbol.output_options |= BARCODE_STDOUT;
ret = ps_plot(&symbol, 0);
printf(" - ignore (EPS to stdout)\n"); fflush(stdout);
assert_zero(ret, "ps_plot ret %d != 0 (%s)\n", ret, symbol.errtxt);
symbol.vector = NULL;
ret = ps_plot(&symbol, 0);
assert_equal(ret, ZINT_ERROR_INVALID_DATA, "ps_plot ret %d != ZINT_ERROR_INVALID_DATA (%d) (%s)\n", ret, ZINT_ERROR_INVALID_DATA, symbol.errtxt);
testFinish();
}
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_print", test_print, 1, 1, 1 },
{ "test_ps_convert", test_ps_convert, 1, 0, 0 },
{ "test_outfile", test_outfile, 0, 0, 0 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -110,7 +110,7 @@ static void test_generate(int generate) {
}
}
static void test_encoding(int index) {
static void test_encoding(int index, int debug) {
struct item {
unsigned int prime_poly;
@ -141,6 +141,7 @@ static void test_encoding(int index) {
/* 15*/ { 0x43, 20, 1, 42, { 47, 40, 57, 3, 1, 19, 41, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33 }, { 1, 15, 22, 28, 39, 17, 60, 5, 35, 35, 4, 8, 0, 32, 51, 45, 63, 53, 61, 14 } }, // MAXICODE Annex H Secondary even
/* 16*/ { 0x11d, 10, 0, 16, { 0x10, 0x20, 0x0C, 0x56, 0x61, 0x80, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11 }, { 0xA5, 0x24, 0xD4, 0xC1, 0xED, 0x36, 0xC7, 0x87, 0x2C, 0x55 } }, // QRCODE Annex I.2
/* 17*/ { 0x11d, 5, 0, 5, { 0x40, 0x18, 0xAC, 0xC3, 0x00 }, { 0x86, 0x0D, 0x22, 0xAE, 0x30 } }, // QRCODE Annex I.3
/* 18*/ { 0x163, 256, 0, 1, { 0xFF }, { 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255 } },
};
int data_size = ARRAY_SIZE(data);
int i;
@ -158,8 +159,10 @@ static void test_encoding(int index) {
rs_init_code(&rs, data[i].nsym, data[i].index);
rs_encode(&rs, data[i].datalen, data[i].data, res);
//fprintf(stderr, "res "); for (j = data[i].nsym - 1; j >= 0; j--) fprintf(stderr, "%d ", res[j]); fprintf(stderr, "\n");
//fprintf(stderr, "exp "); for (j = 0; j < data[i].nsym; j++) fprintf(stderr, "%d ", data[i].expected[j]); fprintf(stderr, "\n");
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) {
fprintf(stderr, "res "); for (j = data[i].nsym - 1; j >= 0; j--) fprintf(stderr, "%d, ", res[j]); fprintf(stderr, "\n");
fprintf(stderr, "exp "); for (j = 0; j < data[i].nsym; j++) fprintf(stderr, "%d, ", data[i].expected[j]); fprintf(stderr, "\n");
}
for (j = 0; j < data[i].nsym; j++) {
int k = data[i].nsym - 1 - j;
assert_equal(res[k], data[i].expected[j], "i:%d res[%d] %d != expected[%d] %d\n", i, k, res[k], j, data[i].expected[j]);
@ -169,7 +172,69 @@ static void test_encoding(int index) {
testFinish();
}
static void test_encoding_uint(int index) {
static void test_encoding_uint(int index, int debug) {
struct item {
unsigned int prime_poly;
int nsym;
int index;
int datalen;
unsigned int data[256];
unsigned int expected[256];
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 0x43, 4, 1, 7, { 4, 20, 49, 37, 49, 38, 23 }, { 54, 17, 53, 58 } }, // AUSPOST Australia Post Customer Barcoding Technical Specifications Diagram 10
/* 1*/ { 0x43, 7, 1, 10, { 9, 50, 1, 41, 47, 2, 39, 37, 1, 27 }, { 38, 50, 8, 16, 10, 20, 40 } }, // AZTEC ISO/IEC 24778:2008 Section G.4
/* 2*/ { 0x13, 5, 1, 2, { 0, 9 }, { 12, 2, 3, 1, 9 } }, // AZTEC ISO/IEC 24778:2008 Section G.4 Mode Message
/* 3*/ { 0x12d, 5, 1, 3, { 142, 164, 186 }, { 114, 25, 5, 88, 102 } }, // DATAMATRIX ISO/IEC 16022:2006 Annex O
/* 4*/ { 0x89, 25, 1, 25, { 42, 13, 54, 39, 124, 91, 121, 65, 28, 40, 95, 48, 0, 126, 0, 126, 0, 126, 0, 126, 0, 126, 0, 126, 0 }, { 123, 47, 2, 20, 54, 112, 35, 23, 100, 89, 55, 17, 101, 4, 14, 33, 48, 62, 98, 52, 2, 79, 92, 70, 102 } }, // GRIDMATRIX AIMD014 Section 6.8
/* 5*/ { 0x163, 4, 1, 21, { 0x11, 0xED, 0xC8, 0xC5, 0x40, 0x0F, 0xF4 }, { 0xEB, 0xB4, 0x68, 0x1D } }, // HANXIN ISO/IEC DIS 20830:2019 Annex K.1
/* 6*/ { 0x163, 24, 1, 27, { 0x11, 0xED, 0xC8, 0xC5, 0x40, 0x0F, 0xF4, 0x8A, 0x2C, 0xC3, 0x4E, 0x3D, 0x09, 0x25, 0x9A, 0x7A, 0x29, 0xAB, 0xEA, 0x3E, 0x46, 0x4C, 0x7E, 0x73, 0xE8, 0x6C, 0xC7 }, { 0x08, 0x57, 0x0C, 0xE0, 0x7A, 0xA5, 0xDD, 0xA2, 0x99, 0xCF, 0xA4, 0x82, 0xAD, 0x11, 0xB0, 0x84, 0x74, 0x5D, 0x9A, 0x99, 0x0B, 0xCD, 0x49, 0x77 } }, // HANXIN ISO/IEC DIS 20830:2019 Annex K.2 1st block
/* 7*/ { 0x163, 24, 1, 27, { 0xE7, 0x3E, 0x33, 0x29, 0xE8, 0xFC, }, { 0xA2, 0xA7, 0x68, 0x8A, 0x5F, 0xE6, 0xAA, 0x11, 0xA6, 0x69, 0x4A, 0xCF, 0xCF, 0x20, 0x5D, 0x00, 0x1B, 0x79, 0xA1, 0xFE, 0xB7, 0x94, 0x03, 0x9B } }, // HANXIN ISO/IEC DIS 20830:2019 Annex K.2 2nd block
/* 8*/ { 0x163, 24, 1, 29, { 0x00 }, { 0x00 } }, // HANXIN ISO/IEC DIS 20830:2019 Annex K.2 3rd block
/* 9*/ { 0x25, 6, 1, 16, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 }, { 14, 7, 23, 3, 23, 15 } }, // MAILMARK Royal Mail Mailmark barcode C encoding and decoding Example 2.3.1
/* 10*/ { 0x25, 6, 1, 16, { 15, 22, 3, 25, 23, 26, 7, 3, 20, 14, 1, 4, 16, 3, 9, 28 }, { 27, 22, 24, 16, 6, 24 } }, // MAILMARK Royal Mail Mailmark barcode C encoding and decoding Example 2.3.2
/* 11*/ { 0x25, 7, 1, 19, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 }, { 20, 1, 20, 7, 14, 11, 18 } }, // MAILMARK Royal Mail Mailmark barcode L encoding and decoding Example 2.3.1
/* 12*/ { 0x25, 7, 1, 19, { 0, 8, 21, 10, 29, 1, 29, 21, 2, 24, 15, 2, 19, 1, 4, 15, 11, 4, 16 }, { 19, 7, 9, 8, 6, 16, 16 } }, // MAILMARK Royal Mail Mailmark barcode L encoding and decoding Example 2.3.2
/* 13*/ { 0x43, 10, 1, 10, { 4, 13, 63, 1, 24, 9, 59, 3, 15, 4 }, { 50, 2, 42, 51, 53, 34, 22, 20, 5, 16 } }, // MAXICODE Annex H Primary
/* 14*/ { 0x43, 20, 1, 42, { 5, 57, 49, 47, 8, 18, 59, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33 }, { 31, 2, 58, 6, 6, 39, 13, 63, 2, 30, 19, 19, 14, 19, 23, 17, 62, 8, 2, 23 } }, // MAXICODE Annex H Secondary odd
/* 15*/ { 0x43, 20, 1, 42, { 47, 40, 57, 3, 1, 19, 41, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33 }, { 1, 15, 22, 28, 39, 17, 60, 5, 35, 35, 4, 8, 0, 32, 51, 45, 63, 53, 61, 14 } }, // MAXICODE Annex H Secondary even
/* 16*/ { 0x11d, 10, 0, 16, { 0x10, 0x20, 0x0C, 0x56, 0x61, 0x80, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11 }, { 0xA5, 0x24, 0xD4, 0xC1, 0xED, 0x36, 0xC7, 0x87, 0x2C, 0x55 } }, // QRCODE Annex I.2
/* 17*/ { 0x11d, 5, 0, 5, { 0x40, 0x18, 0xAC, 0xC3, 0x00 }, { 0x86, 0x0D, 0x22, 0xAE, 0x30 } }, // QRCODE Annex I.3
/* 18*/ { 0x163, 256, 0, 1, { 0xFF }, { 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255 } },
};
int data_size = ARRAY_SIZE(data);
int i;
testStart("test_encoding_uint");
for (i = 0; i < data_size; i++) {
int j;
rs_t rs;
unsigned int res[1024];
if (index != -1 && i != index) continue;
rs_init_gf(&rs, data[i].prime_poly);
rs_init_code(&rs, data[i].nsym, data[i].index);
rs_encode_uint(&rs, data[i].datalen, data[i].data, res);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) {
fprintf(stderr, "res "); for (j = data[i].nsym - 1; j >= 0; j--) fprintf(stderr, "%d, ", res[j]); fprintf(stderr, "\n");
fprintf(stderr, "exp "); for (j = 0; j < data[i].nsym; j++) fprintf(stderr, "%d, ", data[i].expected[j]); fprintf(stderr, "\n");
}
for (j = 0; j < data[i].nsym; j++) {
int k = data[i].nsym - 1 - j;
assert_equal(res[k], data[i].expected[j], "i:%d res[%d] %d != expected[%d] %d\n", i, k, res[k], j, data[i].expected[j]);
}
}
testFinish();
}
static void test_uint_encoding(int index, int debug) {
struct item {
unsigned int prime_poly;
@ -185,11 +250,13 @@ static void test_encoding_uint(int index) {
struct item data[] = {
/* 0*/ { 0x409, 1023, 4, 1, 7, { 0x3FF, 0x000, 0x100, 0x1FF, 0x3FF, 0x000, 0x123 }, { 229, 153, 993, 674 } },
/* 1*/ { 0x1069, 4095, 4, 1, 7, { 0xFFF, 0x000, 0x700, 0x7FF, 0xFFF, 0x000, 0x123 }, { 3472, 2350, 3494, 575 } },
/* 2*/ { 0x1000, 4095, 4, 0, 7, { 0xFFF, 0x000, 0x700, 0x7FF, 0xFFF, 0x000, 0x123 }, { 1, 65, 0, 64 } },
/* 3*/ { 0x1000, 4095, 256, 0, 1, { 0xFFF }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 512, 0, 2048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
};
int data_size = ARRAY_SIZE(data);
int i;
testStart("test_encoding_uint");
testStart("test_uint_encoding");
for (i = 0; i < data_size; i++) {
int j;
@ -198,17 +265,35 @@ static void test_encoding_uint(int index) {
if (index != -1 && i != index) continue;
rs_uint_init_gf(&rs_uint, data[i].prime_poly, data[i].logmod);
assert_nonzero(rs_uint_init_gf(&rs_uint, data[i].prime_poly, data[i].logmod), "i:%d rs_uint_init_gf() == 0\n", i);
rs_uint_init_code(&rs_uint, data[i].nsym, data[i].index);
rs_uint_encode(&rs_uint, data[i].datalen, data[i].data, res);
rs_uint_free(&rs_uint);
//fprintf(stderr, "res "); for (j = data[i].nsym - 1; j >= 0; j--) fprintf(stderr, "%d ", res[j]); fprintf(stderr, "\n");
//fprintf(stderr, "exp "); for (j = 0; j < data[i].nsym; j++) fprintf(stderr, "%d ", data[i].expected[j]); fprintf(stderr, "\n");
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) {
fprintf(stderr, "res "); for (j = data[i].nsym - 1; j >= 0; j--) fprintf(stderr, "%d, ", res[j]); fprintf(stderr, "\n");
fprintf(stderr, "exp "); for (j = 0; j < data[i].nsym; j++) fprintf(stderr, "%d, ", data[i].expected[j]); fprintf(stderr, "\n");
}
for (j = 0; j < data[i].nsym; j++) {
int k = data[i].nsym - 1 - j;
assert_equal(res[k], data[i].expected[j], "i:%d res[%d] %d != expected[%d] %d\n", i, k, (int) res[k], j, (int) data[i].expected[j]);
}
/* Simulate rs_uint_init_gf() malloc() failure and rs_uint_init_gf()'s return val not being checked */
assert_nonzero(rs_uint_init_gf(&rs_uint, data[i].prime_poly, data[i].logmod), "i:%d rs_uint_init_gf() == 0\n", i);
free(rs_uint.logt);
rs_uint.logt = NULL;
free(rs_uint.alog);
rs_uint.alog = NULL;
rs_uint_init_code(&rs_uint, data[i].nsym, data[i].index);
rs_uint_encode(&rs_uint, data[i].datalen, data[i].data, res);
rs_uint_free(&rs_uint);
for (j = 0; j < data[i].nsym; j++) {
int k = data[i].nsym - 1 - j;
assert_zero(res[k], "i:%d res[%d] %d != 0\n", i, k, (int) res[k]);
}
}
testFinish();
@ -218,8 +303,9 @@ int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_generate", test_generate, 0, 1, 0 },
{ "test_encoding", test_encoding, 1, 0, 0 },
{ "test_encoding_uint", test_encoding_uint, 1, 0, 0 },
{ "test_encoding", test_encoding, 1, 0, 1 },
{ "test_encoding_uint", test_encoding_uint, 1, 0, 1 },
{ "test_uint_encoding", test_uint_encoding, 1, 0, 1 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -139,6 +139,7 @@ static void test_sjis_utf8(int index) {
/* 2*/ { "β", -1, 0, 1, { 0x83C0 }, "" },
/* 3*/ { "¥", -1, 0, 1, { 0x5C }, "" },
/* 4*/ { "aβcЖ¥・ソ‾\\\点茗テ", -1, 0, 13, { 'a', 0x83C0, 'c', 0x8447, 0x5C, 0xA5, 0xBF, 0x7E, 0x815F, 0x815F, 0x935F, 0xE4AA, 0x8365 }, "" },
/* 5*/ { "\200", -1, ZINT_ERROR_INVALID_DATA, -1, {0}, "Invalid UTF-8" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;

View File

@ -45,56 +45,64 @@ static void test_print(int index, int generate, int debug) {
int option_1;
int option_2;
float height;
char *fgcolour;
char *bgcolour;
int rotate_angle;
char *data;
char *composite;
int ret;
char *expected_file;
};
struct item data[] = {
/* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, -1, -1, 0, "<>\"&'", "", 0, "code128_amperands.svg" },
/* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, 0, "Égjpqy", "", 0, "code128_egrave_bold.svg" },
/* 2*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, 0, "Égjpqy", "", 0, "code128_egrave_bold_box3.svg" },
/* 3*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp2_box2.svg" },
/* 4*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, 3, 3, -1, -1, -1, 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp3.svg" },
/* 5*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, 0, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, "gs1_128_cc_fig12.svg" },
/* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, 0, "AAAAAAAAA", "", 0, "codablockf_3rows.svg" },
/* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.svg" },
/* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.svg" },
/* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.svg" },
/* 10*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.svg" },
/* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.svg" },
/* 12*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.svg" },
/* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.svg" },
/* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.svg" },
/* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, "614141234417+12345", "", 0, "upca_5addon.svg" },
/* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, 0, "614141234417+12345", "", 0, "upca_5addon_bind3.svg" },
/* 17*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, 0, "614141234417+12345", "", 0, "upca_5addon_small_bold.svg" },
/* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.svg" },
/* 19*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.svg" },
/* 20*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.svg" },
/* 21*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.svg" },
/* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, "1234567+12", "", 0, "upce_2addon.svg" },
/* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, "1234567+12345", "", 0, "upce_5addon.svg" },
/* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, "1234567+12345", "", 0, "upce_5addon_small.svg" },
/* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, 0, "1234567+12345", "", 0, "upce_5addon_notext.svg" },
/* 26*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.svg" },
/* 27*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.svg" },
/* 28*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.svg" },
/* 29*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "1234567+12", "", 0, "ean8_2addon.svg" },
/* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "1234567+12345", "", 0, "ean8_5addon.svg" },
/* 31*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.svg" },
/* 32*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.svg" },
/* 33*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "12345", "", 0, "ean5.svg" },
/* 34*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "12", "", 0, "ean2.svg" },
/* 35*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, "123", "", 0, "code39_small.svg" },
/* 36*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, 0, "12345", "", 0, "postnet_zip.svg" },
/* 37*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_box2.svg" },
/* 38*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.svg" },
/* 39*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_vwsp1_bind1_dotty.svg" },
/* 40*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_hvwsp1_bind1_dotty.svg" },
/* 41*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, "12345678909", "", 0, "dbar_ltd.svg" },
/* 42*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.svg" },
/* 43*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, "12345678901234567890", "", 0, "imail_height7.75.svg" },
/* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "<>\"&'", "", 0, "code128_amperands.svg" },
/* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold.svg" },
/* 2*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_box3.svg" },
/* 3*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp2_box2.svg" },
/* 4*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, 3, 3, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp3.svg" },
/* 5*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, 0, "", "", 0, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, "gs1_128_cc_fig12.svg" },
/* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_3rows.svg" },
/* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.svg" },
/* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.svg" },
/* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.svg" },
/* 10*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.svg" },
/* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.svg" },
/* 12*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.svg" },
/* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.svg" },
/* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.svg" },
/* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.svg" },
/* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.svg" },
/* 17*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_small_bold.svg" },
/* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.svg" },
/* 19*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.svg" },
/* 20*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.svg" },
/* 21*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.svg" },
/* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "upce_2addon.svg" },
/* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon.svg" },
/* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.svg" },
/* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_notext.svg" },
/* 26*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.svg" },
/* 27*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "FF0000EE", "0000FF11", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_fgbgalpha.svg" },
/* 28*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "FFFFFF00", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_nobg.svg" },
/* 29*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 270, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_rotate_270.svg" },
/* 30*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.svg" },
/* 31*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.svg" },
/* 32*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "ean8_2addon.svg" },
/* 33*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.svg" },
/* 34*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.svg" },
/* 35*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.svg" },
/* 36*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "ean5.svg" },
/* 37*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12", "", 0, "ean2.svg" },
/* 38*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, "", "", 0, "123", "", 0, "code39_small.svg" },
/* 39*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "postnet_zip.svg" },
/* 40*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_box2.svg" },
/* 41*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.svg" },
/* 42*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, "121212DD", "EEEEEE22", 90, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_fgbg_rotate_90.svg" },
/* 43*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_vwsp1_bind1_dotty.svg" },
/* 44*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_hvwsp1_bind1_dotty.svg" },
/* 45*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345678909", "", 0, "dbar_ltd.svg" },
/* 46*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.svg" },
/* 47*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.svg" },
/* 48*/ { BARCODE_ULTRA, -1, 3, BARCODE_BOX, 2, 2, -1, -1, -1, 0, "FF0000", "0000FF", 0, "12345678901234567890", "", 0, "ultra_fgbg_hvwsp2_box3.svg" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -149,6 +157,13 @@ static void test_print(int index, int generate, int debug) {
if (data[i].whitespace_height != -1) {
symbol->whitespace_height = data[i].whitespace_height;
}
if (*data[i].fgcolour) {
strcpy(symbol->fgcolour, data[i].fgcolour);
}
if (*data[i].bgcolour) {
strcpy(symbol->bgcolour, data[i].bgcolour);
}
if (strlen(data[i].composite)) {
text = data[i].composite;
strcpy(symbol->primary, data[i].data);
@ -161,15 +176,16 @@ static void test_print(int index, int generate, int debug) {
assert_equal(ret, data[i].ret, "i:%d %s ZBarcode_Encode ret %d != %d (%s)\n", i, testUtilBarcodeName(data[i].symbology), ret, data[i].ret, symbol->errtxt);
strcpy(symbol->outfile, svg);
ret = ZBarcode_Print(symbol, 0);
ret = ZBarcode_Print(symbol, data[i].rotate_angle);
assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i);
if (generate) {
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %.8g, \"%s\", \"%s\", \"%s\" },\n",
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].border_width, testUtilOutputOptionsName(data[i].output_options),
data[i].whitespace_width, data[i].whitespace_height, data[i].show_hrt, data[i].option_1, data[i].option_2, data[i].height,
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %.8g, \"%s\", \"%s\", %d, \"%s\", \"%s\", \"%s\" },\n",
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].border_width,
testUtilOutputOptionsName(data[i].output_options), data[i].whitespace_width, data[i].whitespace_height, data[i].show_hrt,
data[i].option_1, data[i].option_2, data[i].height, data[i].fgcolour, data[i].bgcolour, data[i].rotate_angle,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].expected_file);
ret = testUtilRename(symbol->outfile, expected_file);
assert_zero(ret, "i:%d testUtilRename(%s, %s) ret %d != 0\n", i, symbol->outfile, expected_file, ret);
@ -196,10 +212,41 @@ static void test_print(int index, int generate, int debug) {
testFinish();
}
INTERNAL int svg_plot(struct zint_symbol *symbol, int rotate_angle);
static void test_outfile(void) {
int ret;
struct zint_symbol symbol = {0};
struct zint_vector vector = {0};
testStart("test_outfile");
symbol.symbology = BARCODE_CODE128;
symbol.vector = &vector;
strcpy(symbol.outfile, "nosuch_dir/out.svg");
ret = svg_plot(&symbol, 0);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "svg_plot ret %d != ZINT_ERROR_FILE_ACCESS (%d) (%s)\n", ret, ZINT_ERROR_FILE_ACCESS, symbol.errtxt);
symbol.output_options |= BARCODE_STDOUT;
ret = svg_plot(&symbol, 0);
printf(" - ignore (SVG to stdout)\n"); fflush(stdout);
assert_zero(ret, "svg_plot ret %d != 0 (%s)\n", ret, symbol.errtxt);
symbol.vector = NULL;
ret = svg_plot(&symbol, 0);
assert_equal(ret, ZINT_ERROR_INVALID_DATA, "svg_plot ret %d != ZINT_ERROR_INVALID_DATA (%d) (%s)\n", ret, ZINT_ERROR_INVALID_DATA, symbol.errtxt);
testFinish();
}
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_print", test_print, 1, 1, 1 },
{ "test_outfile", test_outfile, 0, 0, 0 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -222,6 +222,9 @@ static void test_encode(int index, int generate, int debug) {
/* 8*/ { BARCODE_TELEPEN_NUM, "1X3X", -1, 0, 1, 80, "Verified manually against tec-it",
"10101010101110001110001110001110111010111000111010111010101110001110001010101010"
},
/* 9*/ { BARCODE_TELEPEN_NUM, "3637", -1, 0, 1, 80, "Glyph count 127, check 0; verified manually against tec-it",
"10101010101110001010101010101110111011101110101011101110111011101110001010101010"
},
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;

View File

@ -43,37 +43,38 @@ static void test_pixel_plot(int index, int debug) {
char *pattern;
int repeat;
int no_identify; // identify fails for some valid TIFFs (eg. RGB with LZW and large rows)
int ret;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { 1, 1, "1", 0, 0 },
/* 1*/ { 2, 1, "11", 0, 0 },
/* 2*/ { 1, 2, "11", 0, 0 },
/* 3*/ { 2, 2, "10", 1, 0 },
/* 4*/ { 3, 1, "101", 0, 0 },
/* 5*/ { 1, 3, "101", 0, 0 },
/* 6*/ { 4, 1, "1010", 0, 0 },
/* 7*/ { 1, 4, "1010", 0, 0 },
/* 8*/ { 5, 1, "10101", 0, 0 },
/* 9*/ { 1, 5, "10101", 0, 0 },
/* 10*/ { 3, 2, "101", 1, 0 },
/* 11*/ { 100, 2, "10", 1, 0 },
/* 12*/ { 2, 100, "10", 1, 0 },
/* 13*/ { 3, 3, "101010101", 0, 0 },
/* 14*/ { 4, 3, "10", 1, 0 },
/* 15*/ { 3, 4, "10", 1, 0 },
/* 16*/ { 45, 44, "10", 1, 0 }, // Strip Count 1, Rows Per Strip 44 (45 * 44 * 4 == 7920)
/* 17*/ { 45, 45, "10", 1, 0 }, // Strip Count 1, Rows Per Strip 45 (45 * 45 * 4 == 8100)
/* 18*/ { 46, 45, "10", 1, 0 }, // Strip Count 2, Rows Per Strip 44 (46 * 45 * 4 == 8280)
/* 19*/ { 46, 46, "10", 1, 0 }, // Strip Count 2, Rows Per Strip 44
/* 20*/ { 2048, 1, "10", 1, 1 }, // Strip Count 1, Rows Per Strip 1 (2048 * 4 == 8192)
/* 21*/ { 1, 2048, "10", 1, 0 }, // Strip Count 1, Rows Per Strip 2048
/* 22*/ { 2048, 2, "10", 1, 1 }, // Strip Count 2, Rows Per Strip 1
/* 23*/ { 2, 2048, "10", 1, 0 }, // Strip Count 2, Rows Per Strip 1024 (2 * 1024 * 4 == 8192)
/* 24*/ { 2048, 3, "10", 1, 1 }, // Strip Count 3, Rows Per Strip 1
/* 25*/ { 3, 2048, "10", 1, 0 }, // Strip Count 4, Rows Per Strip 682 ((3 * 682 + 2) * 4 == 8192)
/* 26*/ { 2049, 4, "10", 1, 1 }, // Strip Count 4, Rows Per Strip 1 (2049 * 1 * 4 == 8196) - large rows in 1 strip, even if > 8192
/* 27*/ { 4, 2049, "10", 1, 0 }, // Strip Count 5, Rows Per Strip 512 ((4 * 512 + 1) * 4 == 8196)
/* 0*/ { 1, 1, "1", 0, 0, 0 },
/* 1*/ { 2, 1, "11", 0, 0, 0 },
/* 2*/ { 1, 2, "11", 0, 0, 0 },
/* 3*/ { 2, 2, "10", 1, 0, 0 },
/* 4*/ { 3, 1, "101", 0, 0, 0 },
/* 5*/ { 1, 3, "101", 0, 0, 0 },
/* 6*/ { 4, 1, "1010", 0, 0, 0 },
/* 7*/ { 1, 4, "1010", 0, 0, 0 },
/* 8*/ { 5, 1, "10101", 0, 0, 0 },
/* 9*/ { 1, 5, "10101", 0, 0, 0 },
/* 10*/ { 3, 2, "101", 1, 0, 0 },
/* 11*/ { 100, 2, "10", 1, 0, 0 },
/* 12*/ { 2, 100, "10", 1, 0, 0 },
/* 13*/ { 3, 3, "101010101", 0, 0, 0 },
/* 14*/ { 4, 3, "10", 1, 0, 0 },
/* 15*/ { 3, 4, "10", 1, 0, 0 },
/* 16*/ { 45, 44, "10", 1, 0, 0 }, // Strip Count 1, Rows Per Strip 44 (45 * 44 * 4 == 7920)
/* 17*/ { 45, 45, "10", 1, 0, 0 }, // Strip Count 1, Rows Per Strip 45 (45 * 45 * 4 == 8100)
/* 18*/ { 46, 45, "10", 1, 0, 0 }, // Strip Count 2, Rows Per Strip 44 (46 * 45 * 4 == 8280)
/* 19*/ { 46, 46, "10", 1, 0, 0 }, // Strip Count 2, Rows Per Strip 44
/* 20*/ { 2048, 1, "10", 1, 1, 0 }, // Strip Count 1, Rows Per Strip 1 (2048 * 4 == 8192)
/* 21*/ { 1, 2048, "10", 1, 0, 0 }, // Strip Count 1, Rows Per Strip 2048
/* 22*/ { 2048, 2, "10", 1, 1, 0 }, // Strip Count 2, Rows Per Strip 1
/* 23*/ { 2, 2048, "10", 1, 0, 0 }, // Strip Count 2, Rows Per Strip 1024 (2 * 1024 * 4 == 8192)
/* 24*/ { 2048, 3, "10", 1, 1, 0 }, // Strip Count 3, Rows Per Strip 1
/* 25*/ { 3, 2048, "10", 1, 0, 0 }, // Strip Count 4, Rows Per Strip 682 ((3 * 682 + 2) * 4 == 8192)
/* 26*/ { 2049, 4, "10", 1, 1, 0 }, // Strip Count 4, Rows Per Strip 1 (2049 * 1 * 4 == 8196) - large rows in 1 strip, even if > 8192
/* 27*/ { 4, 2049, "10", 1, 0, 0 }, // Strip Count 5, Rows Per Strip 512 ((4 * 512 + 1) * 4 == 8196)
};
int data_size = ARRAY_SIZE(data);
int i, ret;
@ -117,18 +118,24 @@ static void test_pixel_plot(int index, int debug) {
symbol->bitmap = (unsigned char *) data_buf;
ret = tif_pixel_plot(symbol, (unsigned char *) data_buf);
assert_zero(ret, "i:%d tif_pixel_plot ret %d != 0 (%s)\n", i, ret, symbol->errtxt);
assert_equal(ret, data[i].ret, "i:%d tif_pixel_plot ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
if (have_tiffinfo) {
ret = testUtilVerifyTiffInfo(symbol->outfile, debug);
assert_zero(ret, "i:%d tiffinfo %s ret %d != 0\n", i, symbol->outfile, ret);
} else if (have_identify && !data[i].no_identify) {
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d identify %s ret %d != 0\n", i, symbol->outfile, ret);
}
if (ret < ZINT_ERROR) {
if (have_tiffinfo) {
ret = testUtilVerifyTiffInfo(symbol->outfile, debug);
assert_zero(ret, "i:%d tiffinfo %s ret %d != 0\n", i, symbol->outfile, ret);
} else if (have_identify && !data[i].no_identify) {
ret = testUtilVerifyIdentify(symbol->outfile, debug);
assert_zero(ret, "i:%d identify %s ret %d != 0\n", i, symbol->outfile, ret);
}
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile);
}
} else {
if (!(debug & ZINT_DEBUG_TEST_KEEP_OUTFILE)) {
(void) remove(symbol->outfile);
}
}
symbol->bitmap = NULL;
@ -147,6 +154,7 @@ static void test_print(int index, int generate, int debug) {
int border_width;
int output_options;
int whitespace_width;
int whitespace_height;
int show_hrt;
int option_1;
int option_2;
@ -160,22 +168,27 @@ static void test_print(int index, int generate, int debug) {
char *comment;
};
struct item data[] = {
/* 0*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, 0, 0, "112233", "EEDDCC", "A", "", "code128_fgbg.tif", "" },
/* 1*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, 0, 0, "C00000", "FEDCBACC", "A", "", "code128_bgalpha.tif", "" },
/* 2*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, 0, 0, "00000099", "FEDCBA", "A", "", "code128_fgalpha.tif", "" },
/* 3*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, 0, 0, "00000099", "FEDCBACC", "A", "", "code128_fgbgalpha.tif", "" },
/* 4*/ { BARCODE_CODE128, -1, -1, CMYK_COLOUR, 1, -1, -1, -1, 0, 0, "C00000", "FEDCBA", "A", "", "code128_cmyk.tif", "" },
/* 5*/ { BARCODE_CODE128, -1, -1, CMYK_COLOUR, 1, -1, -1, -1, 0, 0, "C0000099", "FEDCBACC", "A", "", "code128_cmyk_fgbgalpha.tif", "" },
/* 6*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, 0, 0, "C00000", "FEDCBACC", "1234", "", "ultra_bgalpha.tif", "" },
/* 7*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, 0, 0, "000000BB", "FEDCBA", "1234", "", "ultra_fgalpha.tif", "" },
/* 8*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, 0, 0, "000000BB", "FEDCBACC", "1234", "", "ultra_fgbgalpha.tif", "" },
/* 9*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, 0, 0, "000000BB", "", "1234", "", "ultra_fgalpha_nobg.tif", "" },
/* 10*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, 0, 0, "", "FEDCBACC", "1234", "", "ultra_bgalpha_nofg.tif", "" },
/* 11*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, 0, 0.5f, "", "", "1", "", "ultra_odd.tif", "" },
/* 12*/ { BARCODE_HANXIN, UNICODE_MODE, -1, -1, -1, -1, 4, 84, 0, 2, "", "", "1", "", "hanxin_v84_l4_scale2.tif", "" },
/* 13*/ { BARCODE_AZTEC, -1, -1, -1, -1, -1, -1, 32, 0, 0, "4BE055", "", "1", "", "aztec_v32_fg.tif", "" },
/* 14*/ { BARCODE_DAFT, -1, -1, -1, -1, -1, -1, -1, 8, 0.5f, "", "", "F", "", "daft_height8_scale0.5.tif", "" },
/* 15*/ { BARCODE_DAFT, -1, -1, -1, -1, -1, -1, -1, 1, 0.5f, "", "", "DAFT", "", "daft_height1_scale0.5.tif", "" },
/* 0*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "112233", "EEDDCC", "A", "", "code128_fgbg.tif", "" },
/* 1*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "FFFFFF", "000000", "A", "", "code128_reverse.tif", "" },
/* 2*/ { BARCODE_CODE128, -1, -1, CMYK_COLOUR, 1, -1, -1, -1, -1, 0, 0, "112233", "CCDDEE", "A", "", "code128_cmyk_fgbg.tif", "" },
/* 3*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "C00000", "FEDCBACC", "A", "", "code128_bgalpha.tif", "" },
/* 4*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "00000099", "FEDCBA", "A", "", "code128_fgalpha.tif", "" },
/* 5*/ { BARCODE_CODE128, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "00000099", "FEDCBACC", "A", "", "code128_fgbgalpha.tif", "" },
/* 6*/ { BARCODE_CODE128, -1, -1, CMYK_COLOUR, 1, -1, -1, -1, -1, 0, 0, "C00000", "FEDCBA", "A", "", "code128_cmyk.tif", "" },
/* 7*/ { BARCODE_CODE128, -1, -1, CMYK_COLOUR, 1, -1, -1, -1, -1, 0, 0, "C0000099", "FEDCBACC", "A", "", "code128_cmyk_fgbgalpha.tif", "" },
/* 8*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "C00000", "FEDCBACC", "1234", "", "ultra_bgalpha.tif", "" },
/* 9*/ { BARCODE_ULTRA, -1, -1, CMYK_COLOUR, 1, -1, -1, -1, -1, 0, 0, "C00000", "FEDCBACC", "1234", "", "ultra_cmyk_bgalpha.tif", "" },
/* 10*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "000000BB", "FEDCBA", "1234", "", "ultra_fgalpha.tif", "" },
/* 11*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "000000BB", "FEDCBACC", "1234", "", "ultra_fgbgalpha.tif", "" },
/* 12*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "000000BB", "", "1234", "", "ultra_fgalpha_nobg.tif", "" },
/* 13*/ { BARCODE_ULTRA, -1, -1, -1, 1, -1, -1, -1, -1, 0, 0, "", "FEDCBACC", "1234", "", "ultra_bgalpha_nofg.tif", "" },
/* 14*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5f, "", "", "1", "", "ultra_odd.tif", "" },
/* 15*/ { BARCODE_ULTRA, -1, -1, CMYK_COLOUR, 1, -1, -1, -1, -1, 0, 0, "", "", "1234", "", "ultra_cmyk.tif", "" },
/* 16*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, "FF0000", "0000FF", "1234", "", "ultra_fgbg_hvwsp1_box1.tif", "" },
/* 17*/ { BARCODE_HANXIN, UNICODE_MODE, -1, -1, -1, -1, -1, 4, 84, 0, 2, "", "", "1", "", "hanxin_v84_l4_scale2.tif", "" },
/* 18*/ { BARCODE_AZTEC, -1, -1, -1, -1, -1, -1, -1, 32, 0, 0, "4BE055", "", "1", "", "aztec_v32_fg.tif", "" },
/* 19*/ { BARCODE_DAFT, -1, -1, -1, -1, -1, -1, -1, -1, 8, 0.5f, "", "", "F", "", "daft_height8_scale0.5.tif", "" },
/* 20*/ { BARCODE_DAFT, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0.5f, "", "", "DAFT", "", "daft_height1_scale0.5.tif", "" },
};
int data_size = ARRAY_SIZE(data);
int i, length, ret;
@ -226,6 +239,9 @@ static void test_print(int index, int generate, int debug) {
if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width;
}
if (data[i].whitespace_height != -1) {
symbol->whitespace_height = data[i].whitespace_height;
}
if (*data[i].fgcolour) {
strcpy(symbol->fgcolour, data[i].fgcolour);
}
@ -250,9 +266,10 @@ static void test_print(int index, int generate, int debug) {
assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i);
if (generate) {
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %.5g, \"%s\",\"%s\", \"%s\", \"%s\", \"%s\", \"%s\" },\n",
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %d, %.5g, \"%s\",\"%s\", \"%s\", \"%s\", \"%s\", \"%s\" },\n",
i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].border_width, testUtilOutputOptionsName(data[i].output_options),
data[i].whitespace_width, data[i].show_hrt, data[i].option_1, data[i].option_2, data[i].height, data[i].scale, data[i].fgcolour, data[i].bgcolour,
data[i].whitespace_width, data[i].whitespace_height, data[i].show_hrt, data[i].option_1, data[i].option_2,
data[i].height, data[i].scale, data[i].fgcolour, data[i].bgcolour,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].expected_file, data[i].comment);
ret = testUtilRename(symbol->outfile, expected_file);
assert_zero(ret, "i:%d testUtilRename(%s, %s) ret %d != 0\n", i, symbol->outfile, expected_file, ret);
@ -278,11 +295,37 @@ static void test_print(int index, int generate, int debug) {
testFinish();
}
static void test_outfile(void) {
int ret;
struct zint_symbol symbol = {0};
unsigned char data[] = { "1" };
testStart("test_outfile");
symbol.symbology = BARCODE_CODE128;
symbol.bitmap = data;
symbol.bitmap_width = symbol.bitmap_height = 1;
strcpy(symbol.outfile, "nosuch_dir/out.tif");
ret = tif_pixel_plot(&symbol, data);
assert_equal(ret, ZINT_ERROR_FILE_ACCESS, "tif_pixel_plot ret %d != ZINT_ERROR_FILE_ACCESS (%d) (%s)\n", ret, ZINT_ERROR_FILE_ACCESS, symbol.errtxt);
symbol.output_options |= BARCODE_STDOUT;
ret = tif_pixel_plot(&symbol, data);
printf(" - ignore (TIF to stdout)\n"); fflush(stdout);
assert_zero(ret, "tif_pixel_plot ret %d != 0 (%s)\n", ret, symbol.errtxt);
testFinish();
}
int main(int argc, char *argv[]) {
testFunction funcs[] = { /* name, func, has_index, has_generate, has_debug */
{ "test_pixel_plot", test_pixel_plot, 1, 0, 1 },
{ "test_print", test_print, 1, 1, 1 },
{ "test_outfile", test_outfile, 0, 0, 0 },
};
testRun(argc, argv, funcs, ARRAY_SIZE(funcs));

View File

@ -828,15 +828,18 @@ int testUtilSymbolCmp(const struct zint_symbol *a, const struct zint_symbol *b)
if (a->whitespace_width != b->whitespace_width) {
return 6;
}
if (a->border_width != b->border_width) {
if (a->whitespace_height != b->whitespace_height) {
return 7;
}
if (a->output_options != b->output_options) {
if (a->border_width != b->border_width) {
return 8;
}
if (a->scale != b->scale) {
if (a->output_options != b->output_options) {
return 9;
}
if (a->scale != b->scale) {
return 10;
}
return 0;
}
@ -1051,7 +1054,7 @@ int testUtilVectorCmp(const struct zint_vector *a, const struct zint_vector *b)
return 0;
}
/* Dump modules into buffer as '0'/'1' (or colours 'W', 'C', 'B' etc if Ultra) */
/* Dump modules into buffer as '0'/'1' (or colours '0', '1', '2' etc if Ultra) */
int testUtilModulesDump(const struct zint_symbol *symbol, char dump[], int dump_size) {
int r, w;
char *d = dump;
@ -2107,7 +2110,7 @@ static const char *testUtilBwippName(int index, const struct zint_symbol *symbol
{ "itf14", BARCODE_ITF14, 89, 0, 0, 0, 0, 0, },
{ "kix", BARCODE_KIX, 90, 0, 0, 0, 0, 0, },
{ "", -1, 91, 0, 0, 0, 0, 0, },
{ "azteccode", BARCODE_AZTEC, 92, 0, 1, 0, 0, 0, },
{ "azteccode", BARCODE_AZTEC, 92, 1, 1, 0, 0, 0, },
{ "daft", BARCODE_DAFT, 93, 0, 0, 0, 0, 0, },
{ "", -1, 94, 0, 0, 0, 0, 0, },
{ "", -1, 95, 0, 0, 0, 0, 0, },
@ -2207,6 +2210,14 @@ static const char *testUtilBwippName(int index, const struct zint_symbol *symbol
}
return NULL;
}
} else if (symbology == BARCODE_AZTEC) {
if (option_1 > 0 && option_2 > 0) {
if (debug & ZINT_DEBUG_TEST_PRINT) {
printf("i:%d %s not BWIPP compatible, cannot specify both option_1 %d and option_2 %d\n",
index, testUtilBarcodeName(symbology), option_1, option_2);
}
return NULL;
}
}
if (linear_row_height) {