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 /* output.c - Common routines for raster/vector
libzint - the open source barcode library 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 Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions 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; *roffset += symbol->border_width;
} }
*yoffset = qz_top; *yoffset = symbol->whitespace_height + qz_top;
*boffset = qz_bottom; *boffset = symbol->whitespace_height + qz_bottom;
if (symbol->output_options & (BARCODE_BOX | BARCODE_BIND)) { if (symbol->output_options & (BARCODE_BOX | BARCODE_BIND)) {
*yoffset += symbol->border_width; *yoffset += symbol->border_width;
*boffset += 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, draw_bullseye(pixelbuf, image_width, image_height, hex_width, hex_height, hx_start, hx_end, hex_image_height,
xoffset, yoffset, scaler); xoffset, yoffset, scaler);
if (symbol->border_width > 0) { if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) {
const int border_scaled = (int) floorf(symbol->border_width * scaler);
if ((symbol->output_options & BARCODE_BOX) || (symbol->output_options & BARCODE_BIND)) {
/* boundary bars */ /* boundary bars */
draw_bar(pixelbuf, 0, image_width, 0, border_scaled, image_width, image_height, DEFAULT_INK); const int border_scaled = (int) floorf(symbol->border_width * scaler);
draw_bar(pixelbuf, 0, image_width, hex_image_height + border_scaled, border_scaled, image_width, const int vwhitesp_scaled = (int) floorf(symbol->whitespace_height * scaler);
image_height, DEFAULT_INK); 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) { if (symbol->output_options & BARCODE_BOX) {
/* side bars */ /* side bars */
const int whitesp_scaled = (int) floorf(symbol->whitespace_width * scaler); 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); const int xbox_right = hex_image_width + border_scaled + whitesp_scaled * 2;
draw_bar(pixelbuf, hex_image_width + border_scaled + whitesp_scaled * 2, border_scaled, 0, image_height, const int ybox_top = border_scaled + vwhitesp_scaled;
image_width, image_height, DEFAULT_INK); 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; 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) { static int plot_raster_dotty(struct zint_symbol *symbol, const int rotate_angle, const int file_type) {
float scaler = 2 * symbol->scale; float scaler = 2 * symbol->scale;
unsigned char *scaled_pixelbuf; 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); 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)) { 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); 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_height = 0.0f;
row_posn = textoffset + boffset; /* Bottom up */ 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; xoffset -= comp_offset;
// Binding and boxes // 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)) { if ((symbol->rows > 1) && (is_stackable(symbol->symbology) == 1)) {
float sep_height = 1.0f; float sep_height = 1.0f;
if (symbol->option_3 > 0 && symbol->option_3 <= 4) { 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)) { draw_bind_box(symbol, pixelbuf, xoffset, roffset, textoffset, 0 /*overspill*/, image_width, image_height, si);
/* 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);
}
}
if (!half_int_scaling) { if (!half_int_scaling) {
scale_width = image_width * scaler; 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="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="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="106.00" width="236.00" height="6.00" />
<rect x="0.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="0.00" width="6.00" height="112.00" /> <rect x="230.00" y="6.00" width="6.00" height="100.00" />
<text x="118.00" y="127.40" text-anchor="middle" <text x="118.00" y="127.40" text-anchor="middle"
font-family="Helvetica, sans-serif" font-size="14.0" font-weight="bold" > font-family="Helvetica, sans-serif" font-size="14.0" font-weight="bold" >
Égjpqy É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" 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="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="61.73" width="68.00" height="4.00" />
<rect x="0.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="0.00" width="4.00" height="65.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 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 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 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 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 Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions modification, are permitted provided that the following conditions
@ -120,6 +120,7 @@ static void test_print(int index, int generate, int debug) {
struct item { struct item {
int symbology; int symbology;
int whitespace_width; int whitespace_width;
int whitespace_height;
int option_1; int option_1;
int option_2; int option_2;
char *fgcolour; char *fgcolour;
@ -128,8 +129,9 @@ static void test_print(int index, int generate, int debug) {
char* expected_file; char* expected_file;
}; };
struct item data[] = { struct item data[] = {
/* 0*/ { BARCODE_PDF417, 5, -1, -1, "147AD0", "FC9630", "123", "../data/bmp/pdf417_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, "147AD0", "FC9630", "123", "../data/bmp/ultracode_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); 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) { if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width; symbol->whitespace_width = data[i].whitespace_width;
} }
if (data[i].whitespace_height != -1) {
symbol->whitespace_height = data[i].whitespace_height;
}
if (*data[i].fgcolour) { if (*data[i].fgcolour) {
strcpy(symbol->fgcolour, 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); assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
if (generate) { if (generate) {
printf(" /*%3d*/ { %s, %d, %d, %d, \"%s\", \"%s\", \"%s\", \"%s\"},\n", printf(" /*%3d*/ { %s, %d, %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, 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); testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].expected_file);
ret = rename(symbol->outfile, 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); 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 border_width;
int output_options; int output_options;
int whitespace_width; int whitespace_width;
int whitespace_height;
int show_hrt; int show_hrt;
int option_1; int option_1;
int option_2; int option_2;
@ -133,49 +134,56 @@ static void test_print(int index, int generate, int debug) {
char *comment; char *comment;
}; };
struct item data[] = { struct item data[] = {
/* 0*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, 0, 0, "", "", "Égjpqy", "", "../data/png/code128_egrave_bold.png", "" }, /* 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, 0, 0, "", "", "Égjpqy", "", "../data/png/code128_egrave_bold_box3.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_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", "" }, /* 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_CODABLOCKF, -1, 3, -1, -1, -1, 3, -1, 0, 0, "", "", "AAAAAAAAA", "", "../data/png/codablockf_3rows.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_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9771384524017+12", "", "../data/png/ean13_2addon_ggs_5.2.2.5.1-2.png", "" }, /* 4*/ { BARCODE_CODABLOCKF, -1, 3, -1, -1, -1, -1, 3, -1, 0, 0, "", "", "AAAAAAAAA", "", "../data/png/codablockf_3rows.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", "" }, /* 5*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, -1, -1, 0, 0, "", "", "AAAAAAAAA", "", "../data/png/codablockf_hvwsp2.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", "" }, /* 6*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, 0, 0, "", "", "AAAAAAAAA", "", "../data/png/codablockf_hvwsp2_box2.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", "" }, /* 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_CC, -1, -1, -1, -1, 0, 2, -1, 0, 0, "", "", "123456789012+54321", "[91]1234567890", "../data/png/ean13_cc_5addon_ccb_3x4_notext.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_UPCA, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "012345678905+24", "", "../data/png/upca_2addon_ggs_5.2.6.6-5.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_UPCA, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon.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_UPCA, -1, -1, -1, -1, 0, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon_notext.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, 3, BARCODE_BIND, -1, -1, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon_bind3.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_CC, -1, -1, -1, -1, -1, 1, -1, 0, 0, "", "", "12345678901+12", "[91]123456789", "../data/png/upca_cc_2addon_cca_3x4.png", "" }, /* 13*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon.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", "" }, /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, 0, -1, -1, 0, 0, "", "", "614141234417+12345", "", "../data/png/upca_5addon_notext.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", "" }, /* 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, 3, BARCODE_BIND, -1, -1, 2, -1, 0, 0, "", "", "12345678901+12121", "[91]1234567890123", "../data/png/upca_cc_5addon_ccb_4x4_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_UPCE, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12", "", "../data/png/upce_2addon.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_UPCE, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/upce_5addon.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_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/upce_5addon_small.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_CC, -1, -1, -1, -1, -1, 1, -1, 0, 0, "", "", "0654321+89", "[91]1", "../data/png/upce_cc_2addon_cca_5x2.png", "" }, /* 20*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12", "", "../data/png/upce_2addon.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", "" }, /* 21*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/upce_5addon.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", "" }, /* 22*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/upce_5addon_small.png", "" },
/* 23*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12", "", "../data/png/ean8_2addon.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_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/ean8_5addon.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_EANX_CC, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9876543+65", "[91]1234567", "../data/png/ean8_cc_2addon_cca_4x3.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_CC, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "9876543+74083", "[91]123456789012345678", "../data/png/ean8_cc_5addon_ccb_8x3.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, 0, 0, "", "", "12345", "", "../data/png/ean5.png", "" }, /* 27*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "1234567+12345", "", "../data/png/ean8_5addon.png", "" },
/* 28*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12", "", "../data/png/ean2.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_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, 0, 0, "", "", "123", "", "../data/png/code39_small.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_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" }, /* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12345", "", "../data/png/ean5.png", "" },
/* 31*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "CFCECDCC", "12345", "", "../data/png/pdf417_bgalpha.png", "" }, /* 31*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "", "12", "", "../data/png/ean2.png", "" },
/* 32*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, 0, 0, "30313233", "", "12345", "", "../data/png/pdf417_fgalpha.png", "" }, /* 32*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, "", "", "123", "", "../data/png/code39_small.png", "" },
/* 33*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, 0, 0, "20212244", "CFCECDCC", "12345", "", "../data/png/pdf417_bgfgalpha.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_ULTRA, -1, -1, -1, 2, -1, -1, -1, 0, 0, "0000007F", "FF000033", "12345", "", "../data/png/ultra_bgfgalpha.png", "" }, /* 34*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "", "CFCECDCC", "12345", "", "../data/png/pdf417_bgalpha.png", "" },
/* 35*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, 0, 0, "", "FF000033", "12345", "", "../data/png/ultra_bgalpha.png", "" }, /* 35*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "30313233", "", "12345", "", "../data/png/pdf417_fgalpha.png", "" },
/* 36*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, 0, 0, "0000007F", "FF0000", "12345", "", "../data/png/ultra_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, -1, -1, -1, -1, 0, 0, "0000007F", "", "12345", "", "../data/png/ultra_fgalpha_nobg.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, -1, -1, -1, -1, 0, 0.5f, "", "", "1", "", "../data/png/ultra_odd.png", "" }, /* 38*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, "", "FF000033", "12345", "", "../data/png/ultra_bgalpha.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" }, /* 39*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, "0000007F", "FF0000", "12345", "", "../data/png/ultra_fgalpha.png", "" },
/* 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" }, /* 40*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, "0000007F", "", "12345", "", "../data/png/ultra_fgalpha_nobg.png", "" },
/* 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" }, /* 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, 0, 2.1f, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/png/maxicode_2.1.png", "24 dpmm, 600 dpi" }, /* 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); 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) { if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width; symbol->whitespace_width = data[i].whitespace_width;
} }
if (data[i].whitespace_height != -1) {
symbol->whitespace_height = data[i].whitespace_height;
}
if (*data[i].fgcolour) { if (*data[i].fgcolour) {
strcpy(symbol->fgcolour, 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); assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
if (generate) { 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), 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); 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); 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); 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++) { for (int i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue; 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(); struct zint_symbol *symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n"); 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_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)); 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) { if (generate) {
printf(" /*%3d*/ { %s, \"%s\", \"%s\", %d, %d, %d, %d, %d },\n", 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++) { for (int i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue; 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(); struct zint_symbol *symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n"); 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_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); 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->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); 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; 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++) { 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); 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; 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) { 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++) { 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 { struct item {
int symbology; int symbology;
int whitespace_width; int whitespace_width;
int whitespace_height;
int border_width; int border_width;
int output_options; int output_options;
int rotate_angle; int rotate_angle;
@ -630,78 +631,84 @@ static void test_output_options(int index, int debug) {
}; };
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = { struct item data[] = {
/* 0*/ { BARCODE_CODE128, -1, -1, -1, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 }, /* 0*/ { BARCODE_CODE128, -1, -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 }, /* 1*/ { BARCODE_CODE128, -1, -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 }, /* 2*/ { BARCODE_CODE128, -1, -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 }, /* 3*/ { BARCODE_CODE128, -1, -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 }, /* 4*/ { BARCODE_CODE128, -1, -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 }, /* 5*/ { BARCODE_CODE128, -1, -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 }, /* 6*/ { BARCODE_CODE128, -1, -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 }, /* 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, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 8 }, /* 8*/ { BARCODE_CODE128, -1, -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 }, /* 9*/ { BARCODE_CODE128, 3, -1, -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 }, /* 10*/ { BARCODE_CODE128, 3, 1, -1, -1, 0, "A123", 0, 50, 1, 79, 170, 120, 0, 0, 8 },
/* 11*/ { BARCODE_CODE128, 3, 4, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 170, 132, 1, 0, 0 }, /* 11*/ { BARCODE_CODE128, 3, -1, 4, -1, 0, "A123", 0, 50, 1, 79, 170, 116, 1, 0, 8 },
/* 12*/ { BARCODE_CODE128, 3, 4, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 170, 132, 0, 8, 0 }, /* 12*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 170, 132, 1, 0, 0 },
/* 13*/ { BARCODE_CODE128, 3, 4, BARCODE_BOX, 0, "A123", 0, 50, 1, 79, 186, 132, 1, 8, 0 }, /* 13*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BIND, 0, "A123", 0, 50, 1, 79, 170, 132, 0, 8, 0 },
/* 14*/ { BARCODE_CODE128, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 }, /* 14*/ { BARCODE_CODE128, 3, -1, 4, BARCODE_BOX, 0, "A123", 0, 50, 1, 79, 186, 132, 1, 8, 0 },
/* 15*/ { BARCODE_CODE128, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 }, /* 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, OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 50, 1, 79, 158, 116, 0, 115, 4 }, /* 16*/ { BARCODE_CODE128, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 50, 1, 79, 158, 116, 0, 0, 4 },
/* 17*/ { BARCODE_CODE128, 3, 4, BARCODE_BOX | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 50, 1, 79, 186, 132, 1, 8, 0 }, /* 17*/ { BARCODE_CODE128, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 50, 1, 79, 158, 116, 0, 115, 4 },
/* 18*/ { BARCODE_QRCODE, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 }, /* 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, 180, "A123", 0, 21, 21, 21, 42, 42, 0, 39, 2 }, /* 19*/ { BARCODE_QRCODE, -1, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 20*/ { BARCODE_QRCODE, -1, 3, -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, 3, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 42, 54, 1, 2, 2 }, /* 21*/ { BARCODE_QRCODE, -1, -1, 3, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 22*/ { BARCODE_QRCODE, -1, 3, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 42, 54, 0, 20, 0 }, /* 22*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 42, 54, 1, 2, 2 },
/* 23*/ { BARCODE_QRCODE, -1, 3, BARCODE_BOX, 0, "A123", 0, 21, 21, 21, 54, 54, 1, 20, 0 }, /* 23*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 42, 54, 0, 20, 0 },
/* 24*/ { BARCODE_QRCODE, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 1, 0, 0 }, /* 24*/ { BARCODE_QRCODE, -1, -1, 3, BARCODE_BOX, 0, "A123", 0, 21, 21, 21, 54, 54, 1, 20, 0 },
/* 25*/ { BARCODE_QRCODE, 5, -1, -1, 0, "A123", 0, 21, 21, 21, 62, 42, 0, 0, 0 }, /* 25*/ { BARCODE_QRCODE, -1, -1, -1, -1, 0, "A123", 0, 21, 21, 21, 42, 42, 1, 0, 0 },
/* 26*/ { BARCODE_QRCODE, 5, 6, -1, 0, "A123", 0, 21, 21, 21, 62, 42, 0, 0, 0 }, /* 26*/ { BARCODE_QRCODE, 5, -1, -1, -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 }, /* 27*/ { BARCODE_QRCODE, 5, -1, 6, -1, 0, "A123", 0, 21, 21, 21, 62, 42, 0, 0, 0 },
/* 28*/ { BARCODE_QRCODE, 5, 6, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 62, 66, 0, 12, 0 }, /* 28*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 62, 66, 1, 0, 0 },
/* 29*/ { BARCODE_QRCODE, 5, 6, BARCODE_BOX, 0, "A123", 0, 21, 21, 21, 86, 66, 1, 12, 0 }, /* 29*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BIND, 0, "A123", 0, 21, 21, 21, 62, 66, 0, 12, 0 },
/* 30*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 1 }, /* 30*/ { BARCODE_QRCODE, 5, -1, 6, BARCODE_BOX, 0, "A123", 0, 21, 21, 21, 86, 66, 1, 12, 0 },
/* 31*/ { BARCODE_QRCODE, -1, -1, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 }, /* 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, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 41, 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, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 40, 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, 4, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 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, 4, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 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, 4, BARCODE_BIND | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 59, -1, -1, -1 }, // TODO: fix (bind/box in dotty mode) /* 36*/ { BARCODE_QRCODE, -1, -1, 4, BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 },
/* 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) /* 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, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 42, 42, 1, 1, 1 }, /* 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, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 }, /* 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, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 43, 43, 1, 1, 1 }, /* 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, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 43, 43, 0, 2, 2 }, /* 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, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 21, 21, 21, 43, 43, 1, 41, 1 }, /* 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, BARCODE_DOTTY_MODE | OUT_BUFFER_INTERMEDIATE, 180, "A123", 0, 21, 21, 21, 43, 43, 0, 40, 2 }, /* 43*/ { BARCODE_QRCODE, 1, 1, 4, BARCODE_BOX | BARCODE_DOTTY_MODE, 0, "A123", 0, 21, 21, 21, 63, 63, 1, 9, 13 },
/* 44*/ { BARCODE_MAXICODE, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 }, /* 44*/ { BARCODE_QRCODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 42, 42, 1, 1, 1 },
/* 45*/ { BARCODE_MAXICODE, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 }, /* 45*/ { BARCODE_QRCODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 21, 21, 21, 42, 42, 0, 2, 2 },
/* 46*/ { BARCODE_MAXICODE, -1, -1, -1, 270, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 }, /* 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_MAXICODE, -1, -1, -1, 270, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 }, /* 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_MAXICODE, -1, 5, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 0, 0 }, /* 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_MAXICODE, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 0, 0 }, /* 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, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 0, 50, 0 }, /* 50*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 },
/* 51*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 0, 347, 50 }, /* 51*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 },
/* 52*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 348, 50 }, /* 52*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 270, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 },
/* 53*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + 50 * 2, 298 + 50 * 2, 1, 50, 0 }, /* 53*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 270, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 },
/* 54*/ { BARCODE_MAXICODE, -1, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + 50 * 2, 298 + 50 * 2, 0, 347, 50 }, /* 54*/ { BARCODE_MAXICODE, -1, -1, 5, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 0, 0 },
/* 55*/ { BARCODE_MAXICODE, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 0, 14 }, /* 55*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 0, 0 },
/* 56*/ { BARCODE_MAXICODE, 6, -1, -1, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 14 }, /* 56*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 0, 50, 0 },
/* 57*/ { BARCODE_MAXICODE, 6, -1, -1, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 47 }, /* 57*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 0, 347, 50 },
/* 58*/ { BARCODE_MAXICODE, 6, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 1, 0, 47 }, /* 58*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 348, 50 },
/* 59*/ { BARCODE_MAXICODE, 6, 5, BARCODE_BIND, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 0, 50, 0 }, /* 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, 6, 5, BARCODE_BOX, 0, "A123", 0, 165, 33, 30, 299 + (60 + 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, BARCODE_DOTTY_MODE, 0, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 }, /* 61*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 0, 14 },
/* 62*/ { BARCODE_MAXICODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 }, /* 62*/ { BARCODE_MAXICODE, 6, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 14 },
/* 63*/ { BARCODE_MAXICODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 }, /* 63*/ { BARCODE_MAXICODE, 6, -1, -1, -1, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 47 },
/* 64*/ { BARCODE_MAXICODE, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 }, /* 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, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 }, /* 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_ITF14, -1, -1, -1, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 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_ITF14, -1, -1, -1, 90, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 }, /* 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_ITF14, -1, 0, -1, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 }, /* 68*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 },
/* 69*/ { BARCODE_ITF14, -1, 0, BARCODE_BOX, 0, "123", 0, 50, 1, 135, 310, 116, 0, 100, 0 }, /* 69*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 },
/* 70*/ { BARCODE_ITF14, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 }, /* 70*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 },
/* 71*/ { BARCODE_ITF14, -1, -1, OUT_BUFFER_INTERMEDIATE, 90, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 }, /* 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); 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) { if (data[i].whitespace_width != -1) {
symbol->whitespace_width = data[i].whitespace_width; 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) { if (data[i].border_width != -1) {
symbol->border_width = data[i].border_width; symbol->border_width = data[i].border_width;
} }
@ -729,7 +739,7 @@ static void test_output_options(int index, int debug) {
if (ret < 5) { if (ret < 5) {
assert_nonnull(symbol->bitmap, "i:%d (%s) symbol->bitmap NULL\n", i, testUtilBarcodeName(data[i].symbology)); 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->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); 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_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); 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); ret = ZBarcode_Print(symbol, 0);
assert_zero(ret, "i:%d ZBarcode_Print(%d) ret %d != 0\n", i, data[i].symbology, ret); 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_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); 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); ret = ZBarcode_Print(symbol, 0);
assert_zero(ret, "i:%d ZBarcode_Print(%d) ret %d != 0\n", i, BARCODE_CODE128, ret); 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_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); 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->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); 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++) { for (int i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue; 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(); struct zint_symbol *symbol = ZBarcode_Create();
assert_nonnull(symbol, "Symbol not created\n"); 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_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)); 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) { if (generate) {
printf(" /*%3d*/ { %s, %d, %d, %d, %s, \"%s\", \"%s\", \"%s\", %d, %d, %d, %d, %d,\n", 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 input_mode;
int border_width; int border_width;
int output_options; int output_options;
int whitespace_width;
int whitespace_height;
int show_hrt; int show_hrt;
int option_1; int option_1;
int option_2; int option_2;
@ -57,40 +59,47 @@ static void test_print(int index, int generate, int debug) {
char *expected_file; char *expected_file;
}; };
struct item data[] = { struct item data[] = {
/* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, "<>\"&'", "", "../data/svg/code128_amperands.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, "Égjpqy", "", "../data/svg/code128_egrave_bold.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, "Égjpqy", "", "../data/svg/code128_egrave_bold_box3.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_GS1_128_CC, -1, -1, -1, -1, 3, -1, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", "../data/svg/gs1_128_cc_fig12.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_CODABLOCKF, -1, -1, -1, -1, 3, -1, "AAAAAAAAA", "", "../data/svg/codablockf_3rows.svg" }, /* 4*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, 3, 3, -1, -1, -1, "Égjpqy", "", "../data/svg/code128_egrave_bold_hvwsp3.svg" },
/* 5*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "9771384524017+12", "", "../data/svg/ean13_2addon_ggs_5.2.2.5.1-2.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_EANX, -1, -1, -1, -1, -1, -1, "9780877799306+54321", "", "../data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg" }, /* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, "AAAAAAAAA", "", "../data/svg/codablockf_3rows.svg" },
/* 7*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 1, -1, "123456789012+12", "[91]123456789012345678901", "../data/svg/ean13_cc_2addon_cca_4x4.svg" }, /* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, "AAAAAAAAA", "", "../data/svg/codablockf_hvwsp2.svg" },
/* 8*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 2, -1, "123456789012+54321", "[91]1234567890", "../data/svg/ean13_cc_5addon_ccb_3x4.svg" }, /* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, "AAAAAAAAA", "", "../data/svg/codablockf_hvwsp2_box2.svg" },
/* 9*/ { BARCODE_EANX_CC, -1, -1, -1, 0, 2, -1, "123456789012+54321", "[91]1234567890", "../data/svg/ean13_cc_5addon_ccb_3x4_notext.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_UPCA, -1, -1, -1, -1, -1, -1, "012345678905+24", "", "../data/svg/upca_2addon_ggs_5.2.6.6-5.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_UPCA, -1, -1, -1, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon.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_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon_bind3.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_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon_small_bold.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_CC, -1, -1, -1, -1, 1, -1, "12345678901+12", "[91]123456789", "../data/svg/upca_cc_2addon_cca_3x4.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_CC, -1, -1, -1, -1, 2, -1, "12345678901+12121", "[91]1234567890123", "../data/svg/upca_cc_5addon_ccb_4x4.svg" }, /* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon.svg" },
/* 16*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 2, -1, "12345678901+12121", "[91]1234567890123", "../data/svg/upca_cc_5addon_ccb_4x4_notext.svg" }, /* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, "614141234417+12345", "", "../data/svg/upca_5addon_bind3.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" }, /* 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_UPCE, -1, -1, -1, -1, -1, -1, "1234567+12", "", "../data/svg/upce_2addon.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_UPCE, -1, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon.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_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon_small.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_UPCE, -1, -1, -1, 0, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon_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_CC, -1, -1, -1, -1, 1, -1, "0654321+89", "[91]1", "../data/svg/upce_cc_2addon_cca_5x2.svg" }, /* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, "1234567+12", "", "../data/svg/upce_2addon.svg" },
/* 23*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, 2, -1, "1876543+56789", "[91]12345", "../data/svg/upce_cc_5addon_ccb_8x2.svg" }, /* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon.svg" },
/* 24*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 2, -1, "1876543+56789", "[91]12345", "../data/svg/upce_cc_5addon_ccb_8x2_notext.svg" }, /* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon_small.svg" },
/* 25*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "1234567+12", "", "../data/svg/ean8_2addon.svg" }, /* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, "1234567+12345", "", "../data/svg/upce_5addon_notext.svg" },
/* 26*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/ean8_5addon.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_EANX_CC, -1, -1, -1, -1, 1, -1, "9876543+65", "[91]1234567", "../data/svg/ean8_cc_2addon_cca_4x3.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_EANX_CC, -1, -1, -1, -1, 2, -1, "9876543+74083", "[91]123456789012345678", "../data/svg/ean8_cc_5addon_ccb_8x3.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, "12345", "", "../data/svg/ean5.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, "12", "", "../data/svg/ean2.svg" }, /* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, "1234567+12345", "", "../data/svg/ean8_5addon.svg" },
/* 31*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, "123", "", "../data/svg/code39_small.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_POSTNET, -1, -1, -1, -1, -1, -1, "12345", "", "../data/svg/postnet_zip.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_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", "../data/svg/maxicode_box2.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); 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) { if (data[i].border_width != -1) {
symbol->border_width = data[i].border_width; 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)) { if (strlen(data[i].composite)) {
text = data[i].composite; text = data[i].composite;
strcpy(symbol->primary, data[i].data); 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); assert_zero(ret, "i:%d %s ZBarcode_Print %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), symbol->outfile, ret);
if (generate) { 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), 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); 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); assert_zero(ret, "i:%d rename(%s, %s) ret %d != 0\n", i, symbol->outfile, data[i].expected_file, ret);
if (have_libreoffice) { if (have_libreoffice) {

View File

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

View File

@ -36,6 +36,12 @@
#ifndef TESTCOMMON_H #ifndef TESTCOMMON_H
#define 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 <stdio.h>
#include "../common.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_fail(...) assert_exp(0, __VA_ARGS__)
#define assert_nothing(__exp__, ...) {printf(__VA_ARGS__); __exp__;} #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 */ 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); 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->width = symbol->width + dot_overspill + (xoffset + roffset);
vector->height = symbol->height + textoffset + dot_overspill + (yoffset + boffset); vector->height = symbol->height + textoffset + dot_overspill + (yoffset + boffset);
if (symbol->border_width > 0 && ((symbol->output_options & BARCODE_BOX) || (symbol->output_options & BARCODE_BIND))) { if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) {
default_text_posn = symbol->height + text_height + text_gap + symbol->border_width + symbol->border_width; default_text_posn = symbol->height + text_height + text_gap + symbol->whitespace_height
+ symbol->border_width * 2;
} else { } 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 // Plot Maxicode symbols
@ -807,7 +808,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_
} }
// Binding and boxes // 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)) { if ((symbol->rows > 1) && (is_stackable(symbol->symbology) == 1)) {
float sep_height = 1.0f; float sep_height = 1.0f;
if (symbol->option_3 > 0 && symbol->option_3 <= 4) { 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->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 // Top
rectangle = vector_plot_create_rect(0.0f, 0.0f, vector->width, symbol->border_width); 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)) { 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->x = xoffset;
rectangle->width -= (2.0f * xoffset); rectangle->width -= (2.0f * xoffset);
} }
vector_plot_add_rect(symbol, rectangle, &last_rectangle); vector_plot_add_rect(symbol, rectangle, &last_rectangle);
// Bottom // Bottom
rectangle = vector_plot_create_rect(0.0f, vector->height - symbol->border_width - textoffset, vector->width, symbol->border_width); 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)) { 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->x = xoffset;
rectangle->width -= (2.0f * xoffset); rectangle->width -= (2.0f * xoffset);
} }
vector_plot_add_rect(symbol, rectangle, &last_rectangle); vector_plot_add_rect(symbol, rectangle, &last_rectangle);
} }
if (symbol->output_options & BARCODE_BOX) { 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 // 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); vector_plot_add_rect(symbol, rectangle, &last_rectangle);
// Right // 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); vector_plot_add_rect(symbol, rectangle, &last_rectangle);
} }
} }

View File

@ -77,6 +77,7 @@ extern "C" {
int symbology; int symbology;
int height; /* Height in X-dims (ignored for fixed-width barcodes) */ 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_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 border_width; /* Size of border in X-dims */
int output_options; int output_options;
char fgcolour[10]; /* Foreground as RGB/RGBA hexadecimal string */ char fgcolour[10]; /* Foreground as RGB/RGBA hexadecimal string */

View File

@ -113,6 +113,8 @@
- -cols maximum changed from 67 to 108 (DotCode) - -cols maximum changed from 67 to 108 (DotCode)
2021-05-10 GL 2021-05-10 GL
- Added -gs1parens option - Added -gs1parens option
2021-05-22 GL
- Added -vwhitesp option
*/ */
#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
@ -473,6 +475,7 @@ static char help_message[] = "zint tcl(stub,obj) dll\n"
" -square bool: force Data Matrix symbols to be square\n" " -square bool: force Data Matrix symbols to be square\n"
/* cli option --types not supported */ /* cli option --types not supported */
" -vers integer: Symbology option\n" " -vers integer: Symbology option\n"
" -vwhitesp integer: vertical quiet zone in modules\n"
" -whitesp integer: horizontal quiet zone in modules\n" " -whitesp integer: horizontal quiet zone in modules\n"
" -werror bool: Convert all warnings into errors\n" " -werror bool: Convert all warnings into errors\n"
" -wzpl bool: ZPL compatibility mode (allows non-standard symbols)\n" " -wzpl bool: ZPL compatibility mode (allows non-standard symbols)\n"
@ -685,6 +688,7 @@ static int Encode(Tcl_Interp *interp, int objc,
/*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/
/* >>> Prepare zint object */ /* >>> Prepare zint object */
my_symbol = ZBarcode_Create(); my_symbol = ZBarcode_Create();
my_symbol->debug = ZINT_DEBUG_PRINT;
my_symbol->input_mode = UNICODE_MODE; my_symbol->input_mode = UNICODE_MODE;
my_symbol->option_3 = 0; my_symbol->option_3 = 0;
/*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/
@ -698,7 +702,7 @@ static int Encode(Tcl_Interp *interp, int objc,
"-fullmultibyte", "-gs1parens", "-gssep", "-height", "-init", "-mask", "-mode", "-fullmultibyte", "-gs1parens", "-gssep", "-height", "-init", "-mask", "-mode",
"-nobackground", "-notext", "-primary", "-reverse", "-rotate", "-nobackground", "-notext", "-primary", "-reverse", "-rotate",
"-rows", "-scale", "-scmvv", "-secure", "-separator", "-smalltext", "-rows", "-scale", "-scmvv", "-secure", "-separator", "-smalltext",
"-square", "-to", "-vers", "-werror", "-whitesp", "-wzpl", "-square", "-to", "-vers", "-vwhitesp", "-werror", "-whitesp", "-wzpl",
NULL}; NULL};
enum iOption { enum iOption {
iAddonGap, iBarcode, iBG, iBind, iBold, iBorder, iBox, iAddonGap, iBarcode, iBG, iBind, iBold, iBorder, iBox,
@ -706,7 +710,7 @@ static int Encode(Tcl_Interp *interp, int objc,
iFullMultiByte, iGS1Parens, iGSSep, iHeight, iInit, iMask, iMode, iFullMultiByte, iGS1Parens, iGSSep, iHeight, iInit, iMask, iMode,
iNoBackground, iNoText, iPrimary, iReverse, iRotate, iNoBackground, iNoText, iPrimary, iReverse, iRotate,
iRows, iScale, iSCMvv, iSecure, iSeparator, iSmallText, iRows, iScale, iSCMvv, iSecure, iSeparator, iSmallText,
iSquare, iTo, iVers, iWError, iWhiteSp, iWZPL iSquare, iTo, iVers, iVWhiteSp, iWError, iWhiteSp, iWZPL
}; };
int optionIndex; int optionIndex;
int intValue; int intValue;
@ -769,15 +773,16 @@ static int Encode(Tcl_Interp *interp, int objc,
case iBorder: case iBorder:
case iCols: case iCols:
case iHeight: case iHeight:
case iMask:
case iMode: case iMode:
case iRotate: case iRotate:
case iRows: case iRows:
case iSecure: case iSecure:
case iVers:
case iWhiteSp:
case iSeparator: case iSeparator:
case iMask:
case iSCMvv: case iSCMvv:
case iVers:
case iVWhiteSp:
case iWhiteSp:
/* >> Int */ /* >> Int */
if (TCL_OK != Tcl_GetIntFromObj(interp, objv[optionPos+1], if (TCL_OK != Tcl_GetIntFromObj(interp, objv[optionPos+1],
&intValue)) &intValue))
@ -1052,6 +1057,9 @@ static int Encode(Tcl_Interp *interp, int objc,
my_symbol->symbology = s_code_number[intValue]; my_symbol->symbology = s_code_number[intValue];
} }
break; break;
case iVWhiteSp:
my_symbol->whitespace_height = intValue;
break;
case iWhiteSp: case iWhiteSp:
my_symbol->whitespace_width = intValue; my_symbol->whitespace_width = intValue;
break; break;

View File

@ -384,12 +384,24 @@ This specifies a symbol height of 100 times the X-dimension of the symbol.
4.5 Adjusting whitespace 4.5 Adjusting whitespace
------------------------ ------------------------
The amount of whitespace to the left and right of the generated barcode can be The amount of horizontal whitespace to the left and right of the generated
altered using the w switch. For example: barcode can be altered using the w or --whitesp switch. For example:
zint -w 10 -d "This Text" zint -w 10 -d "This Text"
This specifies a whitespace width of 10 times the X-dimension of the symbol. This specifies a whitespace width of 10 times the X-dimension of the symbol
both to the left and to the right of the barcode.
The amount of vertical whitespace above and below the barcode can be altered
using the --vwhitesp switch. For example for 3 times the X-dimension:
zint --vwhitesp 3 -d "This Text"
Note that the whitespace at the bottom appears below the text, if any.
Horizontal and vertical whitespace can of course be used together:
zint -b DATAMATRIX --whitesp 1 --vwhitesp 1 -d "This Text"
4.6 Adding boundary bars and boxes 4.6 Adding boundary bars and boxes
---------------------------------- ----------------------------------
@ -397,17 +409,20 @@ Zint allows the symbol to be bound with 'boundary bars' (also known as 'bearer
bars') using the option --bind. These bars help to prevent misreading of the bars') using the option --bind. These bars help to prevent misreading of the
symbol by corrupting a scan if the scanning beam strays off the top or bottom of symbol by corrupting a scan if the scanning beam strays off the top or bottom of
the symbol. Zint can also put a border right around the symbol and its the symbol. Zint can also put a border right around the symbol and its
whitespace with the --box option. horizontal whitespace with the --box option.
The width of the boundary or box can be specified using the --border switch. The width of the boundary or box can be specified using the --border switch.
For example: For example:
zint --box --border=10 -d "This" zint --box --border=10 -w 10 -d "This"
gives a box with a width 10 times the X-dimension of the symbol. gives a box with a width 10 times the X-dimension of the symbol. Note that when
specifying a box, horizontal whitespace is usually required in order to create a
quiet zone between the barcode and the sides of the box.
These options are ignored for Code 16k, Code 49 and Codablock-F. Special Code 16k, Code 49 and Codablock-F always have boundary bars, and default to
considerations apply to ITF-14 - see the specific section for that symbology. particular horizontal whitespace values. Special considerations apply to ITF-14
- see the specific section 6.1.2.6 for that symbology.
4.7 Using colour 4.7 Using colour
---------------- ----------------
@ -465,14 +480,14 @@ multiple of the default X-dimension. The scale is multiplied by 2 before being
applied. The default scale is 1. applied. The default scale is 1.
For raster output, the default X-dimension is 2 pixels (except for MaxiCode, see For raster output, the default X-dimension is 2 pixels (except for MaxiCode, see
4.9.2 below, and dotty mode, see 4.14). For example for PNG images a scale of 5 4.9.2 below). For example for PNG images a scale of 5 will increase the
will increase the X-dimension to 10 pixels. Scales should be given in increments X-dimension to 10 pixels. Scales should be given in increments of 0.5, i.e. 0.5,
of 0.5, i.e. 0.5, 1, 1.5, 2, 2.5, 3, 3.5, etc., to avoid the X-dimension 1, 1.5, 2, 2.5, 3, 3.5, etc., to avoid the X-dimension varying across the symbol
varying across the symbol due to interpolation. 0.5 increments are also faster due to interpolation. 0.5 increments are also faster to render.
to render.
The minimum scale for non-dotty raster output is 0.5, giving a minimum The minimum scale for non-dotty raster output is 0.5, giving a minimum
X-dimension of 1 pixel, and text will not be printed for scales less than 1. X-dimension of 1 pixel, and text will not be printed for scales less than 1.
The minimum scale for raster output in dotty mode is 1 (see 4.14).
The minimum scale for vector output is 0.1, giving a minimum X-dimension of 0.2. The minimum scale for vector output is 0.1, giving a minimum X-dimension of 0.2.
@ -762,7 +777,7 @@ matrix symbologies, and is automatically selected for DotCode. The size of
the dots can be adjusted using the --dotsize= option followed by the radius the dots can be adjusted using the --dotsize= option followed by the radius
of the dot, where that radius is given as a multiple of the X-dimension. The of the dot, where that radius is given as a multiple of the X-dimension. The
minimum dot size is 0.01, the maximum is 20. The default and minimum scale for minimum dot size is 0.01, the maximum is 20. The default and minimum scale for
raster output in dotty mode is 2. raster output in dotty mode is 1.
4.15 Help options 4.15 Help options
----------------- -----------------
@ -966,7 +981,8 @@ Variable Name | Type | Meaning | Default Value
symbology | integer | Symbol to use (see section | BARCODE_CODE128 symbology | integer | Symbol to use (see section | BARCODE_CODE128
| | 5.7). | | | 5.7). |
height | integer | Symbol height. [1] | 50 height | integer | Symbol height. [1] | 50
whitespace_width | integer | Whitespace width. | 0 whitespace_width | integer | Horizontal whitespace width.| 0
whitespace_height | integer | Vertical whitespace height. | 0
border_width | integer | Border width. | 0 border_width | integer | Border width. | 0
output_options | integer | Set various output file | 0 (none) output_options | integer | Set various output file | 0 (none)
| | parameters (see section | | | parameters (see section |

View File

@ -117,13 +117,13 @@ static void usage(void) {
" -b, --barcode=TYPE Number or name of barcode type. Default is 20 (CODE128)\n" " -b, --barcode=TYPE Number or name of barcode type. Default is 20 (CODE128)\n"
" --addongap=NUMBER Set add-on gap in multiples of X-dimension for UPC/EAN\n" " --addongap=NUMBER Set add-on gap in multiples of X-dimension for UPC/EAN\n"
" --batch Treat each line of input file as a separate data set\n" " --batch Treat each line of input file as a separate data set\n"
" --bg=COLOUR Specify a background colour (in hex)\n" " --bg=COLOUR Specify a background colour (in hex RGB/RGBA)\n"
" --binary Treat input as raw binary data\n" " --binary Treat input as raw binary data\n"
" --bind Add boundary bars\n" " --bind Add boundary bars\n"
" --bold Use bold text\n" " --bold Use bold text\n"
" --border=NUMBER Set width of border in multiples of X-dimension\n" " --border=NUMBER Set width of border in multiples of X-dimension\n"
" --box Add a box around the symbol\n" " --box Add a box around the symbol\n"
" --cmyk Use CMYK colour space in EPS symbols\n" " --cmyk Use CMYK colour space in EPS/TIF symbols\n"
" --cols=NUMBER Set the number of data columns in symbol\n" " --cols=NUMBER Set the number of data columns in symbol\n"
" -d, --data=DATA Set the symbol content\n" " -d, --data=DATA Set the symbol content\n"
" --direct Send output to stdout\n" " --direct Send output to stdout\n"
@ -134,7 +134,7 @@ static void usage(void) {
" -e, --ecinos Display table of ECI character encodings\n" " -e, --ecinos Display table of ECI character encodings\n"
" --eci=NUMBER Set the ECI (Extended Channel Interpretation) code\n" " --eci=NUMBER Set the ECI (Extended Channel Interpretation) code\n"
" --esc Process escape characters in input data\n" " --esc Process escape characters in input data\n"
" --fg=COLOUR Specify a foreground colour (in hex)\n" " --fg=COLOUR Specify a foreground colour (in hex RGB/RGBA)\n"
" --filetype=TYPE Set output file type BMP/EMF/EPS/GIF/PCX/PNG/SVG/TIF/TXT\n" " --filetype=TYPE Set output file type BMP/EMF/EPS/GIF/PCX/PNG/SVG/TIF/TXT\n"
" --fullmultibyte Use multibyte for binary/Latin (QR/Han Xin/Grid Matrix)\n" " --fullmultibyte Use multibyte for binary/Latin (QR/Han Xin/Grid Matrix)\n"
" --gs1 Treat input as GS1 compatible data\n" " --gs1 Treat input as GS1 compatible data\n"
@ -147,7 +147,7 @@ static void usage(void) {
" --mask=NUMBER Set masking pattern to use (QR/Han Xin/DotCode)\n" " --mask=NUMBER Set masking pattern to use (QR/Han Xin/DotCode)\n"
" --mirror Use batch data to determine filename\n" " --mirror Use batch data to determine filename\n"
" --mode=NUMBER Set encoding mode (MaxiCode/Composite)\n" " --mode=NUMBER Set encoding mode (MaxiCode/Composite)\n"
" --nobackground Remove background (PNG/SVG/EPS only)\n" " --nobackground Remove background (EMF/EPS/GIF/PNG/SVG/TIF only)\n"
" --notext Remove human readable text\n" " --notext Remove human readable text\n"
" -o, --output=FILE Send output to FILE. Default is out.png\n" " -o, --output=FILE Send output to FILE. Default is out.png\n"
" --primary=STRING Set structured primary message (MaxiCode/Composite)\n" " --primary=STRING Set structured primary message (MaxiCode/Composite)\n"
@ -162,7 +162,8 @@ static void usage(void) {
" --square Force Data Matrix symbols to be square\n" " --square Force Data Matrix symbols to be square\n"
" -t, --types Display table of barcode types\n" " -t, --types Display table of barcode types\n"
" --vers=NUMBER Set symbol version (size, check digits, other options)\n" " --vers=NUMBER Set symbol version (size, check digits, other options)\n"
" -w, --whitesp=NUMBER Set width of whitespace in multiples of X-dimension\n" " --vwhitesp=NUMBER Set height of vertical whitespace in multiples of X-dim\n"
" -w, --whitesp=NUMBER Set width of horizontal whitespace in multiples of X-dim\n"
" --werror Convert all warnings into errors\n" " --werror Convert all warnings into errors\n"
" --wzpl ZPL compatibility mode (allows non-standard symbols)\n" " --wzpl ZPL compatibility mode (allows non-standard symbols)\n"
); );
@ -798,7 +799,7 @@ int main(int argc, char **argv) {
OPT_GS1, OPT_GS1PARENS, OPT_GSSEP, OPT_HEIGHT, OPT_INIT, OPT_MIRROR, OPT_MASK, OPT_MODE, OPT_GS1, OPT_GS1PARENS, OPT_GSSEP, OPT_HEIGHT, OPT_INIT, OPT_MIRROR, OPT_MASK, OPT_MODE,
OPT_NOBACKGROUND, OPT_NOTEXT, OPT_PRIMARY, OPT_ROTATE, OPT_ROWS, OPT_SCALE, OPT_NOBACKGROUND, OPT_NOTEXT, OPT_PRIMARY, OPT_ROTATE, OPT_ROWS, OPT_SCALE,
OPT_SCMVV, OPT_SECURE, OPT_SEPARATOR, OPT_SMALL, OPT_SQUARE, OPT_VERBOSE, OPT_VERS, OPT_SCMVV, OPT_SECURE, OPT_SEPARATOR, OPT_SMALL, OPT_SQUARE, OPT_VERBOSE, OPT_VERS,
OPT_WERROR, OPT_WZPL, OPT_VWHITESP, OPT_WERROR, OPT_WZPL,
}; };
int option_index = 0; int option_index = 0;
static struct option long_options[] = { static struct option long_options[] = {
@ -852,6 +853,7 @@ int main(int argc, char **argv) {
{"types", 0, NULL, 't'}, {"types", 0, NULL, 't'},
{"verbose", 0, NULL, OPT_VERBOSE}, // Currently undocumented, output some debug info {"verbose", 0, NULL, OPT_VERBOSE}, // Currently undocumented, output some debug info
{"vers", 1, NULL, OPT_VERS}, {"vers", 1, NULL, OPT_VERS},
{"vwhitesp", 1, NULL, OPT_VWHITESP},
{"werror", 0, NULL, OPT_WERROR}, {"werror", 0, NULL, OPT_WERROR},
{"whitesp", 1, NULL, 'w'}, {"whitesp", 1, NULL, 'w'},
{"wzpl", 0, NULL, OPT_WZPL}, {"wzpl", 0, NULL, OPT_WZPL},
@ -1163,6 +1165,18 @@ int main(int argc, char **argv) {
fflush(stderr); fflush(stderr);
} }
break; break;
case OPT_VWHITESP:
if (!validate_int(optarg, &val)) {
fprintf(stderr, "Error 153: Invalid vertical whitespace value '%s'\n", optarg);
return do_exit(1);
}
if (val <= 1000) { /* `val` >= 0 always */
my_symbol->whitespace_height = val;
} else {
fprintf(stderr, "Warning 154: Vertical whitespace value out of range\n");
fflush(stderr);
}
break;
case OPT_WERROR: case OPT_WERROR:
my_symbol->warn_level = WARN_FAIL_ALL; my_symbol->warn_level = WARN_FAIL_ALL;
break; break;
@ -1195,13 +1209,13 @@ int main(int argc, char **argv) {
case 'w': case 'w':
if (!validate_int(optarg, &val)) { if (!validate_int(optarg, &val)) {
fprintf(stderr, "Error 120: Invalid whitespace value '%s'\n", optarg); fprintf(stderr, "Error 120: Invalid horizontal whitespace value '%s'\n", optarg);
return do_exit(1); return do_exit(1);
} }
if (val <= 1000) { /* `val` >= 0 always */ if (val <= 1000) { /* `val` >= 0 always */
my_symbol->whitespace_width = val; my_symbol->whitespace_width = val;
} else { } else {
fprintf(stderr, "Warning 121: Whitespace value out of range\n"); fprintf(stderr, "Warning 121: Horizontal whitespace value out of range\n");
fflush(stderr); fflush(stderr);
} }
break; break;

View File

@ -545,44 +545,47 @@ static void test_checks(int index, int debug) {
int secure; int secure;
int separator; int separator;
int vers; int vers;
int vwhitesp;
int w; int w;
char *expected; char *expected;
}; };
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
struct item data[] = { struct item data[] = {
/* 0*/ { -2, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 139: Invalid add-on gap value" }, /* 0*/ { -2, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 139: Invalid add-on gap value" },
/* 1*/ { 6, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 140: Invalid add-on gap value" }, /* 1*/ { 6, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 140: Invalid add-on gap value" },
/* 2*/ { 13, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 140: Invalid add-on gap value" }, /* 2*/ { 13, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 140: Invalid add-on gap value" },
/* 3*/ { -1, -2, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 107: Invalid border width value" }, /* 3*/ { -1, -2, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 107: Invalid border width value" },
/* 4*/ { -1, 1001, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 108: Border width out of range" }, /* 4*/ { -1, 1001, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 108: Border width out of range" },
/* 5*/ { -1, -1, -1, 0.009, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 106: Invalid dot radius value" }, /* 5*/ { -1, -1, -1, 0.009, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 106: Invalid dot radius value" },
/* 6*/ { -1, -1, -2, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 131: Invalid columns value" }, /* 6*/ { -1, -1, -2, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 131: Invalid columns value" },
/* 7*/ { -1, -1, 109, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 111: Number of columns out of range" }, /* 7*/ { -1, -1, 109, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 111: Number of columns out of range" },
/* 8*/ { -1, -1, -1, -1, -2, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 138: Invalid ECI value" }, /* 8*/ { -1, -1, -1, -1, -2, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 138: Invalid ECI value" },
/* 9*/ { -1, -1, -1, -1, 1000000, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 118: Invalid ECI code" }, /* 9*/ { -1, -1, -1, -1, 1000000, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 118: Invalid ECI code" },
/* 10*/ { -1, -1, -1, -1, -1, "jpg", -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 142: File type 'jpg' not supported, ignoring" }, /* 10*/ { -1, -1, -1, -1, -1, "jpg", -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 142: File type 'jpg' not supported, ignoring" },
/* 11*/ { -1, -1, -1, -1, -1, NULL, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 109: Invalid symbol height value" }, /* 11*/ { -1, -1, -1, -1, -1, NULL, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 109: Invalid symbol height value" },
/* 12*/ { -1, -1, -1, -1, -1, NULL, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 110: Symbol height out of range" }, /* 12*/ { -1, -1, -1, -1, -1, NULL, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 110: Symbol height out of range" },
/* 13*/ { -1, -1, -1, -1, -1, NULL, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 148: Invalid mask value" }, /* 13*/ { -1, -1, -1, -1, -1, NULL, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 148: Invalid mask value" },
/* 14*/ { -1, -1, -1, -1, -1, NULL, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 147: Invalid mask value" }, /* 14*/ { -1, -1, -1, -1, -1, NULL, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 147: Invalid mask value" },
/* 15*/ { -1, -1, -1, -1, -1, NULL, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 116: Invalid mode" }, /* 15*/ { -1, -1, -1, -1, -1, NULL, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 116: Invalid mode" },
/* 16*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, "Error 117: Invalid rotation value" }, /* 16*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, "Error 117: Invalid rotation value" },
/* 17*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, "Warning 137: Invalid rotation parameter" }, /* 17*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 137: Invalid rotation parameter" },
/* 18*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, "Error 132: Invalid rows value" }, /* 18*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, "Error 132: Invalid rows value" },
/* 19*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, "Warning 112: Number of rows out of range" }, /* 19*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, "Warning 112: Number of rows out of range" },
/* 20*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, "Warning 105: Invalid scale value" }, /* 20*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, "Warning 105: Invalid scale value" },
/* 21*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, 0.49, -1, -1, -1, -1, -1, "Warning 146: Scaling less than 0.5 will be set to 0.5 for 'png' output" }, /* 21*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, 0.49, -1, -1, -1, -1, -1, -1, "Warning 146: Scaling less than 0.5 will be set to 0.5 for 'png' output" },
/* 22*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, "Error 149: Invalid Structured Carrier Message version value" }, /* 22*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, "Error 149: Invalid Structured Carrier Message version value" },
/* 22*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, "Warning 150: Invalid version (vv) for Structured Carrier Message, ignoring" }, /* 23*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, "Warning 150: Invalid version (vv) for Structured Carrier Message, ignoring" },
/* 22*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, "Error 134: Invalid ECC value" }, /* 24*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, "Error 134: Invalid ECC value" },
/* 23*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, "Warning 114: ECC level out of range" }, /* 25*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, "Warning 114: ECC level out of range" },
/* 24*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, "Error 128: Invalid separator value" }, /* 26*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, "Error 128: Invalid separator value" },
/* 25*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, "Warning 127: Invalid separator value" }, /* 27*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, "Warning 127: Invalid separator value" },
/* 26*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, "Error 133: Invalid version value" }, /* 28*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, "Error 133: Invalid version value" },
/* 27*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, "Warning 113: Invalid version" }, /* 29*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, "Warning 113: Invalid version" },
/* 28*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, "Error 120: Invalid whitespace value '-2'" }, /* 30*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, "Error 153: Invalid vertical whitespace value '-2'" },
/* 29*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1001, "Warning 121: Whitespace value out of range" }, /* 31*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1001, -1, "Warning 154: Vertical whitespace value out of range" },
/* 32*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, "Error 120: Invalid horizontal whitespace value '-2'" },
/* 33*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1001, "Warning 121: Horizontal whitespace value out of range" },
}; };
int data_size = ARRAY_SIZE(data); int data_size = ARRAY_SIZE(data);
@ -615,6 +618,7 @@ static void test_checks(int index, int debug) {
arg_int(cmd, "--secure=", data[i].secure); arg_int(cmd, "--secure=", data[i].secure);
arg_int(cmd, "--separator=", data[i].separator); arg_int(cmd, "--separator=", data[i].separator);
arg_int(cmd, "--vers=", data[i].vers); arg_int(cmd, "--vers=", data[i].vers);
arg_int(cmd, "--vwhitesp=", data[i].vwhitesp);
arg_int(cmd, "-w ", data[i].w); arg_int(cmd, "-w ", data[i].w);
strcat(cmd, " 2>&1"); strcat(cmd, " 2>&1");

View File

@ -21,7 +21,7 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>420</width> <width>400</width>
<height>460</height> <height>460</height>
</size> </size>
</property> </property>
@ -248,7 +248,7 @@ or import from file</string>
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="text"> <property name="text">
<string>Component &amp;Type:</string> <string>&amp;Type:</string>
</property> </property>
<property name="buddy"> <property name="buddy">
<cstring>cmbCompType</cstring> <cstring>cmbCompType</cstring>
@ -260,6 +260,12 @@ or import from file</string>
</item> </item>
<item> <item>
<widget class="QComboBox" name="cmbCompType"> <widget class="QComboBox" name="cmbCompType">
<property name="minimumSize">
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
@ -379,7 +385,7 @@ p, li { white-space: pre-wrap; }
<widget class="QComboBox" name="cmbECI"> <widget class="QComboBox" name="cmbECI">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>66</width> <width>64</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
@ -660,7 +666,8 @@ to delimit GS1 application identifiers
<cstring>heightb</cstring> <cstring>heightb</cstring>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Overall symbol height</string> <string>Overall symbol height
(ignored if disabled)</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -670,7 +677,8 @@ to delimit GS1 application identifiers
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Overall symbol height</string> <string>Overall symbol height
(ignored if disabled)</string>
</property> </property>
<property name="suffix"> <property name="suffix">
<string> X</string> <string> X</string>
@ -768,7 +776,7 @@ to delimit GS1 application identifiers
<item row="4" column="0"> <item row="4" column="0">
<widget class="QLabel" name="lblWhitespace"> <widget class="QLabel" name="lblWhitespace">
<property name="text"> <property name="text">
<string>Hori&amp;zontal Whitespace:</string> <string>&amp;Whitespace:</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
@ -777,20 +785,34 @@ to delimit GS1 application identifiers
<cstring>spnWhitespace</cstring> <cstring>spnWhitespace</cstring>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Width of whitespace on either side of barcode</string> <string>Horizontal whitespace, Vertical whitespace</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="4" column="1">
<layout class="QGridLayout" name="gridLayoutWhitespace">
<item row="0" column="0">
<widget class="QSpinBox" name="spnWhitespace"> <widget class="QSpinBox" name="spnWhitespace">
<property name="toolTip"> <property name="toolTip">
<string>Width of whitespace on either side of barcode</string> <string>Width of horizontal whitespace on either side of barcode</string>
</property> </property>
<property name="suffix"> <property name="suffix">
<string> X</string> <string> X</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="QSpinBox" name="spnVWhitespace">
<property name="toolTip">
<string>Height of vertical whitespace above and below the barcode</string>
</property>
<property name="suffix">
<string> X</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0"> <item row="5" column="0">
<widget class="QLabel" name="lblScale"> <widget class="QLabel" name="lblScale">
<property name="text"> <property name="text">
@ -844,14 +866,16 @@ to delimit GS1 application identifiers
<cstring>cmbFontSetting</cstring> <cstring>cmbFontSetting</cstring>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Set font characteristics</string> <string>Set font characteristics
(ignored if disabled)</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="1"> <item row="6" column="1">
<widget class="QComboBox" name="cmbFontSetting"> <widget class="QComboBox" name="cmbFontSetting">
<property name="toolTip"> <property name="toolTip">
<string>Set font characteristics</string> <string>Set font characteristics
(ignored if disabled)</string>
</property> </property>
<item> <item>
<property name="text"> <property name="text">
@ -1033,14 +1057,16 @@ to delimit GS1 application identifiers
<cstring>spnDotSize</cstring> <cstring>spnDotSize</cstring>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Size of dots</string> <string>Size of dots
(ignored if disabled)</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="3"> <item row="6" column="3">
<widget class="QDoubleSpinBox" name="spnDotSize"> <widget class="QDoubleSpinBox" name="spnDotSize">
<property name="toolTip"> <property name="toolTip">
<string>Size of dots</string> <string>Size of dots
(ignored if disabled)</string>
</property> </property>
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>

View File

@ -168,6 +168,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags fl)
heightb->setValue(settings.value("studio/appearance/height", 50).toInt()); heightb->setValue(settings.value("studio/appearance/height", 50).toInt());
bwidth->setValue(settings.value("studio/appearance/border", 0).toInt()); bwidth->setValue(settings.value("studio/appearance/border", 0).toInt());
spnWhitespace->setValue(settings.value("studio/appearance/whitespace", 0).toInt()); spnWhitespace->setValue(settings.value("studio/appearance/whitespace", 0).toInt());
spnVWhitespace->setValue(settings.value("studio/appearance/vwhitespace", 0).toInt());
spnScale->setValue(settings.value("studio/appearance/scale", 1.0).toFloat()); spnScale->setValue(settings.value("studio/appearance/scale", 1.0).toFloat());
btype->setCurrentIndex(settings.value("studio/appearance/border_type", 0).toInt()); btype->setCurrentIndex(settings.value("studio/appearance/border_type", 0).toInt());
cmbFontSetting->setCurrentIndex(settings.value("studio/appearance/font_setting", 0).toInt()); cmbFontSetting->setCurrentIndex(settings.value("studio/appearance/font_setting", 0).toInt());
@ -201,6 +202,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags fl)
connect(chkRInit, SIGNAL(stateChanged( int )), SLOT(update_preview())); connect(chkRInit, SIGNAL(stateChanged( int )), SLOT(update_preview()));
connect(chkGS1Parens, SIGNAL(stateChanged( int )), SLOT(update_preview())); connect(chkGS1Parens, SIGNAL(stateChanged( int )), SLOT(update_preview()));
connect(spnWhitespace, SIGNAL(valueChanged( int )), SLOT(update_preview())); connect(spnWhitespace, SIGNAL(valueChanged( int )), SLOT(update_preview()));
connect(spnVWhitespace, SIGNAL(valueChanged( int )), SLOT(update_preview()));
connect(btnAbout, SIGNAL(clicked( bool )), SLOT(about())); connect(btnAbout, SIGNAL(clicked( bool )), SLOT(about()));
connect(btnSave, SIGNAL(clicked( bool )), SLOT(save())); connect(btnSave, SIGNAL(clicked( bool )), SLOT(save()));
connect(spnScale, SIGNAL(valueChanged( double )), SLOT(change_print_scale())); connect(spnScale, SIGNAL(valueChanged( double )), SLOT(change_print_scale()));
@ -257,6 +259,7 @@ MainWindow::~MainWindow()
settings.setValue("studio/appearance/height", heightb->value()); settings.setValue("studio/appearance/height", heightb->value());
settings.setValue("studio/appearance/border", bwidth->value()); settings.setValue("studio/appearance/border", bwidth->value());
settings.setValue("studio/appearance/whitespace", spnWhitespace->value()); settings.setValue("studio/appearance/whitespace", spnWhitespace->value());
settings.setValue("studio/appearance/vwhitespace", spnVWhitespace->value());
settings.setValue("studio/appearance/scale", spnScale->value()); settings.setValue("studio/appearance/scale", spnScale->value());
settings.setValue("studio/appearance/border_type", btype->currentIndex()); settings.setValue("studio/appearance/border_type", btype->currentIndex());
settings.setValue("studio/appearance/font_setting", cmbFontSetting->currentIndex()); settings.setValue("studio/appearance/font_setting", cmbFontSetting->currentIndex());
@ -705,6 +708,7 @@ void MainWindow::change_options()
m_optionWidget = uiload.load(&file); m_optionWidget = uiload.load(&file);
file.close(); file.close();
static const char *names[] = { "Standard (Matrix)", "Interleaved", "IATA", "", "Data Logic", "Industrial" }; static const char *names[] = { "Standard (Matrix)", "Interleaved", "IATA", "", "Data Logic", "Industrial" };
/*: %1 is name of variant (Standard, Interleaved, IATA, Data Logic, Industrial) */
tabMain->insertTab(1, m_optionWidget, tr("Cod&e 2 of 5 %1").arg(names[symbology - BARCODE_C25STANDARD])); tabMain->insertTab(1, m_optionWidget, tr("Cod&e 2 of 5 %1").arg(names[symbology - BARCODE_C25STANDARD]));
connect(m_optionWidget->findChild<QObject*>("radC25Stand"), SIGNAL(clicked( bool )), SLOT(update_preview())); connect(m_optionWidget->findChild<QObject*>("radC25Stand"), SIGNAL(clicked( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radC25Check"), SIGNAL(clicked( bool )), SLOT(update_preview())); connect(m_optionWidget->findChild<QObject*>("radC25Check"), SIGNAL(clicked( bool )), SLOT(update_preview()));
@ -898,6 +902,7 @@ void MainWindow::change_options()
m_optionWidget = uiload.load(&file); m_optionWidget = uiload.load(&file);
file.close(); file.close();
tabMain->insertTab(1, m_optionWidget, tr("Cod&e 49")); tabMain->insertTab(1, m_optionWidget, tr("Cod&e 49"));
btype->setItemText(0, tr("Default (bind)"));
connect(m_optionWidget->findChild<QObject*>("cmbC49RowSepHeight"), SIGNAL(currentIndexChanged( int )), SLOT(update_preview())); connect(m_optionWidget->findChild<QObject*>("cmbC49RowSepHeight"), SIGNAL(currentIndexChanged( int )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radC49GS1"), SIGNAL(toggled( bool )), SLOT(update_preview())); connect(m_optionWidget->findChild<QObject*>("radC49GS1"), SIGNAL(toggled( bool )), SLOT(update_preview()));
} else if (symbology == BARCODE_DBAR_EXPSTK) { } else if (symbology == BARCODE_DBAR_EXPSTK) {
@ -1578,11 +1583,11 @@ void MainWindow::update_preview()
m_bc.bc.setECI(cmbECI->isEnabled() ? cmbECI->currentIndex() : 0); m_bc.bc.setECI(cmbECI->isEnabled() ? cmbECI->currentIndex() : 0);
m_bc.bc.setGS1Parens(chkGS1Parens->isEnabled() && chkGS1Parens->isChecked()); m_bc.bc.setGS1Parens(chkGS1Parens->isEnabled() && chkGS1Parens->isChecked());
m_bc.bc.setReaderInit(chkRInit->isEnabled() && chkRInit->isChecked()); m_bc.bc.setReaderInit(chkRInit->isEnabled() && chkRInit->isChecked());
m_bc.bc.setReaderInit(chkRInit->isEnabled() && chkRInit->isChecked());
m_bc.bc.setShowText(chkHRTShow->isEnabled() && chkHRTShow->isChecked()); m_bc.bc.setShowText(chkHRTShow->isEnabled() && chkHRTShow->isChecked());
m_bc.bc.setBorderType(btype->currentIndex()); m_bc.bc.setBorderType(btype->currentIndex());
m_bc.bc.setBorderWidth(bwidth->value()); m_bc.bc.setBorderWidth(bwidth->value());
m_bc.bc.setWhitespace(spnWhitespace->value()); m_bc.bc.setWhitespace(spnWhitespace->value());
m_bc.bc.setVWhitespace(spnVWhitespace->value());
m_bc.bc.setFontSetting(cmbFontSetting->currentIndex()); m_bc.bc.setFontSetting(cmbFontSetting->currentIndex());
m_bc.bc.setRotateAngle(cmbRotate->currentIndex()); m_bc.bc.setRotateAngle(cmbRotate->currentIndex());
m_bc.bc.setDotty(chkDotty->isEnabled() && chkDotty->isChecked()); m_bc.bc.setDotty(chkDotty->isEnabled() && chkDotty->isChecked());
@ -1878,6 +1883,7 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) {
} }
settings.setValue(QString("studio/bc/%1/appearance/border").arg(name), bwidth->value()); settings.setValue(QString("studio/bc/%1/appearance/border").arg(name), bwidth->value());
settings.setValue(QString("studio/bc/%1/appearance/whitespace").arg(name), spnWhitespace->value()); settings.setValue(QString("studio/bc/%1/appearance/whitespace").arg(name), spnWhitespace->value());
settings.setValue(QString("studio/bc/%1/appearance/vwhitespace").arg(name), spnVWhitespace->value());
settings.setValue(QString("studio/bc/%1/appearance/scale").arg(name), spnScale->value()); settings.setValue(QString("studio/bc/%1/appearance/scale").arg(name), spnScale->value());
settings.setValue(QString("studio/bc/%1/appearance/border_type").arg(name), btype->currentIndex()); settings.setValue(QString("studio/bc/%1/appearance/border_type").arg(name), btype->currentIndex());
if (chkHRTShow->isEnabled()) { if (chkHRTShow->isEnabled()) {
@ -2124,6 +2130,7 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) {
} }
bwidth->setValue(settings.value(QString("studio/bc/%1/appearance/border").arg(name), 0).toInt()); bwidth->setValue(settings.value(QString("studio/bc/%1/appearance/border").arg(name), 0).toInt());
spnWhitespace->setValue(settings.value(QString("studio/bc/%1/appearance/whitespace").arg(name), 0).toInt()); spnWhitespace->setValue(settings.value(QString("studio/bc/%1/appearance/whitespace").arg(name), 0).toInt());
spnVWhitespace->setValue(settings.value(QString("studio/bc/%1/appearance/vwhitespace").arg(name), 0).toInt());
spnScale->setValue(settings.value(QString("studio/bc/%1/appearance/scale").arg(name), 1.0).toFloat()); spnScale->setValue(settings.value(QString("studio/bc/%1/appearance/scale").arg(name), 1.0).toFloat());
btype->setCurrentIndex(settings.value(QString("studio/bc/%1/appearance/border_type").arg(name), 0).toInt()); btype->setCurrentIndex(settings.value(QString("studio/bc/%1/appearance/border_type").arg(name), 0).toInt());
if (chkHRTShow->isEnabled()) { if (chkHRTShow->isEnabled()) {

View File

@ -1,7 +1,7 @@
/*************************************************************************** /***************************************************************************
* Copyright (C) 2008 by BogDan Vatra * * Copyright (C) 2008 by BogDan Vatra *
* bogdan@licentia.eu * * bogdan@licentia.eu *
* Copyright (C) 2010-2020 Robin Stuart * * Copyright (C) 2010-2021 Robin Stuart *
* * * *
* This program is free software: you can redistribute it and/or modify * * This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
@ -53,6 +53,7 @@ namespace Zint {
target_size_vert = 0; target_size_vert = 0;
m_option_2 = 0; m_option_2 = 0;
m_whitespace = 0; m_whitespace = 0;
m_vwhitespace = 0;
m_gs1parens = false; m_gs1parens = false;
m_gssep = false; m_gssep = false;
m_reader_init = false; m_reader_init = false;
@ -75,6 +76,7 @@ namespace Zint {
m_zintSymbol->symbology = m_symbol; m_zintSymbol->symbology = m_symbol;
m_zintSymbol->height = m_height; m_zintSymbol->height = m_height;
m_zintSymbol->whitespace_width = m_whitespace; m_zintSymbol->whitespace_width = m_whitespace;
m_zintSymbol->whitespace_height = m_vwhitespace;
m_zintSymbol->border_width = m_borderWidth; m_zintSymbol->border_width = m_borderWidth;
m_zintSymbol->option_1 = m_option_1; m_zintSymbol->option_1 = m_option_1;
m_zintSymbol->input_mode = m_input_mode; m_zintSymbol->input_mode = m_input_mode;
@ -125,6 +127,7 @@ namespace Zint {
m_height = m_zintSymbol->height; m_height = m_zintSymbol->height;
m_borderWidth = m_zintSymbol->border_width; m_borderWidth = m_zintSymbol->border_width;
m_whitespace = m_zintSymbol->whitespace_width; m_whitespace = m_zintSymbol->whitespace_width;
m_vwhitespace = m_zintSymbol->whitespace_height;
emit encoded(); emit encoded();
} }
} }
@ -253,6 +256,10 @@ namespace Zint {
m_whitespace = whitespace; m_whitespace = whitespace;
} }
void QZint::setVWhitespace(int vwhitespace) {
m_vwhitespace = vwhitespace;
}
int QZint::option1() const { int QZint::option1() const {
return m_option_1; return m_option_1;
} }

View File

@ -1,6 +1,7 @@
/*************************************************************************** /***************************************************************************
* Copyright (C) 2008 by BogDan Vatra * * Copyright (C) 2008 by BogDan Vatra *
* bogdan@licentia.eu * * bogdan@licentia.eu *
* Copyright (C) 2010-2021 Robin Stuart *
* * * *
* This program is free software: you can redistribute it and/or modify * * This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by * * it under the terms of the GNU General Public License as published by *
@ -83,6 +84,8 @@ public:
void setWhitespace(int whitespace); void setWhitespace(int whitespace);
void setVWhitespace(int vwhitespace);
void setFontSetting(int fontSettingIndex); void setFontSetting(int fontSettingIndex);
void setShowText(bool show); void setShowText(bool show);
@ -148,6 +151,7 @@ private:
QString m_lastError; QString m_lastError;
int m_error; int m_error;
int m_whitespace; int m_whitespace;
int m_vwhitespace;
zint_symbol * m_zintSymbol; zint_symbol * m_zintSymbol;
float m_scale; float m_scale;
int m_option_3; int m_option_3;