Add whitespace_height to zint_symbol (vertical whitespace)

This commit is contained in:
gitlost
2021-05-25 20:42:26 +01:00
parent ed761e897d
commit 00e8cb0904
36 changed files with 1555 additions and 350 deletions

View File

@ -1,7 +1,7 @@
/* output.c - Common routines for raster/vector
libzint - the open source barcode library
Copyright (C) 2020 Robin Stuart <rstuart114@gmail.com>
Copyright (C) 2020 - 2021 Robin Stuart <rstuart114@gmail.com>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@ -418,8 +418,8 @@ INTERNAL void output_set_whitespace_offsets(struct zint_symbol *symbol, int *xof
*roffset += symbol->border_width;
}
*yoffset = qz_top;
*boffset = qz_bottom;
*yoffset = symbol->whitespace_height + qz_top;
*boffset = symbol->whitespace_height + qz_bottom;
if (symbol->output_options & (BARCODE_BOX | BARCODE_BIND)) {
*yoffset += symbol->border_width;
*boffset += symbol->border_width;

View File

@ -733,21 +733,22 @@ static int plot_raster_maxicode(struct zint_symbol *symbol, const int rotate_ang
draw_bullseye(pixelbuf, image_width, image_height, hex_width, hex_height, hx_start, hx_end, hex_image_height,
xoffset, yoffset, scaler);
if (symbol->border_width > 0) {
if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) {
/* boundary bars */
const int border_scaled = (int) floorf(symbol->border_width * scaler);
if ((symbol->output_options & BARCODE_BOX) || (symbol->output_options & BARCODE_BIND)) {
/* boundary bars */
draw_bar(pixelbuf, 0, image_width, 0, border_scaled, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, 0, image_width, hex_image_height + border_scaled, border_scaled, image_width,
image_height, DEFAULT_INK);
}
const int vwhitesp_scaled = (int) floorf(symbol->whitespace_height * scaler);
const int ybind_top = hex_image_height + border_scaled + vwhitesp_scaled;
draw_bar(pixelbuf, 0, image_width, vwhitesp_scaled, border_scaled, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, 0, image_width, ybind_top, border_scaled, image_width, image_height, DEFAULT_INK);
if (symbol->output_options & BARCODE_BOX) {
/* side bars */
const int whitesp_scaled = (int) floorf(symbol->whitespace_width * scaler);
draw_bar(pixelbuf, 0, border_scaled, 0, image_height, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, hex_image_width + border_scaled + whitesp_scaled * 2, border_scaled, 0, image_height,
image_width, image_height, DEFAULT_INK);
const int xbox_right = hex_image_width + border_scaled + whitesp_scaled * 2;
const int ybox_top = border_scaled + vwhitesp_scaled;
const int ylen = image_height - (border_scaled + vwhitesp_scaled) * 2;
draw_bar(pixelbuf, 0, border_scaled, ybox_top, ylen, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, xbox_right, border_scaled, ybox_top, ylen, image_width, image_height, DEFAULT_INK);
}
}
@ -767,6 +768,38 @@ static int plot_raster_maxicode(struct zint_symbol *symbol, const int rotate_ang
return error_number;
}
/* Draw binding or box */
static void draw_bind_box(struct zint_symbol *symbol, unsigned char *pixelbuf, const int xoffset, const int roffset,
const int textoffset, const int overspill_scaled, const int image_width, const int image_height,
const int si) {
if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) {
const int bwidth = symbol->border_width * si;
const int ybind_bottom = (textoffset + symbol->whitespace_height) * si;
const int ybind_top = (textoffset + symbol->whitespace_height + symbol->height) * si + overspill_scaled + bwidth;
/* Horizontal boundary bars */
if ((symbol->output_options & BARCODE_BOX)
|| (symbol->symbology != BARCODE_CODABLOCKF && symbol->symbology != BARCODE_HIBC_BLOCKF)) {
/* Box or not CodaBlockF */
const int xlen = (symbol->width + xoffset + roffset) * si + overspill_scaled;
draw_bar(pixelbuf, 0, xlen, ybind_bottom, bwidth, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, 0, xlen, ybind_top, bwidth, image_width, image_height, DEFAULT_INK);
} else {
/* CodaBlockF bind - does not extend over horizontal whitespace */
const int xlen = symbol->width * si;
draw_bar(pixelbuf, xoffset * si, xlen, ybind_bottom, bwidth, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, xoffset * si, xlen, ybind_top, bwidth, image_width, image_height, DEFAULT_INK);
}
if (symbol->output_options & BARCODE_BOX) {
/* Vertical side bars */
const int ylen = (symbol->height + symbol->border_width * 2) * si;
const int ybox = (textoffset + symbol->whitespace_height) * si;
const int xbox_right = (symbol->width + xoffset + roffset - symbol->border_width) * si + overspill_scaled;
draw_bar(pixelbuf, 0, bwidth, ybox, ylen, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, xbox_right, bwidth, ybox, ylen, image_width, image_height, DEFAULT_INK);
}
}
}
static int plot_raster_dotty(struct zint_symbol *symbol, const int rotate_angle, const int file_type) {
float scaler = 2 * symbol->scale;
unsigned char *scaled_pixelbuf;
@ -824,7 +857,8 @@ static int plot_raster_dotty(struct zint_symbol *symbol, const int rotate_angle,
}
}
// TODO: bind/box
draw_bind_box(symbol, scaled_pixelbuf, xoffset, roffset, 0 /*textoffset*/, dot_overspill_scaled,
scale_width, scale_height, (int) floorf(scaler));
error_number = save_raster_image_to_file(symbol, scale_height, scale_width, scaled_pixelbuf, rotate_angle, file_type);
if (rotate_angle || file_type != OUT_BUFFER || !(symbol->output_options & OUT_BUFFER_INTERMEDIATE)) {
@ -967,7 +1001,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
}
memset(pixelbuf, DEFAULT_PAPER, (size_t) image_width * image_height);
default_text_posn = image_height - (textoffset - text_gap) * si;
default_text_posn = image_height - (textoffset - text_gap + symbol->whitespace_height) * si;
row_height = 0.0f;
row_posn = textoffset + boffset; /* Bottom up */
@ -1212,7 +1246,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
xoffset -= comp_offset;
// Binding and boxes
if ((symbol->output_options & BARCODE_BIND) != 0) {
if (symbol->output_options & BARCODE_BIND) {
if ((symbol->rows > 1) && (is_stackable(symbol->symbology) == 1)) {
float sep_height = 1.0f;
if (symbol->option_3 > 0 && symbol->option_3 <= 4) {
@ -1235,29 +1269,8 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
}
}
}
if (symbol->border_width > 0) {
if ((symbol->output_options & BARCODE_BOX) || (symbol->output_options & BARCODE_BIND)) {
/* boundary bars */
if ((symbol->output_options & BARCODE_BOX) || (symbol->symbology != BARCODE_CODABLOCKF && symbol->symbology != BARCODE_HIBC_BLOCKF)) {
draw_bar(pixelbuf, 0, (symbol->width + xoffset + roffset) * si,
textoffset * si, symbol->border_width * si, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, 0, (symbol->width + xoffset + roffset) * si,
(textoffset + symbol->height + symbol->border_width) * si, symbol->border_width * si, image_width, image_height, DEFAULT_INK);
} else {
draw_bar(pixelbuf, xoffset * si, symbol->width * si,
textoffset * si, symbol->border_width * si, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, xoffset * si, symbol->width * si,
(textoffset + symbol->height + symbol->border_width) * si, symbol->border_width * si, image_width, image_height, DEFAULT_INK);
}
}
if ((symbol->output_options & BARCODE_BOX)) {
/* side bars */
draw_bar(pixelbuf, 0, symbol->border_width * si,
textoffset * si, (symbol->height + (2 * symbol->border_width)) * si, image_width, image_height, DEFAULT_INK);
draw_bar(pixelbuf, (symbol->width + xoffset + roffset - symbol->border_width) * si, symbol->border_width * si,
textoffset * si, (symbol->height + (2 * symbol->border_width)) * si, image_width, image_height, DEFAULT_INK);
}
}
draw_bind_box(symbol, pixelbuf, xoffset, roffset, textoffset, 0 /*overspill*/, image_width, image_height, si);
if (!half_int_scaling) {
scale_width = image_width * scaler;

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,63 @@
<?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="250" height="72" 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="250" height="72" fill="#FFFFFF" />
<rect x="24.00" y="6.00" width="4.00" height="60.00" />
<rect x="30.00" y="6.00" width="2.00" height="60.00" />
<rect x="40.00" y="6.00" width="2.00" height="60.00" />
<rect x="46.00" y="6.00" width="2.00" height="60.00" />
<rect x="50.00" y="6.00" width="8.00" height="60.00" />
<rect x="60.00" y="6.00" width="6.00" height="60.00" />
<rect x="68.00" y="6.00" width="2.00" height="20.00" />
<rect x="74.00" y="6.00" width="2.00" height="20.00" />
<rect x="78.00" y="6.00" width="4.00" height="20.00" />
<rect x="90.00" y="6.00" width="2.00" height="60.00" />
<rect x="94.00" y="6.00" width="2.00" height="60.00" />
<rect x="102.00" y="6.00" width="4.00" height="60.00" />
<rect x="112.00" y="6.00" width="2.00" height="60.00" />
<rect x="116.00" y="6.00" width="2.00" height="40.00" />
<rect x="124.00" y="6.00" width="4.00" height="40.00" />
<rect x="134.00" y="6.00" width="2.00" height="40.00" />
<rect x="138.00" y="6.00" width="2.00" height="40.00" />
<rect x="146.00" y="6.00" width="4.00" height="40.00" />
<rect x="156.00" y="6.00" width="2.00" height="40.00" />
<rect x="160.00" y="6.00" width="2.00" height="40.00" />
<rect x="168.00" y="6.00" width="4.00" height="40.00" />
<rect x="178.00" y="6.00" width="4.00" height="20.00" />
<rect x="184.00" y="6.00" width="4.00" height="20.00" />
<rect x="192.00" y="6.00" width="4.00" height="20.00" />
<rect x="200.00" y="6.00" width="4.00" height="60.00" />
<rect x="210.00" y="6.00" width="6.00" height="60.00" />
<rect x="218.00" y="6.00" width="2.00" height="60.00" />
<rect x="222.00" y="6.00" width="4.00" height="60.00" />
<rect x="68.00" y="26.00" width="4.00" height="20.00" />
<rect x="78.00" y="26.00" width="2.00" height="20.00" />
<rect x="84.00" y="26.00" width="2.00" height="20.00" />
<rect x="178.00" y="26.00" width="8.00" height="20.00" />
<rect x="188.00" y="26.00" width="2.00" height="40.00" />
<rect x="196.00" y="26.00" width="2.00" height="20.00" />
<rect x="68.00" y="46.00" width="2.00" height="20.00" />
<rect x="72.00" y="46.00" width="4.00" height="20.00" />
<rect x="80.00" y="46.00" width="6.00" height="20.00" />
<rect x="116.00" y="46.00" width="6.00" height="20.00" />
<rect x="124.00" y="46.00" width="8.00" height="20.00" />
<rect x="134.00" y="46.00" width="4.00" height="20.00" />
<rect x="142.00" y="46.00" width="4.00" height="20.00" />
<rect x="148.00" y="46.00" width="4.00" height="20.00" />
<rect x="156.00" y="46.00" width="4.00" height="20.00" />
<rect x="164.00" y="46.00" width="6.00" height="20.00" />
<rect x="174.00" y="46.00" width="2.00" height="20.00" />
<rect x="178.00" y="46.00" width="4.00" height="20.00" />
<rect x="194.00" y="46.00" width="2.00" height="20.00" />
<rect x="46.00" y="25.00" width="154.00" height="2.00" />
<rect x="46.00" y="45.00" width="154.00" height="2.00" />
<rect x="24.00" y="4.00" width="202.00" height="2.00" />
<rect x="24.00" y="66.00" width="202.00" height="2.00" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,65 @@
<?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="258" height="76" 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="258" height="76" fill="#FFFFFF" />
<rect x="28.00" y="8.00" width="4.00" height="60.00" />
<rect x="34.00" y="8.00" width="2.00" height="60.00" />
<rect x="44.00" y="8.00" width="2.00" height="60.00" />
<rect x="50.00" y="8.00" width="2.00" height="60.00" />
<rect x="54.00" y="8.00" width="8.00" height="60.00" />
<rect x="64.00" y="8.00" width="6.00" height="60.00" />
<rect x="72.00" y="8.00" width="2.00" height="20.00" />
<rect x="78.00" y="8.00" width="2.00" height="20.00" />
<rect x="82.00" y="8.00" width="4.00" height="20.00" />
<rect x="94.00" y="8.00" width="2.00" height="60.00" />
<rect x="98.00" y="8.00" width="2.00" height="60.00" />
<rect x="106.00" y="8.00" width="4.00" height="60.00" />
<rect x="116.00" y="8.00" width="2.00" height="60.00" />
<rect x="120.00" y="8.00" width="2.00" height="40.00" />
<rect x="128.00" y="8.00" width="4.00" height="40.00" />
<rect x="138.00" y="8.00" width="2.00" height="40.00" />
<rect x="142.00" y="8.00" width="2.00" height="40.00" />
<rect x="150.00" y="8.00" width="4.00" height="40.00" />
<rect x="160.00" y="8.00" width="2.00" height="40.00" />
<rect x="164.00" y="8.00" width="2.00" height="40.00" />
<rect x="172.00" y="8.00" width="4.00" height="40.00" />
<rect x="182.00" y="8.00" width="4.00" height="20.00" />
<rect x="188.00" y="8.00" width="4.00" height="20.00" />
<rect x="196.00" y="8.00" width="4.00" height="20.00" />
<rect x="204.00" y="8.00" width="4.00" height="60.00" />
<rect x="214.00" y="8.00" width="6.00" height="60.00" />
<rect x="222.00" y="8.00" width="2.00" height="60.00" />
<rect x="226.00" y="8.00" width="4.00" height="60.00" />
<rect x="72.00" y="28.00" width="4.00" height="20.00" />
<rect x="82.00" y="28.00" width="2.00" height="20.00" />
<rect x="88.00" y="28.00" width="2.00" height="20.00" />
<rect x="182.00" y="28.00" width="8.00" height="20.00" />
<rect x="192.00" y="28.00" width="2.00" height="40.00" />
<rect x="200.00" y="28.00" width="2.00" height="20.00" />
<rect x="72.00" y="48.00" width="2.00" height="20.00" />
<rect x="76.00" y="48.00" width="4.00" height="20.00" />
<rect x="84.00" y="48.00" width="6.00" height="20.00" />
<rect x="120.00" y="48.00" width="6.00" height="20.00" />
<rect x="128.00" y="48.00" width="8.00" height="20.00" />
<rect x="138.00" y="48.00" width="4.00" height="20.00" />
<rect x="146.00" y="48.00" width="4.00" height="20.00" />
<rect x="152.00" y="48.00" width="4.00" height="20.00" />
<rect x="160.00" y="48.00" width="4.00" height="20.00" />
<rect x="168.00" y="48.00" width="6.00" height="20.00" />
<rect x="178.00" y="48.00" width="2.00" height="20.00" />
<rect x="182.00" y="48.00" width="4.00" height="20.00" />
<rect x="198.00" y="48.00" width="2.00" height="20.00" />
<rect x="50.00" y="27.00" width="154.00" height="2.00" />
<rect x="50.00" y="47.00" width="154.00" height="2.00" />
<rect x="0.00" y="4.00" width="258.00" height="4.00" />
<rect x="0.00" y="68.00" width="258.00" height="4.00" />
<rect x="0.00" y="8.00" width="4.00" height="60.00" />
<rect x="254.00" y="8.00" width="4.00" height="60.00" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -41,8 +41,8 @@
<rect x="226.00" y="6.00" width="4.00" height="100.00" />
<rect x="0.00" y="0.00" width="236.00" height="6.00" />
<rect x="0.00" y="106.00" width="236.00" height="6.00" />
<rect x="0.00" y="0.00" width="6.00" height="112.00" />
<rect x="230.00" y="0.00" width="6.00" height="112.00" />
<rect x="0.00" y="6.00" width="6.00" height="100.00" />
<rect x="230.00" y="6.00" width="6.00" height="100.00" />
<text x="118.00" y="127.40" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="14.0" font-weight="bold" >
Égjpqy

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,51 @@
<?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="240" height="135" 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="240" height="135" fill="#FFFFFF" />
<rect x="8.00" y="8.00" width="4.00" height="100.00" />
<rect x="14.00" y="8.00" width="2.00" height="100.00" />
<rect x="20.00" y="8.00" width="2.00" height="100.00" />
<rect x="30.00" y="8.00" width="2.00" height="100.00" />
<rect x="34.00" y="8.00" width="8.00" height="100.00" />
<rect x="44.00" y="8.00" width="6.00" height="100.00" />
<rect x="52.00" y="8.00" width="4.00" height="100.00" />
<rect x="62.00" y="8.00" width="2.00" height="100.00" />
<rect x="70.00" y="8.00" width="2.00" height="100.00" />
<rect x="74.00" y="8.00" width="2.00" height="100.00" />
<rect x="80.00" y="8.00" width="4.00" height="100.00" />
<rect x="86.00" y="8.00" width="2.00" height="100.00" />
<rect x="96.00" y="8.00" width="2.00" height="100.00" />
<rect x="106.00" y="8.00" width="4.00" height="100.00" />
<rect x="114.00" y="8.00" width="2.00" height="100.00" />
<rect x="118.00" y="8.00" width="2.00" height="100.00" />
<rect x="122.00" y="8.00" width="2.00" height="100.00" />
<rect x="128.00" y="8.00" width="8.00" height="100.00" />
<rect x="140.00" y="8.00" width="2.00" height="100.00" />
<rect x="146.00" y="8.00" width="2.00" height="100.00" />
<rect x="150.00" y="8.00" width="8.00" height="100.00" />
<rect x="162.00" y="8.00" width="4.00" height="100.00" />
<rect x="168.00" y="8.00" width="4.00" height="100.00" />
<rect x="174.00" y="8.00" width="8.00" height="100.00" />
<rect x="184.00" y="8.00" width="2.00" height="100.00" />
<rect x="192.00" y="8.00" width="4.00" height="100.00" />
<rect x="202.00" y="8.00" width="2.00" height="100.00" />
<rect x="206.00" y="8.00" width="4.00" height="100.00" />
<rect x="216.00" y="8.00" width="6.00" height="100.00" />
<rect x="224.00" y="8.00" width="2.00" height="100.00" />
<rect x="228.00" y="8.00" width="4.00" height="100.00" />
<rect x="0.00" y="4.00" width="240.00" height="4.00" />
<rect x="0.00" y="108.00" width="240.00" height="4.00" />
<rect x="0.00" y="8.00" width="4.00" height="100.00" />
<rect x="236.00" y="8.00" width="4.00" height="100.00" />
<text x="120.00" y="127.40" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="14.0" font-weight="bold" >
Égjpqy
</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,47 @@
<?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="236" height="131" 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="236" height="131" fill="#FFFFFF" />
<rect x="6.00" y="6.00" width="4.00" height="100.00" />
<rect x="12.00" y="6.00" width="2.00" height="100.00" />
<rect x="18.00" y="6.00" width="2.00" height="100.00" />
<rect x="28.00" y="6.00" width="2.00" height="100.00" />
<rect x="32.00" y="6.00" width="8.00" height="100.00" />
<rect x="42.00" y="6.00" width="6.00" height="100.00" />
<rect x="50.00" y="6.00" width="4.00" height="100.00" />
<rect x="60.00" y="6.00" width="2.00" height="100.00" />
<rect x="68.00" y="6.00" width="2.00" height="100.00" />
<rect x="72.00" y="6.00" width="2.00" height="100.00" />
<rect x="78.00" y="6.00" width="4.00" height="100.00" />
<rect x="84.00" y="6.00" width="2.00" height="100.00" />
<rect x="94.00" y="6.00" width="2.00" height="100.00" />
<rect x="104.00" y="6.00" width="4.00" height="100.00" />
<rect x="112.00" y="6.00" width="2.00" height="100.00" />
<rect x="116.00" y="6.00" width="2.00" height="100.00" />
<rect x="120.00" y="6.00" width="2.00" height="100.00" />
<rect x="126.00" y="6.00" width="8.00" height="100.00" />
<rect x="138.00" y="6.00" width="2.00" height="100.00" />
<rect x="144.00" y="6.00" width="2.00" height="100.00" />
<rect x="148.00" y="6.00" width="8.00" height="100.00" />
<rect x="160.00" y="6.00" width="4.00" height="100.00" />
<rect x="166.00" y="6.00" width="4.00" height="100.00" />
<rect x="172.00" y="6.00" width="8.00" height="100.00" />
<rect x="182.00" y="6.00" width="2.00" height="100.00" />
<rect x="190.00" y="6.00" width="4.00" height="100.00" />
<rect x="200.00" y="6.00" width="2.00" height="100.00" />
<rect x="204.00" y="6.00" width="4.00" height="100.00" />
<rect x="214.00" y="6.00" width="6.00" height="100.00" />
<rect x="222.00" y="6.00" width="2.00" height="100.00" />
<rect x="226.00" y="6.00" width="4.00" height="100.00" />
<text x="118.00" y="121.40" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="14.0" font-weight="bold" >
Égjpqy
</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,219 @@
<?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="44" height="48" 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="44" height="48" fill="#FFFFFF" />
<rect x="0.00" y="2.00" width="44.00" height="2.00" />
<rect x="0.00" y="44.00" width="44.00" height="2.00" />
<circle cx="3.00" cy="5.00" r="0.80" />
<circle cx="7.00" cy="5.00" r="0.80" />
<circle cx="11.00" cy="5.00" r="0.80" />
<circle cx="15.00" cy="5.00" r="0.80" />
<circle cx="19.00" cy="5.00" r="0.80" />
<circle cx="23.00" cy="5.00" r="0.80" />
<circle cx="27.00" cy="5.00" r="0.80" />
<circle cx="31.00" cy="5.00" r="0.80" />
<circle cx="35.00" cy="5.00" r="0.80" />
<circle cx="39.00" cy="5.00" r="0.80" />
<circle cx="3.00" cy="7.00" r="0.80" />
<circle cx="7.00" cy="7.00" r="0.80" />
<circle cx="13.00" cy="7.00" r="0.80" />
<circle cx="15.00" cy="7.00" r="0.80" />
<circle cx="19.00" cy="7.00" r="0.80" />
<circle cx="25.00" cy="7.00" r="0.80" />
<circle cx="29.00" cy="7.00" r="0.80" />
<circle cx="35.00" cy="7.00" r="0.80" />
<circle cx="37.00" cy="7.00" r="0.80" />
<circle cx="39.00" cy="7.00" r="0.80" />
<circle cx="41.00" cy="7.00" r="0.80" />
<circle cx="3.00" cy="9.00" r="0.80" />
<circle cx="7.00" cy="9.00" r="0.80" />
<circle cx="9.00" cy="9.00" r="0.80" />
<circle cx="15.00" cy="9.00" r="0.80" />
<circle cx="19.00" cy="9.00" r="0.80" />
<circle cx="23.00" cy="9.00" r="0.80" />
<circle cx="27.00" cy="9.00" r="0.80" />
<circle cx="29.00" cy="9.00" r="0.80" />
<circle cx="33.00" cy="9.00" r="0.80" />
<circle cx="35.00" cy="9.00" r="0.80" />
<circle cx="37.00" cy="9.00" r="0.80" />
<circle cx="3.00" cy="11.00" r="0.80" />
<circle cx="9.00" cy="11.00" r="0.80" />
<circle cx="11.00" cy="11.00" r="0.80" />
<circle cx="17.00" cy="11.00" r="0.80" />
<circle cx="27.00" cy="11.00" r="0.80" />
<circle cx="33.00" cy="11.00" r="0.80" />
<circle cx="37.00" cy="11.00" r="0.80" />
<circle cx="39.00" cy="11.00" r="0.80" />
<circle cx="41.00" cy="11.00" r="0.80" />
<circle cx="3.00" cy="13.00" r="0.80" />
<circle cx="7.00" cy="13.00" r="0.80" />
<circle cx="11.00" cy="13.00" r="0.80" />
<circle cx="17.00" cy="13.00" r="0.80" />
<circle cx="19.00" cy="13.00" r="0.80" />
<circle cx="21.00" cy="13.00" r="0.80" />
<circle cx="23.00" cy="13.00" r="0.80" />
<circle cx="35.00" cy="13.00" r="0.80" />
<circle cx="3.00" cy="15.00" r="0.80" />
<circle cx="13.00" cy="15.00" r="0.80" />
<circle cx="15.00" cy="15.00" r="0.80" />
<circle cx="19.00" cy="15.00" r="0.80" />
<circle cx="41.00" cy="15.00" r="0.80" />
<circle cx="3.00" cy="17.00" r="0.80" />
<circle cx="5.00" cy="17.00" r="0.80" />
<circle cx="15.00" cy="17.00" r="0.80" />
<circle cx="19.00" cy="17.00" r="0.80" />
<circle cx="21.00" cy="17.00" r="0.80" />
<circle cx="23.00" cy="17.00" r="0.80" />
<circle cx="25.00" cy="17.00" r="0.80" />
<circle cx="29.00" cy="17.00" r="0.80" />
<circle cx="33.00" cy="17.00" r="0.80" />
<circle cx="37.00" cy="17.00" r="0.80" />
<circle cx="39.00" cy="17.00" r="0.80" />
<circle cx="3.00" cy="19.00" r="0.80" />
<circle cx="5.00" cy="19.00" r="0.80" />
<circle cx="7.00" cy="19.00" r="0.80" />
<circle cx="9.00" cy="19.00" r="0.80" />
<circle cx="13.00" cy="19.00" r="0.80" />
<circle cx="17.00" cy="19.00" r="0.80" />
<circle cx="19.00" cy="19.00" r="0.80" />
<circle cx="21.00" cy="19.00" r="0.80" />
<circle cx="23.00" cy="19.00" r="0.80" />
<circle cx="25.00" cy="19.00" r="0.80" />
<circle cx="37.00" cy="19.00" r="0.80" />
<circle cx="41.00" cy="19.00" r="0.80" />
<circle cx="3.00" cy="21.00" r="0.80" />
<circle cx="5.00" cy="21.00" r="0.80" />
<circle cx="7.00" cy="21.00" r="0.80" />
<circle cx="9.00" cy="21.00" r="0.80" />
<circle cx="17.00" cy="21.00" r="0.80" />
<circle cx="19.00" cy="21.00" r="0.80" />
<circle cx="21.00" cy="21.00" r="0.80" />
<circle cx="27.00" cy="21.00" r="0.80" />
<circle cx="35.00" cy="21.00" r="0.80" />
<circle cx="37.00" cy="21.00" r="0.80" />
<circle cx="3.00" cy="23.00" r="0.80" />
<circle cx="5.00" cy="23.00" r="0.80" />
<circle cx="9.00" cy="23.00" r="0.80" />
<circle cx="11.00" cy="23.00" r="0.80" />
<circle cx="17.00" cy="23.00" r="0.80" />
<circle cx="19.00" cy="23.00" r="0.80" />
<circle cx="35.00" cy="23.00" r="0.80" />
<circle cx="37.00" cy="23.00" r="0.80" />
<circle cx="41.00" cy="23.00" r="0.80" />
<circle cx="3.00" cy="25.00" r="0.80" />
<circle cx="7.00" cy="25.00" r="0.80" />
<circle cx="9.00" cy="25.00" r="0.80" />
<circle cx="13.00" cy="25.00" r="0.80" />
<circle cx="17.00" cy="25.00" r="0.80" />
<circle cx="21.00" cy="25.00" r="0.80" />
<circle cx="23.00" cy="25.00" r="0.80" />
<circle cx="25.00" cy="25.00" r="0.80" />
<circle cx="29.00" cy="25.00" r="0.80" />
<circle cx="31.00" cy="25.00" r="0.80" />
<circle cx="35.00" cy="25.00" r="0.80" />
<circle cx="39.00" cy="25.00" r="0.80" />
<circle cx="3.00" cy="27.00" r="0.80" />
<circle cx="7.00" cy="27.00" r="0.80" />
<circle cx="13.00" cy="27.00" r="0.80" />
<circle cx="15.00" cy="27.00" r="0.80" />
<circle cx="19.00" cy="27.00" r="0.80" />
<circle cx="21.00" cy="27.00" r="0.80" />
<circle cx="33.00" cy="27.00" r="0.80" />
<circle cx="39.00" cy="27.00" r="0.80" />
<circle cx="41.00" cy="27.00" r="0.80" />
<circle cx="3.00" cy="29.00" r="0.80" />
<circle cx="7.00" cy="29.00" r="0.80" />
<circle cx="13.00" cy="29.00" r="0.80" />
<circle cx="15.00" cy="29.00" r="0.80" />
<circle cx="17.00" cy="29.00" r="0.80" />
<circle cx="19.00" cy="29.00" r="0.80" />
<circle cx="29.00" cy="29.00" r="0.80" />
<circle cx="33.00" cy="29.00" r="0.80" />
<circle cx="3.00" cy="31.00" r="0.80" />
<circle cx="5.00" cy="31.00" r="0.80" />
<circle cx="15.00" cy="31.00" r="0.80" />
<circle cx="17.00" cy="31.00" r="0.80" />
<circle cx="25.00" cy="31.00" r="0.80" />
<circle cx="27.00" cy="31.00" r="0.80" />
<circle cx="37.00" cy="31.00" r="0.80" />
<circle cx="39.00" cy="31.00" r="0.80" />
<circle cx="41.00" cy="31.00" r="0.80" />
<circle cx="3.00" cy="33.00" r="0.80" />
<circle cx="5.00" cy="33.00" r="0.80" />
<circle cx="11.00" cy="33.00" r="0.80" />
<circle cx="13.00" cy="33.00" r="0.80" />
<circle cx="17.00" cy="33.00" r="0.80" />
<circle cx="19.00" cy="33.00" r="0.80" />
<circle cx="27.00" cy="33.00" r="0.80" />
<circle cx="37.00" cy="33.00" r="0.80" />
<circle cx="39.00" cy="33.00" r="0.80" />
<circle cx="3.00" cy="35.00" r="0.80" />
<circle cx="5.00" cy="35.00" r="0.80" />
<circle cx="13.00" cy="35.00" r="0.80" />
<circle cx="15.00" cy="35.00" r="0.80" />
<circle cx="17.00" cy="35.00" r="0.80" />
<circle cx="23.00" cy="35.00" r="0.80" />
<circle cx="29.00" cy="35.00" r="0.80" />
<circle cx="37.00" cy="35.00" r="0.80" />
<circle cx="39.00" cy="35.00" r="0.80" />
<circle cx="41.00" cy="35.00" r="0.80" />
<circle cx="3.00" cy="37.00" r="0.80" />
<circle cx="5.00" cy="37.00" r="0.80" />
<circle cx="13.00" cy="37.00" r="0.80" />
<circle cx="17.00" cy="37.00" r="0.80" />
<circle cx="21.00" cy="37.00" r="0.80" />
<circle cx="23.00" cy="37.00" r="0.80" />
<circle cx="25.00" cy="37.00" r="0.80" />
<circle cx="27.00" cy="37.00" r="0.80" />
<circle cx="29.00" cy="37.00" r="0.80" />
<circle cx="31.00" cy="37.00" r="0.80" />
<circle cx="35.00" cy="37.00" r="0.80" />
<circle cx="3.00" cy="39.00" r="0.80" />
<circle cx="5.00" cy="39.00" r="0.80" />
<circle cx="7.00" cy="39.00" r="0.80" />
<circle cx="9.00" cy="39.00" r="0.80" />
<circle cx="11.00" cy="39.00" r="0.80" />
<circle cx="21.00" cy="39.00" r="0.80" />
<circle cx="23.00" cy="39.00" r="0.80" />
<circle cx="29.00" cy="39.00" r="0.80" />
<circle cx="31.00" cy="39.00" r="0.80" />
<circle cx="33.00" cy="39.00" r="0.80" />
<circle cx="37.00" cy="39.00" r="0.80" />
<circle cx="41.00" cy="39.00" r="0.80" />
<circle cx="3.00" cy="41.00" r="0.80" />
<circle cx="5.00" cy="41.00" r="0.80" />
<circle cx="9.00" cy="41.00" r="0.80" />
<circle cx="13.00" cy="41.00" r="0.80" />
<circle cx="17.00" cy="41.00" r="0.80" />
<circle cx="25.00" cy="41.00" r="0.80" />
<circle cx="29.00" cy="41.00" r="0.80" />
<circle cx="33.00" cy="41.00" r="0.80" />
<circle cx="39.00" cy="41.00" r="0.80" />
<circle cx="3.00" cy="43.00" r="0.80" />
<circle cx="5.00" cy="43.00" r="0.80" />
<circle cx="7.00" cy="43.00" r="0.80" />
<circle cx="9.00" cy="43.00" r="0.80" />
<circle cx="11.00" cy="43.00" r="0.80" />
<circle cx="13.00" cy="43.00" r="0.80" />
<circle cx="15.00" cy="43.00" r="0.80" />
<circle cx="17.00" cy="43.00" r="0.80" />
<circle cx="19.00" cy="43.00" r="0.80" />
<circle cx="21.00" cy="43.00" r="0.80" />
<circle cx="23.00" cy="43.00" r="0.80" />
<circle cx="25.00" cy="43.00" r="0.80" />
<circle cx="27.00" cy="43.00" r="0.80" />
<circle cx="29.00" cy="43.00" r="0.80" />
<circle cx="31.00" cy="43.00" r="0.80" />
<circle cx="33.00" cy="43.00" r="0.80" />
<circle cx="35.00" cy="43.00" r="0.80" />
<circle cx="37.00" cy="43.00" r="0.80" />
<circle cx="39.00" cy="43.00" r="0.80" />
<circle cx="41.00" cy="43.00" r="0.80" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,219 @@
<?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="40" height="48" 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="40" height="48" fill="#FFFFFF" />
<rect x="0.00" y="2.00" width="40.00" height="2.00" />
<rect x="0.00" y="44.00" width="40.00" height="2.00" />
<circle cx="1.00" cy="5.00" r="0.80" />
<circle cx="5.00" cy="5.00" r="0.80" />
<circle cx="9.00" cy="5.00" r="0.80" />
<circle cx="13.00" cy="5.00" r="0.80" />
<circle cx="17.00" cy="5.00" r="0.80" />
<circle cx="21.00" cy="5.00" r="0.80" />
<circle cx="25.00" cy="5.00" r="0.80" />
<circle cx="29.00" cy="5.00" r="0.80" />
<circle cx="33.00" cy="5.00" r="0.80" />
<circle cx="37.00" cy="5.00" r="0.80" />
<circle cx="1.00" cy="7.00" r="0.80" />
<circle cx="5.00" cy="7.00" r="0.80" />
<circle cx="11.00" cy="7.00" r="0.80" />
<circle cx="13.00" cy="7.00" r="0.80" />
<circle cx="17.00" cy="7.00" r="0.80" />
<circle cx="23.00" cy="7.00" r="0.80" />
<circle cx="27.00" cy="7.00" r="0.80" />
<circle cx="33.00" cy="7.00" r="0.80" />
<circle cx="35.00" cy="7.00" r="0.80" />
<circle cx="37.00" cy="7.00" r="0.80" />
<circle cx="39.00" cy="7.00" r="0.80" />
<circle cx="1.00" cy="9.00" r="0.80" />
<circle cx="5.00" cy="9.00" r="0.80" />
<circle cx="7.00" cy="9.00" r="0.80" />
<circle cx="13.00" cy="9.00" r="0.80" />
<circle cx="17.00" cy="9.00" r="0.80" />
<circle cx="21.00" cy="9.00" r="0.80" />
<circle cx="25.00" cy="9.00" r="0.80" />
<circle cx="27.00" cy="9.00" r="0.80" />
<circle cx="31.00" cy="9.00" r="0.80" />
<circle cx="33.00" cy="9.00" r="0.80" />
<circle cx="35.00" cy="9.00" r="0.80" />
<circle cx="1.00" cy="11.00" r="0.80" />
<circle cx="7.00" cy="11.00" r="0.80" />
<circle cx="9.00" cy="11.00" r="0.80" />
<circle cx="15.00" cy="11.00" r="0.80" />
<circle cx="25.00" cy="11.00" r="0.80" />
<circle cx="31.00" cy="11.00" r="0.80" />
<circle cx="35.00" cy="11.00" r="0.80" />
<circle cx="37.00" cy="11.00" r="0.80" />
<circle cx="39.00" cy="11.00" r="0.80" />
<circle cx="1.00" cy="13.00" r="0.80" />
<circle cx="5.00" cy="13.00" r="0.80" />
<circle cx="9.00" cy="13.00" r="0.80" />
<circle cx="15.00" cy="13.00" r="0.80" />
<circle cx="17.00" cy="13.00" r="0.80" />
<circle cx="19.00" cy="13.00" r="0.80" />
<circle cx="21.00" cy="13.00" r="0.80" />
<circle cx="33.00" cy="13.00" r="0.80" />
<circle cx="1.00" cy="15.00" r="0.80" />
<circle cx="11.00" cy="15.00" r="0.80" />
<circle cx="13.00" cy="15.00" r="0.80" />
<circle cx="17.00" cy="15.00" r="0.80" />
<circle cx="39.00" cy="15.00" r="0.80" />
<circle cx="1.00" cy="17.00" r="0.80" />
<circle cx="3.00" cy="17.00" r="0.80" />
<circle cx="13.00" cy="17.00" r="0.80" />
<circle cx="17.00" cy="17.00" r="0.80" />
<circle cx="19.00" cy="17.00" r="0.80" />
<circle cx="21.00" cy="17.00" r="0.80" />
<circle cx="23.00" cy="17.00" r="0.80" />
<circle cx="27.00" cy="17.00" r="0.80" />
<circle cx="31.00" cy="17.00" r="0.80" />
<circle cx="35.00" cy="17.00" r="0.80" />
<circle cx="37.00" cy="17.00" r="0.80" />
<circle cx="1.00" cy="19.00" r="0.80" />
<circle cx="3.00" cy="19.00" r="0.80" />
<circle cx="5.00" cy="19.00" r="0.80" />
<circle cx="7.00" cy="19.00" r="0.80" />
<circle cx="11.00" cy="19.00" r="0.80" />
<circle cx="15.00" cy="19.00" r="0.80" />
<circle cx="17.00" cy="19.00" r="0.80" />
<circle cx="19.00" cy="19.00" r="0.80" />
<circle cx="21.00" cy="19.00" r="0.80" />
<circle cx="23.00" cy="19.00" r="0.80" />
<circle cx="35.00" cy="19.00" r="0.80" />
<circle cx="39.00" cy="19.00" r="0.80" />
<circle cx="1.00" cy="21.00" r="0.80" />
<circle cx="3.00" cy="21.00" r="0.80" />
<circle cx="5.00" cy="21.00" r="0.80" />
<circle cx="7.00" cy="21.00" r="0.80" />
<circle cx="15.00" cy="21.00" r="0.80" />
<circle cx="17.00" cy="21.00" r="0.80" />
<circle cx="19.00" cy="21.00" r="0.80" />
<circle cx="25.00" cy="21.00" r="0.80" />
<circle cx="33.00" cy="21.00" r="0.80" />
<circle cx="35.00" cy="21.00" r="0.80" />
<circle cx="1.00" cy="23.00" r="0.80" />
<circle cx="3.00" cy="23.00" r="0.80" />
<circle cx="7.00" cy="23.00" r="0.80" />
<circle cx="9.00" cy="23.00" r="0.80" />
<circle cx="15.00" cy="23.00" r="0.80" />
<circle cx="17.00" cy="23.00" r="0.80" />
<circle cx="33.00" cy="23.00" r="0.80" />
<circle cx="35.00" cy="23.00" r="0.80" />
<circle cx="39.00" cy="23.00" r="0.80" />
<circle cx="1.00" cy="25.00" r="0.80" />
<circle cx="5.00" cy="25.00" r="0.80" />
<circle cx="7.00" cy="25.00" r="0.80" />
<circle cx="11.00" cy="25.00" r="0.80" />
<circle cx="15.00" cy="25.00" r="0.80" />
<circle cx="19.00" cy="25.00" r="0.80" />
<circle cx="21.00" cy="25.00" r="0.80" />
<circle cx="23.00" cy="25.00" r="0.80" />
<circle cx="27.00" cy="25.00" r="0.80" />
<circle cx="29.00" cy="25.00" r="0.80" />
<circle cx="33.00" cy="25.00" r="0.80" />
<circle cx="37.00" cy="25.00" r="0.80" />
<circle cx="1.00" cy="27.00" r="0.80" />
<circle cx="5.00" cy="27.00" r="0.80" />
<circle cx="11.00" cy="27.00" r="0.80" />
<circle cx="13.00" cy="27.00" r="0.80" />
<circle cx="17.00" cy="27.00" r="0.80" />
<circle cx="19.00" cy="27.00" r="0.80" />
<circle cx="31.00" cy="27.00" r="0.80" />
<circle cx="37.00" cy="27.00" r="0.80" />
<circle cx="39.00" cy="27.00" r="0.80" />
<circle cx="1.00" cy="29.00" r="0.80" />
<circle cx="5.00" cy="29.00" r="0.80" />
<circle cx="11.00" cy="29.00" r="0.80" />
<circle cx="13.00" cy="29.00" r="0.80" />
<circle cx="15.00" cy="29.00" r="0.80" />
<circle cx="17.00" cy="29.00" r="0.80" />
<circle cx="27.00" cy="29.00" r="0.80" />
<circle cx="31.00" cy="29.00" r="0.80" />
<circle cx="1.00" cy="31.00" r="0.80" />
<circle cx="3.00" cy="31.00" r="0.80" />
<circle cx="13.00" cy="31.00" r="0.80" />
<circle cx="15.00" cy="31.00" r="0.80" />
<circle cx="23.00" cy="31.00" r="0.80" />
<circle cx="25.00" cy="31.00" r="0.80" />
<circle cx="35.00" cy="31.00" r="0.80" />
<circle cx="37.00" cy="31.00" r="0.80" />
<circle cx="39.00" cy="31.00" r="0.80" />
<circle cx="1.00" cy="33.00" r="0.80" />
<circle cx="3.00" cy="33.00" r="0.80" />
<circle cx="9.00" cy="33.00" r="0.80" />
<circle cx="11.00" cy="33.00" r="0.80" />
<circle cx="15.00" cy="33.00" r="0.80" />
<circle cx="17.00" cy="33.00" r="0.80" />
<circle cx="25.00" cy="33.00" r="0.80" />
<circle cx="35.00" cy="33.00" r="0.80" />
<circle cx="37.00" cy="33.00" r="0.80" />
<circle cx="1.00" cy="35.00" r="0.80" />
<circle cx="3.00" cy="35.00" r="0.80" />
<circle cx="11.00" cy="35.00" r="0.80" />
<circle cx="13.00" cy="35.00" r="0.80" />
<circle cx="15.00" cy="35.00" r="0.80" />
<circle cx="21.00" cy="35.00" r="0.80" />
<circle cx="27.00" cy="35.00" r="0.80" />
<circle cx="35.00" cy="35.00" r="0.80" />
<circle cx="37.00" cy="35.00" r="0.80" />
<circle cx="39.00" cy="35.00" r="0.80" />
<circle cx="1.00" cy="37.00" r="0.80" />
<circle cx="3.00" cy="37.00" r="0.80" />
<circle cx="11.00" cy="37.00" r="0.80" />
<circle cx="15.00" cy="37.00" r="0.80" />
<circle cx="19.00" cy="37.00" r="0.80" />
<circle cx="21.00" cy="37.00" r="0.80" />
<circle cx="23.00" cy="37.00" r="0.80" />
<circle cx="25.00" cy="37.00" r="0.80" />
<circle cx="27.00" cy="37.00" r="0.80" />
<circle cx="29.00" cy="37.00" r="0.80" />
<circle cx="33.00" cy="37.00" r="0.80" />
<circle cx="1.00" cy="39.00" r="0.80" />
<circle cx="3.00" cy="39.00" r="0.80" />
<circle cx="5.00" cy="39.00" r="0.80" />
<circle cx="7.00" cy="39.00" r="0.80" />
<circle cx="9.00" cy="39.00" r="0.80" />
<circle cx="19.00" cy="39.00" r="0.80" />
<circle cx="21.00" cy="39.00" r="0.80" />
<circle cx="27.00" cy="39.00" r="0.80" />
<circle cx="29.00" cy="39.00" r="0.80" />
<circle cx="31.00" cy="39.00" r="0.80" />
<circle cx="35.00" cy="39.00" r="0.80" />
<circle cx="39.00" cy="39.00" r="0.80" />
<circle cx="1.00" cy="41.00" r="0.80" />
<circle cx="3.00" cy="41.00" r="0.80" />
<circle cx="7.00" cy="41.00" r="0.80" />
<circle cx="11.00" cy="41.00" r="0.80" />
<circle cx="15.00" cy="41.00" r="0.80" />
<circle cx="23.00" cy="41.00" r="0.80" />
<circle cx="27.00" cy="41.00" r="0.80" />
<circle cx="31.00" cy="41.00" r="0.80" />
<circle cx="37.00" cy="41.00" r="0.80" />
<circle cx="1.00" cy="43.00" r="0.80" />
<circle cx="3.00" cy="43.00" r="0.80" />
<circle cx="5.00" cy="43.00" r="0.80" />
<circle cx="7.00" cy="43.00" r="0.80" />
<circle cx="9.00" cy="43.00" r="0.80" />
<circle cx="11.00" cy="43.00" r="0.80" />
<circle cx="13.00" cy="43.00" r="0.80" />
<circle cx="15.00" cy="43.00" r="0.80" />
<circle cx="17.00" cy="43.00" r="0.80" />
<circle cx="19.00" cy="43.00" r="0.80" />
<circle cx="21.00" cy="43.00" r="0.80" />
<circle cx="23.00" cy="43.00" r="0.80" />
<circle cx="25.00" cy="43.00" r="0.80" />
<circle cx="27.00" cy="43.00" r="0.80" />
<circle cx="29.00" cy="43.00" r="0.80" />
<circle cx="31.00" cy="43.00" r="0.80" />
<circle cx="33.00" cy="43.00" r="0.80" />
<circle cx="35.00" cy="43.00" r="0.80" />
<circle cx="37.00" cy="43.00" r="0.80" />
<circle cx="39.00" cy="43.00" r="0.80" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -10,8 +10,8 @@
<rect x="0" y="0" width="68" height="66" fill="#FFFFFF" />
<rect x="0.00" y="0.00" width="68.00" height="4.00" />
<rect x="0.00" y="61.73" width="68.00" height="4.00" />
<rect x="0.00" y="0.00" width="4.00" height="65.73" />
<rect x="64.00" y="0.00" width="4.00" height="65.73" />
<rect x="0.00" y="4.00" width="4.00" height="57.73" />
<rect x="64.00" y="4.00" width="4.00" height="57.73" />
<path d="M 29.00 6.15 L 29.87 5.65 L 29.87 4.65 L 29.00 4.15 L 28.13 4.65 L 28.13 5.65 Z" />
<path d="M 33.00 6.15 L 33.87 5.65 L 33.87 4.65 L 33.00 4.15 L 32.13 4.65 L 32.13 5.65 Z" />
<path d="M 37.00 6.15 L 37.87 5.65 L 37.87 4.65 L 37.00 4.15 L 36.13 4.65 L 36.13 5.65 Z" />

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,382 @@
<?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="60" height="66" 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="60" height="66" fill="#FFFFFF" />
<rect x="0.00" y="2.00" width="60.00" height="2.00" />
<rect x="0.00" y="61.73" width="60.00" height="2.00" />
<path d="M 25.00 6.15 L 25.87 5.65 L 25.87 4.65 L 25.00 4.15 L 24.13 4.65 L 24.13 5.65 Z" />
<path d="M 29.00 6.15 L 29.87 5.65 L 29.87 4.65 L 29.00 4.15 L 28.13 4.65 L 28.13 5.65 Z" />
<path d="M 33.00 6.15 L 33.87 5.65 L 33.87 4.65 L 33.00 4.15 L 32.13 4.65 L 32.13 5.65 Z" />
<path d="M 37.00 6.15 L 37.87 5.65 L 37.87 4.65 L 37.00 4.15 L 36.13 4.65 L 36.13 5.65 Z" />
<path d="M 41.00 6.15 L 41.87 5.65 L 41.87 4.65 L 41.00 4.15 L 40.13 4.65 L 40.13 5.65 Z" />
<path d="M 45.00 6.15 L 45.87 5.65 L 45.87 4.65 L 45.00 4.15 L 44.13 4.65 L 44.13 5.65 Z" />
<path d="M 49.00 6.15 L 49.87 5.65 L 49.87 4.65 L 49.00 4.15 L 48.13 4.65 L 48.13 5.65 Z" />
<path d="M 53.00 6.15 L 53.87 5.65 L 53.87 4.65 L 53.00 4.15 L 52.13 4.65 L 52.13 5.65 Z" />
<path d="M 57.00 6.15 L 57.87 5.65 L 57.87 4.65 L 57.00 4.15 L 56.13 4.65 L 56.13 5.65 Z" />
<path d="M 59.00 6.15 L 59.87 5.65 L 59.87 4.65 L 59.00 4.15 L 58.13 4.65 L 58.13 5.65 Z" />
<path d="M 4.00 7.89 L 4.87 7.39 L 4.87 6.39 L 4.00 5.89 L 3.13 6.39 L 3.13 7.39 Z" />
<path d="M 8.00 7.89 L 8.87 7.39 L 8.87 6.39 L 8.00 5.89 L 7.13 6.39 L 7.13 7.39 Z" />
<path d="M 10.00 7.89 L 10.87 7.39 L 10.87 6.39 L 10.00 5.89 L 9.13 6.39 L 9.13 7.39 Z" />
<path d="M 12.00 7.89 L 12.87 7.39 L 12.87 6.39 L 12.00 5.89 L 11.13 6.39 L 11.13 7.39 Z" />
<path d="M 14.00 7.89 L 14.87 7.39 L 14.87 6.39 L 14.00 5.89 L 13.13 6.39 L 13.13 7.39 Z" />
<path d="M 16.00 7.89 L 16.87 7.39 L 16.87 6.39 L 16.00 5.89 L 15.13 6.39 L 15.13 7.39 Z" />
<path d="M 18.00 7.89 L 18.87 7.39 L 18.87 6.39 L 18.00 5.89 L 17.13 6.39 L 17.13 7.39 Z" />
<path d="M 20.00 7.89 L 20.87 7.39 L 20.87 6.39 L 20.00 5.89 L 19.13 6.39 L 19.13 7.39 Z" />
<path d="M 22.00 7.89 L 22.87 7.39 L 22.87 6.39 L 22.00 5.89 L 21.13 6.39 L 21.13 7.39 Z" />
<path d="M 24.00 7.89 L 24.87 7.39 L 24.87 6.39 L 24.00 5.89 L 23.13 6.39 L 23.13 7.39 Z" />
<path d="M 42.00 7.89 L 42.87 7.39 L 42.87 6.39 L 42.00 5.89 L 41.13 6.39 L 41.13 7.39 Z" />
<path d="M 46.00 7.89 L 46.87 7.39 L 46.87 6.39 L 46.00 5.89 L 45.13 6.39 L 45.13 7.39 Z" />
<path d="M 50.00 7.89 L 50.87 7.39 L 50.87 6.39 L 50.00 5.89 L 49.13 6.39 L 49.13 7.39 Z" />
<path d="M 54.00 7.89 L 54.87 7.39 L 54.87 6.39 L 54.00 5.89 L 53.13 6.39 L 53.13 7.39 Z" />
<path d="M 3.00 9.62 L 3.87 9.12 L 3.87 8.12 L 3.00 7.62 L 2.13 8.12 L 2.13 9.12 Z" />
<path d="M 5.00 9.62 L 5.87 9.12 L 5.87 8.12 L 5.00 7.62 L 4.13 8.12 L 4.13 9.12 Z" />
<path d="M 7.00 9.62 L 7.87 9.12 L 7.87 8.12 L 7.00 7.62 L 6.13 8.12 L 6.13 9.12 Z" />
<path d="M 13.00 9.62 L 13.87 9.12 L 13.87 8.12 L 13.00 7.62 L 12.13 8.12 L 12.13 9.12 Z" />
<path d="M 19.00 9.62 L 19.87 9.12 L 19.87 8.12 L 19.00 7.62 L 18.13 8.12 L 18.13 9.12 Z" />
<path d="M 21.00 9.62 L 21.87 9.12 L 21.87 8.12 L 21.00 7.62 L 20.13 8.12 L 20.13 9.12 Z" />
<path d="M 23.00 9.62 L 23.87 9.12 L 23.87 8.12 L 23.00 7.62 L 22.13 8.12 L 22.13 9.12 Z" />
<path d="M 29.00 9.62 L 29.87 9.12 L 29.87 8.12 L 29.00 7.62 L 28.13 8.12 L 28.13 9.12 Z" />
<path d="M 35.00 9.62 L 35.87 9.12 L 35.87 8.12 L 35.00 7.62 L 34.13 8.12 L 34.13 9.12 Z" />
<path d="M 37.00 9.62 L 37.87 9.12 L 37.87 8.12 L 37.00 7.62 L 36.13 8.12 L 36.13 9.12 Z" />
<path d="M 39.00 9.62 L 39.87 9.12 L 39.87 8.12 L 39.00 7.62 L 38.13 8.12 L 38.13 9.12 Z" />
<path d="M 45.00 9.62 L 45.87 9.12 L 45.87 8.12 L 45.00 7.62 L 44.13 8.12 L 44.13 9.12 Z" />
<path d="M 51.00 9.62 L 51.87 9.12 L 51.87 8.12 L 51.00 7.62 L 50.13 8.12 L 50.13 9.12 Z" />
<path d="M 53.00 9.62 L 53.87 9.12 L 53.87 8.12 L 53.00 7.62 L 52.13 8.12 L 52.13 9.12 Z" />
<path d="M 55.00 9.62 L 55.87 9.12 L 55.87 8.12 L 55.00 7.62 L 54.13 8.12 L 54.13 9.12 Z" />
<path d="M 57.00 9.62 L 57.87 9.12 L 57.87 8.12 L 57.00 7.62 L 56.13 8.12 L 56.13 9.12 Z" />
<path d="M 59.00 9.62 L 59.87 9.12 L 59.87 8.12 L 59.00 7.62 L 58.13 8.12 L 58.13 9.12 Z" />
<path d="M 4.00 11.35 L 4.87 10.85 L 4.87 9.85 L 4.00 9.35 L 3.13 9.85 L 3.13 10.85 Z" />
<path d="M 8.00 11.35 L 8.87 10.85 L 8.87 9.85 L 8.00 9.35 L 7.13 9.85 L 7.13 10.85 Z" />
<path d="M 12.00 11.35 L 12.87 10.85 L 12.87 9.85 L 12.00 9.35 L 11.13 9.85 L 11.13 10.85 Z" />
<path d="M 16.00 11.35 L 16.87 10.85 L 16.87 9.85 L 16.00 9.35 L 15.13 9.85 L 15.13 10.85 Z" />
<path d="M 20.00 11.35 L 20.87 10.85 L 20.87 9.85 L 20.00 9.35 L 19.13 9.85 L 19.13 10.85 Z" />
<path d="M 24.00 11.35 L 24.87 10.85 L 24.87 9.85 L 24.00 9.35 L 23.13 9.85 L 23.13 10.85 Z" />
<path d="M 28.00 11.35 L 28.87 10.85 L 28.87 9.85 L 28.00 9.35 L 27.13 9.85 L 27.13 10.85 Z" />
<path d="M 32.00 11.35 L 32.87 10.85 L 32.87 9.85 L 32.00 9.35 L 31.13 9.85 L 31.13 10.85 Z" />
<path d="M 36.00 11.35 L 36.87 10.85 L 36.87 9.85 L 36.00 9.35 L 35.13 9.85 L 35.13 10.85 Z" />
<path d="M 40.00 11.35 L 40.87 10.85 L 40.87 9.85 L 40.00 9.35 L 39.13 9.85 L 39.13 10.85 Z" />
<path d="M 44.00 11.35 L 44.87 10.85 L 44.87 9.85 L 44.00 9.35 L 43.13 9.85 L 43.13 10.85 Z" />
<path d="M 46.00 11.35 L 46.87 10.85 L 46.87 9.85 L 46.00 9.35 L 45.13 9.85 L 45.13 10.85 Z" />
<path d="M 50.00 11.35 L 50.87 10.85 L 50.87 9.85 L 50.00 9.35 L 49.13 9.85 L 49.13 10.85 Z" />
<path d="M 54.00 11.35 L 54.87 10.85 L 54.87 9.85 L 54.00 9.35 L 53.13 9.85 L 53.13 10.85 Z" />
<path d="M 58.00 11.35 L 58.87 10.85 L 58.87 9.85 L 58.00 9.35 L 57.13 9.85 L 57.13 10.85 Z" />
<path d="M 47.00 13.08 L 47.87 12.58 L 47.87 11.58 L 47.00 11.08 L 46.13 11.58 L 46.13 12.58 Z" />
<path d="M 51.00 13.08 L 51.87 12.58 L 51.87 11.58 L 51.00 11.08 L 50.13 11.58 L 50.13 12.58 Z" />
<path d="M 55.00 13.08 L 55.87 12.58 L 55.87 11.58 L 55.00 11.08 L 54.13 11.58 L 54.13 12.58 Z" />
<path d="M 57.00 13.08 L 57.87 12.58 L 57.87 11.58 L 57.00 11.08 L 56.13 11.58 L 56.13 12.58 Z" />
<path d="M 2.00 14.81 L 2.87 14.31 L 2.87 13.31 L 2.00 12.81 L 1.13 13.31 L 1.13 14.31 Z" />
<path d="M 6.00 14.81 L 6.87 14.31 L 6.87 13.31 L 6.00 12.81 L 5.13 13.31 L 5.13 14.31 Z" />
<path d="M 10.00 14.81 L 10.87 14.31 L 10.87 13.31 L 10.00 12.81 L 9.13 13.31 L 9.13 14.31 Z" />
<path d="M 14.00 14.81 L 14.87 14.31 L 14.87 13.31 L 14.00 12.81 L 13.13 13.31 L 13.13 14.31 Z" />
<path d="M 18.00 14.81 L 18.87 14.31 L 18.87 13.31 L 18.00 12.81 L 17.13 13.31 L 17.13 14.31 Z" />
<path d="M 22.00 14.81 L 22.87 14.31 L 22.87 13.31 L 22.00 12.81 L 21.13 13.31 L 21.13 14.31 Z" />
<path d="M 26.00 14.81 L 26.87 14.31 L 26.87 13.31 L 26.00 12.81 L 25.13 13.31 L 25.13 14.31 Z" />
<path d="M 30.00 14.81 L 30.87 14.31 L 30.87 13.31 L 30.00 12.81 L 29.13 13.31 L 29.13 14.31 Z" />
<path d="M 34.00 14.81 L 34.87 14.31 L 34.87 13.31 L 34.00 12.81 L 33.13 13.31 L 33.13 14.31 Z" />
<path d="M 38.00 14.81 L 38.87 14.31 L 38.87 13.31 L 38.00 12.81 L 37.13 13.31 L 37.13 14.31 Z" />
<path d="M 42.00 14.81 L 42.87 14.31 L 42.87 13.31 L 42.00 12.81 L 41.13 13.31 L 41.13 14.31 Z" />
<path d="M 48.00 14.81 L 48.87 14.31 L 48.87 13.31 L 48.00 12.81 L 47.13 13.31 L 47.13 14.31 Z" />
<path d="M 50.00 14.81 L 50.87 14.31 L 50.87 13.31 L 50.00 12.81 L 49.13 13.31 L 49.13 14.31 Z" />
<path d="M 3.00 16.55 L 3.87 16.05 L 3.87 15.05 L 3.00 14.55 L 2.13 15.05 L 2.13 16.05 Z" />
<path d="M 7.00 16.55 L 7.87 16.05 L 7.87 15.05 L 7.00 14.55 L 6.13 15.05 L 6.13 16.05 Z" />
<path d="M 11.00 16.55 L 11.87 16.05 L 11.87 15.05 L 11.00 14.55 L 10.13 15.05 L 10.13 16.05 Z" />
<path d="M 15.00 16.55 L 15.87 16.05 L 15.87 15.05 L 15.00 14.55 L 14.13 15.05 L 14.13 16.05 Z" />
<path d="M 19.00 16.55 L 19.87 16.05 L 19.87 15.05 L 19.00 14.55 L 18.13 15.05 L 18.13 16.05 Z" />
<path d="M 23.00 16.55 L 23.87 16.05 L 23.87 15.05 L 23.00 14.55 L 22.13 15.05 L 22.13 16.05 Z" />
<path d="M 27.00 16.55 L 27.87 16.05 L 27.87 15.05 L 27.00 14.55 L 26.13 15.05 L 26.13 16.05 Z" />
<path d="M 31.00 16.55 L 31.87 16.05 L 31.87 15.05 L 31.00 14.55 L 30.13 15.05 L 30.13 16.05 Z" />
<path d="M 35.00 16.55 L 35.87 16.05 L 35.87 15.05 L 35.00 14.55 L 34.13 15.05 L 34.13 16.05 Z" />
<path d="M 39.00 16.55 L 39.87 16.05 L 39.87 15.05 L 39.00 14.55 L 38.13 15.05 L 38.13 16.05 Z" />
<path d="M 43.00 16.55 L 43.87 16.05 L 43.87 15.05 L 43.00 14.55 L 42.13 15.05 L 42.13 16.05 Z" />
<path d="M 47.00 16.55 L 47.87 16.05 L 47.87 15.05 L 47.00 14.55 L 46.13 15.05 L 46.13 16.05 Z" />
<path d="M 51.00 16.55 L 51.87 16.05 L 51.87 15.05 L 51.00 14.55 L 50.13 15.05 L 50.13 16.05 Z" />
<path d="M 55.00 16.55 L 55.87 16.05 L 55.87 15.05 L 55.00 14.55 L 54.13 15.05 L 54.13 16.05 Z" />
<path d="M 57.00 16.55 L 57.87 16.05 L 57.87 15.05 L 57.00 14.55 L 56.13 15.05 L 56.13 16.05 Z" />
<path d="M 59.00 16.55 L 59.87 16.05 L 59.87 15.05 L 59.00 14.55 L 58.13 15.05 L 58.13 16.05 Z" />
<path d="M 1.00 20.01 L 1.87 19.51 L 1.87 18.51 L 1.00 18.01 L 0.13 18.51 L 0.13 19.51 Z" />
<path d="M 5.00 20.01 L 5.87 19.51 L 5.87 18.51 L 5.00 18.01 L 4.13 18.51 L 4.13 19.51 Z" />
<path d="M 9.00 20.01 L 9.87 19.51 L 9.87 18.51 L 9.00 18.01 L 8.13 18.51 L 8.13 19.51 Z" />
<path d="M 13.00 20.01 L 13.87 19.51 L 13.87 18.51 L 13.00 18.01 L 12.13 18.51 L 12.13 19.51 Z" />
<path d="M 17.00 20.01 L 17.87 19.51 L 17.87 18.51 L 17.00 18.01 L 16.13 18.51 L 16.13 19.51 Z" />
<path d="M 21.00 20.01 L 21.87 19.51 L 21.87 18.51 L 21.00 18.01 L 20.13 18.51 L 20.13 19.51 Z" />
<path d="M 25.00 20.01 L 25.87 19.51 L 25.87 18.51 L 25.00 18.01 L 24.13 18.51 L 24.13 19.51 Z" />
<path d="M 29.00 20.01 L 29.87 19.51 L 29.87 18.51 L 29.00 18.01 L 28.13 18.51 L 28.13 19.51 Z" />
<path d="M 33.00 20.01 L 33.87 19.51 L 33.87 18.51 L 33.00 18.01 L 32.13 18.51 L 32.13 19.51 Z" />
<path d="M 37.00 20.01 L 37.87 19.51 L 37.87 18.51 L 37.00 18.01 L 36.13 18.51 L 36.13 19.51 Z" />
<path d="M 41.00 20.01 L 41.87 19.51 L 41.87 18.51 L 41.00 18.01 L 40.13 18.51 L 40.13 19.51 Z" />
<path d="M 45.00 20.01 L 45.87 19.51 L 45.87 18.51 L 45.00 18.01 L 44.13 18.51 L 44.13 19.51 Z" />
<path d="M 49.00 20.01 L 49.87 19.51 L 49.87 18.51 L 49.00 18.01 L 48.13 18.51 L 48.13 19.51 Z" />
<path d="M 53.00 20.01 L 53.87 19.51 L 53.87 18.51 L 53.00 18.01 L 52.13 18.51 L 52.13 19.51 Z" />
<path d="M 57.00 20.01 L 57.87 19.51 L 57.87 18.51 L 57.00 18.01 L 56.13 18.51 L 56.13 19.51 Z" />
<path d="M 4.00 21.74 L 4.87 21.24 L 4.87 20.24 L 4.00 19.74 L 3.13 20.24 L 3.13 21.24 Z" />
<path d="M 8.00 21.74 L 8.87 21.24 L 8.87 20.24 L 8.00 19.74 L 7.13 20.24 L 7.13 21.24 Z" />
<path d="M 12.00 21.74 L 12.87 21.24 L 12.87 20.24 L 12.00 19.74 L 11.13 20.24 L 11.13 21.24 Z" />
<path d="M 16.00 21.74 L 16.87 21.24 L 16.87 20.24 L 16.00 19.74 L 15.13 20.24 L 15.13 21.24 Z" />
<path d="M 20.00 21.74 L 20.87 21.24 L 20.87 20.24 L 20.00 19.74 L 19.13 20.24 L 19.13 21.24 Z" />
<path d="M 22.00 21.74 L 22.87 21.24 L 22.87 20.24 L 22.00 19.74 L 21.13 20.24 L 21.13 21.24 Z" />
<path d="M 24.00 21.74 L 24.87 21.24 L 24.87 20.24 L 24.00 19.74 L 23.13 20.24 L 23.13 21.24 Z" />
<path d="M 42.00 21.74 L 42.87 21.24 L 42.87 20.24 L 42.00 19.74 L 41.13 20.24 L 41.13 21.24 Z" />
<path d="M 44.00 21.74 L 44.87 21.24 L 44.87 20.24 L 44.00 19.74 L 43.13 20.24 L 43.13 21.24 Z" />
<path d="M 48.00 21.74 L 48.87 21.24 L 48.87 20.24 L 48.00 19.74 L 47.13 20.24 L 47.13 21.24 Z" />
<path d="M 52.00 21.74 L 52.87 21.24 L 52.87 20.24 L 52.00 19.74 L 51.13 20.24 L 51.13 21.24 Z" />
<path d="M 56.00 21.74 L 56.87 21.24 L 56.87 20.24 L 56.00 19.74 L 55.13 20.24 L 55.13 21.24 Z" />
<path d="M 17.00 23.47 L 17.87 22.97 L 17.87 21.97 L 17.00 21.47 L 16.13 21.97 L 16.13 22.97 Z" />
<path d="M 21.00 23.47 L 21.87 22.97 L 21.87 21.97 L 21.00 21.47 L 20.13 21.97 L 20.13 22.97 Z" />
<path d="M 23.00 23.47 L 23.87 22.97 L 23.87 21.97 L 23.00 21.47 L 22.13 21.97 L 22.13 22.97 Z" />
<path d="M 29.00 23.47 L 29.87 22.97 L 29.87 21.97 L 29.00 21.47 L 28.13 21.97 L 28.13 22.97 Z" />
<path d="M 33.00 23.47 L 33.87 22.97 L 33.87 21.97 L 33.00 21.47 L 32.13 21.97 L 32.13 22.97 Z" />
<path d="M 39.00 23.47 L 39.87 22.97 L 39.87 21.97 L 39.00 21.47 L 38.13 21.97 L 38.13 22.97 Z" />
<path d="M 41.00 23.47 L 41.87 22.97 L 41.87 21.97 L 41.00 21.47 L 40.13 21.97 L 40.13 22.97 Z" />
<path d="M 59.00 23.47 L 59.87 22.97 L 59.87 21.97 L 59.00 21.47 L 58.13 21.97 L 58.13 22.97 Z" />
<path d="M 2.00 25.21 L 2.87 24.71 L 2.87 23.71 L 2.00 23.21 L 1.13 23.71 L 1.13 24.71 Z" />
<path d="M 6.00 25.21 L 6.87 24.71 L 6.87 23.71 L 6.00 23.21 L 5.13 23.71 L 5.13 24.71 Z" />
<path d="M 10.00 25.21 L 10.87 24.71 L 10.87 23.71 L 10.00 23.21 L 9.13 23.71 L 9.13 24.71 Z" />
<path d="M 14.00 25.21 L 14.87 24.71 L 14.87 23.71 L 14.00 23.21 L 13.13 23.71 L 13.13 24.71 Z" />
<path d="M 38.00 25.21 L 38.87 24.71 L 38.87 23.71 L 38.00 23.21 L 37.13 23.71 L 37.13 24.71 Z" />
<path d="M 40.00 25.21 L 40.87 24.71 L 40.87 23.71 L 40.00 23.21 L 39.13 23.71 L 39.13 24.71 Z" />
<path d="M 46.00 25.21 L 46.87 24.71 L 46.87 23.71 L 46.00 23.21 L 45.13 23.71 L 45.13 24.71 Z" />
<path d="M 50.00 25.21 L 50.87 24.71 L 50.87 23.71 L 50.00 23.21 L 49.13 23.71 L 49.13 24.71 Z" />
<path d="M 54.00 25.21 L 54.87 24.71 L 54.87 23.71 L 54.00 23.21 L 53.13 23.71 L 53.13 24.71 Z" />
<path d="M 3.00 26.94 L 3.87 26.44 L 3.87 25.44 L 3.00 24.94 L 2.13 25.44 L 2.13 26.44 Z" />
<path d="M 7.00 26.94 L 7.87 26.44 L 7.87 25.44 L 7.00 24.94 L 6.13 25.44 L 6.13 26.44 Z" />
<path d="M 11.00 26.94 L 11.87 26.44 L 11.87 25.44 L 11.00 24.94 L 10.13 25.44 L 10.13 26.44 Z" />
<path d="M 13.00 26.94 L 13.87 26.44 L 13.87 25.44 L 13.00 24.94 L 12.13 25.44 L 12.13 26.44 Z" />
<path d="M 21.00 26.94 L 21.87 26.44 L 21.87 25.44 L 21.00 24.94 L 20.13 25.44 L 20.13 26.44 Z" />
<path d="M 47.00 26.94 L 47.87 26.44 L 47.87 25.44 L 47.00 24.94 L 46.13 25.44 L 46.13 26.44 Z" />
<path d="M 51.00 26.94 L 51.87 26.44 L 51.87 25.44 L 51.00 24.94 L 50.13 25.44 L 50.13 26.44 Z" />
<path d="M 55.00 26.94 L 55.87 26.44 L 55.87 25.44 L 55.00 24.94 L 54.13 25.44 L 54.13 26.44 Z" />
<path d="M 57.00 26.94 L 57.87 26.44 L 57.87 25.44 L 57.00 24.94 L 56.13 25.44 L 56.13 26.44 Z" />
<path d="M 20.00 28.67 L 20.87 28.17 L 20.87 27.17 L 20.00 26.67 L 19.13 27.17 L 19.13 28.17 Z" />
<path d="M 38.00 28.67 L 38.87 28.17 L 38.87 27.17 L 38.00 26.67 L 37.13 27.17 L 37.13 28.17 Z" />
<path d="M 42.00 28.67 L 42.87 28.17 L 42.87 27.17 L 42.00 26.67 L 41.13 27.17 L 41.13 28.17 Z" />
<path d="M 44.00 28.67 L 44.87 28.17 L 44.87 27.17 L 44.00 26.67 L 43.13 27.17 L 43.13 28.17 Z" />
<path d="M 1.00 30.40 L 1.87 29.90 L 1.87 28.90 L 1.00 28.40 L 0.13 28.90 L 0.13 29.90 Z" />
<path d="M 5.00 30.40 L 5.87 29.90 L 5.87 28.90 L 5.00 28.40 L 4.13 28.90 L 4.13 29.90 Z" />
<path d="M 9.00 30.40 L 9.87 29.90 L 9.87 28.90 L 9.00 28.40 L 8.13 28.90 L 8.13 29.90 Z" />
<path d="M 13.00 30.40 L 13.87 29.90 L 13.87 28.90 L 13.00 28.40 L 12.13 28.90 L 12.13 29.90 Z" />
<path d="M 17.00 30.40 L 17.87 29.90 L 17.87 28.90 L 17.00 28.40 L 16.13 28.90 L 16.13 29.90 Z" />
<path d="M 39.00 30.40 L 39.87 29.90 L 39.87 28.90 L 39.00 28.40 L 38.13 28.90 L 38.13 29.90 Z" />
<path d="M 41.00 30.40 L 41.87 29.90 L 41.87 28.90 L 41.00 28.40 L 40.13 28.90 L 40.13 29.90 Z" />
<path d="M 43.00 30.40 L 43.87 29.90 L 43.87 28.90 L 43.00 28.40 L 42.13 28.90 L 42.13 29.90 Z" />
<path d="M 45.00 30.40 L 45.87 29.90 L 45.87 28.90 L 45.00 28.40 L 44.13 28.90 L 44.13 29.90 Z" />
<path d="M 49.00 30.40 L 49.87 29.90 L 49.87 28.90 L 49.00 28.40 L 48.13 28.90 L 48.13 29.90 Z" />
<path d="M 53.00 30.40 L 53.87 29.90 L 53.87 28.90 L 53.00 28.40 L 52.13 28.90 L 52.13 29.90 Z" />
<path d="M 57.00 30.40 L 57.87 29.90 L 57.87 28.90 L 57.00 28.40 L 56.13 28.90 L 56.13 29.90 Z" />
<path d="M 59.00 30.40 L 59.87 29.90 L 59.87 28.90 L 59.00 28.40 L 58.13 28.90 L 58.13 29.90 Z" />
<path d="M 4.00 32.13 L 4.87 31.63 L 4.87 30.63 L 4.00 30.13 L 3.13 30.63 L 3.13 31.63 Z" />
<path d="M 8.00 32.13 L 8.87 31.63 L 8.87 30.63 L 8.00 30.13 L 7.13 30.63 L 7.13 31.63 Z" />
<path d="M 12.00 32.13 L 12.87 31.63 L 12.87 30.63 L 12.00 30.13 L 11.13 30.63 L 11.13 31.63 Z" />
<path d="M 16.00 32.13 L 16.87 31.63 L 16.87 30.63 L 16.00 30.13 L 15.13 30.63 L 15.13 31.63 Z" />
<path d="M 48.00 32.13 L 48.87 31.63 L 48.87 30.63 L 48.00 30.13 L 47.13 30.63 L 47.13 31.63 Z" />
<path d="M 52.00 32.13 L 52.87 31.63 L 52.87 30.63 L 52.00 30.13 L 51.13 30.63 L 51.13 31.63 Z" />
<path d="M 56.00 32.13 L 56.87 31.63 L 56.87 30.63 L 56.00 30.13 L 55.13 30.63 L 55.13 31.63 Z" />
<path d="M 17.00 33.87 L 17.87 33.37 L 17.87 32.37 L 17.00 31.87 L 16.13 32.37 L 16.13 33.37 Z" />
<path d="M 41.00 33.87 L 41.87 33.37 L 41.87 32.37 L 41.00 31.87 L 40.13 32.37 L 40.13 33.37 Z" />
<path d="M 57.00 33.87 L 57.87 33.37 L 57.87 32.37 L 57.00 31.87 L 56.13 32.37 L 56.13 33.37 Z" />
<path d="M 2.00 35.60 L 2.87 35.10 L 2.87 34.10 L 2.00 33.60 L 1.13 34.10 L 1.13 35.10 Z" />
<path d="M 6.00 35.60 L 6.87 35.10 L 6.87 34.10 L 6.00 33.60 L 5.13 34.10 L 5.13 35.10 Z" />
<path d="M 10.00 35.60 L 10.87 35.10 L 10.87 34.10 L 10.00 33.60 L 9.13 34.10 L 9.13 35.10 Z" />
<path d="M 16.00 35.60 L 16.87 35.10 L 16.87 34.10 L 16.00 33.60 L 15.13 34.10 L 15.13 35.10 Z" />
<path d="M 42.00 35.60 L 42.87 35.10 L 42.87 34.10 L 42.00 33.60 L 41.13 34.10 L 41.13 35.10 Z" />
<path d="M 46.00 35.60 L 46.87 35.10 L 46.87 34.10 L 46.00 33.60 L 45.13 34.10 L 45.13 35.10 Z" />
<path d="M 50.00 35.60 L 50.87 35.10 L 50.87 34.10 L 50.00 33.60 L 49.13 34.10 L 49.13 35.10 Z" />
<path d="M 54.00 35.60 L 54.87 35.10 L 54.87 34.10 L 54.00 33.60 L 53.13 34.10 L 53.13 35.10 Z" />
<path d="M 3.00 37.33 L 3.87 36.83 L 3.87 35.83 L 3.00 35.33 L 2.13 35.83 L 2.13 36.83 Z" />
<path d="M 7.00 37.33 L 7.87 36.83 L 7.87 35.83 L 7.00 35.33 L 6.13 35.83 L 6.13 36.83 Z" />
<path d="M 11.00 37.33 L 11.87 36.83 L 11.87 35.83 L 11.00 35.33 L 10.13 35.83 L 10.13 36.83 Z" />
<path d="M 15.00 37.33 L 15.87 36.83 L 15.87 35.83 L 15.00 35.33 L 14.13 35.83 L 14.13 36.83 Z" />
<path d="M 41.00 37.33 L 41.87 36.83 L 41.87 35.83 L 41.00 35.33 L 40.13 35.83 L 40.13 36.83 Z" />
<path d="M 43.00 37.33 L 43.87 36.83 L 43.87 35.83 L 43.00 35.33 L 42.13 35.83 L 42.13 36.83 Z" />
<path d="M 47.00 37.33 L 47.87 36.83 L 47.87 35.83 L 47.00 35.33 L 46.13 35.83 L 46.13 36.83 Z" />
<path d="M 51.00 37.33 L 51.87 36.83 L 51.87 35.83 L 51.00 35.33 L 50.13 35.83 L 50.13 36.83 Z" />
<path d="M 55.00 37.33 L 55.87 36.83 L 55.87 35.83 L 55.00 35.33 L 54.13 35.83 L 54.13 36.83 Z" />
<path d="M 16.00 39.06 L 16.87 38.56 L 16.87 37.56 L 16.00 37.06 L 15.13 37.56 L 15.13 38.56 Z" />
<path d="M 40.00 39.06 L 40.87 38.56 L 40.87 37.56 L 40.00 37.06 L 39.13 37.56 L 39.13 38.56 Z" />
<path d="M 44.00 39.06 L 44.87 38.56 L 44.87 37.56 L 44.00 37.06 L 43.13 37.56 L 43.13 38.56 Z" />
<path d="M 1.00 40.79 L 1.87 40.29 L 1.87 39.29 L 1.00 38.79 L 0.13 39.29 L 0.13 40.29 Z" />
<path d="M 5.00 40.79 L 5.87 40.29 L 5.87 39.29 L 5.00 38.79 L 4.13 39.29 L 4.13 40.29 Z" />
<path d="M 9.00 40.79 L 9.87 40.29 L 9.87 39.29 L 9.00 38.79 L 8.13 39.29 L 8.13 40.29 Z" />
<path d="M 15.00 40.79 L 15.87 40.29 L 15.87 39.29 L 15.00 38.79 L 14.13 39.29 L 14.13 40.29 Z" />
<path d="M 19.00 40.79 L 19.87 40.29 L 19.87 39.29 L 19.00 38.79 L 18.13 39.29 L 18.13 40.29 Z" />
<path d="M 45.00 40.79 L 45.87 40.29 L 45.87 39.29 L 45.00 38.79 L 44.13 39.29 L 44.13 40.29 Z" />
<path d="M 49.00 40.79 L 49.87 40.29 L 49.87 39.29 L 49.00 38.79 L 48.13 39.29 L 48.13 40.29 Z" />
<path d="M 53.00 40.79 L 53.87 40.29 L 53.87 39.29 L 53.00 38.79 L 52.13 39.29 L 52.13 40.29 Z" />
<path d="M 57.00 40.79 L 57.87 40.29 L 57.87 39.29 L 57.00 38.79 L 56.13 39.29 L 56.13 40.29 Z" />
<path d="M 4.00 42.53 L 4.87 42.03 L 4.87 41.03 L 4.00 40.53 L 3.13 41.03 L 3.13 42.03 Z" />
<path d="M 8.00 42.53 L 8.87 42.03 L 8.87 41.03 L 8.00 40.53 L 7.13 41.03 L 7.13 42.03 Z" />
<path d="M 12.00 42.53 L 12.87 42.03 L 12.87 41.03 L 12.00 40.53 L 11.13 41.03 L 11.13 42.03 Z" />
<path d="M 16.00 42.53 L 16.87 42.03 L 16.87 41.03 L 16.00 40.53 L 15.13 41.03 L 15.13 42.03 Z" />
<path d="M 18.00 42.53 L 18.87 42.03 L 18.87 41.03 L 18.00 40.53 L 17.13 41.03 L 17.13 42.03 Z" />
<path d="M 20.00 42.53 L 20.87 42.03 L 20.87 41.03 L 20.00 40.53 L 19.13 41.03 L 19.13 42.03 Z" />
<path d="M 40.00 42.53 L 40.87 42.03 L 40.87 41.03 L 40.00 40.53 L 39.13 41.03 L 39.13 42.03 Z" />
<path d="M 42.00 42.53 L 42.87 42.03 L 42.87 41.03 L 42.00 40.53 L 41.13 41.03 L 41.13 42.03 Z" />
<path d="M 44.00 42.53 L 44.87 42.03 L 44.87 41.03 L 44.00 40.53 L 43.13 41.03 L 43.13 42.03 Z" />
<path d="M 48.00 42.53 L 48.87 42.03 L 48.87 41.03 L 48.00 40.53 L 47.13 41.03 L 47.13 42.03 Z" />
<path d="M 52.00 42.53 L 52.87 42.03 L 52.87 41.03 L 52.00 40.53 L 51.13 41.03 L 51.13 42.03 Z" />
<path d="M 56.00 42.53 L 56.87 42.03 L 56.87 41.03 L 56.00 40.53 L 55.13 41.03 L 55.13 42.03 Z" />
<path d="M 58.00 42.53 L 58.87 42.03 L 58.87 41.03 L 58.00 40.53 L 57.13 41.03 L 57.13 42.03 Z" />
<path d="M 19.00 44.26 L 19.87 43.76 L 19.87 42.76 L 19.00 42.26 L 18.13 42.76 L 18.13 43.76 Z" />
<path d="M 21.00 44.26 L 21.87 43.76 L 21.87 42.76 L 21.00 42.26 L 20.13 42.76 L 20.13 43.76 Z" />
<path d="M 29.00 44.26 L 29.87 43.76 L 29.87 42.76 L 29.00 42.26 L 28.13 42.76 L 28.13 43.76 Z" />
<path d="M 33.00 44.26 L 33.87 43.76 L 33.87 42.76 L 33.00 42.26 L 32.13 42.76 L 32.13 43.76 Z" />
<path d="M 35.00 44.26 L 35.87 43.76 L 35.87 42.76 L 35.00 42.26 L 34.13 42.76 L 34.13 43.76 Z" />
<path d="M 59.00 44.26 L 59.87 43.76 L 59.87 42.76 L 59.00 42.26 L 58.13 42.76 L 58.13 43.76 Z" />
<path d="M 2.00 45.99 L 2.87 45.49 L 2.87 44.49 L 2.00 43.99 L 1.13 44.49 L 1.13 45.49 Z" />
<path d="M 6.00 45.99 L 6.87 45.49 L 6.87 44.49 L 6.00 43.99 L 5.13 44.49 L 5.13 45.49 Z" />
<path d="M 10.00 45.99 L 10.87 45.49 L 10.87 44.49 L 10.00 43.99 L 9.13 44.49 L 9.13 45.49 Z" />
<path d="M 14.00 45.99 L 14.87 45.49 L 14.87 44.49 L 14.00 43.99 L 13.13 44.49 L 13.13 45.49 Z" />
<path d="M 18.00 45.99 L 18.87 45.49 L 18.87 44.49 L 18.00 43.99 L 17.13 44.49 L 17.13 45.49 Z" />
<path d="M 20.00 45.99 L 20.87 45.49 L 20.87 44.49 L 20.00 43.99 L 19.13 44.49 L 19.13 45.49 Z" />
<path d="M 22.00 45.99 L 22.87 45.49 L 22.87 44.49 L 22.00 43.99 L 21.13 44.49 L 21.13 45.49 Z" />
<path d="M 24.00 45.99 L 24.87 45.49 L 24.87 44.49 L 24.00 43.99 L 23.13 44.49 L 23.13 45.49 Z" />
<path d="M 36.00 45.99 L 36.87 45.49 L 36.87 44.49 L 36.00 43.99 L 35.13 44.49 L 35.13 45.49 Z" />
<path d="M 38.00 45.99 L 38.87 45.49 L 38.87 44.49 L 38.00 43.99 L 37.13 44.49 L 37.13 45.49 Z" />
<path d="M 40.00 45.99 L 40.87 45.49 L 40.87 44.49 L 40.00 43.99 L 39.13 44.49 L 39.13 45.49 Z" />
<path d="M 42.00 45.99 L 42.87 45.49 L 42.87 44.49 L 42.00 43.99 L 41.13 44.49 L 41.13 45.49 Z" />
<path d="M 44.00 45.99 L 44.87 45.49 L 44.87 44.49 L 44.00 43.99 L 43.13 44.49 L 43.13 45.49 Z" />
<path d="M 46.00 45.99 L 46.87 45.49 L 46.87 44.49 L 46.00 43.99 L 45.13 44.49 L 45.13 45.49 Z" />
<path d="M 50.00 45.99 L 50.87 45.49 L 50.87 44.49 L 50.00 43.99 L 49.13 44.49 L 49.13 45.49 Z" />
<path d="M 54.00 45.99 L 54.87 45.49 L 54.87 44.49 L 54.00 43.99 L 53.13 44.49 L 53.13 45.49 Z" />
<path d="M 3.00 47.72 L 3.87 47.22 L 3.87 46.22 L 3.00 45.72 L 2.13 46.22 L 2.13 47.22 Z" />
<path d="M 7.00 47.72 L 7.87 47.22 L 7.87 46.22 L 7.00 45.72 L 6.13 46.22 L 6.13 47.22 Z" />
<path d="M 11.00 47.72 L 11.87 47.22 L 11.87 46.22 L 11.00 45.72 L 10.13 46.22 L 10.13 47.22 Z" />
<path d="M 15.00 47.72 L 15.87 47.22 L 15.87 46.22 L 15.00 45.72 L 14.13 46.22 L 14.13 47.22 Z" />
<path d="M 19.00 47.72 L 19.87 47.22 L 19.87 46.22 L 19.00 45.72 L 18.13 46.22 L 18.13 47.22 Z" />
<path d="M 23.00 47.72 L 23.87 47.22 L 23.87 46.22 L 23.00 45.72 L 22.13 46.22 L 22.13 47.22 Z" />
<path d="M 27.00 47.72 L 27.87 47.22 L 27.87 46.22 L 27.00 45.72 L 26.13 46.22 L 26.13 47.22 Z" />
<path d="M 31.00 47.72 L 31.87 47.22 L 31.87 46.22 L 31.00 45.72 L 30.13 46.22 L 30.13 47.22 Z" />
<path d="M 35.00 47.72 L 35.87 47.22 L 35.87 46.22 L 35.00 45.72 L 34.13 46.22 L 34.13 47.22 Z" />
<path d="M 39.00 47.72 L 39.87 47.22 L 39.87 46.22 L 39.00 45.72 L 38.13 46.22 L 38.13 47.22 Z" />
<path d="M 43.00 47.72 L 43.87 47.22 L 43.87 46.22 L 43.00 45.72 L 42.13 46.22 L 42.13 47.22 Z" />
<path d="M 45.00 47.72 L 45.87 47.22 L 45.87 46.22 L 45.00 45.72 L 44.13 46.22 L 44.13 47.22 Z" />
<path d="M 49.00 47.72 L 49.87 47.22 L 49.87 46.22 L 49.00 45.72 L 48.13 46.22 L 48.13 47.22 Z" />
<path d="M 51.00 47.72 L 51.87 47.22 L 51.87 46.22 L 51.00 45.72 L 50.13 46.22 L 50.13 47.22 Z" />
<path d="M 53.00 47.72 L 53.87 47.22 L 53.87 46.22 L 53.00 45.72 L 52.13 46.22 L 52.13 47.22 Z" />
<path d="M 57.00 47.72 L 57.87 47.22 L 57.87 46.22 L 57.00 45.72 L 56.13 46.22 L 56.13 47.22 Z" />
<path d="M 59.00 47.72 L 59.87 47.22 L 59.87 46.22 L 59.00 45.72 L 58.13 46.22 L 58.13 47.22 Z" />
<path d="M 46.00 49.45 L 46.87 48.95 L 46.87 47.95 L 46.00 47.45 L 45.13 47.95 L 45.13 48.95 Z" />
<path d="M 52.00 49.45 L 52.87 48.95 L 52.87 47.95 L 52.00 47.45 L 51.13 47.95 L 51.13 48.95 Z" />
<path d="M 54.00 49.45 L 54.87 48.95 L 54.87 47.95 L 54.00 47.45 L 53.13 47.95 L 53.13 48.95 Z" />
<path d="M 56.00 49.45 L 56.87 48.95 L 56.87 47.95 L 56.00 47.45 L 55.13 47.95 L 55.13 48.95 Z" />
<path d="M 1.00 51.19 L 1.87 50.69 L 1.87 49.69 L 1.00 49.19 L 0.13 49.69 L 0.13 50.69 Z" />
<path d="M 5.00 51.19 L 5.87 50.69 L 5.87 49.69 L 5.00 49.19 L 4.13 49.69 L 4.13 50.69 Z" />
<path d="M 9.00 51.19 L 9.87 50.69 L 9.87 49.69 L 9.00 49.19 L 8.13 49.69 L 8.13 50.69 Z" />
<path d="M 13.00 51.19 L 13.87 50.69 L 13.87 49.69 L 13.00 49.19 L 12.13 49.69 L 12.13 50.69 Z" />
<path d="M 17.00 51.19 L 17.87 50.69 L 17.87 49.69 L 17.00 49.19 L 16.13 49.69 L 16.13 50.69 Z" />
<path d="M 21.00 51.19 L 21.87 50.69 L 21.87 49.69 L 21.00 49.19 L 20.13 49.69 L 20.13 50.69 Z" />
<path d="M 25.00 51.19 L 25.87 50.69 L 25.87 49.69 L 25.00 49.19 L 24.13 49.69 L 24.13 50.69 Z" />
<path d="M 29.00 51.19 L 29.87 50.69 L 29.87 49.69 L 29.00 49.19 L 28.13 49.69 L 28.13 50.69 Z" />
<path d="M 33.00 51.19 L 33.87 50.69 L 33.87 49.69 L 33.00 49.19 L 32.13 49.69 L 32.13 50.69 Z" />
<path d="M 37.00 51.19 L 37.87 50.69 L 37.87 49.69 L 37.00 49.19 L 36.13 49.69 L 36.13 50.69 Z" />
<path d="M 41.00 51.19 L 41.87 50.69 L 41.87 49.69 L 41.00 49.19 L 40.13 49.69 L 40.13 50.69 Z" />
<path d="M 43.00 51.19 L 43.87 50.69 L 43.87 49.69 L 43.00 49.19 L 42.13 49.69 L 42.13 50.69 Z" />
<path d="M 45.00 51.19 L 45.87 50.69 L 45.87 49.69 L 45.00 49.19 L 44.13 49.69 L 44.13 50.69 Z" />
<path d="M 51.00 51.19 L 51.87 50.69 L 51.87 49.69 L 51.00 49.19 L 50.13 49.69 L 50.13 50.69 Z" />
<path d="M 53.00 51.19 L 53.87 50.69 L 53.87 49.69 L 53.00 49.19 L 52.13 49.69 L 52.13 50.69 Z" />
<path d="M 57.00 51.19 L 57.87 50.69 L 57.87 49.69 L 57.00 49.19 L 56.13 49.69 L 56.13 50.69 Z" />
<path d="M 4.00 52.92 L 4.87 52.42 L 4.87 51.42 L 4.00 50.92 L 3.13 51.42 L 3.13 52.42 Z" />
<path d="M 8.00 52.92 L 8.87 52.42 L 8.87 51.42 L 8.00 50.92 L 7.13 51.42 L 7.13 52.42 Z" />
<path d="M 10.00 52.92 L 10.87 52.42 L 10.87 51.42 L 10.00 50.92 L 9.13 51.42 L 9.13 52.42 Z" />
<path d="M 12.00 52.92 L 12.87 52.42 L 12.87 51.42 L 12.00 50.92 L 11.13 51.42 L 11.13 52.42 Z" />
<path d="M 14.00 52.92 L 14.87 52.42 L 14.87 51.42 L 14.00 50.92 L 13.13 51.42 L 13.13 52.42 Z" />
<path d="M 16.00 52.92 L 16.87 52.42 L 16.87 51.42 L 16.00 50.92 L 15.13 51.42 L 15.13 52.42 Z" />
<path d="M 26.00 52.92 L 26.87 52.42 L 26.87 51.42 L 26.00 50.92 L 25.13 51.42 L 25.13 52.42 Z" />
<path d="M 28.00 52.92 L 28.87 52.42 L 28.87 51.42 L 28.00 50.92 L 27.13 51.42 L 27.13 52.42 Z" />
<path d="M 32.00 52.92 L 32.87 52.42 L 32.87 51.42 L 32.00 50.92 L 31.13 51.42 L 31.13 52.42 Z" />
<path d="M 36.00 52.92 L 36.87 52.42 L 36.87 51.42 L 36.00 50.92 L 35.13 51.42 L 35.13 52.42 Z" />
<path d="M 40.00 52.92 L 40.87 52.42 L 40.87 51.42 L 40.00 50.92 L 39.13 51.42 L 39.13 52.42 Z" />
<path d="M 42.00 52.92 L 42.87 52.42 L 42.87 51.42 L 42.00 50.92 L 41.13 51.42 L 41.13 52.42 Z" />
<path d="M 46.00 52.92 L 46.87 52.42 L 46.87 51.42 L 46.00 50.92 L 45.13 51.42 L 45.13 52.42 Z" />
<path d="M 50.00 52.92 L 50.87 52.42 L 50.87 51.42 L 50.00 50.92 L 49.13 51.42 L 49.13 52.42 Z" />
<path d="M 54.00 52.92 L 54.87 52.42 L 54.87 51.42 L 54.00 50.92 L 53.13 51.42 L 53.13 52.42 Z" />
<path d="M 56.00 52.92 L 56.87 52.42 L 56.87 51.42 L 56.00 50.92 L 55.13 51.42 L 55.13 52.42 Z" />
<path d="M 58.00 52.92 L 58.87 52.42 L 58.87 51.42 L 58.00 50.92 L 57.13 51.42 L 57.13 52.42 Z" />
<path d="M 1.00 54.65 L 1.87 54.15 L 1.87 53.15 L 1.00 52.65 L 0.13 53.15 L 0.13 54.15 Z" />
<path d="M 5.00 54.65 L 5.87 54.15 L 5.87 53.15 L 5.00 52.65 L 4.13 53.15 L 4.13 54.15 Z" />
<path d="M 7.00 54.65 L 7.87 54.15 L 7.87 53.15 L 7.00 52.65 L 6.13 53.15 L 6.13 54.15 Z" />
<path d="M 9.00 54.65 L 9.87 54.15 L 9.87 53.15 L 9.00 52.65 L 8.13 53.15 L 8.13 54.15 Z" />
<path d="M 11.00 54.65 L 11.87 54.15 L 11.87 53.15 L 11.00 52.65 L 10.13 53.15 L 10.13 54.15 Z" />
<path d="M 19.00 54.65 L 19.87 54.15 L 19.87 53.15 L 19.00 52.65 L 18.13 53.15 L 18.13 54.15 Z" />
<path d="M 21.00 54.65 L 21.87 54.15 L 21.87 53.15 L 21.00 52.65 L 20.13 53.15 L 20.13 54.15 Z" />
<path d="M 23.00 54.65 L 23.87 54.15 L 23.87 53.15 L 23.00 52.65 L 22.13 53.15 L 22.13 54.15 Z" />
<path d="M 25.00 54.65 L 25.87 54.15 L 25.87 53.15 L 25.00 52.65 L 24.13 53.15 L 24.13 54.15 Z" />
<path d="M 37.00 54.65 L 37.87 54.15 L 37.87 53.15 L 37.00 52.65 L 36.13 53.15 L 36.13 54.15 Z" />
<path d="M 43.00 54.65 L 43.87 54.15 L 43.87 53.15 L 43.00 52.65 L 42.13 53.15 L 42.13 54.15 Z" />
<path d="M 53.00 54.65 L 53.87 54.15 L 53.87 53.15 L 53.00 52.65 L 52.13 53.15 L 52.13 54.15 Z" />
<path d="M 59.00 54.65 L 59.87 54.15 L 59.87 53.15 L 59.00 52.65 L 58.13 53.15 L 58.13 54.15 Z" />
<path d="M 2.00 56.38 L 2.87 55.88 L 2.87 54.88 L 2.00 54.38 L 1.13 54.88 L 1.13 55.88 Z" />
<path d="M 4.00 56.38 L 4.87 55.88 L 4.87 54.88 L 4.00 54.38 L 3.13 54.88 L 3.13 55.88 Z" />
<path d="M 8.00 56.38 L 8.87 55.88 L 8.87 54.88 L 8.00 54.38 L 7.13 54.88 L 7.13 55.88 Z" />
<path d="M 14.00 56.38 L 14.87 55.88 L 14.87 54.88 L 14.00 54.38 L 13.13 54.88 L 13.13 55.88 Z" />
<path d="M 18.00 56.38 L 18.87 55.88 L 18.87 54.88 L 18.00 54.38 L 17.13 54.88 L 17.13 55.88 Z" />
<path d="M 20.00 56.38 L 20.87 55.88 L 20.87 54.88 L 20.00 54.38 L 19.13 54.88 L 19.13 55.88 Z" />
<path d="M 24.00 56.38 L 24.87 55.88 L 24.87 54.88 L 24.00 54.38 L 23.13 54.88 L 23.13 55.88 Z" />
<path d="M 28.00 56.38 L 28.87 55.88 L 28.87 54.88 L 28.00 54.38 L 27.13 54.88 L 27.13 55.88 Z" />
<path d="M 34.00 56.38 L 34.87 55.88 L 34.87 54.88 L 34.00 54.38 L 33.13 54.88 L 33.13 55.88 Z" />
<path d="M 38.00 56.38 L 38.87 55.88 L 38.87 54.88 L 38.00 54.38 L 37.13 54.88 L 37.13 55.88 Z" />
<path d="M 48.00 56.38 L 48.87 55.88 L 48.87 54.88 L 48.00 54.38 L 47.13 54.88 L 47.13 55.88 Z" />
<path d="M 52.00 56.38 L 52.87 55.88 L 52.87 54.88 L 52.00 54.38 L 51.13 54.88 L 51.13 55.88 Z" />
<path d="M 1.00 58.11 L 1.87 57.61 L 1.87 56.61 L 1.00 56.11 L 0.13 56.61 L 0.13 57.61 Z" />
<path d="M 3.00 58.11 L 3.87 57.61 L 3.87 56.61 L 3.00 56.11 L 2.13 56.61 L 2.13 57.61 Z" />
<path d="M 5.00 58.11 L 5.87 57.61 L 5.87 56.61 L 5.00 56.11 L 4.13 56.61 L 4.13 57.61 Z" />
<path d="M 7.00 58.11 L 7.87 57.61 L 7.87 56.61 L 7.00 56.11 L 6.13 56.61 L 6.13 57.61 Z" />
<path d="M 13.00 58.11 L 13.87 57.61 L 13.87 56.61 L 13.00 56.11 L 12.13 56.61 L 12.13 57.61 Z" />
<path d="M 17.00 58.11 L 17.87 57.61 L 17.87 56.61 L 17.00 56.11 L 16.13 56.61 L 16.13 57.61 Z" />
<path d="M 19.00 58.11 L 19.87 57.61 L 19.87 56.61 L 19.00 56.11 L 18.13 56.61 L 18.13 57.61 Z" />
<path d="M 21.00 58.11 L 21.87 57.61 L 21.87 56.61 L 21.00 56.11 L 20.13 56.61 L 20.13 57.61 Z" />
<path d="M 23.00 58.11 L 23.87 57.61 L 23.87 56.61 L 23.00 56.11 L 22.13 56.61 L 22.13 57.61 Z" />
<path d="M 25.00 58.11 L 25.87 57.61 L 25.87 56.61 L 25.00 56.11 L 24.13 56.61 L 24.13 57.61 Z" />
<path d="M 31.00 58.11 L 31.87 57.61 L 31.87 56.61 L 31.00 56.11 L 30.13 56.61 L 30.13 57.61 Z" />
<path d="M 35.00 58.11 L 35.87 57.61 L 35.87 56.61 L 35.00 56.11 L 34.13 56.61 L 34.13 57.61 Z" />
<path d="M 37.00 58.11 L 37.87 57.61 L 37.87 56.61 L 37.00 56.11 L 36.13 56.61 L 36.13 57.61 Z" />
<path d="M 43.00 58.11 L 43.87 57.61 L 43.87 56.61 L 43.00 56.11 L 42.13 56.61 L 42.13 57.61 Z" />
<path d="M 53.00 58.11 L 53.87 57.61 L 53.87 56.61 L 53.00 56.11 L 52.13 56.61 L 52.13 57.61 Z" />
<path d="M 55.00 58.11 L 55.87 57.61 L 55.87 56.61 L 55.00 56.11 L 54.13 56.61 L 54.13 57.61 Z" />
<path d="M 57.00 58.11 L 57.87 57.61 L 57.87 56.61 L 57.00 56.11 L 56.13 56.61 L 56.13 57.61 Z" />
<path d="M 59.00 58.11 L 59.87 57.61 L 59.87 56.61 L 59.00 56.11 L 58.13 56.61 L 58.13 57.61 Z" />
<path d="M 2.00 59.85 L 2.87 59.35 L 2.87 58.35 L 2.00 57.85 L 1.13 58.35 L 1.13 59.35 Z" />
<path d="M 4.00 59.85 L 4.87 59.35 L 4.87 58.35 L 4.00 57.85 L 3.13 58.35 L 3.13 59.35 Z" />
<path d="M 6.00 59.85 L 6.87 59.35 L 6.87 58.35 L 6.00 57.85 L 5.13 58.35 L 5.13 59.35 Z" />
<path d="M 8.00 59.85 L 8.87 59.35 L 8.87 58.35 L 8.00 57.85 L 7.13 58.35 L 7.13 59.35 Z" />
<path d="M 10.00 59.85 L 10.87 59.35 L 10.87 58.35 L 10.00 57.85 L 9.13 58.35 L 9.13 59.35 Z" />
<path d="M 12.00 59.85 L 12.87 59.35 L 12.87 58.35 L 12.00 57.85 L 11.13 58.35 L 11.13 59.35 Z" />
<path d="M 16.00 59.85 L 16.87 59.35 L 16.87 58.35 L 16.00 57.85 L 15.13 58.35 L 15.13 59.35 Z" />
<path d="M 20.00 59.85 L 20.87 59.35 L 20.87 58.35 L 20.00 57.85 L 19.13 58.35 L 19.13 59.35 Z" />
<path d="M 22.00 59.85 L 22.87 59.35 L 22.87 58.35 L 22.00 57.85 L 21.13 58.35 L 21.13 59.35 Z" />
<path d="M 24.00 59.85 L 24.87 59.35 L 24.87 58.35 L 24.00 57.85 L 23.13 58.35 L 23.13 59.35 Z" />
<path d="M 30.00 59.85 L 30.87 59.35 L 30.87 58.35 L 30.00 57.85 L 29.13 58.35 L 29.13 59.35 Z" />
<path d="M 32.00 59.85 L 32.87 59.35 L 32.87 58.35 L 32.00 57.85 L 31.13 58.35 L 31.13 59.35 Z" />
<path d="M 36.00 59.85 L 36.87 59.35 L 36.87 58.35 L 36.00 57.85 L 35.13 58.35 L 35.13 59.35 Z" />
<path d="M 38.00 59.85 L 38.87 59.35 L 38.87 58.35 L 38.00 57.85 L 37.13 58.35 L 37.13 59.35 Z" />
<path d="M 42.00 59.85 L 42.87 59.35 L 42.87 58.35 L 42.00 57.85 L 41.13 58.35 L 41.13 59.35 Z" />
<path d="M 48.00 59.85 L 48.87 59.35 L 48.87 58.35 L 48.00 57.85 L 47.13 58.35 L 47.13 59.35 Z" />
<path d="M 50.00 59.85 L 50.87 59.35 L 50.87 58.35 L 50.00 57.85 L 49.13 58.35 L 49.13 59.35 Z" />
<path d="M 52.00 59.85 L 52.87 59.35 L 52.87 58.35 L 52.00 57.85 L 51.13 58.35 L 51.13 59.35 Z" />
<path d="M 54.00 59.85 L 54.87 59.35 L 54.87 58.35 L 54.00 57.85 L 53.13 58.35 L 53.13 59.35 Z" />
<path d="M 56.00 59.85 L 56.87 59.35 L 56.87 58.35 L 56.00 57.85 L 55.13 58.35 L 55.13 59.35 Z" />
<path d="M 58.00 59.85 L 58.87 59.35 L 58.87 58.35 L 58.00 57.85 L 57.13 58.35 L 57.13 59.35 Z" />
<path d="M 1.00 61.58 L 1.87 61.08 L 1.87 60.08 L 1.00 59.58 L 0.13 60.08 L 0.13 61.08 Z" />
<path d="M 7.00 61.58 L 7.87 61.08 L 7.87 60.08 L 7.00 59.58 L 6.13 60.08 L 6.13 61.08 Z" />
<path d="M 17.00 61.58 L 17.87 61.08 L 17.87 60.08 L 17.00 59.58 L 16.13 60.08 L 16.13 61.08 Z" />
<path d="M 21.00 61.58 L 21.87 61.08 L 21.87 60.08 L 21.00 59.58 L 20.13 60.08 L 20.13 61.08 Z" />
<path d="M 23.00 61.58 L 23.87 61.08 L 23.87 60.08 L 23.00 59.58 L 22.13 60.08 L 22.13 61.08 Z" />
<path d="M 31.00 61.58 L 31.87 61.08 L 31.87 60.08 L 31.00 59.58 L 30.13 60.08 L 30.13 61.08 Z" />
<path d="M 33.00 61.58 L 33.87 61.08 L 33.87 60.08 L 33.00 59.58 L 32.13 60.08 L 32.13 61.08 Z" />
<path d="M 37.00 61.58 L 37.87 61.08 L 37.87 60.08 L 37.00 59.58 L 36.13 60.08 L 36.13 61.08 Z" />
<path d="M 39.00 61.58 L 39.87 61.08 L 39.87 60.08 L 39.00 59.58 L 38.13 60.08 L 38.13 61.08 Z" />
<path d="M 51.00 61.58 L 51.87 61.08 L 51.87 60.08 L 51.00 59.58 L 50.13 60.08 L 50.13 61.08 Z" />
<path d="M 59.00 61.58 L 59.87 61.08 L 59.87 60.08 L 59.00 59.58 L 58.13 60.08 L 58.13 61.08 Z" />
<circle cx="29.00" cy="32.87" r="9.00" />
<circle cx="29.00" cy="32.87" r="7.43" fill="#FFFFFF" />
<circle cx="29.00" cy="32.87" r="5.86" />
<circle cx="29.00" cy="32.87" r="4.29" fill="#FFFFFF" />
<circle cx="29.00" cy="32.87" r="2.72" />
<circle cx="29.00" cy="32.87" r="1.15" fill="#FFFFFF" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -1,6 +1,6 @@
/*
libzint - the open source barcode library
Copyright (C) 2020 Robin Stuart <rstuart114@gmail.com>
Copyright (C) 2020 - 2021 Robin Stuart <rstuart114@gmail.com>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@ -120,6 +120,7 @@ static void test_print(int index, int generate, int debug) {
struct item {
int symbology;
int whitespace_width;
int whitespace_height;
int option_1;
int option_2;
char *fgcolour;
@ -128,8 +129,9 @@ static void test_print(int index, int generate, int debug) {
char* expected_file;
};
struct item data[] = {
/* 0*/ { BARCODE_PDF417, 5, -1, -1, "147AD0", "FC9630", "123", "../data/bmp/pdf417_fg_bg.bmp" },
/* 1*/ { BARCODE_ULTRA, 5, -1, -1, "147AD0", "FC9630", "123", "../data/bmp/ultracode_fg_bg.bmp" },
/* 0*/ { BARCODE_PDF417, 5, -1, -1, -1, "147AD0", "FC9630", "123", "../data/bmp/pdf417_fg_bg.bmp" },
/* 1*/ { BARCODE_ULTRA, 5, -1, -1, -1, "147AD0", "FC9630", "123", "../data/bmp/ultracode_fg_bg.bmp" },
/* 2*/ { BARCODE_PDF417COMP, 2, 2, -1, -1, "", "", "123", "../data/bmp/pdf417comp_hvwsp2.bmp" },
};
int data_size = ARRAY_SIZE(data);
@ -156,6 +158,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);
}
@ -171,8 +176,9 @@ static void test_print(int index, int generate, int debug) {
assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
if (generate) {
printf(" /*%3d*/ { %s, %d, %d, %d, \"%s\", \"%s\", \"%s\", \"%s\"},\n",
i, testUtilBarcodeName(data[i].symbology), data[i].whitespace_width, data[i].option_1, data[i].option_2, data[i].fgcolour, data[i].bgcolour,
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,
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 = rename(symbol->outfile, data[i].expected_file);
assert_zero(ret, "i:%d rename(%s, %s) ret %d != 0\n", i, symbol->outfile, data[i].expected_file, ret);

View File

@ -120,6 +120,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;
@ -133,49 +134,56 @@ static void test_print(int index, int generate, int debug) {
char *comment;
};
struct item data[] = {
/* 0*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, 0, 0, "", "", "Égjpqy", "", "../data/png/code128_egrave_bold.png", "" },
/* 1*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, 0, 0, "", "", "Égjpqy", "", "../data/png/code128_egrave_bold_box3.png", "" },
/* 2*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, 3, -1, 0, 0, "", "", "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", "../data/png/gs1_128_cc_fig12.png", "" },
/* 3*/ { BARCODE_CODABLOCKF, -1, 3, -1, -1, -1, 3, -1, 0, 0, "", "", "AAAAAAAAA", "", "../data/png/codablockf_3rows.png", "" },
/* 4*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9771384524017+12", "", "../data/png/ean13_2addon_ggs_5.2.2.5.1-2.png", "" },
/* 5*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9780877799306+54321", "", "../data/png/ean13_5addon_ggs_5.2.2.5.2-2.png", "" },
/* 6*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 1, -1, 0, 0, "", "", "123456789012+12", "[91]123456789012345678901", "../data/png/ean13_cc_2addon_cca_4x4.png", "" },
/* 7*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 2, -1, 0, 0, "", "", "123456789012+54321", "[91]1234567890", "../data/png/ean13_cc_5addon_ccb_3x4.png", "" },
/* 8*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 0, 2, -1, 0, 0, "", "", "123456789012+54321", "[91]1234567890", "../data/png/ean13_cc_5addon_ccb_3x4_notext.png", "" },
/* 9*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "012345678905+24", "", "../data/png/upca_2addon_ggs_5.2.6.6-5.png", "" },
/* 10*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon.png", "" },
/* 11*/ { BARCODE_UPCA, -1, -1, -1, -1, 0, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon_notext.png", "" },
/* 12*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon_bind3.png", "" },
/* 13*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 1, -1, 0, 0, "", "", "12345678901+12", "[91]123456789", "../data/png/upca_cc_2addon_cca_3x4.png", "" },
/* 14*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 2, -1, 0, 0, "", "", "12345678901+12121", "[91]1234567890123", "../data/png/upca_cc_5addon_ccb_4x4.png", "" },
/* 15*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, 0, 2, -1, 0, 0, "", "", "12345678901+12121", "[91]1234567890123", "../data/png/upca_cc_5addon_ccb_4x4_notext.png", "" },
/* 16*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, 2, -1, 0, 0, "", "", "12345678901+12121", "[91]1234567890123", "../data/png/upca_cc_5addon_ccb_4x4_bind3.png", "" },
/* 17*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12", "", "../data/png/upce_2addon.png", "" },
/* 18*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/upce_5addon.png", "" },
/* 19*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/upce_5addon_small.png", "" },
/* 20*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 1, -1, 0, 0, "", "", "0654321+89", "[91]1", "../data/png/upce_cc_2addon_cca_5x2.png", "" },
/* 21*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 2, -1, 0, 0, "", "", "1876543+56789", "[91]12345", "../data/png/upce_cc_5addon_ccb_8x2.png", "" },
/* 22*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, 0, 2, -1, 0, 0, "", "", "1876543+56789", "[91]12345", "../data/png/upce_cc_5addon_ccb_8x2_notext.png", "" },
/* 23*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12", "", "../data/png/ean8_2addon.png", "" },
/* 24*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/ean8_5addon.png", "" },
/* 25*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9876543+65", "[91]1234567", "../data/png/ean8_cc_2addon_cca_4x3.png", "" },
/* 26*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9876543+74083", "[91]123456789012345678", "../data/png/ean8_cc_5addon_ccb_8x3.png", "" },
/* 27*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12345", "", "../data/png/ean5.png", "" },
/* 28*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12", "", "../data/png/ean2.png", "" },
/* 29*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, 0, 0, "", "", "123", "", "../data/png/code39_small.png", "" },
/* 30*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, 0, 3.5, "", "", "12345", "", "../data/png/postnet_zip.png", "300 dpi, using 1/43in X, 300 / 43 / 2 = ~3.5 scale" },
/* 31*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "CFCECDCC", "12345", "", "../data/png/pdf417_bgalpha.png", "" },
/* 32*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, 0, 0, "30313233", "", "12345", "", "../data/png/pdf417_fgalpha.png", "" },
/* 33*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, 0, 0, "20212244", "CFCECDCC", "12345", "", "../data/png/pdf417_bgfgalpha.png", "" },
/* 34*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, 0, 0, "0000007F", "FF000033", "12345", "", "../data/png/ultra_bgfgalpha.png", "" },
/* 35*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, 0, 0, "", "FF000033", "12345", "", "../data/png/ultra_bgalpha.png", "" },
/* 36*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, 0, 0, "0000007F", "FF0000", "12345", "", "../data/png/ultra_fgalpha.png", "" },
/* 37*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, 0, 0, "0000007F", "", "12345", "", "../data/png/ultra_fgalpha_nobg.png", "" },
/* 38*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, 0, 0.5f, "", "", "1", "", "../data/png/ultra_odd.png", "" },
/* 39*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 0, 0.5f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_0.5.png", "6 dpmm, 150 dpi" },
/* 40*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BOX, 3, -1, -1, -1, 0, 0.7f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_0.7_wsp3_box1.png", "8 dpmm, 200 dpi" },
/* 41*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 0, 1.4f, "1111117F", "EEEEEEEE", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_1.4_bgfgalpha.png", "16 dpmm, 400 dpi" },
/* 42*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 0, 2.1f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_2.1.png", "24 dpmm, 600 dpi" },
/* 0*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, 0, 0, "", "", "Égjpqy", "", "../data/png/code128_egrave_bold.png", "" },
/* 1*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, 0, 0, "", "", "Égjpqy", "", "../data/png/code128_egrave_bold_box3.png", "" },
/* 2*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, 0, 0, "", "", "Égjpqy", "", "../data/png/code128_egrave_bold_hvwsp2_box2.png", "" },
/* 3*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, 0, 0, "", "", "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", "../data/png/gs1_128_cc_fig12.png", "" },
/* 4*/ { BARCODE_CODABLOCKF, -1, 3, -1, -1, -1, -1, 3, -1, 0, 0, "", "", "AAAAAAAAA", "", "../data/png/codablockf_3rows.png", "" },
/* 5*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, -1, -1, 0, 0, "", "", "AAAAAAAAA", "", "../data/png/codablockf_hvwsp2.png", "" },
/* 6*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, 0, 0, "", "", "AAAAAAAAA", "", "../data/png/codablockf_hvwsp2_box2.png", "" },
/* 7*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9771384524017+12", "", "../data/png/ean13_2addon_ggs_5.2.2.5.1-2.png", "" },
/* 8*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9780877799306+54321", "", "../data/png/ean13_5addon_ggs_5.2.2.5.2-2.png", "" },
/* 9*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, "", "", "123456789012+12", "[91]123456789012345678901", "../data/png/ean13_cc_2addon_cca_4x4.png", "" },
/* 10*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, "", "", "123456789012+54321", "[91]1234567890", "../data/png/ean13_cc_5addon_ccb_3x4.png", "" },
/* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, "", "", "123456789012+54321", "[91]1234567890", "../data/png/ean13_cc_5addon_ccb_3x4_notext.png", "" },
/* 12*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "012345678905+24", "", "../data/png/upca_2addon_ggs_5.2.6.6-5.png", "" },
/* 13*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon.png", "" },
/* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, 0, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon_notext.png", "" },
/* 15*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon_bind3.png", "" },
/* 16*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, "", "", "12345678901+12", "[91]123456789", "../data/png/upca_cc_2addon_cca_3x4.png", "" },
/* 17*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, "", "", "12345678901+12121", "[91]1234567890123", "../data/png/upca_cc_5addon_ccb_4x4.png", "" },
/* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, "", "", "12345678901+12121", "[91]1234567890123", "../data/png/upca_cc_5addon_ccb_4x4_notext.png", "" },
/* 19*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, 0, 0, "", "", "12345678901+12121", "[91]1234567890123", "../data/png/upca_cc_5addon_ccb_4x4_bind3.png", "" },
/* 20*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12", "", "../data/png/upce_2addon.png", "" },
/* 21*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/upce_5addon.png", "" },
/* 22*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/upce_5addon_small.png", "" },
/* 23*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, "", "", "0654321+89", "[91]1", "../data/png/upce_cc_2addon_cca_5x2.png", "" },
/* 24*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, "", "", "1876543+56789", "[91]12345", "../data/png/upce_cc_5addon_ccb_8x2.png", "" },
/* 25*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, "", "", "1876543+56789", "[91]12345", "../data/png/upce_cc_5addon_ccb_8x2_notext.png", "" },
/* 26*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12", "", "../data/png/ean8_2addon.png", "" },
/* 27*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/ean8_5addon.png", "" },
/* 28*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9876543+65", "[91]1234567", "../data/png/ean8_cc_2addon_cca_4x3.png", "" },
/* 29*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9876543+74083", "[91]123456789012345678", "../data/png/ean8_cc_5addon_ccb_8x3.png", "" },
/* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12345", "", "../data/png/ean5.png", "" },
/* 31*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12", "", "../data/png/ean2.png", "" },
/* 32*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, "", "", "123", "", "../data/png/code39_small.png", "" },
/* 33*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3.5, "", "", "12345", "", "../data/png/postnet_zip.png", "300 dpi, using 1/43in X, 300 / 43 / 2 = ~3.5 scale" },
/* 34*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "CFCECDCC", "12345", "", "../data/png/pdf417_bgalpha.png", "" },
/* 35*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "30313233", "", "12345", "", "../data/png/pdf417_fgalpha.png", "" },
/* 36*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "20212244", "CFCECDCC", "12345", "", "../data/png/pdf417_bgfgalpha.png", "" },
/* 37*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, "0000007F", "FF000033", "12345", "", "../data/png/ultra_bgfgalpha.png", "" },
/* 38*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, "", "FF000033", "12345", "", "../data/png/ultra_bgalpha.png", "" },
/* 39*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, "0000007F", "FF0000", "12345", "", "../data/png/ultra_fgalpha.png", "" },
/* 40*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "0000007F", "", "12345", "", "../data/png/ultra_fgalpha_nobg.png", "" },
/* 41*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5f, "", "", "1", "", "../data/png/ultra_odd.png", "" },
/* 42*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_0.5.png", "6 dpmm, 150 dpi" },
/* 43*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BOX, 3, -1, -1, -1, -1, 0, 0.7f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_0.7_wsp3_box1.png", "8 dpmm, 200 dpi" },
/* 44*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1.4f, "1111117F", "EEEEEEEE", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_1.4_bgfgalpha.png", "16 dpmm, 400 dpi" },
/* 45*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2.1f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_2.1.png", "24 dpmm, 600 dpi" },
/* 46*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_hvwsp1_box2.png", "" },
/* 47*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, 0, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_vwsp1_bind1.png", "" },
/* 48*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, -1, -1, -1, -1, 0, 2.0f, "", "", "1234", "", "../data/png/datamatrix_2.0_bind1_dotty.png", "" },
/* 49*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, 2.0f, "", "", "1234", "", "../data/png/datamatrix_2.0_hvwsp1_bind1_dotty.png", "" },
};
int data_size = ARRAY_SIZE(data);
@ -215,6 +223,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);
}
@ -237,9 +248,9 @@ static void test_print(int index, int generate, int debug) {
assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
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 = rename(symbol->outfile, data[i].expected_file);
assert_zero(ret, "i:%d rename(%s, %s) ret %d != 0\n", i, symbol->outfile, data[i].expected_file, ret);

View File

@ -257,7 +257,7 @@ static void test_buffer(int index, int generate, int debug) {
for (int i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d\n", i);
if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d\n", i); // ZINT_DEBUG_TEST_PRINT 16
struct zint_symbol *symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n");
@ -281,7 +281,7 @@ static void test_buffer(int index, int generate, int debug) {
assert_zero(ret, "i:%d ZBarcode_Buffer(%s) ret %d != 0 (%s)\n", i, testUtilBarcodeName(data[i].symbology), ret, symbol->errtxt);
assert_nonnull(symbol->bitmap, "i:%d ZBarcode_Buffer(%s) bitmap NULL\n", i, testUtilBarcodeName(data[i].symbology));
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
if (generate) {
printf(" /*%3d*/ { %s, \"%s\", \"%s\", %d, %d, %d, %d, %d },\n",
@ -366,7 +366,7 @@ static void test_upcean_hrt(int index, int debug) {
for (int 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);
if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i); // ZINT_DEBUG_TEST_PRINT 16
struct zint_symbol *symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n");
@ -383,7 +383,7 @@ static void test_upcean_hrt(int index, int debug) {
assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret);
assert_nonnull(symbol->bitmap, "i:%d (%d) symbol->bitmap NULL\n", i, data[i].symbology);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
assert_equal(symbol->height, data[i].expected_height, "i:%d (%s) symbol->height %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->height, data[i].expected_height);
assert_equal(symbol->rows, data[i].expected_rows, "i:%d (%s) symbol->rows %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->rows, data[i].expected_rows);
@ -500,7 +500,7 @@ static void test_row_separator(int index, int debug) {
int j, separator_bits_set;
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
for (j = data[i].expected_separator_row; j < data[i].expected_separator_row + data[i].expected_separator_height; j++) {
separator_bits_set = is_row_column_black(symbol, j, data[i].expected_separator_col);
@ -580,7 +580,7 @@ static void test_stacking(int index, int debug) {
int j, separator_bits_set;
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
if (data[i].expected_separator_row != -1) {
for (j = data[i].expected_separator_row; j < data[i].expected_separator_row + data[i].expected_separator_height; j++) {
@ -613,6 +613,7 @@ static void test_output_options(int index, int debug) {
struct item {
int symbology;
int whitespace_width;
int whitespace_height;
int border_width;
int output_options;
int rotate_angle;
@ -630,78 +631,84 @@ static void test_output_options(int index, int debug) {
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { BARCODE_CODE128, -1, -1, -1, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 1*/ { BARCODE_CODE128, -1, -1, -1, 180, "A123", 0, 50, 1, 79, 158, 116, 0, 115, 4 },
/* 2*/ { BARCODE_CODE128, -1, 2, -1, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 3*/ { BARCODE_CODE128, -1, 2, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 158, 124, 1, 0, 4 },
/* 4*/ { BARCODE_CODE128, -1, 2, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 158, 124, 0, 4, 4 },
/* 5*/ { BARCODE_CODE128, -1, 2, BARCODE_BOX, 0, "A123", 0, 50, 1, 79, 166, 124, 1, 4, 4 },
/* 6*/ { BARCODE_CODE128, -1, 0, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 7*/ { BARCODE_CODE128, -1, 0, BARCODE_BOX, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 4, 4 },
/* 8*/ { BARCODE_CODE128, -1, -1, -1, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 8 },
/* 9*/ { BARCODE_CODE128, 3, -1, -1, 0, "A123", 0, 50, 1, 79, 170, 116, 1, 0, 8 },
/* 10*/ { BARCODE_CODE128, 3, 4, -1, 0, "A123", 0, 50, 1, 79, 170, 116, 1, 0, 8 },
/* 11*/ { BARCODE_CODE128, 3, 4, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 170, 132, 1, 0, 0 },
/* 12*/ { BARCODE_CODE128, 3, 4, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 170, 132, 0, 8, 0 },
/* 13*/ { BARCODE_CODE128, 3, 4, BARCODE_BOX, 0, "A123", 0, 50, 1, 79, 186, 132, 1, 8, 0 },
/* 14*/ { BARCODE_CODE128, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 15*/ { BARCODE_CODE128, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 16*/ { BARCODE_CODE128, -1, -1, OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 50, 1, 79, 158, 116, 0, 115, 4 },
/* 17*/ { BARCODE_CODE128, 3, 4, BARCODE_BOX | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 50, 1, 79, 186, 132, 1, 8, 0 },
/* 18*/ { BARCODE_QRCODE, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 19*/ { BARCODE_QRCODE, -1, -1, -1, 180, "A123", 0, 21, 21, 21, 42, 42, 0, 39, 2 },
/* 20*/ { BARCODE_QRCODE, -1, 3, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 21*/ { BARCODE_QRCODE, -1, 3, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 42, 54, 1, 2, 2 },
/* 22*/ { BARCODE_QRCODE, -1, 3, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 42, 54, 0, 20, 0 },
/* 23*/ { BARCODE_QRCODE, -1, 3, BARCODE_BOX, 0, "A123", 0, 21, 21, 21, 54, 54, 1, 20, 0 },
/* 24*/ { BARCODE_QRCODE, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 1, 0, 0 },
/* 25*/ { BARCODE_QRCODE, 5, -1, -1, 0, "A123", 0, 21, 21, 21, 62, 42, 0, 0, 0 },
/* 26*/ { BARCODE_QRCODE, 5, 6, -1, 0, "A123", 0, 21, 21, 21, 62, 42, 0, 0, 0 },
/* 27*/ { BARCODE_QRCODE, 5, 6, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 62, 66, 1, 0, 0 },
/* 28*/ { BARCODE_QRCODE, 5, 6, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 62, 66, 0, 12, 0 },
/* 29*/ { BARCODE_QRCODE, 5, 6, BARCODE_BOX, 0, "A123", 0, 21, 21, 21, 86, 66, 1, 12, 0 },
/* 30*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 1 },
/* 31*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 },
/* 32*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 41, 1 },
/* 33*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 40, 2 },
/* 34*/ { BARCODE_QRCODE, -1, 4, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 1 },
/* 35*/ { BARCODE_QRCODE, -1, 4, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 },
/* 36*/ { BARCODE_QRCODE, -1, 4, BARCODE_BIND | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 59, -1, -1, -1 }, // TODO: fix (bind/box in dotty mode)
/* 37*/ { BARCODE_QRCODE, 1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 63, 59, -1, -1, -1 }, // TODO: fix (bind/box in dotty mode)
/* 38*/ { BARCODE_QRCODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 42, 42, 1, 1, 1 },
/* 39*/ { BARCODE_QRCODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 40*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 1 },
/* 41*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 },
/* 42*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 21, 21, 21, 43, 43, 1, 41, 1 },
/* 43*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 21, 21, 21, 43, 43, 0, 40, 2 },
/* 44*/ { BARCODE_MAXICODE, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 },
/* 45*/ { BARCODE_MAXICODE, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 },
/* 46*/ { BARCODE_MAXICODE, -1, -1, -1, 270, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 },
/* 47*/ { BARCODE_MAXICODE, -1, -1, -1, 270, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 },
/* 48*/ { BARCODE_MAXICODE, -1, 5, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 0, 0 },
/* 49*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 0, 0 },
/* 50*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 0, 50, 0 },
/* 51*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 0, 347, 50 },
/* 52*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 348, 50 },
/* 53*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + 50 * 2, 298 + 50 * 2, 1, 50, 0 },
/* 54*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + 50 * 2, 298 + 50 * 2, 0, 347, 50 },
/* 55*/ { BARCODE_MAXICODE, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 0, 14 },
/* 56*/ { BARCODE_MAXICODE, 6, -1, -1, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 14 },
/* 57*/ { BARCODE_MAXICODE, 6, -1, -1, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 47 },
/* 58*/ { BARCODE_MAXICODE, 6, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 1, 0, 47 },
/* 59*/ { BARCODE_MAXICODE, 6, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 0, 50, 0 },
/* 60*/ { BARCODE_MAXICODE, 6, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + (60 + 50) * 2, 298 + 50 * 2, 1, 50, 0 },
/* 61*/ { BARCODE_MAXICODE, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 62*/ { BARCODE_MAXICODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 },
/* 63*/ { BARCODE_MAXICODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 },
/* 64*/ { BARCODE_MAXICODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 },
/* 65*/ { BARCODE_MAXICODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 },
/* 66*/ { BARCODE_ITF14, -1, -1, -1, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 67*/ { BARCODE_ITF14, -1, -1, -1, 90, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 },
/* 68*/ { BARCODE_ITF14, -1, 0, -1, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 69*/ { BARCODE_ITF14, -1, 0, BARCODE_BOX, 0, "123", 0, 50, 1, 135, 310, 116, 0, 100, 0 },
/* 70*/ { BARCODE_ITF14, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 71*/ { BARCODE_ITF14, -1, -1, OUT_BUFFER_INTERMEDIATE, 90, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 },
/* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 1*/ { BARCODE_CODE128, -1, -1, -1, -1, 180, "A123", 0, 50, 1, 79, 158, 116, 0, 115, 4 },
/* 2*/ { BARCODE_CODE128, -1, -1, 2, -1, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 3*/ { BARCODE_CODE128, -1, -1, 2, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 158, 124, 1, 0, 4 },
/* 4*/ { BARCODE_CODE128, -1, -1, 2, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 158, 124, 0, 4, 4 },
/* 5*/ { BARCODE_CODE128, -1, -1, 2, BARCODE_BOX, 0, "A123", 0, 50, 1, 79, 166, 124, 1, 4, 4 },
/* 6*/ { BARCODE_CODE128, -1, -1, 0, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 7*/ { BARCODE_CODE128, -1, -1, 0, BARCODE_BOX, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 4, 4 },
/* 8*/ { BARCODE_CODE128, -1, -1, -1, -1, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 8 },
/* 9*/ { BARCODE_CODE128, 3, -1, -1, -1, 0, "A123", 0, 50, 1, 79, 170, 116, 1, 0, 8 },
/* 10*/ { BARCODE_CODE128, 3, 1, -1, -1, 0, "A123", 0, 50, 1, 79, 170, 120, 0, 0, 8 },
/* 11*/ { BARCODE_CODE128, 3, -1, 4, -1, 0, "A123", 0, 50, 1, 79, 170, 116, 1, 0, 8 },
/* 12*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 170, 132, 1, 0, 0 },
/* 13*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 170, 132, 0, 8, 0 },
/* 14*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BOX, 0, "A123", 0, 50, 1, 79, 186, 132, 1, 8, 0 },
/* 15*/ { BARCODE_CODE128, -1, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 16*/ { BARCODE_CODE128, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 17*/ { BARCODE_CODE128, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 50, 1, 79, 158, 116, 0, 115, 4 },
/* 18*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BOX | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 50, 1, 79, 186, 132, 1, 8, 0 },
/* 19*/ { BARCODE_QRCODE, -1, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 20*/ { BARCODE_QRCODE, -1, -1, -1, -1, 180, "A123", 0, 21, 21, 21, 42, 42, 0, 39, 2 },
/* 21*/ { BARCODE_QRCODE, -1, -1, 3, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 22*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 42, 54, 1, 2, 2 },
/* 23*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 42, 54, 0, 20, 0 },
/* 24*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BOX, 0, "A123", 0, 21, 21, 21, 54, 54, 1, 20, 0 },
/* 25*/ { BARCODE_QRCODE, -1, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 1, 0, 0 },
/* 26*/ { BARCODE_QRCODE, 5, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 62, 42, 0, 0, 0 },
/* 27*/ { BARCODE_QRCODE, 5, -1, 6, -1, 0, "A123", 0, 21, 21, 21, 62, 42, 0, 0, 0 },
/* 28*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 62, 66, 1, 0, 0 },
/* 29*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 62, 66, 0, 12, 0 },
/* 30*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BOX, 0, "A123", 0, 21, 21, 21, 86, 66, 1, 12, 0 },
/* 31*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 1 },
/* 32*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 },
/* 33*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 41, 1 },
/* 34*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 40, 2 },
/* 35*/ { BARCODE_QRCODE, -1, -1, 4, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 1 },
/* 36*/ { BARCODE_QRCODE, -1, -1, 4, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 },
/* 37*/ { BARCODE_QRCODE, -1, -1, 4, BARCODE_BIND | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 59, 1, 2, 2 },
/* 38*/ { BARCODE_QRCODE, -1, -1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 59, 59, 1, 9, 9 },
/* 39*/ { BARCODE_QRCODE, 1, -1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 63, 59, 0, 9, 9 },
/* 40*/ { BARCODE_QRCODE, 1, -1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 63, 59, 1, 0, 0 },
/* 41*/ { BARCODE_QRCODE, 1, -1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 63, 59, 1, 9, 11 },
/* 42*/ { BARCODE_QRCODE, 1, 1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 63, 63, 0, 0, 0 },
/* 43*/ { BARCODE_QRCODE, 1, 1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 63, 63, 1, 9, 13 },
/* 44*/ { BARCODE_QRCODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 42, 42, 1, 1, 1 },
/* 45*/ { BARCODE_QRCODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 46*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 1 },
/* 47*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 },
/* 48*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 21, 21, 21, 43, 43, 1, 41, 1 },
/* 49*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 21, 21, 21, 43, 43, 0, 40, 2 },
/* 50*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 },
/* 51*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 },
/* 52*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 270, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 },
/* 53*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 270, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 },
/* 54*/ { BARCODE_MAXICODE, -1, -1, 5, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 0, 0 },
/* 55*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 0, 0 },
/* 56*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 0, 50, 0 },
/* 57*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 0, 347, 50 },
/* 58*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 348, 50 },
/* 59*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + 50 * 2, 298 + 50 * 2, 1, 50, 0 },
/* 60*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + 50 * 2, 298 + 50 * 2, 0, 347, 50 },
/* 61*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 0, 14 },
/* 62*/ { BARCODE_MAXICODE, 6, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 14 },
/* 63*/ { BARCODE_MAXICODE, 6, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 47 },
/* 64*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 1, 0, 47 },
/* 65*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 0, 50, 0 },
/* 66*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + (60 + 50) * 2, 298 + 50 * 2, 1, 50, 0 },
/* 67*/ { BARCODE_MAXICODE, -1, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 68*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 },
/* 69*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 },
/* 70*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 },
/* 71*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 },
/* 72*/ { BARCODE_ITF14, -1, -1, -1, -1, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 73*/ { BARCODE_ITF14, -1, -1, -1, -1, 90, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 },
/* 74*/ { BARCODE_ITF14, -1, -1, 0, -1, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 75*/ { BARCODE_ITF14, -1, -1, 0, BARCODE_BOX, 0, "123", 0, 50, 1, 135, 310, 116, 0, 100, 0 },
/* 76*/ { BARCODE_ITF14, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 77*/ { BARCODE_ITF14, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 90, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 },
};
int data_size = ARRAY_SIZE(data);
@ -716,6 +723,9 @@ static void test_output_options(int index, 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].border_width != -1) {
symbol->border_width = data[i].border_width;
}
@ -729,7 +739,7 @@ static void test_output_options(int index, int debug) {
if (ret < 5) {
assert_nonnull(symbol->bitmap, "i:%d (%s) symbol->bitmap NULL\n", i, testUtilBarcodeName(data[i].symbology));
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
assert_equal(symbol->height, data[i].expected_height, "i:%d (%s) symbol->height %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->height, data[i].expected_height);
assert_equal(symbol->rows, data[i].expected_rows, "i:%d (%s) symbol->rows %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->rows, data[i].expected_rows);
@ -809,7 +819,7 @@ static void test_draw_string_wrap(int index, int debug) {
assert_equal(symbol->bitmap_width, data[i].expected_bitmap_width, "i:%d (%d) symbol->bitmap_width %d != %d\n", i, data[i].symbology, symbol->bitmap_width, data[i].expected_bitmap_width);
assert_equal(symbol->bitmap_height, data[i].expected_bitmap_height, "i:%d (%d) symbol->bitmap_height %d != %d\n", i, data[i].symbology, symbol->bitmap_height, data[i].expected_bitmap_height);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
ret = ZBarcode_Print(symbol, 0);
assert_zero(ret, "i:%d ZBarcode_Print(%d) ret %d != 0\n", i, data[i].symbology, ret);
@ -875,7 +885,7 @@ static void test_code128_utf8(int index, int debug) {
assert_equal(symbol->bitmap_width, data[i].expected_bitmap_width, "i:%d (%d) symbol->bitmap_width %d != %d\n", i, BARCODE_CODE128, symbol->bitmap_width, data[i].expected_bitmap_width);
assert_equal(symbol->bitmap_height, data[i].expected_bitmap_height, "i:%d (%d) symbol->bitmap_height %d != %d\n", i, BARCODE_CODE128, symbol->bitmap_height, data[i].expected_bitmap_height);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
ret = ZBarcode_Print(symbol, 0);
assert_zero(ret, "i:%d ZBarcode_Print(%d) ret %d != 0\n", i, BARCODE_CODE128, ret);
@ -979,7 +989,7 @@ static void test_scale(int index, int debug) {
assert_zero(ret, "i:%d ZBarcode_Buffer(%d) ret %d != 0\n", i, data[i].symbology, ret);
assert_nonnull(symbol->bitmap, "i:%d (%d) symbol->bitmap NULL\n", i, data[i].symbology);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
assert_equal(symbol->height, data[i].expected_height, "i:%d (%d) symbol->height %d != %d\n", i, data[i].symbology, symbol->height, data[i].expected_height);
assert_equal(symbol->rows, data[i].expected_rows, "i:%d (%d) symbol->rows %d != %d\n", i, data[i].symbology, symbol->rows, data[i].expected_rows);
@ -1129,7 +1139,7 @@ static void test_buffer_plot(int index, int generate, int debug) {
for (int i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d\n", i);
if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d\n", i); // ZINT_DEBUG_TEST_PRINT 16
struct zint_symbol *symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n");
@ -1156,7 +1166,7 @@ static void test_buffer_plot(int index, int generate, int debug) {
assert_zero(ret, "i:%d ZBarcode_Buffer(%s) ret %d != 0 (%s)\n", i, testUtilBarcodeName(data[i].symbology), ret, symbol->errtxt);
assert_nonnull(symbol->bitmap, "i:%d ZBarcode_Buffer(%s) bitmap NULL\n", i, testUtilBarcodeName(data[i].symbology));
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL);
if (index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); // ZINT_DEBUG_TEST_PRINT 16
if (generate) {
printf(" /*%3d*/ { %s, %d, %d, %d, %s, \"%s\", \"%s\", \"%s\", %d, %d, %d, %d, %d,\n",

View File

@ -49,6 +49,8 @@ static void test_print(int index, int generate, int debug) {
int input_mode;
int border_width;
int output_options;
int whitespace_width;
int whitespace_height;
int show_hrt;
int option_1;
int option_2;
@ -57,40 +59,47 @@ static void test_print(int index, int generate, int debug) {
char *expected_file;
};
struct item data[] = {
/* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, "<>\"&'", "", "../data/svg/code128_amperands.svg" },
/* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, "Égjpqy", "", "../data/svg/code128_egrave_bold.svg" },
/* 2*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, "Égjpqy", "", "../data/svg/code128_egrave_bold_box3.svg" },
/* 3*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, 3, -1, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", "../data/svg/gs1_128_cc_fig12.svg" },
/* 4*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, 3, -1, "AAAAAAAAA", "", "../data/svg/codablockf_3rows.svg" },
/* 5*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "9771384524017+12", "", "../data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg" },
/* 6*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "9780877799306+54321", "", "../data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg" },
/* 7*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 1, -1, "123456789012+12", "[91]123456789012345678901", "../data/svg/ean13_cc_2addon_cca_4x4.svg" },
/* 8*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 2, -1, "123456789012+54321", "[91]1234567890", "../data/svg/ean13_cc_5addon_ccb_3x4.svg" },
/* 9*/ { BARCODE_EANX_CC, -1, -1, -1, 0, 2, -1, "123456789012+54321", "[91]1234567890", "../data/svg/ean13_cc_5addon_ccb_3x4_notext.svg" },
/* 10*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, "012345678905+24", "", "../data/svg/upca_2addon_ggs_5.2.6.6-5.svg" },
/* 11*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon.svg" },
/* 12*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon_bind3.svg" },
/* 13*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon_small_bold.svg" },
/* 14*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, 1, -1, "12345678901+12", "[91]123456789", "../data/svg/upca_cc_2addon_cca_3x4.svg" },
/* 15*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, 2, -1, "12345678901+12121", "[91]1234567890123", "../data/svg/upca_cc_5addon_ccb_4x4.svg" },
/* 16*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 2, -1, "12345678901+12121", "[91]1234567890123", "../data/svg/upca_cc_5addon_ccb_4x4_notext.svg" },
/* 17*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, 2, -1, "12345678901+12121", "[91]1234567890123", "../data/svg/upca_cc_5addon_ccb_4x4_bind3.svg" },
/* 18*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, "1234567+12", "", "../data/svg/upce_2addon.svg" },
/* 19*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon.svg" },
/* 20*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon_small.svg" },
/* 21*/ { BARCODE_UPCE, -1, -1, -1, 0, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon_notext.svg" },
/* 22*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, 1, -1, "0654321+89", "[91]1", "../data/svg/upce_cc_2addon_cca_5x2.svg" },
/* 23*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, 2, -1, "1876543+56789", "[91]12345", "../data/svg/upce_cc_5addon_ccb_8x2.svg" },
/* 24*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 2, -1, "1876543+56789", "[91]12345", "../data/svg/upce_cc_5addon_ccb_8x2_notext.svg" },
/* 25*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "1234567+12", "", "../data/svg/ean8_2addon.svg" },
/* 26*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/ean8_5addon.svg" },
/* 27*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 1, -1, "9876543+65", "[91]1234567", "../data/svg/ean8_cc_2addon_cca_4x3.svg" },
/* 28*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 2, -1, "9876543+74083", "[91]123456789012345678", "../data/svg/ean8_cc_5addon_ccb_8x3.svg" },
/* 29*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "12345", "", "../data/svg/ean5.svg" },
/* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "12", "", "../data/svg/ean2.svg" },
/* 31*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, "123", "", "../data/svg/code39_small.svg" },
/* 32*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, "12345", "", "../data/svg/postnet_zip.svg" },
/* 33*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/svg/maxicode_box2.svg" },
/* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, -1, -1, "<>\"&'", "", "../data/svg/code128_amperands.svg" },
/* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, "Égjpqy", "", "../data/svg/code128_egrave_bold.svg" },
/* 2*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, "Égjpqy", "", "../data/svg/code128_egrave_bold_box3.svg" },
/* 3*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, "Égjpqy", "", "../data/svg/code128_egrave_bold_hvwsp2_box2.svg" },
/* 4*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, 3, 3, -1, -1, -1, "Égjpqy", "", "../data/svg/code128_egrave_bold_hvwsp3.svg" },
/* 5*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", "../data/svg/gs1_128_cc_fig12.svg" },
/* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, "AAAAAAAAA", "", "../data/svg/codablockf_3rows.svg" },
/* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, "AAAAAAAAA", "", "../data/svg/codablockf_hvwsp2.svg" },
/* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, "AAAAAAAAA", "", "../data/svg/codablockf_hvwsp2_box2.svg" },
/* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, "9771384524017+12", "", "../data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg" },
/* 10*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, "9780877799306+54321", "", "../data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg" },
/* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, "123456789012+12", "[91]123456789012345678901", "../data/svg/ean13_cc_2addon_cca_4x4.svg" },
/* 12*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, "123456789012+54321", "[91]1234567890", "../data/svg/ean13_cc_5addon_ccb_3x4.svg" },
/* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, "123456789012+54321", "[91]1234567890", "../data/svg/ean13_cc_5addon_ccb_3x4_notext.svg" },
/* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, "012345678905+24", "", "../data/svg/upca_2addon_ggs_5.2.6.6-5.svg" },
/* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon.svg" },
/* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon_bind3.svg" },
/* 17*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon_small_bold.svg" },
/* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, "12345678901+12", "[91]123456789", "../data/svg/upca_cc_2addon_cca_3x4.svg" },
/* 19*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, "12345678901+12121", "[91]1234567890123", "../data/svg/upca_cc_5addon_ccb_4x4.svg" },
/* 20*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, "12345678901+12121", "[91]1234567890123", "../data/svg/upca_cc_5addon_ccb_4x4_notext.svg" },
/* 21*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, "12345678901+12121", "[91]1234567890123", "../data/svg/upca_cc_5addon_ccb_4x4_bind3.svg" },
/* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, "1234567+12", "", "../data/svg/upce_2addon.svg" },
/* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon.svg" },
/* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon_small.svg" },
/* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon_notext.svg" },
/* 26*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, "0654321+89", "[91]1", "../data/svg/upce_cc_2addon_cca_5x2.svg" },
/* 27*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, "1876543+56789", "[91]12345", "../data/svg/upce_cc_5addon_ccb_8x2.svg" },
/* 28*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, "1876543+56789", "[91]12345", "../data/svg/upce_cc_5addon_ccb_8x2_notext.svg" },
/* 29*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, "1234567+12", "", "../data/svg/ean8_2addon.svg" },
/* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/ean8_5addon.svg" },
/* 31*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, "9876543+65", "[91]1234567", "../data/svg/ean8_cc_2addon_cca_4x3.svg" },
/* 32*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, "9876543+74083", "[91]123456789012345678", "../data/svg/ean8_cc_5addon_ccb_8x3.svg" },
/* 33*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, "12345", "", "../data/svg/ean5.svg" },
/* 34*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, "12", "", "../data/svg/ean2.svg" },
/* 35*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, "123", "", "../data/svg/code39_small.svg" },
/* 36*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, "12345", "", "../data/svg/postnet_zip.svg" },
/* 37*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/svg/maxicode_box2.svg" },
/* 38*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/svg/maxicode_vwsp1_bind1.svg" },
/* 39*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/svg/datamatrix_vwsp1_bind1_dotty.svg" },
/* 40*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/svg/datamatrix_hvwsp1_bind1_dotty.svg" },
};
int data_size = ARRAY_SIZE(data);
@ -121,6 +130,12 @@ static void test_print(int index, int generate, int 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 (strlen(data[i].composite)) {
text = data[i].composite;
strcpy(symbol->primary, data[i].data);
@ -137,9 +152,10 @@ static void test_print(int index, int generate, int debug) {
assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
if (generate) {
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, \"%s\", \"%s\", \"%s\" },\n",
printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %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].show_hrt, data[i].option_1, data[i].option_2, testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].expected_file);
data[i].whitespace_width, data[i].whitespace_height, data[i].show_hrt, data[i].option_1, data[i].option_2,
testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].expected_file);
ret = rename(symbol->outfile, data[i].expected_file);
assert_zero(ret, "i:%d rename(%s, %s) ret %d != 0\n", i, symbol->outfile, data[i].expected_file, ret);
if (have_libreoffice) {

View File

@ -592,6 +592,7 @@ static void test_output_options(int index, int debug) {
struct item {
int symbology;
int whitespace_width;
int whitespace_height;
int border_width;
int output_options;
char *data;
@ -608,45 +609,49 @@ static void test_output_options(int index, int debug) {
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = {
/* 0*/ { BARCODE_CODE128, -1, -1, -1, "A123", 0, 50, 1, 79, 158, 118.9, 0, 0, 4 },
/* 1*/ { BARCODE_CODE128, -1, 2, -1, "A123", 0, 50, 1, 79, 158, 118.9, 0, 0, 4 },
/* 2*/ { BARCODE_CODE128, -1, 2, BARCODE_BIND, "A123", 0, 50, 1, 79, 158, 126.9, 1, 0, 4 },
/* 3*/ { BARCODE_CODE128, -1, 2, BARCODE_BIND, "A123", 0, 50, 1, 79, 158, 126.9, 0, 4, 4 },
/* 4*/ { BARCODE_CODE128, -1, 2, BARCODE_BOX, "A123", 0, 50, 1, 79, 166, 126.9, 1, 4, 4 },
/* 5*/ { BARCODE_CODE128, -1, 0, BARCODE_BIND, "A123", 0, 50, 1, 79, 158, 118.9, 0, 0, 4 },
/* 6*/ { BARCODE_CODE128, -1, 0, BARCODE_BOX, "A123", 0, 50, 1, 79, 158, 118.9, 0, 4, 4 },
/* 7*/ { BARCODE_CODE128, -1, -1, -1, "A123", 0, 50, 1, 79, 158, 118.9, 0, 6, 8 },
/* 8*/ { BARCODE_CODE128, 3, 4, BARCODE_BIND, "A123", 0, 50, 1, 79, 170, 134.89999, 1, 6, 8 },
/* 9*/ { BARCODE_CODE128, 3, 4, BARCODE_BIND, "A123", 0, 50, 1, 79, 170, 134.89999, 0, 14, 8 },
/* 10*/ { BARCODE_CODE128, 3, 4, BARCODE_BOX, "A123", 0, 50, 1, 79, 186, 134.89999, 1, 14, 8 },
/* 11*/ { BARCODE_CODE128, -1, -1, BARCODE_DOTTY_MODE, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 12*/ { BARCODE_QRCODE, -1, -1, -1, "A123", 0, 21, 21, 21, 42, 42, 0, 0, 6 },
/* 13*/ { BARCODE_QRCODE, -1, 3, -1, "A123", 0, 21, 21, 21, 42, 42, 0, 0, 6 },
/* 14*/ { BARCODE_QRCODE, -1, 3, BARCODE_BIND, "A123", 0, 21, 21, 21, 42, 54, 1, 0, 6 },
/* 15*/ { BARCODE_QRCODE, -1, 3, BARCODE_BIND, "A123", 0, 21, 21, 21, 42, 54, 0, 22, 8 },
/* 16*/ { BARCODE_QRCODE, -1, 3, BARCODE_BOX, "A123", 0, 21, 21, 21, 54, 54, 1, 22, 8 },
/* 17*/ { BARCODE_QRCODE, -1, -1, -1, "A123", 0, 21, 21, 21, 42, 42, 0, 10, 12 },
/* 18*/ { BARCODE_QRCODE, 5, 6, BARCODE_BIND, "A123", 0, 21, 21, 21, 62, 66, 1, 10, 12 },
/* 19*/ { BARCODE_QRCODE, 5, 6, BARCODE_BIND, "A123", 0, 21, 21, 21, 62, 66, 0, 22, 12 },
/* 20*/ { BARCODE_QRCODE, 5, 6, BARCODE_BOX, "A123", 0, 21, 21, 21, 86, 66, 1, 22, 12 },
/* 21*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 42, 42, 0, 0, 50 },
/* 22*/ { BARCODE_QRCODE, -1, 4, BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 42, 42, 0, 0, 50 },
/* 23*/ { BARCODE_QRCODE, -1, 4, BARCODE_BIND | BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 42, 58, 1, 0, 50 },
/* 24*/ { BARCODE_QRCODE, -1, 4, BARCODE_BIND | BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 42, 58, 0, 54, 0 },
/* 25*/ { BARCODE_QRCODE, 1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 62, 58, 1, 54, 0 },
/* 26*/ { BARCODE_MAXICODE, -1, -1, -1, "A123", 0, 165, 33, 30, 60, 57.733398, 0, 0, 67.7334 },
/* 27*/ { BARCODE_MAXICODE, -1, 5, -1, "A123", 0, 165, 33, 30, 60, 57.733398, 0, 0, 67.7334 },
/* 28*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 60, 77.733398, 1, 0, 67.7334 },
/* 29*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 60, 77.733398, 0, 70, 0 },
/* 30*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BOX, "A123", 0, 165, 33, 30, 80, 77.733398, 1, 70, 0 },
/* 31*/ { BARCODE_MAXICODE, -1, -1, -1, "A123", 0, 165, 33, 30, 60, 57.733398, 0, 0, 67.7334 },
/* 32*/ { BARCODE_MAXICODE, 6, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 84, 77.733398, 1, 0, 67.7334 },
/* 33*/ { BARCODE_MAXICODE, 6, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 84, 77.733398, 0, 94, 0 },
/* 34*/ { BARCODE_MAXICODE, 6, 5, BARCODE_BOX, "A123", 0, 165, 33, 30, 104, 77.733398, 1, 94, 0 },
/* 35*/ { BARCODE_MAXICODE, -1, -1, BARCODE_DOTTY_MODE, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 36*/ { BARCODE_ITF14, -1, -1, -1, "123", 0, 50, 1, 135, 330, 138.89999, 1, 320, 0 },
/* 37*/ { BARCODE_ITF14, -1, 0, -1, "123", 0, 50, 1, 135, 330, 138.89999, 1, 320, 0 },
/* 38*/ { BARCODE_ITF14, -1, 0, BARCODE_BOX, "123", 0, 50, 1, 135, 310, 118.9, 0, 300, 0 }, // No zero-width/height rectangles
/* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, "A123", 0, 50, 1, 79, 158, 118.9, 0, 0, 4 },
/* 1*/ { BARCODE_CODE128, -1, -1, 2, -1, "A123", 0, 50, 1, 79, 158, 118.9, 0, 0, 4 },
/* 2*/ { BARCODE_CODE128, -1, -1, 2, BARCODE_BIND, "A123", 0, 50, 1, 79, 158, 126.9, 1, 0, 4 },
/* 3*/ { BARCODE_CODE128, -1, -1, 2, BARCODE_BIND, "A123", 0, 50, 1, 79, 158, 126.9, 0, 4, 4 },
/* 4*/ { BARCODE_CODE128, -1, -1, 2, BARCODE_BOX, "A123", 0, 50, 1, 79, 166, 126.9, 1, 4, 4 },
/* 5*/ { BARCODE_CODE128, -1, -1, 0, BARCODE_BIND, "A123", 0, 50, 1, 79, 158, 118.9, 0, 0, 4 },
/* 6*/ { BARCODE_CODE128, -1, -1, 0, BARCODE_BOX, "A123", 0, 50, 1, 79, 158, 118.9, 0, 4, 4 },
/* 7*/ { BARCODE_CODE128, -1, -1, -1, -1, "A123", 0, 50, 1, 79, 158, 118.9, 0, 2, 0 },
/* 8*/ { BARCODE_CODE128, 1, -1, -1, -1, "A123", 0, 50, 1, 79, 162, 118.9, 1, 2, 0 },
/* 9*/ { BARCODE_CODE128, 1, 2, -1, -1, "A123", 0, 50, 1, 79, 162, 126.9, 0, 2, 0 },
/* 10*/ { BARCODE_CODE128, 1, 2, -1, -1, "A123", 0, 50, 1, 79, 162, 126.9, 1, 2, 4 },
/* 11*/ { BARCODE_CODE128, -1, -1, -1, -1, "A123", 0, 50, 1, 79, 158, 118.9, 0, 6, 8 },
/* 12*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BIND, "A123", 0, 50, 1, 79, 170, 134.89999, 1, 6, 8 },
/* 13*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BIND, "A123", 0, 50, 1, 79, 170, 134.89999, 0, 14, 8 },
/* 14*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BOX, "A123", 0, 50, 1, 79, 186, 134.89999, 1, 14, 8 },
/* 15*/ { BARCODE_CODE128, -1, -1, -1, BARCODE_DOTTY_MODE, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 16*/ { BARCODE_QRCODE, -1, -1, -1, -1, "A123", 0, 21, 21, 21, 42, 42, 0, 0, 6 },
/* 17*/ { BARCODE_QRCODE, -1, -1, 3, -1, "A123", 0, 21, 21, 21, 42, 42, 0, 0, 6 },
/* 18*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BIND, "A123", 0, 21, 21, 21, 42, 54, 1, 0, 6 },
/* 19*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BIND, "A123", 0, 21, 21, 21, 42, 54, 0, 22, 8 },
/* 20*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BOX, "A123", 0, 21, 21, 21, 54, 54, 1, 22, 8 },
/* 21*/ { BARCODE_QRCODE, -1, -1, -1, -1, "A123", 0, 21, 21, 21, 42, 42, 0, 10, 12 },
/* 22*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BIND, "A123", 0, 21, 21, 21, 62, 66, 1, 10, 12 },
/* 23*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BIND, "A123", 0, 21, 21, 21, 62, 66, 0, 22, 12 },
/* 24*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BOX, "A123", 0, 21, 21, 21, 86, 66, 1, 22, 12 },
/* 25*/ { BARCODE_QRCODE, -1, -1, -1, BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 42, 42, 0, 0, 50 },
/* 26*/ { BARCODE_QRCODE, -1, -1, 4, BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 42, 42, 0, 0, 50 },
/* 27*/ { BARCODE_QRCODE, -1, -1, 4, BARCODE_BIND | BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 42, 58, 1, 0, 50 },
/* 28*/ { BARCODE_QRCODE, -1, -1, 4, BARCODE_BIND | BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 42, 58, 0, 54, 8 },
/* 29*/ { BARCODE_QRCODE, 1, -1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, "A123", 0, 21, 21, 21, 62, 58, 1, 54, 8 },
/* 30*/ { BARCODE_MAXICODE, -1, -1, -1, -1, "A123", 0, 165, 33, 30, 60, 57.733398, 0, 0, 67.7334 },
/* 31*/ { BARCODE_MAXICODE, -1, -1, 5, -1, "A123", 0, 165, 33, 30, 60, 57.733398, 0, 0, 67.7334 },
/* 32*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 60, 77.733398, 1, 0, 67.7334 },
/* 33*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 60, 77.733398, 0, 70, 10 },
/* 34*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BOX, "A123", 0, 165, 33, 30, 80, 77.733398, 1, 70, 10 },
/* 35*/ { BARCODE_MAXICODE, -1, -1, -1, -1, "A123", 0, 165, 33, 30, 60, 57.733398, 0, 0, 67.7334 },
/* 36*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 84, 77.733398, 1, 0, 67.7334 },
/* 37*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 84, 77.733398, 0, 94, 10 },
/* 38*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BOX, "A123", 0, 165, 33, 30, 104, 77.733398, 1, 94, 10 },
/* 39*/ { BARCODE_MAXICODE, -1, -1, -1, BARCODE_DOTTY_MODE, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 40*/ { BARCODE_ITF14, -1, -1, -1, -1, "123", 0, 50, 1, 135, 330, 138.89999, 1, 320, 10 },
/* 41*/ { BARCODE_ITF14, -1, -1, 0, -1, "123", 0, 50, 1, 135, 330, 138.89999, 1, 320, 10 },
/* 42*/ { BARCODE_ITF14, -1, -1, 0, BARCODE_BOX, "123", 0, 50, 1, 135, 310, 118.9, 0, 300, 0 }, // No zero-width/height rectangles
};
int data_size = ARRAY_SIZE(data);
@ -663,6 +668,9 @@ static void test_output_options(int index, 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].border_width != -1) {
symbol->border_width = data[i].border_width;
}

View File

@ -36,6 +36,12 @@
#ifndef TESTCOMMON_H
#define TESTCOMMON_H
#define ZINT_DEBUG_TEST_PRINT 16
#define ZINT_DEBUG_TEST_LESS_NOISY 32
#define ZINT_DEBUG_TEST_KEEP_OUTFILE 64
#define ZINT_DEBUG_TEST_BWIPP 128
#define ZINT_DEBUG_TEST_PERFORMANCE 256
#include <stdio.h>
#include "../common.h"
@ -73,12 +79,6 @@ void testRun(int argc, char *argv[], testFunction funcs[], int funcs_size);
#define assert_fail(...) assert_exp(0, __VA_ARGS__)
#define assert_nothing(__exp__, ...) {printf(__VA_ARGS__); __exp__;}
#define ZINT_DEBUG_TEST_PRINT 16
#define ZINT_DEBUG_TEST_LESS_NOISY 32
#define ZINT_DEBUG_TEST_KEEP_OUTFILE 64
#define ZINT_DEBUG_TEST_BWIPP 128
#define ZINT_DEBUG_TEST_PERFORMANCE 256
INTERNAL void vector_free(struct zint_symbol *symbol); /* Free vector structures */
int testUtilSetSymbol(struct zint_symbol *symbol, int symbology, int input_mode, int eci, int option_1, int option_2, int option_3, int output_options, char *data, int length, int debug);

View File

@ -487,10 +487,11 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_
vector->width = symbol->width + dot_overspill + (xoffset + roffset);
vector->height = symbol->height + textoffset + dot_overspill + (yoffset + boffset);
if (symbol->border_width > 0 && ((symbol->output_options & BARCODE_BOX) || (symbol->output_options & BARCODE_BIND))) {
default_text_posn = symbol->height + text_height + text_gap + symbol->border_width + symbol->border_width;
if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) {
default_text_posn = symbol->height + text_height + text_gap + symbol->whitespace_height
+ symbol->border_width * 2;
} else {
default_text_posn = symbol->height + text_height + text_gap;
default_text_posn = symbol->height + text_height + text_gap + symbol->whitespace_height;
}
// Plot Maxicode symbols
@ -807,7 +808,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_
}
// Binding and boxes
if ((symbol->output_options & BARCODE_BIND) != 0) {
if (symbol->output_options & BARCODE_BIND) {
if ((symbol->rows > 1) && (is_stackable(symbol->symbology) == 1)) {
float sep_height = 1.0f;
if (symbol->option_3 > 0 && symbol->option_3 <= 4) {
@ -831,28 +832,35 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_
}
}
if (symbol->border_width > 0) {
if ((symbol->output_options & BARCODE_BOX) || (symbol->output_options & BARCODE_BIND)) {
if (symbol->output_options & (BARCODE_BOX | BARCODE_BIND)) {
float ybind_bottom = vector->height - symbol->border_width - textoffset - symbol->whitespace_height;
// Top
rectangle = vector_plot_create_rect(0.0f, 0.0f, vector->width, symbol->border_width);
if (!(symbol->output_options & BARCODE_BOX) && (symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF)) {
rectangle = vector_plot_create_rect(0.0f, symbol->whitespace_height, vector->width, symbol->border_width);
if (!(symbol->output_options & BARCODE_BOX)
&& (symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF)) {
/* CodaBlockF bind - does not extend over horizontal whitespace */
rectangle->x = xoffset;
rectangle->width -= (2.0f * xoffset);
}
vector_plot_add_rect(symbol, rectangle, &last_rectangle);
// Bottom
rectangle = vector_plot_create_rect(0.0f, vector->height - symbol->border_width - textoffset, vector->width, symbol->border_width);
if (!(symbol->output_options & BARCODE_BOX) && (symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF)) {
rectangle = vector_plot_create_rect(0.0f, ybind_bottom, vector->width, symbol->border_width);
if (!(symbol->output_options & BARCODE_BOX)
&& (symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF)) {
/* CodaBlockF bind - does not extend over horizontal whitespace */
rectangle->x = xoffset;
rectangle->width -= (2.0f * xoffset);
}
vector_plot_add_rect(symbol, rectangle, &last_rectangle);
}
if (symbol->output_options & BARCODE_BOX) {
float xbox_right = vector->width - symbol->border_width;
float box_height = vector->height - textoffset - (symbol->whitespace_height + symbol->border_width) * 2;
// Left
rectangle = vector_plot_create_rect(0.0f, 0.0f, symbol->border_width, vector->height - textoffset);
rectangle = vector_plot_create_rect(0.0f, yoffset, symbol->border_width, box_height);
vector_plot_add_rect(symbol, rectangle, &last_rectangle);
// Right
rectangle = vector_plot_create_rect(vector->width - symbol->border_width, 0.0f, symbol->border_width, vector->height - textoffset);
rectangle = vector_plot_create_rect(xbox_right, yoffset, symbol->border_width, box_height);
vector_plot_add_rect(symbol, rectangle, &last_rectangle);
}
}

View File

@ -77,6 +77,7 @@ extern "C" {
int symbology;
int height; /* Height in X-dims (ignored for fixed-width barcodes) */
int whitespace_width; /* Width in X-dims of whitespace to left/right of barcode */
int whitespace_height; /* Height in X-dims of whitespace above and below the barcode */
int border_width; /* Size of border in X-dims */
int output_options;
char fgcolour[10]; /* Foreground as RGB/RGBA hexadecimal string */