diff --git a/ChangeLog b/ChangeLog index ce35d336..6b625a9a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,15 +3,25 @@ Version 2.12.0.9 (dev) not released yet **Incompatible changes** ------------------------ -- zint_symbol fgcolour and bgcolour buffer lengths extended 10 -> 16 to allow - for "C,M,Y,K" comma-separated decimal percentage strings +- Buffer lengths of fields `fgcolour` and `bgcolour` in `zint_symbol` extended + 10 -> 16 to allow for "C,M,Y,K" comma-separated decimal percentage strings - CMYK values for EPS (slightly) and TIF (significantly) have changed - now use the same RGB -> CMYK formula - Text (HRT) placement for vector (EMF/EPS/SVG) output changed - for EAN/UPC slightly further away from barcode, for all others slightly nearer. Some horizontal alignments of EAN/UPC vector text also tweaked +- Text (HRT) for standalone EAN-2 and EAN-5 now at top of symbol + (was at bottom) - For Windows, filenames are now assumed to be UTF-8 encoded. Affects `outfile` in `zint_symbol` and all API filename arguments +- Never used `fontsize` field removed from `zint_symbol` +- Buffer length of field `text` (HRT) in `zint_symbol` extended 128 -> 160 + (client buffers may need checking/extending) +- Font of text of SVG vector output now "OCR-B, monospace" + (was "Helvetica, sans serif") +- Unintended excess horizontal whitespace of Composite symbols removed, and + quiet zone settings respected exactly, and centring of HRT (if any) now + relative to linear part of symbol only rather than whole symbol Changes ------- @@ -27,12 +37,39 @@ Changes comma-separated decimal percentage strings "C,M,Y,K" where "C", "M" etc. are 0-100 (ticket #281, 3rd point) - PCX: add alpha support -- GUI: Rearrange some Appearance tab inputs (Border Type <-> Width, Show Text +- GUI: rearrange some Appearance tab inputs (Border Type <-> Width, Show Text <-> Font, Text/Font <-> Printing Scale/Size) to flow more naturally; save button "Save As..." -> "Save..." and add icon - Add `text_gap` option to allow adjustment of vertical gap between barcode and text (HRT) - DAFT: up max to 250 chars +- CLI: use own (Wine) version of `CommandLineToArgvW()` to avoid loading + "shell32.dll" +- EAN/UPC: add quiet zone indicators option (API `output_options` + `EANUPC_GUARD_WHITESPACE`, CLI `--guardwhitespace`) (ticket #287) +- EAN-2/EAN-5: HRT now at top instead of at bottom for standalones, following + BWIPP +- Move "font.h" -> "raster_font.h" +- EPS/SVG: use new `out_putsf()` func to output floats, avoiding trailing zeroes + & locale dependency +- EPS: simplify "TR" formula +- SVG: change font from "Helvetica, sans serif" to "OCR-B, monospace"; + use single "" instead of multiple ""s to draw boxes (reduces file + size) +- Add `EMBED_VECTOR_FONT` to `output_options` (CLI `--embedfont`) to enable + embedding of font in vector output - currently only for SVG output of EAN/UPC +- GUI: use "OCR-B" font for EAN/UPC and "Arimo" for all others (was "Helvetica" + for both); add preview background colour option (default light grey) so as + whitespace will show up in contrast (access via preview context menu) +- EMF: prefix funcs with `emf_`; simplify string `halign` handling +- large: rename `large_int` -> `large_uint` +- CODE128/common: move `c128_hrt_cpy_iso8859_1()` to `hrt_cpy_iso8859_1()` and + add `ZINT_WARN_HRT_TRUNCATED` warning (for future use) +- Various symbologies: replace `printf()` with `fputs()` (symbol->debug) +- QRCODE: better assert(), removing a NOLINT (2 left) +- CLI: add some more barcode synonyms for DBAR +- common: various fiddlings +- CMake: don't include png.c unless ZINT_USE_PNG (avoids clang warning) Bugs ---- @@ -45,6 +82,14 @@ Bugs - GUI: fix fg/gbcolor icon background not being reset on zap - EMF/EPS/SVG/GUI: ignore BOLD_TEXT for EAN/UPC - EMF/EPS/SVG: fix addon bars placement/length when text hidden +- For Windows, assume `outfile` & API filename args are in UTF-8, + & use xxxW() APIs accordingly, ticket #288, props Marcel + **Backwards-incompatible change** +- GUI: fix `save_to_file()` `filename.toLatin1()` -> `toUtf8()` +- CLI: batch mode: don't close input if stdin +- EAN/UPC: fix excess 1X to right of add-ons +- Composites: fix excess whitespace; fix quiet zone calcs to allow for linear + shifting Version 2.12.0 (2022-12-12) diff --git a/backend/CMakeLists.txt b/backend/CMakeLists.txt index a95f620c..277164c4 100644 --- a/backend/CMakeLists.txt +++ b/backend/CMakeLists.txt @@ -4,11 +4,19 @@ project(zint) +if(ZINT_USE_PNG) + find_package(PNG) +endif() + set(zint_COMMON_SRCS common.c library.c large.c reedsol.c gs1.c eci.c general_field.c) set(zint_ONEDIM_SRCS bc412.c code.c code128.c 2of5.c upcean.c telepen.c medical.c plessey.c rss.c) set(zint_POSTAL_SRCS postal.c auspost.c imail.c mailmark.c) set(zint_TWODIM_SRCS code16k.c codablock.c dmatrix.c pdf417.c qr.c maxicode.c composite.c aztec.c code49.c code1.c gridmtx.c hanxin.c dotcode.c ultra.c) -set(zint_OUTPUT_SRCS vector.c ps.c svg.c emf.c bmp.c pcx.c gif.c png.c tif.c raster.c output.c) +if(ZINT_USE_PNG AND PNG_FOUND) + set(zint_OUTPUT_SRCS vector.c ps.c svg.c emf.c bmp.c pcx.c gif.c png.c tif.c raster.c output.c) +else() + set(zint_OUTPUT_SRCS vector.c ps.c svg.c emf.c bmp.c pcx.c gif.c tif.c raster.c output.c) +endif() set(zint_SRCS ${zint_OUTPUT_SRCS} ${zint_COMMON_SRCS} ${zint_ONEDIM_SRCS} ${zint_POSTAL_SRCS} ${zint_TWODIM_SRCS}) if(ZINT_SHARED) @@ -60,10 +68,6 @@ if(ZINT_SHARED) VERSION ${ZINT_VERSION}) endif() -if(ZINT_USE_PNG) - find_package(PNG) -endif() - if(ZINT_USE_PNG AND PNG_FOUND) zint_target_link_libraries(PNG::PNG) else() diff --git a/backend/aztec.c b/backend/aztec.c index e8b45f0b..e2f3271d 100644 --- a/backend/aztec.c +++ b/backend/aztec.c @@ -1,7 +1,7 @@ /* aztec.c - Handles Aztec 2D Symbols */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -180,7 +180,7 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp, } if (debug_print) { - printf("First Pass:\n"); + fputs("First Pass:\n", stdout); printf("%.*s\n", src_len, encode_mode); } @@ -1066,14 +1066,14 @@ INTERNAL int aztec(struct zint_symbol *symbol, struct zint_seg segs[], const int } if (debug_print) { - printf("Codewords:\n"); + fputs("Codewords:\n", stdout); for (i = 0; i < (adjusted_length / codeword_size); i++) { for (j = 0; j < codeword_size; j++) { printf("%c", adjusted_string[(i * codeword_size) + j]); } - printf(" "); + fputc(' ', stdout); } - printf("\n"); + fputc('\n', stdout); } } while (adjusted_length > data_maxsize); @@ -1168,11 +1168,11 @@ INTERNAL int aztec(struct zint_symbol *symbol, struct zint_seg segs[], const int } if (debug_print) { - printf("Codewords:\n"); + fputs("Codewords:\n", stdout); for (i = 0; i < (adjusted_length / codeword_size); i++) { printf("%.*s ", codeword_size, adjusted_string + i * codeword_size); } - printf("\n"); + fputc('\n', stdout); } } diff --git a/backend/codablock.c b/backend/codablock.c index 69ebda7c..5c0857cf 100644 --- a/backend/codablock.c +++ b/backend/codablock.c @@ -1,7 +1,7 @@ /* codablock.c - Handles Codablock-F */ /* libzint - the open source barcode library - Copyright (C) 2016-2022 Harald Oehlmann + Copyright (C) 2016-2023 Harald Oehlmann Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -645,10 +645,10 @@ INTERNAL int codablockf(struct zint_symbol *symbol, unsigned char source[], int if (symbol->debug & ZINT_DEBUG_PRINT) { /* start a new level of local variables */ int DPos; - printf("\nData:"); + fputs("\nData:", stdout); for (DPos = 0; DPos < dataLength; DPos++) fputc(data[DPos], stdout); - printf("\n Set:"); + fputs("\n Set:", stdout); for (DPos = 0; DPos < dataLength; DPos++) { switch (pSet[DPos] & (CodeA + CodeB + CodeC)) { case CodeA: fputc('A', stdout); break; @@ -657,16 +657,16 @@ INTERNAL int codablockf(struct zint_symbol *symbol, unsigned char source[], int default: fputc('.', stdout); break; } } - printf("\nFNC1:"); + fputs("\nFNC1:", stdout); for (DPos = 0; DPos < dataLength; DPos++) fputc((pSet[DPos] & CodeFNC1) == 0 ? '.' : 'X', stdout); - printf("\n END:"); + fputs("\n END:", stdout); for (DPos = 0; DPos < dataLength; DPos++) fputc((pSet[DPos] & CEnd) == 0 ? '.' : 'X', stdout); - printf("\nShif:"); + fputs("\nShif:", stdout); for (DPos = 0; DPos < dataLength; DPos++) fputc((pSet[DPos] & CShift) == 0 ? '.' : 'X', stdout); - printf("\nFILL:"); + fputs("\nFILL:", stdout); for (DPos = 0; DPos < dataLength; DPos++) fputc((pSet[DPos] & CFill) == 0 ? '.' : 'X', stdout); fputc('\n', stdout); @@ -831,14 +831,14 @@ INTERNAL int codablockf(struct zint_symbol *symbol, unsigned char source[], int if (symbol->debug & ZINT_DEBUG_PRINT) { /* Dump the output to the screen */ - printf("\nCode 128 Code Numbers:\n"); + fputs("\nCode 128 Code Numbers:\n", stdout); { /* start a new level of local variables */ int DPos, DPos2; for (DPos = 0; DPos < rows; DPos++) { for (DPos2 = 0; DPos2 < columns; DPos2++) { printf("%3d ", (int) (pOutput[DPos * columns + DPos2])); } - printf("\n"); + fputc('\n', stdout); } } printf("rows=%d columns=%d (%d data) fillings=%d\n", rows, columns, columns - 5, fillings); diff --git a/backend/code.c b/backend/code.c index 502280fe..05f49171 100644 --- a/backend/code.c +++ b/backend/code.c @@ -601,11 +601,11 @@ static void channel_generate_precalc(int channels, long value, int mod, int last int smax[7]) { int i; if (value == mod) printf("static channel_precalc channel_precalcs%d[] = {\n", channels); - printf(" { %7ld, {", value); for (i = 0; i < 8; i++) printf(" %d,", B[i]); printf(" },"); - printf(" {"); for (i = 0; i < 8; i++) printf(" %d,", S[i]); printf(" },"); - printf(" {"); for (i = 0; i < 7; i++) printf(" %d,", bmax[i]); printf(" },"); - printf(" {"); for (i = 0; i < 7; i++) printf(" %d,", smax[i]); printf(" }, },\n"); - if (value == last) printf("};\n"); + printf(" { %7ld, {", value); for (i = 0; i < 8; i++) printf(" %d,", B[i]); fputs(" },", stdout); + fputs(" {", stdout); for (i = 0; i < 8; i++) printf(" %d,", S[i]); fputs(" },", stdout); + fputs(" {", stdout); for (i = 0; i < 7; i++) printf(" %d,", bmax[i]); fputs(" },", stdout); + fputs(" {", stdout); for (i = 0; i < 7; i++) printf(" %d,", smax[i]); fputs(" }, },\n", stdout); + if (value == last) fputs("};\n", stdout); } #else #include "channel_precalcs.h" diff --git a/backend/code1.c b/backend/code1.c index 9736bc09..57fb4705 100644 --- a/backend/code1.c +++ b/backend/code1.c @@ -1,7 +1,7 @@ /* code1.c - USS Code One */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -497,14 +497,14 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len if (length >= 15 && num_digits[0] >= 15) { target[tp++] = 236; /* FNC1 and change to Decimal */ next_mode = C1_DECIMAL; - if (debug_print) printf("FNC1Dec "); + if (debug_print) fputs("FNC1Dec ", stdout); } else if (length >= 7 && num_digits[0] == length) { target[tp++] = 236; /* FNC1 and change to Decimal */ next_mode = C1_DECIMAL; - if (debug_print) printf("FNC1Dec "); + if (debug_print) fputs("FNC1Dec ", stdout); } else { target[tp++] = 232; /* FNC1 */ - if (debug_print) printf("FNC1 "); + if (debug_print) fputs("FNC1 ", stdout); } /* Note ignoring Structured Append and ECI if GS1 mode (up to caller to warn/error) */ } else { @@ -516,11 +516,11 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len target[tp++] = 233; /* FNC2 */ target[tp++] = (symbol->structapp.index - 1) * 15 + (symbol->structapp.count - 1); target[tp++] = '\\' + 1; /* Escape char */ - if (debug_print) printf("SAGrp "); + if (debug_print) fputs("SAGrp ", stdout); } else { target[tp++] = (symbol->structapp.index - 1) * 15 + (symbol->structapp.count - 1); target[tp++] = 233; /* FNC2 */ - if (debug_print) printf("FNC2 "); + if (debug_print) fputs("FNC2 ", stdout); } } else { /* Extended Group mode */ if ((eci || seg_count > 1) && symbol->structapp.index == 1) { @@ -530,12 +530,12 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len target[tp++] = 233; /* FNC2 */ target[tp++] = symbol->structapp.index; target[tp++] = symbol->structapp.count; - if (debug_print) printf("SAExGrp "); + if (debug_print) fputs("SAExGrp ", stdout); } else { target[tp++] = symbol->structapp.index; target[tp++] = symbol->structapp.count; target[tp++] = 233; /* FNC2 */ - if (debug_print) printf("FNC2 "); + if (debug_print) fputs("FNC2 ", stdout); } } if (eci) { @@ -547,7 +547,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len if (tp == 0) { target[tp++] = 129; /* Pad */ target[tp++] = '\\' + 1; /* Escape char */ - if (debug_print) printf("PADEsc "); + if (debug_print) fputs("PADEsc ", stdout); } if (eci) { c1_eci_escape(eci, source, length, eci_buf, eci_length); @@ -563,16 +563,16 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len /* Change mode */ switch (next_mode) { case C1_C40: target[tp++] = 230; - if (debug_print) printf("->C40 "); + if (debug_print) fputs("->C40 ", stdout); break; case C1_TEXT: target[tp++] = 239; - if (debug_print) printf("->Text "); + if (debug_print) fputs("->Text ", stdout); break; case C1_EDI: target[tp++] = 238; - if (debug_print) printf("->EDI "); + if (debug_print) fputs("->EDI ", stdout); break; case C1_BYTE: target[tp++] = 231; - if (debug_print) printf("->Byte "); + if (debug_print) fputs("->Byte ", stdout); byte_start = tp; target[tp++] = 0; /* Byte count holder (may be expanded to 2 codewords) */ break; @@ -605,13 +605,13 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len if (length - (sp + 1) >= 15 && num_digits[sp + 1] >= 15) { /* Step B4 */ target[tp++] = 236; /* FNC1 and change to Decimal */ - if (debug_print) printf("FNC1 "); + if (debug_print) fputs("FNC1 ", stdout); sp++; next_mode = C1_DECIMAL; } else if (length - (sp + 1) >= 7 && num_digits[sp + 1] == length - (sp + 1)) { /* Step B5 */ target[tp++] = 236; /* FNC1 and change to Decimal */ - if (debug_print) printf("FNC1 "); + if (debug_print) fputs("FNC1 ", stdout); sp++; next_mode = C1_DECIMAL; } @@ -633,7 +633,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len } else if ((gs1) && (source[sp] == '[')) { /* Step B8 */ target[tp++] = 232; /* FNC1 */ - if (debug_print) printf("FNC1 "); + if (debug_print) fputs("FNC1 ", stdout); } else { /* Step B8 */ target[tp++] = source[sp] + 1; @@ -665,7 +665,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len if (next_mode != current_mode) { /* Step C/D1c */ target[tp++] = 255; /* Unlatch */ - if (debug_print) printf("Unlatch "); + if (debug_print) fputs("Unlatch ", stdout); } else { /* Step C/D2 */ const char *ct_shift, *ct_value; @@ -677,7 +677,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len ct_shift = text_shift; ct_value = text_value; } - if (debug_print) printf(current_mode == C1_C40 ? "C40 " : "TEXT "); + if (debug_print) fputs(current_mode == C1_C40 ? "C40 " : "TEXT ", stdout); if (source[sp] & 0x80) { cte_buffer[cte_p++] = 1; /* Shift 2 */ @@ -727,13 +727,13 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len /* No unlatch needed if data fits as ASCII in last data codeword */ } else { target[tp++] = 255; /* Unlatch */ - if (debug_print) printf("Unlatch "); + if (debug_print) fputs("Unlatch ", stdout); } } else { /* Step E2 */ static const char edi_nonalphanum_chars[] = "\015*> "; - if (debug_print) printf("EDI "); + if (debug_print) fputs("EDI ", stdout); if (z_isdigit(source[sp])) { cte_buffer[cte_p++] = source[sp] - '0' + 4; @@ -752,7 +752,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len } else if (current_mode == C1_DECIMAL) { /* Step F - Decimal encodation */ - if (debug_print) printf("DEC "); + if (debug_print) fputs("DEC ", stdout); next_mode = C1_DECIMAL; @@ -837,7 +837,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len } if (tp > 1480) { - if (debug_print) printf("\n"); + if (debug_print) fputc('\n', stdout); /* Data is too large for symbol */ return 0; } @@ -1040,7 +1040,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i if (symbol->option_2 == 9) { /* Version S */ int codewords; - large_int elreg; + large_uint elreg; unsigned int target[30], ecc[15]; int block_width; @@ -1095,7 +1095,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i if (debug_print) { printf("Codewords (%d): ", codewords); for (i = 0; i < codewords * 2; i++) printf(" %d", (int) target[i]); - printf("\n"); + fputc('\n', stdout); } i = 0; @@ -1183,7 +1183,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i if (debug_print) { printf("Codewords (%d):", data_cw + ecc_cw); for (i = 0; i < data_cw + ecc_cw; i++) printf(" %d", (int) target[i]); - printf("\n"); + fputc('\n', stdout); } i = 0; @@ -1249,7 +1249,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i target[i] = 129; /* Pad */ } } else if (debug_print) { - printf("No padding\n"); + fputs("No padding\n", stdout); } /* Calculate error correction data */ @@ -1273,7 +1273,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i if (debug_print) { printf("Codewords (%d):", data_cw + ecc_length); for (i = 0; i < data_cw + ecc_length; i++) printf(" %d", (int) target[i]); - printf("\n"); + fputc('\n', stdout); } i = 0; diff --git a/backend/code128.c b/backend/code128.c index 0b27c229..9104b72c 100644 --- a/backend/code128.c +++ b/backend/code128.c @@ -340,45 +340,6 @@ INTERNAL void c128_put_in_set(int list[2][C128_MAX], const int indexliste, char } } -/* Treats source as ISO 8859-1 and copies into symbol->text, converting to UTF-8. Returns length of symbol->text */ -static int c128_hrt_cpy_iso8859_1(struct zint_symbol *symbol, const unsigned char source[], const int length) { - int i, j; - - for (i = 0, j = 0; i < length && j < (int) sizeof(symbol->text); i++) { - if (source[i] < 0x80) { - symbol->text[j++] = source[i] >= ' ' && source[i] != 0x7F ? source[i] : ' '; - } else if (source[i] < 0xC0) { - if (source[i] >= 0xA0) { /* 0x80-0x9F not valid ISO 8859-1 */ - if (j + 2 >= (int) sizeof(symbol->text)) { - break; - } - symbol->text[j++] = 0xC2; - symbol->text[j++] = source[i]; - } else { - symbol->text[j++] = ' '; - } - } else { - if (j + 2 >= (int) sizeof(symbol->text)) { - break; - } - symbol->text[j++] = 0xC3; - symbol->text[j++] = source[i] - 0x40; - } - } - if (j == sizeof(symbol->text)) { - j--; - } - symbol->text[j] = '\0'; - - return j; -} - -#ifdef ZINT_TEST /* Wrapper for direct testing */ -INTERNAL int c128_hrt_cpy_iso8859_1_test(struct zint_symbol *symbol, const unsigned char source[], const int length) { - return c128_hrt_cpy_iso8859_1(symbol, source, length); -} -#endif - /* Handle Code 128, 128B and HIBC 128 */ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int length) { int i, j, k, values[C128_MAX] = {0}, bar_characters = 0, read, total_sum; @@ -433,9 +394,9 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len src = src_buf; src[length] = '\0'; if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("MSet: "); + fputs("MSet: ", stdout); for (i = 0; i < length; i++) printf("%c", manual_set[i] ? manual_set[i] : '.'); - printf("\n"); + fputc('\n', stdout); } } } @@ -761,7 +722,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len values[bar_characters++] = 106; if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Codewords:"); + fputs("Codewords:", stdout); for (i = 0; i < bar_characters; i++) { printf(" %d", values[i]); } @@ -779,7 +740,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len /* ISO/IEC 15417:2007 leaves dimensions/height as application specification */ - c128_hrt_cpy_iso8859_1(symbol, src, length); + (void) hrt_cpy_iso8859_1(symbol, src, length); /* Truncation can't happen */ return error_number; } @@ -991,7 +952,7 @@ INTERNAL int gs1_128_cc(struct zint_symbol *symbol, unsigned char source[], int values[bar_characters++] = 106; if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Codewords:"); + fputs("Codewords:", stdout); for (i = 0; i < bar_characters; i++) { printf(" %d", values[i]); } @@ -1246,7 +1207,7 @@ INTERNAL int upu_s10(struct zint_symbol *symbol, unsigned char source[], int len unsigned char local_source[13 + 1]; unsigned char have_check_digit = '\0'; int check_digit; - static char weights[8] = { 8, 6, 4, 2, 3, 5, 9, 7 }; + static const char weights[8] = { 8, 6, 4, 2, 3, 5, 9, 7 }; int error_number = 0, warn_number = 0; if (length != 12 && length != 13) { diff --git a/backend/code16k.c b/backend/code16k.c index 97157a69..17c2756e 100644 --- a/backend/code16k.c +++ b/backend/code16k.c @@ -268,11 +268,11 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len printf("Codewords (%d):", bar_characters); for (i = 0; i < bar_characters; i++) { if (i % 5 == 0) { - printf("\n"); + fputc('\n', stdout); } printf(" %3d", values[i]); } - printf("\n"); + fputc('\n', stdout); } #ifdef ZINT_TEST if (symbol->debug & ZINT_DEBUG_TEST) { diff --git a/backend/code49.c b/backend/code49.c index ec4a635a..af9f5f47 100644 --- a/backend/code49.c +++ b/backend/code49.c @@ -1,7 +1,7 @@ /* code49.c - Handles Code 49 */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -317,12 +317,12 @@ INTERNAL int code49(struct zint_symbol *symbol, unsigned char source[], int leng c_grid[rows - 1][7] = j % 49; if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Codewords:\n"); + fputs("Codewords:\n", stdout); for (i = 0; i < rows; i++) { for (j = 0; j < 8; j++) { printf(" %2d", c_grid[i][j]); } - printf("\n"); + fputc('\n', stdout); } } #ifdef ZINT_TEST diff --git a/backend/common.c b/backend/common.c index 9dc7674b..a3054a74 100644 --- a/backend/common.c +++ b/backend/common.c @@ -1,7 +1,7 @@ /* common.c - Contains functions needed for a number of barcodes */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -58,17 +58,16 @@ INTERNAL char itoc(const int source) { /* Converts decimal string of length <= 9 to integer value. Returns -1 if not numeric */ INTERNAL int to_int(const unsigned char source[], const int length) { int val = 0; + int non_digit = 0; int i; for (i = 0; i < length; i++) { - if (!z_isdigit(source[i])) { - return -1; - } val *= 10; val += source[i] - '0'; + non_digit |= !z_isdigit(source[i]); } - return val; + return non_digit ? -1 : val; } /* Converts lower case characters to upper case in string `source` */ @@ -76,9 +75,7 @@ INTERNAL void to_upper(unsigned char source[], const int length) { int i; for (i = 0; i < length; i++) { - if (z_islower(source[i])) { - source[i] &= 0x5F; - } + source[i] &= z_islower(source[i]) ? 0x5F : 0xFF; } } @@ -87,9 +84,7 @@ INTERNAL int chr_cnt(const unsigned char source[], const int length, const unsig int count = 0; int i; for (i = 0; i < length; i++) { - if (source[i] == c) { - count++; - } + count += source[i] == c; } return count; } @@ -183,16 +178,10 @@ INTERNAL int posn(const char set_string[], const char data) { `bin_posn`. Returns `bin_posn` + `length` */ INTERNAL int bin_append_posn(const int arg, const int length, char *binary, const int bin_posn) { int i; - int start; - - start = 0x01 << (length - 1); + const int end = length - 1; for (i = 0; i < length; i++) { - if (arg & (start >> i)) { - binary[bin_posn + i] = '1'; - } else { - binary[bin_posn + i] = '0'; - } + binary[bin_posn + i] = '0' + ((arg >> (end - i)) & 1); } return bin_posn + length; } @@ -280,7 +269,7 @@ INTERNAL int is_stackable(const int symbology) { return 0; } -/* Whether `symbology` can have addon (EAN-2 and EAN-5) */ +/* Whether `symbology` can have add-on (EAN-2 and EAN-5) */ INTERNAL int is_extendable(const int symbology) { switch (symbology) { @@ -433,7 +422,7 @@ INTERNAL int is_valid_utf8(const unsigned char source[], const int length) { /* Converts UTF-8 to Unicode. If `disallow_4byte` unset, allows all values (UTF-32). If `disallow_4byte` set, * only allows codepoints <= U+FFFF (ie four-byte sequences not allowed) (UTF-16, no surrogates) */ INTERNAL int utf8_to_unicode(struct zint_symbol *symbol, const unsigned char source[], unsigned int vals[], - int *length, const int disallow_4byte) { + int *length, const int disallow_4byte) { int bpos; int jpos; unsigned int codepoint, state = 0; @@ -464,10 +453,51 @@ INTERNAL int utf8_to_unicode(struct zint_symbol *symbol, const unsigned char sou return 0; } +/* Treats source as ISO/IEC 8859-1 and copies into `symbol->text`, converting to UTF-8. Control chars (incl. DEL) and + non-ISO/IEC 8859-1 (0x80-9F) are replaced with spaces. Returns warning if truncated, else 0 */ +INTERNAL int hrt_cpy_iso8859_1(struct zint_symbol *symbol, const unsigned char source[], const int length) { + int i, j; + int warn_number = 0; + + for (i = 0, j = 0; i < length && j < (int) sizeof(symbol->text); i++) { + if (source[i] < 0x80) { + symbol->text[j++] = source[i] >= ' ' && source[i] != 0x7F ? source[i] : ' '; + } else if (source[i] < 0xC0) { + if (source[i] >= 0xA0) { /* 0x80-0x9F not valid ISO/IEC 8859-1 */ + if (j + 2 >= (int) sizeof(symbol->text)) { + warn_number = ZINT_WARN_HRT_TRUNCATED; + break; + } + symbol->text[j++] = 0xC2; + symbol->text[j++] = source[i]; + } else { + symbol->text[j++] = ' '; + } + } else { + if (j + 2 >= (int) sizeof(symbol->text)) { + warn_number = ZINT_WARN_HRT_TRUNCATED; + break; + } + symbol->text[j++] = 0xC3; + symbol->text[j++] = source[i] - 0x40; + } + } + if (j == sizeof(symbol->text)) { + warn_number = ZINT_WARN_HRT_TRUNCATED; + j--; + } + symbol->text[j] = '\0'; + + if (warn_number) { + strcpy(symbol->errtxt, "249: Human Readable Text truncated"); + } + return warn_number; +} + /* Sets symbol height, returning a warning if not within minimum and/or maximum if given. `default_height` does not include height of fixed-height rows (i.e. separators/composite data) */ INTERNAL int set_height(struct zint_symbol *symbol, const float min_row_height, const float default_height, - const float max_height, const int no_errtxt) { + const float max_height, const int no_errtxt) { int error_number = 0; float fixed_height = 0.0f; int zero_count = 0; @@ -548,7 +578,7 @@ INTERNAL int segs_length(const struct zint_seg segs[], const int seg_count) { /* Shallow copies segments, adjusting default ECIs */ INTERNAL void segs_cpy(const struct zint_symbol *symbol, const struct zint_seg segs[], const int seg_count, - struct zint_seg local_segs[]) { + struct zint_seg local_segs[]) { const int default_eci = symbol->symbology == BARCODE_GRIDMATRIX ? 29 : symbol->symbology == BARCODE_UPNQR ? 4 : 3; int i; @@ -612,7 +642,7 @@ INTERNAL int colour_to_blue(const int colour) { #ifdef ZINT_TEST /* Dumps hex-formatted codewords in symbol->errtxt (for use in testing) */ -void debug_test_codeword_dump(struct zint_symbol *symbol, const unsigned char *codewords, const int length) { +INTERNAL void debug_test_codeword_dump(struct zint_symbol *symbol, const unsigned char *codewords, const int length) { int i, max = length, cnt_len = 0; if (length > 30) { /* 30*3 < errtxt 92 (100 - "Warning ") chars */ sprintf(symbol->errtxt, "(%d) ", length); /* Place the number of codewords at the front */ @@ -626,7 +656,7 @@ void debug_test_codeword_dump(struct zint_symbol *symbol, const unsigned char *c } /* Dumps decimal-formatted codewords in symbol->errtxt (for use in testing) */ -void debug_test_codeword_dump_int(struct zint_symbol *symbol, const int *codewords, const int length) { +INTERNAL void debug_test_codeword_dump_int(struct zint_symbol *symbol, const int *codewords, const int length) { int i, max = 0, cnt_len, errtxt_len; char temp[20]; errtxt_len = sprintf(symbol->errtxt, "(%d) ", length); /* Place the number of codewords at the front */ diff --git a/backend/common.h b/backend/common.h index 2510341b..decc77b5 100644 --- a/backend/common.h +++ b/backend/common.h @@ -1,7 +1,7 @@ /* common.h - Header for all common functions in common.c */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -218,7 +218,7 @@ INTERNAL void expand(struct zint_symbol *symbol, const char data[], const int le /* Whether `symbology` can have row binding */ INTERNAL int is_stackable(const int symbology); -/* Whether `symbology` can have addon (EAN-2 and EAN-5) */ +/* Whether `symbology` can have add-on (EAN-2 and EAN-5) */ INTERNAL int is_extendable(const int symbology); /* Whether `symbology` can have composite 2D component data */ @@ -249,11 +249,15 @@ INTERNAL int is_valid_utf8(const unsigned char source[], const int length); INTERNAL int utf8_to_unicode(struct zint_symbol *symbol, const unsigned char source[], unsigned int vals[], int *length, const int disallow_4byte); +/* Treats source as ISO/IEC 8859-1 and copies into `symbol->text`, converting to UTF-8. Control chars (incl. DEL) and + non-ISO/IEC 8859-1 (0x80-9F) are replaced with spaces. Returns warning if truncated, else 0 */ +INTERNAL int hrt_cpy_iso8859_1(struct zint_symbol *symbol, const unsigned char source[], const int length); + /* Sets symbol height, returning a warning if not within minimum and/or maximum if given. `default_height` does not include height of fixed-height rows (i.e. separators/composite data) */ INTERNAL int set_height(struct zint_symbol *symbol, const float min_row_height, const float default_height, - const float max_height, const int set_errtxt); + const float max_height, const int no_errtxt); /* Removes excess precision from floats - see https://stackoverflow.com/q/503436 */ @@ -265,7 +269,7 @@ INTERNAL int segs_length(const struct zint_seg segs[], const int seg_count); /* Shallow copies segments, adjusting default ECIs */ INTERNAL void segs_cpy(const struct zint_symbol *symbol, const struct zint_seg segs[], const int seg_count, - struct zint_seg local_segs[]); + struct zint_seg local_segs[]); /* Returns red component if any of ultra colour indexing "0CBMRYGKW" */ diff --git a/backend/composite.c b/backend/composite.c index 747b2c60..5220d60d 100644 --- a/backend/composite.c +++ b/backend/composite.c @@ -1,7 +1,7 @@ /* composite.c - Handles GS1 Composite Symbols */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -545,7 +545,7 @@ static void cc_c(struct zint_symbol *symbol, const char source[], const int cc_w if (debug_print) { printf("CC-C Codewords (%d):", mclength); for (i = 0; i < mclength; i++) printf(" %d", chainemc[i]); - printf("\n"); + fputc('\n', stdout); } k = 1; @@ -1408,6 +1408,7 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l linear->symbology = symbol->symbology; linear->input_mode = symbol->input_mode; linear->output_options = symbol->output_options; + linear->show_hrt = symbol->show_hrt; linear->option_2 = symbol->option_2; linear->option_3 = symbol->option_3; /* If symbol->height given minimum row height will be returned, else default height */ @@ -1489,7 +1490,8 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l break; } break; - case BARCODE_GS1_128_CC: if (cc_mode == 3) { + case BARCODE_GS1_128_CC: + if (cc_mode == 3) { bottom_shift = 7; /* ISO/IEC 24723:2010 12.3 f) */ } else { /* ISO/IEC 24723:2010 12.3 g) "GS1-128 components linked to the right quiet zone of the CC-A or CC-B: @@ -1521,10 +1523,8 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l bottom_shift = 9; } break; - case BARCODE_DBAR_EXP_CC: k = 1; - while ((!(module_is_set(linear, 1, k - 1))) && module_is_set(linear, 1, k)) { - k++; - } + case BARCODE_DBAR_EXP_CC: + for (k = 1; !module_is_set(linear, 1, k - 1) && module_is_set(linear, 1, k); k++); top_shift = k; break; case BARCODE_UPCA_CC: bottom_shift = 2; @@ -1535,10 +1535,8 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l break; case BARCODE_DBAR_OMNSTK_CC: top_shift = 1; break; - case BARCODE_DBAR_EXPSTK_CC: k = 1; - while ((!(module_is_set(linear, 1, k - 1))) && module_is_set(linear, 1, k)) { - k++; - } + case BARCODE_DBAR_EXPSTK_CC: + for (k = 1; !module_is_set(linear, 1, k - 1) && module_is_set(linear, 1, k); k++); top_shift = k; break; } diff --git a/backend/dmatrix.c b/backend/dmatrix.c index 6e5d92e5..99c9616e 100644 --- a/backend/dmatrix.c +++ b/backend/dmatrix.c @@ -1,7 +1,7 @@ /* dmatrix.c Handles Data Matrix ECC 200 symbols */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart developed from and including some functions from: IEC16022 bar code generation @@ -400,19 +400,19 @@ static int dm_look_ahead_test(const unsigned char source[], const int length, co /* Adjusted from <= b256_count */ if (cnt_1 < b256_count && cnt_1 <= edf_count && cnt_1 <= text_count && cnt_1 <= x12_count && cnt_1 <= c40_count) { - if (debug_print) printf("ASC->"); + if (debug_print) fputs("ASC->", stdout); return DM_ASCII; /* step (r)(1) */ } cnt_1 = b256_count + DM_MULT_1; if (cnt_1 <= ascii_count || (cnt_1 < edf_count && cnt_1 < text_count && cnt_1 < x12_count && cnt_1 < c40_count)) { - if (debug_print) printf("BAS->"); + if (debug_print) fputs("BAS->", stdout); return DM_BASE256; /* step (r)(2) */ } cnt_1 = edf_count + DM_MULT_1; if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < text_count && cnt_1 < x12_count && cnt_1 < c40_count) { - if (debug_print) printf("EDI->"); + if (debug_print) fputs("EDI->", stdout); return DM_EDIFACT; /* step (r)(3) */ } cnt_1 = text_count + DM_MULT_1; @@ -421,32 +421,32 @@ static int dm_look_ahead_test(const unsigned char source[], const int length, co /* Adjusted to avoid early exit from Base 256 if have less than break-even sequence of TEXT chars */ if (current_mode == DM_BASE256 && position + 6 < length) { if (dm_text_sp_cnt(source, position, length, sp) >= 12) { - if (debug_print) printf("TEX->"); + if (debug_print) fputs("TEX->", stdout); return DM_TEXT; /* step (r)(4) */ } } else { - if (debug_print) printf("TEX->"); + if (debug_print) fputs("TEX->", stdout); return DM_TEXT; /* step (r)(4) */ } } cnt_1 = x12_count + DM_MULT_1; if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count && cnt_1 < c40_count) { - if (debug_print) printf("X12->"); + if (debug_print) fputs("X12->", stdout); return DM_X12; /* step (r)(5) */ } cnt_1 = c40_count + DM_MULT_1; if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count) { if (c40_count < x12_count) { - if (debug_print) printf("C40->"); + if (debug_print) fputs("C40->", stdout); return DM_C40; /* step (r)(6)(i) */ } if (c40_count == x12_count) { if (dm_substep_r_6_2_1(source, length, sp) == 1) { - if (debug_print) printf("X12->"); + if (debug_print) fputs("X12->", stdout); return DM_X12; /* step (r)(6)(ii)(I) */ } - if (debug_print) printf("C40->"); + if (debug_print) fputs("C40->", stdout); return DM_C40; /* step (r)(6)(ii)(II) */ } } @@ -470,32 +470,32 @@ static int dm_look_ahead_test(const unsigned char source[], const int length, co if (ascii_rnded <= b256_rnded && ascii_rnded <= edf_rnded && ascii_rnded <= text_rnded && ascii_rnded <= x12_rnded && ascii_rnded <= c40_rnded) { - if (debug_print) printf("ASC->"); + if (debug_print) fputs("ASC->", stdout); return DM_ASCII; /* step (k)(2) */ } if (b256_rnded < ascii_rnded && b256_rnded < edf_rnded && b256_rnded < text_rnded && b256_rnded < x12_rnded && b256_rnded < c40_rnded) { - if (debug_print) printf("BAS->"); + if (debug_print) fputs("BAS->", stdout); return DM_BASE256; /* step (k)(3) */ } /* Adjusted from < x12_rnded */ if (edf_rnded < ascii_rnded && edf_rnded < b256_rnded && edf_rnded < text_rnded && edf_rnded <= x12_rnded && edf_rnded < c40_rnded) { - if (debug_print) printf("EDI->"); + if (debug_print) fputs("EDI->", stdout); return DM_EDIFACT; /* step (k)(4) */ } if (text_rnded < ascii_rnded && text_rnded < b256_rnded && text_rnded < edf_rnded && text_rnded < x12_rnded && text_rnded < c40_rnded) { - if (debug_print) printf("TEX->"); + if (debug_print) fputs("TEX->", stdout); return DM_TEXT; /* step (k)(5) */ } /* Adjusted from < edf_rnded */ if (x12_rnded < ascii_rnded && x12_rnded < b256_rnded && x12_rnded <= edf_rnded && x12_rnded < text_rnded && x12_rnded < c40_rnded) { - if (debug_print) printf("X12->"); + if (debug_print) fputs("X12->", stdout); return DM_X12; /* step (k)(6) */ } - if (debug_print) printf("C40->"); + if (debug_print) fputs("C40->", stdout); return DM_C40; /* step (k)(7) */ } @@ -653,24 +653,24 @@ static int dm_switch_mode(const int next_mode, unsigned char target[], int tp, i const int debug_print) { switch (next_mode) { case DM_ASCII: - if (debug_print) printf("ASC "); + if (debug_print) fputs("ASC ", stdout); break; case DM_C40: target[tp++] = 230; - if (debug_print) printf("C40 "); + if (debug_print) fputs("C40 ", stdout); break; case DM_TEXT: target[tp++] = 239; - if (debug_print) printf("TEX "); + if (debug_print) fputs("TEX ", stdout); break; case DM_X12: target[tp++] = 238; - if (debug_print) printf("X12 "); + if (debug_print) fputs("X12 ", stdout); break; case DM_EDIFACT: target[tp++] = 240; - if (debug_print) printf("EDI "); + if (debug_print) fputs("EDI ", stdout); break; case DM_BASE256: target[tp++] = 231; *p_b256_start = tp; target[tp++] = 0; /* Byte count holder (may be expanded to 2 codewords) */ - if (debug_print) printf("BAS "); + if (debug_print) fputs("BAS ", stdout); break; } @@ -1035,7 +1035,7 @@ static int dm_define_mode(struct zint_symbol *symbol, char modes[], const unsign if (debug_print) { printf("modes (%d): ", length); for (i = 0; i < length; i++) printf("%c", dm_smodes[(int) modes[i]][0]); - printf("\n"); + fputc('\n', stdout); } assert(mode_end == 0); @@ -1119,10 +1119,10 @@ static int dm_minimalenc(struct zint_symbol *symbol, const unsigned char source[ if (gs1 && (source[sp] == '[')) { if (gs1 == 2) { target[tp++] = 29 + 1; /* GS */ - if (debug_print) printf("GS "); + if (debug_print) fputs("GS ", stdout); } else { target[tp++] = 232; /* FNC1 */ - if (debug_print) printf("FN1 "); + if (debug_print) fputs("FN1 ", stdout); } } else { target[tp++] = source[sp] + 1; @@ -1295,10 +1295,10 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c if (gs1 && (source[sp] == '[')) { if (gs1 == 2) { target[tp++] = 29 + 1; /* GS */ - if (debug_print) printf("GS "); + if (debug_print) fputs("GS ", stdout); } else { target[tp++] = 232; /* FNC1 */ - if (debug_print) printf("FN1 "); + if (debug_print) fputs("FN1 ", stdout); } } else { target[tp++] = source[sp] + 1; @@ -1320,7 +1320,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c if (next_mode != current_mode) { target[tp++] = 254; /* Unlatch */ next_mode = DM_ASCII; - if (debug_print) printf("ASC "); + if (debug_print) fputs("ASC ", stdout); } else { int shift_set, value; const char *ct_shift, *ct_value; @@ -1382,7 +1382,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c process_p = 0; /* Throw away buffer if any */ target[tp++] = 254; /* Unlatch */ next_mode = DM_ASCII; - if (debug_print) printf("ASC "); + if (debug_print) fputs("ASC ", stdout); } else { static const char x12_nonalphanum_chars[] = "\015*> "; int value = 0; @@ -1422,7 +1422,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c process_buffer[process_p++] = 31; process_p = dm_edi_buffer_xfer(process_buffer, process_p, target, &tp, 1 /*empty*/, debug_print); next_mode = DM_ASCII; - if (debug_print) printf("ASC "); + if (debug_print) fputs("ASC ", stdout); } else { int value = source[sp]; @@ -1546,7 +1546,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c if (process_p == 0) { if (symbols_left > 0) { target[tp++] = 254; /* Unlatch */ - if (debug_print) printf("ASC "); + if (debug_print) fputs("ASC ", stdout); } } else { if (process_p == 2 && symbols_left == 2) { @@ -1559,7 +1559,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c if (symbols_left > 1) { /* 5.2.5.2 (c) */ target[tp++] = 254; /* Unlatch and encode remaining data in ascii. */ - if (debug_print) printf("ASC "); + if (debug_print) fputs("ASC ", stdout); } target[tp++] = source[length - 1] + 1; if (debug_print) printf("A%02X ", target[tp - 1] - 1); @@ -1577,7 +1577,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c tp -= (total_cnt / 3) * 2; target[tp++] = 254; /* Unlatch */ - if (debug_print) printf("ASC "); + if (debug_print) fputs("ASC ", stdout); for (; sp < length; sp++) { if (is_twodigits(source, length, sp)) { target[tp++] = (unsigned char) ((10 * ctoi(source[sp])) + ctoi(source[sp + 1]) + 130); @@ -1590,10 +1590,10 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c } else if (gs1 && source[sp] == '[') { if (gs1 == 2) { target[tp++] = 29 + 1; /* GS */ - if (debug_print) printf("GS "); + if (debug_print) fputs("GS ", stdout); } else { target[tp++] = 232; /* FNC1 */ - if (debug_print) printf("FN1 "); + if (debug_print) fputs("FN1 ", stdout); } } else { target[tp++] = source[sp] + 1; @@ -1604,7 +1604,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c } } else if (current_mode == DM_X12) { - if (debug_print) printf("X12 "); + if (debug_print) fputs("X12 ", stdout); if ((symbols_left == 1) && (process_p == 1)) { /* Unlatch not required! */ target[tp++] = source[length - 1] + 1; @@ -1612,7 +1612,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c } else { if (symbols_left > 0) { target[tp++] = (254); /* Unlatch. */ - if (debug_print) printf("ASC "); + if (debug_print) fputs("ASC ", stdout); } if (process_p == 1) { @@ -1626,7 +1626,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c } } else if (current_mode == DM_EDIFACT) { - if (debug_print) printf("EDI "); + if (debug_print) fputs("EDI ", stdout); if (symbols_left <= 2 && process_p <= symbols_left) { /* Unlatch not required! */ if (process_p == 1) { target[tp++] = source[length - 1] + 1; @@ -1656,11 +1656,11 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c } if (debug_print) { - printf("\nData (%d): ", tp); + printf("\nData (%d):", tp); for (i = 0; i < tp; i++) - printf("%d ", target[i]); + printf(" %d", target[i]); - printf("\n"); + fputc('\n', stdout); } *p_tp = tp; @@ -1761,7 +1761,7 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co if (gs1) { target[tp++] = 232; - if (debug_print) printf("FN1 "); + if (debug_print) fputs("FN1 ", stdout); } /* FNC1 */ if (symbol->output_options & READER_INIT) { @@ -1774,7 +1774,7 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co return ZINT_ERROR_INVALID_OPTION; } target[tp++] = 234; /* Reader Programming */ - if (debug_print) printf("RP "); + if (debug_print) fputs("RP ", stdout); } /* Check for Macro05/Macro06 */ @@ -1791,10 +1791,10 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co /* Output macro Codeword */ if (segs[0].source[5] == '5') { target[tp++] = 236; - if (debug_print) printf("Macro05 "); + if (debug_print) fputs("Macro05 ", stdout); } else { target[tp++] = 237; - if (debug_print) printf("Macro06 "); + if (debug_print) fputs("Macro06 ", stdout); } /* Remove macro characters from input string */ in_macro = 1; @@ -1882,7 +1882,7 @@ static int dm_ecc200(struct zint_symbol *symbol, struct zint_seg segs[], const i if (debug_print) { printf("Pads (%d): ", taillength); for (i = binlen; i < binlen + taillength; i++) printf("%d ", binary[i]); - printf("\n"); + fputc('\n', stdout); } /* ecc code */ @@ -1893,7 +1893,7 @@ static int dm_ecc200(struct zint_symbol *symbol, struct zint_seg segs[], const i if (debug_print) { printf("ECC (%d): ", rsblock * (bytes / datablock)); for (i = bytes; i < bytes + rsblock * (bytes / datablock); i++) printf("%d ", binary[i]); - printf("\n"); + fputc('\n', stdout); } #ifdef ZINT_TEST diff --git a/backend/dotcode.c b/backend/dotcode.c index 4a7b2ca5..e52506aa 100644 --- a/backend/dotcode.c +++ b/backend/dotcode.c @@ -1,7 +1,7 @@ /* dotcode.c - Handles DotCode */ /* libzint - the open source barcode library - Copyright (C) 2017-2022 Robin Stuart + Copyright (C) 2017-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -633,7 +633,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou if (last_seg && (position == length - 2) && (inside_macro != 0) && (inside_macro != 100)) { /* inside_macro only gets set to 97, 98 or 99 if the last two characters are RS/EOT */ position += 2; - if (debug_print) printf("A "); + if (debug_print) fputs("A ", stdout); continue; } @@ -641,7 +641,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou if (last_seg && (position == length - 1) && (inside_macro == 100)) { /* inside_macro only gets set to 100 if the last character is EOT */ position++; - if (debug_print) printf("B "); + if (debug_print) fputs("B ", stdout); continue; } @@ -654,7 +654,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = to_int(source + position + 4, 2); codeword_array[ap++] = to_int(source + position + 6, 2); position += 10; - if (debug_print) printf("C2/1 "); + if (debug_print) fputs("C2/1 ", stdout); continue; } @@ -666,7 +666,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = to_int(source + position, 2); position += 2; } - if (debug_print) printf("C2/2 "); + if (debug_print) fputs("C2/2 ", stdout); continue; } @@ -686,7 +686,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 112; /* Bin Latch */ encoding_mode = 'X'; } - if (debug_print) printf("C3 "); + if (debug_print) fputs("C3 ", stdout); continue; } @@ -722,7 +722,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou encoding_mode = 'B'; } } - if (debug_print) printf("C4 "); + if (debug_print) fputs("C4 ", stdout); continue; } } /* encoding_mode == 'C' */ @@ -742,7 +742,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 106; /* Latch C */ encoding_mode = 'C'; } - if (debug_print) printf("D1 "); + if (debug_print) fputs("D1 ", stdout); continue; } @@ -750,7 +750,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou if ((source[position] == '[') && gs1) { codeword_array[ap++] = 107; /* FNC1 */ position++; - if (debug_print) printf("D2/1 "); + if (debug_print) fputs("D2/1 ", stdout); continue; } @@ -781,7 +781,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou if (done == 1) { position++; - if (debug_print) printf("D2/2 "); + if (debug_print) fputs("D2/2 ", stdout); continue; } } @@ -801,7 +801,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 112; /* Bin Latch */ encoding_mode = 'X'; } - if (debug_print) printf("D3 "); + if (debug_print) fputs("D3 ", stdout); continue; } @@ -818,7 +818,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 102; /* Latch A */ encoding_mode = 'A'; } - if (debug_print) printf("D4 "); + if (debug_print) fputs("D4 ", stdout); continue; } /* encoding_mode == 'B' */ @@ -836,7 +836,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 106; /* Latch C */ encoding_mode = 'C'; } - if (debug_print) printf("E1 "); + if (debug_print) fputs("E1 ", stdout); continue; } @@ -845,7 +845,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou /* Note: this branch probably never reached as no reason to be in Code Set A for GS1 data */ codeword_array[ap++] = 107; /* FNC1 */ position++; - if (debug_print) printf("E2/1 "); + if (debug_print) fputs("E2/1 ", stdout); continue; } if (dc_datum_a(source, length, position)) { @@ -855,7 +855,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = source[position] - 32; } position++; - if (debug_print) printf("E2/2 "); + if (debug_print) fputs("E2/2 ", stdout); continue; } @@ -874,7 +874,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 112; /* Bin Latch */ encoding_mode = 'X'; } - if (debug_print) printf("E3 "); + if (debug_print) fputs("E3 ", stdout); continue; } @@ -903,7 +903,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 102; /* Latch B */ encoding_mode = 'B'; } - if (debug_print) printf("E4 "); + if (debug_print) fputs("E4 ", stdout); continue; } /* encoding_mode == 'A' */ @@ -924,7 +924,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 111; /* Terminate with Latch to C */ encoding_mode = 'C'; } - if (debug_print) printf("F1 "); + if (debug_print) fputs("F1 ", stdout); continue; } @@ -939,7 +939,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou || dc_binary(source, length, position + 3)) { ap = dc_append_to_bin_buf(codeword_array, ap, source[position], &bin_buf, &bin_buf_size); position++; - if (debug_print) printf("F2 "); + if (debug_print) fputs("F2 ", stdout); continue; } @@ -953,7 +953,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou codeword_array[ap++] = 110; /* Terminate with Latch to B */ encoding_mode = 'B'; } - if (debug_print) printf("F3 "); + if (debug_print) fputs("F3 ", stdout); } /* encoding_mode == 'X' */ } @@ -987,7 +987,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou } if (debug_print) { - printf("\n"); + fputc('\n', stdout); } *p_encoding_mode = encoding_mode; @@ -1404,11 +1404,11 @@ INTERNAL int dotcode(struct zint_symbol *symbol, struct zint_seg segs[], const i if (debug_print) { printf("Codeword length = %d, ECC length = %d\n", data_length, ecc_length); - printf("Codewords:"); + fputs("Codewords:", stdout); for (i = 0; i < data_length; i++) { printf(" %d", codeword_array[i]); } - printf("\n"); + fputc('\n', stdout); } #ifdef ZINT_TEST if (symbol->debug & ZINT_DEBUG_TEST) { @@ -1507,12 +1507,12 @@ INTERNAL int dotcode(struct zint_symbol *symbol, struct zint_seg segs[], const i for (i = 1; i < data_length + 1; i++) { printf(" [%d]", masked_codeword_array[i]); } - printf("\n"); + fputc('\n', stdout); printf("Masked ECCs (%d):", ecc_length); for (i = data_length + 1; i < data_length + ecc_length + 1; i++) { printf(" [%d]", masked_codeword_array[i]); } - printf("\n"); + fputc('\n', stdout); } dot_stream_length = dc_make_dotstream(masked_codeword_array, (data_length + ecc_length + 1), dot_stream); diff --git a/backend/eci.c b/backend/eci.c index 793ff870..4fa22124 100644 --- a/backend/eci.c +++ b/backend/eci.c @@ -1,7 +1,7 @@ /* eci.c - Extended Channel Interpretations */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -697,9 +697,9 @@ INTERNAL int get_eci_length_segs(const struct zint_seg segs[], const int seg_cou } /* Convert UTF-8 to other character encodings */ +typedef int (*eci_func_t)(const unsigned int u, unsigned char *dest); INTERNAL int utf8_to_eci(const int eci, const unsigned char source[], unsigned char dest[], int *p_length) { - typedef int (*eci_func_t)(const unsigned int u, unsigned char *dest); static const eci_func_t eci_funcs[36] = { NULL, NULL, NULL, NULL, u_iso8859_2, /*0-4*/ u_iso8859_3, u_iso8859_4, u_iso8859_5, u_iso8859_6, u_iso8859_7, /*5-9*/ diff --git a/backend/emf.c b/backend/emf.c index 684bcd73..94ae47ae 100644 --- a/backend/emf.c +++ b/backend/emf.c @@ -46,11 +46,11 @@ #include "emf.h" /* Multiply truncating to 3 decimal places (avoids rounding differences on various platforms) */ -#define mul3dpf(m, arg) stripf(roundf(m * arg * 1000.0) / 1000.0f) +#define mul3dpf(m, arg) stripf(roundf((m) * (arg) * 1000.0) / 1000.0f) -static int count_rectangles(struct zint_symbol *symbol) { +static int emf_count_rectangles(const struct zint_symbol *symbol) { int rectangles = 0; - struct zint_vector_rect *rect; + const struct zint_vector_rect *rect; rect = symbol->vector->rectangles; while (rect) { @@ -61,9 +61,9 @@ static int count_rectangles(struct zint_symbol *symbol) { return rectangles; } -static int count_circles(struct zint_symbol *symbol) { +static int emf_count_circles(const struct zint_symbol *symbol) { int circles = 0; - struct zint_vector_circle *circ; + const struct zint_vector_circle *circ; circ = symbol->vector->circles; while (circ) { @@ -75,9 +75,9 @@ static int count_circles(struct zint_symbol *symbol) { return symbol->symbology == BARCODE_MAXICODE ? circles * 2 : circles; } -static int count_hexagons(struct zint_symbol *symbol) { +static int emf_count_hexagons(const struct zint_symbol *symbol) { int hexagons = 0; - struct zint_vector_hexagon *hex; + const struct zint_vector_hexagon *hex; hex = symbol->vector->hexagons; while (hex) { @@ -88,13 +88,13 @@ static int count_hexagons(struct zint_symbol *symbol) { return hexagons; } -static int count_strings(struct zint_symbol *symbol, float *fsize, float *fsize2, int *halign, int *halign1, - int *halign2) { +static int emf_count_strings(const struct zint_symbol *symbol, float *fsize, float *fsize2, int *halign_left, + int *halign_right) { int strings = 0; - struct zint_vector_string *str; + const struct zint_vector_string *str; *fsize = *fsize2 = 0.0f; - *halign = *halign1 = *halign2 = 0; + *halign_left = *halign_right = 0; str = symbol->vector->strings; while (str) { @@ -104,12 +104,12 @@ static int count_strings(struct zint_symbol *symbol, float *fsize, float *fsize2 } else if (str->fsize != *fsize && *fsize2 == 0.0f) { *fsize2 = str->fsize; } - /* Only 3 haligns possible */ - if (str->halign) { - if (str->halign == 1) { - *halign1 = str->halign; - } else { - *halign2 = str->halign; + /* Only 3 haligns possible and centre align always assumed used */ + if (str->halign) { /* Left or right align */ + if (str->halign == 1) { /* Left align */ + *halign_left = str->halign; + } else { /* Right align */ + *halign_right = str->halign; } } strings++; @@ -119,11 +119,11 @@ static int count_strings(struct zint_symbol *symbol, float *fsize, float *fsize2 return strings; } -static void utfle_copy(unsigned char *output, unsigned char *input, int length) { +/* Convert UTF-8 to UTF-16LE - only needs to handle characters <= U+00FF */ +static void emf_utfle_copy(unsigned char *output, const unsigned char *input, const int length) { int i; int o; - /* Convert UTF-8 to UTF-16LE - only needs to handle characters <= U+00FF */ i = 0; o = 0; do { @@ -143,15 +143,12 @@ static void utfle_copy(unsigned char *output, unsigned char *input, int length) } while (i < length); } -static int bump_up(int input) { - /* Strings length must be a multiple of 4 bytes */ - if ((input & 1) == 1) { - input++; - } - return input; +/* Strings length must be a multiple of 4 bytes */ +static int emf_bump_up(const int input) { + return (input + (input & 1)) << 1; } -static int utfle_length(unsigned char *input, int length) { +static int emf_utfle_length(const unsigned char *input, const int length) { int result = 0; int i; @@ -227,12 +224,11 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) { float fsize2; emr_extcreatefontindirectw_t emr_extcreatefontindirectw2; emr_selectobject_t emr_selectobject_font2; - int halign; - emr_settextalign_t emr_settextalign; - int halign1; - emr_settextalign_t emr_settextalign1; - int halign2; - emr_settextalign_t emr_settextalign2; + emr_settextalign_t emr_settextalign_centre; /* Centre align */ + int halign_left; /* Set if left halign used */ + emr_settextalign_t emr_settextalign_left; + int halign_right; /* Set if right halign used */ + emr_settextalign_t emr_settextalign_right; float current_fsize; int current_halign; @@ -254,10 +250,10 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) { draw_background = 0; } - rectangle_count = count_rectangles(symbol); - circle_count = count_circles(symbol); - hexagon_count = count_hexagons(symbol); - string_count = count_strings(symbol, &fsize, &fsize2, &halign, &halign1, &halign2); + rectangle_count = emf_count_rectangles(symbol); + circle_count = emf_count_circles(symbol); + hexagon_count = emf_count_hexagons(symbol); + string_count = emf_count_strings(symbol, &fsize, &fsize2, &halign_left, &halign_right); /* Avoid sanitize runtime error by making always non-zero */ rectangle = (emr_rectangle_t *) z_alloca(sizeof(emr_rectangle_t) * (rectangle_count ? rectangle_count : 1)); @@ -565,7 +561,7 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) { emr_extcreatefontindirectw.elw.out_precision = 0x00; /* OUT_DEFAULT_PRECIS */ emr_extcreatefontindirectw.elw.clip_precision = 0x00; /* CLIP_DEFAULT_PRECIS */ emr_extcreatefontindirectw.elw.pitch_and_family = 0x02 | (0x02 << 6); /* FF_SWISS | VARIABLE_PITCH */ - utfle_copy(emr_extcreatefontindirectw.elw.facename, (unsigned char *) "sans-serif", 10); + emf_utfle_copy(emr_extcreatefontindirectw.elw.facename, (const unsigned char *) "sans-serif", 10); bytecount += 104; recordcount++; @@ -591,18 +587,18 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) { /* Note select aligns counted below in strings loop */ - emr_settextalign.type = 0x00000016; /* EMR_SETTEXTALIGN */ - emr_settextalign.size = 12; - emr_settextalign.text_alignment_mode = 0x0006 | 0x0018; /* TA_CENTER | TA_BASELINE */ - if (halign1) { - emr_settextalign1.type = 0x00000016; /* EMR_SETTEXTALIGN */ - emr_settextalign1.size = 12; - emr_settextalign1.text_alignment_mode = 0x0000 | 0x0018; /* TA_LEFT | TA_BASELINE */ + emr_settextalign_centre.type = 0x00000016; /* EMR_SETTEXTALIGN */ + emr_settextalign_centre.size = 12; + emr_settextalign_centre.text_alignment_mode = 0x0006 | 0x0018; /* TA_CENTER | TA_BASELINE */ + if (halign_left) { + emr_settextalign_left.type = 0x00000016; /* EMR_SETTEXTALIGN */ + emr_settextalign_left.size = 12; + emr_settextalign_left.text_alignment_mode = 0x0000 | 0x0018; /* TA_LEFT | TA_BASELINE */ } - if (halign2) { - emr_settextalign2.type = 0x00000016; /* EMR_SETTEXTALIGN */ - emr_settextalign2.size = 12; - emr_settextalign2.text_alignment_mode = 0x0002 | 0x0018; /* TA_RIGHT | TA_BASELINE */ + if (halign_right) { + emr_settextalign_right.type = 0x00000016; /* EMR_SETTEXTALIGN */ + emr_settextalign_right.size = 12; + emr_settextalign_right.text_alignment_mode = 0x0002 | 0x0018; /* TA_RIGHT | TA_BASELINE */ } emr_settextcolor.type = 0x0000018; /* EMR_SETTEXTCOLOR */ @@ -636,8 +632,8 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) { recordcount++; } assert(str->length > 0); - utfle_len = utfle_length(str->text, str->length); - bumped_len = bump_up(utfle_len) * 2; + utfle_len = emf_utfle_length(str->text, str->length); + bumped_len = emf_bump_up(utfle_len); if (!(this_string[this_text] = (unsigned char *) malloc(bumped_len))) { for (i = 0; i < this_text; i++) { free(this_string[i]); @@ -665,7 +661,7 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) { text[this_text].w_emr_text.rectangle.right = 0xffffffff; text[this_text].w_emr_text.rectangle.bottom = 0xffffffff; text[this_text].w_emr_text.off_dx = 0; - utfle_copy(this_string[this_text], str->text, str->length); + emf_utfle_copy(this_string[this_text], str->text, str->length); bytecount += 76 + bumped_len; recordcount++; @@ -810,15 +806,15 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) { if (text_haligns[i] != current_halign) { current_halign = text_haligns[i]; if (current_halign == 0) { - fwrite(&emr_settextalign, sizeof(emr_settextalign_t), 1, emf_file); + fwrite(&emr_settextalign_centre, sizeof(emr_settextalign_t), 1, emf_file); } else if (current_halign == 1) { - fwrite(&emr_settextalign1, sizeof(emr_settextalign_t), 1, emf_file); + fwrite(&emr_settextalign_left, sizeof(emr_settextalign_t), 1, emf_file); } else { - fwrite(&emr_settextalign2, sizeof(emr_settextalign_t), 1, emf_file); + fwrite(&emr_settextalign_right, sizeof(emr_settextalign_t), 1, emf_file); } } fwrite(&text[i], sizeof(emr_exttextoutw_t), 1, emf_file); - fwrite(this_string[i], bump_up(text[i].w_emr_text.chars) * 2, 1, emf_file); + fwrite(this_string[i], emf_bump_up(text[i].w_emr_text.chars), 1, emf_file); free(this_string[i]); } diff --git a/backend/fonts/upcean_ttf.h b/backend/fonts/upcean_ttf.h new file mode 100644 index 00000000..ba8930a1 --- /dev/null +++ b/backend/fonts/upcean_ttf.h @@ -0,0 +1,211 @@ +/* fonts/upcean_ttf.h - OCR-B TrueType (EAN/UPC subset) as static array */ +/* + libzint - the open source barcode library + Copyright (C) 2023 Robin Stuart + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the project nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + */ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#ifndef Z_UPCEAN_TTF_H +#define Z_UPCEAN_TTF_H + +/* Adapted from OCR-B font version 0.2 Matthew Skala + * https://tsukurimashou.osdn.jp/ocr.php.en + * + * Copyright Matthew Skala (2011); based on code by Norbert Schwarz (1986, 2011) + * + * "The version in this package descends from a set of Metafont + * definitions by Norbert Schwarz of Ruhr-Universitaet Bochum, + * bearing dates ranging from 1986 to 2010. He originally + * distributed it under a "non-commercial use only" + * restriction but has since released it for unrestricted use + * and distribution. See the README file for more details." + * + * The README states (http://mirrors.ctan.org/fonts/ocr-b.zip) + * + * "As far as the digitization in METAFONT input which I have + * developed, you may freely use, modify, and/or distribute any of + * these files or the resulting fonts, without limitation. A previous + * release of ocr-b only granted rights for non-commercial use; that + * restriction is now lifted." + */ +static const unsigned char upcean_ttf[2404] = { + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x80, 0x00, 0x03, 0x00, 0x60, 0x47, 0x44, 0x45, 0x46, + 0x00, 0x11, 0x00, 0x0d, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x16, 0x47, 0x50, 0x4f, 0x53, + 0x44, 0x76, 0x4c, 0x75, 0x00, 0x00, 0x09, 0x18, 0x00, 0x00, 0x00, 0x20, 0x47, 0x53, 0x55, 0x42, + 0xb8, 0xfa, 0xb8, 0xf4, 0x00, 0x00, 0x09, 0x38, 0x00, 0x00, 0x00, 0x2a, 0x4f, 0x53, 0x2f, 0x32, + 0x56, 0xd8, 0x60, 0xec, 0x00, 0x00, 0x06, 0xc4, 0x00, 0x00, 0x00, 0x56, 0x63, 0x6d, 0x61, 0x70, + 0x00, 0x59, 0x00, 0xea, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, 0x44, 0x67, 0x61, 0x73, 0x70, + 0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x67, 0x6c, 0x79, 0x66, + 0x5a, 0xc9, 0xa9, 0xf4, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x05, 0x22, 0x68, 0x65, 0x61, 0x64, + 0xfa, 0xed, 0xa9, 0xe5, 0x00, 0x00, 0x06, 0x4c, 0x00, 0x00, 0x00, 0x36, 0x68, 0x68, 0x65, 0x61, + 0x06, 0xc0, 0x01, 0x48, 0x00, 0x00, 0x06, 0xa0, 0x00, 0x00, 0x00, 0x24, 0x68, 0x6d, 0x74, 0x78, + 0x05, 0x8a, 0x02, 0xdf, 0x00, 0x00, 0x06, 0x84, 0x00, 0x00, 0x00, 0x1c, 0x6c, 0x6f, 0x63, 0x61, + 0x08, 0x29, 0x09, 0x54, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x1c, 0x6d, 0x61, 0x78, 0x70, + 0x00, 0x54, 0x00, 0x5a, 0x00, 0x00, 0x06, 0x10, 0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x19, 0xeb, 0x33, 0x64, 0x00, 0x00, 0x07, 0x60, 0x00, 0x00, 0x01, 0x76, 0x70, 0x6f, 0x73, 0x74, + 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x08, 0xd8, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x71, + 0xff, 0xf2, 0x02, 0x65, 0x03, 0x05, 0x00, 0x1d, 0x00, 0x31, 0x00, 0x00, 0x13, 0x34, 0x3e, 0x04, + 0x33, 0x32, 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x22, 0x06, 0x23, 0x22, 0x26, 0x23, 0x22, + 0x2e, 0x02, 0x37, 0x14, 0x17, 0x16, 0x3b, 0x01, 0x32, 0x11, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x26, + 0x23, 0x22, 0x06, 0x07, 0x06, 0x71, 0x05, 0x10, 0x22, 0x36, 0x54, 0x39, 0x38, 0x54, 0x36, 0x22, + 0x11, 0x05, 0x14, 0x2c, 0x54, 0x3a, 0x03, 0x0a, 0x02, 0x05, 0x13, 0x05, 0x48, 0x66, 0x35, 0x17, + 0x64, 0x66, 0x0a, 0x26, 0x16, 0x80, 0x05, 0x13, 0x2c, 0x23, 0x09, 0x26, 0x3d, 0x3d, 0x0d, 0x0f, + 0x01, 0x57, 0x43, 0x5c, 0x6c, 0x47, 0x3e, 0x1e, 0x1e, 0x3e, 0x48, 0x6b, 0x5d, 0x42, 0x45, 0x73, + 0x68, 0x3f, 0x05, 0x01, 0x01, 0x37, 0x66, 0x79, 0x4e, 0xe8, 0x16, 0x02, 0x01, 0x00, 0x2e, 0x3a, + 0x4b, 0x5a, 0x34, 0x07, 0x02, 0x32, 0x36, 0x3e, 0x00, 0x01, 0x00, 0x90, 0xff, 0xf6, 0x01, 0xc8, + 0x03, 0x02, 0x00, 0x15, 0x00, 0x00, 0x13, 0x34, 0x3f, 0x01, 0x36, 0x3b, 0x01, 0x32, 0x16, 0x15, + 0x11, 0x14, 0x06, 0x22, 0x26, 0x35, 0x11, 0x07, 0x06, 0x23, 0x22, 0x26, 0x90, 0x0f, 0xb7, 0x0e, + 0x12, 0x20, 0x14, 0x1e, 0x1e, 0x28, 0x1e, 0x81, 0x0d, 0x14, 0x15, 0x1d, 0x02, 0x36, 0x17, 0x0c, + 0x9d, 0x0c, 0x1e, 0x14, 0xfd, 0x58, 0x14, 0x1e, 0x1d, 0x15, 0x02, 0x56, 0x6e, 0x0c, 0x1e, 0x00, + 0x00, 0x01, 0x00, 0x82, 0x00, 0x01, 0x02, 0x51, 0x03, 0x05, 0x00, 0x2f, 0x00, 0x00, 0x13, 0x34, + 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x03, 0x07, 0x0e, 0x03, 0x07, 0x21, 0x32, 0x16, + 0x14, 0x06, 0x23, 0x21, 0x22, 0x26, 0x3d, 0x01, 0x34, 0x37, 0x3e, 0x01, 0x37, 0x36, 0x37, 0x36, + 0x35, 0x34, 0x26, 0x23, 0x22, 0x07, 0x06, 0x23, 0x22, 0x26, 0x82, 0x15, 0x5c, 0x78, 0x61, 0x7f, + 0x1b, 0x21, 0x41, 0x23, 0x25, 0x28, 0x23, 0x31, 0x16, 0x02, 0x01, 0x2d, 0x15, 0x1d, 0x1e, 0x14, + 0xfe, 0xa0, 0x14, 0x1e, 0x0a, 0x12, 0x5f, 0x48, 0x62, 0x1a, 0x1b, 0x47, 0x35, 0x5d, 0x3d, 0x0c, + 0x11, 0x14, 0x1e, 0x02, 0x9e, 0x1c, 0x0e, 0x3d, 0x76, 0x5f, 0x26, 0x46, 0x2d, 0x37, 0x18, 0x17, + 0x19, 0x1a, 0x32, 0x3d, 0x2a, 0x1e, 0x28, 0x1e, 0x1e, 0x14, 0x15, 0x4f, 0x22, 0x3e, 0x60, 0x2e, + 0x3f, 0x23, 0x23, 0x26, 0x33, 0x3e, 0x2b, 0x09, 0x1e, 0x00, 0x00, 0x01, 0x00, 0x71, 0xff, 0xf3, + 0x02, 0x5c, 0x02, 0xf6, 0x00, 0x2d, 0x00, 0x00, 0x37, 0x34, 0x36, 0x33, 0x32, 0x17, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x26, 0x34, 0x3f, 0x01, 0x21, 0x22, 0x26, 0x35, + 0x34, 0x36, 0x33, 0x21, 0x32, 0x16, 0x1d, 0x01, 0x14, 0x0f, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x0e, + 0x01, 0x23, 0x22, 0x2e, 0x02, 0x71, 0x1e, 0x14, 0x07, 0x0c, 0x3f, 0x48, 0x4e, 0x69, 0x04, 0x77, + 0x55, 0x14, 0x1e, 0x0b, 0xb8, 0xfe, 0xe9, 0x14, 0x1e, 0x1d, 0x15, 0x01, 0x6b, 0x14, 0x1e, 0x0f, + 0x9f, 0x5a, 0x6d, 0x05, 0xa3, 0x77, 0x1d, 0x3b, 0x47, 0x2d, 0x45, 0x15, 0x1d, 0x04, 0x1c, 0x49, + 0x47, 0x09, 0x48, 0x48, 0x1e, 0x28, 0x0b, 0xc1, 0x1e, 0x14, 0x15, 0x1d, 0x1e, 0x14, 0x23, 0x12, + 0x0f, 0xa8, 0x17, 0x76, 0x5a, 0x0f, 0x6e, 0x81, 0x06, 0x0f, 0x23, 0x00, 0x00, 0x01, 0x00, 0x71, + 0xff, 0xf6, 0x02, 0x65, 0x03, 0x02, 0x00, 0x26, 0x00, 0x00, 0x37, 0x35, 0x34, 0x37, 0x13, 0x3e, + 0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x03, 0x33, 0x35, 0x34, 0x36, 0x32, 0x16, 0x1d, 0x01, + 0x33, 0x32, 0x16, 0x14, 0x06, 0x2b, 0x01, 0x15, 0x14, 0x06, 0x22, 0x26, 0x3d, 0x01, 0x23, 0x22, + 0x26, 0x71, 0x05, 0xd9, 0x05, 0x1a, 0x0e, 0x14, 0x1e, 0x05, 0xcc, 0xbd, 0x1e, 0x28, 0x1e, 0x35, + 0x15, 0x1d, 0x1e, 0x14, 0x35, 0x1e, 0x28, 0x1e, 0xf7, 0x14, 0x1e, 0xd6, 0x2b, 0x09, 0x0c, 0x01, + 0xcf, 0x0c, 0x11, 0x1e, 0x14, 0x0b, 0x0a, 0xfe, 0x4d, 0x74, 0x14, 0x1e, 0x1e, 0x14, 0x74, 0x1e, + 0x28, 0x1e, 0x7c, 0x14, 0x1e, 0x1e, 0x14, 0x7c, 0x1d, 0x00, 0x00, 0x01, 0x00, 0x8b, 0xff, 0xf3, + 0x02, 0x3d, 0x02, 0xf6, 0x00, 0x27, 0x00, 0x00, 0x36, 0x34, 0x36, 0x33, 0x32, 0x37, 0x36, 0x35, + 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x23, 0x22, 0x26, 0x3d, 0x01, 0x37, 0x3e, 0x01, 0x33, 0x21, + 0x32, 0x16, 0x14, 0x06, 0x2b, 0x01, 0x07, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, + 0x8b, 0x1e, 0x14, 0xce, 0x3d, 0x11, 0x21, 0x2e, 0x75, 0x21, 0x1f, 0x04, 0x14, 0x1e, 0x0e, 0x02, + 0x1c, 0x14, 0x01, 0x26, 0x15, 0x1d, 0x1e, 0x14, 0xf7, 0x08, 0x0f, 0x88, 0xa0, 0x55, 0x65, 0xc6, + 0x14, 0x10, 0x2a, 0x1d, 0x6c, 0x20, 0x1e, 0x46, 0x24, 0x32, 0x03, 0x1c, 0x13, 0x03, 0xfb, 0x14, + 0x1b, 0x1e, 0x28, 0x1e, 0x91, 0x82, 0x7e, 0x67, 0x4d, 0x5a, 0x00, 0x02, 0x00, 0x71, 0xff, 0xf3, + 0x02, 0x65, 0x03, 0x02, 0x00, 0x19, 0x00, 0x25, 0x00, 0x00, 0x37, 0x35, 0x34, 0x37, 0x3e, 0x02, + 0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x06, 0x07, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, + 0x06, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x71, + 0x46, 0x1c, 0x52, 0x38, 0x34, 0x0d, 0x17, 0x14, 0x1e, 0x0d, 0x76, 0x37, 0x1e, 0x20, 0x74, 0x86, + 0x8c, 0xdc, 0x89, 0x61, 0x52, 0x44, 0x43, 0x53, 0x4c, 0x4a, 0x48, 0x4e, 0xe5, 0x0c, 0x7e, 0x74, + 0x2f, 0x69, 0x3f, 0x39, 0x0f, 0x1e, 0x14, 0x13, 0x0f, 0x80, 0x4d, 0x06, 0x8c, 0x76, 0x6b, 0x87, + 0x85, 0x6d, 0x42, 0x4c, 0x4d, 0x41, 0x4c, 0x52, 0x54, 0x00, 0x00, 0x01, 0x00, 0x71, 0xff, 0xf6, + 0x02, 0x65, 0x02, 0xf6, 0x00, 0x1d, 0x00, 0x00, 0x13, 0x34, 0x36, 0x33, 0x21, 0x32, 0x16, 0x15, + 0x14, 0x07, 0x0e, 0x01, 0x07, 0x06, 0x15, 0x14, 0x06, 0x22, 0x26, 0x35, 0x34, 0x37, 0x3e, 0x01, + 0x37, 0x36, 0x37, 0x21, 0x22, 0x26, 0x71, 0x1d, 0x15, 0x01, 0x90, 0x15, 0x1d, 0x3c, 0x12, 0x6a, + 0x17, 0x43, 0x1e, 0x28, 0x1e, 0x50, 0x18, 0x6e, 0x11, 0x19, 0x08, 0xfe, 0xac, 0x14, 0x1e, 0x02, + 0xc4, 0x15, 0x1d, 0x1e, 0x14, 0x4d, 0x58, 0x1b, 0x82, 0x27, 0x76, 0xbd, 0x14, 0x1e, 0x1d, 0x15, + 0xd8, 0x8c, 0x2a, 0x89, 0x19, 0x26, 0x14, 0x1e, 0x00, 0x03, 0x00, 0x71, 0xff, 0xf3, 0x02, 0x65, + 0x03, 0x05, 0x00, 0x15, 0x00, 0x20, 0x00, 0x2f, 0x00, 0x00, 0x37, 0x34, 0x37, 0x26, 0x35, 0x34, + 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x16, 0x15, 0x14, 0x06, 0x07, 0x23, 0x22, 0x26, + 0x37, 0x14, 0x16, 0x3b, 0x01, 0x32, 0x36, 0x35, 0x34, 0x27, 0x06, 0x13, 0x14, 0x1e, 0x02, 0x17, + 0x3e, 0x03, 0x35, 0x34, 0x26, 0x22, 0x06, 0x71, 0x91, 0x6f, 0x84, 0x54, 0x53, 0x85, 0x3a, 0x35, + 0x91, 0x77, 0x57, 0x2c, 0x6d, 0x8d, 0x63, 0x56, 0x41, 0x15, 0x35, 0x4c, 0x94, 0x99, 0x23, 0x12, + 0x29, 0x1c, 0x1d, 0x1d, 0x1d, 0x28, 0x12, 0x4b, 0x52, 0x4b, 0xc8, 0x7c, 0x63, 0x43, 0x6e, 0x4c, + 0x61, 0x62, 0x4b, 0x3d, 0x53, 0x21, 0x63, 0x7c, 0x51, 0x7d, 0x07, 0x77, 0x5e, 0x35, 0x3c, 0x43, + 0x2e, 0x5c, 0x4d, 0x4e, 0x01, 0x35, 0x18, 0x24, 0x1e, 0x10, 0x0d, 0x0d, 0x0f, 0x1e, 0x25, 0x18, + 0x23, 0x26, 0x26, 0x00, 0x00, 0x02, 0x00, 0x71, 0xff, 0xf6, 0x02, 0x65, 0x03, 0x05, 0x00, 0x17, + 0x00, 0x24, 0x00, 0x00, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x06, 0x07, + 0x06, 0x23, 0x22, 0x26, 0x34, 0x37, 0x36, 0x37, 0x06, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, + 0x32, 0x37, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x71, 0x92, 0x68, 0x6b, 0x8f, 0x2a, 0x27, + 0x55, 0x7d, 0x0f, 0x12, 0x14, 0x1e, 0x10, 0x63, 0x46, 0x1b, 0x22, 0x70, 0x8a, 0x64, 0x51, 0x45, + 0x78, 0x14, 0x0a, 0x52, 0x44, 0x3f, 0x57, 0x02, 0x02, 0x6a, 0x99, 0x8f, 0x74, 0x48, 0x73, 0x43, + 0x91, 0x70, 0x0d, 0x1d, 0x2a, 0x10, 0x5a, 0x6e, 0x04, 0x8a, 0x67, 0x3f, 0x4e, 0x45, 0x21, 0x27, + 0x49, 0x56, 0x5e, 0x00, 0x00, 0x01, 0x00, 0x71, 0x00, 0x40, 0x02, 0x65, 0x02, 0xb8, 0x00, 0x14, + 0x00, 0x00, 0x12, 0x34, 0x37, 0x01, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x0d, 0x01, 0x16, + 0x15, 0x14, 0x06, 0x23, 0x22, 0x27, 0x01, 0x71, 0x0d, 0x01, 0x99, 0x0c, 0x10, 0x14, 0x1e, 0x0f, + 0xfe, 0xa7, 0x01, 0x59, 0x0f, 0x1e, 0x14, 0x10, 0x0c, 0xfe, 0x67, 0x01, 0x65, 0x2e, 0x0d, 0x01, + 0x0f, 0x09, 0x1e, 0x14, 0x1a, 0x0a, 0xe6, 0xe6, 0x0f, 0x15, 0x14, 0x1e, 0x09, 0x01, 0x0f, 0x00, + 0x00, 0x01, 0x00, 0x71, 0x00, 0x40, 0x02, 0x65, 0x02, 0xb8, 0x00, 0x15, 0x00, 0x00, 0x37, 0x34, + 0x37, 0x2d, 0x01, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x01, 0x16, 0x15, 0x14, 0x07, 0x01, + 0x06, 0x23, 0x22, 0x26, 0x71, 0x0e, 0x01, 0x59, 0xfe, 0xa7, 0x0e, 0x1e, 0x14, 0x0f, 0x0d, 0x01, + 0x98, 0x0e, 0x0e, 0xfe, 0x68, 0x0d, 0x0f, 0x14, 0x1e, 0x72, 0x14, 0x10, 0xe6, 0xe6, 0x10, 0x14, + 0x15, 0x1d, 0x09, 0xfe, 0xf1, 0x0d, 0x17, 0x1b, 0x09, 0xfe, 0xf1, 0x09, 0x1d, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x57, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x6a, 0x00, 0xaf, 0x00, 0xf0, 0x01, 0x27, 0x01, 0x5f, + 0x01, 0x97, 0x01, 0xc6, 0x02, 0x0c, 0x02, 0x44, 0x02, 0x6a, 0x02, 0x91, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0xb6, 0x0c, 0xeb, 0x74, 0x5f, 0x0f, 0x3c, 0xf5, 0x00, 0x0b, 0x03, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0xcc, 0x8a, 0x33, 0x53, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x8a, 0x33, 0x53, + 0xff, 0xa9, 0xfe, 0xb0, 0x03, 0x10, 0x03, 0xaa, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0xd3, 0x00, 0x00, 0x00, 0x71, 0x00, 0x90, 0x00, 0x82, 0x00, 0x71, + 0x00, 0x71, 0x00, 0x8b, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, + 0x00, 0x01, 0x00, 0x00, 0x03, 0xaa, 0xfe, 0xb0, 0x00, 0x5a, 0x02, 0xd3, 0xff, 0xa9, 0xff, 0xc3, + 0x03, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0xd3, 0x01, 0x90, 0x00, 0x05, 0x00, 0x00, 0x02, 0x8a, + 0x02, 0xbc, 0x00, 0x00, 0x00, 0x8c, 0x02, 0x8a, 0x02, 0xbc, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x31, + 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x05, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x66, + 0x45, 0x64, 0x00, 0x40, 0x00, 0x30, 0x00, 0x3e, 0x03, 0x20, 0xff, 0x38, 0x00, 0x5a, 0x03, 0xaa, + 0x01, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x39, + 0x00, 0x3c, 0x00, 0x3e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x30, 0x00, 0x3c, 0x00, 0x3e, 0xff, 0xff, + 0xff, 0xd1, 0xff, 0xcf, 0xff, 0xce, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x00, 0x00, 0x86, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x01, 0x00, 0x08, 0x00, 0x86, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x8e, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, + 0x00, 0x03, 0x00, 0x52, 0x00, 0x9c, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x1a, + 0x00, 0xee, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x05, 0x00, 0x14, 0x01, 0x08, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, 0x86, 0x00, 0x4d, 0x00, 0x61, 0x00, 0x74, + 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x77, 0x00, 0x20, 0x00, 0x53, 0x00, 0x6b, 0x00, 0x61, + 0x00, 0x6c, 0x00, 0x61, 0x00, 0x20, 0x00, 0x28, 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, + 0x00, 0x29, 0x00, 0x3b, 0x00, 0x20, 0x00, 0x62, 0x00, 0x61, 0x00, 0x73, 0x00, 0x65, 0x00, 0x64, + 0x00, 0x20, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x65, + 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x4e, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x62, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, 0x53, 0x00, 0x63, 0x00, 0x68, 0x00, 0x77, + 0x00, 0x61, 0x00, 0x72, 0x00, 0x7a, 0x00, 0x20, 0x00, 0x28, 0x00, 0x31, 0x00, 0x39, 0x00, 0x38, + 0x00, 0x36, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x29, + 0x00, 0x4f, 0x00, 0x43, 0x00, 0x52, 0x00, 0x42, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, + 0x00, 0x6c, 0x00, 0x61, 0x00, 0x72, 0x00, 0x46, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x46, + 0x00, 0x6f, 0x00, 0x72, 0x00, 0x67, 0x00, 0x65, 0x00, 0x20, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x30, + 0x00, 0x20, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x4f, 0x00, 0x43, 0x00, 0x52, 0x00, 0x20, 0x00, 0x42, + 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x72, + 0x00, 0x20, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x32, 0x00, 0x37, 0x00, 0x2d, 0x00, 0x39, 0x00, 0x2d, + 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x4f, 0x00, 0x43, 0x00, 0x52, 0x00, 0x20, + 0x00, 0x42, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x61, + 0x00, 0x72, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x20, 0x00, 0x32, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x1c, + 0x00, 0x1e, 0x00, 0x01, 0x44, 0x46, 0x4c, 0x54, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x26, + 0x00, 0x28, 0x00, 0x02, 0x44, 0x46, 0x4c, 0x54, 0x00, 0x0e, 0x6c, 0x61, 0x74, 0x6e, 0x00, 0x18, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; + +/* vim: set ts=4 sw=4 et : */ +#endif /* Z_UPCEAN_TTF_H */ diff --git a/backend/fonts/upcean_woff2.h b/backend/fonts/upcean_woff2.h new file mode 100644 index 00000000..ae1836f6 --- /dev/null +++ b/backend/fonts/upcean_woff2.h @@ -0,0 +1,77 @@ +/* ocrb_woff2.h - OCR-B (EAN/UPC subset) as base 64 string */ +/* + libzint - the open source barcode library + Copyright (C) 2023 Robin Stuart + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the project nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + */ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#ifndef Z_UPCEAN_WOFF2_H +#define Z_UPCEAN_WOFF2_H + +/* Adapted from OCR-B font version 0.2 Matthew Skala + * https://tsukurimashou.osdn.jp/ocr.php.en + * + * Copyright Matthew Skala (2011); based on code by Norbert Schwarz (1986, 2011) + * + * "The version in this package descends from a set of Metafont + * definitions by Norbert Schwarz of Ruhr-Universitaet Bochum, + * bearing dates ranging from 1986 to 2010. He originally + * distributed it under a "non-commercial use only" + * restriction but has since released it for unrestricted use + * and distribution. See the README file for more details." + * + * The README states (http://mirrors.ctan.org/fonts/ocr-b.zip) + * + * "As far as the digitization in METAFONT input which I have + * developed, you may freely use, modify, and/or distribute any of + * these files or the resulting fonts, without limitation. A previous + * release of ocr-b only granted rights for non-commercial use; that + * restriction is now lifted." + */ +static const char upcean_woff2[1905] = + "d09GMgABAAAAAAWUAA4AAAAACWwAAAVAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbIBwqBlYARBEICoosiEMLHAABNgIkAxwEIAWCdgcgG3A" + "HUZQNToDsZ0Lmpodml0MocYiJWq3MrpVLZEJ+vN3Pv5v+uQSv2A20nhmlog7VlNREyOZ0r49OVZEJPLVfUR54bvk7Los0CqTnCfSi2iEa0i67dW" + "964kDG5b9/ecD9z/18fqPNwoZRuAHOhvii7ruLDKo8XiYbDftHU5QXfpIPyF9jbUb2MTDyZycgAJasIQ4EseR/EICYK3eoSVfQIMQFAP8DAIDSy" + "8hx1rMeage6wBFgoBvDB9LiAc4UHgCsLrPoC9W0EnDChcgR+dP8Pq0BEgWKj6g5Ull0JGhpggOEqscICLhYA0BION+IEiv+Es7AeuV899KL7QFR" + "GCpolRPO03YAbQGnpme53yJDTOskRg96rjuWBPp7yp0t3SUWNo5WpKScNUaWb40WM/rXeiWoddapmnVizQGxxlBl1MXrLeajBGLV6J3wDeOhV9S" + "ualbKbNR3HAau+pDmCOLRrOIRFzxXoLm3XNNdirx06dUpV6tljfqQ2HIrYj3OGhljwEnEGkJJgUYZ9qjmJR+H5Bxj5Y+wUoaN8imRbQBqTOv1AD" + "rddOyB4QYdk5ZvhOHwpK/EAqBVtFg9IIYzADIk44q2zFHExt8RaxYWEGK2rkYjSF/NS+vcSQaxzEnj26KNalJHHzx3VWNg1PoGjZcJ6qqvQbEXD" + "ul8dQcwInmfky6Wpy8xBsQ+V1JkQVosyuj7VLpy9fHL+xcdPHj1wdRGPCbSFq57asnI7BMfFmR26qWPrLT5RLGa2vUyOY5Kmhi9UF+3Ab0WNMp+" + "3CB6QY8qhVtu0z4vvbLILSoy/Rcr52XYtnErktMc+nyai+LXEVoOj+JlNoaHNkpG6pU/NJJzMoka/KO52falZ2WsLO72/V/h0zDpzxe2fbSnsBk" + "fwma5iVSpO59i8jmw212V5bEjtVOD1TLnNMvEcM/0ES9U4eRHPpebcQ02YzJvzq2qOsOvNn7NHllIelxY5ZNLdtgMPamkCQvO/pyZ25JJpIsyhz" + "KKsVl+5OItKUfsGdkevniB/W87DpZKOgbLbLide9TDbvvTre9Aj95HlPPuRY7WernJIuvpmesDQqQaGAjbMRA20XvzxO/YBBobbxN+Edtu455Ov" + "B6c9xUXf3QgrP5yuIJl2Kt+F2htVu5kp5ppRUPpAwzfWE6l9d8oaJmKfHGFn3J4MTgdrtBTA8tmhtpnlptWLq3pSC7ISU0pVCQpcgqyM5VFcJd8" + "RmrJ51gZwzi3sk3Jg9ffZ8+7vJnRzpXCZf30Qz/74YS2riu5S7Gkhi5aWpsTF1WYqK2bKBiaUPF9O1cP1VWGFcckkWE5yf4VaxWblPNDHR0+ufn" + "s2YtJ7Lgge1Fh8tmA2uY2tbTPzg5kevXJkmntRPcv9tjk/X9daVrn3vk9q1bVNyXkK9NGHFK1nlkFxakJqkqd0NP5P9tkvSmxl3X+sSTH9xvZeG" + "0vjet61vhzY/vnmDRhm0cbrZ9Sl3d56WaDn7+ICsCjqsbibdU2sX+hRfQDAM+mkCL/hMOfisroCPidGAGyT85klYVvCbmjApoDP+cQgF5ai3N1r" + "xneYEC9FQZP4pjMOJwouk2gDAHFBYDloDUiQsuNHNZmjYRC24xczn4z8uBAiHyx36FUa8CAFo2GUYq0q9WhFkUuWKAgQbzEoNSp1a9RA0q3LpR6" + "3Ro0zsOoD7l96GuhMceBjbT1WgyTKjEGcnlzlEjhfFEb2+ZJUShZYaPZoA4Y0w/AgRL65rARB3/TSIlGAWXOo0yWmg4WwU8Uv0OWDYZRdd1Uv9Z" + "HQXBqJgAAgewAAAAA"; + +/* vim: set ts=4 sw=4 et : */ +#endif /* Z_UPCEAN_WOFF2_H */ diff --git a/backend/gridmtx.c b/backend/gridmtx.c index 932fe51d..eeb49a81 100644 --- a/backend/gridmtx.c +++ b/backend/gridmtx.c @@ -1,7 +1,7 @@ /* gridmtx.c - Grid Matrix */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -467,17 +467,17 @@ static int gm_encode(unsigned int ddata[], const int length, char binary[], cons } if (debug_print) { switch (next_mode) { - case GM_CHINESE: printf("CHIN "); + case GM_CHINESE: fputs("CHIN ", stdout); break; - case GM_NUMBER: printf("NUMB "); + case GM_NUMBER: fputs("NUMB ", stdout); break; - case GM_LOWER: printf("LOWR "); + case GM_LOWER: fputs("LOWR ", stdout); break; - case GM_UPPER: printf("UPPR "); + case GM_UPPER: fputs("UPPR ", stdout); break; - case GM_MIXED: printf("MIXD "); + case GM_MIXED: fputs("MIXD ", stdout); break; - case GM_BYTE: printf("BYTE "); + case GM_BYTE: fputs("BYTE ", stdout); break; } } diff --git a/backend/hanxin.c b/backend/hanxin.c index 17da3c7e..ead83d4c 100644 --- a/backend/hanxin.c +++ b/backend/hanxin.c @@ -1,7 +1,7 @@ /* hanxin.c - Han Xin Code */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -548,7 +548,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned bp = bin_append_posn(1, 4, binary, bp); if (debug_print) { - printf("Numeric\n"); + fputs("Numeric\n", stdout); } count = 0; /* Suppress gcc -Wmaybe-uninitialized */ @@ -604,7 +604,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned bp = bin_append_posn(2, 4, binary, bp); if (debug_print) { - printf("Text\n"); + fputs("Text\n", stdout); } submode = 1; @@ -618,7 +618,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned bp = bin_append_posn(62, 6, binary, bp); submode = hx_getsubmode(ddata[i + position]); if (debug_print) { - printf("SWITCH "); + fputs("SWITCH ", stdout); } } @@ -640,7 +640,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned bp = bin_append_posn(63, 6, binary, bp); if (debug_print) { - printf("\n"); + fputs("\n", stdout); } break; case 'b': @@ -670,7 +670,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned } if (debug_print) { - printf("\n"); + fputs("\n", stdout); } break; case '1': @@ -766,7 +766,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned bp = bin_append_posn(6, 4, binary, bp); if (debug_print) { - printf("Double byte\n"); + fputs("Double byte\n", stdout); } i = 0; @@ -795,13 +795,13 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned - confirmed by Wang Yi */ if (debug_print) { - printf("\n"); + fputc('\n', stdout); } break; case 'f': /* Four-byte encoding */ if (debug_print) { - printf("Four byte\n"); + fputs("Four byte\n", stdout); } i = 0; @@ -830,7 +830,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned /* No terminator */ if (debug_print) { - printf("\n"); + fputc('\n', stdout); } break; } @@ -1454,7 +1454,7 @@ static void hx_apply_bitmask(unsigned char *grid, const int size, const int vers if (!user_mask) { for (pattern = 0; pattern < 4; pattern++) printf(" %d:%d", pattern, penalty[pattern]); } - printf("\n"); + fputc('\n', stdout); } /* Apply mask */ @@ -1645,11 +1645,11 @@ INTERNAL int hanxin(struct zint_symbol *symbol, struct zint_seg segs[], const in } if (debug_print) { - printf("Datastream (%d): ", data_codewords); + printf("Datastream (%d):", data_codewords); for (i = 0; i < data_codewords; i++) { - printf("%.2x ", datastream[i]); + printf(" %.2x", datastream[i]); } - printf("\n"); + fputc('\n', stdout); } #ifdef ZINT_TEST if (symbol->debug & ZINT_DEBUG_TEST) debug_test_codeword_dump(symbol, datastream, data_codewords); @@ -1660,11 +1660,11 @@ INTERNAL int hanxin(struct zint_symbol *symbol, struct zint_seg segs[], const in hx_add_ecc(fullstream, datastream, data_codewords, version, ecc_level); if (debug_print) { - printf("Fullstream (%d): ", hx_total_codewords[version - 1]); + printf("Fullstream (%d):", hx_total_codewords[version - 1]); for (i = 0; i < hx_total_codewords[version - 1]; i++) { - printf("%.2x ", fullstream[i]); + printf(" %.2x", fullstream[i]); } - printf("\n"); + fputc('\n', stdout); } hx_make_picket_fence(fullstream, picket_fence, hx_total_codewords[version - 1]); diff --git a/backend/imail.c b/backend/imail.c index 421476c3..01b5a8b6 100644 --- a/backend/imail.c +++ b/backend/imail.c @@ -1,7 +1,7 @@ /* imail.c - Handles Intelligent Mail (aka OneCode) for USPS */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -248,8 +248,8 @@ INTERNAL int usps_imail(struct zint_symbol *symbol, unsigned char source[], int int error_number = 0; int i, j, read; char zip[35], tracker[35], temp[2]; - large_int accum; - large_int byte_array_reg; + large_uint accum; + large_uint byte_array_reg; unsigned char byte_array[13]; unsigned short usps_crc; unsigned int codeword[10]; diff --git a/backend/large.c b/backend/large.c index 6959dc85..4b011cbc 100644 --- a/backend/large.c +++ b/backend/large.c @@ -1,7 +1,7 @@ /* large.c - Handles binary manipulation of large numbers */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -52,7 +52,7 @@ #define MASK32 0xFFFFFFFF /* Convert decimal string `s` of (at most) length `length` to 64-bit and place in 128-bit `t` */ -INTERNAL void large_load_str_u64(large_int *t, const unsigned char *s, const int length) { +INTERNAL void large_load_str_u64(large_uint *t, const unsigned char *s, const int length) { uint64_t val = 0; const unsigned char *const se = s + length; for (; s < se && z_isdigit(*s); s++) { @@ -64,13 +64,13 @@ INTERNAL void large_load_str_u64(large_int *t, const unsigned char *s, const int } /* Add 128-bit `s` to 128-bit `t` */ -INTERNAL void large_add(large_int *t, const large_int *s) { +INTERNAL void large_add(large_uint *t, const large_uint *s) { t->lo += s->lo; t->hi += s->hi + (t->lo < s->lo); } /* Add 64-bit `s` to 128-bit `t` */ -INTERNAL void large_add_u64(large_int *t, const uint64_t s) { +INTERNAL void large_add_u64(large_uint *t, const uint64_t s) { t->lo += s; if (t->lo < s) { t->hi++; @@ -78,7 +78,7 @@ INTERNAL void large_add_u64(large_int *t, const uint64_t s) { } /* Subtract 64-bit `s` from 128-bit `t` */ -INTERNAL void large_sub_u64(large_int *t, const uint64_t s) { +INTERNAL void large_sub_u64(large_uint *t, const uint64_t s) { uint64_t r = t->lo - s; if (r > t->lo) { t->hi--; @@ -107,7 +107,7 @@ INTERNAL void large_sub_u64(large_int *t, const uint64_t s) { * p10 * p11 + k10 */ -INTERNAL void large_mul_u64(large_int *t, const uint64_t s) { +INTERNAL void large_mul_u64(large_uint *t, const uint64_t s) { uint64_t thi = t->hi; uint64_t tlo0 = t->lo & MASK32; uint64_t tlo1 = t->lo >> 32; @@ -149,7 +149,7 @@ INTERNAL int clz_u64_test(uint64_t x) { /* Divide 128-bit dividend `t` by 64-bit divisor `v`, returning 64-bit remainder * See Jacob `divmod128by128/64()` and Warren Section 9–2 (divmu64.c.txt) * Note digits are 32-bit parts */ -INTERNAL uint64_t large_div_u64(large_int *t, uint64_t v) { +INTERNAL uint64_t large_div_u64(large_uint *t, uint64_t v) { const uint64_t b = 0x100000000; /* Number base (2**32) */ uint64_t qhi = 0; /* High digit of returned quotient */ @@ -241,7 +241,7 @@ INTERNAL uint64_t large_div_u64(large_int *t, uint64_t v) { } /* Unset a bit (zero-based) */ -INTERNAL void large_unset_bit(large_int *t, const int bit) { +INTERNAL void large_unset_bit(large_uint *t, const int bit) { if (bit < 64) { t->lo &= ~(((uint64_t) 1) << bit); } else if (bit < 128) { @@ -249,8 +249,8 @@ INTERNAL void large_unset_bit(large_int *t, const int bit) { } } -/* Output large_int into an unsigned int array of size `size`, each element containing `bits` bits */ -INTERNAL void large_uint_array(const large_int *t, unsigned int *uint_array, const int size, int bits) { +/* Output large_uint into an unsigned int array of size `size`, each element containing `bits` bits */ +INTERNAL void large_uint_array(const large_uint *t, unsigned int *uint_array, const int size, int bits) { int i, j; uint64_t mask; if (bits <= 0) { @@ -281,7 +281,7 @@ INTERNAL void large_uint_array(const large_int *t, unsigned int *uint_array, con } /* As `large_uint_array()` above, except output to unsigned char array */ -INTERNAL void large_uchar_array(const large_int *t, unsigned char *uchar_array, const int size, int bits) { +INTERNAL void large_uchar_array(const large_uint *t, unsigned char *uchar_array, const int size, int bits) { int i; unsigned int *uint_array = (unsigned int *) z_alloca(sizeof(unsigned int) * (size ? size : 1)); @@ -292,8 +292,8 @@ INTERNAL void large_uchar_array(const large_int *t, unsigned char *uchar_array, } } -/* Format large_int into buffer, which should be at least 35 chars in size */ -INTERNAL char *large_dump(const large_int *t, char *buf) { +/* Format large_uint into buffer, which should be at least 35 chars in size */ +INTERNAL char *large_dump(const large_uint *t, char *buf) { unsigned int tlo1 = (unsigned int) (large_lo(t) >> 32); unsigned int tlo0 = (unsigned int) (large_lo(t) & MASK32); unsigned int thi1 = (unsigned int) (large_hi(t) >> 32); @@ -311,8 +311,8 @@ INTERNAL char *large_dump(const large_int *t, char *buf) { return buf; } -/* Output formatted large_int to stdout */ -INTERNAL void large_print(const large_int *t) { +/* Output formatted large_uint to stdout */ +INTERNAL void large_print(const large_uint *t) { char buf[35]; /* 2 (0x) + 32 (hex) + 1 */ puts(large_dump(t, buf)); diff --git a/backend/large.h b/backend/large.h index 5a0d1852..b28c08d8 100644 --- a/backend/large.h +++ b/backend/large.h @@ -2,7 +2,7 @@ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -38,7 +38,7 @@ extern "C" { #endif /* __cplusplus */ -typedef struct { uint64_t lo; uint64_t hi; } large_int; +typedef struct { uint64_t lo; uint64_t hi; } large_uint; #define large_lo(s) ((s)->lo) #define large_hi(s) ((s)->hi) @@ -49,24 +49,35 @@ typedef struct { uint64_t lo; uint64_t hi; } large_int; /* Set 128-bit `t` from 64-bit `s` */ #define large_load_u64(t, s) do { (t)->lo = (s); (t)->hi = 0; } while (0) -INTERNAL void large_load_str_u64(large_int *t, const unsigned char *s, const int length); +/* Convert decimal string `s` of (at most) length `length` to 64-bit and place in 128-bit `t` */ +INTERNAL void large_load_str_u64(large_uint *t, const unsigned char *s, const int length); -INTERNAL void large_add(large_int *t, const large_int *s); -INTERNAL void large_add_u64(large_int *t, const uint64_t s); +/* Add 128-bit `s` to 128-bit `t` */ +INTERNAL void large_add(large_uint *t, const large_uint *s); +/* Add 64-bit `s` to 128-bit `t` */ +INTERNAL void large_add_u64(large_uint *t, const uint64_t s); -INTERNAL void large_sub_u64(large_int *t, const uint64_t s); +/* Subtract 64-bit `s` from 128-bit `t` */ +INTERNAL void large_sub_u64(large_uint *t, const uint64_t s); -INTERNAL void large_mul_u64(large_int *t, const uint64_t s); +/* Multiply 128-bit `t` by 64-bit `s` */ +INTERNAL void large_mul_u64(large_uint *t, const uint64_t s); -INTERNAL uint64_t large_div_u64(large_int *t, uint64_t v); +/* Divide 128-bit dividend `t` by 64-bit divisor `v`, returning 64-bit remainder */ +INTERNAL uint64_t large_div_u64(large_uint *t, uint64_t v); -INTERNAL void large_unset_bit(large_int *t, const int bit); +/* Unset a bit (zero-based) */ +INTERNAL void large_unset_bit(large_uint *t, const int bit); -INTERNAL void large_uint_array(const large_int *t, unsigned int *uint_array, const int size, int bits); -INTERNAL void large_uchar_array(const large_int *t, unsigned char *uchar_array, const int size, int bits); +/* Output large_uint into an unsigned int array of size `size`, each element containing `bits` bits */ +INTERNAL void large_uint_array(const large_uint *t, unsigned int *uint_array, const int size, int bits); +/* As `large_uint_array()` above, except output to unsigned char array */ +INTERNAL void large_uchar_array(const large_uint *t, unsigned char *uchar_array, const int size, int bits); -INTERNAL char *large_dump(const large_int *t, char *buf); -INTERNAL void large_print(const large_int *t); +/* Format large_uint into buffer, which should be at least 35 chars in size */ +INTERNAL char *large_dump(const large_uint *t, char *buf); +/* Output formatted large_uint to stdout */ +INTERNAL void large_print(const large_uint *t); #ifdef __cplusplus } diff --git a/backend/library.c b/backend/library.c index 96c4b74c..2fdff708 100644 --- a/backend/library.c +++ b/backend/library.c @@ -70,7 +70,6 @@ struct zint_symbol *ZBarcode_Create(void) { #endif symbol->option_1 = -1; symbol->show_hrt = 1; /* Show human readable text */ - symbol->fontsize = 8; symbol->input_mode = DATA_MODE; symbol->eci = 0; /* Default 0 uses ECI 3 */ symbol->dot_size = 4.0f / 5.0f; @@ -297,7 +296,7 @@ static int dump_plot(struct zint_symbol *symbol) { byt = byt << (4 - (symbol->width % 4)); fputc(hex[byt], f); } - fputs("\n", f); + fputc('\n', f); space = 0; } @@ -858,7 +857,7 @@ INTERNAL int escape_char_process_test(struct zint_symbol *symbol, unsigned char } #endif -/* Encode a barcode. If `length` is 0, `source` must be NUL-terminated. */ +/* Encode a barcode. If `length` is 0, `source` must be NUL-terminated */ int ZBarcode_Encode(struct zint_symbol *symbol, const unsigned char *source, int length) { struct zint_seg segs[1]; diff --git a/backend/mailmark.c b/backend/mailmark.c index 1339a120..683b152e 100644 --- a/backend/mailmark.c +++ b/backend/mailmark.c @@ -1,7 +1,7 @@ /* mailmark.c - Royal Mail 4-state and 2D Mailmark barcodes */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -105,7 +105,7 @@ static int mailmark_verify_character(char input, char type) { } } -static int mailmark_verify_postcode(const char postcode[10], int* p_postcode_type) { +static int mailmark_verify_postcode(const char postcode[10], int *p_postcode_type) { int postcode_type; /* Detect postcode type */ @@ -179,9 +179,9 @@ INTERNAL int mailmark_4s(struct zint_symbol *symbol, unsigned char source[], int unsigned int item_id; char postcode[10]; int postcode_type; - large_int destination_postcode; - large_int b; - large_int cdv; + large_uint destination_postcode; + large_uint b; + large_uint cdv; unsigned char data[26]; int data_top, data_step; unsigned char check[7]; @@ -382,7 +382,7 @@ INTERNAL int mailmark_4s(struct zint_symbol *symbol, unsigned char source[], int if (symbol->debug & ZINT_DEBUG_PRINT) { printf("DPC type %d\n", postcode_type); - printf("CDV: "); + fputs("CDV: ", stdout); large_print(&cdv); } @@ -417,11 +417,11 @@ INTERNAL int mailmark_4s(struct zint_symbol *symbol, unsigned char source[], int } if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Codewords: "); + fputs("Codewords:", stdout); for (i = 0; i <= data_top + check_count; i++) { - printf("%d ", (int) data[i]); + printf(" %d", (int) data[i]); } - printf("\n"); + fputc('\n', stdout); } /* Conversion from Data Numbers and Check Numbers to Data Symbols and Check Symbols */ diff --git a/backend/maxicode.c b/backend/maxicode.c index b49e4c66..1989ecfc 100644 --- a/backend/maxicode.c +++ b/backend/maxicode.c @@ -1,7 +1,7 @@ /* maxicode.c - Handles MaxiCode */ /* libzint - the open source barcode library - Copyright (C) 2010-2022 Robin Stuart + Copyright (C) 2010-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -327,33 +327,33 @@ static int maxi_text_process(unsigned char set[144], unsigned char character[144 character[sp + i] = 63; /* Set B Latch A */ current_set = 1; i += 3; /* Next 3 Set A so skip over */ - if (debug_print) printf("LCHA "); + if (debug_print) fputs("LCHA ", stdout); } else { /* 3 Shift A */ maxi_bump(set, character, sp + i, &length); character[sp + i] = 57; /* Set B triple shift A */ i += 2; /* Next 2 Set A so skip over */ - if (debug_print) printf("3SHA "); + if (debug_print) fputs("3SHA ", stdout); } } else { /* 2 Shift A */ maxi_bump(set, character, sp + i, &length); character[sp + i] = 56; /* Set B double shift A */ i++; /* Next Set A so skip over */ - if (debug_print) printf("2SHA "); + if (debug_print) fputs("2SHA ", stdout); } } else { /* Shift A */ maxi_bump(set, character, sp + i, &length); character[sp + i] = 59; /* Set A Shift B */ - if (debug_print) printf("SHA "); + if (debug_print) fputs("SHA ", stdout); } } else { /* All sets other than B only have latch */ /* Latch A */ maxi_bump(set, character, sp + i, &length); character[sp + i] = 58; /* Sets C,D,E Latch A */ current_set = 1; - if (debug_print) printf("LCHA "); + if (debug_print) fputs("LCHA ", stdout); } break; case 2: /* Set B */ @@ -363,12 +363,12 @@ static int maxi_text_process(unsigned char set[144], unsigned char character[144 maxi_bump(set, character, sp + i, &length); character[sp + i] = 63; /* Sets A,C,D,E Latch B */ current_set = 2; - if (debug_print) printf("LCHB "); + if (debug_print) fputs("LCHB ", stdout); } else { /* Only available from Set A */ /* Shift B */ maxi_bump(set, character, sp + i, &length); character[sp + i] = 59; /* Set B Shift A */ - if (debug_print) printf("SHB "); + if (debug_print) fputs("SHB ", stdout); } break; case 3: /* Set C */ @@ -408,7 +408,7 @@ static int maxi_text_process(unsigned char set[144], unsigned char character[144 i++; } while (sp + i < 144); - if (debug_print) printf("\n"); + if (debug_print) fputc('\n', stdout); /* Number compression has not been forgotten! - It's handled below */ i = 0; @@ -685,9 +685,9 @@ INTERNAL int maxicode(struct zint_symbol *symbol, struct zint_seg segs[], const maxi_do_secondary_chk_odd(maxi_codeword, eclen / 2); /* do error correction of odd */ if (debug_print) { - printf("Codewords:"); + fputs("Codewords:", stdout); for (i = 0; i < 144; i++) printf(" %d", maxi_codeword[i]); - printf("\n"); + fputc('\n', stdout); } #ifdef ZINT_TEST if (symbol->debug & ZINT_DEBUG_TEST) { diff --git a/backend/output.c b/backend/output.c index 98ca5ed4..89921069 100644 --- a/backend/output.c +++ b/backend/output.c @@ -190,7 +190,7 @@ INTERNAL int out_colour_get_cmyk(const char *colour, int *cyan, int *magenta, in } /* Return minimum quiet zones for each symbology */ -static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text, +static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text, const int comp_xoffset, float *left, float *right, float *top, float *bottom) { int done = 0; @@ -235,33 +235,39 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text case BARCODE_ISBNX: /* GS1 General Specifications 21.0.1 Section 5.2.3.4 */ switch (ustrlen(symbol->text)) { - case 13: /* EAN-13 */ + case 13: /* EAN-13/ISBN */ if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { - *left = 11.0f; - *right = 7.0f; + *left = comp_xoffset >= 10 ? 1.0f : 11.0f - comp_xoffset; /* Need at least 1X for CC-A/B */ + *right = 7.0f - (comp_xoffset != 0); } else if (!hide_text) { - *left = 11.0f; /* Need for outside left digit */ + *left = comp_xoffset >= 10 ? 1.0f : 11.0f - comp_xoffset; /* Need for outside left digit */ } break; - case 16: /* EAN-13/ISBN + 2 digit addon */ - case 19: /* EAN-13/ISBN + 5 digit addon */ + case 16: /* EAN-13/ISBN + 2 digit add-on */ + case 19: /* EAN-13/ISBN + 5 digit add-on */ if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { - *left = 11.0f; + *left = comp_xoffset >= 10 ? 1.0f : 11.0f - comp_xoffset; /* Need at least 1X for CC-A/B */ *right = 5.0f; } else if (!hide_text) { - *left = 11.0f; /* Need for outside left digit */ + *left = comp_xoffset >= 10 ? 1.0f : 11.0f - comp_xoffset; /* Need for outside left digit */ } break; - case 5: /* EAN-5 addon */ - case 2: /* EAN-2 addon */ + case 5: /* EAN-5 add-on */ + case 2: /* EAN-2 add-on */ if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { - *left = 7.0f; *right = 5.0f; } break; - default: /* EAN-8 (+/- 2/5 digit addon) */ + case 8: /* EAN-8 */ if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { - *left = *right = 7.0f; + *left = comp_xoffset >= 6 ? 1.0f : 7.0f - comp_xoffset; /* Need at least 1X for CC-A/B */ + *right = 7.0f - (comp_xoffset != 0); + } + break; + default: /* EAN-8 + 2/5 digit add-on */ + if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { + *left = comp_xoffset >= 6 ? 1.0f : 7.0f - comp_xoffset; /* Need at least 1X for CC-A/B */ + *right = 5.0f; } break; } @@ -272,16 +278,16 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text case BARCODE_UPCA_CC: /* GS1 General Specifications 21.0.1 Section 5.2.3.4 */ if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { - *left = 9.0f; - if (ustrlen(symbol->text) > 12) { /* UPC-A + addon */ + *left = comp_xoffset >= 8 ? 1.0f : 9.0f - comp_xoffset; /* Need at least 1X for CC-A/B */ + if (ustrlen(symbol->text) > 12) { /* UPC-A + add-on */ *right = 5.0f; } else { - *right = 9.0f; + *right = 9.0f - (comp_xoffset != 0); } } else if (!hide_text) { - *left = 9.0f; /* Need for outside left digit */ - if (ustrlen(symbol->text) <= 12) { /* No addon */ - *right = 9.0f; /* Need for outside right digit */ + *left = comp_xoffset >= 8 ? 1.0f : 9.0f - comp_xoffset; /* Need for outside left digit */ + if (ustrlen(symbol->text) <= 12) { /* No add-on */ + *right = 9.0f - (comp_xoffset != 0); /* Need for outside right digit */ } } done = 1; @@ -291,16 +297,16 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text case BARCODE_UPCE_CC: /* GS1 General Specifications 21.0.1 Section 5.2.3.4 */ if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { - *left = 9.0f; - if (ustrlen(symbol->text) > 8) { /* UPC-E + addon */ + *left = comp_xoffset >= 8 ? 1.0f : 9.0f - comp_xoffset; + if (ustrlen(symbol->text) > 8) { /* UPC-E + add-on */ *right = 5.0f; } else { - *right = 7.0f; + *right = 7.0f - (comp_xoffset != 0); } } else if (!hide_text) { - *left = 9.0f; /* Need for outside left digit */ - if (ustrlen(symbol->text) <= 8) { /* No addon */ - *right = 7.0f; /* Need for outside right digit */ + *left = comp_xoffset >= 8 ? 1.0f : 9.0f - comp_xoffset; /* Need for outside left digit */ + if (ustrlen(symbol->text) <= 8) { /* No add-on */ + *right = 7.0f - (comp_xoffset != 0); /* Need for outside right digit */ } } done = 1; @@ -349,12 +355,28 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text done = 1; break; case BARCODE_GS1_128: /* GS1-128 */ - case BARCODE_GS1_128_CC: case BARCODE_EAN14: /* GS1 General Specifications 21.0.1 Section 5.4.4.2 */ *left = *right = 10.0f; done = 1; break; + case BARCODE_GS1_128_CC: + /* GS1 General Specifications 21.0.1 Sections 5.11.2.1 (CC-A), 5.11.2.2 (CC-B) & 5.11.2.3 (CC-C) */ + { + int comp_roffset = 0; /* Right offset of linear */ + int min_qz; /* Minimum quiet zone - 1X for CC-A/B, 2X for CC-C */ + int x; + for (x = symbol->width - 1; x >= 0 && !module_is_set(symbol, symbol->rows - 1, x); x--) { + comp_roffset++; + } + /* Determine if CC-C by counting initial start pattern */ + for (x = 0; x < 8 && module_is_set(symbol, 0, x); x++); + min_qz = x == 8 ? 2 : 1; + *left = comp_xoffset >= 10 - min_qz ? min_qz : 10.0f - comp_xoffset; + *right = comp_roffset >= 10 - min_qz ? min_qz : 10.0f - comp_roffset; + } + done = 1; + break; case BARCODE_CODABAR: /* BS EN 798:1995 Section 4.4.1 (d) */ *left = *right = 10.0f; @@ -394,14 +416,26 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text /* GS1 General Specifications 21.0.1 Section 5.5.1.1 - Quiet Zones: None required */ done = 1; break; + + /* GS1 General Specifications 21.0.1 Sections 5.11.2.1 (CC-A) & 5.11.2.2 (CC-B) require 1X either side + but this may be supplied by the positioning of the linear component */ case BARCODE_DBAR_OMN_CC: case BARCODE_DBAR_LTD_CC: - case BARCODE_DBAR_EXP_CC: + /* Always have at least 1X to right of CC-A/B */ + if (comp_xoffset > 1) { /* Exclude DBAR_LTD_CC with CC-A which always has 1X to left */ + *left = 1.0f; + } + done = 1; + break; case BARCODE_DBAR_STK_CC: case BARCODE_DBAR_OMNSTK_CC: + /* Always have at least 1X to left of CC-A/B */ + *right = 1.0f; + done = 1; + break; + case BARCODE_DBAR_EXP_CC: case BARCODE_DBAR_EXPSTK_CC: - /* GS1 General Specifications 21.0.1 Sections 5.11.2.1 (CC-A) & 5.11.2.2 (CC-B) */ - *left = *right = 1.0f; + /* Always have at least 1X to left and right of CC-A/B */ done = 1; break; @@ -614,19 +648,19 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text } #ifdef ZINT_TEST /* Wrapper for direct testing */ -INTERNAL int out_quiet_zones_test(const struct zint_symbol *symbol, const int hide_text, +INTERNAL int out_quiet_zones_test(const struct zint_symbol *symbol, const int hide_text, const int comp_xoffset, float *left, float *right, float *top, float *bottom) { - return out_quiet_zones(symbol, hide_text, left, right, top, bottom); + return out_quiet_zones(symbol, hide_text, comp_xoffset, left, right, top, bottom); } #endif /* Set left (x), top (y), right and bottom offsets for whitespace */ INTERNAL void out_set_whitespace_offsets(const struct zint_symbol *symbol, const int hide_text, - float *xoffset, float *yoffset, float *roffset, float *boffset, const float scaler, - int *xoffset_si, int *yoffset_si, int *roffset_si, int *boffset_si) { + const int comp_xoffset, float *xoffset, float *yoffset, float *roffset, float *boffset, + const float scaler, int *xoffset_si, int *yoffset_si, int *roffset_si, int *boffset_si) { float qz_left, qz_right, qz_top, qz_bottom; - out_quiet_zones(symbol, hide_text, &qz_left, &qz_right, &qz_top, &qz_bottom); + out_quiet_zones(symbol, hide_text, comp_xoffset, &qz_left, &qz_right, &qz_top, &qz_bottom); *xoffset = symbol->whitespace_width + qz_left; *roffset = symbol->whitespace_width + qz_right; @@ -658,22 +692,22 @@ INTERNAL void out_set_whitespace_offsets(const struct zint_symbol *symbol, const } } -/* Set composite offset and main width excluding addon (for start of addon calc) and addon text, returning +/* Set composite offset and main width excluding add-on (for start of add-on calc) and add-on text, returning UPC/EAN type */ -INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_width, int *p_comp_xoffset, +INTERNAL int out_process_upcean(const struct zint_symbol *symbol, const int comp_xoffset, int *p_main_width, unsigned char addon[6], int *p_addon_gap) { - int main_width; /* Width of main linear symbol, excluding addon */ - int comp_xoffset; /* Whitespace offset (if any) of main linear symbol due to having composite */ + int main_width; /* Width of main linear symbol, excluding add-on */ int upceanflag; /* UPC/EAN type flag */ int i, j, latch; - int text_length = (int) ustrlen(symbol->text); + const int text_length = (int) ustrlen(symbol->text); latch = 0; j = 0; /* Isolate add-on text */ for (i = 6; i < text_length && j < 5; i++) { if (latch == 1) { - addon[j] = symbol->show_hrt ? symbol->text[i] : ' '; /* Use dummy space-filled addon if no hrt */ + /* Use dummy space-filled add-on if no hrt */ + addon[j] = symbol->show_hrt ? symbol->text[i] : ' '; j++; } else if (symbol->text[i] == '+') { latch = 1; @@ -689,14 +723,6 @@ INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_wi } } - /* Calculate composite offset */ - comp_xoffset = 0; - if (is_composite(symbol->symbology)) { - while (!(module_is_set(symbol, symbol->rows - 1, comp_xoffset))) { - comp_xoffset++; - } - } - upceanflag = 0; main_width = symbol->width; if ((symbol->symbology == BARCODE_EANX) || (symbol->symbology == BARCODE_EANX_CHK) @@ -709,11 +735,11 @@ INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_wi upceanflag = 13; break; case 2: - /* EAN-2 can't have addon or be composite */ + /* EAN-2 can't have add-on or be composite */ upceanflag = 2; break; case 5: - /* EAN-5 can't have addon or be composite */ + /* EAN-5 can't have add-on or be composite */ upceanflag = 5; break; default: @@ -731,7 +757,6 @@ INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_wi upceanflag = 6; } - *p_comp_xoffset = comp_xoffset; *p_main_width = main_width; return upceanflag; @@ -989,4 +1014,34 @@ INTERNAL FILE *out_fopen(const char filename[256], const char *mode) { return outfile; } +/* Output float without trailing zeroes to `fp` with decimal pts `dp` (precision) */ +INTERNAL void out_putsf(const char *const prefix, const int dp, const float arg, FILE *fp) { + int i, end; + char buf[256]; /* Assuming `dp` reasonable */ + const int len = sprintf(buf, "%.*f", dp, arg); + + if (*prefix) { + fputs(prefix, fp); + } + + /* Adapted from https://stackoverflow.com/a/36202854/664741 */ + for (i = len - 1, end = len; i >= 0; i--) { + if (buf[i] == '0') { + if (end == i + 1) { + end = i; + } + } else if (!z_isdigit(buf[i]) && buf[i] != '-') { /* If not digit or minus then decimal point */ + if (end == i + 1) { + end = i; + } else { + buf[i] = '.'; /* Overwrite any locale-specific setting for decimal point */ + } + buf[end] = '\0'; + break; + } + } + + fputs(buf, fp); +} + /* vim: set ts=4 sw=4 et : */ diff --git a/backend/output.h b/backend/output.h index 4b047b81..a6cd1b19 100644 --- a/backend/output.h +++ b/backend/output.h @@ -51,12 +51,12 @@ INTERNAL int out_colour_get_cmyk(const char *colour, int *cyan, int *magenta, in /* Set left (x), top (y), right and bottom offsets for whitespace */ INTERNAL void out_set_whitespace_offsets(const struct zint_symbol *symbol, const int hide_text, - float *xoffset, float *yoffset, float *roffset, float *boffset, const float scaler, - int *xoffset_si, int *yoffset_si, int *roffset_si, int *boffset_si); + const int comp_xoffset, float *xoffset, float *yoffset, float *roffset, float *boffset, + const float scaler, int *xoffset_si, int *yoffset_si, int *roffset_si, int *boffset_si); -/* Set composite offset and main width excluding addon (for start of addon calc) and addon text, returning +/* Set composite offset and main width excluding add-on (for start of add-on calc) and add-on text, returning UPC/EAN type */ -INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_width, int *p_comp_xoffset, +INTERNAL int out_process_upcean(const struct zint_symbol *symbol, const int comp_xoffset, int *p_main_width, unsigned char addon[6], int *p_addon_gap); /* Calculate large bar height i.e. linear bars with zero row height that respond to the symbol height. @@ -76,6 +76,9 @@ INTERNAL FILE *out_fopen(const char filename[256], const char *mode); INTERNAL FILE *out_win_fopen(const char *filename, const char *mode); #endif +/* Output float without trailing zeroes to `fp` with decimal pts `dp` (precision) */ +INTERNAL void out_putsf(const char *const prefix, const int dp, const float arg, FILE *fp); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/backend/pdf417.c b/backend/pdf417.c index 15f05f84..4d6b5f28 100644 --- a/backend/pdf417.c +++ b/backend/pdf417.c @@ -1,7 +1,7 @@ /* pdf417.c - Handles PDF417 stacked symbology */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Portions Copyright (C) 2004 Grandzebu Bug Fixes thanks to KL Chin @@ -561,13 +561,13 @@ INTERNAL void pdf_byteprocess(int *chainemc, int *p_mclength, const unsigned cha /* select the switch for multiple of 6 bytes */ if (length % 6 == 0) { chainemc[(*p_mclength)++] = 924; - if (debug_print) printf("924 "); + if (debug_print) fputs("924 ", stdout); } else { /* Default mode for MICROPDF417 is Byte Compaction (ISO/IEC 24728:2006 5.4.3), but not emitting it * depends on whether an ECI has been emitted previously (or not) it appears, so simpler and safer * to always emit it. */ chainemc[(*p_mclength)++] = 901; - if (debug_print) printf("901 "); + if (debug_print) fputs("901 ", stdout); } len = 0; @@ -977,7 +977,7 @@ static int pdf_define_mode(int liste[3][PDF_MAX_LEN], int *p_indexliste, const u if (debug_print) { printf("modes (%d):", *p_indexliste); for (i = 0; i < *p_indexliste; i++) printf(" %c(%d,%d)", pdf_smodes[liste[1][i]], liste[2][i], liste[0][i]); - printf("\n"); + fputc('\n', stdout); } free(edges); @@ -1013,7 +1013,7 @@ static int pdf_initial(struct zint_symbol *symbol, const unsigned char chaine[], } while (indexchaine < length); if (debug_print) { - printf("\nInitial block pattern:\n"); + fputs("\nInitial block pattern:\n", stdout); for (i = 0; i < indexliste; i++) { printf("Start: %d Len: %d Type: %s\n", liste[2][i], liste[0][i], pdf_mode_str(liste[1][i])); } @@ -1028,7 +1028,7 @@ static int pdf_initial(struct zint_symbol *symbol, const unsigned char chaine[], } if (debug_print) { - printf("\nCompacted block pattern:\n"); + fputs("\nCompacted block pattern:\n", stdout); for (i = 0; i < indexliste; i++) { printf("Start: %d Len: %d Type: %s\n", liste[2][i], liste[0][i], pdf_mode_str(PDF_REAL_MODE(liste[1][i]))); @@ -1216,7 +1216,7 @@ static int pdf_enc(struct zint_symbol *symbol, struct zint_seg segs[], const int for (i = 1; i < mclength; i++) { /* Skip unset length descriptor */ printf("%d ", chainemc[i]); } - printf("\n\n"); + fputs("\n\n", stdout); } /* 752 - Now take care of the number of CWs per row */ @@ -1365,7 +1365,7 @@ static int pdf_enc(struct zint_symbol *symbol, struct zint_seg segs[], const int for (i = 0; i < mclength; i++) { printf("%d ", chainemc[i]); } - printf("\n"); + fputc('\n', stdout); } #ifdef ZINT_TEST if (symbol->debug & ZINT_DEBUG_TEST) { @@ -1531,7 +1531,7 @@ INTERNAL int micropdf417(struct zint_symbol *symbol, struct zint_seg segs[], con for (i = 0; i < mclength; i++) { printf("%3d ", chainemc[i]); } - printf("\n"); + fputc('\n', stdout); } /* Now figure out which variant of the symbol to use and load values accordingly */ @@ -1671,10 +1671,10 @@ INTERNAL int micropdf417(struct zint_symbol *symbol, struct zint_seg segs[], con offset = pdf_MicroVariants[variant + 102]; /* coefficient offset */ if (debug_print) { - printf("\nChoose symbol size:\n"); + fputs("\nChoose symbol size:\n", stdout); printf("%d columns x %d rows, variant %d\n", symbol->option_2, symbol->rows, variant + 1); printf("%d data codewords (including %d pads), %d ecc codewords\n", longueur, i, k); - printf("\n"); + fputc('\n', stdout); } /* We add the padding */ @@ -1718,7 +1718,7 @@ INTERNAL int micropdf417(struct zint_symbol *symbol, struct zint_seg segs[], con for (i = 0; i < mclength; i++) { printf("%3d ", chainemc[i]); } - printf("\n"); + fputc('\n', stdout); } #ifdef ZINT_TEST if (symbol->debug & ZINT_DEBUG_TEST) { @@ -1736,7 +1736,7 @@ INTERNAL int micropdf417(struct zint_symbol *symbol, struct zint_seg segs[], con /* Cluster can be 0, 1 or 2 for Cluster(0), Cluster(3) and Cluster(6) */ - if (debug_print) printf("\nInternal row representation:\n"); + if (debug_print) fputs("\nInternal row representation:\n", stdout); for (i = 0; i < symbol->rows; i++) { if (debug_print) printf("row %d: ", i); bp = 0; diff --git a/backend/pdf417_trace.h b/backend/pdf417_trace.h index e7acbf44..c5397396 100644 --- a/backend/pdf417_trace.h +++ b/backend/pdf417_trace.h @@ -1,7 +1,7 @@ /* pdf417_trace.h - Trace routines for optimal PDF417 optimization algorithm */ /* libzint - the open source barcode library - Copyright (C) 2022 Robin Stuart + Copyright (C) 2022-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -51,11 +51,11 @@ static void PDF_TRACE_EdgeToString(char *buf, const unsigned char *source, const if (buf) { sprintf(buf, "%d_%c %c(%d,%d) %d(%d,%d,%d) -> %d_%c", edge->from, pdf_smodes[previousMode], pdf_smodes[edge->mode], source[edge->from], edge->len, edge->size - + edge->unit_size, edge->units, edge->unit_size, edge->size, edge->from + 1, pdf_smodes[edge->mode]); + + edge->unit_size, edge->units, edge->unit_size, edge->size, edge->from + 1, pdf_smodes[edge->mode]); } else { printf("%d_%c %c(%d,%d) %d(%d,%d,%d) -> %d_%c", edge->from, pdf_smodes[previousMode], pdf_smodes[edge->mode], source[edge->from], edge->len, edge->size - + edge->unit_size, edge->units, edge->unit_size, edge->size, edge->from + 1, pdf_smodes[edge->mode]); + + edge->unit_size, edge->units, edge->unit_size, edge->size, edge->from + 1, pdf_smodes[edge->mode]); } } diff --git a/backend/png.c b/backend/png.c index 10c798b9..950e2931 100644 --- a/backend/png.c +++ b/backend/png.c @@ -68,7 +68,7 @@ static void wpng_error_handler(png_structp png_ptr, png_const_charp msg) { #ifdef ZINT_TEST /* Wrapper for direct testing */ INTERNAL void wpng_error_handler_test(png_structp png_ptr, png_const_charp msg) { - wpng_error_handler(png_ptr, msg); + wpng_error_handler(png_ptr, msg); } #endif @@ -349,8 +349,5 @@ INTERNAL int png_pixel_plot(struct zint_symbol *symbol, const unsigned char *pix return 0; } -#else -/* https://stackoverflow.com/a/26541331 Suppresses gcc warning ISO C forbids an empty translation unit */ -typedef int make_iso_compilers_happy; /* vim: set ts=4 sw=4 et : */ #endif /* ZINT_NO_PNG */ diff --git a/backend/ps.c b/backend/ps.c index 61571a6d..3aee7e7b 100644 --- a/backend/ps.c +++ b/backend/ps.c @@ -31,75 +31,45 @@ /* SPDX-License-Identifier: BSD-3-Clause */ #include -#include #include #include #include "common.h" #include "output.h" -static void colour_to_pscolor(int option, int colour, char *output) { - *output = '\0'; - if ((option & CMYK_COLOUR) == 0) { +/* Convert Ultracode rectangle colour to PostScript setrgbcolor/setcmykcolor format */ +static void ps_colour(const int is_rgb, const int colour, char ps_color[21]) { + const int idx = colour >= 1 && colour <= 8 ? colour - 1 : 6 /*black*/; + if (is_rgb) { /* Use RGB colour space */ - switch (colour) { - case 1: /* Cyan */ - strcat(output, "0.00 1.00 1.00"); - break; - case 2: /* Blue */ - strcat(output, "0.00 0.00 1.00"); - break; - case 3: /* Magenta */ - strcat(output, "1.00 0.00 1.00"); - break; - case 4: /* Red */ - strcat(output, "1.00 0.00 0.00"); - break; - case 5: /* Yellow */ - strcat(output, "1.00 1.00 0.00"); - break; - case 6: /* Green */ - strcat(output, "0.00 1.00 0.00"); - break; - case 8: /* White */ - strcat(output, "1.00 1.00 1.00"); - break; - default: /* Black */ - strcat(output, "0.00 0.00 0.00"); - break; - } - strcat(output, " setrgbcolor"); + static const char ps_rgbs[8][6] = { + "0 1 1", /* 0: Cyan (1) */ + "0 0 1", /* 1: Blue (2) */ + "1 0 1", /* 2: Magenta (3) */ + "1 0 0", /* 3: Red (4) */ + "1 1 0", /* 4: Yellow (5) */ + "0 1 0", /* 5: Green (6) */ + "0 0 0", /* 6: Black (7) */ + "1 1 1", /* 7: White (8) */ + }; + strcpy(ps_color, ps_rgbs[idx]); + strcpy(ps_color + 5, " setrgbcolor"); } else { - /* Use CMYK colour space */ - switch (colour) { - case 1: /* Cyan */ - strcat(output, "1.00 0.00 0.00 0.00"); - break; - case 2: /* Blue */ - strcat(output, "1.00 1.00 0.00 0.00"); - break; - case 3: /* Magenta */ - strcat(output, "0.00 1.00 0.00 0.00"); - break; - case 4: /* Red */ - strcat(output, "0.00 1.00 1.00 0.00"); - break; - case 5: /* Yellow */ - strcat(output, "0.00 0.00 1.00 0.00"); - break; - case 6: /* Green */ - strcat(output, "1.00 0.00 1.00 0.00"); - break; - case 8: /* White */ - strcat(output, "0.00 0.00 0.00 0.00"); - break; - default: /* Black */ - strcat(output, "0.00 0.00 0.00 1.00"); - break; - } - strcat(output, " setcmykcolor"); + static const char ps_cmyks[8][8] = { + "1 0 0 0", /* 0: Cyan (1) */ + "1 1 0 0", /* 1: Blue (2) */ + "0 1 0 0", /* 2: Magenta (3) */ + "0 1 1 0", /* 3: Red (4) */ + "0 0 1 0", /* 4: Yellow (5) */ + "1 0 1 0", /* 5: Green (6) */ + "0 0 0 1", /* 6: Black (7) */ + "0 0 0 0", /* 7: White (8) */ + }; + strcpy(ps_color, ps_cmyks[idx]); + strcpy(ps_color + 7, " setcmykcolor"); } } +/* Escape special PostScript chars. Assumes valid UTF-8-encoded ISO/IEC 8859-1 */ static void ps_convert(const unsigned char *string, unsigned char *ps_string) { const unsigned char *s; unsigned char *p = ps_string; @@ -131,10 +101,51 @@ static void ps_convert(const unsigned char *string, unsigned char *ps_string) { #ifdef ZINT_TEST /* Wrapper for direct testing */ INTERNAL void ps_convert_test(const unsigned char *string, unsigned char *ps_string) { - ps_convert(string, ps_string); + ps_convert(string, ps_string); } #endif +/* Helper to output RGB colour */ +static void ps_put_rgbcolor(const float red, const float green, const float blue, FILE *feps) { + out_putsf("", 2, red, feps); + out_putsf(" ", 2, green, feps); + out_putsf(" ", 2, blue, feps); + fputs(" setrgbcolor\n", feps); +} + +/* Helper to output CMYK colour */ +static void ps_put_cmykcolor(const float cyan, const float magenta, const float yellow, const float black, + FILE *feps) { + out_putsf("", 2, cyan, feps); + out_putsf(" ", 2, magenta, feps); + out_putsf(" ", 2, yellow, feps); + out_putsf(" ", 2, black, feps); + fputs(" setcmykcolor\n", feps); +} + +/* Helper to output rectangle */ +static void ps_put_rect(const struct zint_symbol *symbol, const struct zint_vector_rect *rect, FILE *feps) { + out_putsf("", 2, rect->height, feps); + out_putsf(" ", 2, rect->width, feps); + out_putsf(" ", 2, rect->x, feps); + out_putsf(" ", 2, (symbol->vector->height - rect->y) - rect->height, feps); + fputs(" TR\n", feps); +} + +/* Helper to output circle/disc */ +static void ps_put_circle(const struct zint_symbol *symbol, const struct zint_vector_circle *circle, + const float radius, FILE *feps) { + out_putsf("", 2, circle->x, feps); + out_putsf(" ", 2, symbol->vector->height - circle->y, feps); + out_putsf(" ", 3, radius, feps); + if (circle->width) { + out_putsf(" ", 3, circle->width, feps); + fputs(" TC\n", feps); + } else { + fputs(" TD\n", feps); + } +} + INTERNAL int ps_plot(struct zint_symbol *symbol) { FILE *feps; unsigned char fgred, fggrn, fgblu, bgred, bggrn, bgblu, bgalpha; @@ -144,24 +155,22 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { float cyan_ink = 0.0f, magenta_ink = 0.0f, yellow_ink = 0.0f, black_ink = 0.0f; float cyan_paper = 0.0f, magenta_paper = 0.0f, yellow_paper = 0.0f, black_paper = 0.0f; int error_number = 0; - float ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy; float previous_diameter; float radius, half_radius, half_sqrt3_radius; int colour_index, colour_rect_flag; - char ps_color[33]; /* max "1.00 0.00 0.00 0.00 setcmykcolor" = 32 + 1 */ + char ps_color[21]; /* max "1 0 0 0 setcmykcolor" = 20 + 1 */ int draw_background = 1; struct zint_vector_rect *rect; struct zint_vector_hexagon *hex; struct zint_vector_circle *circle; struct zint_vector_string *string; - const char *locale = NULL; - const char *font; int i, len; int ps_len = 0; int iso_latin1 = 0; int have_circles_with_width = 0, have_circles_without_width = 0; + const int extendable = is_extendable(symbol->symbology); const int output_to_stdout = symbol->output_options & BARCODE_STDOUT; - unsigned char *ps_string; + const int is_rgb = (symbol->output_options & CMYK_COLOUR) == 0; if (symbol->vector == NULL) { strcpy(symbol->errtxt, "646: Vector header NULL"); @@ -177,9 +186,7 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { } } - locale = setlocale(LC_ALL, "C"); - - if ((symbol->output_options & CMYK_COLOUR) == 0) { + if (is_rgb) { (void) out_colour_get_rgb(symbol->fgcolour, &fgred, &fggrn, &fgblu, NULL /*alpha*/); red_ink = fgred / 255.0f; green_ink = fggrn / 255.0f; @@ -222,14 +229,18 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { } } - ps_string = (unsigned char *) z_alloca(ps_len + 1); - /* Check for circle widths */ for (circle = symbol->vector->circles; circle; circle = circle->next) { if (circle->width) { have_circles_with_width = 1; + if (have_circles_without_width) { + break; + } } else { have_circles_without_width = 1; + if (have_circles_with_width) { + break; + } } } @@ -260,10 +271,11 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { if (symbol->vector->hexagons) { fputs("/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def\n", feps); } - fputs("/TB { 2 copy } bind def\n" - "/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill }" - " bind def\n" - "/TE { pop pop } bind def\n", feps); + if (symbol->vector->rectangles || draw_background) { + /* Rectangle: h w x y */ + fputs("/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def\n", + feps); + } fputs("newpath\n", feps); @@ -271,21 +283,22 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { /* Background */ if (draw_background) { - if ((symbol->output_options & CMYK_COLOUR) == 0) { - fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_paper, green_paper, blue_paper); + if (is_rgb) { + ps_put_rgbcolor(red_paper, green_paper, blue_paper, feps); } else { - fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", cyan_paper, magenta_paper, yellow_paper, black_paper); + ps_put_cmykcolor(cyan_paper, magenta_paper, yellow_paper, black_paper, feps); } - fprintf(feps, "%.2f 0.00 TB 0.00 %.2f TR\n", symbol->vector->height, symbol->vector->width); - fputs("TE\n", feps); + out_putsf("", 2, symbol->vector->height, feps); + out_putsf(" ", 2, symbol->vector->width, feps); + fputs(" 0 0 TR\n", feps); } if (symbol->symbology != BARCODE_ULTRA) { - if ((symbol->output_options & CMYK_COLOUR) == 0) { - fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_ink, green_ink, blue_ink); + if (is_rgb) { + ps_put_rgbcolor(red_ink, green_ink, blue_ink, feps); } else { - fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", cyan_ink, magenta_ink, yellow_ink, black_ink); + ps_put_cmykcolor(cyan_ink, magenta_ink, yellow_ink, black_ink, feps); } } @@ -297,17 +310,14 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { if (rect->colour == -1) { /* Foreground */ if (colour_rect_flag == 0) { /* Set foreground colour */ - if ((symbol->output_options & CMYK_COLOUR) == 0) { - fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_ink, green_ink, blue_ink); + if (is_rgb) { + ps_put_rgbcolor(red_ink, green_ink, blue_ink, feps); } else { - fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", - cyan_ink, magenta_ink, yellow_ink, black_ink); + ps_put_cmykcolor(cyan_ink, magenta_ink, yellow_ink, black_ink, feps); } colour_rect_flag = 1; } - fprintf(feps, "%.2f %.2f TB %.2f %.2f TR\n", - rect->height, (symbol->vector->height - rect->y) - rect->height, rect->x, rect->width); - fputs("TE\n", feps); + ps_put_rect(symbol, rect, feps); } rect = rect->next; } @@ -318,13 +328,11 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { if (rect->colour == colour_index) { if (colour_rect_flag == 0) { /* Set new colour */ - colour_to_pscolor(symbol->output_options, colour_index, ps_color); + ps_colour(is_rgb, colour_index, ps_color); fprintf(feps, "%s\n", ps_color); colour_rect_flag = 1; } - fprintf(feps, "%.2f %.2f TB %.2f %.2f TR\n", - rect->height, (symbol->vector->height - rect->y) - rect->height, rect->x, rect->width); - fputs("TE\n", feps); + ps_put_rect(symbol, rect, feps); } rect = rect->next; } @@ -332,9 +340,7 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { } else { rect = symbol->vector->rectangles; while (rect) { - fprintf(feps, "%.2f %.2f TB %.2f %.2f TR\n", - rect->height, (symbol->vector->height - rect->y) - rect->height, rect->x, rect->width); - fputs("TE\n", feps); + ps_put_rect(symbol, rect, feps); rect = rect->next; } } @@ -343,6 +349,7 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { previous_diameter = radius = half_radius = half_sqrt3_radius = 0.0f; hex = symbol->vector->hexagons; while (hex) { + float hy = symbol->vector->height - hex->y; if (previous_diameter != hex->diameter) { previous_diameter = hex->diameter; radius = (float) (0.5 * previous_diameter); @@ -350,34 +357,33 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { half_sqrt3_radius = (float) (0.43301270189221932338 * previous_diameter); } if ((hex->rotation == 0) || (hex->rotation == 180)) { - ay = (symbol->vector->height - hex->y) + radius; - by = (symbol->vector->height - hex->y) + half_radius; - cy = (symbol->vector->height - hex->y) - half_radius; - dy = (symbol->vector->height - hex->y) - radius; - ey = (symbol->vector->height - hex->y) - half_radius; - fy = (symbol->vector->height - hex->y) + half_radius; - ax = hex->x; - bx = hex->x + half_sqrt3_radius; - cx = hex->x + half_sqrt3_radius; - dx = hex->x; - ex = hex->x - half_sqrt3_radius; - fx = hex->x - half_sqrt3_radius; + out_putsf("", 2, hex->x, feps); + out_putsf(" ", 2, hy + radius, feps); + out_putsf(" ", 2, hex->x + half_sqrt3_radius, feps); + out_putsf(" ", 2, hy + half_radius, feps); + out_putsf(" ", 2, hex->x + half_sqrt3_radius, feps); + out_putsf(" ", 2, hy - half_radius, feps); + out_putsf(" ", 2, hex->x, feps); + out_putsf(" ", 2, hy - radius, feps); + out_putsf(" ", 2, hex->x - half_sqrt3_radius, feps); + out_putsf(" ", 2, hy - half_radius, feps); + out_putsf(" ", 2, hex->x - half_sqrt3_radius, feps); + out_putsf(" ", 2, hy + half_radius, feps); } else { - ay = (symbol->vector->height - hex->y); - by = (symbol->vector->height - hex->y) + half_sqrt3_radius; - cy = (symbol->vector->height - hex->y) + half_sqrt3_radius; - dy = (symbol->vector->height - hex->y); - ey = (symbol->vector->height - hex->y) - half_sqrt3_radius; - fy = (symbol->vector->height - hex->y) - half_sqrt3_radius; - ax = hex->x - radius; - bx = hex->x - half_radius; - cx = hex->x + half_radius; - dx = hex->x + radius; - ex = hex->x + half_radius; - fx = hex->x - half_radius; + out_putsf("", 2, hex->x - radius, feps); + out_putsf(" ", 2, hy, feps); + out_putsf(" ", 2, hex->x - half_radius, feps); + out_putsf(" ", 2, hy + half_sqrt3_radius, feps); + out_putsf(" ", 2, hex->x + half_radius, feps); + out_putsf(" ", 2, hy + half_sqrt3_radius, feps); + out_putsf(" ", 2, hex->x + radius, feps); + out_putsf(" ", 2, hy, feps); + out_putsf(" ", 2, hex->x + half_radius, feps); + out_putsf(" ", 2, hy - half_sqrt3_radius, feps); + out_putsf(" ", 2, hex->x - half_radius, feps); + out_putsf(" ", 2, hy - half_sqrt3_radius, feps); } - fprintf(feps, "%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f TH\n", - ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy); + fputs(" TH\n", feps); hex = hex->next; } @@ -391,33 +397,22 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { } if (circle->colour) { /* Legacy - no longer used */ /* A 'white' circle */ - if ((symbol->output_options & CMYK_COLOUR) == 0) { - fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_paper, green_paper, blue_paper); + if (is_rgb) { + ps_put_rgbcolor(red_paper, green_paper, blue_paper, feps); } else { - fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", - cyan_paper, magenta_paper, yellow_paper, black_paper); - } - if (circle->width) { - fprintf(feps, "%.2f %.2f %.3f %.3f TC\n", - circle->x, (symbol->vector->height - circle->y), radius, circle->width); - } else { - fprintf(feps, "%.2f %.2f %.2f TD\n", circle->x, (symbol->vector->height - circle->y), radius); + ps_put_cmykcolor(cyan_paper, magenta_paper, yellow_paper, black_paper, feps); } + ps_put_circle(symbol, circle, radius, feps); if (circle->next) { - if ((symbol->output_options & CMYK_COLOUR) == 0) { - fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_ink, green_ink, blue_ink); + if (is_rgb) { + ps_put_rgbcolor(red_ink, green_ink, blue_ink, feps); } else { - fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", cyan_ink, magenta_ink, yellow_ink, black_ink); + ps_put_cmykcolor(cyan_ink, magenta_ink, yellow_ink, black_ink, feps); } } } else { /* A 'black' circle */ - if (circle->width) { - fprintf(feps, "%.2f %.2f %.3f %.3f TC\n", - circle->x, (symbol->vector->height - circle->y), radius, circle->width); - } else { - fprintf(feps, "%.2f %.2f %.2f TD\n", circle->x, (symbol->vector->height - circle->y), radius); - } + ps_put_circle(symbol, circle, radius, feps); } circle = circle->next; } @@ -427,7 +422,11 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { string = symbol->vector->strings; if (string) { - if ((symbol->output_options & BOLD_TEXT) && !is_extendable(symbol->symbology)) { + float previous_fsize = 0.0f; + const char *font; + unsigned char *ps_string = (unsigned char *) z_alloca(ps_len + 1); + + if ((symbol->output_options & BOLD_TEXT) && !extendable) { font = "Helvetica-Bold"; } else { font = "Helvetica"; @@ -445,34 +444,32 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { } do { ps_convert(string->text, ps_string); - fputs("matrix currentmatrix\n", feps); - fprintf(feps, "/%s findfont\n", font); - fprintf(feps, "%.2f scalefont setfont\n", string->fsize); - fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", - string->x, (symbol->vector->height - string->y)); + if (string->fsize != previous_fsize) { + fprintf(feps, "/%s findfont", font); + /* Compensate for Helvetica being smaller than Zint's OCR-B */ + out_putsf( " ", 2, extendable ? string->fsize * 1.07f : string->fsize, feps); + fputs(" scalefont setfont\n", feps); + previous_fsize = string->fsize; + } + out_putsf(" ", 2, string->x, feps); + out_putsf(" ", 2, symbol->vector->height - string->y, feps); + fputs(" moveto\n", feps); if (string->halign == 0 || string->halign == 2) { /* Need width for middle or right align */ - fprintf(feps, " (%s) stringwidth\n", ps_string); + fprintf(feps, " (%s) stringwidth pop" /* Returns "width height" - discard "height" */ + " %s 0 rmoveto\n", ps_string, string->halign == 2 ? "neg" : "-2 div"); } if (string->rotation != 0) { - fputs("gsave\n", feps); - fprintf(feps, "%d rotate\n", 360 - string->rotation); - } - if (string->halign == 0 || string->halign == 2) { - fputs("pop\n", feps); - fprintf(feps, "%s 0 rmoveto\n", string->halign == 2 ? "neg" : "-2 div"); + fputs(" gsave\n", feps); + fprintf(feps, " %d rotate\n", 360 - string->rotation); } fprintf(feps, " (%s) show\n", ps_string); if (string->rotation != 0) { - fputs("grestore\n", feps); + fputs(" grestore\n", feps); } - fputs("setmatrix\n", feps); string = string->next; } while (string); } - if (locale) - setlocale(LC_ALL, locale); - if (ferror(feps)) { sprintf(symbol->errtxt, "647: Incomplete write to output (%d: %.30s)", errno, strerror(errno)); if (!output_to_stdout) { diff --git a/backend/qr.c b/backend/qr.c index 59de05e2..15e596cf 100644 --- a/backend/qr.c +++ b/backend/qr.c @@ -1,7 +1,7 @@ /* qr.c Handles QR Code, Micro QR Code, UPNQR and rMQR */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -442,7 +442,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[] } if (debug_print) { - printf("\n"); + fputc('\n', stdout); } break; @@ -473,7 +473,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[] } if (debug_print) { - printf("\n"); + fputc('\n', stdout); } break; @@ -572,7 +572,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[] } if (debug_print) { - printf("\n"); + fputc('\n', stdout); } break; @@ -618,7 +618,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[] }; if (debug_print) { - printf("\n"); + fputc('\n', stdout); } break; @@ -722,11 +722,11 @@ static int qr_binary_segs(unsigned char datastream[], const int version, const i } if (debug_print) { - printf("Resulting codewords:\n\t"); + fputs("Resulting codewords:\n\t", stdout); for (i = 0; i < target_codewords; i++) { printf("0x%02X ", datastream[i]); } - printf("\n"); + fputc('\n', stdout); } return 0; /* Not used */ @@ -755,6 +755,7 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea /* Suppress some clang-tidy clang-analyzer-core.UndefinedBinaryOperatorResult/uninitialized.Assign warnings */ assert(blocks > 0); + short_data_block_length = data_cw / blocks; qty_long_blocks = data_cw % blocks; qty_short_blocks = blocks - qty_long_blocks; @@ -762,7 +763,7 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea /* Suppress some clang-tidy clang-analyzer-core.UndefinedBinaryOperatorResult/uninitialized.Assign warnings */ assert(short_data_block_length > 0); - assert(ecc_block_length * blocks == ecc_cw); + assert(qty_long_blocks || qty_short_blocks); data_block = (unsigned char *) z_alloca(short_data_block_length + 1); ecc_block = (unsigned char *) z_alloca(ecc_block_length); @@ -781,10 +782,6 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea length_this_block = short_data_block_length + 1; } - for (j = 0; j < ecc_block_length; j++) { - ecc_block[j] = 0; - } - for (j = 0; j < length_this_block; j++) { data_block[j] = datastream[in_posn + j]; /* NOLINT false-positive popped up with clang-tidy 14.0.1 */ } @@ -797,13 +794,13 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea printf("%2X ", data_block[j]); } if (i < qty_short_blocks) { - printf(" "); + fputs(" ", stdout); } - printf(" // "); + fputs(" // ", stdout); for (j = 0; j < ecc_block_length; j++) { printf("%2X ", ecc_block[ecc_block_length - j - 1]); } - printf("\n"); + fputc('\n', stdout); } for (j = 0; j < short_data_block_length; j++) { @@ -826,15 +823,15 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea fullstream[j] = interleaved_data[j]; } for (j = 0; j < ecc_cw; j++) { - fullstream[j + data_cw] = interleaved_ecc[j]; /* NOLINT ditto clang-tidy 14.0.6 */ + fullstream[j + data_cw] = interleaved_ecc[j]; } if (debug_print) { - printf("\nData Stream: \n"); + fputs("\nData Stream: \n", stdout); for (j = 0; j < (data_cw + ecc_cw); j++) { printf("%2X ", fullstream[j]); } - printf("\n"); + fputc('\n', stdout); } } @@ -1371,7 +1368,7 @@ static int qr_apply_bitmask(unsigned char *grid, const int size, const int ecc_l for (pattern = 0; pattern < 8; pattern++) printf(" %d:%d", pattern, penalty[pattern]); } } - printf("\n"); + fputc('\n', stdout); } #ifdef ZINTLOG @@ -1400,7 +1397,7 @@ static int qr_apply_bitmask(unsigned char *grid, const int size, const int ecc_l static void qr_add_version_info(unsigned char *grid, const int size, const int version) { int i; - long int version_data = qr_annex_d[version - 7]; + unsigned int version_data = qr_annex_d[version - 7]; for (i = 0; i < 6; i++) { grid[((size - 11) * size) + i] += (version_data >> (i * 3)) & 0x41; grid[((size - 10) * size) + i] += (version_data >> ((i * 3) + 1)) & 0x41; @@ -2432,7 +2429,7 @@ static int micro_apply_bitmask(unsigned char *grid, const int size, const int us if (!user_mask) { for (pattern = 0; pattern < 4; pattern++) printf(" %d:%d", pattern, value[pattern]); } - printf("\n"); + fputc('\n', stdout); } /* Apply mask */ diff --git a/backend/raster.c b/backend/raster.c index a664e09d..681abb5c 100644 --- a/backend/raster.c +++ b/backend/raster.c @@ -42,7 +42,7 @@ #include "output.h" #include "zfiletypes.h" -#include "font.h" /* Font for human readable text */ +#include "raster_font.h" /* Font for human readable text */ #define DEFAULT_INK '1' /* Black */ #define DEFAULT_PAPER '0' /* White */ @@ -300,7 +300,7 @@ static void draw_letter(unsigned char *pixelbuf, const unsigned char letter, int int glyph_no; int x, y; int max_x, max_y; - font_item *font_table; + const raster_font_item *font_table; int bold = 0; unsigned glyph_mask; int font_y; @@ -317,11 +317,6 @@ static void draw_letter(unsigned char *pixelbuf, const unsigned char letter, int return; } - /* Following should never happen (ISBN check digit "X" not printed) */ - if ((textflags & UPCEAN_TEXT) && !z_isdigit(letter)) { - return; /* Not reached */ - } - if (yposn < 0) { /* Allow xposn < 0, dealt with below */ return; } @@ -718,8 +713,8 @@ static int plot_raster_maxicode(struct zint_symbol *symbol, const int rotate_ang } scaler *= 10.0f; - out_set_whitespace_offsets(symbol, 0 /*hide_text*/, &xoffset, &yoffset, &roffset, &boffset, scaler, - &xoffset_si, &yoffset_si, &roffset_si, &boffset_si); + out_set_whitespace_offsets(symbol, 0 /*hide_text*/, 0 /*comp_xoffset*/, &xoffset, &yoffset, &roffset, &boffset, + scaler, &xoffset_si, &yoffset_si, &roffset_si, &boffset_si); hex_width = (int) roundf(scaler); /* Short diameter, X in ISO/IEC 16023:2000 Figure 8 (same as W) */ hex_height = (int) roundf(scaler * two_div_sqrt3); /* Long diameter, V in Figure 8 */ @@ -816,8 +811,8 @@ static int plot_raster_dotty(struct zint_symbol *symbol, const int rotate_angle, dot_radius_s = (symbol->dot_size * scaler) / 2.0f; dot_radius_si = (int) dot_radius_s; - out_set_whitespace_offsets(symbol, 0 /*hide_text*/, &xoffset, &yoffset, &roffset, &boffset, scaler, - &xoffset_si, &yoffset_si, &roffset_si, &boffset_si); + out_set_whitespace_offsets(symbol, 0 /*hide_text*/, 0 /*comp_xoffset*/, &xoffset, &yoffset, &roffset, &boffset, + scaler, &xoffset_si, &yoffset_si, &roffset_si, &boffset_si); /* TODO: Revisit this overspill stuff, it's hacky */ if (symbol->dot_size < 1.0f) { @@ -923,6 +918,8 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl int text_height; /* Font pixel size (so whole integers) */ float text_gap; /* Gap between barcode and text */ float guard_descent; + const int upcean_guard_whitespace = !(symbol->output_options & BARCODE_NO_QUIET_ZONES) + && (symbol->output_options & EANUPC_GUARD_WHITESPACE); const int is_codablockf = symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF; int textflags = 0; @@ -953,13 +950,18 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl main_width = symbol->width; + if (is_composite(symbol->symbology)) { + while (!module_is_set(symbol, symbol->rows - 1, comp_xoffset)) { + comp_xoffset++; + } + } if (is_extendable(symbol->symbology)) { - upceanflag = out_process_upcean(symbol, &main_width, &comp_xoffset, addon, &addon_gap); + upceanflag = out_process_upcean(symbol, comp_xoffset, &main_width, addon, &addon_gap); } hide_text = ((!symbol->show_hrt) || (ustrlen(symbol->text) == 0) || scaler < 1.0f); - out_set_whitespace_offsets(symbol, hide_text, &xoffset, &yoffset, &roffset, &boffset, si, + out_set_whitespace_offsets(symbol, hide_text, comp_xoffset, &xoffset, &yoffset, &roffset, &boffset, si, &xoffset_si, &yoffset_si, &roffset_si, &boffset_si); comp_xoffset_si = xoffset_si + comp_xoffset * si; @@ -970,7 +972,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl text_height = (UPCEAN_FONT_HEIGHT + 1) / 2; text_gap = symbol->text_gap ? symbol->text_gap : 1.0f; /* Height of guard bar descent (none for EAN-2 and EAN-5) */ - guard_descent = upceanflag != 2 && upceanflag != 5 ? symbol->guard_descent : 0.0f; + guard_descent = upceanflag >= 6 ? symbol->guard_descent : 0.0f; } else { textflags = symbol->output_options & (SMALL_TEXT | BOLD_TEXT); text_height = textflags & SMALL_TEXT ? (SMALL_FONT_HEIGHT + 1) / 2 : (NORMAL_FONT_HEIGHT + 1) / 2; @@ -1063,6 +1065,9 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl } } else { + if (upceanflag && !hide_text) { /* EAN-2, EAN-5 (standalone add-ons) */ + yposn_si += (int) (text_height + text_gap) * si; + } for (r = 0; r < symbol->rows; r++) { const int row_height_si = row_heights_si[r]; @@ -1142,6 +1147,9 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl if (!hide_text) { int text_yposn = yoffset_si + symbol_height_si + (int) (text_gap * si); /* Calculated to top of text */ + if (upceanflag == 2 || upceanflag == 5) { /* EAN-2/5 */ + text_yposn = yoffset_si; + } if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) { text_yposn += symbol->border_width * si; /* Note not needed for BARCODE_BIND_TOP */ } @@ -1172,10 +1180,22 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl text_xposn = ((addon_len == 2 ? 61 : 75) + addon_gap) * si + comp_xoffset_si; draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, image_width, image_height, si); + if (upcean_guard_whitespace) { + text_xposn = (int) (((addon_len == 2 ? 70 : 97) + 1.5f + upcea_width_adj + addon_gap) * si) + + comp_xoffset_si; + draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, addon_text_yposn, textflags, + image_width, image_height, si); + } } } else if (upceanflag == 8) { /* EAN-8 */ - int text_xposn = 17 * si + comp_xoffset_si; + int text_xposn; + if (upcean_guard_whitespace) { + text_xposn = -(ean_width_adj + 2) * si + comp_xoffset_si; + draw_string(pixelbuf, (const unsigned char *) "<", text_xposn, text_yposn, textflags, + image_width, image_height, si); + } + text_xposn = 17 * si + comp_xoffset_si; draw_string(pixelbuf, textparts[0], text_xposn, text_yposn, textflags, image_width, image_height, si); text_xposn = 50 * si + comp_xoffset_si; draw_string(pixelbuf, textparts[1], text_xposn, text_yposn, textflags, image_width, image_height, si); @@ -1183,6 +1203,16 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl text_xposn = ((addon_len == 2 ? 77 : 91) + addon_gap) * si + comp_xoffset_si; draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, image_width, image_height, si); + if (upcean_guard_whitespace) { + text_xposn = (int) (((addon_len == 2 ? 86 : 113) + 0.5f + ean_width_adj + addon_gap) * si) + + comp_xoffset_si; + draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, addon_text_yposn, textflags, + image_width, image_height, si); + } + } else if (upcean_guard_whitespace) { + text_xposn = (int) ((68 + 0.5f + ean_width_adj) * si) + comp_xoffset_si; + draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, text_yposn, textflags, + image_width, image_height, si); } } else if (upceanflag == 12) { /* UPC-A */ @@ -1200,6 +1230,12 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl text_xposn = ((addon_len == 2 ? 105 : 119) + addon_gap) * si + comp_xoffset_si; draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, image_width, image_height, si); + if (upcean_guard_whitespace) { + text_xposn = (int) (((addon_len == 2 ? 114 : 141) + 0.5f + ean_width_adj + addon_gap) * si) + + comp_xoffset_si; + draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, addon_text_yposn, textflags, + image_width, image_height, si); + } } } else { /* EAN-13 */ @@ -1213,15 +1249,33 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl text_xposn = ((addon_len == 2 ? 105 : 119) + addon_gap) * si + comp_xoffset_si; draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, image_width, image_height, si); + if (upcean_guard_whitespace) { + text_xposn = (int) (((addon_len == 2 ? 114 : 141) + 0.5f + ean_width_adj + addon_gap) * si) + + comp_xoffset_si; + draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, addon_text_yposn, textflags, + image_width, image_height, si); + } + } else if (upcean_guard_whitespace) { + text_xposn = (int) ((96 + 0.5f + ean_width_adj) * si) + comp_xoffset_si; + draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, text_yposn, textflags, + image_width, image_height, si); } } } else { - int text_xposn = (main_width / 2) * si + comp_xoffset_si; + int text_xposn = (main_width / 2) * si + xoffset_si; /* Suppress clang-analyzer-core.CallAndMessage warning */ unsigned char local_text[sizeof(symbol->text)] = {0}; to_iso8859_1(symbol->text, local_text); - /* Put the human readable text at the bottom */ + /* Put the human readable text at the bottom (or top if EAN-2/5) */ draw_string(pixelbuf, local_text, text_xposn, text_yposn, textflags, image_width, image_height, si); + /* EAN-2/5 */ + if (upceanflag && upcean_guard_whitespace) { + const int ean_width_adj = (UPCEAN_FONT_WIDTH + 3) / 4; + const int addon_len = (int) ustrlen(symbol->text); + text_xposn = (int) (((addon_len == 2 ? 19 : 46) + 0.5f + ean_width_adj) * si) + xoffset_si; + draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, text_yposn, textflags, + image_width, image_height, si); + } } } diff --git a/backend/font.h b/backend/raster_font.h similarity index 93% rename from backend/font.h rename to backend/raster_font.h index 05b22cdd..1f35bfc1 100644 --- a/backend/font.h +++ b/backend/raster_font.h @@ -1,7 +1,7 @@ -/* font.h - Font for PNG images */ +/* raster_font.h - Font for raster images (NOTE: was "font.h") */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -30,15 +30,15 @@ */ /* SPDX-License-Identifier: BSD-3-Clause */ -#ifndef Z_FONT_H -#define Z_FONT_H +#ifndef Z_RASTER_FONT_H +#define Z_RASTER_FONT_H -typedef const unsigned short font_item; +typedef unsigned short raster_font_item; #define NORMAL_FONT_WIDTH 7 #define NORMAL_FONT_HEIGHT 14 -static font_item ascii_font[] = { +static const raster_font_item ascii_font[] = { /* Each character is 7 x 14 pixels */ 0, 0, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 0, 0, /* ! */ 0, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* " */ @@ -234,7 +234,7 @@ static font_item ascii_font[] = { #define SMALL_FONT_WIDTH 5 #define SMALL_FONT_HEIGHT 9 -static font_item small_font[] = { +static const raster_font_item small_font[] = { /* Each character is 5 x 9 pixels */ 0, 2, 2, 2, 2, 0, 2, 0, 0, /* ! */ 0, 5, 5, 5, 0, 0, 0, 0, 0, /* " */ @@ -456,7 +456,7 @@ static font_item small_font[] = { #define UPCEAN_FONT_HEIGHT 14 /* Each character is 9 x 14 pixels */ -static font_item upcean_font[] = { +static const raster_font_item upcean_font[] = { /*30*/ 0x007C, 0x00FE, 0x00C6, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x00C6, 0x00FE, 0x007C, /* 0 */ /*31*/ 0x000C, 0x001C, 0x003C, 0x006C, 0x004C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, /* 1 */ /*32*/ 0x007C, 0x00FE, 0x0183, 0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0180, 0x01FE, 0x00FF, /* 2 */ @@ -467,13 +467,18 @@ static font_item upcean_font[] = { /*37*/ 0x01FF, 0x01FF, 0x0003, 0x0006, 0x000E, 0x000C, 0x0018, 0x0030, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x0060, /* 7 */ /*38*/ 0x007C, 0x00FE, 0x00C6, 0x0082, 0x00C6, 0x007C, 0x007C, 0x00EE, 0x01C7, 0x0183, 0x0183, 0x0183, 0x00FE, 0x007C, /* 8 */ /*39*/ 0x007C, 0x00FE, 0x00C7, 0x0183, 0x0183, 0x0183, 0x01C3, 0x00FE, 0x007E, 0x000C, 0x000C, 0x0018, 0x0030, 0x0060, /* 9 */ + /*3A*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* : (blank) */ + /*3B*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* ; (blank) */ + /*3C*/ 0x0000, 0x0000, 0x0007, 0x000E, 0x003C, 0x0070, 0x01E0, 0x01C0, 0x00F0, 0x0038, 0x001E, 0x0007, 0x0003, 0x0000, /* < */ + /*3D*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* = (blank) */ + /*3E*/ 0x0000, 0x0000, 0x01C0, 0x00E0, 0x0078, 0x001C, 0x000F, 0x0007, 0x001E, 0x0038, 0x00F0, 0x01C0, 0x0180, 0x0000, /* > */ }; #define UPCEAN_SMALL_FONT_WIDTH 8 #define UPCEAN_SMALL_FONT_HEIGHT 13 /* Each character is 8 x 13 pixels */ -static font_item upcean_small_font[] = { +static const raster_font_item upcean_small_font[] = { /*30*/ 0x3C, 0x7E, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x66, 0x7E, 0x3C, /* 0 */ /*31*/ 0x00, 0x0E, 0x1E, 0x36, 0x26, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, /* 1 */ /*32*/ 0x38, 0x7C, 0xC6, 0x02, 0x02, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x7E, /* 2 */ @@ -484,7 +489,12 @@ static font_item upcean_small_font[] = { /*37*/ 0x00, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, /* 7 */ /*38*/ 0x3C, 0x7E, 0x66, 0x42, 0x66, 0x3C, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0x7E, 0x3C, /* 8 */ /*39*/ 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xE3, 0x7E, 0x1E, 0x0C, 0x18, 0x30, 0x60, /* 9 */ + /*3A*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* : (blank) */ + /*3B*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ; (blank) */ + /*3C*/ 0x00, 0x00, 0x03, 0x0E, 0x1C, 0x70, 0xE0, 0xE0, 0x30, 0x1C, 0x06, 0x03, 0x00, /* < */ + /*3D*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* = (blank) */ + /*3E*/ 0x00, 0x00, 0xC0, 0xE0, 0x38, 0x1C, 0x07, 0x07, 0x1C, 0x38, 0xE0, 0xC0, 0x00, /* > */ }; /* vim: set ts=4 sw=4 et : */ -#endif /* Z_FONT_H */ +#endif /* Z_RASTER_FONT_H */ diff --git a/backend/rss.c b/backend/rss.c index ca7a7431..8c34cbdb 100644 --- a/backend/rss.c +++ b/backend/rss.c @@ -1,7 +1,7 @@ /* rss.c - GS1 DataBar (formerly Reduced Space Symbology) */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -123,14 +123,14 @@ static void getRSSwidths(int widths[], int val, int n, const int elements, const for (elmWidth = 1, narrowMask |= (1 << bar); ; elmWidth++, narrowMask &= ~(1 << bar)) { - /* get all combinations */ + /* Get all combinations */ subVal = rss_combins(n - elmWidth - 1, elements - bar - 2); - /* less combinations with no single-module element */ + /* Less combinations with no single-module element */ if ((!noNarrow) && (!narrowMask) && (n - elmWidth - (elements - bar - 1) >= elements - bar - 1)) { subVal -= rss_combins(n - elmWidth - (elements - bar), elements - bar - 2); } - /* less combinations with elements > maxVal */ + /* Less combinations with elements > maxVal */ if (elements - bar - 1 > 1) { lessVal = 0; for (mxwElement = n - elmWidth - (elements - bar - 2); @@ -285,7 +285,7 @@ INTERNAL int dbar_omnstk_set_height(struct zint_symbol *symbol, const int first_ /* GS1 DataBar Omnidirectional/Truncated/Stacked, allowing for composite if `cc_rows` set */ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int length, const int cc_rows) { int error_number = 0, i; - large_int accum; + large_uint accum; uint64_t left_pair, right_pair; int data_character[4] = {0}, data_group[4] = {0}, v_odd[4], v_even[4]; int data_widths[8][4], checksum, c_left, c_right, total_widths[46], writer; @@ -313,7 +313,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int length--; /* Ignore */ } - /* make some room for a separator row for composite symbols */ + /* Make some room for a separator row for composite symbols */ switch (symbol->symbology) { case BARCODE_DBAR_OMN_CC: case BARCODE_DBAR_STK_CC: @@ -477,7 +477,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int symbol->width = writer; } if (symbol->symbology == BARCODE_DBAR_OMN_CC) { - /* separator pattern for composite symbol */ + /* Separator pattern for composite symbol */ dbar_omn_separator(symbol, 96, separator_row, 1 /*above*/, 18, 63, 0 /*bottom_finder_value_3*/); } symbol->rows = symbol->rows + 1; @@ -502,7 +502,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int } } else if ((symbol->symbology == BARCODE_DBAR_STK) || (symbol->symbology == BARCODE_DBAR_STK_CC)) { - /* top row */ + /* Top row */ writer = 0; latch = 0; for (i = 0; i < 23; i++) { @@ -512,7 +512,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int unset_module(symbol, symbol->rows, writer + 1); symbol->row_height[symbol->rows] = 5.0f; /* ISO/IEC 24724:2011 5.3.2.1 set to 5X */ - /* bottom row */ + /* Bottom row */ symbol->rows = symbol->rows + 2; set_module(symbol, symbol->rows, 0); unset_module(symbol, symbol->rows, 1); @@ -523,7 +523,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int } symbol->row_height[symbol->rows] = 7.0f; /* ISO/IEC 24724:2011 5.3.2.1 set to 7X */ - /* separator pattern */ + /* Separator pattern */ /* See #183 for this interpretation of ISO/IEC 24724:2011 5.3.2.1 */ for (i = 1; i < 46; i++) { if (module_is_set(symbol, symbol->rows - 2, i) == module_is_set(symbol, symbol->rows, i)) { @@ -542,7 +542,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int symbol->row_height[symbol->rows - 1] = 1; if (symbol->symbology == BARCODE_DBAR_STK_CC) { - /* separator pattern for composite symbol */ + /* Separator pattern for composite symbol */ dbar_omn_separator(symbol, 50, separator_row, 1 /*above*/, 18, 0, 0 /*bottom_finder_value_3*/); } symbol->rows = symbol->rows + 1; @@ -555,7 +555,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int } } else if ((symbol->symbology == BARCODE_DBAR_OMNSTK) || (symbol->symbology == BARCODE_DBAR_OMNSTK_CC)) { - /* top row */ + /* Top row */ writer = 0; latch = 0; for (i = 0; i < 23; i++) { @@ -564,7 +564,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int set_module(symbol, symbol->rows, writer); unset_module(symbol, symbol->rows, writer + 1); - /* bottom row */ + /* Bottom row */ symbol->rows = symbol->rows + 4; set_module(symbol, symbol->rows, 0); unset_module(symbol, symbol->rows, 1); @@ -574,17 +574,17 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int writer = dbar_expand(symbol, writer, &latch, total_widths[i]); } - /* middle separator */ + /* Middle separator */ for (i = 5; i < 46; i += 2) { set_module(symbol, symbol->rows - 2, i); } symbol->row_height[symbol->rows - 2] = 1; - /* top separator */ + /* Top separator */ dbar_omn_separator(symbol, 50, symbol->rows - 3, -1 /*below*/, 18, 0, 0 /*bottom_finder_value_3*/); symbol->row_height[symbol->rows - 3] = 1; - /* bottom separator */ + /* Bottom separator */ /* 17 == 2 (guard) + 15 (inner char); +2 to skip over finder elements 4 & 5 (right to left) */ dbar_omn_separator(symbol, 50, symbol->rows - 1, 1 /*above*/, 17 + 2, 0, c_right == 3); symbol->row_height[symbol->rows - 1] = 1; @@ -593,7 +593,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int } if (symbol->symbology == BARCODE_DBAR_OMNSTK_CC) { - /* separator pattern for composite symbol */ + /* Separator pattern for composite symbol */ dbar_omn_separator(symbol, 50, separator_row, 1 /*above*/, 18, 0, 0 /*bottom_finder_value_3*/); } symbol->rows = symbol->rows + 1; @@ -621,7 +621,7 @@ INTERNAL int dbar_omn(struct zint_symbol *symbol, unsigned char source[], int le /* GS1 DataBar Limited, allowing for composite if `cc_rows` set */ INTERNAL int dbar_ltd_cc(struct zint_symbol *symbol, unsigned char source[], int length, const int cc_rows) { int error_number = 0, i; - large_int accum; + large_uint accum; uint64_t left_character, right_character; int left_group, right_group, left_odd, left_even, right_odd, right_even; int left_widths[14], right_widths[14]; @@ -657,7 +657,7 @@ INTERNAL int dbar_ltd_cc(struct zint_symbol *symbol, unsigned char source[], int } } - /* make some room for a separator row for composite symbols */ + /* Make some room for a separator row for composite symbols */ if (symbol->symbology == BARCODE_DBAR_LTD_CC) { separator_row = symbol->rows; symbol->row_height[separator_row] = 1; @@ -778,7 +778,7 @@ INTERNAL int dbar_ltd_cc(struct zint_symbol *symbol, unsigned char source[], int } symbol->rows = symbol->rows + 1; - /* add separator pattern if composite symbol */ + /* Add separator pattern if composite symbol */ if (symbol->symbology == BARCODE_DBAR_LTD_CC) { for (i = 4; i < 70; i++) { if (!(module_is_set(symbol, separator_row + 1, i))) { @@ -838,22 +838,22 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha int cdf_bp_start; /* Compressed data field start - debug only */ /* Decide whether a compressed data field is required and if so what - method to use - method 2 = no compressed data field */ + method to use - method 2 = no compressed data field */ if ((length >= 16) && ((source[0] == '0') && (source[1] == '1'))) { /* (01) and other AIs */ encoding_method = 1; - if (debug_print) printf("Choosing Method 1\n"); + if (debug_print) fputs("Choosing Method 1\n", stdout); } else { - /* any AIs */ + /* Any AIs */ encoding_method = 2; - if (debug_print) printf("Choosing Method 2\n"); + if (debug_print) fputs("Choosing Method 2\n", stdout); } if (((length >= 20) && (encoding_method == 1)) && ((source[2] == '9') && (source[16] == '3'))) { /* Possibly encoding method > 2 */ - if (debug_print) printf("Checking for other methods\n"); + if (debug_print) fputs("Checking for other methods\n", stdout); if ((length >= 26) && (source[17] == '1') && (source[18] == '0')) { /* Methods 3, 7, 9, 11 and 13 */ @@ -948,18 +948,17 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha case 6: bp = bin_append_posn(0x34, 7, binary_string, bp); /* "01101XX" */ read_posn = 23; break; - default: /* modes 7 to 14 */ + default: /* Modes 7 to 14 */ bp = bin_append_posn(56 + (encoding_method - 7), 7, binary_string, bp); read_posn = length; /* 34 or 26 */ break; } if (debug_print) printf("Setting binary = %.*s\n", bp, binary_string); - /* Variable length symbol bit field is just given a place holder (XX) - for the time being */ + /* Variable length symbol bit field is just given a place holder (XX) for the time being */ - /* Verify that the data to be placed in the compressed data field is all - numeric data before carrying out compression */ + /* Verify that the data to be placed in the compressed data field is all numeric data + before carrying out compression */ for (i = 0; i < read_posn; i++) { if (!z_isdigit(source[i])) { if (source[i] != '[') { @@ -972,7 +971,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha /* Now encode the compressed data field */ - if (debug_print) printf("Proceeding to encode data\n"); + if (debug_print) fputs("Proceeding to encode data\n", stdout); cdf_bp_start = bp; /* Debug use only */ if (encoding_method == 1) { @@ -985,10 +984,8 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha } } else if ((encoding_method == 3) || (encoding_method == 4)) { - /* Encoding method field "0100" - variable weight item - (0,001 kilogram icrements) */ - /* Encoding method field "0101" - variable weight item (0,01 or - 0,001 pound increment) */ + /* Encoding method field "0100" - variable weight item (0,001 kilogram increments) */ + /* Encoding method field "0101" - variable weight item (0,01 or 0,001 pound increment) */ for (i = 3; i < 15; i += 3) { /* Leading "019" stripped, and final check digit excluded */ bp = bin_append_posn(to_int(source + i, 3), 10, binary_string, bp); @@ -1002,8 +999,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha } else if ((encoding_method == 5) || (encoding_method == 6)) { /* Encoding method "01100" - variable measure item and price */ - /* Encoding method "01101" - variable measure item and price with ISO 4217 - Currency Code */ + /* Encoding method "01101" - variable measure item and price with ISO 4217 Currency Code */ for (i = 3; i < 15; i += 3) { /* Leading "019" stripped, and final check digit excluded */ bp = bin_append_posn(to_int(source + i, 3), 10, binary_string, bp); @@ -1016,8 +1012,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha } } else if ((encoding_method >= 7) && (encoding_method <= 14)) { - /* Encoding method fields "0111000" through "0111111" - variable - weight item plus date */ + /* Encoding method fields "0111000" through "0111111" - variable weight item plus date */ int group_val; char weight_str[8]; @@ -1050,7 +1045,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha } /* The compressed data field has been processed if appropriate - the - rest of the data (if any) goes into a general-purpose data compaction field */ + rest of the data (if any) goes into a general-purpose data compaction field */ j = 0; for (i = read_posn; i < length; i++) { @@ -1096,7 +1091,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha if (last_digit) { /* There is still one more numeric digit to encode */ - if (debug_print) printf("Adding extra (odd) numeric digit\n"); + if (debug_print) fputs("Adding extra (odd) numeric digit\n", stdout); if ((remainder >= 4) && (remainder <= 6)) { bp = bin_append_posn(ctoi(last_digit) + 1, 4, binary_string, bp); @@ -1198,7 +1193,7 @@ static void dbar_exp_separator(struct zint_symbol *symbol, int width, const int } } - /* finder adjustment */ + /* Finder adjustment */ for (j = 0; j < cols; j++) { /* 49 == data (17) + finder (15) + data(17) triplet, 19 == 2 (guard) + 17 (initial check/data character) */ k = (49 * j) + 19 + special_case_row; @@ -1295,7 +1290,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int } if ((symbol->symbology == BARCODE_DBAR_EXP_CC) || (symbol->symbology == BARCODE_DBAR_EXPSTK_CC)) { - /* make space for a composite separator pattern */ + /* Make space for a composite separator pattern */ separator_row = symbol->rows; symbol->row_height[separator_row] = 1; symbol->rows += 1; @@ -1329,7 +1324,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int data_chars = bp / 12; - if (debug_print) printf("Data:"); + if (debug_print) fputs("Data:", stdout); for (i = 0; i < data_chars; i++) { k = i * 12; vs = 0; @@ -1365,7 +1360,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int char_widths[i][5] = widths[2]; char_widths[i][7] = widths[3]; } - if (debug_print) printf("\n"); + if (debug_print) fputc('\n', stdout); /* 7.2.6 Check character */ /* The checksum value is equal to the mod 211 residue of the weighted sum of the widths of the @@ -1449,10 +1444,10 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int if ((symbol->symbology == BARCODE_DBAR_EXP) || (symbol->symbology == BARCODE_DBAR_EXP_CC)) { /* Copy elements into symbol */ - elements[0] = 1; /* left guard */ + elements[0] = 1; /* Left guard */ elements[1] = 1; - elements[pattern_width - 2] = 1; /* right guard */ + elements[pattern_width - 2] = 1; /* Right guard */ elements[pattern_width - 1] = 1; writer = 0; @@ -1497,12 +1492,12 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int } /* Row Start */ - sub_elements[0] = 1; /* left guard */ + sub_elements[0] = 1; /* Left guard */ sub_elements[1] = 1; elements_in_sub = 2; /* If last row and is partial and even-numbered, and have even columns (segment pairs), - * and odd number of finders (== odd number of columns) */ + and odd number of finders (== odd number of columns) */ if ((current_row == stack_rows) && (num_columns != cols_per_row) && !(current_row & 1) && !(cols_per_row & 1) && (num_columns & 1)) { /* Special case bottom row */ @@ -1511,7 +1506,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int } /* If odd number of columns or current row odd-numbered or special case last row then left-to-right, - * else right-to-left */ + else right-to-left */ if ((cols_per_row & 1) || (current_row & 1) || special_case_row) { left_to_right = 1; } else { @@ -1544,7 +1539,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int } while ((reader < cols_per_row) && (current_block < codeblocks)); /* Row Stop */ - sub_elements[elements_in_sub] = 1; /* right guard */ + sub_elements[elements_in_sub] = 1; /* Right guard */ sub_elements[elements_in_sub + 1] = 1; elements_in_sub += 2; @@ -1561,20 +1556,20 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int if (current_row != 1) { int odd_last_row = (current_row == stack_rows) && (data_chars % 2 == 0); - /* middle separator pattern (above current row) */ + /* Middle separator pattern (above current row) */ for (j = 5; j < (49 * cols_per_row); j += 2) { set_module(symbol, symbol->rows - 2, j); } symbol->row_height[symbol->rows - 2] = 1; - /* bottom separator pattern (above current row) */ + /* Bottom separator pattern (above current row) */ dbar_exp_separator(symbol, writer, reader, symbol->rows - 1, 1 /*above*/, special_case_row, left_to_right, odd_last_row, &v2_latch); symbol->row_height[symbol->rows - 1] = 1; } if (current_row != stack_rows) { - /* top separator pattern (below current row) */ + /* Top separator pattern (below current row) */ dbar_exp_separator(symbol, writer, reader, symbol->rows + 1, -1 /*below*/, 0 /*special_case_row*/, left_to_right, 0 /*odd_last_row*/, &v2_latch); symbol->row_height[symbol->rows + 1] = 1; diff --git a/backend/svg.c b/backend/svg.c index ddb6d2b9..dbc4ec6a 100644 --- a/backend/svg.c +++ b/backend/svg.c @@ -31,93 +31,90 @@ /* SPDX-License-Identifier: BSD-3-Clause */ #include -#include #include #include #include "common.h" #include "output.h" +#include "fonts/upcean_woff2.h" -static void pick_colour(int colour, char colour_code[]) { - switch (colour) { - case 1: /* Cyan */ - strcpy(colour_code, "00ffff"); - break; - case 2: /* Blue */ - strcpy(colour_code, "0000ff"); - break; - case 3: /* Magenta */ - strcpy(colour_code, "ff00ff"); - break; - case 4: /* Red */ - strcpy(colour_code, "ff0000"); - break; - case 5: /* Yellow */ - strcpy(colour_code, "ffff00"); - break; - case 6: /* Green */ - strcpy(colour_code, "00ff00"); - break; - case 8: /* White */ - strcpy(colour_code, "ffffff"); - break; - default: /* Black */ - strcpy(colour_code, "000000"); - break; - } +/* Convert Ultracode rectangle colour to RGB */ +static void svg_pick_colour(const int colour, char colour_code[7]) { + const int idx = colour >= 1 && colour <= 8 ? colour - 1 : 6 /*black*/; + static const char rgbs[8][7] = { + "00ffff", /* 0: Cyan (1) */ + "0000ff", /* 1: Blue (2) */ + "ff00ff", /* 2: Magenta (3) */ + "ff0000", /* 3: Red (4) */ + "ffff00", /* 4: Yellow (5) */ + "00ff00", /* 5: Green (6) */ + "000000", /* 6: Black (7) */ + "ffffff", /* 7: White (8) */ + }; + strcpy(colour_code, rgbs[idx]); } -static void make_html_friendly(unsigned char *string, char *html_version) { - /* Converts text to use HTML entity codes */ +/* Convert text to use HTML entity codes */ +static void svg_make_html_friendly(const unsigned char *string, char *html_version) { - int i, len, html_pos; - - html_pos = 0; - html_version[html_pos] = '\0'; - len = (int) ustrlen(string); - - for (i = 0; i < len; i++) { - switch (string[i]) { + for (; *string; string++) { + switch (*string) { case '>': - strcat(html_version, ">"); - html_pos += 4; + strcpy(html_version, ">"); + html_version += 4; break; case '<': - strcat(html_version, "<"); - html_pos += 4; + strcpy(html_version, "<"); + html_version += 4; break; case '&': - strcat(html_version, "&"); - html_pos += 5; + strcpy(html_version, "&"); + html_version += 5; break; case '"': - strcat(html_version, """); - html_pos += 6; + strcpy(html_version, """); + html_version += 6; break; case '\'': - strcat(html_version, "'"); - html_pos += 6; + strcpy(html_version, "'"); + html_version += 6; break; default: - html_version[html_pos] = string[i]; - html_pos++; - html_version[html_pos] = '\0'; + *html_version++ = *string; break; } } + + *html_version = '\0'; +} + +/* Helper to output floating point attribute */ +static void svg_put_fattrib(const char *prefix, const int dp, const float val, FILE *fsvg) { + out_putsf(prefix, dp, val, fsvg); + fputc('"', fsvg); +} + +/* Helper to output opacity attribute attribute and close tag (maybe) */ +static void svg_put_opacity_close(const unsigned char alpha, const float val, const int close, FILE *fsvg) { + if (alpha != 0xff) { + svg_put_fattrib(" opacity=\"", 3, val, fsvg); + } + if (close) { + fputc('/', fsvg); + } + fputs(">\n", fsvg); } INTERNAL int svg_plot(struct zint_symbol *symbol) { static const char font_family[] = "Helvetica, sans-serif"; + static const char upcean_font_family[] = "OCRB, monospace"; FILE *fsvg; int error_number = 0; - const char *locale = NULL; - float ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy; float previous_diameter; float radius, half_radius, half_sqrt3_radius; int i; @@ -136,6 +133,7 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) { char colour_code[7]; int len, html_len; + const int extendable = is_extendable(symbol->symbology); const int output_to_stdout = symbol->output_options & BARCODE_STDOUT; char *html_string; @@ -164,11 +162,14 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) { break; } } + if (symbol->output_options & EANUPC_GUARD_WHITESPACE) { + html_len += 12; /* Allow for "<" & ">" */ + } html_string = (char *) z_alloca(html_len); /* Check for no created vector set */ - /* E-Mail Christian Schmitz 2019-09-10: reason unknown Ticket #164*/ + /* E-Mail Christian Schmitz 2019-09-10: reason unknown Ticket #164 */ if (symbol->vector == NULL) { strcpy(symbol->errtxt, "681: Vector header NULL"); return ZINT_ERROR_INVALID_DATA; @@ -182,86 +183,99 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) { } } - locale = setlocale(LC_ALL, "C"); - /* Start writing the header */ fputs("\n" - "\n", fsvg); - fprintf(fsvg, "\n", + fsvg); + fprintf(fsvg, "\n", (int) ceilf(symbol->vector->width), (int) ceilf(symbol->vector->height)); - fputs(" xmlns=\"http://www.w3.org/2000/svg\">\n" - " Zint Generated Symbol\n" - " \n", fsvg); - fprintf(fsvg, "\n \n", fgcolour_string); + fputs(" Zint Generated Symbol\n", fsvg); + if ((symbol->output_options & EMBED_VECTOR_FONT) && extendable && symbol->vector->strings) { + fprintf(fsvg, " \n", + upcean_woff2); + } + fprintf(fsvg, " \n", fgcolour_string); if (bg_alpha != 0) { - fprintf(fsvg, " vector->width), (int) ceilf(symbol->vector->height), bgcolour_string); - if (bg_alpha != 0xff) { - fprintf(fsvg, " opacity=\"%.3f\"", bg_alpha_opacity); - } - fputs(" />\n", fsvg); + svg_put_opacity_close(bg_alpha, bg_alpha_opacity, 1 /*close*/, fsvg); } - rect = symbol->vector->rectangles; - while (rect) { - fprintf(fsvg, " x, rect->y, rect->width, rect->height); - if (rect->colour != -1) { - pick_colour(rect->colour, colour_code); + if (symbol->vector->rectangles) { + int current_colour = 0; + rect = symbol->vector->rectangles; + fputs(" colour != current_colour) { + fputc('"', fsvg); + if (current_colour != -1) { + svg_pick_colour(current_colour, colour_code); + fprintf(fsvg, " fill=\"#%s\"", colour_code); + } + svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 1 /*close*/, fsvg); + fputs(" colour; + out_putsf("M", 2, rect->x, fsvg); + out_putsf(" ", 2, rect->y, fsvg); + out_putsf("h", 2, rect->width, fsvg); + out_putsf("v", 2, rect->height, fsvg); + out_putsf("h-", 2, rect->width, fsvg); + fputs("Z", fsvg); + rect = rect->next; + } + fputc('"', fsvg); + if (current_colour != -1) { + svg_pick_colour(current_colour, colour_code); fprintf(fsvg, " fill=\"#%s\"", colour_code); } - if (fg_alpha != 0xff) { - fprintf(fsvg, " opacity=\"%.3f\"", fg_alpha_opacity); - } - fputs(" />\n", fsvg); - rect = rect->next; + svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 1 /*close*/, fsvg); } - previous_diameter = radius = half_radius = half_sqrt3_radius = 0.0f; - hex = symbol->vector->hexagons; - while (hex) { - if (previous_diameter != hex->diameter) { - previous_diameter = hex->diameter; - radius = (float) (0.5 * previous_diameter); - half_radius = (float) (0.25 * previous_diameter); - half_sqrt3_radius = (float) (0.43301270189221932338 * previous_diameter); + if (symbol->vector->hexagons) { + previous_diameter = radius = half_radius = half_sqrt3_radius = 0.0f; + hex = symbol->vector->hexagons; + fputs(" diameter) { + previous_diameter = hex->diameter; + radius = (float) (0.5 * previous_diameter); + half_radius = (float) (0.25 * previous_diameter); + half_sqrt3_radius = (float) (0.43301270189221932338 * previous_diameter); + } + if ((hex->rotation == 0) || (hex->rotation == 180)) { + out_putsf("M", 2, hex->x, fsvg); + out_putsf(" ", 2, hex->y + radius, fsvg); + out_putsf("L", 2, hex->x + half_sqrt3_radius, fsvg); + out_putsf(" ", 2, hex->y + half_radius, fsvg); + out_putsf("L", 2, hex->x + half_sqrt3_radius, fsvg); + out_putsf(" ", 2, hex->y - half_radius, fsvg); + out_putsf("L", 2, hex->x, fsvg); + out_putsf(" ", 2, hex->y - radius, fsvg); + out_putsf("L", 2, hex->x - half_sqrt3_radius, fsvg); + out_putsf(" ", 2, hex->y - half_radius, fsvg); + out_putsf("L", 2, hex->x - half_sqrt3_radius, fsvg); + out_putsf(" ", 2, hex->y + half_radius, fsvg); + } else { + out_putsf("M", 2, hex->x - radius, fsvg); + out_putsf(" ", 2, hex->y, fsvg); + out_putsf("L", 2, hex->x - half_radius, fsvg); + out_putsf(" ", 2, hex->y + half_sqrt3_radius, fsvg); + out_putsf("L", 2, hex->x + half_radius, fsvg); + out_putsf(" ", 2, hex->y + half_sqrt3_radius, fsvg); + out_putsf("L", 2, hex->x + radius, fsvg); + out_putsf(" ", 2, hex->y, fsvg); + out_putsf("L", 2, hex->x + half_radius, fsvg); + out_putsf(" ", 2, hex->y - half_sqrt3_radius, fsvg); + out_putsf("L", 2, hex->x - half_radius, fsvg); + out_putsf(" ", 2, hex->y - half_sqrt3_radius, fsvg); + } + fputc('Z', fsvg); + hex = hex->next; } - if ((hex->rotation == 0) || (hex->rotation == 180)) { - ay = hex->y + radius; - by = hex->y + half_radius; - cy = hex->y - half_radius; - dy = hex->y - radius; - ey = hex->y - half_radius; - fy = hex->y + half_radius; - ax = hex->x; - bx = hex->x + half_sqrt3_radius; - cx = hex->x + half_sqrt3_radius; - dx = hex->x; - ex = hex->x - half_sqrt3_radius; - fx = hex->x - half_sqrt3_radius; - } else { - ay = hex->y; - by = hex->y + half_sqrt3_radius; - cy = hex->y + half_sqrt3_radius; - dy = hex->y; - ey = hex->y - half_sqrt3_radius; - fy = hex->y - half_sqrt3_radius; - ax = hex->x - radius; - bx = hex->x - half_radius; - cx = hex->x + half_radius; - dx = hex->x + radius; - ex = hex->x + half_radius; - fx = hex->x - half_radius; - } - fprintf(fsvg, " \n", fsvg); - hex = hex->next; + fputc('"', fsvg); + svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 1 /*close*/, fsvg); } previous_diameter = radius = 0.0f; @@ -271,59 +285,61 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) { previous_diameter = circle->diameter; radius = (float) (0.5 * previous_diameter); } - fprintf(fsvg, " x, circle->y, circle->width ? 3 : 2, radius); + fputs(" x, fsvg); + svg_put_fattrib(" cy=\"", 2, circle->y, fsvg); + svg_put_fattrib(" r=\"", circle->width ? 3 : 2, radius, fsvg); if (circle->colour) { /* Legacy - no longer used */ if (circle->width) { - fprintf(fsvg, " stroke=\"#%s\" stroke-width=\"%.3f\" fill=\"none\"", bgcolour_string, circle->width); + fprintf(fsvg, " stroke=\"#%s\"", bgcolour_string); + svg_put_fattrib(" stroke-width=\"", 3, circle->width, fsvg); + fputs(" fill=\"none\"", fsvg); } else { fprintf(fsvg, " fill=\"#%s\"", bgcolour_string); } - if (bg_alpha != 0xff) { - /* This doesn't work how the user is likely to expect - more work needed! */ - fprintf(fsvg, " opacity=\"%.3f\"", bg_alpha_opacity); - } + /* This doesn't work how the user is likely to expect - more work needed! */ + svg_put_opacity_close(bg_alpha, bg_alpha_opacity, 1 /*close*/, fsvg); } else { if (circle->width) { - fprintf(fsvg, " stroke=\"#%s\" stroke-width=\"%.3f\" fill=\"none\"", fgcolour_string, circle->width); - } - if (fg_alpha != 0xff) { - fprintf(fsvg, " opacity=\"%.3f\"", fg_alpha_opacity); + fprintf(fsvg, " stroke=\"#%s\"", fgcolour_string); + svg_put_fattrib(" stroke-width=\"", 3, circle->width, fsvg); + fputs(" fill=\"none\"", fsvg); } + svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 1 /*close*/, fsvg); } - fputs(" />\n", fsvg); circle = circle->next; } - bold = (symbol->output_options & BOLD_TEXT) && !is_extendable(symbol->symbology); + bold = (symbol->output_options & BOLD_TEXT) && !extendable; string = symbol->vector->strings; while (string) { const char *const halign = string->halign == 2 ? "end" : string->halign == 1 ? "start" : "middle"; - fprintf(fsvg, " x, string->y, halign); - fprintf(fsvg, " font-family=\"%s\" font-size=\"%.1f\"", font_family, string->fsize); + fputs(" x, fsvg); + svg_put_fattrib(" y=\"", 2, string->y, fsvg); + fprintf(fsvg, " text-anchor=\"%s\"", halign); + fprintf(fsvg, " font-family=\"%s\"", extendable ? upcean_font_family : font_family); + svg_put_fattrib(" font-size=\"", 1, string->fsize, fsvg); if (bold) { fputs(" font-weight=\"bold\"", fsvg); } - if (fg_alpha != 0xff) { - fprintf(fsvg, " opacity=\"%.3f\"", fg_alpha_opacity); - } if (string->rotation != 0) { - fprintf(fsvg, " transform=\"rotate(%d,%.2f,%.2f)\"", string->rotation, string->x, string->y); + fprintf(fsvg, " transform=\"rotate(%d", string->rotation); + out_putsf(",", 2, string->x, fsvg); + out_putsf(",", 2, string->y, fsvg); + fputs(")\"", fsvg); } - fputs(" >\n", fsvg); - make_html_friendly(string->text, html_string); - fprintf(fsvg, " %s\n", html_string); - fputs(" \n", fsvg); + svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 0 /*close*/, fsvg); + svg_make_html_friendly(string->text, html_string); + fprintf(fsvg, " %s\n", html_string); + fputs(" \n", fsvg); string = string->next; } - fputs(" \n" + fputs(" \n" "\n", fsvg); - if (locale) - setlocale(LC_ALL, locale); - if (ferror(fsvg)) { sprintf(symbol->errtxt, "682: Incomplete write to output (%d: %.30s)", errno, strerror(errno)); if (!output_to_stdout) { diff --git a/backend/tests/data/emf/ean13_5addon_#185.emf b/backend/tests/data/emf/ean13_5addon_#185.emf index 8b88ca1f..0d773bd9 100644 Binary files a/backend/tests/data/emf/ean13_5addon_#185.emf and b/backend/tests/data/emf/ean13_5addon_#185.emf differ diff --git a/backend/tests/data/emf/ean13_5addon_ggs_5.2.2.5.2-2.emf b/backend/tests/data/emf/ean13_5addon_ggs_5.2.2.5.2-2.emf index 54cc2ef5..86c77b5e 100644 Binary files a/backend/tests/data/emf/ean13_5addon_ggs_5.2.2.5.2-2.emf and b/backend/tests/data/emf/ean13_5addon_ggs_5.2.2.5.2-2.emf differ diff --git a/backend/tests/data/emf/ean13_5addon_ggs_5.2.2.5.2-2_gws.emf b/backend/tests/data/emf/ean13_5addon_ggs_5.2.2.5.2-2_gws.emf new file mode 100644 index 00000000..49bcca7d Binary files /dev/null and b/backend/tests/data/emf/ean13_5addon_ggs_5.2.2.5.2-2_gws.emf differ diff --git a/backend/tests/data/emf/ean13_ggs_5.2.2.1-1.emf b/backend/tests/data/emf/ean13_ggs_5.2.2.1-1.emf new file mode 100644 index 00000000..fbd7536d Binary files /dev/null and b/backend/tests/data/emf/ean13_ggs_5.2.2.1-1.emf differ diff --git a/backend/tests/data/emf/ean13_ggs_5.2.2.1-1_gws.emf b/backend/tests/data/emf/ean13_ggs_5.2.2.1-1_gws.emf new file mode 100644 index 00000000..bc1d961e Binary files /dev/null and b/backend/tests/data/emf/ean13_ggs_5.2.2.1-1_gws.emf differ diff --git a/backend/tests/data/emf/ean8_gss_5.2.2.2-1.emf b/backend/tests/data/emf/ean8_gss_5.2.2.2-1.emf new file mode 100644 index 00000000..cf34b6d6 Binary files /dev/null and b/backend/tests/data/emf/ean8_gss_5.2.2.2-1.emf differ diff --git a/backend/tests/data/emf/ean8_gss_5.2.2.2-1_gws.emf b/backend/tests/data/emf/ean8_gss_5.2.2.2-1_gws.emf new file mode 100644 index 00000000..453269df Binary files /dev/null and b/backend/tests/data/emf/ean8_gss_5.2.2.2-1_gws.emf differ diff --git a/backend/tests/data/emf/upca_2addon_ggs_5.2.6.6-5.emf b/backend/tests/data/emf/upca_2addon_ggs_5.2.6.6-5.emf index eaaab842..55f72c8d 100644 Binary files a/backend/tests/data/emf/upca_2addon_ggs_5.2.6.6-5.emf and b/backend/tests/data/emf/upca_2addon_ggs_5.2.6.6-5.emf differ diff --git a/backend/tests/data/emf/upca_2addon_ggs_5.2.6.6-5_gws.emf b/backend/tests/data/emf/upca_2addon_ggs_5.2.6.6-5_gws.emf new file mode 100644 index 00000000..78aaae1f Binary files /dev/null and b/backend/tests/data/emf/upca_2addon_ggs_5.2.6.6-5_gws.emf differ diff --git a/backend/tests/data/emf/upce_2addon.emf b/backend/tests/data/emf/upce_2addon.emf index 4a12e18e..85d9ddd9 100644 Binary files a/backend/tests/data/emf/upce_2addon.emf and b/backend/tests/data/emf/upce_2addon.emf differ diff --git a/backend/tests/data/emf/upce_2addon_150dpi.emf b/backend/tests/data/emf/upce_2addon_150dpi.emf index bee31869..b47ddbe5 100644 Binary files a/backend/tests/data/emf/upce_2addon_150dpi.emf and b/backend/tests/data/emf/upce_2addon_150dpi.emf differ diff --git a/backend/tests/data/emf/upce_2addon_gws.emf b/backend/tests/data/emf/upce_2addon_gws.emf new file mode 100644 index 00000000..73868357 Binary files /dev/null and b/backend/tests/data/emf/upce_2addon_gws.emf differ diff --git a/backend/tests/data/emf/upce_2addon_small_bold.emf b/backend/tests/data/emf/upce_2addon_small_bold.emf index 3a9a1d06..829e0429 100644 Binary files a/backend/tests/data/emf/upce_2addon_small_bold.emf and b/backend/tests/data/emf/upce_2addon_small_bold.emf differ diff --git a/backend/tests/data/emf/upce_2addon_small_bold_gws.emf b/backend/tests/data/emf/upce_2addon_small_bold_gws.emf new file mode 100644 index 00000000..cda40e47 Binary files /dev/null and b/backend/tests/data/emf/upce_2addon_small_bold_gws.emf differ diff --git a/backend/tests/data/eps/code128_egrave_bold.eps b/backend/tests/data/eps/code128_egrave_bold.eps index 27ebb1b8..0d2baf68 100644 --- a/backend/tests/data/eps/code128_egrave_bold.eps +++ b/backend/tests/data/eps/code128_egrave_bold.eps @@ -4,76 +4,42 @@ %%Pages: 0 %%BoundingBox: 0 0 224 119 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -118.90 0.00 TB 0.00 224.00 TR -TE -0.00 0.00 0.00 setrgbcolor -100.00 18.90 TB 0.00 4.00 TR -TE -100.00 18.90 TB 6.00 2.00 TR -TE -100.00 18.90 TB 12.00 2.00 TR -TE -100.00 18.90 TB 22.00 2.00 TR -TE -100.00 18.90 TB 26.00 8.00 TR -TE -100.00 18.90 TB 36.00 6.00 TR -TE -100.00 18.90 TB 44.00 4.00 TR -TE -100.00 18.90 TB 54.00 2.00 TR -TE -100.00 18.90 TB 62.00 2.00 TR -TE -100.00 18.90 TB 66.00 2.00 TR -TE -100.00 18.90 TB 72.00 4.00 TR -TE -100.00 18.90 TB 78.00 2.00 TR -TE -100.00 18.90 TB 88.00 2.00 TR -TE -100.00 18.90 TB 98.00 4.00 TR -TE -100.00 18.90 TB 106.00 2.00 TR -TE -100.00 18.90 TB 110.00 2.00 TR -TE -100.00 18.90 TB 114.00 2.00 TR -TE -100.00 18.90 TB 120.00 8.00 TR -TE -100.00 18.90 TB 132.00 2.00 TR -TE -100.00 18.90 TB 138.00 2.00 TR -TE -100.00 18.90 TB 142.00 8.00 TR -TE -100.00 18.90 TB 154.00 4.00 TR -TE -100.00 18.90 TB 160.00 4.00 TR -TE -100.00 18.90 TB 166.00 8.00 TR -TE -100.00 18.90 TB 176.00 2.00 TR -TE -100.00 18.90 TB 184.00 4.00 TR -TE -100.00 18.90 TB 194.00 2.00 TR -TE -100.00 18.90 TB 198.00 4.00 TR -TE -100.00 18.90 TB 208.00 6.00 TR -TE -100.00 18.90 TB 216.00 2.00 TR -TE -100.00 18.90 TB 220.00 4.00 TR -TE +1 1 1 setrgbcolor +118.9 224 0 0 TR +0 0 0 setrgbcolor +100 4 0 18.9 TR +100 2 6 18.9 TR +100 2 12 18.9 TR +100 2 22 18.9 TR +100 8 26 18.9 TR +100 6 36 18.9 TR +100 4 44 18.9 TR +100 2 54 18.9 TR +100 2 62 18.9 TR +100 2 66 18.9 TR +100 4 72 18.9 TR +100 2 78 18.9 TR +100 2 88 18.9 TR +100 4 98 18.9 TR +100 2 106 18.9 TR +100 2 110 18.9 TR +100 2 114 18.9 TR +100 8 120 18.9 TR +100 2 132 18.9 TR +100 2 138 18.9 TR +100 8 142 18.9 TR +100 4 154 18.9 TR +100 4 160 18.9 TR +100 8 166 18.9 TR +100 2 176 18.9 TR +100 4 184 18.9 TR +100 2 194 18.9 TR +100 4 198 18.9 TR +100 6 208 18.9 TR +100 2 216 18.9 TR +100 4 220 18.9 TR /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall @@ -81,12 +47,7 @@ dup length dict begin currentdict end /Helvetica-ISOLatin1 exch definefont pop -matrix currentmatrix -/Helvetica-ISOLatin1 findfont -14.00 scalefont setfont - 0 0 moveto 112.00 4.90 translate 0.00 rotate 0 0 moveto - (Égjpqy) stringwidth -pop --2 div 0 rmoveto +/Helvetica-ISOLatin1 findfont 14 scalefont setfont + 112 4.9 moveto + (Égjpqy) stringwidth pop -2 div 0 rmoveto (Égjpqy) show -setmatrix diff --git a/backend/tests/data/eps/code128_egrave_bold_rotate_90.eps b/backend/tests/data/eps/code128_egrave_bold_rotate_90.eps index 281cc11c..c04795dd 100644 --- a/backend/tests/data/eps/code128_egrave_bold_rotate_90.eps +++ b/backend/tests/data/eps/code128_egrave_bold_rotate_90.eps @@ -4,76 +4,42 @@ %%Pages: 0 %%BoundingBox: 0 0 119 224 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -224.00 0.00 TB 0.00 118.90 TR -TE -0.00 0.00 0.00 setrgbcolor -4.00 220.00 TB 18.90 100.00 TR -TE -2.00 216.00 TB 18.90 100.00 TR -TE -2.00 210.00 TB 18.90 100.00 TR -TE -2.00 200.00 TB 18.90 100.00 TR -TE -8.00 190.00 TB 18.90 100.00 TR -TE -6.00 182.00 TB 18.90 100.00 TR -TE -4.00 176.00 TB 18.90 100.00 TR -TE -2.00 168.00 TB 18.90 100.00 TR -TE -2.00 160.00 TB 18.90 100.00 TR -TE -2.00 156.00 TB 18.90 100.00 TR -TE -4.00 148.00 TB 18.90 100.00 TR -TE -2.00 144.00 TB 18.90 100.00 TR -TE -2.00 134.00 TB 18.90 100.00 TR -TE -4.00 122.00 TB 18.90 100.00 TR -TE -2.00 116.00 TB 18.90 100.00 TR -TE -2.00 112.00 TB 18.90 100.00 TR -TE -2.00 108.00 TB 18.90 100.00 TR -TE -8.00 96.00 TB 18.90 100.00 TR -TE -2.00 90.00 TB 18.90 100.00 TR -TE -2.00 84.00 TB 18.90 100.00 TR -TE -8.00 74.00 TB 18.90 100.00 TR -TE -4.00 66.00 TB 18.90 100.00 TR -TE -4.00 60.00 TB 18.90 100.00 TR -TE -8.00 50.00 TB 18.90 100.00 TR -TE -2.00 46.00 TB 18.90 100.00 TR -TE -4.00 36.00 TB 18.90 100.00 TR -TE -2.00 28.00 TB 18.90 100.00 TR -TE -4.00 22.00 TB 18.90 100.00 TR -TE -6.00 10.00 TB 18.90 100.00 TR -TE -2.00 6.00 TB 18.90 100.00 TR -TE -4.00 0.00 TB 18.90 100.00 TR -TE +1 1 1 setrgbcolor +224 118.9 0 0 TR +0 0 0 setrgbcolor +4 100 18.9 220 TR +2 100 18.9 216 TR +2 100 18.9 210 TR +2 100 18.9 200 TR +8 100 18.9 190 TR +6 100 18.9 182 TR +4 100 18.9 176 TR +2 100 18.9 168 TR +2 100 18.9 160 TR +2 100 18.9 156 TR +4 100 18.9 148 TR +2 100 18.9 144 TR +2 100 18.9 134 TR +4 100 18.9 122 TR +2 100 18.9 116 TR +2 100 18.9 112 TR +2 100 18.9 108 TR +8 100 18.9 96 TR +2 100 18.9 90 TR +2 100 18.9 84 TR +8 100 18.9 74 TR +4 100 18.9 66 TR +4 100 18.9 60 TR +8 100 18.9 50 TR +2 100 18.9 46 TR +4 100 18.9 36 TR +2 100 18.9 28 TR +4 100 18.9 22 TR +6 100 18.9 10 TR +2 100 18.9 6 TR +4 100 18.9 0 TR /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall @@ -81,15 +47,10 @@ dup length dict begin currentdict end /Helvetica-ISOLatin1 exch definefont pop -matrix currentmatrix -/Helvetica-ISOLatin1 findfont -14.00 scalefont setfont - 0 0 moveto 4.90 112.00 translate 0.00 rotate 0 0 moveto - (Égjpqy) stringwidth -gsave -270 rotate -pop --2 div 0 rmoveto +/Helvetica-ISOLatin1 findfont 14 scalefont setfont + 4.9 112 moveto + (Égjpqy) stringwidth pop -2 div 0 rmoveto + gsave + 270 rotate (Égjpqy) show -grestore -setmatrix + grestore diff --git a/backend/tests/data/eps/code128_escape_latin1.eps b/backend/tests/data/eps/code128_escape_latin1.eps index 5bd695d1..cd09326c 100644 --- a/backend/tests/data/eps/code128_escape_latin1.eps +++ b/backend/tests/data/eps/code128_escape_latin1.eps @@ -4,82 +4,45 @@ %%Pages: 0 %%BoundingBox: 0 0 246 119 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -118.90 0.00 TB 0.00 246.00 TR -TE -0.00 0.00 0.00 setrgbcolor -100.00 18.90 TB 0.00 4.00 TR -TE -100.00 18.90 TB 6.00 2.00 TR -TE -100.00 18.90 TB 12.00 2.00 TR -TE -100.00 18.90 TB 22.00 2.00 TR -TE -100.00 18.90 TB 26.00 2.00 TR -TE -100.00 18.90 TB 34.00 4.00 TR -TE -100.00 18.90 TB 44.00 6.00 TR -TE -100.00 18.90 TB 52.00 8.00 TR -TE -100.00 18.90 TB 62.00 2.00 TR -TE -100.00 18.90 TB 66.00 2.00 TR -TE -100.00 18.90 TB 74.00 2.00 TR -TE -100.00 18.90 TB 78.00 4.00 TR -TE -100.00 18.90 TB 88.00 4.00 TR -TE -100.00 18.90 TB 96.00 2.00 TR -TE -100.00 18.90 TB 102.00 2.00 TR -TE -100.00 18.90 TB 110.00 2.00 TR -TE -100.00 18.90 TB 114.00 8.00 TR -TE -100.00 18.90 TB 124.00 6.00 TR -TE -100.00 18.90 TB 132.00 2.00 TR -TE -100.00 18.90 TB 138.00 4.00 TR -TE -100.00 18.90 TB 144.00 2.00 TR -TE -100.00 18.90 TB 154.00 2.00 TR -TE -100.00 18.90 TB 162.00 4.00 TR -TE -100.00 18.90 TB 170.00 2.00 TR -TE -100.00 18.90 TB 176.00 2.00 TR -TE -100.00 18.90 TB 180.00 4.00 TR -TE -100.00 18.90 TB 190.00 2.00 TR -TE -100.00 18.90 TB 198.00 2.00 TR -TE -100.00 18.90 TB 204.00 6.00 TR -TE -100.00 18.90 TB 214.00 4.00 TR -TE -100.00 18.90 TB 220.00 4.00 TR -TE -100.00 18.90 TB 230.00 6.00 TR -TE -100.00 18.90 TB 238.00 2.00 TR -TE -100.00 18.90 TB 242.00 4.00 TR -TE +1 1 1 setrgbcolor +118.9 246 0 0 TR +0 0 0 setrgbcolor +100 4 0 18.9 TR +100 2 6 18.9 TR +100 2 12 18.9 TR +100 2 22 18.9 TR +100 2 26 18.9 TR +100 4 34 18.9 TR +100 6 44 18.9 TR +100 8 52 18.9 TR +100 2 62 18.9 TR +100 2 66 18.9 TR +100 2 74 18.9 TR +100 4 78 18.9 TR +100 4 88 18.9 TR +100 2 96 18.9 TR +100 2 102 18.9 TR +100 2 110 18.9 TR +100 8 114 18.9 TR +100 6 124 18.9 TR +100 2 132 18.9 TR +100 4 138 18.9 TR +100 2 144 18.9 TR +100 2 154 18.9 TR +100 4 162 18.9 TR +100 2 170 18.9 TR +100 2 176 18.9 TR +100 4 180 18.9 TR +100 2 190 18.9 TR +100 2 198 18.9 TR +100 6 204 18.9 TR +100 4 214 18.9 TR +100 4 220 18.9 TR +100 6 230 18.9 TR +100 2 238 18.9 TR +100 4 242 18.9 TR /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall @@ -87,12 +50,7 @@ dup length dict begin currentdict end /Helvetica-ISOLatin1 exch definefont pop -matrix currentmatrix -/Helvetica-ISOLatin1 findfont -14.00 scalefont setfont - 0 0 moveto 123.00 4.90 translate 0.00 rotate 0 0 moveto - (A\\B\)ç\(D) stringwidth -pop --2 div 0 rmoveto +/Helvetica-ISOLatin1 findfont 14 scalefont setfont + 123 4.9 moveto + (A\\B\)ç\(D) stringwidth pop -2 div 0 rmoveto (A\\B\)ç\(D) show -setmatrix diff --git a/backend/tests/data/eps/code39_fg_bg.eps b/backend/tests/data/eps/code39_fg_bg.eps index f5a6785a..b07d0ee3 100644 --- a/backend/tests/data/eps/code39_fg_bg.eps +++ b/backend/tests/data/eps/code39_fg_bg.eps @@ -4,70 +4,37 @@ %%Pages: 0 %%BoundingBox: 0 0 128 119 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath 0.99 0.59 0.19 setrgbcolor -118.90 0.00 TB 0.00 128.00 TR -TE +118.9 128 0 0 TR 0.08 0.48 0.82 setrgbcolor -100.00 18.90 TB 0.00 2.00 TR -TE -100.00 18.90 TB 6.00 2.00 TR -TE -100.00 18.90 TB 10.00 4.00 TR -TE -100.00 18.90 TB 16.00 4.00 TR -TE -100.00 18.90 TB 22.00 2.00 TR -TE -100.00 18.90 TB 26.00 4.00 TR -TE -100.00 18.90 TB 32.00 2.00 TR -TE -100.00 18.90 TB 38.00 2.00 TR -TE -100.00 18.90 TB 42.00 2.00 TR -TE -100.00 18.90 TB 46.00 4.00 TR -TE -100.00 18.90 TB 52.00 2.00 TR -TE -100.00 18.90 TB 56.00 4.00 TR -TE -100.00 18.90 TB 64.00 2.00 TR -TE -100.00 18.90 TB 68.00 2.00 TR -TE -100.00 18.90 TB 72.00 4.00 TR -TE -100.00 18.90 TB 78.00 4.00 TR -TE -100.00 18.90 TB 84.00 4.00 TR -TE -100.00 18.90 TB 92.00 2.00 TR -TE -100.00 18.90 TB 96.00 2.00 TR -TE -100.00 18.90 TB 100.00 2.00 TR -TE -100.00 18.90 TB 104.00 2.00 TR -TE -100.00 18.90 TB 110.00 2.00 TR -TE -100.00 18.90 TB 114.00 4.00 TR -TE -100.00 18.90 TB 120.00 4.00 TR -TE -100.00 18.90 TB 126.00 2.00 TR -TE -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto - (*123*) stringwidth -pop --2 div 0 rmoveto +100 2 0 18.9 TR +100 2 6 18.9 TR +100 4 10 18.9 TR +100 4 16 18.9 TR +100 2 22 18.9 TR +100 4 26 18.9 TR +100 2 32 18.9 TR +100 2 38 18.9 TR +100 2 42 18.9 TR +100 4 46 18.9 TR +100 2 52 18.9 TR +100 4 56 18.9 TR +100 2 64 18.9 TR +100 2 68 18.9 TR +100 4 72 18.9 TR +100 4 78 18.9 TR +100 4 84 18.9 TR +100 2 92 18.9 TR +100 2 96 18.9 TR +100 2 100 18.9 TR +100 2 104 18.9 TR +100 2 110 18.9 TR +100 4 114 18.9 TR +100 4 120 18.9 TR +100 2 126 18.9 TR +/Helvetica findfont 14 scalefont setfont + 64 4.9 moveto + (*123*) stringwidth pop -2 div 0 rmoveto (*123*) show -setmatrix diff --git a/backend/tests/data/eps/code39_fgalpha_bg_cmyk.eps b/backend/tests/data/eps/code39_fgalpha_bg_cmyk.eps index c50d4c69..166b2f75 100644 --- a/backend/tests/data/eps/code39_fgalpha_bg_cmyk.eps +++ b/backend/tests/data/eps/code39_fgalpha_bg_cmyk.eps @@ -4,70 +4,37 @@ %%Pages: 0 %%BoundingBox: 0 0 128 119 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -0.00 0.40 0.81 0.01 setcmykcolor -118.90 0.00 TB 0.00 128.00 TR -TE -0.90 0.41 0.00 0.18 setcmykcolor -100.00 18.90 TB 0.00 2.00 TR -TE -100.00 18.90 TB 6.00 2.00 TR -TE -100.00 18.90 TB 10.00 4.00 TR -TE -100.00 18.90 TB 16.00 4.00 TR -TE -100.00 18.90 TB 22.00 2.00 TR -TE -100.00 18.90 TB 26.00 4.00 TR -TE -100.00 18.90 TB 32.00 2.00 TR -TE -100.00 18.90 TB 38.00 2.00 TR -TE -100.00 18.90 TB 42.00 2.00 TR -TE -100.00 18.90 TB 46.00 4.00 TR -TE -100.00 18.90 TB 52.00 2.00 TR -TE -100.00 18.90 TB 56.00 4.00 TR -TE -100.00 18.90 TB 64.00 2.00 TR -TE -100.00 18.90 TB 68.00 2.00 TR -TE -100.00 18.90 TB 72.00 4.00 TR -TE -100.00 18.90 TB 78.00 4.00 TR -TE -100.00 18.90 TB 84.00 4.00 TR -TE -100.00 18.90 TB 92.00 2.00 TR -TE -100.00 18.90 TB 96.00 2.00 TR -TE -100.00 18.90 TB 100.00 2.00 TR -TE -100.00 18.90 TB 104.00 2.00 TR -TE -100.00 18.90 TB 110.00 2.00 TR -TE -100.00 18.90 TB 114.00 4.00 TR -TE -100.00 18.90 TB 120.00 4.00 TR -TE -100.00 18.90 TB 126.00 2.00 TR -TE -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto - (*123*) stringwidth -pop --2 div 0 rmoveto +0 0.4 0.81 0.01 setcmykcolor +118.9 128 0 0 TR +0.9 0.41 0 0.18 setcmykcolor +100 2 0 18.9 TR +100 2 6 18.9 TR +100 4 10 18.9 TR +100 4 16 18.9 TR +100 2 22 18.9 TR +100 4 26 18.9 TR +100 2 32 18.9 TR +100 2 38 18.9 TR +100 2 42 18.9 TR +100 4 46 18.9 TR +100 2 52 18.9 TR +100 4 56 18.9 TR +100 2 64 18.9 TR +100 2 68 18.9 TR +100 4 72 18.9 TR +100 4 78 18.9 TR +100 4 84 18.9 TR +100 2 92 18.9 TR +100 2 96 18.9 TR +100 2 100 18.9 TR +100 2 104 18.9 TR +100 2 110 18.9 TR +100 4 114 18.9 TR +100 4 120 18.9 TR +100 2 126 18.9 TR +/Helvetica findfont 14 scalefont setfont + 64 4.9 moveto + (*123*) stringwidth pop -2 div 0 rmoveto (*123*) show -setmatrix diff --git a/backend/tests/data/eps/code39_nobg_cmyk.eps b/backend/tests/data/eps/code39_nobg_cmyk.eps index 527d1203..b2856e6b 100644 --- a/backend/tests/data/eps/code39_nobg_cmyk.eps +++ b/backend/tests/data/eps/code39_nobg_cmyk.eps @@ -4,67 +4,35 @@ %%Pages: 0 %%BoundingBox: 0 0 128 119 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -0.90 0.40 0.00 0.09 setcmykcolor -100.00 18.90 TB 0.00 2.00 TR -TE -100.00 18.90 TB 6.00 2.00 TR -TE -100.00 18.90 TB 10.00 4.00 TR -TE -100.00 18.90 TB 16.00 4.00 TR -TE -100.00 18.90 TB 22.00 2.00 TR -TE -100.00 18.90 TB 26.00 4.00 TR -TE -100.00 18.90 TB 32.00 2.00 TR -TE -100.00 18.90 TB 38.00 2.00 TR -TE -100.00 18.90 TB 42.00 2.00 TR -TE -100.00 18.90 TB 46.00 4.00 TR -TE -100.00 18.90 TB 52.00 2.00 TR -TE -100.00 18.90 TB 56.00 4.00 TR -TE -100.00 18.90 TB 64.00 2.00 TR -TE -100.00 18.90 TB 68.00 2.00 TR -TE -100.00 18.90 TB 72.00 4.00 TR -TE -100.00 18.90 TB 78.00 4.00 TR -TE -100.00 18.90 TB 84.00 4.00 TR -TE -100.00 18.90 TB 92.00 2.00 TR -TE -100.00 18.90 TB 96.00 2.00 TR -TE -100.00 18.90 TB 100.00 2.00 TR -TE -100.00 18.90 TB 104.00 2.00 TR -TE -100.00 18.90 TB 110.00 2.00 TR -TE -100.00 18.90 TB 114.00 4.00 TR -TE -100.00 18.90 TB 120.00 4.00 TR -TE -100.00 18.90 TB 126.00 2.00 TR -TE -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto - (*123*) stringwidth -pop --2 div 0 rmoveto +0.9 0.4 0 0.09 setcmykcolor +100 2 0 18.9 TR +100 2 6 18.9 TR +100 4 10 18.9 TR +100 4 16 18.9 TR +100 2 22 18.9 TR +100 4 26 18.9 TR +100 2 32 18.9 TR +100 2 38 18.9 TR +100 2 42 18.9 TR +100 4 46 18.9 TR +100 2 52 18.9 TR +100 4 56 18.9 TR +100 2 64 18.9 TR +100 2 68 18.9 TR +100 4 72 18.9 TR +100 4 78 18.9 TR +100 4 84 18.9 TR +100 2 92 18.9 TR +100 2 96 18.9 TR +100 2 100 18.9 TR +100 2 104 18.9 TR +100 2 110 18.9 TR +100 4 114 18.9 TR +100 4 120 18.9 TR +100 2 126 18.9 TR +/Helvetica findfont 14 scalefont setfont + 64 4.9 moveto + (*123*) stringwidth pop -2 div 0 rmoveto (*123*) show -setmatrix diff --git a/backend/tests/data/eps/dbar_ltd_24724_fig7_bold.eps b/backend/tests/data/eps/dbar_ltd_24724_fig7_bold.eps index f470735d..e86d7497 100644 --- a/backend/tests/data/eps/dbar_ltd_24724_fig7_bold.eps +++ b/backend/tests/data/eps/dbar_ltd_24724_fig7_bold.eps @@ -4,66 +4,35 @@ %%Pages: 0 %%BoundingBox: 0 0 158 119 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -118.90 0.00 TB 0.00 158.00 TR -TE -0.00 0.00 0.00 setrgbcolor -100.00 18.90 TB 2.00 2.00 TR -TE -100.00 18.90 TB 10.00 4.00 TR -TE -100.00 18.90 TB 18.00 4.00 TR -TE -100.00 18.90 TB 28.00 4.00 TR -TE -100.00 18.90 TB 34.00 4.00 TR -TE -100.00 18.90 TB 40.00 2.00 TR -TE -100.00 18.90 TB 44.00 2.00 TR -TE -100.00 18.90 TB 50.00 6.00 TR -TE -100.00 18.90 TB 58.00 2.00 TR -TE -100.00 18.90 TB 64.00 2.00 TR -TE -100.00 18.90 TB 68.00 2.00 TR -TE -100.00 18.90 TB 72.00 4.00 TR -TE -100.00 18.90 TB 78.00 2.00 TR -TE -100.00 18.90 TB 84.00 4.00 TR -TE -100.00 18.90 TB 90.00 2.00 TR -TE -100.00 18.90 TB 96.00 2.00 TR -TE -100.00 18.90 TB 102.00 2.00 TR -TE -100.00 18.90 TB 106.00 4.00 TR -TE -100.00 18.90 TB 116.00 4.00 TR -TE -100.00 18.90 TB 122.00 6.00 TR -TE -100.00 18.90 TB 132.00 4.00 TR -TE -100.00 18.90 TB 140.00 4.00 TR -TE -100.00 18.90 TB 146.00 2.00 TR -TE -matrix currentmatrix -/Helvetica-Bold findfont -14.00 scalefont setfont - 0 0 moveto 79.00 4.90 translate 0.00 rotate 0 0 moveto - (\(01\)15012345678907) stringwidth -pop --2 div 0 rmoveto +1 1 1 setrgbcolor +118.9 158 0 0 TR +0 0 0 setrgbcolor +100 2 2 18.9 TR +100 4 10 18.9 TR +100 4 18 18.9 TR +100 4 28 18.9 TR +100 4 34 18.9 TR +100 2 40 18.9 TR +100 2 44 18.9 TR +100 6 50 18.9 TR +100 2 58 18.9 TR +100 2 64 18.9 TR +100 2 68 18.9 TR +100 4 72 18.9 TR +100 2 78 18.9 TR +100 4 84 18.9 TR +100 2 90 18.9 TR +100 2 96 18.9 TR +100 2 102 18.9 TR +100 4 106 18.9 TR +100 4 116 18.9 TR +100 6 122 18.9 TR +100 4 132 18.9 TR +100 4 140 18.9 TR +100 2 146 18.9 TR +/Helvetica-Bold findfont 14 scalefont setfont + 79 4.9 moveto + (\(01\)15012345678907) stringwidth pop -2 div 0 rmoveto (\(01\)15012345678907) show -setmatrix diff --git a/backend/tests/data/eps/dotcode_0.1.eps b/backend/tests/data/eps/dotcode_0.1.eps index f4001533..59f4d912 100644 --- a/backend/tests/data/eps/dotcode_0.1.eps +++ b/backend/tests/data/eps/dotcode_0.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 3 2 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -1.60 0.00 TB 0.00 2.20 TR -TE -0.00 0.00 0.00 setrgbcolor -0.10 1.50 0.08 TD -0.90 1.50 0.08 TD -1.30 1.50 0.08 TD -1.70 1.50 0.08 TD -2.10 1.50 0.08 TD -0.70 1.30 0.08 TD -1.10 1.30 0.08 TD -1.50 1.30 0.08 TD -0.10 1.10 0.08 TD -0.50 1.10 0.08 TD -1.30 1.10 0.08 TD -1.70 1.10 0.08 TD -2.10 1.10 0.08 TD -0.30 0.90 0.08 TD -0.10 0.70 0.08 TD -2.10 0.70 0.08 TD -0.30 0.50 0.08 TD -0.70 0.50 0.08 TD -1.10 0.50 0.08 TD -1.50 0.50 0.08 TD -0.10 0.30 0.08 TD -0.50 0.30 0.08 TD -1.70 0.30 0.08 TD -2.10 0.30 0.08 TD -0.30 0.10 0.08 TD -0.70 0.10 0.08 TD -1.50 0.10 0.08 TD -1.90 0.10 0.08 TD +1 1 1 setrgbcolor +1.6 2.2 0 0 TR +0 0 0 setrgbcolor +0.1 1.5 0.08 TD +0.9 1.5 0.08 TD +1.3 1.5 0.08 TD +1.7 1.5 0.08 TD +2.1 1.5 0.08 TD +0.7 1.3 0.08 TD +1.1 1.3 0.08 TD +1.5 1.3 0.08 TD +0.1 1.1 0.08 TD +0.5 1.1 0.08 TD +1.3 1.1 0.08 TD +1.7 1.1 0.08 TD +2.1 1.1 0.08 TD +0.3 0.9 0.08 TD +0.1 0.7 0.08 TD +2.1 0.7 0.08 TD +0.3 0.5 0.08 TD +0.7 0.5 0.08 TD +1.1 0.5 0.08 TD +1.5 0.5 0.08 TD +0.1 0.3 0.08 TD +0.5 0.3 0.08 TD +1.7 0.3 0.08 TD +2.1 0.3 0.08 TD +0.3 0.1 0.08 TD +0.7 0.1 0.08 TD +1.5 0.1 0.08 TD +1.9 0.1 0.08 TD diff --git a/backend/tests/data/eps/dotcode_1.0.eps b/backend/tests/data/eps/dotcode_1.0.eps index 083f23e3..b1f7f2b8 100644 --- a/backend/tests/data/eps/dotcode_1.0.eps +++ b/backend/tests/data/eps/dotcode_1.0.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 22 16 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -16.00 0.00 TB 0.00 22.00 TR -TE -0.00 0.00 0.00 setrgbcolor -1.00 15.00 0.80 TD -9.00 15.00 0.80 TD -13.00 15.00 0.80 TD -17.00 15.00 0.80 TD -21.00 15.00 0.80 TD -7.00 13.00 0.80 TD -11.00 13.00 0.80 TD -15.00 13.00 0.80 TD -1.00 11.00 0.80 TD -5.00 11.00 0.80 TD -13.00 11.00 0.80 TD -17.00 11.00 0.80 TD -21.00 11.00 0.80 TD -3.00 9.00 0.80 TD -1.00 7.00 0.80 TD -21.00 7.00 0.80 TD -3.00 5.00 0.80 TD -7.00 5.00 0.80 TD -11.00 5.00 0.80 TD -15.00 5.00 0.80 TD -1.00 3.00 0.80 TD -5.00 3.00 0.80 TD -17.00 3.00 0.80 TD -21.00 3.00 0.80 TD -3.00 1.00 0.80 TD -7.00 1.00 0.80 TD -15.00 1.00 0.80 TD -19.00 1.00 0.80 TD +1 1 1 setrgbcolor +16 22 0 0 TR +0 0 0 setrgbcolor +1 15 0.8 TD +9 15 0.8 TD +13 15 0.8 TD +17 15 0.8 TD +21 15 0.8 TD +7 13 0.8 TD +11 13 0.8 TD +15 13 0.8 TD +1 11 0.8 TD +5 11 0.8 TD +13 11 0.8 TD +17 11 0.8 TD +21 11 0.8 TD +3 9 0.8 TD +1 7 0.8 TD +21 7 0.8 TD +3 5 0.8 TD +7 5 0.8 TD +11 5 0.8 TD +15 5 0.8 TD +1 3 0.8 TD +5 3 0.8 TD +17 3 0.8 TD +21 3 0.8 TD +3 1 0.8 TD +7 1 0.8 TD +15 1 0.8 TD +19 1 0.8 TD diff --git a/backend/tests/data/eps/dotcode_1.0_ds0.1.eps b/backend/tests/data/eps/dotcode_1.0_ds0.1.eps index b3320ec2..4a1c7300 100644 --- a/backend/tests/data/eps/dotcode_1.0_ds0.1.eps +++ b/backend/tests/data/eps/dotcode_1.0_ds0.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 22 16 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -16.00 0.00 TB 0.00 22.00 TR -TE -0.00 0.00 0.00 setrgbcolor -1.00 15.00 0.10 TD -9.00 15.00 0.10 TD -13.00 15.00 0.10 TD -17.00 15.00 0.10 TD -21.00 15.00 0.10 TD -7.00 13.00 0.10 TD -11.00 13.00 0.10 TD -15.00 13.00 0.10 TD -1.00 11.00 0.10 TD -5.00 11.00 0.10 TD -13.00 11.00 0.10 TD -17.00 11.00 0.10 TD -21.00 11.00 0.10 TD -3.00 9.00 0.10 TD -1.00 7.00 0.10 TD -21.00 7.00 0.10 TD -3.00 5.00 0.10 TD -7.00 5.00 0.10 TD -11.00 5.00 0.10 TD -15.00 5.00 0.10 TD -1.00 3.00 0.10 TD -5.00 3.00 0.10 TD -17.00 3.00 0.10 TD -21.00 3.00 0.10 TD -3.00 1.00 0.10 TD -7.00 1.00 0.10 TD -15.00 1.00 0.10 TD -19.00 1.00 0.10 TD +1 1 1 setrgbcolor +16 22 0 0 TR +0 0 0 setrgbcolor +1 15 0.1 TD +9 15 0.1 TD +13 15 0.1 TD +17 15 0.1 TD +21 15 0.1 TD +7 13 0.1 TD +11 13 0.1 TD +15 13 0.1 TD +1 11 0.1 TD +5 11 0.1 TD +13 11 0.1 TD +17 11 0.1 TD +21 11 0.1 TD +3 9 0.1 TD +1 7 0.1 TD +21 7 0.1 TD +3 5 0.1 TD +7 5 0.1 TD +11 5 0.1 TD +15 5 0.1 TD +1 3 0.1 TD +5 3 0.1 TD +17 3 0.1 TD +21 3 0.1 TD +3 1 0.1 TD +7 1 0.1 TD +15 1 0.1 TD +19 1 0.1 TD diff --git a/backend/tests/data/eps/dotcode_1.0_ds1.1.eps b/backend/tests/data/eps/dotcode_1.0_ds1.1.eps index 6a0267f2..67f6c329 100644 --- a/backend/tests/data/eps/dotcode_1.0_ds1.1.eps +++ b/backend/tests/data/eps/dotcode_1.0_ds1.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 23 17 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -16.40 0.00 TB 0.00 22.40 TR -TE -0.00 0.00 0.00 setrgbcolor -1.20 15.20 1.10 TD -9.20 15.20 1.10 TD -13.20 15.20 1.10 TD -17.20 15.20 1.10 TD -21.20 15.20 1.10 TD -7.20 13.20 1.10 TD -11.20 13.20 1.10 TD -15.20 13.20 1.10 TD -1.20 11.20 1.10 TD -5.20 11.20 1.10 TD -13.20 11.20 1.10 TD -17.20 11.20 1.10 TD -21.20 11.20 1.10 TD -3.20 9.20 1.10 TD -1.20 7.20 1.10 TD -21.20 7.20 1.10 TD -3.20 5.20 1.10 TD -7.20 5.20 1.10 TD -11.20 5.20 1.10 TD -15.20 5.20 1.10 TD -1.20 3.20 1.10 TD -5.20 3.20 1.10 TD -17.20 3.20 1.10 TD -21.20 3.20 1.10 TD -3.20 1.20 1.10 TD -7.20 1.20 1.10 TD -15.20 1.20 1.10 TD -19.20 1.20 1.10 TD +1 1 1 setrgbcolor +16.4 22.4 0 0 TR +0 0 0 setrgbcolor +1.2 15.2 1.1 TD +9.2 15.2 1.1 TD +13.2 15.2 1.1 TD +17.2 15.2 1.1 TD +21.2 15.2 1.1 TD +7.2 13.2 1.1 TD +11.2 13.2 1.1 TD +15.2 13.2 1.1 TD +1.2 11.2 1.1 TD +5.2 11.2 1.1 TD +13.2 11.2 1.1 TD +17.2 11.2 1.1 TD +21.2 11.2 1.1 TD +3.2 9.2 1.1 TD +1.2 7.2 1.1 TD +21.2 7.2 1.1 TD +3.2 5.2 1.1 TD +7.2 5.2 1.1 TD +11.2 5.2 1.1 TD +15.2 5.2 1.1 TD +1.2 3.2 1.1 TD +5.2 3.2 1.1 TD +17.2 3.2 1.1 TD +21.2 3.2 1.1 TD +3.2 1.2 1.1 TD +7.2 1.2 1.1 TD +15.2 1.2 1.1 TD +19.2 1.2 1.1 TD diff --git a/backend/tests/data/eps/dotcode_1.5.eps b/backend/tests/data/eps/dotcode_1.5.eps index 8f79909a..de5b5c2d 100644 --- a/backend/tests/data/eps/dotcode_1.5.eps +++ b/backend/tests/data/eps/dotcode_1.5.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 33 24 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -24.00 0.00 TB 0.00 33.00 TR -TE -0.00 0.00 0.00 setrgbcolor -1.50 22.50 1.20 TD -13.50 22.50 1.20 TD -19.50 22.50 1.20 TD -25.50 22.50 1.20 TD -31.50 22.50 1.20 TD -10.50 19.50 1.20 TD -16.50 19.50 1.20 TD -22.50 19.50 1.20 TD -1.50 16.50 1.20 TD -7.50 16.50 1.20 TD -19.50 16.50 1.20 TD -25.50 16.50 1.20 TD -31.50 16.50 1.20 TD -4.50 13.50 1.20 TD -1.50 10.50 1.20 TD -31.50 10.50 1.20 TD -4.50 7.50 1.20 TD -10.50 7.50 1.20 TD -16.50 7.50 1.20 TD -22.50 7.50 1.20 TD -1.50 4.50 1.20 TD -7.50 4.50 1.20 TD -25.50 4.50 1.20 TD -31.50 4.50 1.20 TD -4.50 1.50 1.20 TD -10.50 1.50 1.20 TD -22.50 1.50 1.20 TD -28.50 1.50 1.20 TD +1 1 1 setrgbcolor +24 33 0 0 TR +0 0 0 setrgbcolor +1.5 22.5 1.2 TD +13.5 22.5 1.2 TD +19.5 22.5 1.2 TD +25.5 22.5 1.2 TD +31.5 22.5 1.2 TD +10.5 19.5 1.2 TD +16.5 19.5 1.2 TD +22.5 19.5 1.2 TD +1.5 16.5 1.2 TD +7.5 16.5 1.2 TD +19.5 16.5 1.2 TD +25.5 16.5 1.2 TD +31.5 16.5 1.2 TD +4.5 13.5 1.2 TD +1.5 10.5 1.2 TD +31.5 10.5 1.2 TD +4.5 7.5 1.2 TD +10.5 7.5 1.2 TD +16.5 7.5 1.2 TD +22.5 7.5 1.2 TD +1.5 4.5 1.2 TD +7.5 4.5 1.2 TD +25.5 4.5 1.2 TD +31.5 4.5 1.2 TD +4.5 1.5 1.2 TD +10.5 1.5 1.2 TD +22.5 1.5 1.2 TD +28.5 1.5 1.2 TD diff --git a/backend/tests/data/eps/dotcode_1.5_ds0.4.eps b/backend/tests/data/eps/dotcode_1.5_ds0.4.eps index 9f29e27f..13c4f200 100644 --- a/backend/tests/data/eps/dotcode_1.5_ds0.4.eps +++ b/backend/tests/data/eps/dotcode_1.5_ds0.4.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 33 24 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -24.00 0.00 TB 0.00 33.00 TR -TE -0.00 0.00 0.00 setrgbcolor -1.50 22.50 0.60 TD -13.50 22.50 0.60 TD -19.50 22.50 0.60 TD -25.50 22.50 0.60 TD -31.50 22.50 0.60 TD -10.50 19.50 0.60 TD -16.50 19.50 0.60 TD -22.50 19.50 0.60 TD -1.50 16.50 0.60 TD -7.50 16.50 0.60 TD -19.50 16.50 0.60 TD -25.50 16.50 0.60 TD -31.50 16.50 0.60 TD -4.50 13.50 0.60 TD -1.50 10.50 0.60 TD -31.50 10.50 0.60 TD -4.50 7.50 0.60 TD -10.50 7.50 0.60 TD -16.50 7.50 0.60 TD -22.50 7.50 0.60 TD -1.50 4.50 0.60 TD -7.50 4.50 0.60 TD -25.50 4.50 0.60 TD -31.50 4.50 0.60 TD -4.50 1.50 0.60 TD -10.50 1.50 0.60 TD -22.50 1.50 0.60 TD -28.50 1.50 0.60 TD +1 1 1 setrgbcolor +24 33 0 0 TR +0 0 0 setrgbcolor +1.5 22.5 0.6 TD +13.5 22.5 0.6 TD +19.5 22.5 0.6 TD +25.5 22.5 0.6 TD +31.5 22.5 0.6 TD +10.5 19.5 0.6 TD +16.5 19.5 0.6 TD +22.5 19.5 0.6 TD +1.5 16.5 0.6 TD +7.5 16.5 0.6 TD +19.5 16.5 0.6 TD +25.5 16.5 0.6 TD +31.5 16.5 0.6 TD +4.5 13.5 0.6 TD +1.5 10.5 0.6 TD +31.5 10.5 0.6 TD +4.5 7.5 0.6 TD +10.5 7.5 0.6 TD +16.5 7.5 0.6 TD +22.5 7.5 0.6 TD +1.5 4.5 0.6 TD +7.5 4.5 0.6 TD +25.5 4.5 0.6 TD +31.5 4.5 0.6 TD +4.5 1.5 0.6 TD +10.5 1.5 0.6 TD +22.5 1.5 0.6 TD +28.5 1.5 0.6 TD diff --git a/backend/tests/data/eps/dotcode_1.5_ds1.1.eps b/backend/tests/data/eps/dotcode_1.5_ds1.1.eps index 3b358e9f..f846988b 100644 --- a/backend/tests/data/eps/dotcode_1.5_ds1.1.eps +++ b/backend/tests/data/eps/dotcode_1.5_ds1.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 34 25 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -24.60 0.00 TB 0.00 33.60 TR -TE -0.00 0.00 0.00 setrgbcolor -1.80 22.80 1.65 TD -13.80 22.80 1.65 TD -19.80 22.80 1.65 TD -25.80 22.80 1.65 TD -31.80 22.80 1.65 TD -10.80 19.80 1.65 TD -16.80 19.80 1.65 TD -22.80 19.80 1.65 TD -1.80 16.80 1.65 TD -7.80 16.80 1.65 TD -19.80 16.80 1.65 TD -25.80 16.80 1.65 TD -31.80 16.80 1.65 TD -4.80 13.80 1.65 TD -1.80 10.80 1.65 TD -31.80 10.80 1.65 TD -4.80 7.80 1.65 TD -10.80 7.80 1.65 TD -16.80 7.80 1.65 TD -22.80 7.80 1.65 TD -1.80 4.80 1.65 TD -7.80 4.80 1.65 TD -25.80 4.80 1.65 TD -31.80 4.80 1.65 TD -4.80 1.80 1.65 TD -10.80 1.80 1.65 TD -22.80 1.80 1.65 TD -28.80 1.80 1.65 TD +1 1 1 setrgbcolor +24.6 33.6 0 0 TR +0 0 0 setrgbcolor +1.8 22.8 1.65 TD +13.8 22.8 1.65 TD +19.8 22.8 1.65 TD +25.8 22.8 1.65 TD +31.8 22.8 1.65 TD +10.8 19.8 1.65 TD +16.8 19.8 1.65 TD +22.8 19.8 1.65 TD +1.8 16.8 1.65 TD +7.8 16.8 1.65 TD +19.8 16.8 1.65 TD +25.8 16.8 1.65 TD +31.8 16.8 1.65 TD +4.8 13.8 1.65 TD +1.8 10.8 1.65 TD +31.8 10.8 1.65 TD +4.8 7.8 1.65 TD +10.8 7.8 1.65 TD +16.8 7.8 1.65 TD +22.8 7.8 1.65 TD +1.8 4.8 1.65 TD +7.8 4.8 1.65 TD +25.8 4.8 1.65 TD +31.8 4.8 1.65 TD +4.8 1.8 1.65 TD +10.8 1.8 1.65 TD +22.8 1.8 1.65 TD +28.8 1.8 1.65 TD diff --git a/backend/tests/data/eps/dotcode_1.5_ds2.1.eps b/backend/tests/data/eps/dotcode_1.5_ds2.1.eps index a012a163..a582db9c 100644 --- a/backend/tests/data/eps/dotcode_1.5_ds2.1.eps +++ b/backend/tests/data/eps/dotcode_1.5_ds2.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 37 28 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -27.60 0.00 TB 0.00 36.60 TR -TE -0.00 0.00 0.00 setrgbcolor -3.30 24.30 3.15 TD -15.30 24.30 3.15 TD -21.30 24.30 3.15 TD -27.30 24.30 3.15 TD -33.30 24.30 3.15 TD -12.30 21.30 3.15 TD -18.30 21.30 3.15 TD -24.30 21.30 3.15 TD -3.30 18.30 3.15 TD -9.30 18.30 3.15 TD -21.30 18.30 3.15 TD -27.30 18.30 3.15 TD -33.30 18.30 3.15 TD -6.30 15.30 3.15 TD -3.30 12.30 3.15 TD -33.30 12.30 3.15 TD -6.30 9.30 3.15 TD -12.30 9.30 3.15 TD -18.30 9.30 3.15 TD -24.30 9.30 3.15 TD -3.30 6.30 3.15 TD -9.30 6.30 3.15 TD -27.30 6.30 3.15 TD -33.30 6.30 3.15 TD -6.30 3.30 3.15 TD -12.30 3.30 3.15 TD -24.30 3.30 3.15 TD -30.30 3.30 3.15 TD +1 1 1 setrgbcolor +27.6 36.6 0 0 TR +0 0 0 setrgbcolor +3.3 24.3 3.15 TD +15.3 24.3 3.15 TD +21.3 24.3 3.15 TD +27.3 24.3 3.15 TD +33.3 24.3 3.15 TD +12.3 21.3 3.15 TD +18.3 21.3 3.15 TD +24.3 21.3 3.15 TD +3.3 18.3 3.15 TD +9.3 18.3 3.15 TD +21.3 18.3 3.15 TD +27.3 18.3 3.15 TD +33.3 18.3 3.15 TD +6.3 15.3 3.15 TD +3.3 12.3 3.15 TD +33.3 12.3 3.15 TD +6.3 9.3 3.15 TD +12.3 9.3 3.15 TD +18.3 9.3 3.15 TD +24.3 9.3 3.15 TD +3.3 6.3 3.15 TD +9.3 6.3 3.15 TD +27.3 6.3 3.15 TD +33.3 6.3 3.15 TD +6.3 3.3 3.15 TD +12.3 3.3 3.15 TD +24.3 3.3 3.15 TD +30.3 3.3 3.15 TD diff --git a/backend/tests/data/eps/dotcode_2.0.eps b/backend/tests/data/eps/dotcode_2.0.eps index 70401028..e779d03a 100644 --- a/backend/tests/data/eps/dotcode_2.0.eps +++ b/backend/tests/data/eps/dotcode_2.0.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 44 32 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -32.00 0.00 TB 0.00 44.00 TR -TE -0.00 0.00 0.00 setrgbcolor -2.00 30.00 1.60 TD -18.00 30.00 1.60 TD -26.00 30.00 1.60 TD -34.00 30.00 1.60 TD -42.00 30.00 1.60 TD -14.00 26.00 1.60 TD -22.00 26.00 1.60 TD -30.00 26.00 1.60 TD -2.00 22.00 1.60 TD -10.00 22.00 1.60 TD -26.00 22.00 1.60 TD -34.00 22.00 1.60 TD -42.00 22.00 1.60 TD -6.00 18.00 1.60 TD -2.00 14.00 1.60 TD -42.00 14.00 1.60 TD -6.00 10.00 1.60 TD -14.00 10.00 1.60 TD -22.00 10.00 1.60 TD -30.00 10.00 1.60 TD -2.00 6.00 1.60 TD -10.00 6.00 1.60 TD -34.00 6.00 1.60 TD -42.00 6.00 1.60 TD -6.00 2.00 1.60 TD -14.00 2.00 1.60 TD -30.00 2.00 1.60 TD -38.00 2.00 1.60 TD +1 1 1 setrgbcolor +32 44 0 0 TR +0 0 0 setrgbcolor +2 30 1.6 TD +18 30 1.6 TD +26 30 1.6 TD +34 30 1.6 TD +42 30 1.6 TD +14 26 1.6 TD +22 26 1.6 TD +30 26 1.6 TD +2 22 1.6 TD +10 22 1.6 TD +26 22 1.6 TD +34 22 1.6 TD +42 22 1.6 TD +6 18 1.6 TD +2 14 1.6 TD +42 14 1.6 TD +6 10 1.6 TD +14 10 1.6 TD +22 10 1.6 TD +30 10 1.6 TD +2 6 1.6 TD +10 6 1.6 TD +34 6 1.6 TD +42 6 1.6 TD +6 2 1.6 TD +14 2 1.6 TD +30 2 1.6 TD +38 2 1.6 TD diff --git a/backend/tests/data/eps/dotcode_2.0_ds0.9.eps b/backend/tests/data/eps/dotcode_2.0_ds0.9.eps index 712e1c0f..8ec338e4 100644 --- a/backend/tests/data/eps/dotcode_2.0_ds0.9.eps +++ b/backend/tests/data/eps/dotcode_2.0_ds0.9.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 44 32 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -32.00 0.00 TB 0.00 44.00 TR -TE -0.00 0.00 0.00 setrgbcolor -2.00 30.00 1.80 TD -18.00 30.00 1.80 TD -26.00 30.00 1.80 TD -34.00 30.00 1.80 TD -42.00 30.00 1.80 TD -14.00 26.00 1.80 TD -22.00 26.00 1.80 TD -30.00 26.00 1.80 TD -2.00 22.00 1.80 TD -10.00 22.00 1.80 TD -26.00 22.00 1.80 TD -34.00 22.00 1.80 TD -42.00 22.00 1.80 TD -6.00 18.00 1.80 TD -2.00 14.00 1.80 TD -42.00 14.00 1.80 TD -6.00 10.00 1.80 TD -14.00 10.00 1.80 TD -22.00 10.00 1.80 TD -30.00 10.00 1.80 TD -2.00 6.00 1.80 TD -10.00 6.00 1.80 TD -34.00 6.00 1.80 TD -42.00 6.00 1.80 TD -6.00 2.00 1.80 TD -14.00 2.00 1.80 TD -30.00 2.00 1.80 TD -38.00 2.00 1.80 TD +1 1 1 setrgbcolor +32 44 0 0 TR +0 0 0 setrgbcolor +2 30 1.8 TD +18 30 1.8 TD +26 30 1.8 TD +34 30 1.8 TD +42 30 1.8 TD +14 26 1.8 TD +22 26 1.8 TD +30 26 1.8 TD +2 22 1.8 TD +10 22 1.8 TD +26 22 1.8 TD +34 22 1.8 TD +42 22 1.8 TD +6 18 1.8 TD +2 14 1.8 TD +42 14 1.8 TD +6 10 1.8 TD +14 10 1.8 TD +22 10 1.8 TD +30 10 1.8 TD +2 6 1.8 TD +10 6 1.8 TD +34 6 1.8 TD +42 6 1.8 TD +6 2 1.8 TD +14 2 1.8 TD +30 2 1.8 TD +38 2 1.8 TD diff --git a/backend/tests/data/eps/dotcode_2.0_ds1.1.eps b/backend/tests/data/eps/dotcode_2.0_ds1.1.eps index 545d2fc5..3c9045fb 100644 --- a/backend/tests/data/eps/dotcode_2.0_ds1.1.eps +++ b/backend/tests/data/eps/dotcode_2.0_ds1.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 45 33 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -32.80 0.00 TB 0.00 44.80 TR -TE -0.00 0.00 0.00 setrgbcolor -2.40 30.40 2.20 TD -18.40 30.40 2.20 TD -26.40 30.40 2.20 TD -34.40 30.40 2.20 TD -42.40 30.40 2.20 TD -14.40 26.40 2.20 TD -22.40 26.40 2.20 TD -30.40 26.40 2.20 TD -2.40 22.40 2.20 TD -10.40 22.40 2.20 TD -26.40 22.40 2.20 TD -34.40 22.40 2.20 TD -42.40 22.40 2.20 TD -6.40 18.40 2.20 TD -2.40 14.40 2.20 TD -42.40 14.40 2.20 TD -6.40 10.40 2.20 TD -14.40 10.40 2.20 TD -22.40 10.40 2.20 TD -30.40 10.40 2.20 TD -2.40 6.40 2.20 TD -10.40 6.40 2.20 TD -34.40 6.40 2.20 TD -42.40 6.40 2.20 TD -6.40 2.40 2.20 TD -14.40 2.40 2.20 TD -30.40 2.40 2.20 TD -38.40 2.40 2.20 TD +1 1 1 setrgbcolor +32.8 44.8 0 0 TR +0 0 0 setrgbcolor +2.4 30.4 2.2 TD +18.4 30.4 2.2 TD +26.4 30.4 2.2 TD +34.4 30.4 2.2 TD +42.4 30.4 2.2 TD +14.4 26.4 2.2 TD +22.4 26.4 2.2 TD +30.4 26.4 2.2 TD +2.4 22.4 2.2 TD +10.4 22.4 2.2 TD +26.4 22.4 2.2 TD +34.4 22.4 2.2 TD +42.4 22.4 2.2 TD +6.4 18.4 2.2 TD +2.4 14.4 2.2 TD +42.4 14.4 2.2 TD +6.4 10.4 2.2 TD +14.4 10.4 2.2 TD +22.4 10.4 2.2 TD +30.4 10.4 2.2 TD +2.4 6.4 2.2 TD +10.4 6.4 2.2 TD +34.4 6.4 2.2 TD +42.4 6.4 2.2 TD +6.4 2.4 2.2 TD +14.4 2.4 2.2 TD +30.4 2.4 2.2 TD +38.4 2.4 2.2 TD diff --git a/backend/tests/data/eps/dotcode_3.0.eps b/backend/tests/data/eps/dotcode_3.0.eps index fa3c1ceb..2a89e3b9 100644 --- a/backend/tests/data/eps/dotcode_3.0.eps +++ b/backend/tests/data/eps/dotcode_3.0.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 66 48 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -48.00 0.00 TB 0.00 66.00 TR -TE -0.00 0.00 0.00 setrgbcolor -3.00 45.00 2.40 TD -27.00 45.00 2.40 TD -39.00 45.00 2.40 TD -51.00 45.00 2.40 TD -63.00 45.00 2.40 TD -21.00 39.00 2.40 TD -33.00 39.00 2.40 TD -45.00 39.00 2.40 TD -3.00 33.00 2.40 TD -15.00 33.00 2.40 TD -39.00 33.00 2.40 TD -51.00 33.00 2.40 TD -63.00 33.00 2.40 TD -9.00 27.00 2.40 TD -3.00 21.00 2.40 TD -63.00 21.00 2.40 TD -9.00 15.00 2.40 TD -21.00 15.00 2.40 TD -33.00 15.00 2.40 TD -45.00 15.00 2.40 TD -3.00 9.00 2.40 TD -15.00 9.00 2.40 TD -51.00 9.00 2.40 TD -63.00 9.00 2.40 TD -9.00 3.00 2.40 TD -21.00 3.00 2.40 TD -45.00 3.00 2.40 TD -57.00 3.00 2.40 TD +1 1 1 setrgbcolor +48 66 0 0 TR +0 0 0 setrgbcolor +3 45 2.4 TD +27 45 2.4 TD +39 45 2.4 TD +51 45 2.4 TD +63 45 2.4 TD +21 39 2.4 TD +33 39 2.4 TD +45 39 2.4 TD +3 33 2.4 TD +15 33 2.4 TD +39 33 2.4 TD +51 33 2.4 TD +63 33 2.4 TD +9 27 2.4 TD +3 21 2.4 TD +63 21 2.4 TD +9 15 2.4 TD +21 15 2.4 TD +33 15 2.4 TD +45 15 2.4 TD +3 9 2.4 TD +15 9 2.4 TD +51 9 2.4 TD +63 9 2.4 TD +9 3 2.4 TD +21 3 2.4 TD +45 3 2.4 TD +57 3 2.4 TD diff --git a/backend/tests/data/eps/dotcode_3.0_ds0.4.eps b/backend/tests/data/eps/dotcode_3.0_ds0.4.eps index ea5f2ab6..8f137470 100644 --- a/backend/tests/data/eps/dotcode_3.0_ds0.4.eps +++ b/backend/tests/data/eps/dotcode_3.0_ds0.4.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 66 48 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -48.00 0.00 TB 0.00 66.00 TR -TE -0.00 0.00 0.00 setrgbcolor -3.00 45.00 1.20 TD -27.00 45.00 1.20 TD -39.00 45.00 1.20 TD -51.00 45.00 1.20 TD -63.00 45.00 1.20 TD -21.00 39.00 1.20 TD -33.00 39.00 1.20 TD -45.00 39.00 1.20 TD -3.00 33.00 1.20 TD -15.00 33.00 1.20 TD -39.00 33.00 1.20 TD -51.00 33.00 1.20 TD -63.00 33.00 1.20 TD -9.00 27.00 1.20 TD -3.00 21.00 1.20 TD -63.00 21.00 1.20 TD -9.00 15.00 1.20 TD -21.00 15.00 1.20 TD -33.00 15.00 1.20 TD -45.00 15.00 1.20 TD -3.00 9.00 1.20 TD -15.00 9.00 1.20 TD -51.00 9.00 1.20 TD -63.00 9.00 1.20 TD -9.00 3.00 1.20 TD -21.00 3.00 1.20 TD -45.00 3.00 1.20 TD -57.00 3.00 1.20 TD +1 1 1 setrgbcolor +48 66 0 0 TR +0 0 0 setrgbcolor +3 45 1.2 TD +27 45 1.2 TD +39 45 1.2 TD +51 45 1.2 TD +63 45 1.2 TD +21 39 1.2 TD +33 39 1.2 TD +45 39 1.2 TD +3 33 1.2 TD +15 33 1.2 TD +39 33 1.2 TD +51 33 1.2 TD +63 33 1.2 TD +9 27 1.2 TD +3 21 1.2 TD +63 21 1.2 TD +9 15 1.2 TD +21 15 1.2 TD +33 15 1.2 TD +45 15 1.2 TD +3 9 1.2 TD +15 9 1.2 TD +51 9 1.2 TD +63 9 1.2 TD +9 3 1.2 TD +21 3 1.2 TD +45 3 1.2 TD +57 3 1.2 TD diff --git a/backend/tests/data/eps/dotcode_3.0_ds1.1.eps b/backend/tests/data/eps/dotcode_3.0_ds1.1.eps index 2d516c16..556d04b7 100644 --- a/backend/tests/data/eps/dotcode_3.0_ds1.1.eps +++ b/backend/tests/data/eps/dotcode_3.0_ds1.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 68 50 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -49.20 0.00 TB 0.00 67.20 TR -TE -0.00 0.00 0.00 setrgbcolor -3.60 45.60 3.30 TD -27.60 45.60 3.30 TD -39.60 45.60 3.30 TD -51.60 45.60 3.30 TD -63.60 45.60 3.30 TD -21.60 39.60 3.30 TD -33.60 39.60 3.30 TD -45.60 39.60 3.30 TD -3.60 33.60 3.30 TD -15.60 33.60 3.30 TD -39.60 33.60 3.30 TD -51.60 33.60 3.30 TD -63.60 33.60 3.30 TD -9.60 27.60 3.30 TD -3.60 21.60 3.30 TD -63.60 21.60 3.30 TD -9.60 15.60 3.30 TD -21.60 15.60 3.30 TD -33.60 15.60 3.30 TD -45.60 15.60 3.30 TD -3.60 9.60 3.30 TD -15.60 9.60 3.30 TD -51.60 9.60 3.30 TD -63.60 9.60 3.30 TD -9.60 3.60 3.30 TD -21.60 3.60 3.30 TD -45.60 3.60 3.30 TD -57.60 3.60 3.30 TD +1 1 1 setrgbcolor +49.2 67.2 0 0 TR +0 0 0 setrgbcolor +3.6 45.6 3.3 TD +27.6 45.6 3.3 TD +39.6 45.6 3.3 TD +51.6 45.6 3.3 TD +63.6 45.6 3.3 TD +21.6 39.6 3.3 TD +33.6 39.6 3.3 TD +45.6 39.6 3.3 TD +3.6 33.6 3.3 TD +15.6 33.6 3.3 TD +39.6 33.6 3.3 TD +51.6 33.6 3.3 TD +63.6 33.6 3.3 TD +9.6 27.6 3.3 TD +3.6 21.6 3.3 TD +63.6 21.6 3.3 TD +9.6 15.6 3.3 TD +21.6 15.6 3.3 TD +33.6 15.6 3.3 TD +45.6 15.6 3.3 TD +3.6 9.6 3.3 TD +15.6 9.6 3.3 TD +51.6 9.6 3.3 TD +63.6 9.6 3.3 TD +9.6 3.6 3.3 TD +21.6 3.6 3.3 TD +45.6 3.6 3.3 TD +57.6 3.6 3.3 TD diff --git a/backend/tests/data/eps/dotcode_3.5.eps b/backend/tests/data/eps/dotcode_3.5.eps index 72edcfed..d284a75f 100644 --- a/backend/tests/data/eps/dotcode_3.5.eps +++ b/backend/tests/data/eps/dotcode_3.5.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 77 56 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -56.00 0.00 TB 0.00 77.00 TR -TE -0.00 0.00 0.00 setrgbcolor -3.50 52.50 2.80 TD -31.50 52.50 2.80 TD -45.50 52.50 2.80 TD -59.50 52.50 2.80 TD -73.50 52.50 2.80 TD -24.50 45.50 2.80 TD -38.50 45.50 2.80 TD -52.50 45.50 2.80 TD -3.50 38.50 2.80 TD -17.50 38.50 2.80 TD -45.50 38.50 2.80 TD -59.50 38.50 2.80 TD -73.50 38.50 2.80 TD -10.50 31.50 2.80 TD -3.50 24.50 2.80 TD -73.50 24.50 2.80 TD -10.50 17.50 2.80 TD -24.50 17.50 2.80 TD -38.50 17.50 2.80 TD -52.50 17.50 2.80 TD -3.50 10.50 2.80 TD -17.50 10.50 2.80 TD -59.50 10.50 2.80 TD -73.50 10.50 2.80 TD -10.50 3.50 2.80 TD -24.50 3.50 2.80 TD -52.50 3.50 2.80 TD -66.50 3.50 2.80 TD +1 1 1 setrgbcolor +56 77 0 0 TR +0 0 0 setrgbcolor +3.5 52.5 2.8 TD +31.5 52.5 2.8 TD +45.5 52.5 2.8 TD +59.5 52.5 2.8 TD +73.5 52.5 2.8 TD +24.5 45.5 2.8 TD +38.5 45.5 2.8 TD +52.5 45.5 2.8 TD +3.5 38.5 2.8 TD +17.5 38.5 2.8 TD +45.5 38.5 2.8 TD +59.5 38.5 2.8 TD +73.5 38.5 2.8 TD +10.5 31.5 2.8 TD +3.5 24.5 2.8 TD +73.5 24.5 2.8 TD +10.5 17.5 2.8 TD +24.5 17.5 2.8 TD +38.5 17.5 2.8 TD +52.5 17.5 2.8 TD +3.5 10.5 2.8 TD +17.5 10.5 2.8 TD +59.5 10.5 2.8 TD +73.5 10.5 2.8 TD +10.5 3.5 2.8 TD +24.5 3.5 2.8 TD +52.5 3.5 2.8 TD +66.5 3.5 2.8 TD diff --git a/backend/tests/data/eps/dotcode_3.5_ds0.4.eps b/backend/tests/data/eps/dotcode_3.5_ds0.4.eps index 808814b7..768cb990 100644 --- a/backend/tests/data/eps/dotcode_3.5_ds0.4.eps +++ b/backend/tests/data/eps/dotcode_3.5_ds0.4.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 77 56 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -56.00 0.00 TB 0.00 77.00 TR -TE -0.00 0.00 0.00 setrgbcolor -3.50 52.50 1.40 TD -31.50 52.50 1.40 TD -45.50 52.50 1.40 TD -59.50 52.50 1.40 TD -73.50 52.50 1.40 TD -24.50 45.50 1.40 TD -38.50 45.50 1.40 TD -52.50 45.50 1.40 TD -3.50 38.50 1.40 TD -17.50 38.50 1.40 TD -45.50 38.50 1.40 TD -59.50 38.50 1.40 TD -73.50 38.50 1.40 TD -10.50 31.50 1.40 TD -3.50 24.50 1.40 TD -73.50 24.50 1.40 TD -10.50 17.50 1.40 TD -24.50 17.50 1.40 TD -38.50 17.50 1.40 TD -52.50 17.50 1.40 TD -3.50 10.50 1.40 TD -17.50 10.50 1.40 TD -59.50 10.50 1.40 TD -73.50 10.50 1.40 TD -10.50 3.50 1.40 TD -24.50 3.50 1.40 TD -52.50 3.50 1.40 TD -66.50 3.50 1.40 TD +1 1 1 setrgbcolor +56 77 0 0 TR +0 0 0 setrgbcolor +3.5 52.5 1.4 TD +31.5 52.5 1.4 TD +45.5 52.5 1.4 TD +59.5 52.5 1.4 TD +73.5 52.5 1.4 TD +24.5 45.5 1.4 TD +38.5 45.5 1.4 TD +52.5 45.5 1.4 TD +3.5 38.5 1.4 TD +17.5 38.5 1.4 TD +45.5 38.5 1.4 TD +59.5 38.5 1.4 TD +73.5 38.5 1.4 TD +10.5 31.5 1.4 TD +3.5 24.5 1.4 TD +73.5 24.5 1.4 TD +10.5 17.5 1.4 TD +24.5 17.5 1.4 TD +38.5 17.5 1.4 TD +52.5 17.5 1.4 TD +3.5 10.5 1.4 TD +17.5 10.5 1.4 TD +59.5 10.5 1.4 TD +73.5 10.5 1.4 TD +10.5 3.5 1.4 TD +24.5 3.5 1.4 TD +52.5 3.5 1.4 TD +66.5 3.5 1.4 TD diff --git a/backend/tests/data/eps/dotcode_3.5_ds1.1.eps b/backend/tests/data/eps/dotcode_3.5_ds1.1.eps index 700b15e8..92ef5e8e 100644 --- a/backend/tests/data/eps/dotcode_3.5_ds1.1.eps +++ b/backend/tests/data/eps/dotcode_3.5_ds1.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 79 58 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -57.40 0.00 TB 0.00 78.40 TR -TE -0.00 0.00 0.00 setrgbcolor -4.20 53.20 3.85 TD -32.20 53.20 3.85 TD -46.20 53.20 3.85 TD -60.20 53.20 3.85 TD -74.20 53.20 3.85 TD -25.20 46.20 3.85 TD -39.20 46.20 3.85 TD -53.20 46.20 3.85 TD -4.20 39.20 3.85 TD -18.20 39.20 3.85 TD -46.20 39.20 3.85 TD -60.20 39.20 3.85 TD -74.20 39.20 3.85 TD -11.20 32.20 3.85 TD -4.20 25.20 3.85 TD -74.20 25.20 3.85 TD -11.20 18.20 3.85 TD -25.20 18.20 3.85 TD -39.20 18.20 3.85 TD -53.20 18.20 3.85 TD -4.20 11.20 3.85 TD -18.20 11.20 3.85 TD -60.20 11.20 3.85 TD -74.20 11.20 3.85 TD -11.20 4.20 3.85 TD -25.20 4.20 3.85 TD -53.20 4.20 3.85 TD -67.20 4.20 3.85 TD +1 1 1 setrgbcolor +57.4 78.4 0 0 TR +0 0 0 setrgbcolor +4.2 53.2 3.85 TD +32.2 53.2 3.85 TD +46.2 53.2 3.85 TD +60.2 53.2 3.85 TD +74.2 53.2 3.85 TD +25.2 46.2 3.85 TD +39.2 46.2 3.85 TD +53.2 46.2 3.85 TD +4.2 39.2 3.85 TD +18.2 39.2 3.85 TD +46.2 39.2 3.85 TD +60.2 39.2 3.85 TD +74.2 39.2 3.85 TD +11.2 32.2 3.85 TD +4.2 25.2 3.85 TD +74.2 25.2 3.85 TD +11.2 18.2 3.85 TD +25.2 18.2 3.85 TD +39.2 18.2 3.85 TD +53.2 18.2 3.85 TD +4.2 11.2 3.85 TD +18.2 11.2 3.85 TD +60.2 11.2 3.85 TD +74.2 11.2 3.85 TD +11.2 4.2 3.85 TD +25.2 4.2 3.85 TD +53.2 4.2 3.85 TD +67.2 4.2 3.85 TD diff --git a/backend/tests/data/eps/dotcode_5.0.eps b/backend/tests/data/eps/dotcode_5.0.eps index efd5900d..5c847c60 100644 --- a/backend/tests/data/eps/dotcode_5.0.eps +++ b/backend/tests/data/eps/dotcode_5.0.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 110 80 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -80.00 0.00 TB 0.00 110.00 TR -TE -0.00 0.00 0.00 setrgbcolor -5.00 75.00 4.00 TD -45.00 75.00 4.00 TD -65.00 75.00 4.00 TD -85.00 75.00 4.00 TD -105.00 75.00 4.00 TD -35.00 65.00 4.00 TD -55.00 65.00 4.00 TD -75.00 65.00 4.00 TD -5.00 55.00 4.00 TD -25.00 55.00 4.00 TD -65.00 55.00 4.00 TD -85.00 55.00 4.00 TD -105.00 55.00 4.00 TD -15.00 45.00 4.00 TD -5.00 35.00 4.00 TD -105.00 35.00 4.00 TD -15.00 25.00 4.00 TD -35.00 25.00 4.00 TD -55.00 25.00 4.00 TD -75.00 25.00 4.00 TD -5.00 15.00 4.00 TD -25.00 15.00 4.00 TD -85.00 15.00 4.00 TD -105.00 15.00 4.00 TD -15.00 5.00 4.00 TD -35.00 5.00 4.00 TD -75.00 5.00 4.00 TD -95.00 5.00 4.00 TD +1 1 1 setrgbcolor +80 110 0 0 TR +0 0 0 setrgbcolor +5 75 4 TD +45 75 4 TD +65 75 4 TD +85 75 4 TD +105 75 4 TD +35 65 4 TD +55 65 4 TD +75 65 4 TD +5 55 4 TD +25 55 4 TD +65 55 4 TD +85 55 4 TD +105 55 4 TD +15 45 4 TD +5 35 4 TD +105 35 4 TD +15 25 4 TD +35 25 4 TD +55 25 4 TD +75 25 4 TD +5 15 4 TD +25 15 4 TD +85 15 4 TD +105 15 4 TD +15 5 4 TD +35 5 4 TD +75 5 4 TD +95 5 4 TD diff --git a/backend/tests/data/eps/dotcode_5.0_ds0.2.eps b/backend/tests/data/eps/dotcode_5.0_ds0.2.eps index fbab69dc..0234c8c7 100644 --- a/backend/tests/data/eps/dotcode_5.0_ds0.2.eps +++ b/backend/tests/data/eps/dotcode_5.0_ds0.2.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 110 80 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -80.00 0.00 TB 0.00 110.00 TR -TE -0.00 0.00 0.00 setrgbcolor -5.00 75.00 1.00 TD -45.00 75.00 1.00 TD -65.00 75.00 1.00 TD -85.00 75.00 1.00 TD -105.00 75.00 1.00 TD -35.00 65.00 1.00 TD -55.00 65.00 1.00 TD -75.00 65.00 1.00 TD -5.00 55.00 1.00 TD -25.00 55.00 1.00 TD -65.00 55.00 1.00 TD -85.00 55.00 1.00 TD -105.00 55.00 1.00 TD -15.00 45.00 1.00 TD -5.00 35.00 1.00 TD -105.00 35.00 1.00 TD -15.00 25.00 1.00 TD -35.00 25.00 1.00 TD -55.00 25.00 1.00 TD -75.00 25.00 1.00 TD -5.00 15.00 1.00 TD -25.00 15.00 1.00 TD -85.00 15.00 1.00 TD -105.00 15.00 1.00 TD -15.00 5.00 1.00 TD -35.00 5.00 1.00 TD -75.00 5.00 1.00 TD -95.00 5.00 1.00 TD +1 1 1 setrgbcolor +80 110 0 0 TR +0 0 0 setrgbcolor +5 75 1 TD +45 75 1 TD +65 75 1 TD +85 75 1 TD +105 75 1 TD +35 65 1 TD +55 65 1 TD +75 65 1 TD +5 55 1 TD +25 55 1 TD +65 55 1 TD +85 55 1 TD +105 55 1 TD +15 45 1 TD +5 35 1 TD +105 35 1 TD +15 25 1 TD +35 25 1 TD +55 25 1 TD +75 25 1 TD +5 15 1 TD +25 15 1 TD +85 15 1 TD +105 15 1 TD +15 5 1 TD +35 5 1 TD +75 5 1 TD +95 5 1 TD diff --git a/backend/tests/data/eps/dotcode_5.0_ds1.1.eps b/backend/tests/data/eps/dotcode_5.0_ds1.1.eps index 255a63ca..2f0d3e92 100644 --- a/backend/tests/data/eps/dotcode_5.0_ds1.1.eps +++ b/backend/tests/data/eps/dotcode_5.0_ds1.1.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 112 82 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -82.00 0.00 TB 0.00 112.00 TR -TE -0.00 0.00 0.00 setrgbcolor -6.00 76.00 5.50 TD -46.00 76.00 5.50 TD -66.00 76.00 5.50 TD -86.00 76.00 5.50 TD -106.00 76.00 5.50 TD -36.00 66.00 5.50 TD -56.00 66.00 5.50 TD -76.00 66.00 5.50 TD -6.00 56.00 5.50 TD -26.00 56.00 5.50 TD -66.00 56.00 5.50 TD -86.00 56.00 5.50 TD -106.00 56.00 5.50 TD -16.00 46.00 5.50 TD -6.00 36.00 5.50 TD -106.00 36.00 5.50 TD -16.00 26.00 5.50 TD -36.00 26.00 5.50 TD -56.00 26.00 5.50 TD -76.00 26.00 5.50 TD -6.00 16.00 5.50 TD -26.00 16.00 5.50 TD -86.00 16.00 5.50 TD -106.00 16.00 5.50 TD -16.00 6.00 5.50 TD -36.00 6.00 5.50 TD -76.00 6.00 5.50 TD -96.00 6.00 5.50 TD +1 1 1 setrgbcolor +82 112 0 0 TR +0 0 0 setrgbcolor +6 76 5.5 TD +46 76 5.5 TD +66 76 5.5 TD +86 76 5.5 TD +106 76 5.5 TD +36 66 5.5 TD +56 66 5.5 TD +76 66 5.5 TD +6 56 5.5 TD +26 56 5.5 TD +66 56 5.5 TD +86 56 5.5 TD +106 56 5.5 TD +16 46 5.5 TD +6 36 5.5 TD +106 36 5.5 TD +16 26 5.5 TD +36 26 5.5 TD +56 26 5.5 TD +76 26 5.5 TD +6 16 5.5 TD +26 16 5.5 TD +86 16 5.5 TD +106 16 5.5 TD +16 6 5.5 TD +36 6 5.5 TD +76 6 5.5 TD +96 6 5.5 TD diff --git a/backend/tests/data/eps/dotcode_5.0_ds1.7.eps b/backend/tests/data/eps/dotcode_5.0_ds1.7.eps index 2efe00a0..45bd8557 100644 --- a/backend/tests/data/eps/dotcode_5.0_ds1.7.eps +++ b/backend/tests/data/eps/dotcode_5.0_ds1.7.eps @@ -1,43 +1,40 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 118 88 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -88.00 0.00 TB 0.00 118.00 TR -TE -0.00 0.00 0.00 setrgbcolor -9.00 79.00 8.50 TD -49.00 79.00 8.50 TD -69.00 79.00 8.50 TD -89.00 79.00 8.50 TD -109.00 79.00 8.50 TD -39.00 69.00 8.50 TD -59.00 69.00 8.50 TD -79.00 69.00 8.50 TD -9.00 59.00 8.50 TD -29.00 59.00 8.50 TD -69.00 59.00 8.50 TD -89.00 59.00 8.50 TD -109.00 59.00 8.50 TD -19.00 49.00 8.50 TD -9.00 39.00 8.50 TD -109.00 39.00 8.50 TD -19.00 29.00 8.50 TD -39.00 29.00 8.50 TD -59.00 29.00 8.50 TD -79.00 29.00 8.50 TD -9.00 19.00 8.50 TD -29.00 19.00 8.50 TD -89.00 19.00 8.50 TD -109.00 19.00 8.50 TD -19.00 9.00 8.50 TD -39.00 9.00 8.50 TD -79.00 9.00 8.50 TD -99.00 9.00 8.50 TD +1 1 1 setrgbcolor +88 118 0 0 TR +0 0 0 setrgbcolor +9 79 8.5 TD +49 79 8.5 TD +69 79 8.5 TD +89 79 8.5 TD +109 79 8.5 TD +39 69 8.5 TD +59 69 8.5 TD +79 69 8.5 TD +9 59 8.5 TD +29 59 8.5 TD +69 59 8.5 TD +89 59 8.5 TD +109 59 8.5 TD +19 49 8.5 TD +9 39 8.5 TD +109 39 8.5 TD +19 29 8.5 TD +39 29 8.5 TD +59 29 8.5 TD +79 29 8.5 TD +9 19 8.5 TD +29 19 8.5 TD +89 19 8.5 TD +109 19 8.5 TD +19 9 8.5 TD +39 9 8.5 TD +79 9 8.5 TD +99 9 8.5 TD diff --git a/backend/tests/data/eps/dotcode_no_bg.eps b/backend/tests/data/eps/dotcode_no_bg.eps index a8ba4713..f5de2b71 100644 --- a/backend/tests/data/eps/dotcode_no_bg.eps +++ b/backend/tests/data/eps/dotcode_no_bg.eps @@ -1,40 +1,37 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 22 16 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def newpath -1.00 0.00 0.00 setrgbcolor -1.00 15.00 0.80 TD -9.00 15.00 0.80 TD -13.00 15.00 0.80 TD -17.00 15.00 0.80 TD -21.00 15.00 0.80 TD -7.00 13.00 0.80 TD -11.00 13.00 0.80 TD -15.00 13.00 0.80 TD -1.00 11.00 0.80 TD -5.00 11.00 0.80 TD -13.00 11.00 0.80 TD -17.00 11.00 0.80 TD -21.00 11.00 0.80 TD -3.00 9.00 0.80 TD -1.00 7.00 0.80 TD -21.00 7.00 0.80 TD -3.00 5.00 0.80 TD -7.00 5.00 0.80 TD -11.00 5.00 0.80 TD -15.00 5.00 0.80 TD -1.00 3.00 0.80 TD -5.00 3.00 0.80 TD -17.00 3.00 0.80 TD -21.00 3.00 0.80 TD -3.00 1.00 0.80 TD -7.00 1.00 0.80 TD -15.00 1.00 0.80 TD -19.00 1.00 0.80 TD +1 0 0 setrgbcolor +1 15 0.8 TD +9 15 0.8 TD +13 15 0.8 TD +17 15 0.8 TD +21 15 0.8 TD +7 13 0.8 TD +11 13 0.8 TD +15 13 0.8 TD +1 11 0.8 TD +5 11 0.8 TD +13 11 0.8 TD +17 11 0.8 TD +21 11 0.8 TD +3 9 0.8 TD +1 7 0.8 TD +21 7 0.8 TD +3 5 0.8 TD +7 5 0.8 TD +11 5 0.8 TD +15 5 0.8 TD +1 3 0.8 TD +5 3 0.8 TD +17 3 0.8 TD +21 3 0.8 TD +3 1 0.8 TD +7 1 0.8 TD +15 1 0.8 TD +19 1 0.8 TD diff --git a/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps b/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps index 1ee2cf51..fa472f04 100644 --- a/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps +++ b/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps @@ -2,123 +2,60 @@ %%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 -%%BoundingBox: 0 0 276 117 +%%BoundingBox: 0 0 276 118 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -116.90 0.00 TB 0.00 276.00 TR -TE -0.00 0.00 0.00 setrgbcolor -110.00 6.90 TB 22.00 2.00 TR -TE -110.00 6.90 TB 26.00 2.00 TR -TE -100.00 16.90 TB 30.00 6.00 TR -TE -100.00 16.90 TB 38.00 4.00 TR -TE -100.00 16.90 TB 46.00 2.00 TR -TE -100.00 16.90 TB 54.00 2.00 TR -TE -100.00 16.90 TB 58.00 4.00 TR -TE -100.00 16.90 TB 66.00 4.00 TR -TE -100.00 16.90 TB 72.00 8.00 TR -TE -100.00 16.90 TB 82.00 2.00 TR -TE -100.00 16.90 TB 90.00 2.00 TR -TE -100.00 16.90 TB 96.00 2.00 TR -TE -100.00 16.90 TB 100.00 2.00 TR -TE -100.00 16.90 TB 108.00 4.00 TR -TE -110.00 6.90 TB 114.00 2.00 TR -TE -110.00 6.90 TB 118.00 2.00 TR -TE -100.00 16.90 TB 122.00 2.00 TR -TE -100.00 16.90 TB 128.00 6.00 TR -TE -100.00 16.90 TB 136.00 4.00 TR -TE -100.00 16.90 TB 142.00 4.00 TR -TE -100.00 16.90 TB 150.00 2.00 TR -TE -100.00 16.90 TB 154.00 6.00 TR -TE -100.00 16.90 TB 164.00 6.00 TR -TE -100.00 16.90 TB 174.00 2.00 TR -TE -100.00 16.90 TB 178.00 4.00 TR -TE -100.00 16.90 TB 186.00 4.00 TR -TE -100.00 16.90 TB 192.00 2.00 TR -TE -100.00 16.90 TB 200.00 2.00 TR -TE -110.00 6.90 TB 206.00 2.00 TR -TE -110.00 6.90 TB 210.00 2.00 TR -TE -93.10 6.90 TB 226.00 2.00 TR -TE -93.10 6.90 TB 230.00 4.00 TR -TE -93.10 6.90 TB 238.00 4.00 TR -TE -93.10 6.90 TB 246.00 2.00 TR -TE -93.10 6.90 TB 250.00 2.00 TR -TE -93.10 6.90 TB 256.00 2.00 TR -TE -93.10 6.90 TB 262.00 4.00 TR -TE -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 12.20 0.80 translate 0.00 rotate 0 0 moveto - (9) stringwidth -pop -neg 0 rmoveto +1 1 1 setrgbcolor +118 276 0 0 TR +0 0 0 setrgbcolor +110 2 22 8 TR +110 2 26 8 TR +100 6 30 18 TR +100 4 38 18 TR +100 2 46 18 TR +100 2 54 18 TR +100 4 58 18 TR +100 4 66 18 TR +100 8 72 18 TR +100 2 82 18 TR +100 2 90 18 TR +100 2 96 18 TR +100 2 100 18 TR +100 4 108 18 TR +110 2 114 8 TR +110 2 118 8 TR +100 2 122 18 TR +100 6 128 18 TR +100 4 136 18 TR +100 4 142 18 TR +100 2 150 18 TR +100 6 154 18 TR +100 6 164 18 TR +100 2 174 18 TR +100 4 178 18 TR +100 4 186 18 TR +100 2 192 18 TR +100 2 200 18 TR +110 2 206 8 TR +110 2 210 8 TR +92 2 226 8 TR +92 4 230 8 TR +92 4 238 8 TR +92 2 246 8 TR +92 2 250 8 TR +92 2 256 8 TR +92 4 262 8 TR +/Helvetica findfont 21.4 scalefont setfont + 12.2 0.8 moveto + (9) stringwidth pop neg 0 rmoveto (9) show -setmatrix -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 71.00 0.80 translate 0.00 rotate 0 0 moveto - (771384) stringwidth -pop --2 div 0 rmoveto + 71 0.8 moveto + (771384) stringwidth pop -2 div 0 rmoveto (771384) show -setmatrix -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 163.00 0.80 translate 0.00 rotate 0 0 moveto - (524017) stringwidth -pop --2 div 0 rmoveto + 163 0.8 moveto + (524017) stringwidth pop -2 div 0 rmoveto (524017) show -setmatrix -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 246.00 101.90 translate 0.00 rotate 0 0 moveto - (12) stringwidth -pop --2 div 0 rmoveto + 246 102.4 moveto + (12) stringwidth pop -2 div 0 rmoveto (12) show -setmatrix diff --git a/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2_gws.eps b/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2_gws.eps new file mode 100644 index 00000000..1e813eeb --- /dev/null +++ b/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2_gws.eps @@ -0,0 +1,63 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 276 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 276 0 0 TR +0 0 0 setrgbcolor +110 2 22 8 TR +110 2 26 8 TR +100 6 30 18 TR +100 4 38 18 TR +100 2 46 18 TR +100 2 54 18 TR +100 4 58 18 TR +100 4 66 18 TR +100 8 72 18 TR +100 2 82 18 TR +100 2 90 18 TR +100 2 96 18 TR +100 2 100 18 TR +100 4 108 18 TR +110 2 114 8 TR +110 2 118 8 TR +100 2 122 18 TR +100 6 128 18 TR +100 4 136 18 TR +100 4 142 18 TR +100 2 150 18 TR +100 6 154 18 TR +100 6 164 18 TR +100 2 174 18 TR +100 4 178 18 TR +100 4 186 18 TR +100 2 192 18 TR +100 2 200 18 TR +110 2 206 8 TR +110 2 210 8 TR +92 2 226 8 TR +92 4 230 8 TR +92 4 238 8 TR +92 2 246 8 TR +92 2 250 8 TR +92 2 256 8 TR +92 4 262 8 TR +/Helvetica findfont 21.4 scalefont setfont + 12.2 0.8 moveto + (9) stringwidth pop neg 0 rmoveto + (9) show + 71 0.8 moveto + (771384) stringwidth pop -2 div 0 rmoveto + (771384) show + 163 0.8 moveto + (524017) stringwidth pop -2 div 0 rmoveto + (524017) show + 246 102.4 moveto + (12) stringwidth pop -2 div 0 rmoveto + (12) show + 264 102.4 moveto + (>) show diff --git a/backend/tests/data/eps/ean13_ggs_5.2.2.1-1.eps b/backend/tests/data/eps/ean13_ggs_5.2.2.1-1.eps new file mode 100644 index 00000000..ba215ee0 --- /dev/null +++ b/backend/tests/data/eps/ean13_ggs_5.2.2.1-1.eps @@ -0,0 +1,51 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 226 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 226 0 0 TR +0 0 0 setrgbcolor +110 2 22 8 TR +110 2 26 8 TR +100 4 30 18 TR +100 2 40 18 TR +100 2 44 18 TR +100 6 50 18 TR +100 4 58 18 TR +100 4 66 18 TR +100 4 74 18 TR +100 2 82 18 TR +100 2 86 18 TR +100 6 92 18 TR +100 4 102 18 TR +100 2 110 18 TR +110 2 114 8 TR +110 2 118 8 TR +100 2 122 18 TR +100 6 128 18 TR +100 2 136 18 TR +100 2 146 18 TR +100 4 150 18 TR +100 4 158 18 TR +100 6 164 18 TR +100 2 174 18 TR +100 6 178 18 TR +100 2 188 18 TR +100 6 192 18 TR +100 2 202 18 TR +110 2 206 8 TR +110 2 210 8 TR +/Helvetica findfont 21.4 scalefont setfont + 12.2 0.8 moveto + (9) stringwidth pop neg 0 rmoveto + (9) show + 71 0.8 moveto + (501101) stringwidth pop -2 div 0 rmoveto + (501101) show + 163 0.8 moveto + (531000) stringwidth pop -2 div 0 rmoveto + (531000) show diff --git a/backend/tests/data/eps/ean13_ggs_5.2.2.1-1_gws.eps b/backend/tests/data/eps/ean13_ggs_5.2.2.1-1_gws.eps new file mode 100644 index 00000000..fb996b33 --- /dev/null +++ b/backend/tests/data/eps/ean13_ggs_5.2.2.1-1_gws.eps @@ -0,0 +1,53 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 226 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 226 0 0 TR +0 0 0 setrgbcolor +110 2 22 8 TR +110 2 26 8 TR +100 4 30 18 TR +100 2 40 18 TR +100 2 44 18 TR +100 6 50 18 TR +100 4 58 18 TR +100 4 66 18 TR +100 4 74 18 TR +100 2 82 18 TR +100 2 86 18 TR +100 6 92 18 TR +100 4 102 18 TR +100 2 110 18 TR +110 2 114 8 TR +110 2 118 8 TR +100 2 122 18 TR +100 6 128 18 TR +100 2 136 18 TR +100 2 146 18 TR +100 4 150 18 TR +100 4 158 18 TR +100 6 164 18 TR +100 2 174 18 TR +100 6 178 18 TR +100 2 188 18 TR +100 6 192 18 TR +100 2 202 18 TR +110 2 206 8 TR +110 2 210 8 TR +/Helvetica findfont 21.4 scalefont setfont + 12.2 0.8 moveto + (9) stringwidth pop neg 0 rmoveto + (9) show + 71 0.8 moveto + (501101) stringwidth pop -2 div 0 rmoveto + (501101) show + 163 0.8 moveto + (531000) stringwidth pop -2 div 0 rmoveto + (531000) show + 214 0.8 moveto + (>) show diff --git a/backend/tests/data/eps/ean5.eps b/backend/tests/data/eps/ean5.eps new file mode 100644 index 00000000..66cc2490 --- /dev/null +++ b/backend/tests/data/eps/ean5.eps @@ -0,0 +1,31 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 104 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 104 0 0 TR +0 0 0 setrgbcolor +100 2 0 0 TR +100 4 4 0 TR +100 2 14 0 TR +100 4 18 0 TR +100 2 24 0 TR +100 4 28 0 TR +100 6 34 0 TR +100 2 42 0 TR +100 2 48 0 TR +100 2 56 0 TR +100 2 60 0 TR +100 2 64 0 TR +100 8 68 0 TR +100 2 78 0 TR +100 6 82 0 TR +100 2 92 0 TR +/Helvetica findfont 21.4 scalefont setfont + 47 102.4 moveto + (98765) stringwidth pop -2 div 0 rmoveto + (98765) show diff --git a/backend/tests/data/eps/ean5_gws.eps b/backend/tests/data/eps/ean5_gws.eps new file mode 100644 index 00000000..3cfa915e --- /dev/null +++ b/backend/tests/data/eps/ean5_gws.eps @@ -0,0 +1,33 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 104 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 104 0 0 TR +0 0 0 setrgbcolor +100 2 0 0 TR +100 4 4 0 TR +100 2 14 0 TR +100 4 18 0 TR +100 2 24 0 TR +100 4 28 0 TR +100 6 34 0 TR +100 2 42 0 TR +100 2 48 0 TR +100 2 56 0 TR +100 2 60 0 TR +100 2 64 0 TR +100 8 68 0 TR +100 2 78 0 TR +100 6 82 0 TR +100 2 92 0 TR +/Helvetica findfont 21.4 scalefont setfont + 47 102.4 moveto + (98765) stringwidth pop -2 div 0 rmoveto + (98765) show + 91.5 102.4 moveto + (>) show diff --git a/backend/tests/data/eps/ean8_gss_5.2.2.2-1.eps b/backend/tests/data/eps/ean8_gss_5.2.2.2-1.eps new file mode 100644 index 00000000..3de4a031 --- /dev/null +++ b/backend/tests/data/eps/ean8_gss_5.2.2.2-1.eps @@ -0,0 +1,40 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 162 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 162 0 0 TR +0 0 0 setrgbcolor +110 2 14 8 TR +110 2 18 8 TR +100 2 26 18 TR +100 4 30 18 TR +100 4 36 18 TR +100 2 46 18 TR +100 4 54 18 TR +100 2 60 18 TR +100 4 66 18 TR +100 2 74 18 TR +110 2 78 8 TR +110 2 82 8 TR +100 4 86 18 TR +100 4 92 18 TR +100 2 100 18 TR +100 2 110 18 TR +100 2 114 18 TR +100 6 118 18 TR +100 2 128 18 TR +100 2 132 18 TR +110 2 142 8 TR +110 2 146 8 TR +/Helvetica findfont 21.4 scalefont setfont + 49 0.8 moveto + (9501) stringwidth pop -2 div 0 rmoveto + (9501) show + 113 0.8 moveto + (2346) stringwidth pop -2 div 0 rmoveto + (2346) show diff --git a/backend/tests/data/eps/ean8_gss_5.2.2.2-1_gws.eps b/backend/tests/data/eps/ean8_gss_5.2.2.2-1_gws.eps new file mode 100644 index 00000000..ad59664f --- /dev/null +++ b/backend/tests/data/eps/ean8_gss_5.2.2.2-1_gws.eps @@ -0,0 +1,45 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 162 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 162 0 0 TR +0 0 0 setrgbcolor +110 2 14 8 TR +110 2 18 8 TR +100 2 26 18 TR +100 4 30 18 TR +100 4 36 18 TR +100 2 46 18 TR +100 4 54 18 TR +100 2 60 18 TR +100 4 66 18 TR +100 2 74 18 TR +110 2 78 8 TR +110 2 82 8 TR +100 4 86 18 TR +100 4 92 18 TR +100 2 100 18 TR +100 2 110 18 TR +100 2 114 18 TR +100 6 118 18 TR +100 2 128 18 TR +100 2 132 18 TR +110 2 142 8 TR +110 2 146 8 TR +/Helvetica findfont 21.4 scalefont setfont + 12.5 0.8 moveto + (<) stringwidth pop neg 0 rmoveto + (<) show + 49 0.8 moveto + (9501) stringwidth pop -2 div 0 rmoveto + (9501) show + 113 0.8 moveto + (2346) stringwidth pop -2 div 0 rmoveto + (2346) show + 149.6 0.8 moveto + (>) show diff --git a/backend/tests/data/eps/maxicode_no_bg_hwsp3_rotate_180.eps b/backend/tests/data/eps/maxicode_no_bg_hwsp3_rotate_180.eps index fafda1b8..60dac504 100644 --- a/backend/tests/data/eps/maxicode_no_bg_hwsp3_rotate_180.eps +++ b/backend/tests/data/eps/maxicode_no_bg_hwsp3_rotate_180.eps @@ -1,370 +1,367 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 72 58 %%EndComments /TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def /TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def newpath -0.00 0.00 0.00 setrgbcolor -63.00 2.15 63.87 1.65 63.87 0.65 63.00 0.15 62.13 0.65 62.13 1.65 TH -59.00 2.15 59.87 1.65 59.87 0.65 59.00 0.15 58.13 0.65 58.13 1.65 TH -55.00 2.15 55.87 1.65 55.87 0.65 55.00 0.15 54.13 0.65 54.13 1.65 TH -51.00 2.15 51.87 1.65 51.87 0.65 51.00 0.15 50.13 0.65 50.13 1.65 TH -47.00 2.15 47.87 1.65 47.87 0.65 47.00 0.15 46.13 0.65 46.13 1.65 TH -43.00 2.15 43.87 1.65 43.87 0.65 43.00 0.15 42.13 0.65 42.13 1.65 TH -39.00 2.15 39.87 1.65 39.87 0.65 39.00 0.15 38.13 0.65 38.13 1.65 TH -35.00 2.15 35.87 1.65 35.87 0.65 35.00 0.15 34.13 0.65 34.13 1.65 TH -31.00 2.15 31.87 1.65 31.87 0.65 31.00 0.15 30.13 0.65 30.13 1.65 TH -27.00 2.15 27.87 1.65 27.87 0.65 27.00 0.15 26.13 0.65 26.13 1.65 TH -23.00 2.15 23.87 1.65 23.87 0.65 23.00 0.15 22.13 0.65 22.13 1.65 TH -19.00 2.15 19.87 1.65 19.87 0.65 19.00 0.15 18.13 0.65 18.13 1.65 TH -15.00 2.15 15.87 1.65 15.87 0.65 15.00 0.15 14.13 0.65 14.13 1.65 TH -11.00 2.15 11.87 1.65 11.87 0.65 11.00 0.15 10.13 0.65 10.13 1.65 TH -9.00 2.15 9.87 1.65 9.87 0.65 9.00 0.15 8.13 0.65 8.13 1.65 TH -7.00 2.15 7.87 1.65 7.87 0.65 7.00 0.15 6.13 0.65 6.13 1.65 TH -65.00 5.62 65.87 5.12 65.87 4.12 65.00 3.62 64.13 4.12 64.13 5.12 TH -61.00 5.62 61.87 5.12 61.87 4.12 61.00 3.62 60.13 4.12 60.13 5.12 TH -57.00 5.62 57.87 5.12 57.87 4.12 57.00 3.62 56.13 4.12 56.13 5.12 TH -53.00 5.62 53.87 5.12 53.87 4.12 53.00 3.62 52.13 4.12 52.13 5.12 TH -49.00 5.62 49.87 5.12 49.87 4.12 49.00 3.62 48.13 4.12 48.13 5.12 TH -45.00 5.62 45.87 5.12 45.87 4.12 45.00 3.62 44.13 4.12 44.13 5.12 TH -41.00 5.62 41.87 5.12 41.87 4.12 41.00 3.62 40.13 4.12 40.13 5.12 TH -37.00 5.62 37.87 5.12 37.87 4.12 37.00 3.62 36.13 4.12 36.13 5.12 TH -33.00 5.62 33.87 5.12 33.87 4.12 33.00 3.62 32.13 4.12 32.13 5.12 TH -29.00 5.62 29.87 5.12 29.87 4.12 29.00 3.62 28.13 4.12 28.13 5.12 TH -25.00 5.62 25.87 5.12 25.87 4.12 25.00 3.62 24.13 4.12 24.13 5.12 TH -21.00 5.62 21.87 5.12 21.87 4.12 21.00 3.62 20.13 4.12 20.13 5.12 TH -17.00 5.62 17.87 5.12 17.87 4.12 17.00 3.62 16.13 4.12 16.13 5.12 TH -13.00 5.62 13.87 5.12 13.87 4.12 13.00 3.62 12.13 4.12 12.13 5.12 TH -9.00 5.62 9.87 5.12 9.87 4.12 9.00 3.62 8.13 4.12 8.13 5.12 TH -62.00 7.35 62.87 6.85 62.87 5.85 62.00 5.35 61.13 5.85 61.13 6.85 TH -58.00 7.35 58.87 6.85 58.87 5.85 58.00 5.35 57.13 5.85 57.13 6.85 TH -54.00 7.35 54.87 6.85 54.87 5.85 54.00 5.35 53.13 5.85 53.13 6.85 TH -50.00 7.35 50.87 6.85 50.87 5.85 50.00 5.35 49.13 5.85 49.13 6.85 TH -46.00 7.35 46.87 6.85 46.87 5.85 46.00 5.35 45.13 5.85 45.13 6.85 TH -42.00 7.35 42.87 6.85 42.87 5.85 42.00 5.35 41.13 5.85 41.13 6.85 TH -38.00 7.35 38.87 6.85 38.87 5.85 38.00 5.35 37.13 5.85 37.13 6.85 TH -34.00 7.35 34.87 6.85 34.87 5.85 34.00 5.35 33.13 5.85 33.13 6.85 TH -30.00 7.35 30.87 6.85 30.87 5.85 30.00 5.35 29.13 5.85 29.13 6.85 TH -26.00 7.35 26.87 6.85 26.87 5.85 26.00 5.35 25.13 5.85 25.13 6.85 TH -22.00 7.35 22.87 6.85 22.87 5.85 22.00 5.35 21.13 5.85 21.13 6.85 TH -18.00 7.35 18.87 6.85 18.87 5.85 18.00 5.35 17.13 5.85 17.13 6.85 TH -14.00 7.35 14.87 6.85 14.87 5.85 14.00 5.35 13.13 5.85 13.13 6.85 TH -10.00 7.35 10.87 6.85 10.87 5.85 10.00 5.35 9.13 5.85 9.13 6.85 TH -8.00 7.35 8.87 6.85 8.87 5.85 8.00 5.35 7.13 5.85 7.13 6.85 TH -7.00 9.08 7.87 8.58 7.87 7.58 7.00 7.08 6.13 7.58 6.13 8.58 TH -64.00 10.81 64.87 10.31 64.87 9.31 64.00 8.81 63.13 9.31 63.13 10.31 TH -60.00 10.81 60.87 10.31 60.87 9.31 60.00 8.81 59.13 9.31 59.13 10.31 TH -56.00 10.81 56.87 10.31 56.87 9.31 56.00 8.81 55.13 9.31 55.13 10.31 TH -52.00 10.81 52.87 10.31 52.87 9.31 52.00 8.81 51.13 9.31 51.13 10.31 TH -48.00 10.81 48.87 10.31 48.87 9.31 48.00 8.81 47.13 9.31 47.13 10.31 TH -44.00 10.81 44.87 10.31 44.87 9.31 44.00 8.81 43.13 9.31 43.13 10.31 TH -40.00 10.81 40.87 10.31 40.87 9.31 40.00 8.81 39.13 9.31 39.13 10.31 TH -36.00 10.81 36.87 10.31 36.87 9.31 36.00 8.81 35.13 9.31 35.13 10.31 TH -32.00 10.81 32.87 10.31 32.87 9.31 32.00 8.81 31.13 9.31 31.13 10.31 TH -28.00 10.81 28.87 10.31 28.87 9.31 28.00 8.81 27.13 9.31 27.13 10.31 TH -24.00 10.81 24.87 10.31 24.87 9.31 24.00 8.81 23.13 9.31 23.13 10.31 TH -20.00 10.81 20.87 10.31 20.87 9.31 20.00 8.81 19.13 9.31 19.13 10.31 TH -16.00 10.81 16.87 10.31 16.87 9.31 16.00 8.81 15.13 9.31 15.13 10.31 TH -12.00 10.81 12.87 10.31 12.87 9.31 12.00 8.81 11.13 9.31 11.13 10.31 TH -63.00 12.55 63.87 12.05 63.87 11.05 63.00 10.55 62.13 11.05 62.13 12.05 TH -59.00 12.55 59.87 12.05 59.87 11.05 59.00 10.55 58.13 11.05 58.13 12.05 TH -55.00 12.55 55.87 12.05 55.87 11.05 55.00 10.55 54.13 11.05 54.13 12.05 TH -51.00 12.55 51.87 12.05 51.87 11.05 51.00 10.55 50.13 11.05 50.13 12.05 TH -47.00 12.55 47.87 12.05 47.87 11.05 47.00 10.55 46.13 11.05 46.13 12.05 TH -43.00 12.55 43.87 12.05 43.87 11.05 43.00 10.55 42.13 11.05 42.13 12.05 TH -39.00 12.55 39.87 12.05 39.87 11.05 39.00 10.55 38.13 11.05 38.13 12.05 TH -35.00 12.55 35.87 12.05 35.87 11.05 35.00 10.55 34.13 11.05 34.13 12.05 TH -31.00 12.55 31.87 12.05 31.87 11.05 31.00 10.55 30.13 11.05 30.13 12.05 TH -27.00 12.55 27.87 12.05 27.87 11.05 27.00 10.55 26.13 11.05 26.13 12.05 TH -23.00 12.55 23.87 12.05 23.87 11.05 23.00 10.55 22.13 11.05 22.13 12.05 TH -19.00 12.55 19.87 12.05 19.87 11.05 19.00 10.55 18.13 11.05 18.13 12.05 TH -15.00 12.55 15.87 12.05 15.87 11.05 15.00 10.55 14.13 11.05 14.13 12.05 TH -11.00 12.55 11.87 12.05 11.87 11.05 11.00 10.55 10.13 11.05 10.13 12.05 TH -9.00 12.55 9.87 12.05 9.87 11.05 9.00 10.55 8.13 11.05 8.13 12.05 TH -8.00 14.28 8.87 13.78 8.87 12.78 8.00 12.28 7.13 12.78 7.13 13.78 TH -65.00 16.01 65.87 15.51 65.87 14.51 65.00 14.01 64.13 14.51 64.13 15.51 TH -61.00 16.01 61.87 15.51 61.87 14.51 61.00 14.01 60.13 14.51 60.13 15.51 TH -57.00 16.01 57.87 15.51 57.87 14.51 57.00 14.01 56.13 14.51 56.13 15.51 TH -53.00 16.01 53.87 15.51 53.87 14.51 53.00 14.01 52.13 14.51 52.13 15.51 TH -49.00 16.01 49.87 15.51 49.87 14.51 49.00 14.01 48.13 14.51 48.13 15.51 TH -45.00 16.01 45.87 15.51 45.87 14.51 45.00 14.01 44.13 14.51 44.13 15.51 TH -41.00 16.01 41.87 15.51 41.87 14.51 41.00 14.01 40.13 14.51 40.13 15.51 TH -37.00 16.01 37.87 15.51 37.87 14.51 37.00 14.01 36.13 14.51 36.13 15.51 TH -33.00 16.01 33.87 15.51 33.87 14.51 33.00 14.01 32.13 14.51 32.13 15.51 TH -29.00 16.01 29.87 15.51 29.87 14.51 29.00 14.01 28.13 14.51 28.13 15.51 TH -25.00 16.01 25.87 15.51 25.87 14.51 25.00 14.01 24.13 14.51 24.13 15.51 TH -21.00 16.01 21.87 15.51 21.87 14.51 21.00 14.01 20.13 14.51 20.13 15.51 TH -17.00 16.01 17.87 15.51 17.87 14.51 17.00 14.01 16.13 14.51 16.13 15.51 TH -13.00 16.01 13.87 15.51 13.87 14.51 13.00 14.01 12.13 14.51 12.13 15.51 TH -7.00 16.01 7.87 15.51 7.87 14.51 7.00 14.01 6.13 14.51 6.13 15.51 TH -62.00 17.74 62.87 17.24 62.87 16.24 62.00 15.74 61.13 16.24 61.13 17.24 TH -58.00 17.74 58.87 17.24 58.87 16.24 58.00 15.74 57.13 16.24 57.13 17.24 TH -54.00 17.74 54.87 17.24 54.87 16.24 54.00 15.74 53.13 16.24 53.13 17.24 TH -50.00 17.74 50.87 17.24 50.87 16.24 50.00 15.74 49.13 16.24 49.13 17.24 TH -46.00 17.74 46.87 17.24 46.87 16.24 46.00 15.74 45.13 16.24 45.13 17.24 TH -44.00 17.74 44.87 17.24 44.87 16.24 44.00 15.74 43.13 16.24 43.13 17.24 TH -42.00 17.74 42.87 17.24 42.87 16.24 42.00 15.74 41.13 16.24 41.13 17.24 TH -40.00 17.74 40.87 17.24 40.87 16.24 40.00 15.74 39.13 16.24 39.13 17.24 TH -38.00 17.74 38.87 17.24 38.87 16.24 38.00 15.74 37.13 16.24 37.13 17.24 TH -34.00 17.74 34.87 17.24 34.87 16.24 34.00 15.74 33.13 16.24 33.13 17.24 TH -24.00 17.74 24.87 17.24 24.87 16.24 24.00 15.74 23.13 16.24 23.13 17.24 TH -18.00 17.74 18.87 17.24 18.87 16.24 18.00 15.74 17.13 16.24 17.13 17.24 TH -14.00 17.74 14.87 17.24 14.87 16.24 14.00 15.74 13.13 16.24 13.13 17.24 TH -10.00 17.74 10.87 17.24 10.87 16.24 10.00 15.74 9.13 16.24 9.13 17.24 TH -43.00 19.47 43.87 18.97 43.87 17.97 43.00 17.47 42.13 17.97 42.13 18.97 TH -33.00 19.47 33.87 18.97 33.87 17.97 33.00 17.47 32.13 17.97 32.13 18.97 TH -23.00 19.47 23.87 18.97 23.87 17.97 23.00 17.47 22.13 17.97 22.13 18.97 TH -64.00 21.21 64.87 20.71 64.87 19.71 64.00 19.21 63.13 19.71 63.13 20.71 TH -60.00 21.21 60.87 20.71 60.87 19.71 60.00 19.21 59.13 19.71 59.13 20.71 TH -56.00 21.21 56.87 20.71 56.87 19.71 56.00 19.21 55.13 19.71 55.13 20.71 TH -52.00 21.21 52.87 20.71 52.87 19.71 52.00 19.21 51.13 19.71 51.13 20.71 TH -46.00 21.21 46.87 20.71 46.87 19.71 46.00 19.21 45.13 19.71 45.13 20.71 TH -44.00 21.21 44.87 20.71 44.87 19.71 44.00 19.21 43.13 19.71 43.13 20.71 TH -28.00 21.21 28.87 20.71 28.87 19.71 28.00 19.21 27.13 19.71 27.13 20.71 TH -22.00 21.21 22.87 20.71 22.87 19.71 22.00 19.21 21.13 19.71 21.13 20.71 TH -20.00 21.21 20.87 20.71 20.87 19.71 20.00 19.21 19.13 19.71 19.13 20.71 TH -16.00 21.21 16.87 20.71 16.87 19.71 16.00 19.21 15.13 19.71 15.13 20.71 TH -12.00 21.21 12.87 20.71 12.87 19.71 12.00 19.21 11.13 19.71 11.13 20.71 TH -8.00 21.21 8.87 20.71 8.87 19.71 8.00 19.21 7.13 19.71 7.13 20.71 TH -63.00 22.94 63.87 22.44 63.87 21.44 63.00 20.94 62.13 21.44 62.13 22.44 TH -59.00 22.94 59.87 22.44 59.87 21.44 59.00 20.94 58.13 21.44 58.13 22.44 TH -55.00 22.94 55.87 22.44 55.87 21.44 55.00 20.94 54.13 21.44 54.13 22.44 TH -51.00 22.94 51.87 22.44 51.87 21.44 51.00 20.94 50.13 21.44 50.13 22.44 TH -47.00 22.94 47.87 22.44 47.87 21.44 47.00 20.94 46.13 21.44 46.13 22.44 TH -45.00 22.94 45.87 22.44 45.87 21.44 45.00 20.94 44.13 21.44 44.13 22.44 TH -23.00 22.94 23.87 22.44 23.87 21.44 23.00 20.94 22.13 21.44 22.13 22.44 TH -19.00 22.94 19.87 22.44 19.87 21.44 19.00 20.94 18.13 21.44 18.13 22.44 TH -15.00 22.94 15.87 22.44 15.87 21.44 15.00 20.94 14.13 21.44 14.13 22.44 TH -11.00 22.94 11.87 22.44 11.87 21.44 11.00 20.94 10.13 21.44 10.13 22.44 TH -9.00 22.94 9.87 22.44 9.87 21.44 9.00 20.94 8.13 21.44 8.13 22.44 TH -50.00 24.67 50.87 24.17 50.87 23.17 50.00 22.67 49.13 23.17 49.13 24.17 TH -22.00 24.67 22.87 24.17 22.87 23.17 22.00 22.67 21.13 23.17 21.13 24.17 TH -65.00 26.40 65.87 25.90 65.87 24.90 65.00 24.40 64.13 24.90 64.13 25.90 TH -61.00 26.40 61.87 25.90 61.87 24.90 61.00 24.40 60.13 24.90 60.13 25.90 TH -57.00 26.40 57.87 25.90 57.87 24.90 57.00 24.40 56.13 24.90 56.13 25.90 TH -49.00 26.40 49.87 25.90 49.87 24.90 49.00 24.40 48.13 24.90 48.13 25.90 TH -27.00 26.40 27.87 25.90 27.87 24.90 27.00 24.40 26.13 24.90 26.13 25.90 TH -25.00 26.40 25.87 25.90 25.87 24.90 25.00 24.40 24.13 24.90 24.13 25.90 TH -21.00 26.40 21.87 25.90 21.87 24.90 21.00 24.40 20.13 24.90 20.13 25.90 TH -17.00 26.40 17.87 25.90 17.87 24.90 17.00 24.40 16.13 24.90 16.13 25.90 TH -13.00 26.40 13.87 25.90 13.87 24.90 13.00 24.40 12.13 24.90 12.13 25.90 TH -62.00 28.13 62.87 27.63 62.87 26.63 62.00 26.13 61.13 26.63 61.13 27.63 TH -58.00 28.13 58.87 27.63 58.87 26.63 58.00 26.13 57.13 26.63 57.13 27.63 TH -54.00 28.13 54.87 27.63 54.87 26.63 54.00 26.13 53.13 26.63 53.13 27.63 TH -52.00 28.13 52.87 27.63 52.87 26.63 52.00 26.13 51.13 26.63 51.13 27.63 TH -50.00 28.13 50.87 27.63 50.87 26.63 50.00 26.13 49.13 26.63 49.13 27.63 TH -48.00 28.13 48.87 27.63 48.87 26.63 48.00 26.13 47.13 26.63 47.13 27.63 TH -24.00 28.13 24.87 27.63 24.87 26.63 24.00 26.13 23.13 26.63 23.13 27.63 TH -18.00 28.13 18.87 27.63 18.87 26.63 18.00 26.13 17.13 26.63 17.13 27.63 TH -14.00 28.13 14.87 27.63 14.87 26.63 14.00 26.13 13.13 26.63 13.13 27.63 TH -10.00 28.13 10.87 27.63 10.87 26.63 10.00 26.13 9.13 26.63 9.13 27.63 TH -8.00 28.13 8.87 27.63 8.87 26.63 8.00 26.13 7.13 26.63 7.13 27.63 TH -49.00 29.87 49.87 29.37 49.87 28.37 49.00 27.87 48.13 28.37 48.13 29.37 TH -25.00 29.87 25.87 29.37 25.87 28.37 25.00 27.87 24.13 28.37 24.13 29.37 TH -9.00 29.87 9.87 29.37 9.87 28.37 9.00 27.87 8.13 28.37 8.13 29.37 TH -64.00 31.60 64.87 31.10 64.87 30.10 64.00 29.60 63.13 30.10 63.13 31.10 TH -60.00 31.60 60.87 31.10 60.87 30.10 60.00 29.60 59.13 30.10 59.13 31.10 TH -56.00 31.60 56.87 31.10 56.87 30.10 56.00 29.60 55.13 30.10 55.13 31.10 TH -24.00 31.60 24.87 31.10 24.87 30.10 24.00 29.60 23.13 30.10 23.13 31.10 TH -22.00 31.60 22.87 31.10 22.87 30.10 22.00 29.60 21.13 30.10 21.13 31.10 TH -20.00 31.60 20.87 31.10 20.87 30.10 20.00 29.60 19.13 30.10 19.13 31.10 TH -16.00 31.60 16.87 31.10 16.87 30.10 16.00 29.60 15.13 30.10 15.13 31.10 TH -12.00 31.60 12.87 31.10 12.87 30.10 12.00 29.60 11.13 30.10 11.13 31.10 TH -63.00 33.33 63.87 32.83 63.87 31.83 63.00 31.33 62.13 31.83 62.13 32.83 TH -59.00 33.33 59.87 32.83 59.87 31.83 59.00 31.33 58.13 31.83 58.13 32.83 TH -55.00 33.33 55.87 32.83 55.87 31.83 55.00 31.33 54.13 31.83 54.13 32.83 TH -51.00 33.33 51.87 32.83 51.87 31.83 51.00 31.33 50.13 31.83 50.13 32.83 TH -49.00 33.33 49.87 32.83 49.87 31.83 49.00 31.33 48.13 31.83 48.13 32.83 TH -47.00 33.33 47.87 32.83 47.87 31.83 47.00 31.33 46.13 31.83 46.13 32.83 TH -23.00 33.33 23.87 32.83 23.87 31.83 23.00 31.33 22.13 31.83 22.13 32.83 TH -19.00 33.33 19.87 32.83 19.87 31.83 19.00 31.33 18.13 31.83 18.13 32.83 TH -15.00 33.33 15.87 32.83 15.87 31.83 15.00 31.33 14.13 31.83 14.13 32.83 TH -11.00 33.33 11.87 32.83 11.87 31.83 11.00 31.33 10.13 31.83 10.13 32.83 TH -9.00 33.33 9.87 32.83 9.87 31.83 9.00 31.33 8.13 31.83 8.13 32.83 TH -7.00 33.33 7.87 32.83 7.87 31.83 7.00 31.33 6.13 31.83 6.13 32.83 TH -48.00 35.06 48.87 34.56 48.87 33.56 48.00 33.06 47.13 33.56 47.13 34.56 TH -8.00 35.06 8.87 34.56 8.87 33.56 8.00 33.06 7.13 33.56 7.13 34.56 TH -65.00 36.79 65.87 36.29 65.87 35.29 65.00 34.79 64.13 35.29 64.13 36.29 TH -61.00 36.79 61.87 36.29 61.87 35.29 61.00 34.79 60.13 35.29 60.13 36.29 TH -57.00 36.79 57.87 36.29 57.87 35.29 57.00 34.79 56.13 35.29 56.13 36.29 TH -53.00 36.79 53.87 36.29 53.87 35.29 53.00 34.79 52.13 35.29 52.13 36.29 TH -51.00 36.79 51.87 36.29 51.87 35.29 51.00 34.79 50.13 35.29 50.13 36.29 TH -29.00 36.79 29.87 36.29 29.87 35.29 29.00 34.79 28.13 35.29 28.13 36.29 TH -27.00 36.79 27.87 36.29 27.87 35.29 27.00 34.79 26.13 35.29 26.13 36.29 TH -25.00 36.79 25.87 36.29 25.87 35.29 25.00 34.79 24.13 35.29 24.13 36.29 TH -23.00 36.79 23.87 36.29 23.87 35.29 23.00 34.79 22.13 35.29 22.13 36.29 TH -21.00 36.79 21.87 36.29 21.87 35.29 21.00 34.79 20.13 35.29 20.13 36.29 TH -17.00 36.79 17.87 36.29 17.87 35.29 17.00 34.79 16.13 35.29 16.13 36.29 TH -13.00 36.79 13.87 36.29 13.87 35.29 13.00 34.79 12.13 35.29 12.13 36.29 TH -9.00 36.79 9.87 36.29 9.87 35.29 9.00 34.79 8.13 35.29 8.13 36.29 TH -7.00 36.79 7.87 36.29 7.87 35.29 7.00 34.79 6.13 35.29 6.13 36.29 TH -62.00 38.53 62.87 38.03 62.87 37.03 62.00 36.53 61.13 37.03 61.13 38.03 TH -58.00 38.53 58.87 38.03 58.87 37.03 58.00 36.53 57.13 37.03 57.13 38.03 TH -54.00 38.53 54.87 38.03 54.87 37.03 54.00 36.53 53.13 37.03 53.13 38.03 TH -50.00 38.53 50.87 38.03 50.87 37.03 50.00 36.53 49.13 37.03 49.13 38.03 TH -46.00 38.53 46.87 38.03 46.87 37.03 46.00 36.53 45.13 37.03 45.13 38.03 TH -26.00 38.53 26.87 38.03 26.87 37.03 26.00 36.53 25.13 37.03 25.13 38.03 TH -24.00 38.53 24.87 38.03 24.87 37.03 24.00 36.53 23.13 37.03 23.13 38.03 TH -22.00 38.53 22.87 38.03 22.87 37.03 22.00 36.53 21.13 37.03 21.13 38.03 TH -18.00 38.53 18.87 38.03 18.87 37.03 18.00 36.53 17.13 37.03 17.13 38.03 TH -14.00 38.53 14.87 38.03 14.87 37.03 14.00 36.53 13.13 37.03 13.13 38.03 TH -10.00 38.53 10.87 38.03 10.87 37.03 10.00 36.53 9.13 37.03 9.13 38.03 TH -47.00 40.26 47.87 39.76 47.87 38.76 47.00 38.26 46.13 38.76 46.13 39.76 TH -45.00 40.26 45.87 39.76 45.87 38.76 45.00 38.26 44.13 38.76 44.13 39.76 TH -41.00 40.26 41.87 39.76 41.87 38.76 41.00 38.26 40.13 38.76 40.13 39.76 TH -39.00 40.26 39.87 39.76 39.87 38.76 39.00 38.26 38.13 38.76 38.13 39.76 TH -37.00 40.26 37.87 39.76 37.87 38.76 37.00 38.26 36.13 38.76 36.13 39.76 TH -33.00 40.26 33.87 39.76 33.87 38.76 33.00 38.26 32.13 38.76 32.13 39.76 TH -31.00 40.26 31.87 39.76 31.87 38.76 31.00 38.26 30.13 38.76 30.13 39.76 TH -29.00 40.26 29.87 39.76 29.87 38.76 29.00 38.26 28.13 38.76 28.13 39.76 TH -25.00 40.26 25.87 39.76 25.87 38.76 25.00 38.26 24.13 38.76 24.13 39.76 TH -9.00 40.26 9.87 39.76 9.87 38.76 9.00 38.26 8.13 38.76 8.13 39.76 TH -7.00 40.26 7.87 39.76 7.87 38.76 7.00 38.26 6.13 38.76 6.13 39.76 TH -64.00 41.99 64.87 41.49 64.87 40.49 64.00 39.99 63.13 40.49 63.13 41.49 TH -60.00 41.99 60.87 41.49 60.87 40.49 60.00 39.99 59.13 40.49 59.13 41.49 TH -56.00 41.99 56.87 41.49 56.87 40.49 56.00 39.99 55.13 40.49 55.13 41.49 TH -52.00 41.99 52.87 41.49 52.87 40.49 52.00 39.99 51.13 40.49 51.13 41.49 TH -46.00 41.99 46.87 41.49 46.87 40.49 46.00 39.99 45.13 40.49 45.13 41.49 TH -44.00 41.99 44.87 41.49 44.87 40.49 44.00 39.99 43.13 40.49 43.13 41.49 TH -34.00 41.99 34.87 41.49 34.87 40.49 34.00 39.99 33.13 40.49 33.13 41.49 TH -30.00 41.99 30.87 41.49 30.87 40.49 30.00 39.99 29.13 40.49 29.13 41.49 TH -28.00 41.99 28.87 41.49 28.87 40.49 28.00 39.99 27.13 40.49 27.13 41.49 TH -20.00 41.99 20.87 41.49 20.87 40.49 20.00 39.99 19.13 40.49 19.13 41.49 TH -16.00 41.99 16.87 41.49 16.87 40.49 16.00 39.99 15.13 40.49 15.13 41.49 TH -12.00 41.99 12.87 41.49 12.87 40.49 12.00 39.99 11.13 40.49 11.13 41.49 TH -8.00 41.99 8.87 41.49 8.87 40.49 8.00 39.99 7.13 40.49 7.13 41.49 TH -63.00 43.72 63.87 43.22 63.87 42.22 63.00 41.72 62.13 42.22 62.13 43.22 TH -59.00 43.72 59.87 43.22 59.87 42.22 59.00 41.72 58.13 42.22 58.13 43.22 TH -55.00 43.72 55.87 43.22 55.87 42.22 55.00 41.72 54.13 42.22 54.13 43.22 TH -51.00 43.72 51.87 43.22 51.87 42.22 51.00 41.72 50.13 42.22 50.13 43.22 TH -47.00 43.72 47.87 43.22 47.87 42.22 47.00 41.72 46.13 42.22 46.13 43.22 TH -43.00 43.72 43.87 43.22 43.87 42.22 43.00 41.72 42.13 42.22 42.13 43.22 TH -39.00 43.72 39.87 43.22 39.87 42.22 39.00 41.72 38.13 42.22 38.13 43.22 TH -35.00 43.72 35.87 43.22 35.87 42.22 35.00 41.72 34.13 42.22 34.13 43.22 TH -31.00 43.72 31.87 43.22 31.87 42.22 31.00 41.72 30.13 42.22 30.13 43.22 TH -27.00 43.72 27.87 43.22 27.87 42.22 27.00 41.72 26.13 42.22 26.13 43.22 TH -25.00 43.72 25.87 43.22 25.87 42.22 25.00 41.72 24.13 42.22 24.13 43.22 TH -23.00 43.72 23.87 43.22 23.87 42.22 23.00 41.72 22.13 42.22 22.13 43.22 TH -21.00 43.72 21.87 43.22 21.87 42.22 21.00 41.72 20.13 42.22 20.13 43.22 TH -19.00 43.72 19.87 43.22 19.87 42.22 19.00 41.72 18.13 42.22 18.13 43.22 TH -15.00 43.72 15.87 43.22 15.87 42.22 15.00 41.72 14.13 42.22 14.13 43.22 TH -11.00 43.72 11.87 43.22 11.87 42.22 11.00 41.72 10.13 42.22 10.13 43.22 TH -9.00 43.72 9.87 43.22 9.87 42.22 9.00 41.72 8.13 42.22 8.13 43.22 TH -7.00 43.72 7.87 43.22 7.87 42.22 7.00 41.72 6.13 42.22 6.13 43.22 TH -24.00 45.45 24.87 44.95 24.87 43.95 24.00 43.45 23.13 43.95 23.13 44.95 TH -22.00 45.45 22.87 44.95 22.87 43.95 22.00 43.45 21.13 43.95 21.13 44.95 TH -20.00 45.45 20.87 44.95 20.87 43.95 20.00 43.45 19.13 43.95 19.13 44.95 TH -18.00 45.45 18.87 44.95 18.87 43.95 18.00 43.45 17.13 43.95 17.13 44.95 TH -14.00 45.45 14.87 44.95 14.87 43.95 14.00 43.45 13.13 43.95 13.13 44.95 TH -10.00 45.45 10.87 44.95 10.87 43.95 10.00 43.45 9.13 43.95 9.13 44.95 TH -8.00 45.45 8.87 44.95 8.87 43.95 8.00 43.45 7.13 43.95 7.13 44.95 TH -65.00 47.19 65.87 46.69 65.87 45.69 65.00 45.19 64.13 45.69 64.13 46.69 TH -61.00 47.19 61.87 46.69 61.87 45.69 61.00 45.19 60.13 45.69 60.13 46.69 TH -57.00 47.19 57.87 46.69 57.87 45.69 57.00 45.19 56.13 45.69 56.13 46.69 TH -53.00 47.19 53.87 46.69 53.87 45.69 53.00 45.19 52.13 45.69 52.13 46.69 TH -49.00 47.19 49.87 46.69 49.87 45.69 49.00 45.19 48.13 45.69 48.13 46.69 TH -45.00 47.19 45.87 46.69 45.87 45.69 45.00 45.19 44.13 45.69 44.13 46.69 TH -41.00 47.19 41.87 46.69 41.87 45.69 41.00 45.19 40.13 45.69 40.13 46.69 TH -37.00 47.19 37.87 46.69 37.87 45.69 37.00 45.19 36.13 45.69 36.13 46.69 TH -33.00 47.19 33.87 46.69 33.87 45.69 33.00 45.19 32.13 45.69 32.13 46.69 TH -29.00 47.19 29.87 46.69 29.87 45.69 29.00 45.19 28.13 45.69 28.13 46.69 TH -9.00 47.19 9.87 46.69 9.87 45.69 9.00 45.19 8.13 45.69 8.13 46.69 TH -64.00 48.92 64.87 48.42 64.87 47.42 64.00 46.92 63.13 47.42 63.13 48.42 TH -62.00 48.92 62.87 48.42 62.87 47.42 62.00 46.92 61.13 47.42 61.13 48.42 TH -60.00 48.92 60.87 48.42 60.87 47.42 60.00 46.92 59.13 47.42 59.13 48.42 TH -58.00 48.92 58.87 48.42 58.87 47.42 58.00 46.92 57.13 47.42 57.13 48.42 TH -56.00 48.92 56.87 48.42 56.87 47.42 56.00 46.92 55.13 47.42 55.13 48.42 TH -54.00 48.92 54.87 48.42 54.87 47.42 54.00 46.92 53.13 47.42 53.13 48.42 TH -52.00 48.92 52.87 48.42 52.87 47.42 52.00 46.92 51.13 47.42 51.13 48.42 TH -50.00 48.92 50.87 48.42 50.87 47.42 50.00 46.92 49.13 47.42 49.13 48.42 TH -40.00 48.92 40.87 48.42 40.87 47.42 40.00 46.92 39.13 47.42 39.13 48.42 TH -38.00 48.92 38.87 48.42 38.87 47.42 38.00 46.92 37.13 47.42 37.13 48.42 TH -36.00 48.92 36.87 48.42 36.87 47.42 36.00 46.92 35.13 47.42 35.13 48.42 TH -34.00 48.92 34.87 48.42 34.87 47.42 34.00 46.92 33.13 47.42 33.13 48.42 TH -22.00 48.92 22.87 48.42 22.87 47.42 22.00 46.92 21.13 47.42 21.13 48.42 TH -18.00 48.92 18.87 48.42 18.87 47.42 18.00 46.92 17.13 47.42 17.13 48.42 TH -63.00 50.65 63.87 50.15 63.87 49.15 63.00 48.65 62.13 49.15 62.13 50.15 TH -59.00 50.65 59.87 50.15 59.87 49.15 59.00 48.65 58.13 49.15 58.13 50.15 TH -57.00 50.65 57.87 50.15 57.87 49.15 57.00 48.65 56.13 49.15 56.13 50.15 TH -53.00 50.65 53.87 50.15 53.87 49.15 53.00 48.65 52.13 49.15 52.13 50.15 TH -49.00 50.65 49.87 50.15 49.87 49.15 49.00 48.65 48.13 49.15 48.13 50.15 TH -47.00 50.65 47.87 50.15 47.87 49.15 47.00 48.65 46.13 49.15 46.13 50.15 TH -45.00 50.65 45.87 50.15 45.87 49.15 45.00 48.65 44.13 49.15 44.13 50.15 TH -43.00 50.65 43.87 50.15 43.87 49.15 43.00 48.65 42.13 49.15 42.13 50.15 TH -33.00 50.65 33.87 50.15 33.87 49.15 33.00 48.65 32.13 49.15 32.13 50.15 TH -31.00 50.65 31.87 50.15 31.87 49.15 31.00 48.65 30.13 49.15 30.13 50.15 TH -29.00 50.65 29.87 50.15 29.87 49.15 29.00 48.65 28.13 49.15 28.13 50.15 TH -27.00 50.65 27.87 50.15 27.87 49.15 27.00 48.65 26.13 49.15 26.13 50.15 TH -23.00 50.65 23.87 50.15 23.87 49.15 23.00 48.65 22.13 49.15 22.13 50.15 TH -19.00 50.65 19.87 50.15 19.87 49.15 19.00 48.65 18.13 49.15 18.13 50.15 TH -15.00 50.65 15.87 50.15 15.87 49.15 15.00 48.65 14.13 49.15 14.13 50.15 TH -11.00 50.65 11.87 50.15 11.87 49.15 11.00 48.65 10.13 49.15 10.13 50.15 TH -64.00 52.38 64.87 51.88 64.87 50.88 64.00 50.38 63.13 50.88 63.13 51.88 TH -60.00 52.38 60.87 51.88 60.87 50.88 60.00 50.38 59.13 50.88 59.13 51.88 TH -56.00 52.38 56.87 51.88 56.87 50.88 56.00 50.38 55.13 50.88 55.13 51.88 TH -52.00 52.38 52.87 51.88 52.87 50.88 52.00 50.38 51.13 50.88 51.13 51.88 TH -38.00 52.38 38.87 51.88 38.87 50.88 38.00 50.38 37.13 50.88 37.13 51.88 TH -34.00 52.38 34.87 51.88 34.87 50.88 34.00 50.38 33.13 50.88 33.13 51.88 TH -30.00 52.38 30.87 51.88 30.87 50.88 30.00 50.38 29.13 50.88 29.13 51.88 TH -26.00 52.38 26.87 51.88 26.87 50.88 26.00 50.38 25.13 50.88 25.13 51.88 TH -24.00 52.38 24.87 51.88 24.87 50.88 24.00 50.38 23.13 50.88 23.13 51.88 TH -22.00 52.38 22.87 51.88 22.87 50.88 22.00 50.38 21.13 50.88 21.13 51.88 TH -20.00 52.38 20.87 51.88 20.87 50.88 20.00 50.38 19.13 50.88 19.13 51.88 TH -18.00 52.38 18.87 51.88 18.87 50.88 18.00 50.38 17.13 50.88 17.13 51.88 TH -16.00 52.38 16.87 51.88 16.87 50.88 16.00 50.38 15.13 50.88 15.13 51.88 TH -12.00 52.38 12.87 51.88 12.87 50.88 12.00 50.38 11.13 50.88 11.13 51.88 TH -8.00 52.38 8.87 51.88 8.87 50.88 8.00 50.38 7.13 50.88 7.13 51.88 TH -65.00 54.11 65.87 53.61 65.87 52.61 65.00 52.11 64.13 52.61 64.13 53.61 TH -63.00 54.11 63.87 53.61 63.87 52.61 63.00 52.11 62.13 52.61 62.13 53.61 TH -61.00 54.11 61.87 53.61 61.87 52.61 61.00 52.11 60.13 52.61 60.13 53.61 TH -59.00 54.11 59.87 53.61 59.87 52.61 59.00 52.11 58.13 52.61 58.13 53.61 TH -55.00 54.11 55.87 53.61 55.87 52.61 55.00 52.11 54.13 52.61 54.13 53.61 TH -51.00 54.11 51.87 53.61 51.87 52.61 51.00 52.11 50.13 52.61 50.13 53.61 TH -49.00 54.11 49.87 53.61 49.87 52.61 49.00 52.11 48.13 52.61 48.13 53.61 TH -45.00 54.11 45.87 53.61 45.87 52.61 45.00 52.11 44.13 52.61 44.13 53.61 TH -33.00 54.11 33.87 53.61 33.87 52.61 33.00 52.11 32.13 52.61 32.13 53.61 TH -31.00 54.11 31.87 53.61 31.87 52.61 31.00 52.11 30.13 52.61 30.13 53.61 TH -29.00 54.11 29.87 53.61 29.87 52.61 29.00 52.11 28.13 52.61 28.13 53.61 TH -27.00 54.11 27.87 53.61 27.87 52.61 27.00 52.11 26.13 52.61 26.13 53.61 TH -23.00 54.11 23.87 53.61 23.87 52.61 23.00 52.11 22.13 52.61 22.13 53.61 TH -19.00 54.11 19.87 53.61 19.87 52.61 19.00 52.11 18.13 52.61 18.13 53.61 TH -17.00 54.11 17.87 53.61 17.87 52.61 17.00 52.11 16.13 52.61 16.13 53.61 TH -13.00 54.11 13.87 53.61 13.87 52.61 13.00 52.11 12.13 52.61 12.13 53.61 TH -9.00 54.11 9.87 53.61 9.87 52.61 9.00 52.11 8.13 52.61 8.13 53.61 TH -62.00 55.85 62.87 55.35 62.87 54.35 62.00 53.85 61.13 54.35 61.13 55.35 TH -58.00 55.85 58.87 55.35 58.87 54.35 58.00 53.85 57.13 54.35 57.13 55.35 TH -56.00 55.85 56.87 55.35 56.87 54.35 56.00 53.85 55.13 54.35 55.13 55.35 TH -52.00 55.85 52.87 55.35 52.87 54.35 52.00 53.85 51.13 54.35 51.13 55.35 TH -48.00 55.85 48.87 55.35 48.87 54.35 48.00 53.85 47.13 54.35 47.13 55.35 TH -46.00 55.85 46.87 55.35 46.87 54.35 46.00 53.85 45.13 54.35 45.13 55.35 TH -44.00 55.85 44.87 55.35 44.87 54.35 44.00 53.85 43.13 54.35 43.13 55.35 TH -42.00 55.85 42.87 55.35 42.87 54.35 42.00 53.85 41.13 54.35 41.13 55.35 TH -38.00 55.85 38.87 55.35 38.87 54.35 38.00 53.85 37.13 54.35 37.13 55.35 TH -34.00 55.85 34.87 55.35 34.87 54.35 34.00 53.85 33.13 54.35 33.13 55.35 TH -32.00 55.85 32.87 55.35 32.87 54.35 32.00 53.85 31.13 54.35 31.13 55.35 TH -28.00 55.85 28.87 55.35 28.87 54.35 28.00 53.85 27.13 54.35 27.13 55.35 TH -24.00 55.85 24.87 55.35 24.87 54.35 24.00 53.85 23.13 54.35 23.13 55.35 TH -20.00 55.85 20.87 55.35 20.87 54.35 20.00 53.85 19.13 54.35 19.13 55.35 TH -16.00 55.85 16.87 55.35 16.87 54.35 16.00 53.85 15.13 54.35 15.13 55.35 TH -14.00 55.85 14.87 55.35 14.87 54.35 14.00 53.85 13.13 54.35 13.13 55.35 TH -12.00 55.85 12.87 55.35 12.87 54.35 12.00 53.85 11.13 54.35 11.13 55.35 TH -10.00 55.85 10.87 55.35 10.87 54.35 10.00 53.85 9.13 54.35 9.13 55.35 TH -63.00 57.58 63.87 57.08 63.87 56.08 63.00 55.58 62.13 56.08 62.13 57.08 TH -59.00 57.58 59.87 57.08 59.87 56.08 59.00 55.58 58.13 56.08 58.13 57.08 TH -39.00 57.58 39.87 57.08 39.87 56.08 39.00 55.58 38.13 56.08 38.13 57.08 TH -35.00 57.58 35.87 57.08 35.87 56.08 35.00 55.58 34.13 56.08 34.13 57.08 TH -33.00 57.58 33.87 57.08 33.87 56.08 33.00 55.58 32.13 56.08 32.13 57.08 TH -29.00 57.58 29.87 57.08 29.87 56.08 29.00 55.58 28.13 56.08 28.13 57.08 TH -25.00 57.58 25.87 57.08 25.87 56.08 25.00 55.58 24.13 56.08 24.13 57.08 TH -21.00 57.58 21.87 57.08 21.87 56.08 21.00 55.58 20.13 56.08 20.13 57.08 TH -15.00 57.58 15.87 57.08 15.87 56.08 15.00 55.58 14.13 56.08 14.13 57.08 TH -11.00 57.58 11.87 57.08 11.87 56.08 11.00 55.58 10.13 56.08 10.13 57.08 TH -37.00 28.87 7.431 1.569 TC -37.00 28.87 4.293 1.569 TC -37.00 28.87 1.155 1.569 TC +0 0 0 setrgbcolor +63 2.15 63.87 1.65 63.87 0.65 63 0.15 62.13 0.65 62.13 1.65 TH +59 2.15 59.87 1.65 59.87 0.65 59 0.15 58.13 0.65 58.13 1.65 TH +55 2.15 55.87 1.65 55.87 0.65 55 0.15 54.13 0.65 54.13 1.65 TH +51 2.15 51.87 1.65 51.87 0.65 51 0.15 50.13 0.65 50.13 1.65 TH +47 2.15 47.87 1.65 47.87 0.65 47 0.15 46.13 0.65 46.13 1.65 TH +43 2.15 43.87 1.65 43.87 0.65 43 0.15 42.13 0.65 42.13 1.65 TH +39 2.15 39.87 1.65 39.87 0.65 39 0.15 38.13 0.65 38.13 1.65 TH +35 2.15 35.87 1.65 35.87 0.65 35 0.15 34.13 0.65 34.13 1.65 TH +31 2.15 31.87 1.65 31.87 0.65 31 0.15 30.13 0.65 30.13 1.65 TH +27 2.15 27.87 1.65 27.87 0.65 27 0.15 26.13 0.65 26.13 1.65 TH +23 2.15 23.87 1.65 23.87 0.65 23 0.15 22.13 0.65 22.13 1.65 TH +19 2.15 19.87 1.65 19.87 0.65 19 0.15 18.13 0.65 18.13 1.65 TH +15 2.15 15.87 1.65 15.87 0.65 15 0.15 14.13 0.65 14.13 1.65 TH +11 2.15 11.87 1.65 11.87 0.65 11 0.15 10.13 0.65 10.13 1.65 TH +9 2.15 9.87 1.65 9.87 0.65 9 0.15 8.13 0.65 8.13 1.65 TH +7 2.15 7.87 1.65 7.87 0.65 7 0.15 6.13 0.65 6.13 1.65 TH +65 5.62 65.87 5.12 65.87 4.12 65 3.62 64.13 4.12 64.13 5.12 TH +61 5.62 61.87 5.12 61.87 4.12 61 3.62 60.13 4.12 60.13 5.12 TH +57 5.62 57.87 5.12 57.87 4.12 57 3.62 56.13 4.12 56.13 5.12 TH +53 5.62 53.87 5.12 53.87 4.12 53 3.62 52.13 4.12 52.13 5.12 TH +49 5.62 49.87 5.12 49.87 4.12 49 3.62 48.13 4.12 48.13 5.12 TH +45 5.62 45.87 5.12 45.87 4.12 45 3.62 44.13 4.12 44.13 5.12 TH +41 5.62 41.87 5.12 41.87 4.12 41 3.62 40.13 4.12 40.13 5.12 TH +37 5.62 37.87 5.12 37.87 4.12 37 3.62 36.13 4.12 36.13 5.12 TH +33 5.62 33.87 5.12 33.87 4.12 33 3.62 32.13 4.12 32.13 5.12 TH +29 5.62 29.87 5.12 29.87 4.12 29 3.62 28.13 4.12 28.13 5.12 TH +25 5.62 25.87 5.12 25.87 4.12 25 3.62 24.13 4.12 24.13 5.12 TH +21 5.62 21.87 5.12 21.87 4.12 21 3.62 20.13 4.12 20.13 5.12 TH +17 5.62 17.87 5.12 17.87 4.12 17 3.62 16.13 4.12 16.13 5.12 TH +13 5.62 13.87 5.12 13.87 4.12 13 3.62 12.13 4.12 12.13 5.12 TH +9 5.62 9.87 5.12 9.87 4.12 9 3.62 8.13 4.12 8.13 5.12 TH +62 7.35 62.87 6.85 62.87 5.85 62 5.35 61.13 5.85 61.13 6.85 TH +58 7.35 58.87 6.85 58.87 5.85 58 5.35 57.13 5.85 57.13 6.85 TH +54 7.35 54.87 6.85 54.87 5.85 54 5.35 53.13 5.85 53.13 6.85 TH +50 7.35 50.87 6.85 50.87 5.85 50 5.35 49.13 5.85 49.13 6.85 TH +46 7.35 46.87 6.85 46.87 5.85 46 5.35 45.13 5.85 45.13 6.85 TH +42 7.35 42.87 6.85 42.87 5.85 42 5.35 41.13 5.85 41.13 6.85 TH +38 7.35 38.87 6.85 38.87 5.85 38 5.35 37.13 5.85 37.13 6.85 TH +34 7.35 34.87 6.85 34.87 5.85 34 5.35 33.13 5.85 33.13 6.85 TH +30 7.35 30.87 6.85 30.87 5.85 30 5.35 29.13 5.85 29.13 6.85 TH +26 7.35 26.87 6.85 26.87 5.85 26 5.35 25.13 5.85 25.13 6.85 TH +22 7.35 22.87 6.85 22.87 5.85 22 5.35 21.13 5.85 21.13 6.85 TH +18 7.35 18.87 6.85 18.87 5.85 18 5.35 17.13 5.85 17.13 6.85 TH +14 7.35 14.87 6.85 14.87 5.85 14 5.35 13.13 5.85 13.13 6.85 TH +10 7.35 10.87 6.85 10.87 5.85 10 5.35 9.13 5.85 9.13 6.85 TH +8 7.35 8.87 6.85 8.87 5.85 8 5.35 7.13 5.85 7.13 6.85 TH +7 9.08 7.87 8.58 7.87 7.58 7 7.08 6.13 7.58 6.13 8.58 TH +64 10.81 64.87 10.31 64.87 9.31 64 8.81 63.13 9.31 63.13 10.31 TH +60 10.81 60.87 10.31 60.87 9.31 60 8.81 59.13 9.31 59.13 10.31 TH +56 10.81 56.87 10.31 56.87 9.31 56 8.81 55.13 9.31 55.13 10.31 TH +52 10.81 52.87 10.31 52.87 9.31 52 8.81 51.13 9.31 51.13 10.31 TH +48 10.81 48.87 10.31 48.87 9.31 48 8.81 47.13 9.31 47.13 10.31 TH +44 10.81 44.87 10.31 44.87 9.31 44 8.81 43.13 9.31 43.13 10.31 TH +40 10.81 40.87 10.31 40.87 9.31 40 8.81 39.13 9.31 39.13 10.31 TH +36 10.81 36.87 10.31 36.87 9.31 36 8.81 35.13 9.31 35.13 10.31 TH +32 10.81 32.87 10.31 32.87 9.31 32 8.81 31.13 9.31 31.13 10.31 TH +28 10.81 28.87 10.31 28.87 9.31 28 8.81 27.13 9.31 27.13 10.31 TH +24 10.81 24.87 10.31 24.87 9.31 24 8.81 23.13 9.31 23.13 10.31 TH +20 10.81 20.87 10.31 20.87 9.31 20 8.81 19.13 9.31 19.13 10.31 TH +16 10.81 16.87 10.31 16.87 9.31 16 8.81 15.13 9.31 15.13 10.31 TH +12 10.81 12.87 10.31 12.87 9.31 12 8.81 11.13 9.31 11.13 10.31 TH +63 12.55 63.87 12.05 63.87 11.05 63 10.55 62.13 11.05 62.13 12.05 TH +59 12.55 59.87 12.05 59.87 11.05 59 10.55 58.13 11.05 58.13 12.05 TH +55 12.55 55.87 12.05 55.87 11.05 55 10.55 54.13 11.05 54.13 12.05 TH +51 12.55 51.87 12.05 51.87 11.05 51 10.55 50.13 11.05 50.13 12.05 TH +47 12.55 47.87 12.05 47.87 11.05 47 10.55 46.13 11.05 46.13 12.05 TH +43 12.55 43.87 12.05 43.87 11.05 43 10.55 42.13 11.05 42.13 12.05 TH +39 12.55 39.87 12.05 39.87 11.05 39 10.55 38.13 11.05 38.13 12.05 TH +35 12.55 35.87 12.05 35.87 11.05 35 10.55 34.13 11.05 34.13 12.05 TH +31 12.55 31.87 12.05 31.87 11.05 31 10.55 30.13 11.05 30.13 12.05 TH +27 12.55 27.87 12.05 27.87 11.05 27 10.55 26.13 11.05 26.13 12.05 TH +23 12.55 23.87 12.05 23.87 11.05 23 10.55 22.13 11.05 22.13 12.05 TH +19 12.55 19.87 12.05 19.87 11.05 19 10.55 18.13 11.05 18.13 12.05 TH +15 12.55 15.87 12.05 15.87 11.05 15 10.55 14.13 11.05 14.13 12.05 TH +11 12.55 11.87 12.05 11.87 11.05 11 10.55 10.13 11.05 10.13 12.05 TH +9 12.55 9.87 12.05 9.87 11.05 9 10.55 8.13 11.05 8.13 12.05 TH +8 14.28 8.87 13.78 8.87 12.78 8 12.28 7.13 12.78 7.13 13.78 TH +65 16.01 65.87 15.51 65.87 14.51 65 14.01 64.13 14.51 64.13 15.51 TH +61 16.01 61.87 15.51 61.87 14.51 61 14.01 60.13 14.51 60.13 15.51 TH +57 16.01 57.87 15.51 57.87 14.51 57 14.01 56.13 14.51 56.13 15.51 TH +53 16.01 53.87 15.51 53.87 14.51 53 14.01 52.13 14.51 52.13 15.51 TH +49 16.01 49.87 15.51 49.87 14.51 49 14.01 48.13 14.51 48.13 15.51 TH +45 16.01 45.87 15.51 45.87 14.51 45 14.01 44.13 14.51 44.13 15.51 TH +41 16.01 41.87 15.51 41.87 14.51 41 14.01 40.13 14.51 40.13 15.51 TH +37 16.01 37.87 15.51 37.87 14.51 37 14.01 36.13 14.51 36.13 15.51 TH +33 16.01 33.87 15.51 33.87 14.51 33 14.01 32.13 14.51 32.13 15.51 TH +29 16.01 29.87 15.51 29.87 14.51 29 14.01 28.13 14.51 28.13 15.51 TH +25 16.01 25.87 15.51 25.87 14.51 25 14.01 24.13 14.51 24.13 15.51 TH +21 16.01 21.87 15.51 21.87 14.51 21 14.01 20.13 14.51 20.13 15.51 TH +17 16.01 17.87 15.51 17.87 14.51 17 14.01 16.13 14.51 16.13 15.51 TH +13 16.01 13.87 15.51 13.87 14.51 13 14.01 12.13 14.51 12.13 15.51 TH +7 16.01 7.87 15.51 7.87 14.51 7 14.01 6.13 14.51 6.13 15.51 TH +62 17.74 62.87 17.24 62.87 16.24 62 15.74 61.13 16.24 61.13 17.24 TH +58 17.74 58.87 17.24 58.87 16.24 58 15.74 57.13 16.24 57.13 17.24 TH +54 17.74 54.87 17.24 54.87 16.24 54 15.74 53.13 16.24 53.13 17.24 TH +50 17.74 50.87 17.24 50.87 16.24 50 15.74 49.13 16.24 49.13 17.24 TH +46 17.74 46.87 17.24 46.87 16.24 46 15.74 45.13 16.24 45.13 17.24 TH +44 17.74 44.87 17.24 44.87 16.24 44 15.74 43.13 16.24 43.13 17.24 TH +42 17.74 42.87 17.24 42.87 16.24 42 15.74 41.13 16.24 41.13 17.24 TH +40 17.74 40.87 17.24 40.87 16.24 40 15.74 39.13 16.24 39.13 17.24 TH +38 17.74 38.87 17.24 38.87 16.24 38 15.74 37.13 16.24 37.13 17.24 TH +34 17.74 34.87 17.24 34.87 16.24 34 15.74 33.13 16.24 33.13 17.24 TH +24 17.74 24.87 17.24 24.87 16.24 24 15.74 23.13 16.24 23.13 17.24 TH +18 17.74 18.87 17.24 18.87 16.24 18 15.74 17.13 16.24 17.13 17.24 TH +14 17.74 14.87 17.24 14.87 16.24 14 15.74 13.13 16.24 13.13 17.24 TH +10 17.74 10.87 17.24 10.87 16.24 10 15.74 9.13 16.24 9.13 17.24 TH +43 19.47 43.87 18.97 43.87 17.97 43 17.47 42.13 17.97 42.13 18.97 TH +33 19.47 33.87 18.97 33.87 17.97 33 17.47 32.13 17.97 32.13 18.97 TH +23 19.47 23.87 18.97 23.87 17.97 23 17.47 22.13 17.97 22.13 18.97 TH +64 21.21 64.87 20.71 64.87 19.71 64 19.21 63.13 19.71 63.13 20.71 TH +60 21.21 60.87 20.71 60.87 19.71 60 19.21 59.13 19.71 59.13 20.71 TH +56 21.21 56.87 20.71 56.87 19.71 56 19.21 55.13 19.71 55.13 20.71 TH +52 21.21 52.87 20.71 52.87 19.71 52 19.21 51.13 19.71 51.13 20.71 TH +46 21.21 46.87 20.71 46.87 19.71 46 19.21 45.13 19.71 45.13 20.71 TH +44 21.21 44.87 20.71 44.87 19.71 44 19.21 43.13 19.71 43.13 20.71 TH +28 21.21 28.87 20.71 28.87 19.71 28 19.21 27.13 19.71 27.13 20.71 TH +22 21.21 22.87 20.71 22.87 19.71 22 19.21 21.13 19.71 21.13 20.71 TH +20 21.21 20.87 20.71 20.87 19.71 20 19.21 19.13 19.71 19.13 20.71 TH +16 21.21 16.87 20.71 16.87 19.71 16 19.21 15.13 19.71 15.13 20.71 TH +12 21.21 12.87 20.71 12.87 19.71 12 19.21 11.13 19.71 11.13 20.71 TH +8 21.21 8.87 20.71 8.87 19.71 8 19.21 7.13 19.71 7.13 20.71 TH +63 22.94 63.87 22.44 63.87 21.44 63 20.94 62.13 21.44 62.13 22.44 TH +59 22.94 59.87 22.44 59.87 21.44 59 20.94 58.13 21.44 58.13 22.44 TH +55 22.94 55.87 22.44 55.87 21.44 55 20.94 54.13 21.44 54.13 22.44 TH +51 22.94 51.87 22.44 51.87 21.44 51 20.94 50.13 21.44 50.13 22.44 TH +47 22.94 47.87 22.44 47.87 21.44 47 20.94 46.13 21.44 46.13 22.44 TH +45 22.94 45.87 22.44 45.87 21.44 45 20.94 44.13 21.44 44.13 22.44 TH +23 22.94 23.87 22.44 23.87 21.44 23 20.94 22.13 21.44 22.13 22.44 TH +19 22.94 19.87 22.44 19.87 21.44 19 20.94 18.13 21.44 18.13 22.44 TH +15 22.94 15.87 22.44 15.87 21.44 15 20.94 14.13 21.44 14.13 22.44 TH +11 22.94 11.87 22.44 11.87 21.44 11 20.94 10.13 21.44 10.13 22.44 TH +9 22.94 9.87 22.44 9.87 21.44 9 20.94 8.13 21.44 8.13 22.44 TH +50 24.67 50.87 24.17 50.87 23.17 50 22.67 49.13 23.17 49.13 24.17 TH +22 24.67 22.87 24.17 22.87 23.17 22 22.67 21.13 23.17 21.13 24.17 TH +65 26.4 65.87 25.9 65.87 24.9 65 24.4 64.13 24.9 64.13 25.9 TH +61 26.4 61.87 25.9 61.87 24.9 61 24.4 60.13 24.9 60.13 25.9 TH +57 26.4 57.87 25.9 57.87 24.9 57 24.4 56.13 24.9 56.13 25.9 TH +49 26.4 49.87 25.9 49.87 24.9 49 24.4 48.13 24.9 48.13 25.9 TH +27 26.4 27.87 25.9 27.87 24.9 27 24.4 26.13 24.9 26.13 25.9 TH +25 26.4 25.87 25.9 25.87 24.9 25 24.4 24.13 24.9 24.13 25.9 TH +21 26.4 21.87 25.9 21.87 24.9 21 24.4 20.13 24.9 20.13 25.9 TH +17 26.4 17.87 25.9 17.87 24.9 17 24.4 16.13 24.9 16.13 25.9 TH +13 26.4 13.87 25.9 13.87 24.9 13 24.4 12.13 24.9 12.13 25.9 TH +62 28.13 62.87 27.63 62.87 26.63 62 26.13 61.13 26.63 61.13 27.63 TH +58 28.13 58.87 27.63 58.87 26.63 58 26.13 57.13 26.63 57.13 27.63 TH +54 28.13 54.87 27.63 54.87 26.63 54 26.13 53.13 26.63 53.13 27.63 TH +52 28.13 52.87 27.63 52.87 26.63 52 26.13 51.13 26.63 51.13 27.63 TH +50 28.13 50.87 27.63 50.87 26.63 50 26.13 49.13 26.63 49.13 27.63 TH +48 28.13 48.87 27.63 48.87 26.63 48 26.13 47.13 26.63 47.13 27.63 TH +24 28.13 24.87 27.63 24.87 26.63 24 26.13 23.13 26.63 23.13 27.63 TH +18 28.13 18.87 27.63 18.87 26.63 18 26.13 17.13 26.63 17.13 27.63 TH +14 28.13 14.87 27.63 14.87 26.63 14 26.13 13.13 26.63 13.13 27.63 TH +10 28.13 10.87 27.63 10.87 26.63 10 26.13 9.13 26.63 9.13 27.63 TH +8 28.13 8.87 27.63 8.87 26.63 8 26.13 7.13 26.63 7.13 27.63 TH +49 29.87 49.87 29.37 49.87 28.37 49 27.87 48.13 28.37 48.13 29.37 TH +25 29.87 25.87 29.37 25.87 28.37 25 27.87 24.13 28.37 24.13 29.37 TH +9 29.87 9.87 29.37 9.87 28.37 9 27.87 8.13 28.37 8.13 29.37 TH +64 31.6 64.87 31.1 64.87 30.1 64 29.6 63.13 30.1 63.13 31.1 TH +60 31.6 60.87 31.1 60.87 30.1 60 29.6 59.13 30.1 59.13 31.1 TH +56 31.6 56.87 31.1 56.87 30.1 56 29.6 55.13 30.1 55.13 31.1 TH +24 31.6 24.87 31.1 24.87 30.1 24 29.6 23.13 30.1 23.13 31.1 TH +22 31.6 22.87 31.1 22.87 30.1 22 29.6 21.13 30.1 21.13 31.1 TH +20 31.6 20.87 31.1 20.87 30.1 20 29.6 19.13 30.1 19.13 31.1 TH +16 31.6 16.87 31.1 16.87 30.1 16 29.6 15.13 30.1 15.13 31.1 TH +12 31.6 12.87 31.1 12.87 30.1 12 29.6 11.13 30.1 11.13 31.1 TH +63 33.33 63.87 32.83 63.87 31.83 63 31.33 62.13 31.83 62.13 32.83 TH +59 33.33 59.87 32.83 59.87 31.83 59 31.33 58.13 31.83 58.13 32.83 TH +55 33.33 55.87 32.83 55.87 31.83 55 31.33 54.13 31.83 54.13 32.83 TH +51 33.33 51.87 32.83 51.87 31.83 51 31.33 50.13 31.83 50.13 32.83 TH +49 33.33 49.87 32.83 49.87 31.83 49 31.33 48.13 31.83 48.13 32.83 TH +47 33.33 47.87 32.83 47.87 31.83 47 31.33 46.13 31.83 46.13 32.83 TH +23 33.33 23.87 32.83 23.87 31.83 23 31.33 22.13 31.83 22.13 32.83 TH +19 33.33 19.87 32.83 19.87 31.83 19 31.33 18.13 31.83 18.13 32.83 TH +15 33.33 15.87 32.83 15.87 31.83 15 31.33 14.13 31.83 14.13 32.83 TH +11 33.33 11.87 32.83 11.87 31.83 11 31.33 10.13 31.83 10.13 32.83 TH +9 33.33 9.87 32.83 9.87 31.83 9 31.33 8.13 31.83 8.13 32.83 TH +7 33.33 7.87 32.83 7.87 31.83 7 31.33 6.13 31.83 6.13 32.83 TH +48 35.06 48.87 34.56 48.87 33.56 48 33.06 47.13 33.56 47.13 34.56 TH +8 35.06 8.87 34.56 8.87 33.56 8 33.06 7.13 33.56 7.13 34.56 TH +65 36.79 65.87 36.29 65.87 35.29 65 34.79 64.13 35.29 64.13 36.29 TH +61 36.79 61.87 36.29 61.87 35.29 61 34.79 60.13 35.29 60.13 36.29 TH +57 36.79 57.87 36.29 57.87 35.29 57 34.79 56.13 35.29 56.13 36.29 TH +53 36.79 53.87 36.29 53.87 35.29 53 34.79 52.13 35.29 52.13 36.29 TH +51 36.79 51.87 36.29 51.87 35.29 51 34.79 50.13 35.29 50.13 36.29 TH +29 36.79 29.87 36.29 29.87 35.29 29 34.79 28.13 35.29 28.13 36.29 TH +27 36.79 27.87 36.29 27.87 35.29 27 34.79 26.13 35.29 26.13 36.29 TH +25 36.79 25.87 36.29 25.87 35.29 25 34.79 24.13 35.29 24.13 36.29 TH +23 36.79 23.87 36.29 23.87 35.29 23 34.79 22.13 35.29 22.13 36.29 TH +21 36.79 21.87 36.29 21.87 35.29 21 34.79 20.13 35.29 20.13 36.29 TH +17 36.79 17.87 36.29 17.87 35.29 17 34.79 16.13 35.29 16.13 36.29 TH +13 36.79 13.87 36.29 13.87 35.29 13 34.79 12.13 35.29 12.13 36.29 TH +9 36.79 9.87 36.29 9.87 35.29 9 34.79 8.13 35.29 8.13 36.29 TH +7 36.79 7.87 36.29 7.87 35.29 7 34.79 6.13 35.29 6.13 36.29 TH +62 38.53 62.87 38.03 62.87 37.03 62 36.53 61.13 37.03 61.13 38.03 TH +58 38.53 58.87 38.03 58.87 37.03 58 36.53 57.13 37.03 57.13 38.03 TH +54 38.53 54.87 38.03 54.87 37.03 54 36.53 53.13 37.03 53.13 38.03 TH +50 38.53 50.87 38.03 50.87 37.03 50 36.53 49.13 37.03 49.13 38.03 TH +46 38.53 46.87 38.03 46.87 37.03 46 36.53 45.13 37.03 45.13 38.03 TH +26 38.53 26.87 38.03 26.87 37.03 26 36.53 25.13 37.03 25.13 38.03 TH +24 38.53 24.87 38.03 24.87 37.03 24 36.53 23.13 37.03 23.13 38.03 TH +22 38.53 22.87 38.03 22.87 37.03 22 36.53 21.13 37.03 21.13 38.03 TH +18 38.53 18.87 38.03 18.87 37.03 18 36.53 17.13 37.03 17.13 38.03 TH +14 38.53 14.87 38.03 14.87 37.03 14 36.53 13.13 37.03 13.13 38.03 TH +10 38.53 10.87 38.03 10.87 37.03 10 36.53 9.13 37.03 9.13 38.03 TH +47 40.26 47.87 39.76 47.87 38.76 47 38.26 46.13 38.76 46.13 39.76 TH +45 40.26 45.87 39.76 45.87 38.76 45 38.26 44.13 38.76 44.13 39.76 TH +41 40.26 41.87 39.76 41.87 38.76 41 38.26 40.13 38.76 40.13 39.76 TH +39 40.26 39.87 39.76 39.87 38.76 39 38.26 38.13 38.76 38.13 39.76 TH +37 40.26 37.87 39.76 37.87 38.76 37 38.26 36.13 38.76 36.13 39.76 TH +33 40.26 33.87 39.76 33.87 38.76 33 38.26 32.13 38.76 32.13 39.76 TH +31 40.26 31.87 39.76 31.87 38.76 31 38.26 30.13 38.76 30.13 39.76 TH +29 40.26 29.87 39.76 29.87 38.76 29 38.26 28.13 38.76 28.13 39.76 TH +25 40.26 25.87 39.76 25.87 38.76 25 38.26 24.13 38.76 24.13 39.76 TH +9 40.26 9.87 39.76 9.87 38.76 9 38.26 8.13 38.76 8.13 39.76 TH +7 40.26 7.87 39.76 7.87 38.76 7 38.26 6.13 38.76 6.13 39.76 TH +64 41.99 64.87 41.49 64.87 40.49 64 39.99 63.13 40.49 63.13 41.49 TH +60 41.99 60.87 41.49 60.87 40.49 60 39.99 59.13 40.49 59.13 41.49 TH +56 41.99 56.87 41.49 56.87 40.49 56 39.99 55.13 40.49 55.13 41.49 TH +52 41.99 52.87 41.49 52.87 40.49 52 39.99 51.13 40.49 51.13 41.49 TH +46 41.99 46.87 41.49 46.87 40.49 46 39.99 45.13 40.49 45.13 41.49 TH +44 41.99 44.87 41.49 44.87 40.49 44 39.99 43.13 40.49 43.13 41.49 TH +34 41.99 34.87 41.49 34.87 40.49 34 39.99 33.13 40.49 33.13 41.49 TH +30 41.99 30.87 41.49 30.87 40.49 30 39.99 29.13 40.49 29.13 41.49 TH +28 41.99 28.87 41.49 28.87 40.49 28 39.99 27.13 40.49 27.13 41.49 TH +20 41.99 20.87 41.49 20.87 40.49 20 39.99 19.13 40.49 19.13 41.49 TH +16 41.99 16.87 41.49 16.87 40.49 16 39.99 15.13 40.49 15.13 41.49 TH +12 41.99 12.87 41.49 12.87 40.49 12 39.99 11.13 40.49 11.13 41.49 TH +8 41.99 8.87 41.49 8.87 40.49 8 39.99 7.13 40.49 7.13 41.49 TH +63 43.72 63.87 43.22 63.87 42.22 63 41.72 62.13 42.22 62.13 43.22 TH +59 43.72 59.87 43.22 59.87 42.22 59 41.72 58.13 42.22 58.13 43.22 TH +55 43.72 55.87 43.22 55.87 42.22 55 41.72 54.13 42.22 54.13 43.22 TH +51 43.72 51.87 43.22 51.87 42.22 51 41.72 50.13 42.22 50.13 43.22 TH +47 43.72 47.87 43.22 47.87 42.22 47 41.72 46.13 42.22 46.13 43.22 TH +43 43.72 43.87 43.22 43.87 42.22 43 41.72 42.13 42.22 42.13 43.22 TH +39 43.72 39.87 43.22 39.87 42.22 39 41.72 38.13 42.22 38.13 43.22 TH +35 43.72 35.87 43.22 35.87 42.22 35 41.72 34.13 42.22 34.13 43.22 TH +31 43.72 31.87 43.22 31.87 42.22 31 41.72 30.13 42.22 30.13 43.22 TH +27 43.72 27.87 43.22 27.87 42.22 27 41.72 26.13 42.22 26.13 43.22 TH +25 43.72 25.87 43.22 25.87 42.22 25 41.72 24.13 42.22 24.13 43.22 TH +23 43.72 23.87 43.22 23.87 42.22 23 41.72 22.13 42.22 22.13 43.22 TH +21 43.72 21.87 43.22 21.87 42.22 21 41.72 20.13 42.22 20.13 43.22 TH +19 43.72 19.87 43.22 19.87 42.22 19 41.72 18.13 42.22 18.13 43.22 TH +15 43.72 15.87 43.22 15.87 42.22 15 41.72 14.13 42.22 14.13 43.22 TH +11 43.72 11.87 43.22 11.87 42.22 11 41.72 10.13 42.22 10.13 43.22 TH +9 43.72 9.87 43.22 9.87 42.22 9 41.72 8.13 42.22 8.13 43.22 TH +7 43.72 7.87 43.22 7.87 42.22 7 41.72 6.13 42.22 6.13 43.22 TH +24 45.45 24.87 44.95 24.87 43.95 24 43.45 23.13 43.95 23.13 44.95 TH +22 45.45 22.87 44.95 22.87 43.95 22 43.45 21.13 43.95 21.13 44.95 TH +20 45.45 20.87 44.95 20.87 43.95 20 43.45 19.13 43.95 19.13 44.95 TH +18 45.45 18.87 44.95 18.87 43.95 18 43.45 17.13 43.95 17.13 44.95 TH +14 45.45 14.87 44.95 14.87 43.95 14 43.45 13.13 43.95 13.13 44.95 TH +10 45.45 10.87 44.95 10.87 43.95 10 43.45 9.13 43.95 9.13 44.95 TH +8 45.45 8.87 44.95 8.87 43.95 8 43.45 7.13 43.95 7.13 44.95 TH +65 47.19 65.87 46.69 65.87 45.69 65 45.19 64.13 45.69 64.13 46.69 TH +61 47.19 61.87 46.69 61.87 45.69 61 45.19 60.13 45.69 60.13 46.69 TH +57 47.19 57.87 46.69 57.87 45.69 57 45.19 56.13 45.69 56.13 46.69 TH +53 47.19 53.87 46.69 53.87 45.69 53 45.19 52.13 45.69 52.13 46.69 TH +49 47.19 49.87 46.69 49.87 45.69 49 45.19 48.13 45.69 48.13 46.69 TH +45 47.19 45.87 46.69 45.87 45.69 45 45.19 44.13 45.69 44.13 46.69 TH +41 47.19 41.87 46.69 41.87 45.69 41 45.19 40.13 45.69 40.13 46.69 TH +37 47.19 37.87 46.69 37.87 45.69 37 45.19 36.13 45.69 36.13 46.69 TH +33 47.19 33.87 46.69 33.87 45.69 33 45.19 32.13 45.69 32.13 46.69 TH +29 47.19 29.87 46.69 29.87 45.69 29 45.19 28.13 45.69 28.13 46.69 TH +9 47.19 9.87 46.69 9.87 45.69 9 45.19 8.13 45.69 8.13 46.69 TH +64 48.92 64.87 48.42 64.87 47.42 64 46.92 63.13 47.42 63.13 48.42 TH +62 48.92 62.87 48.42 62.87 47.42 62 46.92 61.13 47.42 61.13 48.42 TH +60 48.92 60.87 48.42 60.87 47.42 60 46.92 59.13 47.42 59.13 48.42 TH +58 48.92 58.87 48.42 58.87 47.42 58 46.92 57.13 47.42 57.13 48.42 TH +56 48.92 56.87 48.42 56.87 47.42 56 46.92 55.13 47.42 55.13 48.42 TH +54 48.92 54.87 48.42 54.87 47.42 54 46.92 53.13 47.42 53.13 48.42 TH +52 48.92 52.87 48.42 52.87 47.42 52 46.92 51.13 47.42 51.13 48.42 TH +50 48.92 50.87 48.42 50.87 47.42 50 46.92 49.13 47.42 49.13 48.42 TH +40 48.92 40.87 48.42 40.87 47.42 40 46.92 39.13 47.42 39.13 48.42 TH +38 48.92 38.87 48.42 38.87 47.42 38 46.92 37.13 47.42 37.13 48.42 TH +36 48.92 36.87 48.42 36.87 47.42 36 46.92 35.13 47.42 35.13 48.42 TH +34 48.92 34.87 48.42 34.87 47.42 34 46.92 33.13 47.42 33.13 48.42 TH +22 48.92 22.87 48.42 22.87 47.42 22 46.92 21.13 47.42 21.13 48.42 TH +18 48.92 18.87 48.42 18.87 47.42 18 46.92 17.13 47.42 17.13 48.42 TH +63 50.65 63.87 50.15 63.87 49.15 63 48.65 62.13 49.15 62.13 50.15 TH +59 50.65 59.87 50.15 59.87 49.15 59 48.65 58.13 49.15 58.13 50.15 TH +57 50.65 57.87 50.15 57.87 49.15 57 48.65 56.13 49.15 56.13 50.15 TH +53 50.65 53.87 50.15 53.87 49.15 53 48.65 52.13 49.15 52.13 50.15 TH +49 50.65 49.87 50.15 49.87 49.15 49 48.65 48.13 49.15 48.13 50.15 TH +47 50.65 47.87 50.15 47.87 49.15 47 48.65 46.13 49.15 46.13 50.15 TH +45 50.65 45.87 50.15 45.87 49.15 45 48.65 44.13 49.15 44.13 50.15 TH +43 50.65 43.87 50.15 43.87 49.15 43 48.65 42.13 49.15 42.13 50.15 TH +33 50.65 33.87 50.15 33.87 49.15 33 48.65 32.13 49.15 32.13 50.15 TH +31 50.65 31.87 50.15 31.87 49.15 31 48.65 30.13 49.15 30.13 50.15 TH +29 50.65 29.87 50.15 29.87 49.15 29 48.65 28.13 49.15 28.13 50.15 TH +27 50.65 27.87 50.15 27.87 49.15 27 48.65 26.13 49.15 26.13 50.15 TH +23 50.65 23.87 50.15 23.87 49.15 23 48.65 22.13 49.15 22.13 50.15 TH +19 50.65 19.87 50.15 19.87 49.15 19 48.65 18.13 49.15 18.13 50.15 TH +15 50.65 15.87 50.15 15.87 49.15 15 48.65 14.13 49.15 14.13 50.15 TH +11 50.65 11.87 50.15 11.87 49.15 11 48.65 10.13 49.15 10.13 50.15 TH +64 52.38 64.87 51.88 64.87 50.88 64 50.38 63.13 50.88 63.13 51.88 TH +60 52.38 60.87 51.88 60.87 50.88 60 50.38 59.13 50.88 59.13 51.88 TH +56 52.38 56.87 51.88 56.87 50.88 56 50.38 55.13 50.88 55.13 51.88 TH +52 52.38 52.87 51.88 52.87 50.88 52 50.38 51.13 50.88 51.13 51.88 TH +38 52.38 38.87 51.88 38.87 50.88 38 50.38 37.13 50.88 37.13 51.88 TH +34 52.38 34.87 51.88 34.87 50.88 34 50.38 33.13 50.88 33.13 51.88 TH +30 52.38 30.87 51.88 30.87 50.88 30 50.38 29.13 50.88 29.13 51.88 TH +26 52.38 26.87 51.88 26.87 50.88 26 50.38 25.13 50.88 25.13 51.88 TH +24 52.38 24.87 51.88 24.87 50.88 24 50.38 23.13 50.88 23.13 51.88 TH +22 52.38 22.87 51.88 22.87 50.88 22 50.38 21.13 50.88 21.13 51.88 TH +20 52.38 20.87 51.88 20.87 50.88 20 50.38 19.13 50.88 19.13 51.88 TH +18 52.38 18.87 51.88 18.87 50.88 18 50.38 17.13 50.88 17.13 51.88 TH +16 52.38 16.87 51.88 16.87 50.88 16 50.38 15.13 50.88 15.13 51.88 TH +12 52.38 12.87 51.88 12.87 50.88 12 50.38 11.13 50.88 11.13 51.88 TH +8 52.38 8.87 51.88 8.87 50.88 8 50.38 7.13 50.88 7.13 51.88 TH +65 54.11 65.87 53.61 65.87 52.61 65 52.11 64.13 52.61 64.13 53.61 TH +63 54.11 63.87 53.61 63.87 52.61 63 52.11 62.13 52.61 62.13 53.61 TH +61 54.11 61.87 53.61 61.87 52.61 61 52.11 60.13 52.61 60.13 53.61 TH +59 54.11 59.87 53.61 59.87 52.61 59 52.11 58.13 52.61 58.13 53.61 TH +55 54.11 55.87 53.61 55.87 52.61 55 52.11 54.13 52.61 54.13 53.61 TH +51 54.11 51.87 53.61 51.87 52.61 51 52.11 50.13 52.61 50.13 53.61 TH +49 54.11 49.87 53.61 49.87 52.61 49 52.11 48.13 52.61 48.13 53.61 TH +45 54.11 45.87 53.61 45.87 52.61 45 52.11 44.13 52.61 44.13 53.61 TH +33 54.11 33.87 53.61 33.87 52.61 33 52.11 32.13 52.61 32.13 53.61 TH +31 54.11 31.87 53.61 31.87 52.61 31 52.11 30.13 52.61 30.13 53.61 TH +29 54.11 29.87 53.61 29.87 52.61 29 52.11 28.13 52.61 28.13 53.61 TH +27 54.11 27.87 53.61 27.87 52.61 27 52.11 26.13 52.61 26.13 53.61 TH +23 54.11 23.87 53.61 23.87 52.61 23 52.11 22.13 52.61 22.13 53.61 TH +19 54.11 19.87 53.61 19.87 52.61 19 52.11 18.13 52.61 18.13 53.61 TH +17 54.11 17.87 53.61 17.87 52.61 17 52.11 16.13 52.61 16.13 53.61 TH +13 54.11 13.87 53.61 13.87 52.61 13 52.11 12.13 52.61 12.13 53.61 TH +9 54.11 9.87 53.61 9.87 52.61 9 52.11 8.13 52.61 8.13 53.61 TH +62 55.85 62.87 55.35 62.87 54.35 62 53.85 61.13 54.35 61.13 55.35 TH +58 55.85 58.87 55.35 58.87 54.35 58 53.85 57.13 54.35 57.13 55.35 TH +56 55.85 56.87 55.35 56.87 54.35 56 53.85 55.13 54.35 55.13 55.35 TH +52 55.85 52.87 55.35 52.87 54.35 52 53.85 51.13 54.35 51.13 55.35 TH +48 55.85 48.87 55.35 48.87 54.35 48 53.85 47.13 54.35 47.13 55.35 TH +46 55.85 46.87 55.35 46.87 54.35 46 53.85 45.13 54.35 45.13 55.35 TH +44 55.85 44.87 55.35 44.87 54.35 44 53.85 43.13 54.35 43.13 55.35 TH +42 55.85 42.87 55.35 42.87 54.35 42 53.85 41.13 54.35 41.13 55.35 TH +38 55.85 38.87 55.35 38.87 54.35 38 53.85 37.13 54.35 37.13 55.35 TH +34 55.85 34.87 55.35 34.87 54.35 34 53.85 33.13 54.35 33.13 55.35 TH +32 55.85 32.87 55.35 32.87 54.35 32 53.85 31.13 54.35 31.13 55.35 TH +28 55.85 28.87 55.35 28.87 54.35 28 53.85 27.13 54.35 27.13 55.35 TH +24 55.85 24.87 55.35 24.87 54.35 24 53.85 23.13 54.35 23.13 55.35 TH +20 55.85 20.87 55.35 20.87 54.35 20 53.85 19.13 54.35 19.13 55.35 TH +16 55.85 16.87 55.35 16.87 54.35 16 53.85 15.13 54.35 15.13 55.35 TH +14 55.85 14.87 55.35 14.87 54.35 14 53.85 13.13 54.35 13.13 55.35 TH +12 55.85 12.87 55.35 12.87 54.35 12 53.85 11.13 54.35 11.13 55.35 TH +10 55.85 10.87 55.35 10.87 54.35 10 53.85 9.13 54.35 9.13 55.35 TH +63 57.58 63.87 57.08 63.87 56.08 63 55.58 62.13 56.08 62.13 57.08 TH +59 57.58 59.87 57.08 59.87 56.08 59 55.58 58.13 56.08 58.13 57.08 TH +39 57.58 39.87 57.08 39.87 56.08 39 55.58 38.13 56.08 38.13 57.08 TH +35 57.58 35.87 57.08 35.87 56.08 35 55.58 34.13 56.08 34.13 57.08 TH +33 57.58 33.87 57.08 33.87 56.08 33 55.58 32.13 56.08 32.13 57.08 TH +29 57.58 29.87 57.08 29.87 56.08 29 55.58 28.13 56.08 28.13 57.08 TH +25 57.58 25.87 57.08 25.87 56.08 25 55.58 24.13 56.08 24.13 57.08 TH +21 57.58 21.87 57.08 21.87 56.08 21 55.58 20.13 56.08 20.13 57.08 TH +15 57.58 15.87 57.08 15.87 56.08 15 55.58 14.13 56.08 14.13 57.08 TH +11 57.58 11.87 57.08 11.87 56.08 11 55.58 10.13 56.08 10.13 57.08 TH +37 28.87 7.431 1.569 TC +37 28.87 4.293 1.569 TC +37 28.87 1.155 1.569 TC diff --git a/backend/tests/data/eps/maxicode_rotate_270_cmyk.eps b/backend/tests/data/eps/maxicode_rotate_270_cmyk.eps index ba2c0132..36795ac5 100644 --- a/backend/tests/data/eps/maxicode_rotate_270_cmyk.eps +++ b/backend/tests/data/eps/maxicode_rotate_270_cmyk.eps @@ -1,373 +1,370 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 58 60 %%EndComments /TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def /TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -0.00 0.00 0.00 0.00 setcmykcolor -60.00 0.00 TB 0.00 57.73 TR -TE -0.00 0.00 0.00 1.00 setcmykcolor -0.15 3.00 0.65 3.87 1.65 3.87 2.15 3.00 1.65 2.13 0.65 2.13 TH -0.15 7.00 0.65 7.87 1.65 7.87 2.15 7.00 1.65 6.13 0.65 6.13 TH -0.15 11.00 0.65 11.87 1.65 11.87 2.15 11.00 1.65 10.13 0.65 10.13 TH -0.15 15.00 0.65 15.87 1.65 15.87 2.15 15.00 1.65 14.13 0.65 14.13 TH -0.15 19.00 0.65 19.87 1.65 19.87 2.15 19.00 1.65 18.13 0.65 18.13 TH -0.15 23.00 0.65 23.87 1.65 23.87 2.15 23.00 1.65 22.13 0.65 22.13 TH -0.15 27.00 0.65 27.87 1.65 27.87 2.15 27.00 1.65 26.13 0.65 26.13 TH -0.15 31.00 0.65 31.87 1.65 31.87 2.15 31.00 1.65 30.13 0.65 30.13 TH -0.15 35.00 0.65 35.87 1.65 35.87 2.15 35.00 1.65 34.13 0.65 34.13 TH -0.15 39.00 0.65 39.87 1.65 39.87 2.15 39.00 1.65 38.13 0.65 38.13 TH -0.15 43.00 0.65 43.87 1.65 43.87 2.15 43.00 1.65 42.13 0.65 42.13 TH -0.15 47.00 0.65 47.87 1.65 47.87 2.15 47.00 1.65 46.13 0.65 46.13 TH -0.15 51.00 0.65 51.87 1.65 51.87 2.15 51.00 1.65 50.13 0.65 50.13 TH -0.15 55.00 0.65 55.87 1.65 55.87 2.15 55.00 1.65 54.13 0.65 54.13 TH -0.15 57.00 0.65 57.87 1.65 57.87 2.15 57.00 1.65 56.13 0.65 56.13 TH -0.15 59.00 0.65 59.87 1.65 59.87 2.15 59.00 1.65 58.13 0.65 58.13 TH -3.62 1.00 4.12 1.87 5.12 1.87 5.62 1.00 5.12 0.13 4.12 0.13 TH -3.62 5.00 4.12 5.87 5.12 5.87 5.62 5.00 5.12 4.13 4.12 4.13 TH -3.62 9.00 4.12 9.87 5.12 9.87 5.62 9.00 5.12 8.13 4.12 8.13 TH -3.62 13.00 4.12 13.87 5.12 13.87 5.62 13.00 5.12 12.13 4.12 12.13 TH -3.62 17.00 4.12 17.87 5.12 17.87 5.62 17.00 5.12 16.13 4.12 16.13 TH -3.62 21.00 4.12 21.87 5.12 21.87 5.62 21.00 5.12 20.13 4.12 20.13 TH -3.62 25.00 4.12 25.87 5.12 25.87 5.62 25.00 5.12 24.13 4.12 24.13 TH -3.62 29.00 4.12 29.87 5.12 29.87 5.62 29.00 5.12 28.13 4.12 28.13 TH -3.62 33.00 4.12 33.87 5.12 33.87 5.62 33.00 5.12 32.13 4.12 32.13 TH -3.62 37.00 4.12 37.87 5.12 37.87 5.62 37.00 5.12 36.13 4.12 36.13 TH -3.62 41.00 4.12 41.87 5.12 41.87 5.62 41.00 5.12 40.13 4.12 40.13 TH -3.62 45.00 4.12 45.87 5.12 45.87 5.62 45.00 5.12 44.13 4.12 44.13 TH -3.62 49.00 4.12 49.87 5.12 49.87 5.62 49.00 5.12 48.13 4.12 48.13 TH -3.62 53.00 4.12 53.87 5.12 53.87 5.62 53.00 5.12 52.13 4.12 52.13 TH -3.62 57.00 4.12 57.87 5.12 57.87 5.62 57.00 5.12 56.13 4.12 56.13 TH -5.35 4.00 5.85 4.87 6.85 4.87 7.35 4.00 6.85 3.13 5.85 3.13 TH -5.35 8.00 5.85 8.87 6.85 8.87 7.35 8.00 6.85 7.13 5.85 7.13 TH -5.35 12.00 5.85 12.87 6.85 12.87 7.35 12.00 6.85 11.13 5.85 11.13 TH -5.35 16.00 5.85 16.87 6.85 16.87 7.35 16.00 6.85 15.13 5.85 15.13 TH -5.35 20.00 5.85 20.87 6.85 20.87 7.35 20.00 6.85 19.13 5.85 19.13 TH -5.35 24.00 5.85 24.87 6.85 24.87 7.35 24.00 6.85 23.13 5.85 23.13 TH -5.35 28.00 5.85 28.87 6.85 28.87 7.35 28.00 6.85 27.13 5.85 27.13 TH -5.35 32.00 5.85 32.87 6.85 32.87 7.35 32.00 6.85 31.13 5.85 31.13 TH -5.35 36.00 5.85 36.87 6.85 36.87 7.35 36.00 6.85 35.13 5.85 35.13 TH -5.35 40.00 5.85 40.87 6.85 40.87 7.35 40.00 6.85 39.13 5.85 39.13 TH -5.35 44.00 5.85 44.87 6.85 44.87 7.35 44.00 6.85 43.13 5.85 43.13 TH -5.35 48.00 5.85 48.87 6.85 48.87 7.35 48.00 6.85 47.13 5.85 47.13 TH -5.35 52.00 5.85 52.87 6.85 52.87 7.35 52.00 6.85 51.13 5.85 51.13 TH -5.35 56.00 5.85 56.87 6.85 56.87 7.35 56.00 6.85 55.13 5.85 55.13 TH -5.35 58.00 5.85 58.87 6.85 58.87 7.35 58.00 6.85 57.13 5.85 57.13 TH -7.08 59.00 7.58 59.87 8.58 59.87 9.08 59.00 8.58 58.13 7.58 58.13 TH -8.81 2.00 9.31 2.87 10.31 2.87 10.81 2.00 10.31 1.13 9.31 1.13 TH -8.81 6.00 9.31 6.87 10.31 6.87 10.81 6.00 10.31 5.13 9.31 5.13 TH -8.81 10.00 9.31 10.87 10.31 10.87 10.81 10.00 10.31 9.13 9.31 9.13 TH -8.81 14.00 9.31 14.87 10.31 14.87 10.81 14.00 10.31 13.13 9.31 13.13 TH -8.81 18.00 9.31 18.87 10.31 18.87 10.81 18.00 10.31 17.13 9.31 17.13 TH -8.81 22.00 9.31 22.87 10.31 22.87 10.81 22.00 10.31 21.13 9.31 21.13 TH -8.81 26.00 9.31 26.87 10.31 26.87 10.81 26.00 10.31 25.13 9.31 25.13 TH -8.81 30.00 9.31 30.87 10.31 30.87 10.81 30.00 10.31 29.13 9.31 29.13 TH -8.81 34.00 9.31 34.87 10.31 34.87 10.81 34.00 10.31 33.13 9.31 33.13 TH -8.81 38.00 9.31 38.87 10.31 38.87 10.81 38.00 10.31 37.13 9.31 37.13 TH -8.81 42.00 9.31 42.87 10.31 42.87 10.81 42.00 10.31 41.13 9.31 41.13 TH -8.81 46.00 9.31 46.87 10.31 46.87 10.81 46.00 10.31 45.13 9.31 45.13 TH -8.81 50.00 9.31 50.87 10.31 50.87 10.81 50.00 10.31 49.13 9.31 49.13 TH -8.81 54.00 9.31 54.87 10.31 54.87 10.81 54.00 10.31 53.13 9.31 53.13 TH -10.55 3.00 11.05 3.87 12.05 3.87 12.55 3.00 12.05 2.13 11.05 2.13 TH -10.55 7.00 11.05 7.87 12.05 7.87 12.55 7.00 12.05 6.13 11.05 6.13 TH -10.55 11.00 11.05 11.87 12.05 11.87 12.55 11.00 12.05 10.13 11.05 10.13 TH -10.55 15.00 11.05 15.87 12.05 15.87 12.55 15.00 12.05 14.13 11.05 14.13 TH -10.55 19.00 11.05 19.87 12.05 19.87 12.55 19.00 12.05 18.13 11.05 18.13 TH -10.55 23.00 11.05 23.87 12.05 23.87 12.55 23.00 12.05 22.13 11.05 22.13 TH -10.55 27.00 11.05 27.87 12.05 27.87 12.55 27.00 12.05 26.13 11.05 26.13 TH -10.55 31.00 11.05 31.87 12.05 31.87 12.55 31.00 12.05 30.13 11.05 30.13 TH -10.55 35.00 11.05 35.87 12.05 35.87 12.55 35.00 12.05 34.13 11.05 34.13 TH -10.55 39.00 11.05 39.87 12.05 39.87 12.55 39.00 12.05 38.13 11.05 38.13 TH -10.55 43.00 11.05 43.87 12.05 43.87 12.55 43.00 12.05 42.13 11.05 42.13 TH -10.55 47.00 11.05 47.87 12.05 47.87 12.55 47.00 12.05 46.13 11.05 46.13 TH -10.55 51.00 11.05 51.87 12.05 51.87 12.55 51.00 12.05 50.13 11.05 50.13 TH -10.55 55.00 11.05 55.87 12.05 55.87 12.55 55.00 12.05 54.13 11.05 54.13 TH -10.55 57.00 11.05 57.87 12.05 57.87 12.55 57.00 12.05 56.13 11.05 56.13 TH -12.28 58.00 12.78 58.87 13.78 58.87 14.28 58.00 13.78 57.13 12.78 57.13 TH -14.01 1.00 14.51 1.87 15.51 1.87 16.01 1.00 15.51 0.13 14.51 0.13 TH -14.01 5.00 14.51 5.87 15.51 5.87 16.01 5.00 15.51 4.13 14.51 4.13 TH -14.01 9.00 14.51 9.87 15.51 9.87 16.01 9.00 15.51 8.13 14.51 8.13 TH -14.01 13.00 14.51 13.87 15.51 13.87 16.01 13.00 15.51 12.13 14.51 12.13 TH -14.01 17.00 14.51 17.87 15.51 17.87 16.01 17.00 15.51 16.13 14.51 16.13 TH -14.01 21.00 14.51 21.87 15.51 21.87 16.01 21.00 15.51 20.13 14.51 20.13 TH -14.01 25.00 14.51 25.87 15.51 25.87 16.01 25.00 15.51 24.13 14.51 24.13 TH -14.01 29.00 14.51 29.87 15.51 29.87 16.01 29.00 15.51 28.13 14.51 28.13 TH -14.01 33.00 14.51 33.87 15.51 33.87 16.01 33.00 15.51 32.13 14.51 32.13 TH -14.01 37.00 14.51 37.87 15.51 37.87 16.01 37.00 15.51 36.13 14.51 36.13 TH -14.01 41.00 14.51 41.87 15.51 41.87 16.01 41.00 15.51 40.13 14.51 40.13 TH -14.01 45.00 14.51 45.87 15.51 45.87 16.01 45.00 15.51 44.13 14.51 44.13 TH -14.01 49.00 14.51 49.87 15.51 49.87 16.01 49.00 15.51 48.13 14.51 48.13 TH -14.01 53.00 14.51 53.87 15.51 53.87 16.01 53.00 15.51 52.13 14.51 52.13 TH -14.01 59.00 14.51 59.87 15.51 59.87 16.01 59.00 15.51 58.13 14.51 58.13 TH -15.74 4.00 16.24 4.87 17.24 4.87 17.74 4.00 17.24 3.13 16.24 3.13 TH -15.74 8.00 16.24 8.87 17.24 8.87 17.74 8.00 17.24 7.13 16.24 7.13 TH -15.74 12.00 16.24 12.87 17.24 12.87 17.74 12.00 17.24 11.13 16.24 11.13 TH -15.74 16.00 16.24 16.87 17.24 16.87 17.74 16.00 17.24 15.13 16.24 15.13 TH -15.74 20.00 16.24 20.87 17.24 20.87 17.74 20.00 17.24 19.13 16.24 19.13 TH -15.74 22.00 16.24 22.87 17.24 22.87 17.74 22.00 17.24 21.13 16.24 21.13 TH -15.74 24.00 16.24 24.87 17.24 24.87 17.74 24.00 17.24 23.13 16.24 23.13 TH -15.74 26.00 16.24 26.87 17.24 26.87 17.74 26.00 17.24 25.13 16.24 25.13 TH -15.74 28.00 16.24 28.87 17.24 28.87 17.74 28.00 17.24 27.13 16.24 27.13 TH -15.74 32.00 16.24 32.87 17.24 32.87 17.74 32.00 17.24 31.13 16.24 31.13 TH -15.74 42.00 16.24 42.87 17.24 42.87 17.74 42.00 17.24 41.13 16.24 41.13 TH -15.74 48.00 16.24 48.87 17.24 48.87 17.74 48.00 17.24 47.13 16.24 47.13 TH -15.74 52.00 16.24 52.87 17.24 52.87 17.74 52.00 17.24 51.13 16.24 51.13 TH -15.74 56.00 16.24 56.87 17.24 56.87 17.74 56.00 17.24 55.13 16.24 55.13 TH -17.47 23.00 17.97 23.87 18.97 23.87 19.47 23.00 18.97 22.13 17.97 22.13 TH -17.47 33.00 17.97 33.87 18.97 33.87 19.47 33.00 18.97 32.13 17.97 32.13 TH -17.47 43.00 17.97 43.87 18.97 43.87 19.47 43.00 18.97 42.13 17.97 42.13 TH -19.21 2.00 19.71 2.87 20.71 2.87 21.21 2.00 20.71 1.13 19.71 1.13 TH -19.21 6.00 19.71 6.87 20.71 6.87 21.21 6.00 20.71 5.13 19.71 5.13 TH -19.21 10.00 19.71 10.87 20.71 10.87 21.21 10.00 20.71 9.13 19.71 9.13 TH -19.21 14.00 19.71 14.87 20.71 14.87 21.21 14.00 20.71 13.13 19.71 13.13 TH -19.21 20.00 19.71 20.87 20.71 20.87 21.21 20.00 20.71 19.13 19.71 19.13 TH -19.21 22.00 19.71 22.87 20.71 22.87 21.21 22.00 20.71 21.13 19.71 21.13 TH -19.21 38.00 19.71 38.87 20.71 38.87 21.21 38.00 20.71 37.13 19.71 37.13 TH -19.21 44.00 19.71 44.87 20.71 44.87 21.21 44.00 20.71 43.13 19.71 43.13 TH -19.21 46.00 19.71 46.87 20.71 46.87 21.21 46.00 20.71 45.13 19.71 45.13 TH -19.21 50.00 19.71 50.87 20.71 50.87 21.21 50.00 20.71 49.13 19.71 49.13 TH -19.21 54.00 19.71 54.87 20.71 54.87 21.21 54.00 20.71 53.13 19.71 53.13 TH -19.21 58.00 19.71 58.87 20.71 58.87 21.21 58.00 20.71 57.13 19.71 57.13 TH -20.94 3.00 21.44 3.87 22.44 3.87 22.94 3.00 22.44 2.13 21.44 2.13 TH -20.94 7.00 21.44 7.87 22.44 7.87 22.94 7.00 22.44 6.13 21.44 6.13 TH -20.94 11.00 21.44 11.87 22.44 11.87 22.94 11.00 22.44 10.13 21.44 10.13 TH -20.94 15.00 21.44 15.87 22.44 15.87 22.94 15.00 22.44 14.13 21.44 14.13 TH -20.94 19.00 21.44 19.87 22.44 19.87 22.94 19.00 22.44 18.13 21.44 18.13 TH -20.94 21.00 21.44 21.87 22.44 21.87 22.94 21.00 22.44 20.13 21.44 20.13 TH -20.94 43.00 21.44 43.87 22.44 43.87 22.94 43.00 22.44 42.13 21.44 42.13 TH -20.94 47.00 21.44 47.87 22.44 47.87 22.94 47.00 22.44 46.13 21.44 46.13 TH -20.94 51.00 21.44 51.87 22.44 51.87 22.94 51.00 22.44 50.13 21.44 50.13 TH -20.94 55.00 21.44 55.87 22.44 55.87 22.94 55.00 22.44 54.13 21.44 54.13 TH -20.94 57.00 21.44 57.87 22.44 57.87 22.94 57.00 22.44 56.13 21.44 56.13 TH -22.67 16.00 23.17 16.87 24.17 16.87 24.67 16.00 24.17 15.13 23.17 15.13 TH -22.67 44.00 23.17 44.87 24.17 44.87 24.67 44.00 24.17 43.13 23.17 43.13 TH -24.40 1.00 24.90 1.87 25.90 1.87 26.40 1.00 25.90 0.13 24.90 0.13 TH -24.40 5.00 24.90 5.87 25.90 5.87 26.40 5.00 25.90 4.13 24.90 4.13 TH -24.40 9.00 24.90 9.87 25.90 9.87 26.40 9.00 25.90 8.13 24.90 8.13 TH -24.40 17.00 24.90 17.87 25.90 17.87 26.40 17.00 25.90 16.13 24.90 16.13 TH -24.40 39.00 24.90 39.87 25.90 39.87 26.40 39.00 25.90 38.13 24.90 38.13 TH -24.40 41.00 24.90 41.87 25.90 41.87 26.40 41.00 25.90 40.13 24.90 40.13 TH -24.40 45.00 24.90 45.87 25.90 45.87 26.40 45.00 25.90 44.13 24.90 44.13 TH -24.40 49.00 24.90 49.87 25.90 49.87 26.40 49.00 25.90 48.13 24.90 48.13 TH -24.40 53.00 24.90 53.87 25.90 53.87 26.40 53.00 25.90 52.13 24.90 52.13 TH -26.13 4.00 26.63 4.87 27.63 4.87 28.13 4.00 27.63 3.13 26.63 3.13 TH -26.13 8.00 26.63 8.87 27.63 8.87 28.13 8.00 27.63 7.13 26.63 7.13 TH -26.13 12.00 26.63 12.87 27.63 12.87 28.13 12.00 27.63 11.13 26.63 11.13 TH -26.13 14.00 26.63 14.87 27.63 14.87 28.13 14.00 27.63 13.13 26.63 13.13 TH -26.13 16.00 26.63 16.87 27.63 16.87 28.13 16.00 27.63 15.13 26.63 15.13 TH -26.13 18.00 26.63 18.87 27.63 18.87 28.13 18.00 27.63 17.13 26.63 17.13 TH -26.13 42.00 26.63 42.87 27.63 42.87 28.13 42.00 27.63 41.13 26.63 41.13 TH -26.13 48.00 26.63 48.87 27.63 48.87 28.13 48.00 27.63 47.13 26.63 47.13 TH -26.13 52.00 26.63 52.87 27.63 52.87 28.13 52.00 27.63 51.13 26.63 51.13 TH -26.13 56.00 26.63 56.87 27.63 56.87 28.13 56.00 27.63 55.13 26.63 55.13 TH -26.13 58.00 26.63 58.87 27.63 58.87 28.13 58.00 27.63 57.13 26.63 57.13 TH -27.87 17.00 28.37 17.87 29.37 17.87 29.87 17.00 29.37 16.13 28.37 16.13 TH -27.87 41.00 28.37 41.87 29.37 41.87 29.87 41.00 29.37 40.13 28.37 40.13 TH -27.87 57.00 28.37 57.87 29.37 57.87 29.87 57.00 29.37 56.13 28.37 56.13 TH -29.60 2.00 30.10 2.87 31.10 2.87 31.60 2.00 31.10 1.13 30.10 1.13 TH -29.60 6.00 30.10 6.87 31.10 6.87 31.60 6.00 31.10 5.13 30.10 5.13 TH -29.60 10.00 30.10 10.87 31.10 10.87 31.60 10.00 31.10 9.13 30.10 9.13 TH -29.60 42.00 30.10 42.87 31.10 42.87 31.60 42.00 31.10 41.13 30.10 41.13 TH -29.60 44.00 30.10 44.87 31.10 44.87 31.60 44.00 31.10 43.13 30.10 43.13 TH -29.60 46.00 30.10 46.87 31.10 46.87 31.60 46.00 31.10 45.13 30.10 45.13 TH -29.60 50.00 30.10 50.87 31.10 50.87 31.60 50.00 31.10 49.13 30.10 49.13 TH -29.60 54.00 30.10 54.87 31.10 54.87 31.60 54.00 31.10 53.13 30.10 53.13 TH -31.33 3.00 31.83 3.87 32.83 3.87 33.33 3.00 32.83 2.13 31.83 2.13 TH -31.33 7.00 31.83 7.87 32.83 7.87 33.33 7.00 32.83 6.13 31.83 6.13 TH -31.33 11.00 31.83 11.87 32.83 11.87 33.33 11.00 32.83 10.13 31.83 10.13 TH -31.33 15.00 31.83 15.87 32.83 15.87 33.33 15.00 32.83 14.13 31.83 14.13 TH -31.33 17.00 31.83 17.87 32.83 17.87 33.33 17.00 32.83 16.13 31.83 16.13 TH -31.33 19.00 31.83 19.87 32.83 19.87 33.33 19.00 32.83 18.13 31.83 18.13 TH -31.33 43.00 31.83 43.87 32.83 43.87 33.33 43.00 32.83 42.13 31.83 42.13 TH -31.33 47.00 31.83 47.87 32.83 47.87 33.33 47.00 32.83 46.13 31.83 46.13 TH -31.33 51.00 31.83 51.87 32.83 51.87 33.33 51.00 32.83 50.13 31.83 50.13 TH -31.33 55.00 31.83 55.87 32.83 55.87 33.33 55.00 32.83 54.13 31.83 54.13 TH -31.33 57.00 31.83 57.87 32.83 57.87 33.33 57.00 32.83 56.13 31.83 56.13 TH -31.33 59.00 31.83 59.87 32.83 59.87 33.33 59.00 32.83 58.13 31.83 58.13 TH -33.06 18.00 33.56 18.87 34.56 18.87 35.06 18.00 34.56 17.13 33.56 17.13 TH -33.06 58.00 33.56 58.87 34.56 58.87 35.06 58.00 34.56 57.13 33.56 57.13 TH -34.79 1.00 35.29 1.87 36.29 1.87 36.79 1.00 36.29 0.13 35.29 0.13 TH -34.79 5.00 35.29 5.87 36.29 5.87 36.79 5.00 36.29 4.13 35.29 4.13 TH -34.79 9.00 35.29 9.87 36.29 9.87 36.79 9.00 36.29 8.13 35.29 8.13 TH -34.79 13.00 35.29 13.87 36.29 13.87 36.79 13.00 36.29 12.13 35.29 12.13 TH -34.79 15.00 35.29 15.87 36.29 15.87 36.79 15.00 36.29 14.13 35.29 14.13 TH -34.79 37.00 35.29 37.87 36.29 37.87 36.79 37.00 36.29 36.13 35.29 36.13 TH -34.79 39.00 35.29 39.87 36.29 39.87 36.79 39.00 36.29 38.13 35.29 38.13 TH -34.79 41.00 35.29 41.87 36.29 41.87 36.79 41.00 36.29 40.13 35.29 40.13 TH -34.79 43.00 35.29 43.87 36.29 43.87 36.79 43.00 36.29 42.13 35.29 42.13 TH -34.79 45.00 35.29 45.87 36.29 45.87 36.79 45.00 36.29 44.13 35.29 44.13 TH -34.79 49.00 35.29 49.87 36.29 49.87 36.79 49.00 36.29 48.13 35.29 48.13 TH -34.79 53.00 35.29 53.87 36.29 53.87 36.79 53.00 36.29 52.13 35.29 52.13 TH -34.79 57.00 35.29 57.87 36.29 57.87 36.79 57.00 36.29 56.13 35.29 56.13 TH -34.79 59.00 35.29 59.87 36.29 59.87 36.79 59.00 36.29 58.13 35.29 58.13 TH -36.53 4.00 37.03 4.87 38.03 4.87 38.53 4.00 38.03 3.13 37.03 3.13 TH -36.53 8.00 37.03 8.87 38.03 8.87 38.53 8.00 38.03 7.13 37.03 7.13 TH -36.53 12.00 37.03 12.87 38.03 12.87 38.53 12.00 38.03 11.13 37.03 11.13 TH -36.53 16.00 37.03 16.87 38.03 16.87 38.53 16.00 38.03 15.13 37.03 15.13 TH -36.53 20.00 37.03 20.87 38.03 20.87 38.53 20.00 38.03 19.13 37.03 19.13 TH -36.53 40.00 37.03 40.87 38.03 40.87 38.53 40.00 38.03 39.13 37.03 39.13 TH -36.53 42.00 37.03 42.87 38.03 42.87 38.53 42.00 38.03 41.13 37.03 41.13 TH -36.53 44.00 37.03 44.87 38.03 44.87 38.53 44.00 38.03 43.13 37.03 43.13 TH -36.53 48.00 37.03 48.87 38.03 48.87 38.53 48.00 38.03 47.13 37.03 47.13 TH -36.53 52.00 37.03 52.87 38.03 52.87 38.53 52.00 38.03 51.13 37.03 51.13 TH -36.53 56.00 37.03 56.87 38.03 56.87 38.53 56.00 38.03 55.13 37.03 55.13 TH -38.26 19.00 38.76 19.87 39.76 19.87 40.26 19.00 39.76 18.13 38.76 18.13 TH -38.26 21.00 38.76 21.87 39.76 21.87 40.26 21.00 39.76 20.13 38.76 20.13 TH -38.26 25.00 38.76 25.87 39.76 25.87 40.26 25.00 39.76 24.13 38.76 24.13 TH -38.26 27.00 38.76 27.87 39.76 27.87 40.26 27.00 39.76 26.13 38.76 26.13 TH -38.26 29.00 38.76 29.87 39.76 29.87 40.26 29.00 39.76 28.13 38.76 28.13 TH -38.26 33.00 38.76 33.87 39.76 33.87 40.26 33.00 39.76 32.13 38.76 32.13 TH -38.26 35.00 38.76 35.87 39.76 35.87 40.26 35.00 39.76 34.13 38.76 34.13 TH -38.26 37.00 38.76 37.87 39.76 37.87 40.26 37.00 39.76 36.13 38.76 36.13 TH -38.26 41.00 38.76 41.87 39.76 41.87 40.26 41.00 39.76 40.13 38.76 40.13 TH -38.26 57.00 38.76 57.87 39.76 57.87 40.26 57.00 39.76 56.13 38.76 56.13 TH -38.26 59.00 38.76 59.87 39.76 59.87 40.26 59.00 39.76 58.13 38.76 58.13 TH -39.99 2.00 40.49 2.87 41.49 2.87 41.99 2.00 41.49 1.13 40.49 1.13 TH -39.99 6.00 40.49 6.87 41.49 6.87 41.99 6.00 41.49 5.13 40.49 5.13 TH -39.99 10.00 40.49 10.87 41.49 10.87 41.99 10.00 41.49 9.13 40.49 9.13 TH -39.99 14.00 40.49 14.87 41.49 14.87 41.99 14.00 41.49 13.13 40.49 13.13 TH -39.99 20.00 40.49 20.87 41.49 20.87 41.99 20.00 41.49 19.13 40.49 19.13 TH -39.99 22.00 40.49 22.87 41.49 22.87 41.99 22.00 41.49 21.13 40.49 21.13 TH -39.99 32.00 40.49 32.87 41.49 32.87 41.99 32.00 41.49 31.13 40.49 31.13 TH -39.99 36.00 40.49 36.87 41.49 36.87 41.99 36.00 41.49 35.13 40.49 35.13 TH -39.99 38.00 40.49 38.87 41.49 38.87 41.99 38.00 41.49 37.13 40.49 37.13 TH -39.99 46.00 40.49 46.87 41.49 46.87 41.99 46.00 41.49 45.13 40.49 45.13 TH -39.99 50.00 40.49 50.87 41.49 50.87 41.99 50.00 41.49 49.13 40.49 49.13 TH -39.99 54.00 40.49 54.87 41.49 54.87 41.99 54.00 41.49 53.13 40.49 53.13 TH -39.99 58.00 40.49 58.87 41.49 58.87 41.99 58.00 41.49 57.13 40.49 57.13 TH -41.72 3.00 42.22 3.87 43.22 3.87 43.72 3.00 43.22 2.13 42.22 2.13 TH -41.72 7.00 42.22 7.87 43.22 7.87 43.72 7.00 43.22 6.13 42.22 6.13 TH -41.72 11.00 42.22 11.87 43.22 11.87 43.72 11.00 43.22 10.13 42.22 10.13 TH -41.72 15.00 42.22 15.87 43.22 15.87 43.72 15.00 43.22 14.13 42.22 14.13 TH -41.72 19.00 42.22 19.87 43.22 19.87 43.72 19.00 43.22 18.13 42.22 18.13 TH -41.72 23.00 42.22 23.87 43.22 23.87 43.72 23.00 43.22 22.13 42.22 22.13 TH -41.72 27.00 42.22 27.87 43.22 27.87 43.72 27.00 43.22 26.13 42.22 26.13 TH -41.72 31.00 42.22 31.87 43.22 31.87 43.72 31.00 43.22 30.13 42.22 30.13 TH -41.72 35.00 42.22 35.87 43.22 35.87 43.72 35.00 43.22 34.13 42.22 34.13 TH -41.72 39.00 42.22 39.87 43.22 39.87 43.72 39.00 43.22 38.13 42.22 38.13 TH -41.72 41.00 42.22 41.87 43.22 41.87 43.72 41.00 43.22 40.13 42.22 40.13 TH -41.72 43.00 42.22 43.87 43.22 43.87 43.72 43.00 43.22 42.13 42.22 42.13 TH -41.72 45.00 42.22 45.87 43.22 45.87 43.72 45.00 43.22 44.13 42.22 44.13 TH -41.72 47.00 42.22 47.87 43.22 47.87 43.72 47.00 43.22 46.13 42.22 46.13 TH -41.72 51.00 42.22 51.87 43.22 51.87 43.72 51.00 43.22 50.13 42.22 50.13 TH -41.72 55.00 42.22 55.87 43.22 55.87 43.72 55.00 43.22 54.13 42.22 54.13 TH -41.72 57.00 42.22 57.87 43.22 57.87 43.72 57.00 43.22 56.13 42.22 56.13 TH -41.72 59.00 42.22 59.87 43.22 59.87 43.72 59.00 43.22 58.13 42.22 58.13 TH -43.45 42.00 43.95 42.87 44.95 42.87 45.45 42.00 44.95 41.13 43.95 41.13 TH -43.45 44.00 43.95 44.87 44.95 44.87 45.45 44.00 44.95 43.13 43.95 43.13 TH -43.45 46.00 43.95 46.87 44.95 46.87 45.45 46.00 44.95 45.13 43.95 45.13 TH -43.45 48.00 43.95 48.87 44.95 48.87 45.45 48.00 44.95 47.13 43.95 47.13 TH -43.45 52.00 43.95 52.87 44.95 52.87 45.45 52.00 44.95 51.13 43.95 51.13 TH -43.45 56.00 43.95 56.87 44.95 56.87 45.45 56.00 44.95 55.13 43.95 55.13 TH -43.45 58.00 43.95 58.87 44.95 58.87 45.45 58.00 44.95 57.13 43.95 57.13 TH -45.19 1.00 45.69 1.87 46.69 1.87 47.19 1.00 46.69 0.13 45.69 0.13 TH -45.19 5.00 45.69 5.87 46.69 5.87 47.19 5.00 46.69 4.13 45.69 4.13 TH -45.19 9.00 45.69 9.87 46.69 9.87 47.19 9.00 46.69 8.13 45.69 8.13 TH -45.19 13.00 45.69 13.87 46.69 13.87 47.19 13.00 46.69 12.13 45.69 12.13 TH -45.19 17.00 45.69 17.87 46.69 17.87 47.19 17.00 46.69 16.13 45.69 16.13 TH -45.19 21.00 45.69 21.87 46.69 21.87 47.19 21.00 46.69 20.13 45.69 20.13 TH -45.19 25.00 45.69 25.87 46.69 25.87 47.19 25.00 46.69 24.13 45.69 24.13 TH -45.19 29.00 45.69 29.87 46.69 29.87 47.19 29.00 46.69 28.13 45.69 28.13 TH -45.19 33.00 45.69 33.87 46.69 33.87 47.19 33.00 46.69 32.13 45.69 32.13 TH -45.19 37.00 45.69 37.87 46.69 37.87 47.19 37.00 46.69 36.13 45.69 36.13 TH -45.19 57.00 45.69 57.87 46.69 57.87 47.19 57.00 46.69 56.13 45.69 56.13 TH -46.92 2.00 47.42 2.87 48.42 2.87 48.92 2.00 48.42 1.13 47.42 1.13 TH -46.92 4.00 47.42 4.87 48.42 4.87 48.92 4.00 48.42 3.13 47.42 3.13 TH -46.92 6.00 47.42 6.87 48.42 6.87 48.92 6.00 48.42 5.13 47.42 5.13 TH -46.92 8.00 47.42 8.87 48.42 8.87 48.92 8.00 48.42 7.13 47.42 7.13 TH -46.92 10.00 47.42 10.87 48.42 10.87 48.92 10.00 48.42 9.13 47.42 9.13 TH -46.92 12.00 47.42 12.87 48.42 12.87 48.92 12.00 48.42 11.13 47.42 11.13 TH -46.92 14.00 47.42 14.87 48.42 14.87 48.92 14.00 48.42 13.13 47.42 13.13 TH -46.92 16.00 47.42 16.87 48.42 16.87 48.92 16.00 48.42 15.13 47.42 15.13 TH -46.92 26.00 47.42 26.87 48.42 26.87 48.92 26.00 48.42 25.13 47.42 25.13 TH -46.92 28.00 47.42 28.87 48.42 28.87 48.92 28.00 48.42 27.13 47.42 27.13 TH -46.92 30.00 47.42 30.87 48.42 30.87 48.92 30.00 48.42 29.13 47.42 29.13 TH -46.92 32.00 47.42 32.87 48.42 32.87 48.92 32.00 48.42 31.13 47.42 31.13 TH -46.92 44.00 47.42 44.87 48.42 44.87 48.92 44.00 48.42 43.13 47.42 43.13 TH -46.92 48.00 47.42 48.87 48.42 48.87 48.92 48.00 48.42 47.13 47.42 47.13 TH -48.65 3.00 49.15 3.87 50.15 3.87 50.65 3.00 50.15 2.13 49.15 2.13 TH -48.65 7.00 49.15 7.87 50.15 7.87 50.65 7.00 50.15 6.13 49.15 6.13 TH -48.65 9.00 49.15 9.87 50.15 9.87 50.65 9.00 50.15 8.13 49.15 8.13 TH -48.65 13.00 49.15 13.87 50.15 13.87 50.65 13.00 50.15 12.13 49.15 12.13 TH -48.65 17.00 49.15 17.87 50.15 17.87 50.65 17.00 50.15 16.13 49.15 16.13 TH -48.65 19.00 49.15 19.87 50.15 19.87 50.65 19.00 50.15 18.13 49.15 18.13 TH -48.65 21.00 49.15 21.87 50.15 21.87 50.65 21.00 50.15 20.13 49.15 20.13 TH -48.65 23.00 49.15 23.87 50.15 23.87 50.65 23.00 50.15 22.13 49.15 22.13 TH -48.65 33.00 49.15 33.87 50.15 33.87 50.65 33.00 50.15 32.13 49.15 32.13 TH -48.65 35.00 49.15 35.87 50.15 35.87 50.65 35.00 50.15 34.13 49.15 34.13 TH -48.65 37.00 49.15 37.87 50.15 37.87 50.65 37.00 50.15 36.13 49.15 36.13 TH -48.65 39.00 49.15 39.87 50.15 39.87 50.65 39.00 50.15 38.13 49.15 38.13 TH -48.65 43.00 49.15 43.87 50.15 43.87 50.65 43.00 50.15 42.13 49.15 42.13 TH -48.65 47.00 49.15 47.87 50.15 47.87 50.65 47.00 50.15 46.13 49.15 46.13 TH -48.65 51.00 49.15 51.87 50.15 51.87 50.65 51.00 50.15 50.13 49.15 50.13 TH -48.65 55.00 49.15 55.87 50.15 55.87 50.65 55.00 50.15 54.13 49.15 54.13 TH -50.38 2.00 50.88 2.87 51.88 2.87 52.38 2.00 51.88 1.13 50.88 1.13 TH -50.38 6.00 50.88 6.87 51.88 6.87 52.38 6.00 51.88 5.13 50.88 5.13 TH -50.38 10.00 50.88 10.87 51.88 10.87 52.38 10.00 51.88 9.13 50.88 9.13 TH -50.38 14.00 50.88 14.87 51.88 14.87 52.38 14.00 51.88 13.13 50.88 13.13 TH -50.38 28.00 50.88 28.87 51.88 28.87 52.38 28.00 51.88 27.13 50.88 27.13 TH -50.38 32.00 50.88 32.87 51.88 32.87 52.38 32.00 51.88 31.13 50.88 31.13 TH -50.38 36.00 50.88 36.87 51.88 36.87 52.38 36.00 51.88 35.13 50.88 35.13 TH -50.38 40.00 50.88 40.87 51.88 40.87 52.38 40.00 51.88 39.13 50.88 39.13 TH -50.38 42.00 50.88 42.87 51.88 42.87 52.38 42.00 51.88 41.13 50.88 41.13 TH -50.38 44.00 50.88 44.87 51.88 44.87 52.38 44.00 51.88 43.13 50.88 43.13 TH -50.38 46.00 50.88 46.87 51.88 46.87 52.38 46.00 51.88 45.13 50.88 45.13 TH -50.38 48.00 50.88 48.87 51.88 48.87 52.38 48.00 51.88 47.13 50.88 47.13 TH -50.38 50.00 50.88 50.87 51.88 50.87 52.38 50.00 51.88 49.13 50.88 49.13 TH -50.38 54.00 50.88 54.87 51.88 54.87 52.38 54.00 51.88 53.13 50.88 53.13 TH -50.38 58.00 50.88 58.87 51.88 58.87 52.38 58.00 51.88 57.13 50.88 57.13 TH -52.11 1.00 52.61 1.87 53.61 1.87 54.11 1.00 53.61 0.13 52.61 0.13 TH -52.11 3.00 52.61 3.87 53.61 3.87 54.11 3.00 53.61 2.13 52.61 2.13 TH -52.11 5.00 52.61 5.87 53.61 5.87 54.11 5.00 53.61 4.13 52.61 4.13 TH -52.11 7.00 52.61 7.87 53.61 7.87 54.11 7.00 53.61 6.13 52.61 6.13 TH -52.11 11.00 52.61 11.87 53.61 11.87 54.11 11.00 53.61 10.13 52.61 10.13 TH -52.11 15.00 52.61 15.87 53.61 15.87 54.11 15.00 53.61 14.13 52.61 14.13 TH -52.11 17.00 52.61 17.87 53.61 17.87 54.11 17.00 53.61 16.13 52.61 16.13 TH -52.11 21.00 52.61 21.87 53.61 21.87 54.11 21.00 53.61 20.13 52.61 20.13 TH -52.11 33.00 52.61 33.87 53.61 33.87 54.11 33.00 53.61 32.13 52.61 32.13 TH -52.11 35.00 52.61 35.87 53.61 35.87 54.11 35.00 53.61 34.13 52.61 34.13 TH -52.11 37.00 52.61 37.87 53.61 37.87 54.11 37.00 53.61 36.13 52.61 36.13 TH -52.11 39.00 52.61 39.87 53.61 39.87 54.11 39.00 53.61 38.13 52.61 38.13 TH -52.11 43.00 52.61 43.87 53.61 43.87 54.11 43.00 53.61 42.13 52.61 42.13 TH -52.11 47.00 52.61 47.87 53.61 47.87 54.11 47.00 53.61 46.13 52.61 46.13 TH -52.11 49.00 52.61 49.87 53.61 49.87 54.11 49.00 53.61 48.13 52.61 48.13 TH -52.11 53.00 52.61 53.87 53.61 53.87 54.11 53.00 53.61 52.13 52.61 52.13 TH -52.11 57.00 52.61 57.87 53.61 57.87 54.11 57.00 53.61 56.13 52.61 56.13 TH -53.85 4.00 54.35 4.87 55.35 4.87 55.85 4.00 55.35 3.13 54.35 3.13 TH -53.85 8.00 54.35 8.87 55.35 8.87 55.85 8.00 55.35 7.13 54.35 7.13 TH -53.85 10.00 54.35 10.87 55.35 10.87 55.85 10.00 55.35 9.13 54.35 9.13 TH -53.85 14.00 54.35 14.87 55.35 14.87 55.85 14.00 55.35 13.13 54.35 13.13 TH -53.85 18.00 54.35 18.87 55.35 18.87 55.85 18.00 55.35 17.13 54.35 17.13 TH -53.85 20.00 54.35 20.87 55.35 20.87 55.85 20.00 55.35 19.13 54.35 19.13 TH -53.85 22.00 54.35 22.87 55.35 22.87 55.85 22.00 55.35 21.13 54.35 21.13 TH -53.85 24.00 54.35 24.87 55.35 24.87 55.85 24.00 55.35 23.13 54.35 23.13 TH -53.85 28.00 54.35 28.87 55.35 28.87 55.85 28.00 55.35 27.13 54.35 27.13 TH -53.85 32.00 54.35 32.87 55.35 32.87 55.85 32.00 55.35 31.13 54.35 31.13 TH -53.85 34.00 54.35 34.87 55.35 34.87 55.85 34.00 55.35 33.13 54.35 33.13 TH -53.85 38.00 54.35 38.87 55.35 38.87 55.85 38.00 55.35 37.13 54.35 37.13 TH -53.85 42.00 54.35 42.87 55.35 42.87 55.85 42.00 55.35 41.13 54.35 41.13 TH -53.85 46.00 54.35 46.87 55.35 46.87 55.85 46.00 55.35 45.13 54.35 45.13 TH -53.85 50.00 54.35 50.87 55.35 50.87 55.85 50.00 55.35 49.13 54.35 49.13 TH -53.85 52.00 54.35 52.87 55.35 52.87 55.85 52.00 55.35 51.13 54.35 51.13 TH -53.85 54.00 54.35 54.87 55.35 54.87 55.85 54.00 55.35 53.13 54.35 53.13 TH -53.85 56.00 54.35 56.87 55.35 56.87 55.85 56.00 55.35 55.13 54.35 55.13 TH -55.58 3.00 56.08 3.87 57.08 3.87 57.58 3.00 57.08 2.13 56.08 2.13 TH -55.58 7.00 56.08 7.87 57.08 7.87 57.58 7.00 57.08 6.13 56.08 6.13 TH -55.58 27.00 56.08 27.87 57.08 27.87 57.58 27.00 57.08 26.13 56.08 26.13 TH -55.58 31.00 56.08 31.87 57.08 31.87 57.58 31.00 57.08 30.13 56.08 30.13 TH -55.58 33.00 56.08 33.87 57.08 33.87 57.58 33.00 57.08 32.13 56.08 32.13 TH -55.58 37.00 56.08 37.87 57.08 37.87 57.58 37.00 57.08 36.13 56.08 36.13 TH -55.58 41.00 56.08 41.87 57.08 41.87 57.58 41.00 57.08 40.13 56.08 40.13 TH -55.58 45.00 56.08 45.87 57.08 45.87 57.58 45.00 57.08 44.13 56.08 44.13 TH -55.58 51.00 56.08 51.87 57.08 51.87 57.58 51.00 57.08 50.13 56.08 50.13 TH -55.58 55.00 56.08 55.87 57.08 55.87 57.58 55.00 57.08 54.13 56.08 54.13 TH -28.87 29.00 7.431 1.569 TC -28.87 29.00 4.293 1.569 TC -28.87 29.00 1.155 1.569 TC +0 0 0 0 setcmykcolor +60 57.73 0 0 TR +0 0 0 1 setcmykcolor +0.15 3 0.65 3.87 1.65 3.87 2.15 3 1.65 2.13 0.65 2.13 TH +0.15 7 0.65 7.87 1.65 7.87 2.15 7 1.65 6.13 0.65 6.13 TH +0.15 11 0.65 11.87 1.65 11.87 2.15 11 1.65 10.13 0.65 10.13 TH +0.15 15 0.65 15.87 1.65 15.87 2.15 15 1.65 14.13 0.65 14.13 TH +0.15 19 0.65 19.87 1.65 19.87 2.15 19 1.65 18.13 0.65 18.13 TH +0.15 23 0.65 23.87 1.65 23.87 2.15 23 1.65 22.13 0.65 22.13 TH +0.15 27 0.65 27.87 1.65 27.87 2.15 27 1.65 26.13 0.65 26.13 TH +0.15 31 0.65 31.87 1.65 31.87 2.15 31 1.65 30.13 0.65 30.13 TH +0.15 35 0.65 35.87 1.65 35.87 2.15 35 1.65 34.13 0.65 34.13 TH +0.15 39 0.65 39.87 1.65 39.87 2.15 39 1.65 38.13 0.65 38.13 TH +0.15 43 0.65 43.87 1.65 43.87 2.15 43 1.65 42.13 0.65 42.13 TH +0.15 47 0.65 47.87 1.65 47.87 2.15 47 1.65 46.13 0.65 46.13 TH +0.15 51 0.65 51.87 1.65 51.87 2.15 51 1.65 50.13 0.65 50.13 TH +0.15 55 0.65 55.87 1.65 55.87 2.15 55 1.65 54.13 0.65 54.13 TH +0.15 57 0.65 57.87 1.65 57.87 2.15 57 1.65 56.13 0.65 56.13 TH +0.15 59 0.65 59.87 1.65 59.87 2.15 59 1.65 58.13 0.65 58.13 TH +3.62 1 4.12 1.87 5.12 1.87 5.62 1 5.12 0.13 4.12 0.13 TH +3.62 5 4.12 5.87 5.12 5.87 5.62 5 5.12 4.13 4.12 4.13 TH +3.62 9 4.12 9.87 5.12 9.87 5.62 9 5.12 8.13 4.12 8.13 TH +3.62 13 4.12 13.87 5.12 13.87 5.62 13 5.12 12.13 4.12 12.13 TH +3.62 17 4.12 17.87 5.12 17.87 5.62 17 5.12 16.13 4.12 16.13 TH +3.62 21 4.12 21.87 5.12 21.87 5.62 21 5.12 20.13 4.12 20.13 TH +3.62 25 4.12 25.87 5.12 25.87 5.62 25 5.12 24.13 4.12 24.13 TH +3.62 29 4.12 29.87 5.12 29.87 5.62 29 5.12 28.13 4.12 28.13 TH +3.62 33 4.12 33.87 5.12 33.87 5.62 33 5.12 32.13 4.12 32.13 TH +3.62 37 4.12 37.87 5.12 37.87 5.62 37 5.12 36.13 4.12 36.13 TH +3.62 41 4.12 41.87 5.12 41.87 5.62 41 5.12 40.13 4.12 40.13 TH +3.62 45 4.12 45.87 5.12 45.87 5.62 45 5.12 44.13 4.12 44.13 TH +3.62 49 4.12 49.87 5.12 49.87 5.62 49 5.12 48.13 4.12 48.13 TH +3.62 53 4.12 53.87 5.12 53.87 5.62 53 5.12 52.13 4.12 52.13 TH +3.62 57 4.12 57.87 5.12 57.87 5.62 57 5.12 56.13 4.12 56.13 TH +5.35 4 5.85 4.87 6.85 4.87 7.35 4 6.85 3.13 5.85 3.13 TH +5.35 8 5.85 8.87 6.85 8.87 7.35 8 6.85 7.13 5.85 7.13 TH +5.35 12 5.85 12.87 6.85 12.87 7.35 12 6.85 11.13 5.85 11.13 TH +5.35 16 5.85 16.87 6.85 16.87 7.35 16 6.85 15.13 5.85 15.13 TH +5.35 20 5.85 20.87 6.85 20.87 7.35 20 6.85 19.13 5.85 19.13 TH +5.35 24 5.85 24.87 6.85 24.87 7.35 24 6.85 23.13 5.85 23.13 TH +5.35 28 5.85 28.87 6.85 28.87 7.35 28 6.85 27.13 5.85 27.13 TH +5.35 32 5.85 32.87 6.85 32.87 7.35 32 6.85 31.13 5.85 31.13 TH +5.35 36 5.85 36.87 6.85 36.87 7.35 36 6.85 35.13 5.85 35.13 TH +5.35 40 5.85 40.87 6.85 40.87 7.35 40 6.85 39.13 5.85 39.13 TH +5.35 44 5.85 44.87 6.85 44.87 7.35 44 6.85 43.13 5.85 43.13 TH +5.35 48 5.85 48.87 6.85 48.87 7.35 48 6.85 47.13 5.85 47.13 TH +5.35 52 5.85 52.87 6.85 52.87 7.35 52 6.85 51.13 5.85 51.13 TH +5.35 56 5.85 56.87 6.85 56.87 7.35 56 6.85 55.13 5.85 55.13 TH +5.35 58 5.85 58.87 6.85 58.87 7.35 58 6.85 57.13 5.85 57.13 TH +7.08 59 7.58 59.87 8.58 59.87 9.08 59 8.58 58.13 7.58 58.13 TH +8.81 2 9.31 2.87 10.31 2.87 10.81 2 10.31 1.13 9.31 1.13 TH +8.81 6 9.31 6.87 10.31 6.87 10.81 6 10.31 5.13 9.31 5.13 TH +8.81 10 9.31 10.87 10.31 10.87 10.81 10 10.31 9.13 9.31 9.13 TH +8.81 14 9.31 14.87 10.31 14.87 10.81 14 10.31 13.13 9.31 13.13 TH +8.81 18 9.31 18.87 10.31 18.87 10.81 18 10.31 17.13 9.31 17.13 TH +8.81 22 9.31 22.87 10.31 22.87 10.81 22 10.31 21.13 9.31 21.13 TH +8.81 26 9.31 26.87 10.31 26.87 10.81 26 10.31 25.13 9.31 25.13 TH +8.81 30 9.31 30.87 10.31 30.87 10.81 30 10.31 29.13 9.31 29.13 TH +8.81 34 9.31 34.87 10.31 34.87 10.81 34 10.31 33.13 9.31 33.13 TH +8.81 38 9.31 38.87 10.31 38.87 10.81 38 10.31 37.13 9.31 37.13 TH +8.81 42 9.31 42.87 10.31 42.87 10.81 42 10.31 41.13 9.31 41.13 TH +8.81 46 9.31 46.87 10.31 46.87 10.81 46 10.31 45.13 9.31 45.13 TH +8.81 50 9.31 50.87 10.31 50.87 10.81 50 10.31 49.13 9.31 49.13 TH +8.81 54 9.31 54.87 10.31 54.87 10.81 54 10.31 53.13 9.31 53.13 TH +10.55 3 11.05 3.87 12.05 3.87 12.55 3 12.05 2.13 11.05 2.13 TH +10.55 7 11.05 7.87 12.05 7.87 12.55 7 12.05 6.13 11.05 6.13 TH +10.55 11 11.05 11.87 12.05 11.87 12.55 11 12.05 10.13 11.05 10.13 TH +10.55 15 11.05 15.87 12.05 15.87 12.55 15 12.05 14.13 11.05 14.13 TH +10.55 19 11.05 19.87 12.05 19.87 12.55 19 12.05 18.13 11.05 18.13 TH +10.55 23 11.05 23.87 12.05 23.87 12.55 23 12.05 22.13 11.05 22.13 TH +10.55 27 11.05 27.87 12.05 27.87 12.55 27 12.05 26.13 11.05 26.13 TH +10.55 31 11.05 31.87 12.05 31.87 12.55 31 12.05 30.13 11.05 30.13 TH +10.55 35 11.05 35.87 12.05 35.87 12.55 35 12.05 34.13 11.05 34.13 TH +10.55 39 11.05 39.87 12.05 39.87 12.55 39 12.05 38.13 11.05 38.13 TH +10.55 43 11.05 43.87 12.05 43.87 12.55 43 12.05 42.13 11.05 42.13 TH +10.55 47 11.05 47.87 12.05 47.87 12.55 47 12.05 46.13 11.05 46.13 TH +10.55 51 11.05 51.87 12.05 51.87 12.55 51 12.05 50.13 11.05 50.13 TH +10.55 55 11.05 55.87 12.05 55.87 12.55 55 12.05 54.13 11.05 54.13 TH +10.55 57 11.05 57.87 12.05 57.87 12.55 57 12.05 56.13 11.05 56.13 TH +12.28 58 12.78 58.87 13.78 58.87 14.28 58 13.78 57.13 12.78 57.13 TH +14.01 1 14.51 1.87 15.51 1.87 16.01 1 15.51 0.13 14.51 0.13 TH +14.01 5 14.51 5.87 15.51 5.87 16.01 5 15.51 4.13 14.51 4.13 TH +14.01 9 14.51 9.87 15.51 9.87 16.01 9 15.51 8.13 14.51 8.13 TH +14.01 13 14.51 13.87 15.51 13.87 16.01 13 15.51 12.13 14.51 12.13 TH +14.01 17 14.51 17.87 15.51 17.87 16.01 17 15.51 16.13 14.51 16.13 TH +14.01 21 14.51 21.87 15.51 21.87 16.01 21 15.51 20.13 14.51 20.13 TH +14.01 25 14.51 25.87 15.51 25.87 16.01 25 15.51 24.13 14.51 24.13 TH +14.01 29 14.51 29.87 15.51 29.87 16.01 29 15.51 28.13 14.51 28.13 TH +14.01 33 14.51 33.87 15.51 33.87 16.01 33 15.51 32.13 14.51 32.13 TH +14.01 37 14.51 37.87 15.51 37.87 16.01 37 15.51 36.13 14.51 36.13 TH +14.01 41 14.51 41.87 15.51 41.87 16.01 41 15.51 40.13 14.51 40.13 TH +14.01 45 14.51 45.87 15.51 45.87 16.01 45 15.51 44.13 14.51 44.13 TH +14.01 49 14.51 49.87 15.51 49.87 16.01 49 15.51 48.13 14.51 48.13 TH +14.01 53 14.51 53.87 15.51 53.87 16.01 53 15.51 52.13 14.51 52.13 TH +14.01 59 14.51 59.87 15.51 59.87 16.01 59 15.51 58.13 14.51 58.13 TH +15.74 4 16.24 4.87 17.24 4.87 17.74 4 17.24 3.13 16.24 3.13 TH +15.74 8 16.24 8.87 17.24 8.87 17.74 8 17.24 7.13 16.24 7.13 TH +15.74 12 16.24 12.87 17.24 12.87 17.74 12 17.24 11.13 16.24 11.13 TH +15.74 16 16.24 16.87 17.24 16.87 17.74 16 17.24 15.13 16.24 15.13 TH +15.74 20 16.24 20.87 17.24 20.87 17.74 20 17.24 19.13 16.24 19.13 TH +15.74 22 16.24 22.87 17.24 22.87 17.74 22 17.24 21.13 16.24 21.13 TH +15.74 24 16.24 24.87 17.24 24.87 17.74 24 17.24 23.13 16.24 23.13 TH +15.74 26 16.24 26.87 17.24 26.87 17.74 26 17.24 25.13 16.24 25.13 TH +15.74 28 16.24 28.87 17.24 28.87 17.74 28 17.24 27.13 16.24 27.13 TH +15.74 32 16.24 32.87 17.24 32.87 17.74 32 17.24 31.13 16.24 31.13 TH +15.74 42 16.24 42.87 17.24 42.87 17.74 42 17.24 41.13 16.24 41.13 TH +15.74 48 16.24 48.87 17.24 48.87 17.74 48 17.24 47.13 16.24 47.13 TH +15.74 52 16.24 52.87 17.24 52.87 17.74 52 17.24 51.13 16.24 51.13 TH +15.74 56 16.24 56.87 17.24 56.87 17.74 56 17.24 55.13 16.24 55.13 TH +17.47 23 17.97 23.87 18.97 23.87 19.47 23 18.97 22.13 17.97 22.13 TH +17.47 33 17.97 33.87 18.97 33.87 19.47 33 18.97 32.13 17.97 32.13 TH +17.47 43 17.97 43.87 18.97 43.87 19.47 43 18.97 42.13 17.97 42.13 TH +19.21 2 19.71 2.87 20.71 2.87 21.21 2 20.71 1.13 19.71 1.13 TH +19.21 6 19.71 6.87 20.71 6.87 21.21 6 20.71 5.13 19.71 5.13 TH +19.21 10 19.71 10.87 20.71 10.87 21.21 10 20.71 9.13 19.71 9.13 TH +19.21 14 19.71 14.87 20.71 14.87 21.21 14 20.71 13.13 19.71 13.13 TH +19.21 20 19.71 20.87 20.71 20.87 21.21 20 20.71 19.13 19.71 19.13 TH +19.21 22 19.71 22.87 20.71 22.87 21.21 22 20.71 21.13 19.71 21.13 TH +19.21 38 19.71 38.87 20.71 38.87 21.21 38 20.71 37.13 19.71 37.13 TH +19.21 44 19.71 44.87 20.71 44.87 21.21 44 20.71 43.13 19.71 43.13 TH +19.21 46 19.71 46.87 20.71 46.87 21.21 46 20.71 45.13 19.71 45.13 TH +19.21 50 19.71 50.87 20.71 50.87 21.21 50 20.71 49.13 19.71 49.13 TH +19.21 54 19.71 54.87 20.71 54.87 21.21 54 20.71 53.13 19.71 53.13 TH +19.21 58 19.71 58.87 20.71 58.87 21.21 58 20.71 57.13 19.71 57.13 TH +20.94 3 21.44 3.87 22.44 3.87 22.94 3 22.44 2.13 21.44 2.13 TH +20.94 7 21.44 7.87 22.44 7.87 22.94 7 22.44 6.13 21.44 6.13 TH +20.94 11 21.44 11.87 22.44 11.87 22.94 11 22.44 10.13 21.44 10.13 TH +20.94 15 21.44 15.87 22.44 15.87 22.94 15 22.44 14.13 21.44 14.13 TH +20.94 19 21.44 19.87 22.44 19.87 22.94 19 22.44 18.13 21.44 18.13 TH +20.94 21 21.44 21.87 22.44 21.87 22.94 21 22.44 20.13 21.44 20.13 TH +20.94 43 21.44 43.87 22.44 43.87 22.94 43 22.44 42.13 21.44 42.13 TH +20.94 47 21.44 47.87 22.44 47.87 22.94 47 22.44 46.13 21.44 46.13 TH +20.94 51 21.44 51.87 22.44 51.87 22.94 51 22.44 50.13 21.44 50.13 TH +20.94 55 21.44 55.87 22.44 55.87 22.94 55 22.44 54.13 21.44 54.13 TH +20.94 57 21.44 57.87 22.44 57.87 22.94 57 22.44 56.13 21.44 56.13 TH +22.67 16 23.17 16.87 24.17 16.87 24.67 16 24.17 15.13 23.17 15.13 TH +22.67 44 23.17 44.87 24.17 44.87 24.67 44 24.17 43.13 23.17 43.13 TH +24.4 1 24.9 1.87 25.9 1.87 26.4 1 25.9 0.13 24.9 0.13 TH +24.4 5 24.9 5.87 25.9 5.87 26.4 5 25.9 4.13 24.9 4.13 TH +24.4 9 24.9 9.87 25.9 9.87 26.4 9 25.9 8.13 24.9 8.13 TH +24.4 17 24.9 17.87 25.9 17.87 26.4 17 25.9 16.13 24.9 16.13 TH +24.4 39 24.9 39.87 25.9 39.87 26.4 39 25.9 38.13 24.9 38.13 TH +24.4 41 24.9 41.87 25.9 41.87 26.4 41 25.9 40.13 24.9 40.13 TH +24.4 45 24.9 45.87 25.9 45.87 26.4 45 25.9 44.13 24.9 44.13 TH +24.4 49 24.9 49.87 25.9 49.87 26.4 49 25.9 48.13 24.9 48.13 TH +24.4 53 24.9 53.87 25.9 53.87 26.4 53 25.9 52.13 24.9 52.13 TH +26.13 4 26.63 4.87 27.63 4.87 28.13 4 27.63 3.13 26.63 3.13 TH +26.13 8 26.63 8.87 27.63 8.87 28.13 8 27.63 7.13 26.63 7.13 TH +26.13 12 26.63 12.87 27.63 12.87 28.13 12 27.63 11.13 26.63 11.13 TH +26.13 14 26.63 14.87 27.63 14.87 28.13 14 27.63 13.13 26.63 13.13 TH +26.13 16 26.63 16.87 27.63 16.87 28.13 16 27.63 15.13 26.63 15.13 TH +26.13 18 26.63 18.87 27.63 18.87 28.13 18 27.63 17.13 26.63 17.13 TH +26.13 42 26.63 42.87 27.63 42.87 28.13 42 27.63 41.13 26.63 41.13 TH +26.13 48 26.63 48.87 27.63 48.87 28.13 48 27.63 47.13 26.63 47.13 TH +26.13 52 26.63 52.87 27.63 52.87 28.13 52 27.63 51.13 26.63 51.13 TH +26.13 56 26.63 56.87 27.63 56.87 28.13 56 27.63 55.13 26.63 55.13 TH +26.13 58 26.63 58.87 27.63 58.87 28.13 58 27.63 57.13 26.63 57.13 TH +27.87 17 28.37 17.87 29.37 17.87 29.87 17 29.37 16.13 28.37 16.13 TH +27.87 41 28.37 41.87 29.37 41.87 29.87 41 29.37 40.13 28.37 40.13 TH +27.87 57 28.37 57.87 29.37 57.87 29.87 57 29.37 56.13 28.37 56.13 TH +29.6 2 30.1 2.87 31.1 2.87 31.6 2 31.1 1.13 30.1 1.13 TH +29.6 6 30.1 6.87 31.1 6.87 31.6 6 31.1 5.13 30.1 5.13 TH +29.6 10 30.1 10.87 31.1 10.87 31.6 10 31.1 9.13 30.1 9.13 TH +29.6 42 30.1 42.87 31.1 42.87 31.6 42 31.1 41.13 30.1 41.13 TH +29.6 44 30.1 44.87 31.1 44.87 31.6 44 31.1 43.13 30.1 43.13 TH +29.6 46 30.1 46.87 31.1 46.87 31.6 46 31.1 45.13 30.1 45.13 TH +29.6 50 30.1 50.87 31.1 50.87 31.6 50 31.1 49.13 30.1 49.13 TH +29.6 54 30.1 54.87 31.1 54.87 31.6 54 31.1 53.13 30.1 53.13 TH +31.33 3 31.83 3.87 32.83 3.87 33.33 3 32.83 2.13 31.83 2.13 TH +31.33 7 31.83 7.87 32.83 7.87 33.33 7 32.83 6.13 31.83 6.13 TH +31.33 11 31.83 11.87 32.83 11.87 33.33 11 32.83 10.13 31.83 10.13 TH +31.33 15 31.83 15.87 32.83 15.87 33.33 15 32.83 14.13 31.83 14.13 TH +31.33 17 31.83 17.87 32.83 17.87 33.33 17 32.83 16.13 31.83 16.13 TH +31.33 19 31.83 19.87 32.83 19.87 33.33 19 32.83 18.13 31.83 18.13 TH +31.33 43 31.83 43.87 32.83 43.87 33.33 43 32.83 42.13 31.83 42.13 TH +31.33 47 31.83 47.87 32.83 47.87 33.33 47 32.83 46.13 31.83 46.13 TH +31.33 51 31.83 51.87 32.83 51.87 33.33 51 32.83 50.13 31.83 50.13 TH +31.33 55 31.83 55.87 32.83 55.87 33.33 55 32.83 54.13 31.83 54.13 TH +31.33 57 31.83 57.87 32.83 57.87 33.33 57 32.83 56.13 31.83 56.13 TH +31.33 59 31.83 59.87 32.83 59.87 33.33 59 32.83 58.13 31.83 58.13 TH +33.06 18 33.56 18.87 34.56 18.87 35.06 18 34.56 17.13 33.56 17.13 TH +33.06 58 33.56 58.87 34.56 58.87 35.06 58 34.56 57.13 33.56 57.13 TH +34.79 1 35.29 1.87 36.29 1.87 36.79 1 36.29 0.13 35.29 0.13 TH +34.79 5 35.29 5.87 36.29 5.87 36.79 5 36.29 4.13 35.29 4.13 TH +34.79 9 35.29 9.87 36.29 9.87 36.79 9 36.29 8.13 35.29 8.13 TH +34.79 13 35.29 13.87 36.29 13.87 36.79 13 36.29 12.13 35.29 12.13 TH +34.79 15 35.29 15.87 36.29 15.87 36.79 15 36.29 14.13 35.29 14.13 TH +34.79 37 35.29 37.87 36.29 37.87 36.79 37 36.29 36.13 35.29 36.13 TH +34.79 39 35.29 39.87 36.29 39.87 36.79 39 36.29 38.13 35.29 38.13 TH +34.79 41 35.29 41.87 36.29 41.87 36.79 41 36.29 40.13 35.29 40.13 TH +34.79 43 35.29 43.87 36.29 43.87 36.79 43 36.29 42.13 35.29 42.13 TH +34.79 45 35.29 45.87 36.29 45.87 36.79 45 36.29 44.13 35.29 44.13 TH +34.79 49 35.29 49.87 36.29 49.87 36.79 49 36.29 48.13 35.29 48.13 TH +34.79 53 35.29 53.87 36.29 53.87 36.79 53 36.29 52.13 35.29 52.13 TH +34.79 57 35.29 57.87 36.29 57.87 36.79 57 36.29 56.13 35.29 56.13 TH +34.79 59 35.29 59.87 36.29 59.87 36.79 59 36.29 58.13 35.29 58.13 TH +36.53 4 37.03 4.87 38.03 4.87 38.53 4 38.03 3.13 37.03 3.13 TH +36.53 8 37.03 8.87 38.03 8.87 38.53 8 38.03 7.13 37.03 7.13 TH +36.53 12 37.03 12.87 38.03 12.87 38.53 12 38.03 11.13 37.03 11.13 TH +36.53 16 37.03 16.87 38.03 16.87 38.53 16 38.03 15.13 37.03 15.13 TH +36.53 20 37.03 20.87 38.03 20.87 38.53 20 38.03 19.13 37.03 19.13 TH +36.53 40 37.03 40.87 38.03 40.87 38.53 40 38.03 39.13 37.03 39.13 TH +36.53 42 37.03 42.87 38.03 42.87 38.53 42 38.03 41.13 37.03 41.13 TH +36.53 44 37.03 44.87 38.03 44.87 38.53 44 38.03 43.13 37.03 43.13 TH +36.53 48 37.03 48.87 38.03 48.87 38.53 48 38.03 47.13 37.03 47.13 TH +36.53 52 37.03 52.87 38.03 52.87 38.53 52 38.03 51.13 37.03 51.13 TH +36.53 56 37.03 56.87 38.03 56.87 38.53 56 38.03 55.13 37.03 55.13 TH +38.26 19 38.76 19.87 39.76 19.87 40.26 19 39.76 18.13 38.76 18.13 TH +38.26 21 38.76 21.87 39.76 21.87 40.26 21 39.76 20.13 38.76 20.13 TH +38.26 25 38.76 25.87 39.76 25.87 40.26 25 39.76 24.13 38.76 24.13 TH +38.26 27 38.76 27.87 39.76 27.87 40.26 27 39.76 26.13 38.76 26.13 TH +38.26 29 38.76 29.87 39.76 29.87 40.26 29 39.76 28.13 38.76 28.13 TH +38.26 33 38.76 33.87 39.76 33.87 40.26 33 39.76 32.13 38.76 32.13 TH +38.26 35 38.76 35.87 39.76 35.87 40.26 35 39.76 34.13 38.76 34.13 TH +38.26 37 38.76 37.87 39.76 37.87 40.26 37 39.76 36.13 38.76 36.13 TH +38.26 41 38.76 41.87 39.76 41.87 40.26 41 39.76 40.13 38.76 40.13 TH +38.26 57 38.76 57.87 39.76 57.87 40.26 57 39.76 56.13 38.76 56.13 TH +38.26 59 38.76 59.87 39.76 59.87 40.26 59 39.76 58.13 38.76 58.13 TH +39.99 2 40.49 2.87 41.49 2.87 41.99 2 41.49 1.13 40.49 1.13 TH +39.99 6 40.49 6.87 41.49 6.87 41.99 6 41.49 5.13 40.49 5.13 TH +39.99 10 40.49 10.87 41.49 10.87 41.99 10 41.49 9.13 40.49 9.13 TH +39.99 14 40.49 14.87 41.49 14.87 41.99 14 41.49 13.13 40.49 13.13 TH +39.99 20 40.49 20.87 41.49 20.87 41.99 20 41.49 19.13 40.49 19.13 TH +39.99 22 40.49 22.87 41.49 22.87 41.99 22 41.49 21.13 40.49 21.13 TH +39.99 32 40.49 32.87 41.49 32.87 41.99 32 41.49 31.13 40.49 31.13 TH +39.99 36 40.49 36.87 41.49 36.87 41.99 36 41.49 35.13 40.49 35.13 TH +39.99 38 40.49 38.87 41.49 38.87 41.99 38 41.49 37.13 40.49 37.13 TH +39.99 46 40.49 46.87 41.49 46.87 41.99 46 41.49 45.13 40.49 45.13 TH +39.99 50 40.49 50.87 41.49 50.87 41.99 50 41.49 49.13 40.49 49.13 TH +39.99 54 40.49 54.87 41.49 54.87 41.99 54 41.49 53.13 40.49 53.13 TH +39.99 58 40.49 58.87 41.49 58.87 41.99 58 41.49 57.13 40.49 57.13 TH +41.72 3 42.22 3.87 43.22 3.87 43.72 3 43.22 2.13 42.22 2.13 TH +41.72 7 42.22 7.87 43.22 7.87 43.72 7 43.22 6.13 42.22 6.13 TH +41.72 11 42.22 11.87 43.22 11.87 43.72 11 43.22 10.13 42.22 10.13 TH +41.72 15 42.22 15.87 43.22 15.87 43.72 15 43.22 14.13 42.22 14.13 TH +41.72 19 42.22 19.87 43.22 19.87 43.72 19 43.22 18.13 42.22 18.13 TH +41.72 23 42.22 23.87 43.22 23.87 43.72 23 43.22 22.13 42.22 22.13 TH +41.72 27 42.22 27.87 43.22 27.87 43.72 27 43.22 26.13 42.22 26.13 TH +41.72 31 42.22 31.87 43.22 31.87 43.72 31 43.22 30.13 42.22 30.13 TH +41.72 35 42.22 35.87 43.22 35.87 43.72 35 43.22 34.13 42.22 34.13 TH +41.72 39 42.22 39.87 43.22 39.87 43.72 39 43.22 38.13 42.22 38.13 TH +41.72 41 42.22 41.87 43.22 41.87 43.72 41 43.22 40.13 42.22 40.13 TH +41.72 43 42.22 43.87 43.22 43.87 43.72 43 43.22 42.13 42.22 42.13 TH +41.72 45 42.22 45.87 43.22 45.87 43.72 45 43.22 44.13 42.22 44.13 TH +41.72 47 42.22 47.87 43.22 47.87 43.72 47 43.22 46.13 42.22 46.13 TH +41.72 51 42.22 51.87 43.22 51.87 43.72 51 43.22 50.13 42.22 50.13 TH +41.72 55 42.22 55.87 43.22 55.87 43.72 55 43.22 54.13 42.22 54.13 TH +41.72 57 42.22 57.87 43.22 57.87 43.72 57 43.22 56.13 42.22 56.13 TH +41.72 59 42.22 59.87 43.22 59.87 43.72 59 43.22 58.13 42.22 58.13 TH +43.45 42 43.95 42.87 44.95 42.87 45.45 42 44.95 41.13 43.95 41.13 TH +43.45 44 43.95 44.87 44.95 44.87 45.45 44 44.95 43.13 43.95 43.13 TH +43.45 46 43.95 46.87 44.95 46.87 45.45 46 44.95 45.13 43.95 45.13 TH +43.45 48 43.95 48.87 44.95 48.87 45.45 48 44.95 47.13 43.95 47.13 TH +43.45 52 43.95 52.87 44.95 52.87 45.45 52 44.95 51.13 43.95 51.13 TH +43.45 56 43.95 56.87 44.95 56.87 45.45 56 44.95 55.13 43.95 55.13 TH +43.45 58 43.95 58.87 44.95 58.87 45.45 58 44.95 57.13 43.95 57.13 TH +45.19 1 45.69 1.87 46.69 1.87 47.19 1 46.69 0.13 45.69 0.13 TH +45.19 5 45.69 5.87 46.69 5.87 47.19 5 46.69 4.13 45.69 4.13 TH +45.19 9 45.69 9.87 46.69 9.87 47.19 9 46.69 8.13 45.69 8.13 TH +45.19 13 45.69 13.87 46.69 13.87 47.19 13 46.69 12.13 45.69 12.13 TH +45.19 17 45.69 17.87 46.69 17.87 47.19 17 46.69 16.13 45.69 16.13 TH +45.19 21 45.69 21.87 46.69 21.87 47.19 21 46.69 20.13 45.69 20.13 TH +45.19 25 45.69 25.87 46.69 25.87 47.19 25 46.69 24.13 45.69 24.13 TH +45.19 29 45.69 29.87 46.69 29.87 47.19 29 46.69 28.13 45.69 28.13 TH +45.19 33 45.69 33.87 46.69 33.87 47.19 33 46.69 32.13 45.69 32.13 TH +45.19 37 45.69 37.87 46.69 37.87 47.19 37 46.69 36.13 45.69 36.13 TH +45.19 57 45.69 57.87 46.69 57.87 47.19 57 46.69 56.13 45.69 56.13 TH +46.92 2 47.42 2.87 48.42 2.87 48.92 2 48.42 1.13 47.42 1.13 TH +46.92 4 47.42 4.87 48.42 4.87 48.92 4 48.42 3.13 47.42 3.13 TH +46.92 6 47.42 6.87 48.42 6.87 48.92 6 48.42 5.13 47.42 5.13 TH +46.92 8 47.42 8.87 48.42 8.87 48.92 8 48.42 7.13 47.42 7.13 TH +46.92 10 47.42 10.87 48.42 10.87 48.92 10 48.42 9.13 47.42 9.13 TH +46.92 12 47.42 12.87 48.42 12.87 48.92 12 48.42 11.13 47.42 11.13 TH +46.92 14 47.42 14.87 48.42 14.87 48.92 14 48.42 13.13 47.42 13.13 TH +46.92 16 47.42 16.87 48.42 16.87 48.92 16 48.42 15.13 47.42 15.13 TH +46.92 26 47.42 26.87 48.42 26.87 48.92 26 48.42 25.13 47.42 25.13 TH +46.92 28 47.42 28.87 48.42 28.87 48.92 28 48.42 27.13 47.42 27.13 TH +46.92 30 47.42 30.87 48.42 30.87 48.92 30 48.42 29.13 47.42 29.13 TH +46.92 32 47.42 32.87 48.42 32.87 48.92 32 48.42 31.13 47.42 31.13 TH +46.92 44 47.42 44.87 48.42 44.87 48.92 44 48.42 43.13 47.42 43.13 TH +46.92 48 47.42 48.87 48.42 48.87 48.92 48 48.42 47.13 47.42 47.13 TH +48.65 3 49.15 3.87 50.15 3.87 50.65 3 50.15 2.13 49.15 2.13 TH +48.65 7 49.15 7.87 50.15 7.87 50.65 7 50.15 6.13 49.15 6.13 TH +48.65 9 49.15 9.87 50.15 9.87 50.65 9 50.15 8.13 49.15 8.13 TH +48.65 13 49.15 13.87 50.15 13.87 50.65 13 50.15 12.13 49.15 12.13 TH +48.65 17 49.15 17.87 50.15 17.87 50.65 17 50.15 16.13 49.15 16.13 TH +48.65 19 49.15 19.87 50.15 19.87 50.65 19 50.15 18.13 49.15 18.13 TH +48.65 21 49.15 21.87 50.15 21.87 50.65 21 50.15 20.13 49.15 20.13 TH +48.65 23 49.15 23.87 50.15 23.87 50.65 23 50.15 22.13 49.15 22.13 TH +48.65 33 49.15 33.87 50.15 33.87 50.65 33 50.15 32.13 49.15 32.13 TH +48.65 35 49.15 35.87 50.15 35.87 50.65 35 50.15 34.13 49.15 34.13 TH +48.65 37 49.15 37.87 50.15 37.87 50.65 37 50.15 36.13 49.15 36.13 TH +48.65 39 49.15 39.87 50.15 39.87 50.65 39 50.15 38.13 49.15 38.13 TH +48.65 43 49.15 43.87 50.15 43.87 50.65 43 50.15 42.13 49.15 42.13 TH +48.65 47 49.15 47.87 50.15 47.87 50.65 47 50.15 46.13 49.15 46.13 TH +48.65 51 49.15 51.87 50.15 51.87 50.65 51 50.15 50.13 49.15 50.13 TH +48.65 55 49.15 55.87 50.15 55.87 50.65 55 50.15 54.13 49.15 54.13 TH +50.38 2 50.88 2.87 51.88 2.87 52.38 2 51.88 1.13 50.88 1.13 TH +50.38 6 50.88 6.87 51.88 6.87 52.38 6 51.88 5.13 50.88 5.13 TH +50.38 10 50.88 10.87 51.88 10.87 52.38 10 51.88 9.13 50.88 9.13 TH +50.38 14 50.88 14.87 51.88 14.87 52.38 14 51.88 13.13 50.88 13.13 TH +50.38 28 50.88 28.87 51.88 28.87 52.38 28 51.88 27.13 50.88 27.13 TH +50.38 32 50.88 32.87 51.88 32.87 52.38 32 51.88 31.13 50.88 31.13 TH +50.38 36 50.88 36.87 51.88 36.87 52.38 36 51.88 35.13 50.88 35.13 TH +50.38 40 50.88 40.87 51.88 40.87 52.38 40 51.88 39.13 50.88 39.13 TH +50.38 42 50.88 42.87 51.88 42.87 52.38 42 51.88 41.13 50.88 41.13 TH +50.38 44 50.88 44.87 51.88 44.87 52.38 44 51.88 43.13 50.88 43.13 TH +50.38 46 50.88 46.87 51.88 46.87 52.38 46 51.88 45.13 50.88 45.13 TH +50.38 48 50.88 48.87 51.88 48.87 52.38 48 51.88 47.13 50.88 47.13 TH +50.38 50 50.88 50.87 51.88 50.87 52.38 50 51.88 49.13 50.88 49.13 TH +50.38 54 50.88 54.87 51.88 54.87 52.38 54 51.88 53.13 50.88 53.13 TH +50.38 58 50.88 58.87 51.88 58.87 52.38 58 51.88 57.13 50.88 57.13 TH +52.11 1 52.61 1.87 53.61 1.87 54.11 1 53.61 0.13 52.61 0.13 TH +52.11 3 52.61 3.87 53.61 3.87 54.11 3 53.61 2.13 52.61 2.13 TH +52.11 5 52.61 5.87 53.61 5.87 54.11 5 53.61 4.13 52.61 4.13 TH +52.11 7 52.61 7.87 53.61 7.87 54.11 7 53.61 6.13 52.61 6.13 TH +52.11 11 52.61 11.87 53.61 11.87 54.11 11 53.61 10.13 52.61 10.13 TH +52.11 15 52.61 15.87 53.61 15.87 54.11 15 53.61 14.13 52.61 14.13 TH +52.11 17 52.61 17.87 53.61 17.87 54.11 17 53.61 16.13 52.61 16.13 TH +52.11 21 52.61 21.87 53.61 21.87 54.11 21 53.61 20.13 52.61 20.13 TH +52.11 33 52.61 33.87 53.61 33.87 54.11 33 53.61 32.13 52.61 32.13 TH +52.11 35 52.61 35.87 53.61 35.87 54.11 35 53.61 34.13 52.61 34.13 TH +52.11 37 52.61 37.87 53.61 37.87 54.11 37 53.61 36.13 52.61 36.13 TH +52.11 39 52.61 39.87 53.61 39.87 54.11 39 53.61 38.13 52.61 38.13 TH +52.11 43 52.61 43.87 53.61 43.87 54.11 43 53.61 42.13 52.61 42.13 TH +52.11 47 52.61 47.87 53.61 47.87 54.11 47 53.61 46.13 52.61 46.13 TH +52.11 49 52.61 49.87 53.61 49.87 54.11 49 53.61 48.13 52.61 48.13 TH +52.11 53 52.61 53.87 53.61 53.87 54.11 53 53.61 52.13 52.61 52.13 TH +52.11 57 52.61 57.87 53.61 57.87 54.11 57 53.61 56.13 52.61 56.13 TH +53.85 4 54.35 4.87 55.35 4.87 55.85 4 55.35 3.13 54.35 3.13 TH +53.85 8 54.35 8.87 55.35 8.87 55.85 8 55.35 7.13 54.35 7.13 TH +53.85 10 54.35 10.87 55.35 10.87 55.85 10 55.35 9.13 54.35 9.13 TH +53.85 14 54.35 14.87 55.35 14.87 55.85 14 55.35 13.13 54.35 13.13 TH +53.85 18 54.35 18.87 55.35 18.87 55.85 18 55.35 17.13 54.35 17.13 TH +53.85 20 54.35 20.87 55.35 20.87 55.85 20 55.35 19.13 54.35 19.13 TH +53.85 22 54.35 22.87 55.35 22.87 55.85 22 55.35 21.13 54.35 21.13 TH +53.85 24 54.35 24.87 55.35 24.87 55.85 24 55.35 23.13 54.35 23.13 TH +53.85 28 54.35 28.87 55.35 28.87 55.85 28 55.35 27.13 54.35 27.13 TH +53.85 32 54.35 32.87 55.35 32.87 55.85 32 55.35 31.13 54.35 31.13 TH +53.85 34 54.35 34.87 55.35 34.87 55.85 34 55.35 33.13 54.35 33.13 TH +53.85 38 54.35 38.87 55.35 38.87 55.85 38 55.35 37.13 54.35 37.13 TH +53.85 42 54.35 42.87 55.35 42.87 55.85 42 55.35 41.13 54.35 41.13 TH +53.85 46 54.35 46.87 55.35 46.87 55.85 46 55.35 45.13 54.35 45.13 TH +53.85 50 54.35 50.87 55.35 50.87 55.85 50 55.35 49.13 54.35 49.13 TH +53.85 52 54.35 52.87 55.35 52.87 55.85 52 55.35 51.13 54.35 51.13 TH +53.85 54 54.35 54.87 55.35 54.87 55.85 54 55.35 53.13 54.35 53.13 TH +53.85 56 54.35 56.87 55.35 56.87 55.85 56 55.35 55.13 54.35 55.13 TH +55.58 3 56.08 3.87 57.08 3.87 57.58 3 57.08 2.13 56.08 2.13 TH +55.58 7 56.08 7.87 57.08 7.87 57.58 7 57.08 6.13 56.08 6.13 TH +55.58 27 56.08 27.87 57.08 27.87 57.58 27 57.08 26.13 56.08 26.13 TH +55.58 31 56.08 31.87 57.08 31.87 57.58 31 57.08 30.13 56.08 30.13 TH +55.58 33 56.08 33.87 57.08 33.87 57.58 33 57.08 32.13 56.08 32.13 TH +55.58 37 56.08 37.87 57.08 37.87 57.58 37 57.08 36.13 56.08 36.13 TH +55.58 41 56.08 41.87 57.08 41.87 57.58 41 57.08 40.13 56.08 40.13 TH +55.58 45 56.08 45.87 57.08 45.87 57.58 45 57.08 44.13 56.08 44.13 TH +55.58 51 56.08 51.87 57.08 51.87 57.58 51 57.08 50.13 56.08 50.13 TH +55.58 55 56.08 55.87 57.08 55.87 57.58 55 57.08 54.13 56.08 54.13 TH +28.87 29 7.431 1.569 TC +28.87 29 4.293 1.569 TC +28.87 29 1.155 1.569 TC diff --git a/backend/tests/data/eps/ultra_fg_bg.eps b/backend/tests/data/eps/ultra_fg_bg.eps index cfa4dde5..eb423713 100644 --- a/backend/tests/data/eps/ultra_fg_bg.eps +++ b/backend/tests/data/eps/ultra_fg_bg.eps @@ -4,212 +4,111 @@ %%Pages: 0 %%BoundingBox: 0 0 28 26 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath 0.99 0.59 0.19 setrgbcolor -26.00 0.00 TB 0.00 28.00 TR -TE -0.00 1.00 1.00 setrgbcolor -2.00 22.00 TB 16.00 4.00 TR -TE -2.00 22.00 TB 22.00 4.00 TR -TE -2.00 20.00 TB 12.00 2.00 TR -TE -2.00 18.00 TB 4.00 2.00 TR -TE -2.00 18.00 TB 16.00 2.00 TR -TE -2.00 18.00 TB 22.00 4.00 TR -TE -2.00 14.00 TB 10.00 2.00 TR -TE -2.00 10.00 TB 10.00 2.00 TR -TE -2.00 10.00 TB 14.00 2.00 TR -TE -2.00 10.00 TB 18.00 8.00 TR -TE -2.00 8.00 TB 4.00 2.00 TR -TE -2.00 8.00 TB 16.00 2.00 TR -TE -2.00 6.00 TB 20.00 4.00 TR -TE -2.00 4.00 TB 10.00 6.00 TR -TE -2.00 4.00 TB 24.00 2.00 TR -TE -2.00 2.00 TB 4.00 2.00 TR -TE -1.00 0.00 1.00 setrgbcolor -2.00 22.00 TB 14.00 2.00 TR -TE -2.00 20.00 TB 4.00 2.00 TR -TE -2.00 20.00 TB 10.00 2.00 TR -TE -2.00 20.00 TB 16.00 4.00 TR -TE -2.00 18.00 TB 12.00 2.00 TR -TE -2.00 16.00 TB 14.00 2.00 TR -TE -2.00 16.00 TB 18.00 2.00 TR -TE -2.00 14.00 TB 4.00 2.00 TR -TE -2.00 14.00 TB 16.00 2.00 TR -TE -2.00 14.00 TB 22.00 2.00 TR -TE -2.00 8.00 TB 10.00 2.00 TR -TE -2.00 8.00 TB 18.00 4.00 TR -TE -2.00 8.00 TB 24.00 2.00 TR -TE -2.00 6.00 TB 14.00 2.00 TR -TE -2.00 2.00 TB 10.00 12.00 TR -TE -1.00 1.00 0.00 setrgbcolor -2.00 22.00 TB 4.00 2.00 TR -TE -2.00 22.00 TB 12.00 2.00 TR -TE -2.00 22.00 TB 20.00 2.00 TR -TE -2.00 18.00 TB 14.00 2.00 TR -TE -2.00 18.00 TB 20.00 2.00 TR -TE -2.00 16.00 TB 4.00 2.00 TR -TE -2.00 16.00 TB 10.00 2.00 TR -TE -2.00 16.00 TB 16.00 2.00 TR -TE -2.00 16.00 TB 22.00 2.00 TR -TE -2.00 14.00 TB 12.00 4.00 TR -TE -2.00 14.00 TB 20.00 2.00 TR -TE -2.00 14.00 TB 24.00 2.00 TR -TE -2.00 10.00 TB 16.00 2.00 TR -TE -2.00 8.00 TB 12.00 4.00 TR -TE -2.00 6.00 TB 4.00 2.00 TR -TE -2.00 6.00 TB 10.00 2.00 TR -TE -2.00 6.00 TB 16.00 4.00 TR -TE -2.00 6.00 TB 24.00 2.00 TR -TE -2.00 4.00 TB 22.00 2.00 TR -TE -2.00 2.00 TB 24.00 2.00 TR -TE -0.00 1.00 0.00 setrgbcolor -2.00 22.00 TB 10.00 2.00 TR -TE -2.00 20.00 TB 14.00 2.00 TR -TE -2.00 20.00 TB 20.00 6.00 TR -TE -2.00 18.00 TB 10.00 2.00 TR -TE -2.00 18.00 TB 18.00 2.00 TR -TE -2.00 16.00 TB 12.00 2.00 TR -TE -2.00 16.00 TB 20.00 2.00 TR -TE -2.00 16.00 TB 24.00 2.00 TR -TE -2.00 14.00 TB 18.00 2.00 TR -TE -2.00 10.00 TB 4.00 2.00 TR -TE -2.00 10.00 TB 12.00 2.00 TR -TE -2.00 8.00 TB 22.00 2.00 TR -TE -2.00 6.00 TB 12.00 2.00 TR -TE -2.00 4.00 TB 4.00 2.00 TR -TE -2.00 4.00 TB 16.00 6.00 TR -TE -2.00 2.00 TB 22.00 2.00 TR -TE -0.00 0.00 0.00 setrgbcolor -2.00 24.00 TB 0.00 28.00 TR -TE -2.00 22.00 TB 0.00 2.00 TR -TE -22.00 2.00 TB 6.00 2.00 TR -TE -22.00 2.00 TB 26.00 2.00 TR -TE -2.00 20.00 TB 0.00 4.00 TR -TE -2.00 18.00 TB 0.00 2.00 TR -TE -2.00 16.00 TB 0.00 4.00 TR -TE -2.00 14.00 TB 0.00 2.00 TR -TE -2.00 12.00 TB 0.00 4.00 TR -TE -2.00 12.00 TB 10.00 2.00 TR -TE -2.00 12.00 TB 14.00 2.00 TR -TE -2.00 12.00 TB 18.00 2.00 TR -TE -2.00 12.00 TB 22.00 2.00 TR -TE -2.00 10.00 TB 0.00 2.00 TR -TE -2.00 8.00 TB 0.00 4.00 TR -TE -2.00 6.00 TB 0.00 2.00 TR -TE -2.00 4.00 TB 0.00 4.00 TR -TE -2.00 2.00 TB 0.00 2.00 TR -TE -2.00 0.00 TB 0.00 28.00 TR -TE -1.00 1.00 1.00 setrgbcolor -2.00 22.00 TB 2.00 2.00 TR -TE -22.00 2.00 TB 8.00 2.00 TR -TE -2.00 18.00 TB 2.00 2.00 TR -TE -2.00 14.00 TB 2.00 2.00 TR -TE -2.00 12.00 TB 4.00 2.00 TR -TE -2.00 12.00 TB 12.00 2.00 TR -TE -2.00 12.00 TB 16.00 2.00 TR -TE -2.00 12.00 TB 20.00 2.00 TR -TE -2.00 12.00 TB 24.00 2.00 TR -TE -2.00 10.00 TB 2.00 2.00 TR -TE -2.00 6.00 TB 2.00 2.00 TR -TE -2.00 2.00 TB 2.00 2.00 TR -TE +26 28 0 0 TR +0 1 1 setrgbcolor +2 4 16 22 TR +2 4 22 22 TR +2 2 12 20 TR +2 2 4 18 TR +2 2 16 18 TR +2 4 22 18 TR +2 2 10 14 TR +2 2 10 10 TR +2 2 14 10 TR +2 8 18 10 TR +2 2 4 8 TR +2 2 16 8 TR +2 4 20 6 TR +2 6 10 4 TR +2 2 24 4 TR +2 2 4 2 TR +1 0 1 setrgbcolor +2 2 14 22 TR +2 2 4 20 TR +2 2 10 20 TR +2 4 16 20 TR +2 2 12 18 TR +2 2 14 16 TR +2 2 18 16 TR +2 2 4 14 TR +2 2 16 14 TR +2 2 22 14 TR +2 2 10 8 TR +2 4 18 8 TR +2 2 24 8 TR +2 2 14 6 TR +2 12 10 2 TR +1 1 0 setrgbcolor +2 2 4 22 TR +2 2 12 22 TR +2 2 20 22 TR +2 2 14 18 TR +2 2 20 18 TR +2 2 4 16 TR +2 2 10 16 TR +2 2 16 16 TR +2 2 22 16 TR +2 4 12 14 TR +2 2 20 14 TR +2 2 24 14 TR +2 2 16 10 TR +2 4 12 8 TR +2 2 4 6 TR +2 2 10 6 TR +2 4 16 6 TR +2 2 24 6 TR +2 2 22 4 TR +2 2 24 2 TR +0 1 0 setrgbcolor +2 2 10 22 TR +2 2 14 20 TR +2 6 20 20 TR +2 2 10 18 TR +2 2 18 18 TR +2 2 12 16 TR +2 2 20 16 TR +2 2 24 16 TR +2 2 18 14 TR +2 2 4 10 TR +2 2 12 10 TR +2 2 22 8 TR +2 2 12 6 TR +2 2 4 4 TR +2 6 16 4 TR +2 2 22 2 TR +0 0 0 setrgbcolor +2 28 0 24 TR +2 2 0 22 TR +22 2 6 2 TR +22 2 26 2 TR +2 4 0 20 TR +2 2 0 18 TR +2 4 0 16 TR +2 2 0 14 TR +2 4 0 12 TR +2 2 10 12 TR +2 2 14 12 TR +2 2 18 12 TR +2 2 22 12 TR +2 2 0 10 TR +2 4 0 8 TR +2 2 0 6 TR +2 4 0 4 TR +2 2 0 2 TR +2 28 0 0 TR +1 1 1 setrgbcolor +2 2 2 22 TR +22 2 8 2 TR +2 2 2 18 TR +2 2 2 14 TR +2 2 4 12 TR +2 2 12 12 TR +2 2 16 12 TR +2 2 20 12 TR +2 2 24 12 TR +2 2 2 10 TR +2 2 2 6 TR +2 2 2 2 TR diff --git a/backend/tests/data/eps/ultra_fg_bg_box.eps b/backend/tests/data/eps/ultra_fg_bg_box.eps index 6cd9a151..9ec9bc4a 100644 --- a/backend/tests/data/eps/ultra_fg_bg_box.eps +++ b/backend/tests/data/eps/ultra_fg_bg_box.eps @@ -1,224 +1,119 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 40 30 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 0.00 0.00 setrgbcolor -30.00 0.00 TB 0.00 40.00 TR -TE -0.00 0.00 1.00 setrgbcolor -2.00 28.00 TB 0.00 40.00 TR -TE -2.00 0.00 TB 0.00 40.00 TR -TE -26.00 2.00 TB 0.00 2.00 TR -TE -26.00 2.00 TB 38.00 2.00 TR -TE -0.00 1.00 1.00 setrgbcolor -2.00 24.00 TB 22.00 4.00 TR -TE -2.00 24.00 TB 28.00 4.00 TR -TE -2.00 22.00 TB 18.00 2.00 TR -TE -2.00 20.00 TB 10.00 2.00 TR -TE -2.00 20.00 TB 22.00 2.00 TR -TE -2.00 20.00 TB 28.00 4.00 TR -TE -2.00 16.00 TB 16.00 2.00 TR -TE -2.00 12.00 TB 16.00 2.00 TR -TE -2.00 12.00 TB 20.00 2.00 TR -TE -2.00 12.00 TB 24.00 8.00 TR -TE -2.00 10.00 TB 10.00 2.00 TR -TE -2.00 10.00 TB 22.00 2.00 TR -TE -2.00 8.00 TB 26.00 4.00 TR -TE -2.00 6.00 TB 16.00 6.00 TR -TE -2.00 6.00 TB 30.00 2.00 TR -TE -2.00 4.00 TB 10.00 2.00 TR -TE -1.00 0.00 1.00 setrgbcolor -2.00 24.00 TB 20.00 2.00 TR -TE -2.00 22.00 TB 10.00 2.00 TR -TE -2.00 22.00 TB 16.00 2.00 TR -TE -2.00 22.00 TB 22.00 4.00 TR -TE -2.00 20.00 TB 18.00 2.00 TR -TE -2.00 18.00 TB 20.00 2.00 TR -TE -2.00 18.00 TB 24.00 2.00 TR -TE -2.00 16.00 TB 10.00 2.00 TR -TE -2.00 16.00 TB 22.00 2.00 TR -TE -2.00 16.00 TB 28.00 2.00 TR -TE -2.00 10.00 TB 16.00 2.00 TR -TE -2.00 10.00 TB 24.00 4.00 TR -TE -2.00 10.00 TB 30.00 2.00 TR -TE -2.00 8.00 TB 20.00 2.00 TR -TE -2.00 4.00 TB 16.00 12.00 TR -TE -1.00 1.00 0.00 setrgbcolor -2.00 24.00 TB 10.00 2.00 TR -TE -2.00 24.00 TB 18.00 2.00 TR -TE -2.00 24.00 TB 26.00 2.00 TR -TE -2.00 20.00 TB 20.00 2.00 TR -TE -2.00 20.00 TB 26.00 2.00 TR -TE -2.00 18.00 TB 10.00 2.00 TR -TE -2.00 18.00 TB 16.00 2.00 TR -TE -2.00 18.00 TB 22.00 2.00 TR -TE -2.00 18.00 TB 28.00 2.00 TR -TE -2.00 16.00 TB 18.00 4.00 TR -TE -2.00 16.00 TB 26.00 2.00 TR -TE -2.00 16.00 TB 30.00 2.00 TR -TE -2.00 12.00 TB 22.00 2.00 TR -TE -2.00 10.00 TB 18.00 4.00 TR -TE -2.00 8.00 TB 10.00 2.00 TR -TE -2.00 8.00 TB 16.00 2.00 TR -TE -2.00 8.00 TB 22.00 4.00 TR -TE -2.00 8.00 TB 30.00 2.00 TR -TE -2.00 6.00 TB 28.00 2.00 TR -TE -2.00 4.00 TB 30.00 2.00 TR -TE -0.00 1.00 0.00 setrgbcolor -2.00 24.00 TB 16.00 2.00 TR -TE -2.00 22.00 TB 20.00 2.00 TR -TE -2.00 22.00 TB 26.00 6.00 TR -TE -2.00 20.00 TB 16.00 2.00 TR -TE -2.00 20.00 TB 24.00 2.00 TR -TE -2.00 18.00 TB 18.00 2.00 TR -TE -2.00 18.00 TB 26.00 2.00 TR -TE -2.00 18.00 TB 30.00 2.00 TR -TE -2.00 16.00 TB 24.00 2.00 TR -TE -2.00 12.00 TB 10.00 2.00 TR -TE -2.00 12.00 TB 18.00 2.00 TR -TE -2.00 10.00 TB 28.00 2.00 TR -TE -2.00 8.00 TB 18.00 2.00 TR -TE -2.00 6.00 TB 10.00 2.00 TR -TE -2.00 6.00 TB 22.00 6.00 TR -TE -2.00 4.00 TB 28.00 2.00 TR -TE -0.00 0.00 0.00 setrgbcolor -2.00 26.00 TB 6.00 28.00 TR -TE -2.00 24.00 TB 6.00 2.00 TR -TE -22.00 4.00 TB 12.00 2.00 TR -TE -22.00 4.00 TB 32.00 2.00 TR -TE -2.00 22.00 TB 6.00 4.00 TR -TE -2.00 20.00 TB 6.00 2.00 TR -TE -2.00 18.00 TB 6.00 4.00 TR -TE -2.00 16.00 TB 6.00 2.00 TR -TE -2.00 14.00 TB 6.00 4.00 TR -TE -2.00 14.00 TB 16.00 2.00 TR -TE -2.00 14.00 TB 20.00 2.00 TR -TE -2.00 14.00 TB 24.00 2.00 TR -TE -2.00 14.00 TB 28.00 2.00 TR -TE -2.00 12.00 TB 6.00 2.00 TR -TE -2.00 10.00 TB 6.00 4.00 TR -TE -2.00 8.00 TB 6.00 2.00 TR -TE -2.00 6.00 TB 6.00 4.00 TR -TE -2.00 4.00 TB 6.00 2.00 TR -TE -2.00 2.00 TB 6.00 28.00 TR -TE -1.00 1.00 1.00 setrgbcolor -2.00 24.00 TB 8.00 2.00 TR -TE -22.00 4.00 TB 14.00 2.00 TR -TE -2.00 20.00 TB 8.00 2.00 TR -TE -2.00 16.00 TB 8.00 2.00 TR -TE -2.00 14.00 TB 10.00 2.00 TR -TE -2.00 14.00 TB 18.00 2.00 TR -TE -2.00 14.00 TB 22.00 2.00 TR -TE -2.00 14.00 TB 26.00 2.00 TR -TE -2.00 14.00 TB 30.00 2.00 TR -TE -2.00 12.00 TB 8.00 2.00 TR -TE -2.00 8.00 TB 8.00 2.00 TR -TE -2.00 4.00 TB 8.00 2.00 TR -TE +1 0 0 setrgbcolor +30 40 0 0 TR +0 0 1 setrgbcolor +2 40 0 28 TR +2 40 0 0 TR +26 2 0 2 TR +26 2 38 2 TR +0 1 1 setrgbcolor +2 4 22 24 TR +2 4 28 24 TR +2 2 18 22 TR +2 2 10 20 TR +2 2 22 20 TR +2 4 28 20 TR +2 2 16 16 TR +2 2 16 12 TR +2 2 20 12 TR +2 8 24 12 TR +2 2 10 10 TR +2 2 22 10 TR +2 4 26 8 TR +2 6 16 6 TR +2 2 30 6 TR +2 2 10 4 TR +1 0 1 setrgbcolor +2 2 20 24 TR +2 2 10 22 TR +2 2 16 22 TR +2 4 22 22 TR +2 2 18 20 TR +2 2 20 18 TR +2 2 24 18 TR +2 2 10 16 TR +2 2 22 16 TR +2 2 28 16 TR +2 2 16 10 TR +2 4 24 10 TR +2 2 30 10 TR +2 2 20 8 TR +2 12 16 4 TR +1 1 0 setrgbcolor +2 2 10 24 TR +2 2 18 24 TR +2 2 26 24 TR +2 2 20 20 TR +2 2 26 20 TR +2 2 10 18 TR +2 2 16 18 TR +2 2 22 18 TR +2 2 28 18 TR +2 4 18 16 TR +2 2 26 16 TR +2 2 30 16 TR +2 2 22 12 TR +2 4 18 10 TR +2 2 10 8 TR +2 2 16 8 TR +2 4 22 8 TR +2 2 30 8 TR +2 2 28 6 TR +2 2 30 4 TR +0 1 0 setrgbcolor +2 2 16 24 TR +2 2 20 22 TR +2 6 26 22 TR +2 2 16 20 TR +2 2 24 20 TR +2 2 18 18 TR +2 2 26 18 TR +2 2 30 18 TR +2 2 24 16 TR +2 2 10 12 TR +2 2 18 12 TR +2 2 28 10 TR +2 2 18 8 TR +2 2 10 6 TR +2 6 22 6 TR +2 2 28 4 TR +0 0 0 setrgbcolor +2 28 6 26 TR +2 2 6 24 TR +22 2 12 4 TR +22 2 32 4 TR +2 4 6 22 TR +2 2 6 20 TR +2 4 6 18 TR +2 2 6 16 TR +2 4 6 14 TR +2 2 16 14 TR +2 2 20 14 TR +2 2 24 14 TR +2 2 28 14 TR +2 2 6 12 TR +2 4 6 10 TR +2 2 6 8 TR +2 4 6 6 TR +2 2 6 4 TR +2 28 6 2 TR +1 1 1 setrgbcolor +2 2 8 24 TR +22 2 14 4 TR +2 2 8 20 TR +2 2 8 16 TR +2 2 10 14 TR +2 2 18 14 TR +2 2 22 14 TR +2 2 26 14 TR +2 2 30 14 TR +2 2 8 12 TR +2 2 8 8 TR +2 2 8 4 TR diff --git a/backend/tests/data/eps/ultra_fg_bg_box_cmyk.eps b/backend/tests/data/eps/ultra_fg_bg_box_cmyk.eps index e1434f4c..7e9f59b1 100644 --- a/backend/tests/data/eps/ultra_fg_bg_box_cmyk.eps +++ b/backend/tests/data/eps/ultra_fg_bg_box_cmyk.eps @@ -1,224 +1,119 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 40 38 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -0.00 1.00 1.00 0.00 setcmykcolor -38.00 0.00 TB 0.00 40.00 TR -TE -1.00 1.00 0.00 0.00 setcmykcolor -4.00 34.00 TB 0.00 40.00 TR -TE -4.00 0.00 TB 0.00 40.00 TR -TE -30.00 4.00 TB 0.00 4.00 TR -TE -30.00 4.00 TB 36.00 4.00 TR -TE -1.00 0.00 0.00 0.00 setcmykcolor -2.00 28.00 TB 22.00 4.00 TR -TE -2.00 28.00 TB 28.00 4.00 TR -TE -2.00 26.00 TB 18.00 2.00 TR -TE -2.00 24.00 TB 10.00 2.00 TR -TE -2.00 24.00 TB 22.00 2.00 TR -TE -2.00 24.00 TB 28.00 4.00 TR -TE -2.00 20.00 TB 16.00 2.00 TR -TE -2.00 16.00 TB 16.00 2.00 TR -TE -2.00 16.00 TB 20.00 2.00 TR -TE -2.00 16.00 TB 24.00 8.00 TR -TE -2.00 14.00 TB 10.00 2.00 TR -TE -2.00 14.00 TB 22.00 2.00 TR -TE -2.00 12.00 TB 26.00 4.00 TR -TE -2.00 10.00 TB 16.00 6.00 TR -TE -2.00 10.00 TB 30.00 2.00 TR -TE -2.00 8.00 TB 10.00 2.00 TR -TE -0.00 1.00 0.00 0.00 setcmykcolor -2.00 28.00 TB 20.00 2.00 TR -TE -2.00 26.00 TB 10.00 2.00 TR -TE -2.00 26.00 TB 16.00 2.00 TR -TE -2.00 26.00 TB 22.00 4.00 TR -TE -2.00 24.00 TB 18.00 2.00 TR -TE -2.00 22.00 TB 20.00 2.00 TR -TE -2.00 22.00 TB 24.00 2.00 TR -TE -2.00 20.00 TB 10.00 2.00 TR -TE -2.00 20.00 TB 22.00 2.00 TR -TE -2.00 20.00 TB 28.00 2.00 TR -TE -2.00 14.00 TB 16.00 2.00 TR -TE -2.00 14.00 TB 24.00 4.00 TR -TE -2.00 14.00 TB 30.00 2.00 TR -TE -2.00 12.00 TB 20.00 2.00 TR -TE -2.00 8.00 TB 16.00 12.00 TR -TE -0.00 0.00 1.00 0.00 setcmykcolor -2.00 28.00 TB 10.00 2.00 TR -TE -2.00 28.00 TB 18.00 2.00 TR -TE -2.00 28.00 TB 26.00 2.00 TR -TE -2.00 24.00 TB 20.00 2.00 TR -TE -2.00 24.00 TB 26.00 2.00 TR -TE -2.00 22.00 TB 10.00 2.00 TR -TE -2.00 22.00 TB 16.00 2.00 TR -TE -2.00 22.00 TB 22.00 2.00 TR -TE -2.00 22.00 TB 28.00 2.00 TR -TE -2.00 20.00 TB 18.00 4.00 TR -TE -2.00 20.00 TB 26.00 2.00 TR -TE -2.00 20.00 TB 30.00 2.00 TR -TE -2.00 16.00 TB 22.00 2.00 TR -TE -2.00 14.00 TB 18.00 4.00 TR -TE -2.00 12.00 TB 10.00 2.00 TR -TE -2.00 12.00 TB 16.00 2.00 TR -TE -2.00 12.00 TB 22.00 4.00 TR -TE -2.00 12.00 TB 30.00 2.00 TR -TE -2.00 10.00 TB 28.00 2.00 TR -TE -2.00 8.00 TB 30.00 2.00 TR -TE -1.00 0.00 1.00 0.00 setcmykcolor -2.00 28.00 TB 16.00 2.00 TR -TE -2.00 26.00 TB 20.00 2.00 TR -TE -2.00 26.00 TB 26.00 6.00 TR -TE -2.00 24.00 TB 16.00 2.00 TR -TE -2.00 24.00 TB 24.00 2.00 TR -TE -2.00 22.00 TB 18.00 2.00 TR -TE -2.00 22.00 TB 26.00 2.00 TR -TE -2.00 22.00 TB 30.00 2.00 TR -TE -2.00 20.00 TB 24.00 2.00 TR -TE -2.00 16.00 TB 10.00 2.00 TR -TE -2.00 16.00 TB 18.00 2.00 TR -TE -2.00 14.00 TB 28.00 2.00 TR -TE -2.00 12.00 TB 18.00 2.00 TR -TE -2.00 10.00 TB 10.00 2.00 TR -TE -2.00 10.00 TB 22.00 6.00 TR -TE -2.00 8.00 TB 28.00 2.00 TR -TE -0.00 0.00 0.00 1.00 setcmykcolor -2.00 30.00 TB 6.00 28.00 TR -TE -2.00 28.00 TB 6.00 2.00 TR -TE -22.00 8.00 TB 12.00 2.00 TR -TE -22.00 8.00 TB 32.00 2.00 TR -TE -2.00 26.00 TB 6.00 4.00 TR -TE -2.00 24.00 TB 6.00 2.00 TR -TE -2.00 22.00 TB 6.00 4.00 TR -TE -2.00 20.00 TB 6.00 2.00 TR -TE -2.00 18.00 TB 6.00 4.00 TR -TE -2.00 18.00 TB 16.00 2.00 TR -TE -2.00 18.00 TB 20.00 2.00 TR -TE -2.00 18.00 TB 24.00 2.00 TR -TE -2.00 18.00 TB 28.00 2.00 TR -TE -2.00 16.00 TB 6.00 2.00 TR -TE -2.00 14.00 TB 6.00 4.00 TR -TE -2.00 12.00 TB 6.00 2.00 TR -TE -2.00 10.00 TB 6.00 4.00 TR -TE -2.00 8.00 TB 6.00 2.00 TR -TE -2.00 6.00 TB 6.00 28.00 TR -TE -0.00 0.00 0.00 0.00 setcmykcolor -2.00 28.00 TB 8.00 2.00 TR -TE -22.00 8.00 TB 14.00 2.00 TR -TE -2.00 24.00 TB 8.00 2.00 TR -TE -2.00 20.00 TB 8.00 2.00 TR -TE -2.00 18.00 TB 10.00 2.00 TR -TE -2.00 18.00 TB 18.00 2.00 TR -TE -2.00 18.00 TB 22.00 2.00 TR -TE -2.00 18.00 TB 26.00 2.00 TR -TE -2.00 18.00 TB 30.00 2.00 TR -TE -2.00 16.00 TB 8.00 2.00 TR -TE -2.00 12.00 TB 8.00 2.00 TR -TE -2.00 8.00 TB 8.00 2.00 TR -TE +0 1 1 0 setcmykcolor +38 40 0 0 TR +1 1 0 0 setcmykcolor +4 40 0 34 TR +4 40 0 0 TR +30 4 0 4 TR +30 4 36 4 TR +1 0 0 0 setcmykcolor +2 4 22 28 TR +2 4 28 28 TR +2 2 18 26 TR +2 2 10 24 TR +2 2 22 24 TR +2 4 28 24 TR +2 2 16 20 TR +2 2 16 16 TR +2 2 20 16 TR +2 8 24 16 TR +2 2 10 14 TR +2 2 22 14 TR +2 4 26 12 TR +2 6 16 10 TR +2 2 30 10 TR +2 2 10 8 TR +0 1 0 0 setcmykcolor +2 2 20 28 TR +2 2 10 26 TR +2 2 16 26 TR +2 4 22 26 TR +2 2 18 24 TR +2 2 20 22 TR +2 2 24 22 TR +2 2 10 20 TR +2 2 22 20 TR +2 2 28 20 TR +2 2 16 14 TR +2 4 24 14 TR +2 2 30 14 TR +2 2 20 12 TR +2 12 16 8 TR +0 0 1 0 setcmykcolor +2 2 10 28 TR +2 2 18 28 TR +2 2 26 28 TR +2 2 20 24 TR +2 2 26 24 TR +2 2 10 22 TR +2 2 16 22 TR +2 2 22 22 TR +2 2 28 22 TR +2 4 18 20 TR +2 2 26 20 TR +2 2 30 20 TR +2 2 22 16 TR +2 4 18 14 TR +2 2 10 12 TR +2 2 16 12 TR +2 4 22 12 TR +2 2 30 12 TR +2 2 28 10 TR +2 2 30 8 TR +1 0 1 0 setcmykcolor +2 2 16 28 TR +2 2 20 26 TR +2 6 26 26 TR +2 2 16 24 TR +2 2 24 24 TR +2 2 18 22 TR +2 2 26 22 TR +2 2 30 22 TR +2 2 24 20 TR +2 2 10 16 TR +2 2 18 16 TR +2 2 28 14 TR +2 2 18 12 TR +2 2 10 10 TR +2 6 22 10 TR +2 2 28 8 TR +0 0 0 1 setcmykcolor +2 28 6 30 TR +2 2 6 28 TR +22 2 12 8 TR +22 2 32 8 TR +2 4 6 26 TR +2 2 6 24 TR +2 4 6 22 TR +2 2 6 20 TR +2 4 6 18 TR +2 2 16 18 TR +2 2 20 18 TR +2 2 24 18 TR +2 2 28 18 TR +2 2 6 16 TR +2 4 6 14 TR +2 2 6 12 TR +2 4 6 10 TR +2 2 6 8 TR +2 28 6 6 TR +0 0 0 0 setcmykcolor +2 2 8 28 TR +22 2 14 8 TR +2 2 8 24 TR +2 2 8 20 TR +2 2 10 18 TR +2 2 18 18 TR +2 2 22 18 TR +2 2 26 18 TR +2 2 30 18 TR +2 2 8 16 TR +2 2 8 12 TR +2 2 8 8 TR diff --git a/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5.eps b/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5.eps index 2e7fc476..37eb7620 100644 --- a/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5.eps +++ b/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5.eps @@ -2,129 +2,65 @@ %%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 -%%BoundingBox: 0 0 276 117 +%%BoundingBox: 0 0 276 118 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -116.90 0.00 TB 0.00 276.00 TR -TE -0.00 0.00 0.00 setrgbcolor -110.00 6.90 TB 18.00 2.00 TR -TE -110.00 6.90 TB 22.00 2.00 TR -TE -110.00 6.90 TB 30.00 4.00 TR -TE -110.00 6.90 TB 36.00 2.00 TR -TE -100.00 16.90 TB 42.00 4.00 TR -TE -100.00 16.90 TB 50.00 2.00 TR -TE -100.00 16.90 TB 56.00 2.00 TR -TE -100.00 16.90 TB 62.00 4.00 TR -TE -100.00 16.90 TB 68.00 8.00 TR -TE -100.00 16.90 TB 78.00 2.00 TR -TE -100.00 16.90 TB 82.00 2.00 TR -TE -100.00 16.90 TB 90.00 4.00 TR -TE -100.00 16.90 TB 96.00 4.00 TR -TE -100.00 16.90 TB 106.00 2.00 TR -TE -110.00 6.90 TB 110.00 2.00 TR -TE -110.00 6.90 TB 114.00 2.00 TR -TE -100.00 16.90 TB 118.00 2.00 TR -TE -100.00 16.90 TB 122.00 2.00 TR -TE -100.00 16.90 TB 132.00 2.00 TR -TE -100.00 16.90 TB 140.00 2.00 TR -TE -100.00 16.90 TB 146.00 2.00 TR -TE -100.00 16.90 TB 152.00 2.00 TR -TE -100.00 16.90 TB 160.00 6.00 TR -TE -100.00 16.90 TB 168.00 2.00 TR -TE -100.00 16.90 TB 174.00 6.00 TR -TE -100.00 16.90 TB 184.00 2.00 TR -TE -110.00 6.90 TB 188.00 2.00 TR -TE -110.00 6.90 TB 194.00 6.00 TR -TE -110.00 6.90 TB 202.00 2.00 TR -TE -110.00 6.90 TB 206.00 2.00 TR -TE -83.10 16.90 TB 226.00 2.00 TR -TE -83.10 16.90 TB 230.00 4.00 TR -TE -83.10 16.90 TB 238.00 2.00 TR -TE -83.10 16.90 TB 244.00 4.00 TR -TE -83.10 16.90 TB 250.00 2.00 TR -TE -83.10 16.90 TB 254.00 2.00 TR -TE -83.10 16.90 TB 262.00 4.00 TR -TE -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 8.70 0.80 translate 0.00 rotate 0 0 moveto - (0) stringwidth -pop -neg 0 rmoveto +1 1 1 setrgbcolor +118 276 0 0 TR +0 0 0 setrgbcolor +110 2 18 8 TR +110 2 22 8 TR +110 4 30 8 TR +110 2 36 8 TR +100 4 42 18 TR +100 2 50 18 TR +100 2 56 18 TR +100 4 62 18 TR +100 8 68 18 TR +100 2 78 18 TR +100 2 82 18 TR +100 4 90 18 TR +100 4 96 18 TR +100 2 106 18 TR +110 2 110 8 TR +110 2 114 8 TR +100 2 118 18 TR +100 2 122 18 TR +100 2 132 18 TR +100 2 140 18 TR +100 2 146 18 TR +100 2 152 18 TR +100 6 160 18 TR +100 2 168 18 TR +100 6 174 18 TR +100 2 184 18 TR +110 2 188 8 TR +110 6 194 8 TR +110 2 202 8 TR +110 2 206 8 TR +82 2 226 18 TR +82 4 230 18 TR +82 2 238 18 TR +82 4 244 18 TR +82 2 250 18 TR +82 2 254 18 TR +82 4 262 18 TR +/Helvetica findfont 14.98 scalefont setfont + 8.7 0.8 moveto + (0) stringwidth pop neg 0 rmoveto (0) show -setmatrix -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 74.00 0.80 translate 0.00 rotate 0 0 moveto - (12345) stringwidth -pop --2 div 0 rmoveto +/Helvetica findfont 21.4 scalefont setfont + 74 0.8 moveto + (12345) stringwidth pop -2 div 0 rmoveto (12345) show -setmatrix -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 152.00 0.80 translate 0.00 rotate 0 0 moveto - (67890) stringwidth -pop --2 div 0 rmoveto + 152 0.8 moveto + (67890) stringwidth pop -2 div 0 rmoveto (67890) show -setmatrix -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 217.30 0.80 translate 0.00 rotate 0 0 moveto +/Helvetica findfont 14.98 scalefont setfont + 217.3 0.8 moveto (5) show -setmatrix -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 246.00 101.90 translate 0.00 rotate 0 0 moveto - (24) stringwidth -pop --2 div 0 rmoveto +/Helvetica findfont 21.4 scalefont setfont + 246 102.4 moveto + (24) stringwidth pop -2 div 0 rmoveto (24) show -setmatrix diff --git a/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5_gws.eps b/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5_gws.eps new file mode 100644 index 00000000..c0fcf5a8 --- /dev/null +++ b/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5_gws.eps @@ -0,0 +1,68 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 276 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 276 0 0 TR +0 0 0 setrgbcolor +110 2 18 8 TR +110 2 22 8 TR +110 4 30 8 TR +110 2 36 8 TR +100 4 42 18 TR +100 2 50 18 TR +100 2 56 18 TR +100 4 62 18 TR +100 8 68 18 TR +100 2 78 18 TR +100 2 82 18 TR +100 4 90 18 TR +100 4 96 18 TR +100 2 106 18 TR +110 2 110 8 TR +110 2 114 8 TR +100 2 118 18 TR +100 2 122 18 TR +100 2 132 18 TR +100 2 140 18 TR +100 2 146 18 TR +100 2 152 18 TR +100 6 160 18 TR +100 2 168 18 TR +100 6 174 18 TR +100 2 184 18 TR +110 2 188 8 TR +110 6 194 8 TR +110 2 202 8 TR +110 2 206 8 TR +82 2 226 18 TR +82 4 230 18 TR +82 2 238 18 TR +82 4 244 18 TR +82 2 250 18 TR +82 2 254 18 TR +82 4 262 18 TR +/Helvetica findfont 14.98 scalefont setfont + 8.7 0.8 moveto + (0) stringwidth pop neg 0 rmoveto + (0) show +/Helvetica findfont 21.4 scalefont setfont + 74 0.8 moveto + (12345) stringwidth pop -2 div 0 rmoveto + (12345) show + 152 0.8 moveto + (67890) stringwidth pop -2 div 0 rmoveto + (67890) show +/Helvetica findfont 14.98 scalefont setfont + 217.3 0.8 moveto + (5) show +/Helvetica findfont 21.4 scalefont setfont + 246 102.4 moveto + (24) stringwidth pop -2 div 0 rmoveto + (24) show + 263.6 102.4 moveto + (>) show diff --git a/backend/tests/data/eps/upce_5addon.eps b/backend/tests/data/eps/upce_5addon.eps index d5723cce..eb907ac0 100644 --- a/backend/tests/data/eps/upce_5addon.eps +++ b/backend/tests/data/eps/upce_5addon.eps @@ -2,112 +2,58 @@ %%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 -%%BoundingBox: 0 0 238 117 +%%BoundingBox: 0 0 238 118 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -116.90 0.00 TB 0.00 238.00 TR -TE -0.00 0.00 0.00 setrgbcolor -110.00 6.90 TB 18.00 2.00 TR -TE -110.00 6.90 TB 22.00 2.00 TR -TE -100.00 16.90 TB 26.00 4.00 TR -TE -100.00 16.90 TB 34.00 4.00 TR -TE -100.00 16.90 TB 42.00 2.00 TR -TE -100.00 16.90 TB 48.00 4.00 TR -TE -100.00 16.90 TB 54.00 8.00 TR -TE -100.00 16.90 TB 64.00 2.00 TR -TE -100.00 16.90 TB 70.00 6.00 TR -TE -100.00 16.90 TB 78.00 2.00 TR -TE -100.00 16.90 TB 82.00 6.00 TR -TE -100.00 16.90 TB 92.00 2.00 TR -TE -100.00 16.90 TB 96.00 2.00 TR -TE -100.00 16.90 TB 100.00 8.00 TR -TE -110.00 6.90 TB 110.00 2.00 TR -TE -110.00 6.90 TB 114.00 2.00 TR -TE -110.00 6.90 TB 118.00 2.00 TR -TE -83.10 16.90 TB 134.00 2.00 TR -TE -83.10 16.90 TB 138.00 4.00 TR -TE -83.10 16.90 TB 144.00 4.00 TR -TE -83.10 16.90 TB 152.00 4.00 TR -TE -83.10 16.90 TB 158.00 2.00 TR -TE -83.10 16.90 TB 164.00 2.00 TR -TE -83.10 16.90 TB 170.00 4.00 TR -TE -83.10 16.90 TB 176.00 2.00 TR -TE -83.10 16.90 TB 180.00 2.00 TR -TE -83.10 16.90 TB 190.00 2.00 TR -TE -83.10 16.90 TB 194.00 2.00 TR -TE -83.10 16.90 TB 198.00 2.00 TR -TE -83.10 16.90 TB 206.00 4.00 TR -TE -83.10 16.90 TB 212.00 2.00 TR -TE -83.10 16.90 TB 216.00 4.00 TR -TE -83.10 16.90 TB 226.00 2.00 TR -TE -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 8.70 0.80 translate 0.00 rotate 0 0 moveto - (0) stringwidth -pop -neg 0 rmoveto +1 1 1 setrgbcolor +118 238 0 0 TR +0 0 0 setrgbcolor +110 2 18 8 TR +110 2 22 8 TR +100 4 26 18 TR +100 4 34 18 TR +100 2 42 18 TR +100 4 48 18 TR +100 8 54 18 TR +100 2 64 18 TR +100 6 70 18 TR +100 2 78 18 TR +100 6 82 18 TR +100 2 92 18 TR +100 2 96 18 TR +100 8 100 18 TR +110 2 110 8 TR +110 2 114 8 TR +110 2 118 8 TR +82 2 134 18 TR +82 4 138 18 TR +82 4 144 18 TR +82 4 152 18 TR +82 2 158 18 TR +82 2 164 18 TR +82 4 170 18 TR +82 2 176 18 TR +82 2 180 18 TR +82 2 190 18 TR +82 2 194 18 TR +82 2 198 18 TR +82 4 206 18 TR +82 2 212 18 TR +82 4 216 18 TR +82 2 226 18 TR +/Helvetica findfont 14.98 scalefont setfont + 8.7 0.8 moveto + (0) stringwidth pop neg 0 rmoveto (0) show -setmatrix -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 67.00 0.80 translate 0.00 rotate 0 0 moveto - (123456) stringwidth -pop --2 div 0 rmoveto +/Helvetica findfont 21.4 scalefont setfont + 67 0.8 moveto + (123456) stringwidth pop -2 div 0 rmoveto (123456) show -setmatrix -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 125.30 0.80 translate 0.00 rotate 0 0 moveto +/Helvetica findfont 14.98 scalefont setfont + 125.3 0.8 moveto (5) show -setmatrix -matrix currentmatrix -/Helvetica findfont -20.00 scalefont setfont - 0 0 moveto 182.00 101.90 translate 0.00 rotate 0 0 moveto - (12345) stringwidth -pop --2 div 0 rmoveto +/Helvetica findfont 21.4 scalefont setfont + 182 102.4 moveto + (12345) stringwidth pop -2 div 0 rmoveto (12345) show -setmatrix diff --git a/backend/tests/data/eps/upce_5addon_gws.eps b/backend/tests/data/eps/upce_5addon_gws.eps new file mode 100644 index 00000000..1d85ab53 --- /dev/null +++ b/backend/tests/data/eps/upce_5addon_gws.eps @@ -0,0 +1,61 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 238 118 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +118 238 0 0 TR +0 0 0 setrgbcolor +110 2 18 8 TR +110 2 22 8 TR +100 4 26 18 TR +100 4 34 18 TR +100 2 42 18 TR +100 4 48 18 TR +100 8 54 18 TR +100 2 64 18 TR +100 6 70 18 TR +100 2 78 18 TR +100 6 82 18 TR +100 2 92 18 TR +100 2 96 18 TR +100 8 100 18 TR +110 2 110 8 TR +110 2 114 8 TR +110 2 118 8 TR +82 2 134 18 TR +82 4 138 18 TR +82 4 144 18 TR +82 4 152 18 TR +82 2 158 18 TR +82 2 164 18 TR +82 4 170 18 TR +82 2 176 18 TR +82 2 180 18 TR +82 2 190 18 TR +82 2 194 18 TR +82 2 198 18 TR +82 4 206 18 TR +82 2 212 18 TR +82 4 216 18 TR +82 2 226 18 TR +/Helvetica findfont 14.98 scalefont setfont + 8.7 0.8 moveto + (0) stringwidth pop neg 0 rmoveto + (0) show +/Helvetica findfont 21.4 scalefont setfont + 67 0.8 moveto + (123456) stringwidth pop -2 div 0 rmoveto + (123456) show +/Helvetica findfont 14.98 scalefont setfont + 125.3 0.8 moveto + (5) show +/Helvetica findfont 21.4 scalefont setfont + 182 102.4 moveto + (12345) stringwidth pop -2 div 0 rmoveto + (12345) show + 225.6 102.4 moveto + (>) show diff --git a/backend/tests/data/eps/upce_5addon_small_bold.eps b/backend/tests/data/eps/upce_5addon_small_bold.eps index 7a191a58..757b5863 100644 --- a/backend/tests/data/eps/upce_5addon_small_bold.eps +++ b/backend/tests/data/eps/upce_5addon_small_bold.eps @@ -2,112 +2,58 @@ %%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 -%%BoundingBox: 0 0 238 113 +%%BoundingBox: 0 0 238 114 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -112.28 0.00 TB 0.00 238.00 TR -TE -0.00 0.00 0.00 setrgbcolor -110.00 2.28 TB 18.00 2.00 TR -TE -110.00 2.28 TB 22.00 2.00 TR -TE -100.00 12.28 TB 26.00 4.00 TR -TE -100.00 12.28 TB 34.00 4.00 TR -TE -100.00 12.28 TB 42.00 2.00 TR -TE -100.00 12.28 TB 48.00 4.00 TR -TE -100.00 12.28 TB 54.00 8.00 TR -TE -100.00 12.28 TB 64.00 2.00 TR -TE -100.00 12.28 TB 70.00 6.00 TR -TE -100.00 12.28 TB 78.00 2.00 TR -TE -100.00 12.28 TB 82.00 6.00 TR -TE -100.00 12.28 TB 92.00 2.00 TR -TE -100.00 12.28 TB 96.00 2.00 TR -TE -100.00 12.28 TB 100.00 8.00 TR -TE -110.00 2.28 TB 110.00 2.00 TR -TE -110.00 2.28 TB 114.00 2.00 TR -TE -110.00 2.28 TB 118.00 2.00 TR -TE -87.72 12.28 TB 134.00 2.00 TR -TE -87.72 12.28 TB 138.00 4.00 TR -TE -87.72 12.28 TB 144.00 4.00 TR -TE -87.72 12.28 TB 152.00 4.00 TR -TE -87.72 12.28 TB 158.00 2.00 TR -TE -87.72 12.28 TB 164.00 2.00 TR -TE -87.72 12.28 TB 170.00 4.00 TR -TE -87.72 12.28 TB 176.00 2.00 TR -TE -87.72 12.28 TB 180.00 2.00 TR -TE -87.72 12.28 TB 190.00 2.00 TR -TE -87.72 12.28 TB 194.00 2.00 TR -TE -87.72 12.28 TB 198.00 2.00 TR -TE -87.72 12.28 TB 206.00 4.00 TR -TE -87.72 12.28 TB 212.00 2.00 TR -TE -87.72 12.28 TB 216.00 4.00 TR -TE -87.72 12.28 TB 226.00 2.00 TR -TE -matrix currentmatrix -/Helvetica findfont -12.00 scalefont setfont - 0 0 moveto 8.70 0.56 translate 0.00 rotate 0 0 moveto - (0) stringwidth -pop -neg 0 rmoveto +1 1 1 setrgbcolor +113.2 238 0 0 TR +0 0 0 setrgbcolor +110 2 18 3.2 TR +110 2 22 3.2 TR +100 4 26 13.2 TR +100 4 34 13.2 TR +100 2 42 13.2 TR +100 4 48 13.2 TR +100 8 54 13.2 TR +100 2 64 13.2 TR +100 6 70 13.2 TR +100 2 78 13.2 TR +100 6 82 13.2 TR +100 2 92 13.2 TR +100 2 96 13.2 TR +100 8 100 13.2 TR +110 2 110 3.2 TR +110 2 114 3.2 TR +110 2 118 3.2 TR +86.8 2 134 13.2 TR +86.8 4 138 13.2 TR +86.8 4 144 13.2 TR +86.8 4 152 13.2 TR +86.8 2 158 13.2 TR +86.8 2 164 13.2 TR +86.8 4 170 13.2 TR +86.8 2 176 13.2 TR +86.8 2 180 13.2 TR +86.8 2 190 13.2 TR +86.8 2 194 13.2 TR +86.8 2 198 13.2 TR +86.8 4 206 13.2 TR +86.8 2 212 13.2 TR +86.8 4 216 13.2 TR +86.8 2 226 13.2 TR +/Helvetica findfont 12.84 scalefont setfont + 8.7 0.56 moveto + (0) stringwidth pop neg 0 rmoveto (0) show -setmatrix -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 67.00 0.56 translate 0.00 rotate 0 0 moveto - (123456) stringwidth -pop --2 div 0 rmoveto +/Helvetica findfont 14.98 scalefont setfont + 67 0.56 moveto + (123456) stringwidth pop -2 div 0 rmoveto (123456) show -setmatrix -matrix currentmatrix -/Helvetica findfont -12.00 scalefont setfont - 0 0 moveto 125.30 0.56 translate 0.00 rotate 0 0 moveto +/Helvetica findfont 12.84 scalefont setfont + 125.3 0.56 moveto (5) show -setmatrix -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 182.00 101.78 translate 0.00 rotate 0 0 moveto - (12345) stringwidth -pop --2 div 0 rmoveto +/Helvetica findfont 14.98 scalefont setfont + 182 102.28 moveto + (12345) stringwidth pop -2 div 0 rmoveto (12345) show -setmatrix diff --git a/backend/tests/data/eps/upce_5addon_small_bold_gws.eps b/backend/tests/data/eps/upce_5addon_small_bold_gws.eps new file mode 100644 index 00000000..7cd96918 --- /dev/null +++ b/backend/tests/data/eps/upce_5addon_small_bold_gws.eps @@ -0,0 +1,61 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Zint 2.12.0.9 +%%Title: Zint Generated Symbol +%%Pages: 0 +%%BoundingBox: 0 0 238 114 +%%EndComments +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def +newpath +1 1 1 setrgbcolor +113.2 238 0 0 TR +0 0 0 setrgbcolor +110 2 18 3.2 TR +110 2 22 3.2 TR +100 4 26 13.2 TR +100 4 34 13.2 TR +100 2 42 13.2 TR +100 4 48 13.2 TR +100 8 54 13.2 TR +100 2 64 13.2 TR +100 6 70 13.2 TR +100 2 78 13.2 TR +100 6 82 13.2 TR +100 2 92 13.2 TR +100 2 96 13.2 TR +100 8 100 13.2 TR +110 2 110 3.2 TR +110 2 114 3.2 TR +110 2 118 3.2 TR +86.8 2 134 13.2 TR +86.8 4 138 13.2 TR +86.8 4 144 13.2 TR +86.8 4 152 13.2 TR +86.8 2 158 13.2 TR +86.8 2 164 13.2 TR +86.8 4 170 13.2 TR +86.8 2 176 13.2 TR +86.8 2 180 13.2 TR +86.8 2 190 13.2 TR +86.8 2 194 13.2 TR +86.8 2 198 13.2 TR +86.8 4 206 13.2 TR +86.8 2 212 13.2 TR +86.8 4 216 13.2 TR +86.8 2 226 13.2 TR +/Helvetica findfont 12.84 scalefont setfont + 8.7 0.56 moveto + (0) stringwidth pop neg 0 rmoveto + (0) show +/Helvetica findfont 14.98 scalefont setfont + 67 0.56 moveto + (123456) stringwidth pop -2 div 0 rmoveto + (123456) show +/Helvetica findfont 12.84 scalefont setfont + 125.3 0.56 moveto + (5) show +/Helvetica findfont 14.98 scalefont setfont + 182 102.28 moveto + (12345) stringwidth pop -2 div 0 rmoveto + (12345) show + 225.6 102.28 moveto + (>) show diff --git a/backend/tests/data/png/ean13_2addon_ggs_5.2.2.5.1-2_gws.png b/backend/tests/data/png/ean13_2addon_ggs_5.2.2.5.1-2_gws.png new file mode 100644 index 00000000..e2f9c3c5 Binary files /dev/null and b/backend/tests/data/png/ean13_2addon_ggs_5.2.2.5.1-2_gws.png differ diff --git a/backend/tests/data/png/ean13_5addon_ggs_5.2.2.5.2-2_gws.png b/backend/tests/data/png/ean13_5addon_ggs_5.2.2.5.2-2_gws.png new file mode 100644 index 00000000..1cf66fd8 Binary files /dev/null and b/backend/tests/data/png/ean13_5addon_ggs_5.2.2.5.2-2_gws.png differ diff --git a/backend/tests/data/png/ean13_cc_2addon_cca_4x4.png b/backend/tests/data/png/ean13_cc_2addon_cca_4x4.png index fe5fd5f8..053015a7 100644 Binary files a/backend/tests/data/png/ean13_cc_2addon_cca_4x4.png and b/backend/tests/data/png/ean13_cc_2addon_cca_4x4.png differ diff --git a/backend/tests/data/png/ean13_cc_2addon_cca_4x4_gws.png b/backend/tests/data/png/ean13_cc_2addon_cca_4x4_gws.png new file mode 100644 index 00000000..301cf7ea Binary files /dev/null and b/backend/tests/data/png/ean13_cc_2addon_cca_4x4_gws.png differ diff --git a/backend/tests/data/png/ean13_cc_5addon_ccb_3x4.png b/backend/tests/data/png/ean13_cc_5addon_ccb_3x4.png index c2bf3d93..134ccabb 100644 Binary files a/backend/tests/data/png/ean13_cc_5addon_ccb_3x4.png and b/backend/tests/data/png/ean13_cc_5addon_ccb_3x4.png differ diff --git a/backend/tests/data/png/ean13_cc_5addon_ccb_3x4_gws.png b/backend/tests/data/png/ean13_cc_5addon_ccb_3x4_gws.png new file mode 100644 index 00000000..13de53ea Binary files /dev/null and b/backend/tests/data/png/ean13_cc_5addon_ccb_3x4_gws.png differ diff --git a/backend/tests/data/png/ean13_cc_5addon_ccb_3x4_notext.png b/backend/tests/data/png/ean13_cc_5addon_ccb_3x4_notext.png index cfef2791..ec77c6b9 100644 Binary files a/backend/tests/data/png/ean13_cc_5addon_ccb_3x4_notext.png and b/backend/tests/data/png/ean13_cc_5addon_ccb_3x4_notext.png differ diff --git a/backend/tests/data/png/ean13_cc_cca_5x4.png b/backend/tests/data/png/ean13_cc_cca_5x4.png new file mode 100644 index 00000000..6979fe29 Binary files /dev/null and b/backend/tests/data/png/ean13_cc_cca_5x4.png differ diff --git a/backend/tests/data/png/ean13_cc_cca_5x4_gws.png b/backend/tests/data/png/ean13_cc_cca_5x4_gws.png new file mode 100644 index 00000000..5baea87d Binary files /dev/null and b/backend/tests/data/png/ean13_cc_cca_5x4_gws.png differ diff --git a/backend/tests/data/png/ean13_ggs_5.2.2.1-1.png b/backend/tests/data/png/ean13_ggs_5.2.2.1-1.png new file mode 100644 index 00000000..e199d482 Binary files /dev/null and b/backend/tests/data/png/ean13_ggs_5.2.2.1-1.png differ diff --git a/backend/tests/data/png/ean13_ggs_5.2.2.1-1_gws.png b/backend/tests/data/png/ean13_ggs_5.2.2.1-1_gws.png new file mode 100644 index 00000000..dfa0c5ba Binary files /dev/null and b/backend/tests/data/png/ean13_ggs_5.2.2.1-1_gws.png differ diff --git a/backend/tests/data/png/ean2.png b/backend/tests/data/png/ean2.png index 13e68630..977f819c 100644 Binary files a/backend/tests/data/png/ean2.png and b/backend/tests/data/png/ean2.png differ diff --git a/backend/tests/data/png/ean2_gws.png b/backend/tests/data/png/ean2_gws.png new file mode 100644 index 00000000..5e6790d3 Binary files /dev/null and b/backend/tests/data/png/ean2_gws.png differ diff --git a/backend/tests/data/png/ean5.png b/backend/tests/data/png/ean5.png index 529dcf58..d94b38e8 100644 Binary files a/backend/tests/data/png/ean5.png and b/backend/tests/data/png/ean5.png differ diff --git a/backend/tests/data/png/ean5_gws.png b/backend/tests/data/png/ean5_gws.png new file mode 100644 index 00000000..6c6125b5 Binary files /dev/null and b/backend/tests/data/png/ean5_gws.png differ diff --git a/backend/tests/data/png/ean8_2addon.png b/backend/tests/data/png/ean8_2addon.png index d1ac393e..f2727b28 100644 Binary files a/backend/tests/data/png/ean8_2addon.png and b/backend/tests/data/png/ean8_2addon.png differ diff --git a/backend/tests/data/png/ean8_2addon_gws.png b/backend/tests/data/png/ean8_2addon_gws.png new file mode 100644 index 00000000..6b371bcc Binary files /dev/null and b/backend/tests/data/png/ean8_2addon_gws.png differ diff --git a/backend/tests/data/png/ean8_5addon.png b/backend/tests/data/png/ean8_5addon.png index 5683d544..3175a8f2 100644 Binary files a/backend/tests/data/png/ean8_5addon.png and b/backend/tests/data/png/ean8_5addon.png differ diff --git a/backend/tests/data/png/ean8_5addon_gws.png b/backend/tests/data/png/ean8_5addon_gws.png new file mode 100644 index 00000000..341c9ad1 Binary files /dev/null and b/backend/tests/data/png/ean8_5addon_gws.png differ diff --git a/backend/tests/data/png/ean8_cc_2addon_cca_4x3.png b/backend/tests/data/png/ean8_cc_2addon_cca_4x3.png index 044be6db..e8b1feed 100644 Binary files a/backend/tests/data/png/ean8_cc_2addon_cca_4x3.png and b/backend/tests/data/png/ean8_cc_2addon_cca_4x3.png differ diff --git a/backend/tests/data/png/ean8_cc_2addon_cca_4x3_gws.png b/backend/tests/data/png/ean8_cc_2addon_cca_4x3_gws.png new file mode 100644 index 00000000..652d8aec Binary files /dev/null and b/backend/tests/data/png/ean8_cc_2addon_cca_4x3_gws.png differ diff --git a/backend/tests/data/png/ean8_cc_5addon_ccb_8x3.png b/backend/tests/data/png/ean8_cc_5addon_ccb_8x3.png index 13e530c8..6c8d8f2c 100644 Binary files a/backend/tests/data/png/ean8_cc_5addon_ccb_8x3.png and b/backend/tests/data/png/ean8_cc_5addon_ccb_8x3.png differ diff --git a/backend/tests/data/png/ean8_cc_5addon_ccb_8x3_gws.png b/backend/tests/data/png/ean8_cc_5addon_ccb_8x3_gws.png new file mode 100644 index 00000000..93b9745c Binary files /dev/null and b/backend/tests/data/png/ean8_cc_5addon_ccb_8x3_gws.png differ diff --git a/backend/tests/data/png/ean8_gss_5.2.2.2-1.png b/backend/tests/data/png/ean8_gss_5.2.2.2-1.png new file mode 100644 index 00000000..2de676e4 Binary files /dev/null and b/backend/tests/data/png/ean8_gss_5.2.2.2-1.png differ diff --git a/backend/tests/data/png/ean8_gss_5.2.2.2-1_gws.png b/backend/tests/data/png/ean8_gss_5.2.2.2-1_gws.png new file mode 100644 index 00000000..4ad3e7f8 Binary files /dev/null and b/backend/tests/data/png/ean8_gss_5.2.2.2-1_gws.png differ diff --git a/backend/tests/data/png/upca_2addon_ggs_5.2.6.6-5_gws.png b/backend/tests/data/png/upca_2addon_ggs_5.2.6.6-5_gws.png new file mode 100644 index 00000000..4a5f978b Binary files /dev/null and b/backend/tests/data/png/upca_2addon_ggs_5.2.6.6-5_gws.png differ diff --git a/backend/tests/data/png/upca_5addon_gws.png b/backend/tests/data/png/upca_5addon_gws.png new file mode 100644 index 00000000..1fec4fa6 Binary files /dev/null and b/backend/tests/data/png/upca_5addon_gws.png differ diff --git a/backend/tests/data/png/upca_cc_2addon_cca_3x4.png b/backend/tests/data/png/upca_cc_2addon_cca_3x4.png index beeb27ad..9ac85d77 100644 Binary files a/backend/tests/data/png/upca_cc_2addon_cca_3x4.png and b/backend/tests/data/png/upca_cc_2addon_cca_3x4.png differ diff --git a/backend/tests/data/png/upca_cc_2addon_cca_3x4_gws.png b/backend/tests/data/png/upca_cc_2addon_cca_3x4_gws.png new file mode 100644 index 00000000..83c9b2df Binary files /dev/null and b/backend/tests/data/png/upca_cc_2addon_cca_3x4_gws.png differ diff --git a/backend/tests/data/png/upca_cc_5addon_ccb_4x4.png b/backend/tests/data/png/upca_cc_5addon_ccb_4x4.png index d7d4b432..e29f97d7 100644 Binary files a/backend/tests/data/png/upca_cc_5addon_ccb_4x4.png and b/backend/tests/data/png/upca_cc_5addon_ccb_4x4.png differ diff --git a/backend/tests/data/png/upca_cc_5addon_ccb_4x4_bind3.png b/backend/tests/data/png/upca_cc_5addon_ccb_4x4_bind3.png index 83a4ed63..867a9df9 100644 Binary files a/backend/tests/data/png/upca_cc_5addon_ccb_4x4_bind3.png and b/backend/tests/data/png/upca_cc_5addon_ccb_4x4_bind3.png differ diff --git a/backend/tests/data/png/upca_cc_5addon_ccb_4x4_notext.png b/backend/tests/data/png/upca_cc_5addon_ccb_4x4_notext.png index ae985ae9..74d55f4e 100644 Binary files a/backend/tests/data/png/upca_cc_5addon_ccb_4x4_notext.png and b/backend/tests/data/png/upca_cc_5addon_ccb_4x4_notext.png differ diff --git a/backend/tests/data/png/upce_2addon_gws.png b/backend/tests/data/png/upce_2addon_gws.png new file mode 100644 index 00000000..4d9fa3de Binary files /dev/null and b/backend/tests/data/png/upce_2addon_gws.png differ diff --git a/backend/tests/data/png/upce_5addon_small_gws.png b/backend/tests/data/png/upce_5addon_small_gws.png new file mode 100644 index 00000000..e8acd60a Binary files /dev/null and b/backend/tests/data/png/upce_5addon_small_gws.png differ diff --git a/backend/tests/data/png/upce_cc_2addon_cca_5x2.png b/backend/tests/data/png/upce_cc_2addon_cca_5x2.png index 4b97eef6..1f420716 100644 Binary files a/backend/tests/data/png/upce_cc_2addon_cca_5x2.png and b/backend/tests/data/png/upce_cc_2addon_cca_5x2.png differ diff --git a/backend/tests/data/png/upce_cc_2addon_cca_5x2_gws.png b/backend/tests/data/png/upce_cc_2addon_cca_5x2_gws.png new file mode 100644 index 00000000..bcdbae96 Binary files /dev/null and b/backend/tests/data/png/upce_cc_2addon_cca_5x2_gws.png differ diff --git a/backend/tests/data/png/upce_cc_5addon_ccb_8x2.png b/backend/tests/data/png/upce_cc_5addon_ccb_8x2.png index afd8ba5c..f72a1310 100644 Binary files a/backend/tests/data/png/upce_cc_5addon_ccb_8x2.png and b/backend/tests/data/png/upce_cc_5addon_ccb_8x2.png differ diff --git a/backend/tests/data/png/upce_cc_5addon_ccb_8x2_gws.png b/backend/tests/data/png/upce_cc_5addon_ccb_8x2_gws.png new file mode 100644 index 00000000..b560b99f Binary files /dev/null and b/backend/tests/data/png/upce_cc_5addon_ccb_8x2_gws.png differ diff --git a/backend/tests/data/png/upce_cc_5addon_ccb_8x2_notext.png b/backend/tests/data/png/upce_cc_5addon_ccb_8x2_notext.png index 1fec2e4b..91074609 100644 Binary files a/backend/tests/data/png/upce_cc_5addon_ccb_8x2_notext.png and b/backend/tests/data/png/upce_cc_5addon_ccb_8x2_notext.png differ diff --git a/backend/tests/data/print/eps/code128_aim.eps b/backend/tests/data/print/eps/code128_aim.eps index d7ac0521..56de12a0 100644 --- a/backend/tests/data/print/eps/code128_aim.eps +++ b/backend/tests/data/print/eps/code128_aim.eps @@ -4,58 +4,31 @@ %%Pages: 0 %%BoundingBox: 0 0 136 119 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -118.90 0.00 TB 0.00 136.00 TR -TE -0.00 0.00 0.00 setrgbcolor -100.00 18.90 TB 0.00 4.00 TR -TE -100.00 18.90 TB 6.00 2.00 TR -TE -100.00 18.90 TB 12.00 2.00 TR -TE -100.00 18.90 TB 22.00 2.00 TR -TE -100.00 18.90 TB 26.00 2.00 TR -TE -100.00 18.90 TB 34.00 4.00 TR -TE -100.00 18.90 TB 44.00 4.00 TR -TE -100.00 18.90 TB 54.00 2.00 TR -TE -100.00 18.90 TB 62.00 2.00 TR -TE -100.00 18.90 TB 66.00 2.00 TR -TE -100.00 18.90 TB 70.00 6.00 TR -TE -100.00 18.90 TB 78.00 4.00 TR -TE -100.00 18.90 TB 88.00 2.00 TR -TE -100.00 18.90 TB 92.00 6.00 TR -TE -100.00 18.90 TB 100.00 4.00 TR -TE -100.00 18.90 TB 110.00 4.00 TR -TE -100.00 18.90 TB 120.00 6.00 TR -TE -100.00 18.90 TB 128.00 2.00 TR -TE -100.00 18.90 TB 132.00 4.00 TR -TE -matrix currentmatrix -/Helvetica findfont -14.00 scalefont setfont - 0 0 moveto 68.00 4.90 translate 0.00 rotate 0 0 moveto - (AIM) stringwidth -pop --2 div 0 rmoveto +1 1 1 setrgbcolor +118.9 136 0 0 TR +0 0 0 setrgbcolor +100 4 0 18.9 TR +100 2 6 18.9 TR +100 2 12 18.9 TR +100 2 22 18.9 TR +100 2 26 18.9 TR +100 4 34 18.9 TR +100 4 44 18.9 TR +100 2 54 18.9 TR +100 2 62 18.9 TR +100 2 66 18.9 TR +100 6 70 18.9 TR +100 4 78 18.9 TR +100 2 88 18.9 TR +100 6 92 18.9 TR +100 4 100 18.9 TR +100 4 110 18.9 TR +100 6 120 18.9 TR +100 2 128 18.9 TR +100 4 132 18.9 TR +/Helvetica findfont 14 scalefont setfont + 68 4.9 moveto + (AIM) stringwidth pop -2 div 0 rmoveto (AIM) show -setmatrix diff --git a/backend/tests/data/print/eps/dotcode_aim_fig7.eps b/backend/tests/data/print/eps/dotcode_aim_fig7.eps index 7c277543..75df5d89 100644 --- a/backend/tests/data/print/eps/dotcode_aim_fig7.eps +++ b/backend/tests/data/print/eps/dotcode_aim_fig7.eps @@ -1,54 +1,51 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 130 100 %%EndComments /TD { newpath 0 360 arc fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -100.00 0.00 TB 0.00 130.00 TR -TE -0.00 0.00 0.00 setrgbcolor -5.00 95.00 4.00 TD -25.00 95.00 4.00 TD -65.00 95.00 4.00 TD -85.00 95.00 4.00 TD -105.00 95.00 4.00 TD -125.00 95.00 4.00 TD -35.00 85.00 4.00 TD -5.00 75.00 4.00 TD -45.00 75.00 4.00 TD -85.00 75.00 4.00 TD -105.00 75.00 4.00 TD -125.00 75.00 4.00 TD -15.00 65.00 4.00 TD -75.00 65.00 4.00 TD -95.00 65.00 4.00 TD -45.00 55.00 4.00 TD -65.00 55.00 4.00 TD -105.00 55.00 4.00 TD -15.00 45.00 4.00 TD -55.00 45.00 4.00 TD -115.00 45.00 4.00 TD -5.00 35.00 4.00 TD -45.00 35.00 4.00 TD -65.00 35.00 4.00 TD -85.00 35.00 4.00 TD -125.00 35.00 4.00 TD -15.00 25.00 4.00 TD -35.00 25.00 4.00 TD -55.00 25.00 4.00 TD -95.00 25.00 4.00 TD -5.00 15.00 4.00 TD -45.00 15.00 4.00 TD -85.00 15.00 4.00 TD -105.00 15.00 4.00 TD -125.00 15.00 4.00 TD -15.00 5.00 4.00 TD -35.00 5.00 4.00 TD -75.00 5.00 4.00 TD -115.00 5.00 4.00 TD +1 1 1 setrgbcolor +100 130 0 0 TR +0 0 0 setrgbcolor +5 95 4 TD +25 95 4 TD +65 95 4 TD +85 95 4 TD +105 95 4 TD +125 95 4 TD +35 85 4 TD +5 75 4 TD +45 75 4 TD +85 75 4 TD +105 75 4 TD +125 75 4 TD +15 65 4 TD +75 65 4 TD +95 65 4 TD +45 55 4 TD +65 55 4 TD +105 55 4 TD +15 45 4 TD +55 45 4 TD +115 45 4 TD +5 35 4 TD +45 35 4 TD +65 35 4 TD +85 35 4 TD +125 35 4 TD +15 25 4 TD +35 25 4 TD +55 25 4 TD +95 25 4 TD +5 15 4 TD +45 15 4 TD +85 15 4 TD +105 15 4 TD +125 15 4 TD +15 5 4 TD +35 5 4 TD +75 5 4 TD +115 5 4 TD diff --git a/backend/tests/data/print/eps/maxicode_fig_2.eps b/backend/tests/data/print/eps/maxicode_fig_2.eps index d8d92e6e..a0dea9af 100644 --- a/backend/tests/data/print/eps/maxicode_fig_2.eps +++ b/backend/tests/data/print/eps/maxicode_fig_2.eps @@ -1,367 +1,364 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 60 58 %%EndComments /TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def /TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -57.73 0.00 TB 0.00 60.00 TR -TE -0.00 0.00 0.00 setrgbcolor -3.00 57.58 3.87 57.08 3.87 56.08 3.00 55.58 2.13 56.08 2.13 57.08 TH -5.00 57.58 5.87 57.08 5.87 56.08 5.00 55.58 4.13 56.08 4.13 57.08 TH -7.00 57.58 7.87 57.08 7.87 56.08 7.00 55.58 6.13 56.08 6.13 57.08 TH -9.00 57.58 9.87 57.08 9.87 56.08 9.00 55.58 8.13 56.08 8.13 57.08 TH -11.00 57.58 11.87 57.08 11.87 56.08 11.00 55.58 10.13 56.08 10.13 57.08 TH -15.00 57.58 15.87 57.08 15.87 56.08 15.00 55.58 14.13 56.08 14.13 57.08 TH -29.00 57.58 29.87 57.08 29.87 56.08 29.00 55.58 28.13 56.08 28.13 57.08 TH -41.00 57.58 41.87 57.08 41.87 56.08 41.00 55.58 40.13 56.08 40.13 57.08 TH -49.00 57.58 49.87 57.08 49.87 56.08 49.00 55.58 48.13 56.08 48.13 57.08 TH -55.00 57.58 55.87 57.08 55.87 56.08 55.00 55.58 54.13 56.08 54.13 57.08 TH -57.00 57.58 57.87 57.08 57.87 56.08 57.00 55.58 56.13 56.08 56.13 57.08 TH -59.00 57.58 59.87 57.08 59.87 56.08 59.00 55.58 58.13 56.08 58.13 57.08 TH -8.00 55.85 8.87 55.35 8.87 54.35 8.00 53.85 7.13 54.35 7.13 55.35 TH -24.00 55.85 24.87 55.35 24.87 54.35 24.00 53.85 23.13 54.35 23.13 55.35 TH -42.00 55.85 42.87 55.35 42.87 54.35 42.00 53.85 41.13 54.35 41.13 55.35 TH -46.00 55.85 46.87 55.35 46.87 54.35 46.00 53.85 45.13 54.35 45.13 55.35 TH -5.00 54.11 5.87 53.61 5.87 52.61 5.00 52.11 4.13 52.61 4.13 53.61 TH -9.00 54.11 9.87 53.61 9.87 52.61 9.00 52.11 8.13 52.61 8.13 53.61 TH -11.00 54.11 11.87 53.61 11.87 52.61 11.00 52.11 10.13 52.61 10.13 53.61 TH -17.00 54.11 17.87 53.61 17.87 52.61 17.00 52.11 16.13 52.61 16.13 53.61 TH -19.00 54.11 19.87 53.61 19.87 52.61 19.00 52.11 18.13 52.61 18.13 53.61 TH -25.00 54.11 25.87 53.61 25.87 52.61 25.00 52.11 24.13 52.61 24.13 53.61 TH -31.00 54.11 31.87 53.61 31.87 52.61 31.00 52.11 30.13 52.61 30.13 53.61 TH -33.00 54.11 33.87 53.61 33.87 52.61 33.00 52.11 32.13 52.61 32.13 53.61 TH -37.00 54.11 37.87 53.61 37.87 52.61 37.00 52.11 36.13 52.61 36.13 53.61 TH -39.00 54.11 39.87 53.61 39.87 52.61 39.00 52.11 38.13 52.61 38.13 53.61 TH -45.00 54.11 45.87 53.61 45.87 52.61 45.00 52.11 44.13 52.61 44.13 53.61 TH -51.00 54.11 51.87 53.61 51.87 52.61 51.00 52.11 50.13 52.61 50.13 53.61 TH -57.00 54.11 57.87 53.61 57.87 52.61 57.00 52.11 56.13 52.61 56.13 53.61 TH -2.00 52.38 2.87 51.88 2.87 50.88 2.00 50.38 1.13 50.88 1.13 51.88 TH -16.00 52.38 16.87 51.88 16.87 50.88 16.00 50.38 15.13 50.88 15.13 51.88 TH -24.00 52.38 24.87 51.88 24.87 50.88 24.00 50.38 23.13 50.88 23.13 51.88 TH -26.00 52.38 26.87 51.88 26.87 50.88 26.00 50.38 25.13 50.88 25.13 51.88 TH -34.00 52.38 34.87 51.88 34.87 50.88 34.00 50.38 33.13 50.88 33.13 51.88 TH -40.00 52.38 40.87 51.88 40.87 50.88 40.00 50.38 39.13 50.88 39.13 51.88 TH -5.00 50.65 5.87 50.15 5.87 49.15 5.00 48.65 4.13 49.15 4.13 50.15 TH -9.00 50.65 9.87 50.15 9.87 49.15 9.00 48.65 8.13 49.15 8.13 50.15 TH -11.00 50.65 11.87 50.15 11.87 49.15 11.00 48.65 10.13 49.15 10.13 50.15 TH -25.00 50.65 25.87 50.15 25.87 49.15 25.00 48.65 24.13 49.15 24.13 50.15 TH -29.00 50.65 29.87 50.15 29.87 49.15 29.00 48.65 28.13 49.15 28.13 50.15 TH -41.00 50.65 41.87 50.15 41.87 49.15 41.00 48.65 40.13 49.15 40.13 50.15 TH -45.00 50.65 45.87 50.15 45.87 49.15 45.00 48.65 44.13 49.15 44.13 50.15 TH -49.00 50.65 49.87 50.15 49.87 49.15 49.00 48.65 48.13 49.15 48.13 50.15 TH -51.00 50.65 51.87 50.15 51.87 49.15 51.00 48.65 50.13 49.15 50.13 50.15 TH -57.00 50.65 57.87 50.15 57.87 49.15 57.00 48.65 56.13 49.15 56.13 50.15 TH -59.00 50.65 59.87 50.15 59.87 49.15 59.00 48.65 58.13 49.15 58.13 50.15 TH -2.00 48.92 2.87 48.42 2.87 47.42 2.00 46.92 1.13 47.42 1.13 48.42 TH -4.00 48.92 4.87 48.42 4.87 47.42 4.00 46.92 3.13 47.42 3.13 48.42 TH -6.00 48.92 6.87 48.42 6.87 47.42 6.00 46.92 5.13 47.42 5.13 48.42 TH -10.00 48.92 10.87 48.42 10.87 47.42 10.00 46.92 9.13 47.42 9.13 48.42 TH -18.00 48.92 18.87 48.42 18.87 47.42 18.00 46.92 17.13 47.42 17.13 48.42 TH -30.00 48.92 30.87 48.42 30.87 47.42 30.00 46.92 29.13 47.42 29.13 48.42 TH -34.00 48.92 34.87 48.42 34.87 47.42 34.00 46.92 33.13 47.42 33.13 48.42 TH -36.00 48.92 36.87 48.42 36.87 47.42 36.00 46.92 35.13 47.42 35.13 48.42 TH -42.00 48.92 42.87 48.42 42.87 47.42 42.00 46.92 41.13 47.42 41.13 48.42 TH -50.00 48.92 50.87 48.42 50.87 47.42 50.00 46.92 49.13 47.42 49.13 48.42 TH -52.00 48.92 52.87 48.42 52.87 47.42 52.00 46.92 51.13 47.42 51.13 48.42 TH -54.00 48.92 54.87 48.42 54.87 47.42 54.00 46.92 53.13 47.42 53.13 48.42 TH -56.00 48.92 56.87 48.42 56.87 47.42 56.00 46.92 55.13 47.42 55.13 48.42 TH -1.00 47.19 1.87 46.69 1.87 45.69 1.00 45.19 0.13 45.69 0.13 46.69 TH -19.00 47.19 19.87 46.69 19.87 45.69 19.00 45.19 18.13 45.69 18.13 46.69 TH -21.00 47.19 21.87 46.69 21.87 45.69 21.00 45.19 20.13 45.69 20.13 46.69 TH -33.00 47.19 33.87 46.69 33.87 45.69 33.00 45.19 32.13 45.69 32.13 46.69 TH -39.00 47.19 39.87 46.69 39.87 45.69 39.00 45.19 38.13 45.69 38.13 46.69 TH -10.00 45.45 10.87 44.95 10.87 43.95 10.00 43.45 9.13 43.95 9.13 44.95 TH -14.00 45.45 14.87 44.95 14.87 43.95 14.00 43.45 13.13 43.95 13.13 44.95 TH -22.00 45.45 22.87 44.95 22.87 43.95 22.00 43.45 21.13 43.95 21.13 44.95 TH -28.00 45.45 28.87 44.95 28.87 43.95 28.00 43.45 27.13 43.95 27.13 44.95 TH -34.00 45.45 34.87 44.95 34.87 43.95 34.00 43.45 33.13 43.95 33.13 44.95 TH -42.00 45.45 42.87 44.95 42.87 43.95 42.00 43.45 41.13 43.95 41.13 44.95 TH -48.00 45.45 48.87 44.95 48.87 43.95 48.00 43.45 47.13 43.95 47.13 44.95 TH -50.00 45.45 50.87 44.95 50.87 43.95 50.00 43.45 49.13 43.95 49.13 44.95 TH -52.00 45.45 52.87 44.95 52.87 43.95 52.00 43.45 51.13 43.95 51.13 44.95 TH -54.00 45.45 54.87 44.95 54.87 43.95 54.00 43.45 53.13 43.95 53.13 44.95 TH -56.00 45.45 56.87 44.95 56.87 43.95 56.00 43.45 55.13 43.95 55.13 44.95 TH -1.00 43.72 1.87 43.22 1.87 42.22 1.00 41.72 0.13 42.22 0.13 43.22 TH -3.00 43.72 3.87 43.22 3.87 42.22 3.00 41.72 2.13 42.22 2.13 43.22 TH -5.00 43.72 5.87 43.22 5.87 42.22 5.00 41.72 4.13 42.22 4.13 43.22 TH -9.00 43.72 9.87 43.22 9.87 42.22 9.00 41.72 8.13 42.22 8.13 43.22 TH -11.00 43.72 11.87 43.22 11.87 42.22 11.00 41.72 10.13 42.22 10.13 43.22 TH -13.00 43.72 13.87 43.22 13.87 42.22 13.00 41.72 12.13 42.22 12.13 43.22 TH -29.00 43.72 29.87 43.22 29.87 42.22 29.00 41.72 28.13 42.22 28.13 43.22 TH -43.00 43.72 43.87 43.22 43.87 42.22 43.00 41.72 42.13 42.22 42.13 43.22 TH -45.00 43.72 45.87 43.22 45.87 42.22 45.00 41.72 44.13 42.22 44.13 43.22 TH -16.00 41.99 16.87 41.49 16.87 40.49 16.00 39.99 15.13 40.49 15.13 41.49 TH -18.00 41.99 18.87 41.49 18.87 40.49 18.00 39.99 17.13 40.49 17.13 41.49 TH -22.00 41.99 22.87 41.49 22.87 40.49 22.00 39.99 21.13 40.49 21.13 41.49 TH -24.00 41.99 24.87 41.49 24.87 40.49 24.00 39.99 23.13 40.49 23.13 41.49 TH -40.00 41.99 40.87 41.49 40.87 40.49 40.00 39.99 39.13 40.49 39.13 41.49 TH -44.00 41.99 44.87 41.49 44.87 40.49 44.00 39.99 43.13 40.49 43.13 41.49 TH -52.00 41.99 52.87 41.49 52.87 40.49 52.00 39.99 51.13 40.49 51.13 41.49 TH -54.00 41.99 54.87 41.49 54.87 40.49 54.00 39.99 53.13 40.49 53.13 41.49 TH -1.00 40.26 1.87 39.76 1.87 38.76 1.00 38.26 0.13 38.76 0.13 39.76 TH -5.00 40.26 5.87 39.76 5.87 38.76 5.00 38.26 4.13 38.76 4.13 39.76 TH -7.00 40.26 7.87 39.76 7.87 38.76 7.00 38.26 6.13 38.76 6.13 39.76 TH -9.00 40.26 9.87 39.76 9.87 38.76 9.00 38.26 8.13 38.76 8.13 39.76 TH -11.00 40.26 11.87 39.76 11.87 38.76 11.00 38.26 10.13 38.76 10.13 39.76 TH -23.00 40.26 23.87 39.76 23.87 38.76 23.00 38.26 22.13 38.76 22.13 39.76 TH -27.00 40.26 27.87 39.76 27.87 38.76 27.00 38.26 26.13 38.76 26.13 39.76 TH -31.00 40.26 31.87 39.76 31.87 38.76 31.00 38.26 30.13 38.76 30.13 39.76 TH -33.00 40.26 33.87 39.76 33.87 38.76 33.00 38.26 32.13 38.76 32.13 39.76 TH -41.00 40.26 41.87 39.76 41.87 38.76 41.00 38.26 40.13 38.76 40.13 39.76 TH -43.00 40.26 43.87 39.76 43.87 38.76 43.00 38.26 42.13 38.76 42.13 39.76 TH -57.00 40.26 57.87 39.76 57.87 38.76 57.00 38.26 56.13 38.76 56.13 39.76 TH -59.00 40.26 59.87 39.76 59.87 38.76 59.00 38.26 58.13 38.76 58.13 39.76 TH -6.00 38.53 6.87 38.03 6.87 37.03 6.00 36.53 5.13 37.03 5.13 38.03 TH -8.00 38.53 8.87 38.03 8.87 37.03 8.00 36.53 7.13 37.03 7.13 38.03 TH -10.00 38.53 10.87 38.03 10.87 37.03 10.00 36.53 9.13 37.03 9.13 38.03 TH -18.00 38.53 18.87 38.03 18.87 37.03 18.00 36.53 17.13 37.03 17.13 38.03 TH -22.00 38.53 22.87 38.03 22.87 37.03 22.00 36.53 21.13 37.03 21.13 38.03 TH -38.00 38.53 38.87 38.03 38.87 37.03 38.00 36.53 37.13 37.03 37.13 38.03 TH -40.00 38.53 40.87 38.03 40.87 37.03 40.00 36.53 39.13 37.03 39.13 38.03 TH -42.00 38.53 42.87 38.03 42.87 37.03 42.00 36.53 41.13 37.03 41.13 38.03 TH -46.00 38.53 46.87 38.03 46.87 37.03 46.00 36.53 45.13 37.03 45.13 38.03 TH -54.00 38.53 54.87 38.03 54.87 37.03 54.00 36.53 53.13 37.03 53.13 38.03 TH -56.00 38.53 56.87 38.03 56.87 37.03 56.00 36.53 55.13 37.03 55.13 38.03 TH -58.00 38.53 58.87 38.03 58.87 37.03 58.00 36.53 57.13 37.03 57.13 38.03 TH -7.00 36.79 7.87 36.29 7.87 35.29 7.00 34.79 6.13 35.29 6.13 36.29 TH -9.00 36.79 9.87 36.29 9.87 35.29 9.00 34.79 8.13 35.29 8.13 36.29 TH -11.00 36.79 11.87 36.29 11.87 35.29 11.00 34.79 10.13 35.29 10.13 36.29 TH -13.00 36.79 13.87 36.29 13.87 35.29 13.00 34.79 12.13 35.29 12.13 36.29 TH -37.00 36.79 37.87 36.29 37.87 35.29 37.00 34.79 36.13 35.29 36.13 36.29 TH -47.00 36.79 47.87 36.29 47.87 35.29 47.00 34.79 46.13 35.29 46.13 36.29 TH -51.00 36.79 51.87 36.29 51.87 35.29 51.00 34.79 50.13 35.29 50.13 36.29 TH -53.00 36.79 53.87 36.29 53.87 35.29 53.00 34.79 52.13 35.29 52.13 36.29 TH -2.00 35.06 2.87 34.56 2.87 33.56 2.00 33.06 1.13 33.56 1.13 34.56 TH -10.00 35.06 10.87 34.56 10.87 33.56 10.00 33.06 9.13 33.56 9.13 34.56 TH -44.00 35.06 44.87 34.56 44.87 33.56 44.00 33.06 43.13 33.56 43.13 34.56 TH -46.00 35.06 46.87 34.56 46.87 33.56 46.00 33.06 45.13 33.56 45.13 34.56 TH -48.00 35.06 48.87 34.56 48.87 33.56 48.00 33.06 47.13 33.56 47.13 34.56 TH -54.00 35.06 54.87 34.56 54.87 33.56 54.00 33.06 53.13 33.56 53.13 34.56 TH -1.00 33.33 1.87 32.83 1.87 31.83 1.00 31.33 0.13 31.83 0.13 32.83 TH -17.00 33.33 17.87 32.83 17.87 31.83 17.00 31.33 16.13 31.83 16.13 32.83 TH -39.00 33.33 39.87 32.83 39.87 31.83 39.00 31.33 38.13 31.83 38.13 32.83 TH -41.00 33.33 41.87 32.83 41.87 31.83 41.00 31.33 40.13 31.83 40.13 32.83 TH -53.00 33.33 53.87 32.83 53.87 31.83 53.00 31.33 52.13 31.83 52.13 32.83 TH -10.00 31.60 10.87 31.10 10.87 30.10 10.00 29.60 9.13 30.10 9.13 31.10 TH -14.00 31.60 14.87 31.10 14.87 30.10 14.00 29.60 13.13 30.10 13.13 31.10 TH -16.00 31.60 16.87 31.10 16.87 30.10 16.00 29.60 15.13 30.10 15.13 31.10 TH -18.00 31.60 18.87 31.10 18.87 30.10 18.00 29.60 17.13 30.10 17.13 31.10 TH -46.00 31.60 46.87 31.10 46.87 30.10 46.00 29.60 45.13 30.10 45.13 31.10 TH -58.00 31.60 58.87 31.10 58.87 30.10 58.00 29.60 57.13 30.10 57.13 31.10 TH -1.00 29.87 1.87 29.37 1.87 28.37 1.00 27.87 0.13 28.37 0.13 29.37 TH -3.00 29.87 3.87 29.37 3.87 28.37 3.00 27.87 2.13 28.37 2.13 29.37 TH -5.00 29.87 5.87 29.37 5.87 28.37 5.00 27.87 4.13 28.37 4.13 29.37 TH -17.00 29.87 17.87 29.37 17.87 28.37 17.00 27.87 16.13 28.37 16.13 29.37 TH -41.00 29.87 41.87 29.37 41.87 28.37 41.00 27.87 40.13 28.37 40.13 29.37 TH -53.00 29.87 53.87 29.37 53.87 28.37 53.00 27.87 52.13 28.37 52.13 29.37 TH -55.00 29.87 55.87 29.37 55.87 28.37 55.00 27.87 54.13 28.37 54.13 29.37 TH -59.00 29.87 59.87 29.37 59.87 28.37 59.00 27.87 58.13 28.37 58.13 29.37 TH -4.00 28.13 4.87 27.63 4.87 26.63 4.00 26.13 3.13 26.63 3.13 27.63 TH -6.00 28.13 6.87 27.63 6.87 26.63 6.00 26.13 5.13 26.63 5.13 27.63 TH -42.00 28.13 42.87 27.63 42.87 26.63 42.00 26.13 41.13 26.63 41.13 27.63 TH -50.00 28.13 50.87 27.63 50.87 26.63 50.00 26.13 49.13 26.63 49.13 27.63 TH -56.00 28.13 56.87 27.63 56.87 26.63 56.00 26.13 55.13 26.63 55.13 27.63 TH -13.00 26.40 13.87 25.90 13.87 24.90 13.00 24.40 12.13 24.90 12.13 25.90 TH -17.00 26.40 17.87 25.90 17.87 24.90 17.00 24.40 16.13 24.90 16.13 25.90 TH -19.00 26.40 19.87 25.90 19.87 24.90 19.00 24.40 18.13 24.90 18.13 25.90 TH -41.00 26.40 41.87 25.90 41.87 24.90 41.00 24.40 40.13 24.90 40.13 25.90 TH -47.00 26.40 47.87 25.90 47.87 24.90 47.00 24.40 46.13 24.90 46.13 25.90 TH -51.00 26.40 51.87 25.90 51.87 24.90 51.00 24.40 50.13 24.90 50.13 25.90 TH -59.00 26.40 59.87 25.90 59.87 24.90 59.00 24.40 58.13 24.90 58.13 25.90 TH -2.00 24.67 2.87 24.17 2.87 23.17 2.00 22.67 1.13 23.17 1.13 24.17 TH -6.00 24.67 6.87 24.17 6.87 23.17 6.00 22.67 5.13 23.17 5.13 24.17 TH -10.00 24.67 10.87 24.17 10.87 23.17 10.00 22.67 9.13 23.17 9.13 24.17 TH -18.00 24.67 18.87 24.17 18.87 23.17 18.00 22.67 17.13 23.17 17.13 24.17 TH -38.00 24.67 38.87 24.17 38.87 23.17 38.00 22.67 37.13 23.17 37.13 24.17 TH -44.00 24.67 44.87 24.17 44.87 23.17 44.00 22.67 43.13 23.17 43.13 24.17 TH -46.00 24.67 46.87 24.17 46.87 23.17 46.00 22.67 45.13 23.17 45.13 24.17 TH -48.00 24.67 48.87 24.17 48.87 23.17 48.00 22.67 47.13 23.17 47.13 24.17 TH -54.00 24.67 54.87 24.17 54.87 23.17 54.00 22.67 53.13 23.17 53.13 24.17 TH -56.00 24.67 56.87 24.17 56.87 23.17 56.00 22.67 55.13 23.17 55.13 24.17 TH -5.00 22.94 5.87 22.44 5.87 21.44 5.00 20.94 4.13 21.44 4.13 22.44 TH -15.00 22.94 15.87 22.44 15.87 21.44 15.00 20.94 14.13 21.44 14.13 22.44 TH -17.00 22.94 17.87 22.44 17.87 21.44 17.00 20.94 16.13 21.44 16.13 22.44 TH -39.00 22.94 39.87 22.44 39.87 21.44 39.00 20.94 38.13 21.44 38.13 22.44 TH -41.00 22.94 41.87 22.44 41.87 21.44 41.00 20.94 40.13 21.44 40.13 22.44 TH -43.00 22.94 43.87 22.44 43.87 21.44 43.00 20.94 42.13 21.44 42.13 22.44 TH -53.00 22.94 53.87 22.44 53.87 21.44 53.00 20.94 52.13 21.44 52.13 22.44 TH -57.00 22.94 57.87 22.44 57.87 21.44 57.00 20.94 56.13 21.44 56.13 22.44 TH -38.00 21.21 38.87 20.71 38.87 19.71 38.00 19.21 37.13 19.71 37.13 20.71 TH -40.00 21.21 40.87 20.71 40.87 19.71 40.00 19.21 39.13 19.71 39.13 20.71 TH -50.00 21.21 50.87 20.71 50.87 19.71 50.00 19.21 49.13 19.71 49.13 20.71 TH -1.00 19.47 1.87 18.97 1.87 17.97 1.00 17.47 0.13 17.97 0.13 18.97 TH -5.00 19.47 5.87 18.97 5.87 17.97 5.00 17.47 4.13 17.97 4.13 18.97 TH -9.00 19.47 9.87 18.97 9.87 17.97 9.00 17.47 8.13 17.97 8.13 18.97 TH -11.00 19.47 11.87 18.97 11.87 17.97 11.00 17.47 10.13 17.97 10.13 18.97 TH -17.00 19.47 17.87 18.97 17.87 17.97 17.00 17.47 16.13 17.97 16.13 18.97 TH -21.00 19.47 21.87 18.97 21.87 17.97 21.00 17.47 20.13 17.97 20.13 18.97 TH -25.00 19.47 25.87 18.97 25.87 17.97 25.00 17.47 24.13 17.97 24.13 18.97 TH -35.00 19.47 35.87 18.97 35.87 17.97 35.00 17.47 34.13 17.97 34.13 18.97 TH -43.00 19.47 43.87 18.97 43.87 17.97 43.00 17.47 42.13 17.97 42.13 18.97 TH -47.00 19.47 47.87 18.97 47.87 17.97 47.00 17.47 46.13 17.97 46.13 18.97 TH -51.00 19.47 51.87 18.97 51.87 17.97 51.00 17.47 50.13 17.97 50.13 18.97 TH -59.00 19.47 59.87 18.97 59.87 17.97 59.00 17.47 58.13 17.97 58.13 18.97 TH -2.00 17.74 2.87 17.24 2.87 16.24 2.00 15.74 1.13 16.24 1.13 17.24 TH -10.00 17.74 10.87 17.24 10.87 16.24 10.00 15.74 9.13 16.24 9.13 17.24 TH -12.00 17.74 12.87 17.24 12.87 16.24 12.00 15.74 11.13 16.24 11.13 17.24 TH -14.00 17.74 14.87 17.24 14.87 16.24 14.00 15.74 13.13 16.24 13.13 17.24 TH -16.00 17.74 16.87 17.24 16.87 16.24 16.00 15.74 15.13 16.24 15.13 17.24 TH -22.00 17.74 22.87 17.24 22.87 16.24 22.00 15.74 21.13 16.24 21.13 17.24 TH -26.00 17.74 26.87 17.24 26.87 16.24 26.00 15.74 25.13 16.24 25.13 17.24 TH -30.00 17.74 30.87 17.24 30.87 16.24 30.00 15.74 29.13 16.24 29.13 17.24 TH -36.00 17.74 36.87 17.24 36.87 16.24 36.00 15.74 35.13 16.24 35.13 17.24 TH -38.00 17.74 38.87 17.24 38.87 16.24 38.00 15.74 37.13 16.24 37.13 17.24 TH -42.00 17.74 42.87 17.24 42.87 16.24 42.00 15.74 41.13 16.24 41.13 17.24 TH -46.00 17.74 46.87 17.24 46.87 16.24 46.00 15.74 45.13 16.24 45.13 17.24 TH -54.00 17.74 54.87 17.24 54.87 16.24 54.00 15.74 53.13 16.24 53.13 17.24 TH -58.00 17.74 58.87 17.24 58.87 16.24 58.00 15.74 57.13 16.24 57.13 17.24 TH -3.00 16.01 3.87 15.51 3.87 14.51 3.00 14.01 2.13 14.51 2.13 15.51 TH -5.00 16.01 5.87 15.51 5.87 14.51 5.00 14.01 4.13 14.51 4.13 15.51 TH -9.00 16.01 9.87 15.51 9.87 14.51 9.00 14.01 8.13 14.51 8.13 15.51 TH -31.00 16.01 31.87 15.51 31.87 14.51 31.00 14.01 30.13 14.51 30.13 15.51 TH -35.00 16.01 35.87 15.51 35.87 14.51 35.00 14.01 34.13 14.51 34.13 15.51 TH -39.00 16.01 39.87 15.51 39.87 14.51 39.00 14.01 38.13 14.51 38.13 15.51 TH -41.00 16.01 41.87 15.51 41.87 14.51 41.00 14.01 40.13 14.51 40.13 15.51 TH -45.00 16.01 45.87 15.51 45.87 14.51 45.00 14.01 44.13 14.51 44.13 15.51 TH -51.00 16.01 51.87 15.51 51.87 14.51 51.00 14.01 50.13 14.51 50.13 15.51 TH -53.00 16.01 53.87 15.51 53.87 14.51 53.00 14.01 52.13 14.51 52.13 15.51 TH -55.00 16.01 55.87 15.51 55.87 14.51 55.00 14.01 54.13 14.51 54.13 15.51 TH -57.00 16.01 57.87 15.51 57.87 14.51 57.00 14.01 56.13 14.51 56.13 15.51 TH -59.00 16.01 59.87 15.51 59.87 14.51 59.00 14.01 58.13 14.51 58.13 15.51 TH -12.00 14.28 12.87 13.78 12.87 12.78 12.00 12.28 11.13 12.78 11.13 13.78 TH -14.00 14.28 14.87 13.78 14.87 12.78 14.00 12.28 13.13 12.78 13.13 13.78 TH -16.00 14.28 16.87 13.78 16.87 12.78 16.00 12.28 15.13 12.78 15.13 13.78 TH -22.00 14.28 22.87 13.78 22.87 12.78 22.00 12.28 21.13 12.78 21.13 13.78 TH -24.00 14.28 24.87 13.78 24.87 12.78 24.00 12.28 23.13 12.78 23.13 13.78 TH -26.00 14.28 26.87 13.78 26.87 12.78 26.00 12.28 25.13 12.78 25.13 13.78 TH -28.00 14.28 28.87 13.78 28.87 12.78 28.00 12.28 27.13 12.78 27.13 13.78 TH -30.00 14.28 30.87 13.78 30.87 12.78 30.00 12.28 29.13 12.78 29.13 13.78 TH -32.00 14.28 32.87 13.78 32.87 12.78 32.00 12.28 31.13 12.78 31.13 13.78 TH -34.00 14.28 34.87 13.78 34.87 12.78 34.00 12.28 33.13 12.78 33.13 13.78 TH -36.00 14.28 36.87 13.78 36.87 12.78 36.00 12.28 35.13 12.78 35.13 13.78 TH -38.00 14.28 38.87 13.78 38.87 12.78 38.00 12.28 37.13 12.78 37.13 13.78 TH -40.00 14.28 40.87 13.78 40.87 12.78 40.00 12.28 39.13 12.78 39.13 13.78 TH -42.00 14.28 42.87 13.78 42.87 12.78 42.00 12.28 41.13 12.78 41.13 13.78 TH -44.00 14.28 44.87 13.78 44.87 12.78 44.00 12.28 43.13 12.78 43.13 13.78 TH -52.00 14.28 52.87 13.78 52.87 12.78 52.00 12.28 51.13 12.78 51.13 13.78 TH -56.00 14.28 56.87 13.78 56.87 12.78 56.00 12.28 55.13 12.78 55.13 13.78 TH -5.00 12.55 5.87 12.05 5.87 11.05 5.00 10.55 4.13 11.05 4.13 12.05 TH -7.00 12.55 7.87 12.05 7.87 11.05 7.00 10.55 6.13 11.05 6.13 12.05 TH -9.00 12.55 9.87 12.05 9.87 11.05 9.00 10.55 8.13 11.05 8.13 12.05 TH -13.00 12.55 13.87 12.05 13.87 11.05 13.00 10.55 12.13 11.05 12.13 12.05 TH -19.00 12.55 19.87 12.05 19.87 11.05 19.00 10.55 18.13 11.05 18.13 12.05 TH -21.00 12.55 21.87 12.05 21.87 11.05 21.00 10.55 20.13 11.05 20.13 12.05 TH -23.00 12.55 23.87 12.05 23.87 11.05 23.00 10.55 22.13 11.05 22.13 12.05 TH -31.00 12.55 31.87 12.05 31.87 11.05 31.00 10.55 30.13 11.05 30.13 12.05 TH -35.00 12.55 35.87 12.05 35.87 11.05 35.00 10.55 34.13 11.05 34.13 12.05 TH -39.00 12.55 39.87 12.05 39.87 11.05 39.00 10.55 38.13 11.05 38.13 12.05 TH -41.00 12.55 41.87 12.05 41.87 11.05 41.00 10.55 40.13 11.05 40.13 12.05 TH -51.00 12.55 51.87 12.05 51.87 11.05 51.00 10.55 50.13 11.05 50.13 12.05 TH -53.00 12.55 53.87 12.05 53.87 11.05 53.00 10.55 52.13 11.05 52.13 12.05 TH -55.00 12.55 55.87 12.05 55.87 11.05 55.00 10.55 54.13 11.05 54.13 12.05 TH -2.00 10.81 2.87 10.31 2.87 9.31 2.00 8.81 1.13 9.31 1.13 10.31 TH -4.00 10.81 4.87 10.31 4.87 9.31 4.00 8.81 3.13 9.31 3.13 10.31 TH -8.00 10.81 8.87 10.31 8.87 9.31 8.00 8.81 7.13 9.31 7.13 10.31 TH -10.00 10.81 10.87 10.31 10.87 9.31 10.00 8.81 9.13 9.31 9.13 10.31 TH -12.00 10.81 12.87 10.31 12.87 9.31 12.00 8.81 11.13 9.31 11.13 10.31 TH -16.00 10.81 16.87 10.31 16.87 9.31 16.00 8.81 15.13 9.31 15.13 10.31 TH -18.00 10.81 18.87 10.31 18.87 9.31 18.00 8.81 17.13 9.31 17.13 10.31 TH -20.00 10.81 20.87 10.31 20.87 9.31 20.00 8.81 19.13 9.31 19.13 10.31 TH -26.00 10.81 26.87 10.31 26.87 9.31 26.00 8.81 25.13 9.31 25.13 10.31 TH -36.00 10.81 36.87 10.31 36.87 9.31 36.00 8.81 35.13 9.31 35.13 10.31 TH -38.00 10.81 38.87 10.31 38.87 9.31 38.00 8.81 37.13 9.31 37.13 10.31 TH -42.00 10.81 42.87 10.31 42.87 9.31 42.00 8.81 41.13 9.31 41.13 10.31 TH -48.00 10.81 48.87 10.31 48.87 9.31 48.00 8.81 47.13 9.31 47.13 10.31 TH -52.00 10.81 52.87 10.31 52.87 9.31 52.00 8.81 51.13 9.31 51.13 10.31 TH -56.00 10.81 56.87 10.31 56.87 9.31 56.00 8.81 55.13 9.31 55.13 10.31 TH -58.00 10.81 58.87 10.31 58.87 9.31 58.00 8.81 57.13 9.31 57.13 10.31 TH -11.00 9.08 11.87 8.58 11.87 7.58 11.00 7.08 10.13 7.58 10.13 8.58 TH -15.00 9.08 15.87 8.58 15.87 7.58 15.00 7.08 14.13 7.58 14.13 8.58 TH -17.00 9.08 17.87 8.58 17.87 7.58 17.00 7.08 16.13 7.58 16.13 8.58 TH -21.00 9.08 21.87 8.58 21.87 7.58 21.00 7.08 20.13 7.58 20.13 8.58 TH -23.00 9.08 23.87 8.58 23.87 7.58 23.00 7.08 22.13 7.58 22.13 8.58 TH -25.00 9.08 25.87 8.58 25.87 7.58 25.00 7.08 24.13 7.58 24.13 8.58 TH -29.00 9.08 29.87 8.58 29.87 7.58 29.00 7.08 28.13 7.58 28.13 8.58 TH -33.00 9.08 33.87 8.58 33.87 7.58 33.00 7.08 32.13 7.58 32.13 8.58 TH -39.00 9.08 39.87 8.58 39.87 7.58 39.00 7.08 38.13 7.58 38.13 8.58 TH -43.00 9.08 43.87 8.58 43.87 7.58 43.00 7.08 42.13 7.58 42.13 8.58 TH -45.00 9.08 45.87 8.58 45.87 7.58 45.00 7.08 44.13 7.58 44.13 8.58 TH -47.00 9.08 47.87 8.58 47.87 7.58 47.00 7.08 46.13 7.58 46.13 8.58 TH -53.00 9.08 53.87 8.58 53.87 7.58 53.00 7.08 52.13 7.58 52.13 8.58 TH -55.00 9.08 55.87 8.58 55.87 7.58 55.00 7.08 54.13 7.58 54.13 8.58 TH -2.00 7.35 2.87 6.85 2.87 5.85 2.00 5.35 1.13 5.85 1.13 6.85 TH -4.00 7.35 4.87 6.85 4.87 5.85 4.00 5.35 3.13 5.85 3.13 6.85 TH -6.00 7.35 6.87 6.85 6.87 5.85 6.00 5.35 5.13 5.85 5.13 6.85 TH -14.00 7.35 14.87 6.85 14.87 5.85 14.00 5.35 13.13 5.85 13.13 6.85 TH -16.00 7.35 16.87 6.85 16.87 5.85 16.00 5.35 15.13 5.85 15.13 6.85 TH -20.00 7.35 20.87 6.85 20.87 5.85 20.00 5.35 19.13 5.85 19.13 6.85 TH -22.00 7.35 22.87 6.85 22.87 5.85 22.00 5.35 21.13 5.85 21.13 6.85 TH -24.00 7.35 24.87 6.85 24.87 5.85 24.00 5.35 23.13 5.85 23.13 6.85 TH -26.00 7.35 26.87 6.85 26.87 5.85 26.00 5.35 25.13 5.85 25.13 6.85 TH -34.00 7.35 34.87 6.85 34.87 5.85 34.00 5.35 33.13 5.85 33.13 6.85 TH -42.00 7.35 42.87 6.85 42.87 5.85 42.00 5.35 41.13 5.85 41.13 6.85 TH -44.00 7.35 44.87 6.85 44.87 5.85 44.00 5.35 43.13 5.85 43.13 6.85 TH -46.00 7.35 46.87 6.85 46.87 5.85 46.00 5.35 45.13 5.85 45.13 6.85 TH -48.00 7.35 48.87 6.85 48.87 5.85 48.00 5.35 47.13 5.85 47.13 6.85 TH -52.00 7.35 52.87 6.85 52.87 5.85 52.00 5.35 51.13 5.85 51.13 6.85 TH -54.00 7.35 54.87 6.85 54.87 5.85 54.00 5.35 53.13 5.85 53.13 6.85 TH -56.00 7.35 56.87 6.85 56.87 5.85 56.00 5.35 55.13 5.85 55.13 6.85 TH -58.00 7.35 58.87 6.85 58.87 5.85 58.00 5.35 57.13 5.85 57.13 6.85 TH -1.00 5.62 1.87 5.12 1.87 4.12 1.00 3.62 0.13 4.12 0.13 5.12 TH -5.00 5.62 5.87 5.12 5.87 4.12 5.00 3.62 4.13 4.12 4.13 5.12 TH -7.00 5.62 7.87 5.12 7.87 4.12 7.00 3.62 6.13 4.12 6.13 5.12 TH -9.00 5.62 9.87 5.12 9.87 4.12 9.00 3.62 8.13 4.12 8.13 5.12 TH -11.00 5.62 11.87 5.12 11.87 4.12 11.00 3.62 10.13 4.12 10.13 5.12 TH -15.00 5.62 15.87 5.12 15.87 4.12 15.00 3.62 14.13 4.12 14.13 5.12 TH -19.00 5.62 19.87 5.12 19.87 4.12 19.00 3.62 18.13 4.12 18.13 5.12 TH -21.00 5.62 21.87 5.12 21.87 4.12 21.00 3.62 20.13 4.12 20.13 5.12 TH -23.00 5.62 23.87 5.12 23.87 4.12 23.00 3.62 22.13 4.12 22.13 5.12 TH -25.00 5.62 25.87 5.12 25.87 4.12 25.00 3.62 24.13 4.12 24.13 5.12 TH -27.00 5.62 27.87 5.12 27.87 4.12 27.00 3.62 26.13 4.12 26.13 5.12 TH -29.00 5.62 29.87 5.12 29.87 4.12 29.00 3.62 28.13 4.12 28.13 5.12 TH -39.00 5.62 39.87 5.12 39.87 4.12 39.00 3.62 38.13 4.12 38.13 5.12 TH -43.00 5.62 43.87 5.12 43.87 4.12 43.00 3.62 42.13 4.12 42.13 5.12 TH -45.00 5.62 45.87 5.12 45.87 4.12 45.00 3.62 44.13 4.12 44.13 5.12 TH -49.00 5.62 49.87 5.12 49.87 4.12 49.00 3.62 48.13 4.12 48.13 5.12 TH -51.00 5.62 51.87 5.12 51.87 4.12 51.00 3.62 50.13 4.12 50.13 5.12 TH -53.00 5.62 53.87 5.12 53.87 4.12 53.00 3.62 52.13 4.12 52.13 5.12 TH -59.00 5.62 59.87 5.12 59.87 4.12 59.00 3.62 58.13 4.12 58.13 5.12 TH -6.00 3.89 6.87 3.39 6.87 2.39 6.00 1.89 5.13 2.39 5.13 3.39 TH -12.00 3.89 12.87 3.39 12.87 2.39 12.00 1.89 11.13 2.39 11.13 3.39 TH -14.00 3.89 14.87 3.39 14.87 2.39 14.00 1.89 13.13 2.39 13.13 3.39 TH -18.00 3.89 18.87 3.39 18.87 2.39 18.00 1.89 17.13 2.39 17.13 3.39 TH -20.00 3.89 20.87 3.39 20.87 2.39 20.00 1.89 19.13 2.39 19.13 3.39 TH -22.00 3.89 22.87 3.39 22.87 2.39 22.00 1.89 21.13 2.39 21.13 3.39 TH -24.00 3.89 24.87 3.39 24.87 2.39 24.00 1.89 23.13 2.39 23.13 3.39 TH -26.00 3.89 26.87 3.39 26.87 2.39 26.00 1.89 25.13 2.39 25.13 3.39 TH -30.00 3.89 30.87 3.39 30.87 2.39 30.00 1.89 29.13 2.39 29.13 3.39 TH -32.00 3.89 32.87 3.39 32.87 2.39 32.00 1.89 31.13 2.39 31.13 3.39 TH -36.00 3.89 36.87 3.39 36.87 2.39 36.00 1.89 35.13 2.39 35.13 3.39 TH -38.00 3.89 38.87 3.39 38.87 2.39 38.00 1.89 37.13 2.39 37.13 3.39 TH -42.00 3.89 42.87 3.39 42.87 2.39 42.00 1.89 41.13 2.39 41.13 3.39 TH -46.00 3.89 46.87 3.39 46.87 2.39 46.00 1.89 45.13 2.39 45.13 3.39 TH -52.00 3.89 52.87 3.39 52.87 2.39 52.00 1.89 51.13 2.39 51.13 3.39 TH -54.00 3.89 54.87 3.39 54.87 2.39 54.00 1.89 53.13 2.39 53.13 3.39 TH -56.00 3.89 56.87 3.39 56.87 2.39 56.00 1.89 55.13 2.39 55.13 3.39 TH -5.00 2.15 5.87 1.65 5.87 0.65 5.00 0.15 4.13 0.65 4.13 1.65 TH -9.00 2.15 9.87 1.65 9.87 0.65 9.00 0.15 8.13 0.65 8.13 1.65 TH -11.00 2.15 11.87 1.65 11.87 0.65 11.00 0.15 10.13 0.65 10.13 1.65 TH -25.00 2.15 25.87 1.65 25.87 0.65 25.00 0.15 24.13 0.65 24.13 1.65 TH -27.00 2.15 27.87 1.65 27.87 0.65 27.00 0.15 26.13 0.65 26.13 1.65 TH -29.00 2.15 29.87 1.65 29.87 0.65 29.00 0.15 28.13 0.65 28.13 1.65 TH -31.00 2.15 31.87 1.65 31.87 0.65 31.00 0.15 30.13 0.65 30.13 1.65 TH -35.00 2.15 35.87 1.65 35.87 0.65 35.00 0.15 34.13 0.65 34.13 1.65 TH -37.00 2.15 37.87 1.65 37.87 0.65 37.00 0.15 36.13 0.65 36.13 1.65 TH -43.00 2.15 43.87 1.65 43.87 0.65 43.00 0.15 42.13 0.65 42.13 1.65 TH -53.00 2.15 53.87 1.65 53.87 0.65 53.00 0.15 52.13 0.65 52.13 1.65 TH -29.00 28.87 7.431 1.569 TC -29.00 28.87 4.293 1.569 TC -29.00 28.87 1.155 1.569 TC +1 1 1 setrgbcolor +57.73 60 0 0 TR +0 0 0 setrgbcolor +3 57.58 3.87 57.08 3.87 56.08 3 55.58 2.13 56.08 2.13 57.08 TH +5 57.58 5.87 57.08 5.87 56.08 5 55.58 4.13 56.08 4.13 57.08 TH +7 57.58 7.87 57.08 7.87 56.08 7 55.58 6.13 56.08 6.13 57.08 TH +9 57.58 9.87 57.08 9.87 56.08 9 55.58 8.13 56.08 8.13 57.08 TH +11 57.58 11.87 57.08 11.87 56.08 11 55.58 10.13 56.08 10.13 57.08 TH +15 57.58 15.87 57.08 15.87 56.08 15 55.58 14.13 56.08 14.13 57.08 TH +29 57.58 29.87 57.08 29.87 56.08 29 55.58 28.13 56.08 28.13 57.08 TH +41 57.58 41.87 57.08 41.87 56.08 41 55.58 40.13 56.08 40.13 57.08 TH +49 57.58 49.87 57.08 49.87 56.08 49 55.58 48.13 56.08 48.13 57.08 TH +55 57.58 55.87 57.08 55.87 56.08 55 55.58 54.13 56.08 54.13 57.08 TH +57 57.58 57.87 57.08 57.87 56.08 57 55.58 56.13 56.08 56.13 57.08 TH +59 57.58 59.87 57.08 59.87 56.08 59 55.58 58.13 56.08 58.13 57.08 TH +8 55.85 8.87 55.35 8.87 54.35 8 53.85 7.13 54.35 7.13 55.35 TH +24 55.85 24.87 55.35 24.87 54.35 24 53.85 23.13 54.35 23.13 55.35 TH +42 55.85 42.87 55.35 42.87 54.35 42 53.85 41.13 54.35 41.13 55.35 TH +46 55.85 46.87 55.35 46.87 54.35 46 53.85 45.13 54.35 45.13 55.35 TH +5 54.11 5.87 53.61 5.87 52.61 5 52.11 4.13 52.61 4.13 53.61 TH +9 54.11 9.87 53.61 9.87 52.61 9 52.11 8.13 52.61 8.13 53.61 TH +11 54.11 11.87 53.61 11.87 52.61 11 52.11 10.13 52.61 10.13 53.61 TH +17 54.11 17.87 53.61 17.87 52.61 17 52.11 16.13 52.61 16.13 53.61 TH +19 54.11 19.87 53.61 19.87 52.61 19 52.11 18.13 52.61 18.13 53.61 TH +25 54.11 25.87 53.61 25.87 52.61 25 52.11 24.13 52.61 24.13 53.61 TH +31 54.11 31.87 53.61 31.87 52.61 31 52.11 30.13 52.61 30.13 53.61 TH +33 54.11 33.87 53.61 33.87 52.61 33 52.11 32.13 52.61 32.13 53.61 TH +37 54.11 37.87 53.61 37.87 52.61 37 52.11 36.13 52.61 36.13 53.61 TH +39 54.11 39.87 53.61 39.87 52.61 39 52.11 38.13 52.61 38.13 53.61 TH +45 54.11 45.87 53.61 45.87 52.61 45 52.11 44.13 52.61 44.13 53.61 TH +51 54.11 51.87 53.61 51.87 52.61 51 52.11 50.13 52.61 50.13 53.61 TH +57 54.11 57.87 53.61 57.87 52.61 57 52.11 56.13 52.61 56.13 53.61 TH +2 52.38 2.87 51.88 2.87 50.88 2 50.38 1.13 50.88 1.13 51.88 TH +16 52.38 16.87 51.88 16.87 50.88 16 50.38 15.13 50.88 15.13 51.88 TH +24 52.38 24.87 51.88 24.87 50.88 24 50.38 23.13 50.88 23.13 51.88 TH +26 52.38 26.87 51.88 26.87 50.88 26 50.38 25.13 50.88 25.13 51.88 TH +34 52.38 34.87 51.88 34.87 50.88 34 50.38 33.13 50.88 33.13 51.88 TH +40 52.38 40.87 51.88 40.87 50.88 40 50.38 39.13 50.88 39.13 51.88 TH +5 50.65 5.87 50.15 5.87 49.15 5 48.65 4.13 49.15 4.13 50.15 TH +9 50.65 9.87 50.15 9.87 49.15 9 48.65 8.13 49.15 8.13 50.15 TH +11 50.65 11.87 50.15 11.87 49.15 11 48.65 10.13 49.15 10.13 50.15 TH +25 50.65 25.87 50.15 25.87 49.15 25 48.65 24.13 49.15 24.13 50.15 TH +29 50.65 29.87 50.15 29.87 49.15 29 48.65 28.13 49.15 28.13 50.15 TH +41 50.65 41.87 50.15 41.87 49.15 41 48.65 40.13 49.15 40.13 50.15 TH +45 50.65 45.87 50.15 45.87 49.15 45 48.65 44.13 49.15 44.13 50.15 TH +49 50.65 49.87 50.15 49.87 49.15 49 48.65 48.13 49.15 48.13 50.15 TH +51 50.65 51.87 50.15 51.87 49.15 51 48.65 50.13 49.15 50.13 50.15 TH +57 50.65 57.87 50.15 57.87 49.15 57 48.65 56.13 49.15 56.13 50.15 TH +59 50.65 59.87 50.15 59.87 49.15 59 48.65 58.13 49.15 58.13 50.15 TH +2 48.92 2.87 48.42 2.87 47.42 2 46.92 1.13 47.42 1.13 48.42 TH +4 48.92 4.87 48.42 4.87 47.42 4 46.92 3.13 47.42 3.13 48.42 TH +6 48.92 6.87 48.42 6.87 47.42 6 46.92 5.13 47.42 5.13 48.42 TH +10 48.92 10.87 48.42 10.87 47.42 10 46.92 9.13 47.42 9.13 48.42 TH +18 48.92 18.87 48.42 18.87 47.42 18 46.92 17.13 47.42 17.13 48.42 TH +30 48.92 30.87 48.42 30.87 47.42 30 46.92 29.13 47.42 29.13 48.42 TH +34 48.92 34.87 48.42 34.87 47.42 34 46.92 33.13 47.42 33.13 48.42 TH +36 48.92 36.87 48.42 36.87 47.42 36 46.92 35.13 47.42 35.13 48.42 TH +42 48.92 42.87 48.42 42.87 47.42 42 46.92 41.13 47.42 41.13 48.42 TH +50 48.92 50.87 48.42 50.87 47.42 50 46.92 49.13 47.42 49.13 48.42 TH +52 48.92 52.87 48.42 52.87 47.42 52 46.92 51.13 47.42 51.13 48.42 TH +54 48.92 54.87 48.42 54.87 47.42 54 46.92 53.13 47.42 53.13 48.42 TH +56 48.92 56.87 48.42 56.87 47.42 56 46.92 55.13 47.42 55.13 48.42 TH +1 47.19 1.87 46.69 1.87 45.69 1 45.19 0.13 45.69 0.13 46.69 TH +19 47.19 19.87 46.69 19.87 45.69 19 45.19 18.13 45.69 18.13 46.69 TH +21 47.19 21.87 46.69 21.87 45.69 21 45.19 20.13 45.69 20.13 46.69 TH +33 47.19 33.87 46.69 33.87 45.69 33 45.19 32.13 45.69 32.13 46.69 TH +39 47.19 39.87 46.69 39.87 45.69 39 45.19 38.13 45.69 38.13 46.69 TH +10 45.45 10.87 44.95 10.87 43.95 10 43.45 9.13 43.95 9.13 44.95 TH +14 45.45 14.87 44.95 14.87 43.95 14 43.45 13.13 43.95 13.13 44.95 TH +22 45.45 22.87 44.95 22.87 43.95 22 43.45 21.13 43.95 21.13 44.95 TH +28 45.45 28.87 44.95 28.87 43.95 28 43.45 27.13 43.95 27.13 44.95 TH +34 45.45 34.87 44.95 34.87 43.95 34 43.45 33.13 43.95 33.13 44.95 TH +42 45.45 42.87 44.95 42.87 43.95 42 43.45 41.13 43.95 41.13 44.95 TH +48 45.45 48.87 44.95 48.87 43.95 48 43.45 47.13 43.95 47.13 44.95 TH +50 45.45 50.87 44.95 50.87 43.95 50 43.45 49.13 43.95 49.13 44.95 TH +52 45.45 52.87 44.95 52.87 43.95 52 43.45 51.13 43.95 51.13 44.95 TH +54 45.45 54.87 44.95 54.87 43.95 54 43.45 53.13 43.95 53.13 44.95 TH +56 45.45 56.87 44.95 56.87 43.95 56 43.45 55.13 43.95 55.13 44.95 TH +1 43.72 1.87 43.22 1.87 42.22 1 41.72 0.13 42.22 0.13 43.22 TH +3 43.72 3.87 43.22 3.87 42.22 3 41.72 2.13 42.22 2.13 43.22 TH +5 43.72 5.87 43.22 5.87 42.22 5 41.72 4.13 42.22 4.13 43.22 TH +9 43.72 9.87 43.22 9.87 42.22 9 41.72 8.13 42.22 8.13 43.22 TH +11 43.72 11.87 43.22 11.87 42.22 11 41.72 10.13 42.22 10.13 43.22 TH +13 43.72 13.87 43.22 13.87 42.22 13 41.72 12.13 42.22 12.13 43.22 TH +29 43.72 29.87 43.22 29.87 42.22 29 41.72 28.13 42.22 28.13 43.22 TH +43 43.72 43.87 43.22 43.87 42.22 43 41.72 42.13 42.22 42.13 43.22 TH +45 43.72 45.87 43.22 45.87 42.22 45 41.72 44.13 42.22 44.13 43.22 TH +16 41.99 16.87 41.49 16.87 40.49 16 39.99 15.13 40.49 15.13 41.49 TH +18 41.99 18.87 41.49 18.87 40.49 18 39.99 17.13 40.49 17.13 41.49 TH +22 41.99 22.87 41.49 22.87 40.49 22 39.99 21.13 40.49 21.13 41.49 TH +24 41.99 24.87 41.49 24.87 40.49 24 39.99 23.13 40.49 23.13 41.49 TH +40 41.99 40.87 41.49 40.87 40.49 40 39.99 39.13 40.49 39.13 41.49 TH +44 41.99 44.87 41.49 44.87 40.49 44 39.99 43.13 40.49 43.13 41.49 TH +52 41.99 52.87 41.49 52.87 40.49 52 39.99 51.13 40.49 51.13 41.49 TH +54 41.99 54.87 41.49 54.87 40.49 54 39.99 53.13 40.49 53.13 41.49 TH +1 40.26 1.87 39.76 1.87 38.76 1 38.26 0.13 38.76 0.13 39.76 TH +5 40.26 5.87 39.76 5.87 38.76 5 38.26 4.13 38.76 4.13 39.76 TH +7 40.26 7.87 39.76 7.87 38.76 7 38.26 6.13 38.76 6.13 39.76 TH +9 40.26 9.87 39.76 9.87 38.76 9 38.26 8.13 38.76 8.13 39.76 TH +11 40.26 11.87 39.76 11.87 38.76 11 38.26 10.13 38.76 10.13 39.76 TH +23 40.26 23.87 39.76 23.87 38.76 23 38.26 22.13 38.76 22.13 39.76 TH +27 40.26 27.87 39.76 27.87 38.76 27 38.26 26.13 38.76 26.13 39.76 TH +31 40.26 31.87 39.76 31.87 38.76 31 38.26 30.13 38.76 30.13 39.76 TH +33 40.26 33.87 39.76 33.87 38.76 33 38.26 32.13 38.76 32.13 39.76 TH +41 40.26 41.87 39.76 41.87 38.76 41 38.26 40.13 38.76 40.13 39.76 TH +43 40.26 43.87 39.76 43.87 38.76 43 38.26 42.13 38.76 42.13 39.76 TH +57 40.26 57.87 39.76 57.87 38.76 57 38.26 56.13 38.76 56.13 39.76 TH +59 40.26 59.87 39.76 59.87 38.76 59 38.26 58.13 38.76 58.13 39.76 TH +6 38.53 6.87 38.03 6.87 37.03 6 36.53 5.13 37.03 5.13 38.03 TH +8 38.53 8.87 38.03 8.87 37.03 8 36.53 7.13 37.03 7.13 38.03 TH +10 38.53 10.87 38.03 10.87 37.03 10 36.53 9.13 37.03 9.13 38.03 TH +18 38.53 18.87 38.03 18.87 37.03 18 36.53 17.13 37.03 17.13 38.03 TH +22 38.53 22.87 38.03 22.87 37.03 22 36.53 21.13 37.03 21.13 38.03 TH +38 38.53 38.87 38.03 38.87 37.03 38 36.53 37.13 37.03 37.13 38.03 TH +40 38.53 40.87 38.03 40.87 37.03 40 36.53 39.13 37.03 39.13 38.03 TH +42 38.53 42.87 38.03 42.87 37.03 42 36.53 41.13 37.03 41.13 38.03 TH +46 38.53 46.87 38.03 46.87 37.03 46 36.53 45.13 37.03 45.13 38.03 TH +54 38.53 54.87 38.03 54.87 37.03 54 36.53 53.13 37.03 53.13 38.03 TH +56 38.53 56.87 38.03 56.87 37.03 56 36.53 55.13 37.03 55.13 38.03 TH +58 38.53 58.87 38.03 58.87 37.03 58 36.53 57.13 37.03 57.13 38.03 TH +7 36.79 7.87 36.29 7.87 35.29 7 34.79 6.13 35.29 6.13 36.29 TH +9 36.79 9.87 36.29 9.87 35.29 9 34.79 8.13 35.29 8.13 36.29 TH +11 36.79 11.87 36.29 11.87 35.29 11 34.79 10.13 35.29 10.13 36.29 TH +13 36.79 13.87 36.29 13.87 35.29 13 34.79 12.13 35.29 12.13 36.29 TH +37 36.79 37.87 36.29 37.87 35.29 37 34.79 36.13 35.29 36.13 36.29 TH +47 36.79 47.87 36.29 47.87 35.29 47 34.79 46.13 35.29 46.13 36.29 TH +51 36.79 51.87 36.29 51.87 35.29 51 34.79 50.13 35.29 50.13 36.29 TH +53 36.79 53.87 36.29 53.87 35.29 53 34.79 52.13 35.29 52.13 36.29 TH +2 35.06 2.87 34.56 2.87 33.56 2 33.06 1.13 33.56 1.13 34.56 TH +10 35.06 10.87 34.56 10.87 33.56 10 33.06 9.13 33.56 9.13 34.56 TH +44 35.06 44.87 34.56 44.87 33.56 44 33.06 43.13 33.56 43.13 34.56 TH +46 35.06 46.87 34.56 46.87 33.56 46 33.06 45.13 33.56 45.13 34.56 TH +48 35.06 48.87 34.56 48.87 33.56 48 33.06 47.13 33.56 47.13 34.56 TH +54 35.06 54.87 34.56 54.87 33.56 54 33.06 53.13 33.56 53.13 34.56 TH +1 33.33 1.87 32.83 1.87 31.83 1 31.33 0.13 31.83 0.13 32.83 TH +17 33.33 17.87 32.83 17.87 31.83 17 31.33 16.13 31.83 16.13 32.83 TH +39 33.33 39.87 32.83 39.87 31.83 39 31.33 38.13 31.83 38.13 32.83 TH +41 33.33 41.87 32.83 41.87 31.83 41 31.33 40.13 31.83 40.13 32.83 TH +53 33.33 53.87 32.83 53.87 31.83 53 31.33 52.13 31.83 52.13 32.83 TH +10 31.6 10.87 31.1 10.87 30.1 10 29.6 9.13 30.1 9.13 31.1 TH +14 31.6 14.87 31.1 14.87 30.1 14 29.6 13.13 30.1 13.13 31.1 TH +16 31.6 16.87 31.1 16.87 30.1 16 29.6 15.13 30.1 15.13 31.1 TH +18 31.6 18.87 31.1 18.87 30.1 18 29.6 17.13 30.1 17.13 31.1 TH +46 31.6 46.87 31.1 46.87 30.1 46 29.6 45.13 30.1 45.13 31.1 TH +58 31.6 58.87 31.1 58.87 30.1 58 29.6 57.13 30.1 57.13 31.1 TH +1 29.87 1.87 29.37 1.87 28.37 1 27.87 0.13 28.37 0.13 29.37 TH +3 29.87 3.87 29.37 3.87 28.37 3 27.87 2.13 28.37 2.13 29.37 TH +5 29.87 5.87 29.37 5.87 28.37 5 27.87 4.13 28.37 4.13 29.37 TH +17 29.87 17.87 29.37 17.87 28.37 17 27.87 16.13 28.37 16.13 29.37 TH +41 29.87 41.87 29.37 41.87 28.37 41 27.87 40.13 28.37 40.13 29.37 TH +53 29.87 53.87 29.37 53.87 28.37 53 27.87 52.13 28.37 52.13 29.37 TH +55 29.87 55.87 29.37 55.87 28.37 55 27.87 54.13 28.37 54.13 29.37 TH +59 29.87 59.87 29.37 59.87 28.37 59 27.87 58.13 28.37 58.13 29.37 TH +4 28.13 4.87 27.63 4.87 26.63 4 26.13 3.13 26.63 3.13 27.63 TH +6 28.13 6.87 27.63 6.87 26.63 6 26.13 5.13 26.63 5.13 27.63 TH +42 28.13 42.87 27.63 42.87 26.63 42 26.13 41.13 26.63 41.13 27.63 TH +50 28.13 50.87 27.63 50.87 26.63 50 26.13 49.13 26.63 49.13 27.63 TH +56 28.13 56.87 27.63 56.87 26.63 56 26.13 55.13 26.63 55.13 27.63 TH +13 26.4 13.87 25.9 13.87 24.9 13 24.4 12.13 24.9 12.13 25.9 TH +17 26.4 17.87 25.9 17.87 24.9 17 24.4 16.13 24.9 16.13 25.9 TH +19 26.4 19.87 25.9 19.87 24.9 19 24.4 18.13 24.9 18.13 25.9 TH +41 26.4 41.87 25.9 41.87 24.9 41 24.4 40.13 24.9 40.13 25.9 TH +47 26.4 47.87 25.9 47.87 24.9 47 24.4 46.13 24.9 46.13 25.9 TH +51 26.4 51.87 25.9 51.87 24.9 51 24.4 50.13 24.9 50.13 25.9 TH +59 26.4 59.87 25.9 59.87 24.9 59 24.4 58.13 24.9 58.13 25.9 TH +2 24.67 2.87 24.17 2.87 23.17 2 22.67 1.13 23.17 1.13 24.17 TH +6 24.67 6.87 24.17 6.87 23.17 6 22.67 5.13 23.17 5.13 24.17 TH +10 24.67 10.87 24.17 10.87 23.17 10 22.67 9.13 23.17 9.13 24.17 TH +18 24.67 18.87 24.17 18.87 23.17 18 22.67 17.13 23.17 17.13 24.17 TH +38 24.67 38.87 24.17 38.87 23.17 38 22.67 37.13 23.17 37.13 24.17 TH +44 24.67 44.87 24.17 44.87 23.17 44 22.67 43.13 23.17 43.13 24.17 TH +46 24.67 46.87 24.17 46.87 23.17 46 22.67 45.13 23.17 45.13 24.17 TH +48 24.67 48.87 24.17 48.87 23.17 48 22.67 47.13 23.17 47.13 24.17 TH +54 24.67 54.87 24.17 54.87 23.17 54 22.67 53.13 23.17 53.13 24.17 TH +56 24.67 56.87 24.17 56.87 23.17 56 22.67 55.13 23.17 55.13 24.17 TH +5 22.94 5.87 22.44 5.87 21.44 5 20.94 4.13 21.44 4.13 22.44 TH +15 22.94 15.87 22.44 15.87 21.44 15 20.94 14.13 21.44 14.13 22.44 TH +17 22.94 17.87 22.44 17.87 21.44 17 20.94 16.13 21.44 16.13 22.44 TH +39 22.94 39.87 22.44 39.87 21.44 39 20.94 38.13 21.44 38.13 22.44 TH +41 22.94 41.87 22.44 41.87 21.44 41 20.94 40.13 21.44 40.13 22.44 TH +43 22.94 43.87 22.44 43.87 21.44 43 20.94 42.13 21.44 42.13 22.44 TH +53 22.94 53.87 22.44 53.87 21.44 53 20.94 52.13 21.44 52.13 22.44 TH +57 22.94 57.87 22.44 57.87 21.44 57 20.94 56.13 21.44 56.13 22.44 TH +38 21.21 38.87 20.71 38.87 19.71 38 19.21 37.13 19.71 37.13 20.71 TH +40 21.21 40.87 20.71 40.87 19.71 40 19.21 39.13 19.71 39.13 20.71 TH +50 21.21 50.87 20.71 50.87 19.71 50 19.21 49.13 19.71 49.13 20.71 TH +1 19.47 1.87 18.97 1.87 17.97 1 17.47 0.13 17.97 0.13 18.97 TH +5 19.47 5.87 18.97 5.87 17.97 5 17.47 4.13 17.97 4.13 18.97 TH +9 19.47 9.87 18.97 9.87 17.97 9 17.47 8.13 17.97 8.13 18.97 TH +11 19.47 11.87 18.97 11.87 17.97 11 17.47 10.13 17.97 10.13 18.97 TH +17 19.47 17.87 18.97 17.87 17.97 17 17.47 16.13 17.97 16.13 18.97 TH +21 19.47 21.87 18.97 21.87 17.97 21 17.47 20.13 17.97 20.13 18.97 TH +25 19.47 25.87 18.97 25.87 17.97 25 17.47 24.13 17.97 24.13 18.97 TH +35 19.47 35.87 18.97 35.87 17.97 35 17.47 34.13 17.97 34.13 18.97 TH +43 19.47 43.87 18.97 43.87 17.97 43 17.47 42.13 17.97 42.13 18.97 TH +47 19.47 47.87 18.97 47.87 17.97 47 17.47 46.13 17.97 46.13 18.97 TH +51 19.47 51.87 18.97 51.87 17.97 51 17.47 50.13 17.97 50.13 18.97 TH +59 19.47 59.87 18.97 59.87 17.97 59 17.47 58.13 17.97 58.13 18.97 TH +2 17.74 2.87 17.24 2.87 16.24 2 15.74 1.13 16.24 1.13 17.24 TH +10 17.74 10.87 17.24 10.87 16.24 10 15.74 9.13 16.24 9.13 17.24 TH +12 17.74 12.87 17.24 12.87 16.24 12 15.74 11.13 16.24 11.13 17.24 TH +14 17.74 14.87 17.24 14.87 16.24 14 15.74 13.13 16.24 13.13 17.24 TH +16 17.74 16.87 17.24 16.87 16.24 16 15.74 15.13 16.24 15.13 17.24 TH +22 17.74 22.87 17.24 22.87 16.24 22 15.74 21.13 16.24 21.13 17.24 TH +26 17.74 26.87 17.24 26.87 16.24 26 15.74 25.13 16.24 25.13 17.24 TH +30 17.74 30.87 17.24 30.87 16.24 30 15.74 29.13 16.24 29.13 17.24 TH +36 17.74 36.87 17.24 36.87 16.24 36 15.74 35.13 16.24 35.13 17.24 TH +38 17.74 38.87 17.24 38.87 16.24 38 15.74 37.13 16.24 37.13 17.24 TH +42 17.74 42.87 17.24 42.87 16.24 42 15.74 41.13 16.24 41.13 17.24 TH +46 17.74 46.87 17.24 46.87 16.24 46 15.74 45.13 16.24 45.13 17.24 TH +54 17.74 54.87 17.24 54.87 16.24 54 15.74 53.13 16.24 53.13 17.24 TH +58 17.74 58.87 17.24 58.87 16.24 58 15.74 57.13 16.24 57.13 17.24 TH +3 16.01 3.87 15.51 3.87 14.51 3 14.01 2.13 14.51 2.13 15.51 TH +5 16.01 5.87 15.51 5.87 14.51 5 14.01 4.13 14.51 4.13 15.51 TH +9 16.01 9.87 15.51 9.87 14.51 9 14.01 8.13 14.51 8.13 15.51 TH +31 16.01 31.87 15.51 31.87 14.51 31 14.01 30.13 14.51 30.13 15.51 TH +35 16.01 35.87 15.51 35.87 14.51 35 14.01 34.13 14.51 34.13 15.51 TH +39 16.01 39.87 15.51 39.87 14.51 39 14.01 38.13 14.51 38.13 15.51 TH +41 16.01 41.87 15.51 41.87 14.51 41 14.01 40.13 14.51 40.13 15.51 TH +45 16.01 45.87 15.51 45.87 14.51 45 14.01 44.13 14.51 44.13 15.51 TH +51 16.01 51.87 15.51 51.87 14.51 51 14.01 50.13 14.51 50.13 15.51 TH +53 16.01 53.87 15.51 53.87 14.51 53 14.01 52.13 14.51 52.13 15.51 TH +55 16.01 55.87 15.51 55.87 14.51 55 14.01 54.13 14.51 54.13 15.51 TH +57 16.01 57.87 15.51 57.87 14.51 57 14.01 56.13 14.51 56.13 15.51 TH +59 16.01 59.87 15.51 59.87 14.51 59 14.01 58.13 14.51 58.13 15.51 TH +12 14.28 12.87 13.78 12.87 12.78 12 12.28 11.13 12.78 11.13 13.78 TH +14 14.28 14.87 13.78 14.87 12.78 14 12.28 13.13 12.78 13.13 13.78 TH +16 14.28 16.87 13.78 16.87 12.78 16 12.28 15.13 12.78 15.13 13.78 TH +22 14.28 22.87 13.78 22.87 12.78 22 12.28 21.13 12.78 21.13 13.78 TH +24 14.28 24.87 13.78 24.87 12.78 24 12.28 23.13 12.78 23.13 13.78 TH +26 14.28 26.87 13.78 26.87 12.78 26 12.28 25.13 12.78 25.13 13.78 TH +28 14.28 28.87 13.78 28.87 12.78 28 12.28 27.13 12.78 27.13 13.78 TH +30 14.28 30.87 13.78 30.87 12.78 30 12.28 29.13 12.78 29.13 13.78 TH +32 14.28 32.87 13.78 32.87 12.78 32 12.28 31.13 12.78 31.13 13.78 TH +34 14.28 34.87 13.78 34.87 12.78 34 12.28 33.13 12.78 33.13 13.78 TH +36 14.28 36.87 13.78 36.87 12.78 36 12.28 35.13 12.78 35.13 13.78 TH +38 14.28 38.87 13.78 38.87 12.78 38 12.28 37.13 12.78 37.13 13.78 TH +40 14.28 40.87 13.78 40.87 12.78 40 12.28 39.13 12.78 39.13 13.78 TH +42 14.28 42.87 13.78 42.87 12.78 42 12.28 41.13 12.78 41.13 13.78 TH +44 14.28 44.87 13.78 44.87 12.78 44 12.28 43.13 12.78 43.13 13.78 TH +52 14.28 52.87 13.78 52.87 12.78 52 12.28 51.13 12.78 51.13 13.78 TH +56 14.28 56.87 13.78 56.87 12.78 56 12.28 55.13 12.78 55.13 13.78 TH +5 12.55 5.87 12.05 5.87 11.05 5 10.55 4.13 11.05 4.13 12.05 TH +7 12.55 7.87 12.05 7.87 11.05 7 10.55 6.13 11.05 6.13 12.05 TH +9 12.55 9.87 12.05 9.87 11.05 9 10.55 8.13 11.05 8.13 12.05 TH +13 12.55 13.87 12.05 13.87 11.05 13 10.55 12.13 11.05 12.13 12.05 TH +19 12.55 19.87 12.05 19.87 11.05 19 10.55 18.13 11.05 18.13 12.05 TH +21 12.55 21.87 12.05 21.87 11.05 21 10.55 20.13 11.05 20.13 12.05 TH +23 12.55 23.87 12.05 23.87 11.05 23 10.55 22.13 11.05 22.13 12.05 TH +31 12.55 31.87 12.05 31.87 11.05 31 10.55 30.13 11.05 30.13 12.05 TH +35 12.55 35.87 12.05 35.87 11.05 35 10.55 34.13 11.05 34.13 12.05 TH +39 12.55 39.87 12.05 39.87 11.05 39 10.55 38.13 11.05 38.13 12.05 TH +41 12.55 41.87 12.05 41.87 11.05 41 10.55 40.13 11.05 40.13 12.05 TH +51 12.55 51.87 12.05 51.87 11.05 51 10.55 50.13 11.05 50.13 12.05 TH +53 12.55 53.87 12.05 53.87 11.05 53 10.55 52.13 11.05 52.13 12.05 TH +55 12.55 55.87 12.05 55.87 11.05 55 10.55 54.13 11.05 54.13 12.05 TH +2 10.81 2.87 10.31 2.87 9.31 2 8.81 1.13 9.31 1.13 10.31 TH +4 10.81 4.87 10.31 4.87 9.31 4 8.81 3.13 9.31 3.13 10.31 TH +8 10.81 8.87 10.31 8.87 9.31 8 8.81 7.13 9.31 7.13 10.31 TH +10 10.81 10.87 10.31 10.87 9.31 10 8.81 9.13 9.31 9.13 10.31 TH +12 10.81 12.87 10.31 12.87 9.31 12 8.81 11.13 9.31 11.13 10.31 TH +16 10.81 16.87 10.31 16.87 9.31 16 8.81 15.13 9.31 15.13 10.31 TH +18 10.81 18.87 10.31 18.87 9.31 18 8.81 17.13 9.31 17.13 10.31 TH +20 10.81 20.87 10.31 20.87 9.31 20 8.81 19.13 9.31 19.13 10.31 TH +26 10.81 26.87 10.31 26.87 9.31 26 8.81 25.13 9.31 25.13 10.31 TH +36 10.81 36.87 10.31 36.87 9.31 36 8.81 35.13 9.31 35.13 10.31 TH +38 10.81 38.87 10.31 38.87 9.31 38 8.81 37.13 9.31 37.13 10.31 TH +42 10.81 42.87 10.31 42.87 9.31 42 8.81 41.13 9.31 41.13 10.31 TH +48 10.81 48.87 10.31 48.87 9.31 48 8.81 47.13 9.31 47.13 10.31 TH +52 10.81 52.87 10.31 52.87 9.31 52 8.81 51.13 9.31 51.13 10.31 TH +56 10.81 56.87 10.31 56.87 9.31 56 8.81 55.13 9.31 55.13 10.31 TH +58 10.81 58.87 10.31 58.87 9.31 58 8.81 57.13 9.31 57.13 10.31 TH +11 9.08 11.87 8.58 11.87 7.58 11 7.08 10.13 7.58 10.13 8.58 TH +15 9.08 15.87 8.58 15.87 7.58 15 7.08 14.13 7.58 14.13 8.58 TH +17 9.08 17.87 8.58 17.87 7.58 17 7.08 16.13 7.58 16.13 8.58 TH +21 9.08 21.87 8.58 21.87 7.58 21 7.08 20.13 7.58 20.13 8.58 TH +23 9.08 23.87 8.58 23.87 7.58 23 7.08 22.13 7.58 22.13 8.58 TH +25 9.08 25.87 8.58 25.87 7.58 25 7.08 24.13 7.58 24.13 8.58 TH +29 9.08 29.87 8.58 29.87 7.58 29 7.08 28.13 7.58 28.13 8.58 TH +33 9.08 33.87 8.58 33.87 7.58 33 7.08 32.13 7.58 32.13 8.58 TH +39 9.08 39.87 8.58 39.87 7.58 39 7.08 38.13 7.58 38.13 8.58 TH +43 9.08 43.87 8.58 43.87 7.58 43 7.08 42.13 7.58 42.13 8.58 TH +45 9.08 45.87 8.58 45.87 7.58 45 7.08 44.13 7.58 44.13 8.58 TH +47 9.08 47.87 8.58 47.87 7.58 47 7.08 46.13 7.58 46.13 8.58 TH +53 9.08 53.87 8.58 53.87 7.58 53 7.08 52.13 7.58 52.13 8.58 TH +55 9.08 55.87 8.58 55.87 7.58 55 7.08 54.13 7.58 54.13 8.58 TH +2 7.35 2.87 6.85 2.87 5.85 2 5.35 1.13 5.85 1.13 6.85 TH +4 7.35 4.87 6.85 4.87 5.85 4 5.35 3.13 5.85 3.13 6.85 TH +6 7.35 6.87 6.85 6.87 5.85 6 5.35 5.13 5.85 5.13 6.85 TH +14 7.35 14.87 6.85 14.87 5.85 14 5.35 13.13 5.85 13.13 6.85 TH +16 7.35 16.87 6.85 16.87 5.85 16 5.35 15.13 5.85 15.13 6.85 TH +20 7.35 20.87 6.85 20.87 5.85 20 5.35 19.13 5.85 19.13 6.85 TH +22 7.35 22.87 6.85 22.87 5.85 22 5.35 21.13 5.85 21.13 6.85 TH +24 7.35 24.87 6.85 24.87 5.85 24 5.35 23.13 5.85 23.13 6.85 TH +26 7.35 26.87 6.85 26.87 5.85 26 5.35 25.13 5.85 25.13 6.85 TH +34 7.35 34.87 6.85 34.87 5.85 34 5.35 33.13 5.85 33.13 6.85 TH +42 7.35 42.87 6.85 42.87 5.85 42 5.35 41.13 5.85 41.13 6.85 TH +44 7.35 44.87 6.85 44.87 5.85 44 5.35 43.13 5.85 43.13 6.85 TH +46 7.35 46.87 6.85 46.87 5.85 46 5.35 45.13 5.85 45.13 6.85 TH +48 7.35 48.87 6.85 48.87 5.85 48 5.35 47.13 5.85 47.13 6.85 TH +52 7.35 52.87 6.85 52.87 5.85 52 5.35 51.13 5.85 51.13 6.85 TH +54 7.35 54.87 6.85 54.87 5.85 54 5.35 53.13 5.85 53.13 6.85 TH +56 7.35 56.87 6.85 56.87 5.85 56 5.35 55.13 5.85 55.13 6.85 TH +58 7.35 58.87 6.85 58.87 5.85 58 5.35 57.13 5.85 57.13 6.85 TH +1 5.62 1.87 5.12 1.87 4.12 1 3.62 0.13 4.12 0.13 5.12 TH +5 5.62 5.87 5.12 5.87 4.12 5 3.62 4.13 4.12 4.13 5.12 TH +7 5.62 7.87 5.12 7.87 4.12 7 3.62 6.13 4.12 6.13 5.12 TH +9 5.62 9.87 5.12 9.87 4.12 9 3.62 8.13 4.12 8.13 5.12 TH +11 5.62 11.87 5.12 11.87 4.12 11 3.62 10.13 4.12 10.13 5.12 TH +15 5.62 15.87 5.12 15.87 4.12 15 3.62 14.13 4.12 14.13 5.12 TH +19 5.62 19.87 5.12 19.87 4.12 19 3.62 18.13 4.12 18.13 5.12 TH +21 5.62 21.87 5.12 21.87 4.12 21 3.62 20.13 4.12 20.13 5.12 TH +23 5.62 23.87 5.12 23.87 4.12 23 3.62 22.13 4.12 22.13 5.12 TH +25 5.62 25.87 5.12 25.87 4.12 25 3.62 24.13 4.12 24.13 5.12 TH +27 5.62 27.87 5.12 27.87 4.12 27 3.62 26.13 4.12 26.13 5.12 TH +29 5.62 29.87 5.12 29.87 4.12 29 3.62 28.13 4.12 28.13 5.12 TH +39 5.62 39.87 5.12 39.87 4.12 39 3.62 38.13 4.12 38.13 5.12 TH +43 5.62 43.87 5.12 43.87 4.12 43 3.62 42.13 4.12 42.13 5.12 TH +45 5.62 45.87 5.12 45.87 4.12 45 3.62 44.13 4.12 44.13 5.12 TH +49 5.62 49.87 5.12 49.87 4.12 49 3.62 48.13 4.12 48.13 5.12 TH +51 5.62 51.87 5.12 51.87 4.12 51 3.62 50.13 4.12 50.13 5.12 TH +53 5.62 53.87 5.12 53.87 4.12 53 3.62 52.13 4.12 52.13 5.12 TH +59 5.62 59.87 5.12 59.87 4.12 59 3.62 58.13 4.12 58.13 5.12 TH +6 3.89 6.87 3.39 6.87 2.39 6 1.89 5.13 2.39 5.13 3.39 TH +12 3.89 12.87 3.39 12.87 2.39 12 1.89 11.13 2.39 11.13 3.39 TH +14 3.89 14.87 3.39 14.87 2.39 14 1.89 13.13 2.39 13.13 3.39 TH +18 3.89 18.87 3.39 18.87 2.39 18 1.89 17.13 2.39 17.13 3.39 TH +20 3.89 20.87 3.39 20.87 2.39 20 1.89 19.13 2.39 19.13 3.39 TH +22 3.89 22.87 3.39 22.87 2.39 22 1.89 21.13 2.39 21.13 3.39 TH +24 3.89 24.87 3.39 24.87 2.39 24 1.89 23.13 2.39 23.13 3.39 TH +26 3.89 26.87 3.39 26.87 2.39 26 1.89 25.13 2.39 25.13 3.39 TH +30 3.89 30.87 3.39 30.87 2.39 30 1.89 29.13 2.39 29.13 3.39 TH +32 3.89 32.87 3.39 32.87 2.39 32 1.89 31.13 2.39 31.13 3.39 TH +36 3.89 36.87 3.39 36.87 2.39 36 1.89 35.13 2.39 35.13 3.39 TH +38 3.89 38.87 3.39 38.87 2.39 38 1.89 37.13 2.39 37.13 3.39 TH +42 3.89 42.87 3.39 42.87 2.39 42 1.89 41.13 2.39 41.13 3.39 TH +46 3.89 46.87 3.39 46.87 2.39 46 1.89 45.13 2.39 45.13 3.39 TH +52 3.89 52.87 3.39 52.87 2.39 52 1.89 51.13 2.39 51.13 3.39 TH +54 3.89 54.87 3.39 54.87 2.39 54 1.89 53.13 2.39 53.13 3.39 TH +56 3.89 56.87 3.39 56.87 2.39 56 1.89 55.13 2.39 55.13 3.39 TH +5 2.15 5.87 1.65 5.87 0.65 5 0.15 4.13 0.65 4.13 1.65 TH +9 2.15 9.87 1.65 9.87 0.65 9 0.15 8.13 0.65 8.13 1.65 TH +11 2.15 11.87 1.65 11.87 0.65 11 0.15 10.13 0.65 10.13 1.65 TH +25 2.15 25.87 1.65 25.87 0.65 25 0.15 24.13 0.65 24.13 1.65 TH +27 2.15 27.87 1.65 27.87 0.65 27 0.15 26.13 0.65 26.13 1.65 TH +29 2.15 29.87 1.65 29.87 0.65 29 0.15 28.13 0.65 28.13 1.65 TH +31 2.15 31.87 1.65 31.87 0.65 31 0.15 30.13 0.65 30.13 1.65 TH +35 2.15 35.87 1.65 35.87 0.65 35 0.15 34.13 0.65 34.13 1.65 TH +37 2.15 37.87 1.65 37.87 0.65 37 0.15 36.13 0.65 36.13 1.65 TH +43 2.15 43.87 1.65 43.87 0.65 43 0.15 42.13 0.65 42.13 1.65 TH +53 2.15 53.87 1.65 53.87 0.65 53 0.15 52.13 0.65 52.13 1.65 TH +29 28.87 7.431 1.569 TC +29 28.87 4.293 1.569 TC +29 28.87 1.155 1.569 TC diff --git a/backend/tests/data/print/eps/qr_v1_m.eps b/backend/tests/data/print/eps/qr_v1_m.eps index 14659a19..fcf7033f 100644 --- a/backend/tests/data/print/eps/qr_v1_m.eps +++ b/backend/tests/data/print/eps/qr_v1_m.eps @@ -1,170 +1,89 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 42 42 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -42.00 0.00 TB 0.00 42.00 TR -TE -0.00 0.00 0.00 setrgbcolor -2.00 40.00 TB 0.00 14.00 TR -TE -2.00 40.00 TB 16.00 2.00 TR -TE -2.00 40.00 TB 22.00 4.00 TR -TE -2.00 40.00 TB 28.00 14.00 TR -TE -10.00 30.00 TB 0.00 2.00 TR -TE -10.00 30.00 TB 12.00 2.00 TR -TE -2.00 38.00 TB 18.00 2.00 TR -TE -2.00 38.00 TB 24.00 2.00 TR -TE -10.00 30.00 TB 28.00 2.00 TR -TE -10.00 30.00 TB 40.00 2.00 TR -TE -6.00 32.00 TB 4.00 6.00 TR -TE -2.00 36.00 TB 16.00 2.00 TR -TE -2.00 36.00 TB 22.00 2.00 TR -TE -6.00 32.00 TB 32.00 6.00 TR -TE -2.00 34.00 TB 18.00 2.00 TR -TE -6.00 30.00 TB 22.00 4.00 TR -TE -2.00 30.00 TB 16.00 4.00 TR -TE -2.00 28.00 TB 0.00 14.00 TR -TE -2.00 28.00 TB 16.00 2.00 TR -TE -2.00 28.00 TB 20.00 2.00 TR -TE -4.00 26.00 TB 24.00 2.00 TR -TE -2.00 28.00 TB 28.00 14.00 TR -TE -4.00 22.00 TB 0.00 2.00 TR -TE -4.00 22.00 TB 4.00 2.00 TR -TE -2.00 24.00 TB 12.00 4.00 TR -TE -2.00 24.00 TB 20.00 2.00 TR -TE -2.00 24.00 TB 30.00 2.00 TR -TE -2.00 24.00 TB 36.00 2.00 TR -TE -2.00 24.00 TB 40.00 2.00 TR -TE -4.00 20.00 TB 8.00 2.00 TR -TE -2.00 22.00 TB 16.00 8.00 TR -TE -2.00 22.00 TB 26.00 6.00 TR -TE -2.00 22.00 TB 34.00 2.00 TR -TE -2.00 22.00 TB 38.00 4.00 TR -TE -2.00 20.00 TB 0.00 6.00 TR -TE -2.00 20.00 TB 12.00 2.00 TR -TE -2.00 20.00 TB 16.00 4.00 TR -TE -2.00 20.00 TB 22.00 6.00 TR -TE -2.00 20.00 TB 30.00 4.00 TR -TE -2.00 20.00 TB 38.00 2.00 TR -TE -4.00 16.00 TB 0.00 4.00 TR -TE -2.00 18.00 TB 6.00 6.00 TR -TE -2.00 18.00 TB 14.00 2.00 TR -TE -4.00 16.00 TB 18.00 2.00 TR -TE -2.00 18.00 TB 22.00 2.00 TR -TE -2.00 18.00 TB 26.00 6.00 TR -TE -2.00 18.00 TB 38.00 4.00 TR -TE -2.00 16.00 TB 6.00 10.00 TR -TE -2.00 16.00 TB 22.00 14.00 TR -TE -2.00 16.00 TB 40.00 2.00 TR -TE -2.00 14.00 TB 16.00 2.00 TR -TE -2.00 14.00 TB 20.00 2.00 TR -TE -2.00 12.00 TB 0.00 14.00 TR -TE -2.00 12.00 TB 16.00 6.00 TR -TE -2.00 12.00 TB 28.00 2.00 TR -TE -2.00 12.00 TB 38.00 2.00 TR -TE -10.00 2.00 TB 0.00 2.00 TR -TE -10.00 2.00 TB 12.00 2.00 TR -TE -2.00 10.00 TB 24.00 2.00 TR -TE -2.00 10.00 TB 32.00 2.00 TR -TE -2.00 10.00 TB 40.00 2.00 TR -TE -6.00 4.00 TB 4.00 6.00 TR -TE -2.00 8.00 TB 18.00 4.00 TR -TE -2.00 8.00 TB 28.00 2.00 TR -TE -2.00 8.00 TB 36.00 6.00 TR -TE -2.00 6.00 TB 18.00 6.00 TR -TE -2.00 6.00 TB 26.00 4.00 TR -TE -2.00 6.00 TB 34.00 2.00 TR -TE -2.00 4.00 TB 16.00 4.00 TR -TE -2.00 4.00 TB 22.00 6.00 TR -TE -2.00 4.00 TB 30.00 4.00 TR -TE -2.00 4.00 TB 36.00 6.00 TR -TE -2.00 2.00 TB 22.00 2.00 TR -TE -2.00 2.00 TB 26.00 4.00 TR -TE -2.00 2.00 TB 38.00 2.00 TR -TE -2.00 0.00 TB 0.00 14.00 TR -TE -2.00 0.00 TB 16.00 2.00 TR -TE -2.00 0.00 TB 20.00 22.00 TR -TE +1 1 1 setrgbcolor +42 42 0 0 TR +0 0 0 setrgbcolor +2 14 0 40 TR +2 2 16 40 TR +2 4 22 40 TR +2 14 28 40 TR +10 2 0 30 TR +10 2 12 30 TR +2 2 18 38 TR +2 2 24 38 TR +10 2 28 30 TR +10 2 40 30 TR +6 6 4 32 TR +2 2 16 36 TR +2 2 22 36 TR +6 6 32 32 TR +2 2 18 34 TR +6 4 22 30 TR +2 4 16 30 TR +2 14 0 28 TR +2 2 16 28 TR +2 2 20 28 TR +4 2 24 26 TR +2 14 28 28 TR +4 2 0 22 TR +4 2 4 22 TR +2 4 12 24 TR +2 2 20 24 TR +2 2 30 24 TR +2 2 36 24 TR +2 2 40 24 TR +4 2 8 20 TR +2 8 16 22 TR +2 6 26 22 TR +2 2 34 22 TR +2 4 38 22 TR +2 6 0 20 TR +2 2 12 20 TR +2 4 16 20 TR +2 6 22 20 TR +2 4 30 20 TR +2 2 38 20 TR +4 4 0 16 TR +2 6 6 18 TR +2 2 14 18 TR +4 2 18 16 TR +2 2 22 18 TR +2 6 26 18 TR +2 4 38 18 TR +2 10 6 16 TR +2 14 22 16 TR +2 2 40 16 TR +2 2 16 14 TR +2 2 20 14 TR +2 14 0 12 TR +2 6 16 12 TR +2 2 28 12 TR +2 2 38 12 TR +10 2 0 2 TR +10 2 12 2 TR +2 2 24 10 TR +2 2 32 10 TR +2 2 40 10 TR +6 6 4 4 TR +2 4 18 8 TR +2 2 28 8 TR +2 6 36 8 TR +2 6 18 6 TR +2 4 26 6 TR +2 2 34 6 TR +2 4 16 4 TR +2 6 22 4 TR +2 4 30 4 TR +2 6 36 4 TR +2 2 22 2 TR +2 4 26 2 TR +2 2 38 2 TR +2 14 0 0 TR +2 2 16 0 TR +2 22 20 0 TR diff --git a/backend/tests/data/print/eps/ultracode_a.eps b/backend/tests/data/print/eps/ultracode_a.eps index c9351990..e1fe361a 100644 --- a/backend/tests/data/print/eps/ultracode_a.eps +++ b/backend/tests/data/print/eps/ultracode_a.eps @@ -1,205 +1,109 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 26 26 %%EndComments -/TB { 2 copy } bind def -/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def -/TE { pop pop } bind def +/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def newpath -1.00 1.00 1.00 setrgbcolor -26.00 0.00 TB 0.00 26.00 TR -TE -0.00 1.00 1.00 setrgbcolor -2.00 22.00 TB 22.00 2.00 TR -TE -2.00 20.00 TB 4.00 2.00 TR -TE -2.00 20.00 TB 14.00 2.00 TR -TE -2.00 18.00 TB 12.00 2.00 TR -TE -2.00 18.00 TB 18.00 2.00 TR -TE -2.00 16.00 TB 14.00 4.00 TR -TE -2.00 14.00 TB 10.00 2.00 TR -TE -2.00 10.00 TB 10.00 4.00 TR -TE -2.00 10.00 TB 18.00 6.00 TR -TE -2.00 8.00 TB 4.00 2.00 TR -TE -2.00 8.00 TB 14.00 2.00 TR -TE -2.00 6.00 TB 10.00 4.00 TR -TE -2.00 6.00 TB 20.00 2.00 TR -TE -2.00 4.00 TB 14.00 2.00 TR -TE -2.00 4.00 TB 22.00 2.00 TR -TE -2.00 2.00 TB 4.00 2.00 TR -TE -1.00 0.00 1.00 setrgbcolor -2.00 22.00 TB 12.00 6.00 TR -TE -2.00 20.00 TB 10.00 2.00 TR -TE -2.00 20.00 TB 18.00 2.00 TR -TE -2.00 16.00 TB 22.00 2.00 TR -TE -2.00 14.00 TB 4.00 2.00 TR -TE -2.00 14.00 TB 12.00 2.00 TR -TE -2.00 14.00 TB 16.00 2.00 TR -TE -2.00 10.00 TB 14.00 2.00 TR -TE -2.00 8.00 TB 10.00 4.00 TR -TE -2.00 8.00 TB 16.00 8.00 TR -TE -2.00 6.00 TB 14.00 2.00 TR -TE -2.00 4.00 TB 4.00 2.00 TR -TE -2.00 4.00 TB 18.00 2.00 TR -TE -2.00 2.00 TB 10.00 4.00 TR -TE -2.00 2.00 TB 16.00 2.00 TR -TE -2.00 2.00 TB 20.00 2.00 TR -TE -1.00 1.00 0.00 setrgbcolor -2.00 22.00 TB 4.00 2.00 TR -TE -2.00 22.00 TB 18.00 4.00 TR -TE -2.00 20.00 TB 12.00 2.00 TR -TE -2.00 18.00 TB 14.00 4.00 TR -TE -2.00 18.00 TB 20.00 4.00 TR -TE -2.00 16.00 TB 4.00 2.00 TR -TE -2.00 16.00 TB 10.00 2.00 TR -TE -2.00 16.00 TB 18.00 2.00 TR -TE -2.00 14.00 TB 20.00 4.00 TR -TE -2.00 6.00 TB 4.00 2.00 TR -TE -2.00 6.00 TB 16.00 4.00 TR -TE -2.00 6.00 TB 22.00 2.00 TR -TE -2.00 4.00 TB 12.00 2.00 TR -TE -2.00 2.00 TB 14.00 2.00 TR -TE -2.00 2.00 TB 22.00 2.00 TR -TE -0.00 1.00 0.00 setrgbcolor -2.00 22.00 TB 10.00 2.00 TR -TE -2.00 20.00 TB 16.00 2.00 TR -TE -2.00 20.00 TB 20.00 4.00 TR -TE -2.00 18.00 TB 4.00 2.00 TR -TE -2.00 18.00 TB 10.00 2.00 TR -TE -2.00 16.00 TB 12.00 2.00 TR -TE -2.00 16.00 TB 20.00 2.00 TR -TE -2.00 14.00 TB 14.00 2.00 TR -TE -2.00 14.00 TB 18.00 2.00 TR -TE -2.00 10.00 TB 4.00 2.00 TR -TE -2.00 10.00 TB 16.00 2.00 TR -TE -2.00 4.00 TB 10.00 2.00 TR -TE -2.00 4.00 TB 16.00 2.00 TR -TE -2.00 4.00 TB 20.00 2.00 TR -TE -2.00 2.00 TB 18.00 2.00 TR -TE -0.00 0.00 0.00 setrgbcolor -2.00 24.00 TB 0.00 26.00 TR -TE -2.00 22.00 TB 0.00 2.00 TR -TE -22.00 2.00 TB 6.00 2.00 TR -TE -10.00 14.00 TB 24.00 2.00 TR -TE -2.00 20.00 TB 0.00 4.00 TR -TE -2.00 18.00 TB 0.00 2.00 TR -TE -2.00 16.00 TB 0.00 4.00 TR -TE -2.00 14.00 TB 0.00 2.00 TR -TE -2.00 12.00 TB 0.00 4.00 TR -TE -2.00 12.00 TB 10.00 2.00 TR -TE -2.00 12.00 TB 14.00 2.00 TR -TE -2.00 12.00 TB 18.00 2.00 TR -TE -2.00 12.00 TB 22.00 4.00 TR -TE -2.00 10.00 TB 0.00 2.00 TR -TE -10.00 2.00 TB 24.00 2.00 TR -TE -2.00 8.00 TB 0.00 4.00 TR -TE -2.00 6.00 TB 0.00 2.00 TR -TE -2.00 4.00 TB 0.00 4.00 TR -TE -2.00 2.00 TB 0.00 2.00 TR -TE -2.00 0.00 TB 0.00 26.00 TR -TE -1.00 1.00 1.00 setrgbcolor -2.00 22.00 TB 2.00 2.00 TR -TE -22.00 2.00 TB 8.00 2.00 TR -TE -2.00 18.00 TB 2.00 2.00 TR -TE -2.00 14.00 TB 2.00 2.00 TR -TE -2.00 12.00 TB 4.00 2.00 TR -TE -2.00 12.00 TB 12.00 2.00 TR -TE -2.00 12.00 TB 16.00 2.00 TR -TE -2.00 12.00 TB 20.00 2.00 TR -TE -2.00 10.00 TB 2.00 2.00 TR -TE -2.00 6.00 TB 2.00 2.00 TR -TE -2.00 2.00 TB 2.00 2.00 TR -TE +1 1 1 setrgbcolor +26 26 0 0 TR +0 1 1 setrgbcolor +2 2 22 22 TR +2 2 4 20 TR +2 2 14 20 TR +2 2 12 18 TR +2 2 18 18 TR +2 4 14 16 TR +2 2 10 14 TR +2 4 10 10 TR +2 6 18 10 TR +2 2 4 8 TR +2 2 14 8 TR +2 4 10 6 TR +2 2 20 6 TR +2 2 14 4 TR +2 2 22 4 TR +2 2 4 2 TR +1 0 1 setrgbcolor +2 6 12 22 TR +2 2 10 20 TR +2 2 18 20 TR +2 2 22 16 TR +2 2 4 14 TR +2 2 12 14 TR +2 2 16 14 TR +2 2 14 10 TR +2 4 10 8 TR +2 8 16 8 TR +2 2 14 6 TR +2 2 4 4 TR +2 2 18 4 TR +2 4 10 2 TR +2 2 16 2 TR +2 2 20 2 TR +1 1 0 setrgbcolor +2 2 4 22 TR +2 4 18 22 TR +2 2 12 20 TR +2 4 14 18 TR +2 4 20 18 TR +2 2 4 16 TR +2 2 10 16 TR +2 2 18 16 TR +2 4 20 14 TR +2 2 4 6 TR +2 4 16 6 TR +2 2 22 6 TR +2 2 12 4 TR +2 2 14 2 TR +2 2 22 2 TR +0 1 0 setrgbcolor +2 2 10 22 TR +2 2 16 20 TR +2 4 20 20 TR +2 2 4 18 TR +2 2 10 18 TR +2 2 12 16 TR +2 2 20 16 TR +2 2 14 14 TR +2 2 18 14 TR +2 2 4 10 TR +2 2 16 10 TR +2 2 10 4 TR +2 2 16 4 TR +2 2 20 4 TR +2 2 18 2 TR +0 0 0 setrgbcolor +2 26 0 24 TR +2 2 0 22 TR +22 2 6 2 TR +10 2 24 14 TR +2 4 0 20 TR +2 2 0 18 TR +2 4 0 16 TR +2 2 0 14 TR +2 4 0 12 TR +2 2 10 12 TR +2 2 14 12 TR +2 2 18 12 TR +2 4 22 12 TR +2 2 0 10 TR +10 2 24 2 TR +2 4 0 8 TR +2 2 0 6 TR +2 4 0 4 TR +2 2 0 2 TR +2 26 0 0 TR +1 1 1 setrgbcolor +2 2 2 22 TR +22 2 8 2 TR +2 2 2 18 TR +2 2 2 14 TR +2 2 4 12 TR +2 2 12 12 TR +2 2 16 12 TR +2 2 20 12 TR +2 2 2 10 TR +2 2 2 6 TR +2 2 2 2 TR diff --git a/backend/tests/data/print/svg/code128_aim.svg b/backend/tests/data/print/svg/code128_aim.svg index 65f65886..e28209e0 100644 --- a/backend/tests/data/print/svg/code128_aim.svg +++ b/backend/tests/data/print/svg/code128_aim.svg @@ -1,35 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - AIM - - + + + Zint Generated Symbol + + + + + AIM + + diff --git a/backend/tests/data/print/svg/dotcode_aim_fig7.svg b/backend/tests/data/print/svg/dotcode_aim_fig7.svg index 228f4396..fdf73779 100644 --- a/backend/tests/data/print/svg/dotcode_aim_fig7.svg +++ b/backend/tests/data/print/svg/dotcode_aim_fig7.svg @@ -1,51 +1,47 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/print/svg/maxicode_fig_2.svg b/backend/tests/data/print/svg/maxicode_fig_2.svg index f8cf54be..4ca73c67 100644 --- a/backend/tests/data/print/svg/maxicode_fig_2.svg +++ b/backend/tests/data/print/svg/maxicode_fig_2.svg @@ -1,363 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + diff --git a/backend/tests/data/print/svg/qr_v1_m.svg b/backend/tests/data/print/svg/qr_v1_m.svg index 653abe14..db40c0bc 100644 --- a/backend/tests/data/print/svg/qr_v1_m.svg +++ b/backend/tests/data/print/svg/qr_v1_m.svg @@ -1,90 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/print/svg/ultracode_a.svg b/backend/tests/data/print/svg/ultracode_a.svg index 0a27c08d..b64273b3 100644 --- a/backend/tests/data/print/svg/ultracode_a.svg +++ b/backend/tests/data/print/svg/ultracode_a.svg @@ -1,105 +1,95 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/channel_cmyk_nobg.svg b/backend/tests/data/svg/channel_cmyk_nobg.svg index 338c17f6..302f8107 100644 --- a/backend/tests/data/svg/channel_cmyk_nobg.svg +++ b/backend/tests/data/svg/channel_cmyk_nobg.svg @@ -1,24 +1,11 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - 123 - - + + + Zint Generated Symbol + + + + 123 + + diff --git a/backend/tests/data/svg/codablockf_3rows.svg b/backend/tests/data/svg/codablockf_3rows.svg index ca1cfea5..8b2b3a72 100644 --- a/backend/tests/data/svg/codablockf_3rows.svg +++ b/backend/tests/data/svg/codablockf_3rows.svg @@ -1,86 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/codablockf_comph_sep2_fgbgalpha.svg b/backend/tests/data/svg/codablockf_comph_sep2_fgbgalpha.svg index db3c5206..652bc6b5 100644 --- a/backend/tests/data/svg/codablockf_comph_sep2_fgbgalpha.svg +++ b/backend/tests/data/svg/codablockf_comph_sep2_fgbgalpha.svg @@ -1,120 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/codablockf_hvwsp2.svg b/backend/tests/data/svg/codablockf_hvwsp2.svg index 9fd729d4..433a6170 100644 --- a/backend/tests/data/svg/codablockf_hvwsp2.svg +++ b/backend/tests/data/svg/codablockf_hvwsp2.svg @@ -1,86 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/codablockf_hvwsp2_box2.svg b/backend/tests/data/svg/codablockf_hvwsp2_box2.svg index ccb234d3..58bace63 100644 --- a/backend/tests/data/svg/codablockf_hvwsp2_box2.svg +++ b/backend/tests/data/svg/codablockf_hvwsp2_box2.svg @@ -1,88 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/code128_amperands.svg b/backend/tests/data/svg/code128_amperands.svg index 1d9d15eb..40f0ed64 100644 --- a/backend/tests/data/svg/code128_amperands.svg +++ b/backend/tests/data/svg/code128_amperands.svg @@ -1,41 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <>"&' - - + + + Zint Generated Symbol + + + + + <>"&' + + diff --git a/backend/tests/data/svg/code128_egrave_bold.svg b/backend/tests/data/svg/code128_egrave_bold.svg index ab2eb658..25e2be49 100644 --- a/backend/tests/data/svg/code128_egrave_bold.svg +++ b/backend/tests/data/svg/code128_egrave_bold.svg @@ -1,47 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Égjpqy - - + + + Zint Generated Symbol + + + + + Égjpqy + + diff --git a/backend/tests/data/svg/code128_egrave_bold_box3.svg b/backend/tests/data/svg/code128_egrave_bold_box3.svg index 1da0b5d2..e89a4791 100644 --- a/backend/tests/data/svg/code128_egrave_bold_box3.svg +++ b/backend/tests/data/svg/code128_egrave_bold_box3.svg @@ -1,51 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Égjpqy - - + + + Zint Generated Symbol + + + + + Égjpqy + + diff --git a/backend/tests/data/svg/code128_egrave_bold_hvwsp2_box2.svg b/backend/tests/data/svg/code128_egrave_bold_hvwsp2_box2.svg index 24ac99a1..87ae2e19 100644 --- a/backend/tests/data/svg/code128_egrave_bold_hvwsp2_box2.svg +++ b/backend/tests/data/svg/code128_egrave_bold_hvwsp2_box2.svg @@ -1,51 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Égjpqy - - + + + Zint Generated Symbol + + + + + Égjpqy + + diff --git a/backend/tests/data/svg/code128_egrave_bold_hvwsp3.svg b/backend/tests/data/svg/code128_egrave_bold_hvwsp3.svg index f14c85f2..bf1280fd 100644 --- a/backend/tests/data/svg/code128_egrave_bold_hvwsp3.svg +++ b/backend/tests/data/svg/code128_egrave_bold_hvwsp3.svg @@ -1,47 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Égjpqy - - + + + Zint Generated Symbol + + + + + Égjpqy + + diff --git a/backend/tests/data/svg/code39_small.svg b/backend/tests/data/svg/code39_small.svg index d0660a8c..3c6b25aa 100644 --- a/backend/tests/data/svg/code39_small.svg +++ b/backend/tests/data/svg/code39_small.svg @@ -1,41 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *123* - - + + + Zint Generated Symbol + + + + + *123* + + diff --git a/backend/tests/data/svg/code49_comph_fgalpha.svg b/backend/tests/data/svg/code49_comph_fgalpha.svg index cf7a9d82..7a34262d 100644 --- a/backend/tests/data/svg/code49_comph_fgalpha.svg +++ b/backend/tests/data/svg/code49_comph_fgalpha.svg @@ -1,51 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/datamatrix_hvwsp1_bind1_dotty.svg b/backend/tests/data/svg/datamatrix_hvwsp1_bind1_dotty.svg index 2b44a900..34d6b1b3 100644 --- a/backend/tests/data/svg/datamatrix_hvwsp1_bind1_dotty.svg +++ b/backend/tests/data/svg/datamatrix_hvwsp1_bind1_dotty.svg @@ -1,251 +1,246 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/datamatrix_vwsp1_bind1_dotty.svg b/backend/tests/data/svg/datamatrix_vwsp1_bind1_dotty.svg index 2a1dd1d6..627214dc 100644 --- a/backend/tests/data/svg/datamatrix_vwsp1_bind1_dotty.svg +++ b/backend/tests/data/svg/datamatrix_vwsp1_bind1_dotty.svg @@ -1,251 +1,246 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/dbar_ltd.svg b/backend/tests/data/svg/dbar_ltd.svg index 77c2ca6d..350804f1 100644 --- a/backend/tests/data/svg/dbar_ltd.svg +++ b/backend/tests/data/svg/dbar_ltd.svg @@ -1,39 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (01)00123456789098 - - + + + Zint Generated Symbol + + + + + (01)00123456789098 + + diff --git a/backend/tests/data/svg/dpd_compliant.svg b/backend/tests/data/svg/dpd_compliant.svg index 3274c22f..ba3f9437 100644 --- a/backend/tests/data/svg/dpd_compliant.svg +++ b/backend/tests/data/svg/dpd_compliant.svg @@ -1,75 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0081 827 0998 0000 0200 28 101 276 B - - + + + Zint Generated Symbol + + + + + 0081 827 0998 0000 0200 28 101 276 B + + diff --git a/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg b/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg index de87e6ba..9c08f0cd 100644 --- a/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg +++ b/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg @@ -1,65 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9 - - - 771384 - - - 524017 - - - 12 - - + + + Zint Generated Symbol + + + + + 9 + + + 771384 + + + 524017 + + + 12 + + diff --git a/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2_gws.svg b/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2_gws.svg new file mode 100644 index 00000000..1f0c2984 --- /dev/null +++ b/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 9 + + + 771384 + + + 524017 + + + 12 + + + > + + + diff --git a/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg b/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg index 25c5acec..20227086 100644 --- a/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg +++ b/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg @@ -1,74 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9 - - - 780877 - - - 799306 - - - 54321 - - + + + Zint Generated Symbol + + + + + 9 + + + 780877 + + + 799306 + + + 54321 + + diff --git a/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2_gws.svg b/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2_gws.svg new file mode 100644 index 00000000..4f73eeb1 --- /dev/null +++ b/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 9 + + + 780877 + + + 799306 + + + 54321 + + + > + + + diff --git a/backend/tests/data/svg/ean13_cc_2addon_cca_4x4.svg b/backend/tests/data/svg/ean13_cc_2addon_cca_4x4.svg index 5d02b25d..c72e1c9c 100644 --- a/backend/tests/data/svg/ean13_cc_2addon_cca_4x4.svg +++ b/backend/tests/data/svg/ean13_cc_2addon_cca_4x4.svg @@ -1,147 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 234567 - - - 890128 - - - 12 - - + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 890128 + + + 12 + + diff --git a/backend/tests/data/svg/ean13_cc_2addon_cca_4x4_gws.svg b/backend/tests/data/svg/ean13_cc_2addon_cca_4x4_gws.svg new file mode 100644 index 00000000..39e6bceb --- /dev/null +++ b/backend/tests/data/svg/ean13_cc_2addon_cca_4x4_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 890128 + + + 12 + + + > + + + diff --git a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4.svg b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4.svg index 468a3a3e..218bc2ca 100644 --- a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4.svg +++ b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4.svg @@ -1,154 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 234567 - - - 890128 - - - 54321 - - + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 890128 + + + 54321 + + diff --git a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_gws.svg b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_gws.svg new file mode 100644 index 00000000..5abcbe29 --- /dev/null +++ b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 890128 + + + 54321 + + + > + + + diff --git a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_notext.svg b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_notext.svg index 2aa1e49d..5c7dcc7b 100644 --- a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_notext.svg +++ b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_notext.svg @@ -1,138 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/ean13_cc_cca_5x4.svg b/backend/tests/data/svg/ean13_cc_cca_5x4.svg new file mode 100644 index 00000000..3979f066 --- /dev/null +++ b/backend/tests/data/svg/ean13_cc_cca_5x4.svg @@ -0,0 +1,18 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 890128 + + + diff --git a/backend/tests/data/svg/ean13_cc_cca_5x4_gws.svg b/backend/tests/data/svg/ean13_cc_cca_5x4_gws.svg new file mode 100644 index 00000000..f21c9ad5 --- /dev/null +++ b/backend/tests/data/svg/ean13_cc_cca_5x4_gws.svg @@ -0,0 +1,21 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 890128 + + + > + + + diff --git a/backend/tests/data/svg/ean13_ggs_5.2.2.1-1.svg b/backend/tests/data/svg/ean13_ggs_5.2.2.1-1.svg new file mode 100644 index 00000000..ff86ee1a --- /dev/null +++ b/backend/tests/data/svg/ean13_ggs_5.2.2.1-1.svg @@ -0,0 +1,18 @@ + + + + Zint Generated Symbol + + + + + 9 + + + 501101 + + + 531000 + + + diff --git a/backend/tests/data/svg/ean13_ggs_5.2.2.1-1_gws.svg b/backend/tests/data/svg/ean13_ggs_5.2.2.1-1_gws.svg new file mode 100644 index 00000000..128706c0 --- /dev/null +++ b/backend/tests/data/svg/ean13_ggs_5.2.2.1-1_gws.svg @@ -0,0 +1,21 @@ + + + + Zint Generated Symbol + + + + + 9 + + + 501101 + + + 531000 + + + > + + + diff --git a/backend/tests/data/svg/ean13_ggs_5.2.2.1-1_gws_embed.svg b/backend/tests/data/svg/ean13_ggs_5.2.2.1-1_gws_embed.svg new file mode 100644 index 00000000..972686d4 --- /dev/null +++ b/backend/tests/data/svg/ean13_ggs_5.2.2.1-1_gws_embed.svg @@ -0,0 +1,22 @@ + + + + Zint Generated Symbol + + + + + + 9 + + + 501101 + + + 531000 + + + > + + + diff --git a/backend/tests/data/svg/ean2.svg b/backend/tests/data/svg/ean2.svg index e4dc03a4..c2613385 100644 --- a/backend/tests/data/svg/ean2.svg +++ b/backend/tests/data/svg/ean2.svg @@ -1,23 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - 12 - - + + + Zint Generated Symbol + + + + + 12 + + diff --git a/backend/tests/data/svg/ean2_gws.svg b/backend/tests/data/svg/ean2_gws.svg new file mode 100644 index 00000000..c794352f --- /dev/null +++ b/backend/tests/data/svg/ean2_gws.svg @@ -0,0 +1,15 @@ + + + + Zint Generated Symbol + + + + + 12 + + + > + + + diff --git a/backend/tests/data/svg/ean5.svg b/backend/tests/data/svg/ean5.svg index 2c01ac0a..5a079b56 100644 --- a/backend/tests/data/svg/ean5.svg +++ b/backend/tests/data/svg/ean5.svg @@ -1,32 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - 12345 - - + + + Zint Generated Symbol + + + + + 12345 + + diff --git a/backend/tests/data/svg/ean5_gws.svg b/backend/tests/data/svg/ean5_gws.svg new file mode 100644 index 00000000..b0b972b4 --- /dev/null +++ b/backend/tests/data/svg/ean5_gws.svg @@ -0,0 +1,15 @@ + + + + Zint Generated Symbol + + + + + 12345 + + + > + + + diff --git a/backend/tests/data/svg/ean8_2addon.svg b/backend/tests/data/svg/ean8_2addon.svg index abdb9f42..3c71983d 100644 --- a/backend/tests/data/svg/ean8_2addon.svg +++ b/backend/tests/data/svg/ean8_2addon.svg @@ -1,53 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1234 - - - 5670 - - - 12 - - + + + Zint Generated Symbol + + + + + 1234 + + + 5670 + + + 12 + + diff --git a/backend/tests/data/svg/ean8_2addon_gws.svg b/backend/tests/data/svg/ean8_2addon_gws.svg new file mode 100644 index 00000000..fa8af465 --- /dev/null +++ b/backend/tests/data/svg/ean8_2addon_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + < + + + 1234 + + + 5670 + + + 12 + + + > + + + diff --git a/backend/tests/data/svg/ean8_5addon.svg b/backend/tests/data/svg/ean8_5addon.svg index 00cda891..ed273022 100644 --- a/backend/tests/data/svg/ean8_5addon.svg +++ b/backend/tests/data/svg/ean8_5addon.svg @@ -1,62 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1234 - - - 5670 - - - 12345 - - + + + Zint Generated Symbol + + + + + 1234 + + + 5670 + + + 12345 + + diff --git a/backend/tests/data/svg/ean8_5addon_gws.svg b/backend/tests/data/svg/ean8_5addon_gws.svg new file mode 100644 index 00000000..df953cfd --- /dev/null +++ b/backend/tests/data/svg/ean8_5addon_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + < + + + 1234 + + + 5670 + + + 12345 + + + > + + + diff --git a/backend/tests/data/svg/ean8_cc_2addon_cca_4x3.svg b/backend/tests/data/svg/ean8_cc_2addon_cca_4x3.svg index e1fd6118..fcd362a3 100644 --- a/backend/tests/data/svg/ean8_cc_2addon_cca_4x3.svg +++ b/backend/tests/data/svg/ean8_cc_2addon_cca_4x3.svg @@ -1,116 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9876 - - - 5430 - - - 65 - - + + + Zint Generated Symbol + + + + + 9876 + + + 5430 + + + 65 + + diff --git a/backend/tests/data/svg/ean8_cc_2addon_cca_4x3_gws.svg b/backend/tests/data/svg/ean8_cc_2addon_cca_4x3_gws.svg new file mode 100644 index 00000000..13b76fc4 --- /dev/null +++ b/backend/tests/data/svg/ean8_cc_2addon_cca_4x3_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + < + + + 9876 + + + 5430 + + + 65 + + + > + + + diff --git a/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3.svg b/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3.svg index b557acc1..e9339666 100644 --- a/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3.svg +++ b/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3.svg @@ -1,182 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9876 - - - 5430 - - - 74083 - - + + + Zint Generated Symbol + + + + + 9876 + + + 5430 + + + 74083 + + diff --git a/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3_gws.svg b/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3_gws.svg new file mode 100644 index 00000000..83d23ee8 --- /dev/null +++ b/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + < + + + 9876 + + + 5430 + + + 74083 + + + > + + + diff --git a/backend/tests/data/svg/ean8_gss_5.2.2.2-1.svg b/backend/tests/data/svg/ean8_gss_5.2.2.2-1.svg new file mode 100644 index 00000000..ae0c875a --- /dev/null +++ b/backend/tests/data/svg/ean8_gss_5.2.2.2-1.svg @@ -0,0 +1,15 @@ + + + + Zint Generated Symbol + + + + + 9501 + + + 2346 + + + diff --git a/backend/tests/data/svg/ean8_gss_5.2.2.2-1_gws.svg b/backend/tests/data/svg/ean8_gss_5.2.2.2-1_gws.svg new file mode 100644 index 00000000..d54d669a --- /dev/null +++ b/backend/tests/data/svg/ean8_gss_5.2.2.2-1_gws.svg @@ -0,0 +1,21 @@ + + + + Zint Generated Symbol + + + + + < + + + 9501 + + + 2346 + + + > + + + diff --git a/backend/tests/data/svg/gs1_128_cc_fig12.svg b/backend/tests/data/svg/gs1_128_cc_fig12.svg index 3fb65814..287d2e19 100644 --- a/backend/tests/data/svg/gs1_128_cc_fig12.svg +++ b/backend/tests/data/svg/gs1_128_cc_fig12.svg @@ -1,252 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (00)030123456789012340 - - + + + Zint Generated Symbol + + + + + (00)030123456789012340 + + diff --git a/backend/tests/data/svg/imail_height7.75.svg b/backend/tests/data/svg/imail_height7.75.svg index c8f29418..9b078a18 100644 --- a/backend/tests/data/svg/imail_height7.75.svg +++ b/backend/tests/data/svg/imail_height7.75.svg @@ -1,77 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/maxicode_box2.svg b/backend/tests/data/svg/maxicode_box2.svg index 67911de3..0575314e 100644 --- a/backend/tests/data/svg/maxicode_box2.svg +++ b/backend/tests/data/svg/maxicode_box2.svg @@ -1,381 +1,13 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + diff --git a/backend/tests/data/svg/maxicode_fgbg_rotate_90.svg b/backend/tests/data/svg/maxicode_fgbg_rotate_90.svg index 8e5b07e9..5d179f32 100644 --- a/backend/tests/data/svg/maxicode_fgbg_rotate_90.svg +++ b/backend/tests/data/svg/maxicode_fgbg_rotate_90.svg @@ -1,377 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + diff --git a/backend/tests/data/svg/maxicode_vwsp1_bind1.svg b/backend/tests/data/svg/maxicode_vwsp1_bind1.svg index d4d10d24..edc55ed1 100644 --- a/backend/tests/data/svg/maxicode_vwsp1_bind1.svg +++ b/backend/tests/data/svg/maxicode_vwsp1_bind1.svg @@ -1,379 +1,13 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + diff --git a/backend/tests/data/svg/pdf417_height5.svg b/backend/tests/data/svg/pdf417_height5.svg index 1a7262ee..ad2f85bd 100644 --- a/backend/tests/data/svg/pdf417_height5.svg +++ b/backend/tests/data/svg/pdf417_height5.svg @@ -1,163 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/postnet_zip.svg b/backend/tests/data/svg/postnet_zip.svg index cef9a9d8..3a1b3db0 100644 --- a/backend/tests/data/svg/postnet_zip.svg +++ b/backend/tests/data/svg/postnet_zip.svg @@ -1,44 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/telepen_height0.4_rotate_180.svg b/backend/tests/data/svg/telepen_height0.4_rotate_180.svg index 04849e66..c7a485e4 100644 --- a/backend/tests/data/svg/telepen_height0.4_rotate_180.svg +++ b/backend/tests/data/svg/telepen_height0.4_rotate_180.svg @@ -1,38 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - A - - + + + Zint Generated Symbol + + + + + A + + diff --git a/backend/tests/data/svg/ultra_fgbg_hvwsp2_box3.svg b/backend/tests/data/svg/ultra_fgbg_hvwsp2_box3.svg index 4f4b84b9..32bb8abb 100644 --- a/backend/tests/data/svg/ultra_fgbg_hvwsp2_box3.svg +++ b/backend/tests/data/svg/ultra_fgbg_hvwsp2_box3.svg @@ -1,181 +1,172 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5.svg b/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5.svg index 80ce272a..a57da333 100644 --- a/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5.svg +++ b/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5.svg @@ -1,69 +1,24 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 12345 - - - 67890 - - - 5 - - - 24 - - + + + Zint Generated Symbol + + + + + 0 + + + 12345 + + + 67890 + + + 5 + + + 24 + + diff --git a/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5_gws.svg b/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5_gws.svg new file mode 100644 index 00000000..e9f34f08 --- /dev/null +++ b/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5_gws.svg @@ -0,0 +1,27 @@ + + + + Zint Generated Symbol + + + + + 0 + + + 12345 + + + 67890 + + + 5 + + + 24 + + + > + + + diff --git a/backend/tests/data/svg/upca_5addon.svg b/backend/tests/data/svg/upca_5addon.svg index b1a4caf8..1b9d410a 100644 --- a/backend/tests/data/svg/upca_5addon.svg +++ b/backend/tests/data/svg/upca_5addon.svg @@ -1,78 +1,24 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 - - - 14141 - - - 23441 - - - 7 - - - 12345 - - + + + Zint Generated Symbol + + + + + 6 + + + 14141 + + + 23441 + + + 7 + + + 12345 + + diff --git a/backend/tests/data/svg/upca_5addon_bind3.svg b/backend/tests/data/svg/upca_5addon_bind3.svg index 868a20ef..3c4f5c5a 100644 --- a/backend/tests/data/svg/upca_5addon_bind3.svg +++ b/backend/tests/data/svg/upca_5addon_bind3.svg @@ -1,80 +1,24 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 - - - 14141 - - - 23441 - - - 7 - - - 12345 - - + + + Zint Generated Symbol + + + + + 6 + + + 14141 + + + 23441 + + + 7 + + + 12345 + + diff --git a/backend/tests/data/svg/upca_5addon_gws.svg b/backend/tests/data/svg/upca_5addon_gws.svg new file mode 100644 index 00000000..f87a5b04 --- /dev/null +++ b/backend/tests/data/svg/upca_5addon_gws.svg @@ -0,0 +1,27 @@ + + + + Zint Generated Symbol + + + + + 6 + + + 14141 + + + 23441 + + + 7 + + + 12345 + + + > + + + diff --git a/backend/tests/data/svg/upca_5addon_small_bold.svg b/backend/tests/data/svg/upca_5addon_small_bold.svg index d401db48..92c7c76f 100644 --- a/backend/tests/data/svg/upca_5addon_small_bold.svg +++ b/backend/tests/data/svg/upca_5addon_small_bold.svg @@ -1,78 +1,24 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 - - - 14141 - - - 23441 - - - 7 - - - 12345 - - + + + Zint Generated Symbol + + + + + 6 + + + 14141 + + + 23441 + + + 7 + + + 12345 + + diff --git a/backend/tests/data/svg/upca_cc_2addon_cca_3x4.svg b/backend/tests/data/svg/upca_cc_2addon_cca_3x4.svg index 1844c6df..a145e896 100644 --- a/backend/tests/data/svg/upca_cc_2addon_cca_3x4.svg +++ b/backend/tests/data/svg/upca_cc_2addon_cca_3x4.svg @@ -1,134 +1,24 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 23456 - - - 78901 - - - 2 - - - 12 - - + + + Zint Generated Symbol + + + + + 1 + + + 23456 + + + 78901 + + + 2 + + + 12 + + diff --git a/backend/tests/data/svg/upca_cc_2addon_cca_3x4_gws.svg b/backend/tests/data/svg/upca_cc_2addon_cca_3x4_gws.svg new file mode 100644 index 00000000..d49f5a6d --- /dev/null +++ b/backend/tests/data/svg/upca_cc_2addon_cca_3x4_gws.svg @@ -0,0 +1,27 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 23456 + + + 78901 + + + 2 + + + 12 + + + > + + + diff --git a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4.svg b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4.svg index 6b7fc944..9bc64dbf 100644 --- a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4.svg +++ b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4.svg @@ -1,158 +1,24 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 23456 - - - 78901 - - - 2 - - - 12121 - - + + + Zint Generated Symbol + + + + + 1 + + + 23456 + + + 78901 + + + 2 + + + 12121 + + diff --git a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_bind3.svg b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_bind3.svg index 064f1f72..d7169865 100644 --- a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_bind3.svg +++ b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_bind3.svg @@ -1,160 +1,24 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 23456 - - - 78901 - - - 2 - - - 12121 - - + + + Zint Generated Symbol + + + + + 1 + + + 23456 + + + 78901 + + + 2 + + + 12121 + + diff --git a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_gws.svg b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_gws.svg new file mode 100644 index 00000000..fc1e6b40 --- /dev/null +++ b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_gws.svg @@ -0,0 +1,27 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 23456 + + + 78901 + + + 2 + + + 12121 + + + > + + + diff --git a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_notext.svg b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_notext.svg index 622f7acf..9a491e10 100644 --- a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_notext.svg +++ b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_notext.svg @@ -1,138 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/upce_2addon.svg b/backend/tests/data/svg/upce_2addon.svg index 34085aef..e90e7082 100644 --- a/backend/tests/data/svg/upce_2addon.svg +++ b/backend/tests/data/svg/upce_2addon.svg @@ -1,52 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 234567 - - - 0 - - - 12 - - + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 0 + + + 12 + + diff --git a/backend/tests/data/svg/upce_2addon_gws.svg b/backend/tests/data/svg/upce_2addon_gws.svg new file mode 100644 index 00000000..cbcc01bd --- /dev/null +++ b/backend/tests/data/svg/upce_2addon_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 0 + + + 12 + + + > + + + diff --git a/backend/tests/data/svg/upce_5addon.svg b/backend/tests/data/svg/upce_5addon.svg index 0d70f408..2386e072 100644 --- a/backend/tests/data/svg/upce_5addon.svg +++ b/backend/tests/data/svg/upce_5addon.svg @@ -1,61 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 234567 - - - 0 - - - 12345 - - + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 0 + + + 12345 + + diff --git a/backend/tests/data/svg/upce_5addon_notext.svg b/backend/tests/data/svg/upce_5addon_notext.svg index c6fe09fc..3f3b3f6f 100644 --- a/backend/tests/data/svg/upce_5addon_notext.svg +++ b/backend/tests/data/svg/upce_5addon_notext.svg @@ -1,45 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/svg/upce_5addon_small.svg b/backend/tests/data/svg/upce_5addon_small.svg index 270facc7..cc2f1161 100644 --- a/backend/tests/data/svg/upce_5addon_small.svg +++ b/backend/tests/data/svg/upce_5addon_small.svg @@ -1,61 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 234567 - - - 0 - - - 12345 - - + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 0 + + + 12345 + + diff --git a/backend/tests/data/svg/upce_5addon_small_gws.svg b/backend/tests/data/svg/upce_5addon_small_gws.svg new file mode 100644 index 00000000..f6950890 --- /dev/null +++ b/backend/tests/data/svg/upce_5addon_small_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 234567 + + + 0 + + + 12345 + + + > + + + diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2.svg index b60c1d62..27c8a404 100644 --- a/backend/tests/data/svg/upce_cc_2addon_cca_5x2.svg +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2.svg @@ -1,107 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 654321 - - - 7 - - - 89 - - + + + Zint Generated Symbol + + + + + 0 + + + 654321 + + + 7 + + + 89 + + diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg index dbfd11a4..dd7f8490 100644 --- a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg @@ -1,107 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 654321 - - - 7 - - - 89 - - + + + Zint Generated Symbol + + + + + 0 + + + 654321 + + + 7 + + + 89 + + diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_gws.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_gws.svg new file mode 100644 index 00000000..ea987f93 --- /dev/null +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 0 + + + 654321 + + + 7 + + + 89 + + + > + + + diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_nobg.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_nobg.svg index eba80d57..1e5193aa 100644 --- a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_nobg.svg +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_nobg.svg @@ -1,106 +1,20 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 654321 - - - 7 - - - 89 - - + + + Zint Generated Symbol + + + + 0 + + + 654321 + + + 7 + + + 89 + + diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_rotate_270.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_rotate_270.svg index 41a9fc0a..d7d29ab7 100644 --- a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_rotate_270.svg +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_rotate_270.svg @@ -1,107 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 654321 - - - 7 - - - 89 - - + + + Zint Generated Symbol + + + + + 0 + + + 654321 + + + 7 + + + 89 + + diff --git a/backend/tests/data/svg/upce_cc_5addon_ccb_8x2.svg b/backend/tests/data/svg/upce_cc_5addon_ccb_8x2.svg index 38f86a32..d0a78c9f 100644 --- a/backend/tests/data/svg/upce_cc_5addon_ccb_8x2.svg +++ b/backend/tests/data/svg/upce_cc_5addon_ccb_8x2.svg @@ -1,142 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 876543 - - - 5 - - - 56789 - - + + + Zint Generated Symbol + + + + + 1 + + + 876543 + + + 5 + + + 56789 + + diff --git a/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_gws.svg b/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_gws.svg new file mode 100644 index 00000000..ce08ca2b --- /dev/null +++ b/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 876543 + + + 5 + + + 56789 + + + > + + + diff --git a/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_notext.svg b/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_notext.svg index 639033fc..9cbb6a15 100644 --- a/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_notext.svg +++ b/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_notext.svg @@ -1,126 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/backend/tests/data/tif/ean8_gss_5.2.2.2-1.tif b/backend/tests/data/tif/ean8_gss_5.2.2.2-1.tif new file mode 100644 index 00000000..4296e26c Binary files /dev/null and b/backend/tests/data/tif/ean8_gss_5.2.2.2-1.tif differ diff --git a/backend/tests/data/tif/ean8_gss_5.2.2.2-1_gws.tif b/backend/tests/data/tif/ean8_gss_5.2.2.2-1_gws.tif new file mode 100644 index 00000000..8dd54d0a Binary files /dev/null and b/backend/tests/data/tif/ean8_gss_5.2.2.2-1_gws.tif differ diff --git a/backend/tests/test_code128.c b/backend/tests/test_code128.c index 2e9422f1..4894a2ae 100644 --- a/backend/tests/test_code128.c +++ b/backend/tests/test_code128.c @@ -71,11 +71,11 @@ static void test_large(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char data_buf[4096]; - testStart("test_large"); + testStartSymbol("test_large", &symbol); for (i = 0; i < data_size; i++) { @@ -106,79 +106,6 @@ static void test_large(const testCtx *const p_ctx) { testFinish(); } -INTERNAL int c128_hrt_cpy_iso8859_1_test(struct zint_symbol *symbol, const unsigned char source[], const int length); - -static void test_hrt_cpy_iso8859_1(const testCtx *const p_ctx) { - int debug = p_ctx->debug; - - struct item { - char *data; - int length; - int ret; - char *expected; - char *comment; - }; - /* - NBSP U+00A0 (\240, 160), UTF-8 C2A0 (\302\240) - ¡ U+00A1 (\241, 161), UTF-8 C2A1 (\302\241) - é U+00E9 (\351, 233), UTF-8 C3A9 - */ - /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ - struct item data[] = { - /* 0*/ { "", -1, 0, "", "" }, - /* 1*/ { "abc", -1, 3, "abc", "" }, - /* 2*/ { "\000A\001B\002\036\037C ~\177", 11, 11, " A B C ~ ", "" }, - /* 3*/ { "~\177\200\201\237\240", -1, 7, "~ \302\240", "" }, - /* 4*/ { "\241\242\243\244\257\260", -1, 12, "¡¢£¤¯°", "" }, - /* 5*/ { "\276\277\300\337\377", -1, 10, "¾¿Àßÿ", "" }, - /* 6*/ { "\351", -1, 2, "é", "" }, - /* 7*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 126, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "63 \241" }, - /* 8*/ { "a\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 127, "a¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "a + 63 \241" }, - /* 9*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241a", -1, 127, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a", "63 \241 + a" }, - /* 10*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 126, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "64 \241 (truncated)" }, - /* 11*/ { "a\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 127, "a¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "a + 64 \241 (truncated)" }, - /* 12*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241a", -1, 126, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "64 \241 + a (truncated)" }, - /* 13*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 126, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "65 \241 (truncated)" }, - /* 14*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "63 \351" }, - /* 15*/ { "a\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 127, "aééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "a + 63 \351" }, - /* 16*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351a", -1, 127, "éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééa", "63 \351 + a" }, - /* 17*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "64 \351 (truncated)" }, - /* 18*/ { "a\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 127, "aééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "a + 64 \351 (truncated)" }, - /* 19*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351a", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "64 \351 + a (truncated)" }, - /* 20*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 126, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "65 \351 (truncated)" }, - /* 21*/ { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", -1, 127, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "128 A (truncated)" }, - }; - int data_size = ARRAY_SIZE(data); - int i, length, ret; - - struct zint_symbol symbol = {0}; - - testStart("test_hrt_cpy_iso8859_1"); - - symbol.debug = debug; - - for (i = 0; i < data_size; i++) { - int j; - - if (testContinue(p_ctx, i)) continue; - - length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length; - - ret = c128_hrt_cpy_iso8859_1_test(&symbol, (unsigned char *) data[i].data, length); - if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { - for (j = 0; j < ret; j++) { - fprintf(stderr, "symbol.text[%d] %2X\n", j, symbol.text[j]); - } - } - assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret); - assert_equal(ret, (int) ustrlen(symbol.text), "i:%d ret %d != strlen %d\n", i, ret, (int) ustrlen(symbol.text)); - assert_nonzero(testUtilIsValidUTF8(symbol.text, (int) ustrlen(symbol.text)), "i:%d testUtilIsValidUTF8(%s) != 1\n", i, symbol.text); - assert_zero(strcmp((char *) symbol.text, data[i].expected), "i:%d symbol.text (%s) != expected (%s)\n", i, symbol.text, data[i].expected); - } - - testFinish(); -} - static void test_hrt(const testCtx *const p_ctx) { int debug = p_ctx->debug; @@ -241,9 +168,9 @@ static void test_hrt(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_hrt"); + testStartSymbol("test_hrt", &symbol); for (i = 0; i < data_size; i++) { @@ -290,11 +217,11 @@ static void test_reader_init(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; - testStart("test_reader_init"); + testStartSymbol("test_reader_init", &symbol); for (i = 0; i < data_size; i++) { @@ -435,7 +362,7 @@ static void test_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; char cmp_buf[8192]; @@ -444,7 +371,7 @@ static void test_input(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ - testStart("test_input"); + testStartSymbol("test_input", &symbol); for (i = 0; i < data_size; i++) { @@ -544,11 +471,11 @@ static void test_ean128_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; - testStart("test_ean128_input"); + testStartSymbol("test_ean128_input", &symbol); for (i = 0; i < data_size; i++) { @@ -602,11 +529,11 @@ static void test_hibc_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; - testStart("test_hibc_input"); + testStartSymbol("test_hibc_input", &symbol); for (i = 0; i < data_size; i++) { @@ -655,11 +582,11 @@ static void test_ean14_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; - testStart("test_ean14_input"); + testStartSymbol("test_ean14_input", &symbol); for (i = 0; i < data_size; i++) { @@ -740,11 +667,11 @@ static void test_dpd_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; - testStart("test_dpd_input"); + testStartSymbol("test_dpd_input", &symbol); for (i = 0; i < data_size; i++) { @@ -813,12 +740,12 @@ static void test_upu_s10_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; char escaped2[1024]; - testStart("test_upu_s10_input"); + testStartSymbol("test_upu_s10_input", &symbol); for (i = 0; i < data_size; i++) { @@ -1026,7 +953,7 @@ static void test_encode(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; char cmp_buf[8192]; @@ -1035,7 +962,7 @@ static void test_encode(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ - testStart("test_encode"); + testStartSymbol("test_encode", &symbol); for (i = 0; i < data_size; i++) { @@ -1202,7 +1129,6 @@ int main(int argc, char *argv[]) { testFunction funcs[] = { /* name, func */ { "test_large", test_large }, - { "test_hrt_cpy_iso8859_1", test_hrt_cpy_iso8859_1 }, { "test_hrt", test_hrt }, { "test_reader_init", test_reader_init }, { "test_input", test_input }, diff --git a/backend/tests/test_code16k.c b/backend/tests/test_code16k.c index cf7631eb..34221427 100644 --- a/backend/tests/test_code16k.c +++ b/backend/tests/test_code16k.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2020-2022 Robin Stuart + Copyright (C) 2020-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -47,19 +47,20 @@ static void test_large(const testCtx *const p_ctx) { /* 1*/ { "A", 78, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 2*/ { "0", 154, 0, 16, 70 }, /* BS EN 12323:2005 4.1 (l) */ /* 3*/ { "0", 155, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 4*/ { "0", 161, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 5*/ { "\001", 77, 0, 16, 70 }, - /* 6*/ { "\001", 78, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 7*/ { "\377", 38, 0, 16, 70 }, /* FNC4 + char for each so half 77 as not using double latch */ - /* 8*/ { "\377", 39, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 4*/ { "0", 153, ZINT_ERROR_TOO_LONG, -1, -1 }, /* Fails due to odd length */ + /* 5*/ { "0", 161, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 6*/ { "\001", 77, 0, 16, 70 }, + /* 7*/ { "\001", 78, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 8*/ { "\377", 38, 0, 16, 70 }, /* FNC4 + char for each so half 77 as not using double latch */ + /* 9*/ { "\377", 39, ZINT_ERROR_TOO_LONG, -1, -1 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char data_buf[4096]; - testStart("test_large"); + testStartSymbol("test_large", &symbol); for (i = 0; i < data_size; i++) { @@ -108,11 +109,11 @@ static void test_reader_init(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; - testStart("test_reader_init"); + testStartSymbol("test_reader_init", &symbol); for (i = 0; i < data_size; i++) { @@ -219,7 +220,7 @@ static void test_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; char cmp_buf[8192]; @@ -228,7 +229,7 @@ static void test_input(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ - testStart("test_input"); + testStartSymbol("test_input", &symbol); for (i = 0; i < data_size; i++) { @@ -348,7 +349,7 @@ static void test_encode(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; char cmp_buf[8192]; @@ -357,7 +358,7 @@ static void test_encode(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ - testStart("test_encode"); + testStartSymbol("test_encode", &symbol); for (i = 0; i < data_size; i++) { diff --git a/backend/tests/test_common.c b/backend/tests/test_common.c index e5c2e43d..52df6d26 100644 --- a/backend/tests/test_common.c +++ b/backend/tests/test_common.c @@ -51,6 +51,110 @@ static int is_sane_orig(const char test_string[], const unsigned char source[], return 0; } +static void test_to_int(const testCtx *const p_ctx) { + + struct item { + char *data; + int length; + int ret; + }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { "", -1, 0 }, + /* 1*/ { "1234", -1, 1234 }, + /* 2*/ { "-1234", -1, -1 }, + /* 3*/ { "A123A", -1, -1 }, + /* 4*/ { " ", -1, -1 }, + /* 5*/ { "999999999", -1, 999999999 }, + }; + int data_size = ARRAY_SIZE(data); + int i, length, ret; + + testStart("test_to_int"); + + for (i = 0; i < data_size; i++) { + + if (testContinue(p_ctx, i)) continue; + + length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length; + + ret = to_int((const unsigned char *) data[i].data, length); + assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret); + } + + testFinish(); +} + +static void test_to_upper(const testCtx *const p_ctx) { + + struct item { + char *data; + int length; + char *expected; + }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { "", -1, "" }, + /* 1*/ { "abcefghijklmnopqrstuvwxyz", -1, "ABCEFGHIJKLMNOPQRSTUVWXYZ" }, + /* 2*/ { ".a[b`cA~B\177C;\200", -1, ".A[B`CA~B\177C;\200" }, + /* 3*/ { "é", -1, "é" }, + }; + int data_size = ARRAY_SIZE(data); + int i, length; + + unsigned char buf[512]; + + testStart("test_to_upper"); + + for (i = 0; i < data_size; i++) { + + if (testContinue(p_ctx, i)) continue; + + length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length; + + buf[0] = '\0'; + memcpy(buf, data[i].data, length); + buf[length] = '\0'; + + to_upper(buf, length); + assert_zero(strcmp((const char *) buf, data[i].expected), "i:%d strcmp(%s,%s) != 0\n", i, buf, data[i].expected); + } + + testFinish(); +} + +static void test_chr_cnt(const testCtx *const p_ctx) { + + struct item { + char *data; + int length; + char c; + int ret; + }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { "", -1, 'a', 0 }, + /* 1*/ { "BDAaED", -1, 'a', 1 }, + /* 1*/ { "aBDAaaaEaDa", -1, 'a', 6 }, + }; + int data_size = ARRAY_SIZE(data); + int i, length, ret; + + testStart("test_chr_cnt"); + + for (i = 0; i < data_size; i++) { + + if (testContinue(p_ctx, i)) continue; + + length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length; + + ret = chr_cnt((const unsigned char *) data[i].data, length, data[i].c); + assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret); + } + + testFinish(); +} + static void test_is_sane(const testCtx *const p_ctx) { struct item { @@ -229,6 +333,42 @@ static void test_is_sane_lookup(const testCtx *const p_ctx) { testFinish(); } +static void test_cnt_digits(const testCtx *const p_ctx) { + + struct item { + char *data; + int length; + int position; + int max; + int ret; + }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { "", -1, 0, -1, 0 }, + /* 1*/ { "asdf1", -1, 0, -1, 0 }, + /* 2*/ { "asdf1asdf", -1, 4, -1, 1 }, + /* 3*/ { "a12345asdf", -1, 1, -1, 5 }, + /* 4*/ { "a12345asdf", -1, 1, 4, 4}, + /* 5*/ { "a1234", -1, 1, 5, 4}, + }; + int data_size = ARRAY_SIZE(data); + int i, length, ret; + + testStart("test_cnt_digits"); + + for (i = 0; i < data_size; i++) { + + if (testContinue(p_ctx, i)) continue; + + length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length; + + ret = cnt_digits((const unsigned char *) data[i].data, length, data[i].position, data[i].max); + assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret); + } + + testFinish(); +} + static void test_is_valid_utf8(const testCtx *const p_ctx) { struct item { @@ -320,6 +460,77 @@ static void test_utf8_to_unicode(const testCtx *const p_ctx) { testFinish(); } +/* Note transferred from "test_code128.c" */ +static void test_hrt_cpy_iso8859_1(const testCtx *const p_ctx) { + int debug = p_ctx->debug; + + struct item { + char *data; + int length; + int ret; + char *expected; + char *comment; + }; + /* + NBSP U+00A0 (\240, 160), UTF-8 C2A0 (\302\240) + ¡ U+00A1 (\241, 161), UTF-8 C2A1 (\302\241) + é U+00E9 (\351, 233), UTF-8 C3A9 + */ + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { "", -1, 0, "", "" }, + /* 1*/ { "abc", -1, 0, "abc", "" }, + /* 2*/ { "\000A\001B\002\036\037C ~\177", 11, 0, " A B C ~ ", "" }, + /* 3*/ { "~\177\200\201\237\240", -1, 0, "~ \302\240", "" }, + /* 4*/ { "\241\242\243\244\257\260", -1, 0, "¡¢£¤¯°", "" }, + /* 5*/ { "\276\277\300\337\377", -1, 0, "¾¿Àßÿ", "" }, + /* 6*/ { "\351", -1, 0, "é", "" }, + /* 7*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 0, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "79 \241" }, + /* 8*/ { "a\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 0, "a¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "a + 79 \241" }, + /* 9*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241a", -1, 0, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a", "79 \241 + a" }, + /* 10*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 1, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "80 \241 (truncated)" }, + /* 11*/ { "a\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 1, "a¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "a + 80 \241 (truncated)" }, + /* 12*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241a", -1, 1, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "80 \241 + a (truncated)" }, + /* 13*/ { "\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241\241", -1, 1, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", "81 \241 (truncated)" }, + /* 14*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 0, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "79 \351" }, + /* 15*/ { "a\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 0, "aééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "a + 79 \351" }, + /* 16*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351a", -1, 0, "éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééa", "79 \351 + a" }, + /* 17*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 1, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "80 \351 (truncated)" }, + /* 18*/ { "a\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 1, "aééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "a + 80 \351 (truncated)" }, + /* 19*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351a", -1, 1, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "80 \351 + a (truncated)" }, + /* 20*/ { "\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351\351", -1, 1, "ééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé", "81 \351 (truncated)" }, + /* 21*/ { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", -1, 1, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "160 A (truncated)" }, + }; + int data_size = ARRAY_SIZE(data); + int i, length, ret; + + struct zint_symbol symbol = {0}; + + testStart("test_hrt_cpy_iso8859_1"); + + symbol.debug = debug; + + for (i = 0; i < data_size; i++) { + int j; + + if (testContinue(p_ctx, i)) continue; + + length = data[i].length == -1 ? (int) strlen(data[i].data) : data[i].length; + + ret = hrt_cpy_iso8859_1(&symbol, (unsigned char *) data[i].data, length); + if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { + for (j = 0; j < ret; j++) { + fprintf(stderr, "symbol.text[%d] %2X\n", j, symbol.text[j]); + } + } + assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret); + assert_nonzero(testUtilIsValidUTF8(symbol.text, (int) ustrlen(symbol.text)), "i:%d testUtilIsValidUTF8(%s) != 1\n", i, symbol.text); + assert_zero(strcmp((char *) symbol.text, data[i].expected), "i:%d symbol.text (%s) != expected (%s)\n", i, symbol.text, data[i].expected); + } + + testFinish(); +} + static void test_set_height(const testCtx *const p_ctx) { int debug = p_ctx->debug; @@ -420,10 +631,15 @@ static void test_debug_test_codeword_dump_int(const testCtx *const p_ctx) { int main(int argc, char *argv[]) { testFunction funcs[] = { /* name, func */ + { "test_chr_cnt", test_chr_cnt }, + { "test_to_int", test_to_int }, + { "test_to_upper", test_to_upper }, { "test_is_sane", test_is_sane }, { "test_is_sane_lookup", test_is_sane_lookup }, + { "test_cnt_digits", test_cnt_digits }, { "test_is_valid_utf8", test_is_valid_utf8 }, { "test_utf8_to_unicode", test_utf8_to_unicode }, + { "test_hrt_cpy_iso8859_1", test_hrt_cpy_iso8859_1 }, { "test_set_height", test_set_height }, { "test_debug_test_codeword_dump_int", test_debug_test_codeword_dump_int }, }; diff --git a/backend/tests/test_composite.c b/backend/tests/test_composite.c index 9816bcd4..c5d74b53 100644 --- a/backend/tests/test_composite.c +++ b/backend/tests/test_composite.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2019-2022 Robin Stuart + Copyright (C) 2019-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -53,31 +53,31 @@ static void test_eanx_leading_zeroes(const testCtx *const p_ctx) { /* 5*/ { BARCODE_EANX_CC, "123456", "[21]A12345678", 0, 8, 72 }, /* 6*/ { BARCODE_EANX_CC, "1234567", "[21]A12345678", 0, 8, 72 }, /* 7*/ { BARCODE_EANX_CC, "12345678", "[21]A12345678", 0, 7, 99 }, /* EAN-13 */ - /* 8*/ { BARCODE_EANX_CC, "1+12", "[21]A12345678", 0, 8, 99 }, /* EAN-8 + EAN-2 */ - /* 9*/ { BARCODE_EANX_CC, "12+12", "[21]A12345678", 0, 8, 99 }, - /*10*/ { BARCODE_EANX_CC, "123+12", "[21]A12345678", 0, 8, 99 }, - /*11*/ { BARCODE_EANX_CC, "1234+12", "[21]A12345678", 0, 8, 99 }, - /*12*/ { BARCODE_EANX_CC, "12345+12", "[21]A12345678", 0, 8, 99 }, - /*13*/ { BARCODE_EANX_CC, "123456+12", "[21]A12345678", 0, 8, 99 }, - /*14*/ { BARCODE_EANX_CC, "1234567+12", "[21]A12345678", 0, 8, 99 }, - /*15*/ { BARCODE_EANX_CC, "12345678+12", "[21]A12345678", 0, 7, 126 }, /* EAN-13 + EAN-2 */ - /*16*/ { BARCODE_EANX_CC, "1+123", "[21]A12345678", 0, 8, 126 }, /* EAN-8 + EAN-5 */ - /*17*/ { BARCODE_EANX_CC, "12+123", "[21]A12345678", 0, 8, 126 }, - /*18*/ { BARCODE_EANX_CC, "123+123", "[21]A12345678", 0, 8, 126 }, - /*19*/ { BARCODE_EANX_CC, "1234+123", "[21]A12345678", 0, 8, 126 }, - /*20*/ { BARCODE_EANX_CC, "12345+123", "[21]A12345678", 0, 8, 126 }, - /*21*/ { BARCODE_EANX_CC, "123456+123", "[21]A12345678", 0, 8, 126 }, - /*22*/ { BARCODE_EANX_CC, "1234567+123", "[21]A12345678", 0, 8, 126 }, - /*23*/ { BARCODE_EANX_CC, "12345678+123", "[21]A12345678", 0, 7, 153 }, /* EAN-13 + EAN-5 */ + /* 8*/ { BARCODE_EANX_CC, "1+12", "[21]A12345678", 0, 8, 98 }, /* EAN-8 + EAN-2 */ + /* 9*/ { BARCODE_EANX_CC, "12+12", "[21]A12345678", 0, 8, 98 }, + /*10*/ { BARCODE_EANX_CC, "123+12", "[21]A12345678", 0, 8, 98 }, + /*11*/ { BARCODE_EANX_CC, "1234+12", "[21]A12345678", 0, 8, 98 }, + /*12*/ { BARCODE_EANX_CC, "12345+12", "[21]A12345678", 0, 8, 98 }, + /*13*/ { BARCODE_EANX_CC, "123456+12", "[21]A12345678", 0, 8, 98 }, + /*14*/ { BARCODE_EANX_CC, "1234567+12", "[21]A12345678", 0, 8, 98 }, + /*15*/ { BARCODE_EANX_CC, "12345678+12", "[21]A12345678", 0, 7, 125 }, /* EAN-13 + EAN-2 */ + /*16*/ { BARCODE_EANX_CC, "1+123", "[21]A12345678", 0, 8, 125 }, /* EAN-8 + EAN-5 */ + /*17*/ { BARCODE_EANX_CC, "12+123", "[21]A12345678", 0, 8, 125 }, + /*18*/ { BARCODE_EANX_CC, "123+123", "[21]A12345678", 0, 8, 125 }, + /*19*/ { BARCODE_EANX_CC, "1234+123", "[21]A12345678", 0, 8, 125 }, + /*20*/ { BARCODE_EANX_CC, "12345+123", "[21]A12345678", 0, 8, 125 }, + /*21*/ { BARCODE_EANX_CC, "123456+123", "[21]A12345678", 0, 8, 125 }, + /*22*/ { BARCODE_EANX_CC, "1234567+123", "[21]A12345678", 0, 8, 125 }, + /*23*/ { BARCODE_EANX_CC, "12345678+123", "[21]A12345678", 0, 7, 152 }, /* EAN-13 + EAN-5 */ /*24*/ { BARCODE_EANX_CC, "1234567890128", "[21]A12345678", 0, 7, 99 }, /* EAN-13 + CHK */ - /*25*/ { BARCODE_EANX_CC, "1234567890128+12", "[21]A12345678", 0, 7, 126 }, /* EAN-13 + CHK + EAN-2 */ - /*26*/ { BARCODE_EANX_CC, "1234567890128+12345", "[21]A12345678", 0, 7, 153 }, /* EAN-13 + CHK + EAN-5 */ + /*25*/ { BARCODE_EANX_CC, "1234567890128+12", "[21]A12345678", 0, 7, 125 }, /* EAN-13 + CHK + EAN-2 */ + /*26*/ { BARCODE_EANX_CC, "1234567890128+12345", "[21]A12345678", 0, 7, 152 }, /* EAN-13 + CHK + EAN-5 */ }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_eanx_leading_zeroes"); + testStartSymbol("test_eanx_leading_zeroes", &symbol); for (i = 0; i < data_size; i++) { @@ -1424,106 +1424,106 @@ static void test_examples(const testCtx *const p_ctx) { "00000000010110001100001010001001000010010100110001101110100111000111010010011110101100100001001010011000110111010011100011101001001111010110010000100101001100011011101001110001110100100111101011010000100010010000100100111000101000000000000" "00000001101001110011110101110110111101101011001110010001011000111000101101100001010011011110110101100111001000101100011100010110110000101001101111011010110011100100010110001110001011011000010100101111011101101111011011000111010110000000000" }, - /* 70*/ { BARCODE_EANX_CC, -1, 1, "123456789012+12", "[91]123456789012345678901", 0, 8, 126, 1, "Example of EAN-13 with 2-digit addon, CC-A 4 cols, 4 rows", - "110100100011110011010011100101110111000100001001000110101110111001000001100000100110111011101100101000000000000000000000000000" - "110101100011101011001000000110011110101111101001000010110010111101100001100100111000001011001100101000000000000000000000000000" - "110101110011101011111010000111111001101110101011000010111110101111001101001101001110000011011100101000000000000000000000000000" - "110101111010001100110000100100001011100011101011100010100011100111000101101000100011000011011110101000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" - "001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" - "000101001001101111010011101011000100001010010001010101001000111010011100101100110110110010010001010000000101100110010100100110" + /* 70*/ { BARCODE_EANX_CC, -1, 1, "123456789012+12", "[91]123456789012345678901", 0, 8, 125, 1, "Example of EAN-13 with 2-digit addon, CC-A 4 cols, 4 rows", + "11010010001111001101001110010111011100010000100100011010111011100100000110000010011011101110110010100000000000000000000000000" + "11010110001110101100100000011001111010111110100100001011001011110110000110010011100000101100110010100000000000000000000000000" + "11010111001110101111101000011111100110111010101100001011111010111100110100110100111000001101110010100000000000000000000000000" + "11010111101000110011000010010000101110001110101110001010001110011100010110100010001100001101111010100000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" + "00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" + "00010100100110111101001110101100010000101001000101010100100011101001110010110011011011001001000101000000010110011001010010011" }, - /* 71*/ { BARCODE_EANX_CC, -1, 1, "123456789012+54321", "[91]1234567890", 0, 7, 153, 1, "Example of EAN-13 with 5-digit addon, CC-B 4 cols, 3 rows", - "110110111011110011010011100101110111000100001001110100101110111001000001100000100110111011011000101000000000000000000000000000000000000000000000000000000" - "110110110011111101010011100111110001001001101001100100110100011100010001001011111100111011001000101000000000000000000000000000000000000000000000000000000" - "110110100010100000101111000111001111001011101001100110110011111010010001001111101101000011101000101000000000000000000000000000000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" - "001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" - "000101001001101111010011101011000100001010010001010101001000111010011100101100110110110010010001010000000101101110010101000110101000010100100110100110010" + /* 71*/ { BARCODE_EANX_CC, -1, 1, "123456789012+54321", "[91]1234567890", 0, 7, 152, 1, "Example of EAN-13 with 5-digit addon, CC-B 4 cols, 3 rows", + "11011011101111001101001110010111011100010000100111010010111011100100000110000010011011101101100010100000000000000000000000000000000000000000000000000000" + "11011011001111110101001110011111000100100110100110010011010001110001000100101111110011101100100010100000000000000000000000000000000000000000000000000000" + "11011010001010000010111100011100111100101110100110011011001111101001000100111110110100001110100010100000000000000000000000000000000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" + "00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" + "00010100100110111101001110101100010000101001000101010100100011101001110010110011011011001001000101000000010110111001010100011010100001010010011010011001" }, - /* 72*/ { BARCODE_UPCA_CC, -1, 1, "12345678901+12", "[91]123456789", 0, 7, 128, 1, "Example of UPC-A with 2-digit addon, CC-A 4 cols, 3 rows", - "11011011101111001101001110010111011100010000100111010010111011100100000110000010011011101101100010100000000000000000000000000000" - "11011011001110011100111101011000010001110010100110010011101011001000000100101111110011101100100010100000000000000000000000000000" - "11011010001000011110010001010111101000000100100110011010001110000101100110111000100011101110100010100000000000000000000000000000" - "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000" - "00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000" - "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000" - "00010100110010010011011110101000110110001010111101010100010010010001110100111001011001101101100101000000000101100110010100100110" + /* 72*/ { BARCODE_UPCA_CC, -1, 1, "12345678901+12", "[91]123456789", 0, 7, 127, 1, "Example of UPC-A with 2-digit addon, CC-A 4 cols, 3 rows", + "1101101110111100110100111001011101110001000010011101001011101110010000011000001001101110110110001010000000000000000000000000000" + "1101101100111001110011110101100001000111001010011001001110101100100000010010111111001110110010001010000000000000000000000000000" + "1101101000100001111001000101011110100000010010011001101000111000010110011011100010001110111010001010000000000000000000000000000" + "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000" + "0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" + "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000" + "0001010011001001001101111010100011011000101011110101010001001001000111010011100101100110110110010100000000010110011001010010011" }, - /* 73*/ { BARCODE_UPCA_CC, -1, 2, "12345678901+12121", "[91]1234567890123", 0, 8, 155, 1, "Example of UPC-A with 5-digit addon, CC-B 4 cols, 4 rows", - "11010011101000111110100111011011111101011100100111011011010000111101100110010111000010001101001000100000000000000000000000000000000000000000000000000000000" - "11010011001011001001110000010111110110000010100111010011011111100110100111010011111001001101011000100000000000000000000000000000000000000000000000000000000" - "11010001001110011010000110011001000001011000100110010010011110111101000111000111010001001101011100100000000000000000000000000000000000000000000000000000000" - "11010001101100010111000001011101101110010000100110011011111000101011000111100010010100001101011110100000000000000000000000000000000000000000000000000000000" - "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000" - "00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" - "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000" - "00010100110010010011011110101000110110001010111101010100010010010001110100111001011001101101100101000000000101100110010100100110101100110100110110100110010" + /* 73*/ { BARCODE_UPCA_CC, -1, 2, "12345678901+12121", "[91]1234567890123", 0, 8, 154, 1, "Example of UPC-A with 5-digit addon, CC-B 4 cols, 4 rows", + "1101001110100011111010011101101111110101110010011101101101000011110110011001011100001000110100100010000000000000000000000000000000000000000000000000000000" + "1101001100101100100111000001011111011000001010011101001101111110011010011101001111100100110101100010000000000000000000000000000000000000000000000000000000" + "1101000100111001101000011001100100000101100010011001001001111011110100011100011101000100110101110010000000000000000000000000000000000000000000000000000000" + "1101000110110001011100000101110110111001000010011001101111100010101100011110001001010000110101111010000000000000000000000000000000000000000000000000000000" + "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" + "0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" + "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" + "0001010011001001001101111010100011011000101011110101010001001001000111010011100101100110110110010100000000010110011001010010011010110011010011011010011001" }, - /* 74*/ { BARCODE_UPCE_CC, -1, 1, "0654321+89", "[91]1", 0, 9, 82, 1, "Example of UPC-E with 2-digit addon, CC-A 2 cols, 5 rows", - "1101100110111101110101111101010001000111100011110101001000000000000000000000000000" - "1101101110111011000010001101110010101110000011100101001000000000000000000000000000" - "1101101100110001011111011101111010000100100011101101001000000000000000000000000000" - "1101101000100111011100111101110011110101110011101001001000000000000000000000000000" - "1101001000110011001000000101110100011011110011101001101000000000000000000000000000" - "0001000000000000000000000000000000000000000000000000010000000000000000000000000000" - "0010000000000000000000000000000000000000000000000000001000000000000000000000000000" - "0001000000000000000000000000000000000000000000000000010000000000000000000000000000" - "0001010000101011000100111010111101001101100110010101010000000101101101110100101110" + /* 74*/ { BARCODE_UPCE_CC, -1, 1, "0654321+89", "[91]1", 0, 9, 81, 1, "Example of UPC-E with 2-digit addon, CC-A 2 cols, 5 rows", + "110110011011110111010111110101000100011110001111010100100000000000000000000000000" + "110110111011101100001000110111001010111000001110010100100000000000000000000000000" + "110110110011000101111101110111101000010010001110110100100000000000000000000000000" + "110110100010011101110011110111001111010111001110100100100000000000000000000000000" + "110100100011001100100000010111010001101111001110100110100000000000000000000000000" + "000100000000000000000000000000000000000000000000000001000000000000000000000000000" + "001000000000000000000000000000000000000000000000000000100000000000000000000000000" + "000100000000000000000000000000000000000000000000000001000000000000000000000000000" + "000101000010101100010011101011110100110110011001010101000000010110110111010010111" }, - /* 75*/ { BARCODE_UPCE_CC, -1, 2, "1876543+56789", "[91]12345", 0, 12, 109, 1, "Example of UPC-E with 5-digit addon, CC-B 2 cols, 8 rows", - "1100100010111011111011101001000001000010001011001000101000000000000000000000000000000000000000000000000000000" - "1110100010110100001111011001100101110000100011101000101000000000000000000000000000000000000000000000000000000" - "1110110010111011001001111101000111100100001011101100101000000000000000000000000000000000000000000000000000000" - "1100110010110011101100010001010111110111110011001100101000000000000000000000000000000000000000000000000000000" - "1101110010111110010011011101001111110100110011011100101000000000000000000000000000000000000000000000000000000" - "1101111010110011100001011101001101000011100011011110101000000000000000000000000000000000000000000000000000000" - "1100111010101000100000100001011110111110110011001110101000000000000000000000000000000000000000000000000000000" - "1110111010101111001011110001011110001001111011101110101000000000000000000000000000000000000000000000000000000" - "0001000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" - "0010000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" - "0001000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" - "0001010110111001000100001010110001010001101000010101010000000101101100010101011110100100010101101110100101110" + /* 75*/ { BARCODE_UPCE_CC, -1, 2, "1876543+56789", "[91]12345", 0, 12, 108, 1, "Example of UPC-E with 5-digit addon, CC-B 2 cols, 8 rows", + "110010001011101111101110100100000100001000101100100010100000000000000000000000000000000000000000000000000000" + "111010001011010000111101100110010111000010001110100010100000000000000000000000000000000000000000000000000000" + "111011001011101100100111110100011110010000101110110010100000000000000000000000000000000000000000000000000000" + "110011001011001110110001000101011111011111001100110010100000000000000000000000000000000000000000000000000000" + "110111001011111001001101110100111111010011001101110010100000000000000000000000000000000000000000000000000000" + "110111101011001110000101110100110100001110001101111010100000000000000000000000000000000000000000000000000000" + "110011101010100010000010000101111011111011001100111010100000000000000000000000000000000000000000000000000000" + "111011101010111100101111000101111000100111101110111010100000000000000000000000000000000000000000000000000000" + "000100000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" + "001000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000" + "000100000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" + "000101011011100100010000101011000101000110100001010101000000010110110001010101111010010001010110111010010111" }, - /* 76*/ { BARCODE_EANX_CC, -1, 1, "9876543+65", "[91]1234567", 0, 8, 99, 1, "Example of EAN-8 with 2-digit addon, CC-A 3 cols, 4 rows", - "100100011111001101010011000111000101110011001100010111010000011101001101000000000000000000000000000" - "110111111001101001010111000110111100101100001111000100111101011101011101000000000000000000000000000" - "100001011000001101010110000101011111011111001110100100001110011101011001000000000000000000000000000" - "111100100011001101010010000110010011111011101010011111000110011101010001000000000000000000000000000" - "000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" - "000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" - "000010100010110110111011101101011110101010011101011100100001011100101010000000101101011110101110010" + /* 76*/ { BARCODE_EANX_CC, -1, 1, "9876543+65", "[91]1234567", 0, 8, 98, 1, "Example of EAN-8 with 2-digit addon, CC-A 3 cols, 4 rows", + "10010001111100110101001100011100010111001100110001011101000001110100110100000000000000000000000000" + "11011111100110100101011100011011110010110000111100010011110101110101110100000000000000000000000000" + "10000101100000110101011000010101111101111100111010010000111001110101100100000000000000000000000000" + "11110010001100110101001000011001001111101110101001111100011001110101000100000000000000000000000000" + "00001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000" + "00001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" + "00001010001011011011101110110101111010101001110101110010000101110010101000000010110101111010111001" }, - /* 77*/ { BARCODE_EANX_CC, -1, 2, "9876543+74083", "[91]123456789012345678", 0, 12, 136, 1, "Example of EAN-8 with 5-digit addon, CC-B 3 cols, 8 rows", - "1100111010111011111011101001000010110100000100001000101111101101001111011001110101000000000000000000000000000000000000000000000000000000" - "1110111010110010111000010001000010010111001011001000001110001101110100011101110101000000000000000000000000000000000000000000000000000000" - "1110011010110111111001101001000011010101000101111000001100100110111111011100110101000000000000000000000000000000000000000000000000000000" - "1111011010111011010000110001000111010110000110110011001110011010011000011110110101000000000000000000000000000000000000000000000000000000" - "1111001010111011011100100001000110010111011101111001001010011110000100011110010101000000000000000000000000000000000000000000000000000000" - "1110001010111111010110001001000100010111001011111101101001111000011011011100010101000000000000000000000000000000000000000000000000000000" - "1100001010111100100010111101001100010111001111001100101001110001110010011000010101000000000000000000000000000000000000000000000000000000" - "1100011010110011001111010001001110010111110111101110101011100111111001011000110101000000000000000000000000000000000000000000000000000000" - "0000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" - "0000000000000100000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" - "0000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" - "0000000000000010100010110110111011101101011110101010011101011100100001011100101010000000101101110110100111010100011010101101110101000010" + /* 77*/ { BARCODE_EANX_CC, -1, 2, "9876543+74083", "[91]123456789012345678", 0, 12, 135, 1, "Example of EAN-8 with 5-digit addon, CC-B 3 cols, 8 rows", + "110011101011101111101110100100001011010000010000100010111110110100111101100111010100000000000000000000000000000000000000000000000000000" + "111011101011001011100001000100001001011100101100100000111000110111010001110111010100000000000000000000000000000000000000000000000000000" + "111001101011011111100110100100001101010100010111100000110010011011111101110011010100000000000000000000000000000000000000000000000000000" + "111101101011101101000011000100011101011000011011001100111001101001100001111011010100000000000000000000000000000000000000000000000000000" + "111100101011101101110010000100011001011101110111100100101001111000010001111001010100000000000000000000000000000000000000000000000000000" + "111000101011111101011000100100010001011100101111110110100111100001101101110001010100000000000000000000000000000000000000000000000000000" + "110000101011110010001011110100110001011100111100110010100111000111001001100001010100000000000000000000000000000000000000000000000000000" + "110001101011001100111101000100111001011111011110111010101110011111100101100011010100000000000000000000000000000000000000000000000000000" + "000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" + "000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000" + "000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" + "000000000000001010001011011011101110110101111010101001110101110010000101110010101000000010110111011010011101010001101010110111010100001" }, - /* 78*/ { BARCODE_EANX_CC, -1, 1, "1234567890128+65", "[91]1234567", 0, 7, 126, 1, "Example of EAN-13 + CHK with 2-digit addon, CC-A 3 cols, 4 rows", - "110110111011110011010011100101110111000100001001110100101110111001000001100001100101000011011000101000000000000000000000000000" - "110110110010011001011111100111110110010000101001100100111111011100101001101011100010000011001000101000000000000000000000000000" - "110110100011010111111001000110111010000111001001100110100010010011110001010000110111110011101000101000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" - "001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" - "000101001001101111010011101011000100001010010001010101001000111010011100101100110110110010010001010000000101101011110101110010" + /* 78*/ { BARCODE_EANX_CC, -1, 1, "1234567890128+65", "[91]1234567", 0, 7, 125, 1, "Example of EAN-13 + CHK with 2-digit addon, CC-A 3 cols, 4 rows", + "11011011101111001101001110010111011100010000100111010010111011100100000110000110010100001101100010100000000000000000000000000" + "11011011001001100101111110011111011001000010100110010011111101110010100110101110001000001100100010100000000000000000000000000" + "11011010001101011111100100011011101000011100100110011010001001001111000101000011011111001110100010100000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" + "00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" + "00010100100110111101001110101100010000101001000101010100100011101001110010110011011011001001000101000000010110101111010111001" }, }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; char esc_composite[4096]; @@ -1533,7 +1533,7 @@ static void test_examples(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ - testStart("test_examples"); + testStartSymbol("test_examples", &symbol); for (i = 0; i < data_size; i++) { @@ -1699,14 +1699,14 @@ static void test_odd_numbered_numeric(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char bwipp_buf[8192]; char bwipp_msg[1024]; int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ - testStart("test_odd_numbered_numeric"); + testStartSymbol("test_odd_numbered_numeric", &symbol); for (i = 0; i < data_size; i++) { @@ -1828,14 +1828,14 @@ static void test_ean128_cc_shift(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char bwipp_buf[8192]; char bwipp_msg[1024]; int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ - testStart("test_ean128_cc_shift"); + testStartSymbol("test_ean128_cc_shift", &symbol); for (i = 0; i < data_size; i++) { @@ -1914,9 +1914,9 @@ static void test_ean128_cc_width(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_ean128_cc_width"); + testStartSymbol("test_ean128_cc_width", &symbol); for (i = 0; i < data_size; i++) { @@ -2376,14 +2376,14 @@ static void test_encodation_0(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char bwipp_buf[8192]; char bwipp_msg[1024]; int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ - testStart("test_encodation_0"); + testStartSymbol("test_encodation_0", &symbol); for (i = 0; i < data_size; i++) { @@ -2514,14 +2514,14 @@ static void test_encodation_10(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char bwipp_buf[8192]; char bwipp_msg[1024]; int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ - testStart("test_encodation_10"); + testStartSymbol("test_encodation_10", &symbol); for (i = 0; i < data_size; i++) { @@ -2930,14 +2930,14 @@ static void test_encodation_11(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char bwipp_buf[8192]; char bwipp_msg[1024]; int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ - testStart("test_encodation_11"); + testStartSymbol("test_encodation_11", &symbol); for (i = 0; i < data_size; i++) { @@ -3000,7 +3000,17 @@ static void test_addongap(const testCtx *const p_ctx) { }; /* Verified via bwipp_dump.ps against BWIPP */ struct item data[] = { - /* 0*/ { BARCODE_EANX_CC, 1, -1, "1234567+12", 0, 8, 99, "EAN-8 default 7 gap", + /* 0*/ { BARCODE_EANX_CC, 1, -1, "1234567+12", 0, 8, 98, "EAN-8 default 7 gap", + "10010001111100110101001100011110001011001100110110011110000101110100110100000000000000000000000000" + "10000011100101100101011100010111100010001000100000100101111001110101110100000000000000000000000000" + "11001101001000000101011000011010011100011110110001100110011001110101100100000000000000000000000000" + "11111000101001100101001000011100001011100110111000110111010001110101000100000000000000000000000000" + "00001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000" + "00001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" + "00001010011001001001101111010100011010101001110101000010001001110010101000000010110011001010010011" + }, + /* 1*/ { BARCODE_EANX_CC, 1, 8, "1234567+12", 0, 8, 99, "EAN-8 8 gap", "100100011111001101010011000111100010110011001101100111100001011101001101000000000000000000000000000" "100000111001011001010111000101111000100010001000001001011110011101011101000000000000000000000000000" "110011010010000001010110000110100111000111101100011001100110011101011001000000000000000000000000000" @@ -3008,80 +3018,70 @@ static void test_addongap(const testCtx *const p_ctx) { "000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" "000100000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" "000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" - "000010100110010010011011110101000110101010011101010000100010011100101010000000101100110010100100110" + "000010100110010010011011110101000110101010011101010000100010011100101010000000010110011001010010011" }, - /* 1*/ { BARCODE_EANX_CC, 1, 8, "1234567+12", 0, 8, 100, "EAN-8 8 gap", - "1001000111110011010100110001111000101100110011011001111000010111010011010000000000000000000000000000" - "1000001110010110010101110001011110001000100010000010010111100111010111010000000000000000000000000000" - "1100110100100000010101100001101001110001111011000110011001100111010110010000000000000000000000000000" - "1111100010100110010100100001110000101110011011100011011101000111010100010000000000000000000000000000" - "0000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000" - "0001000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000" - "0000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000" - "0000101001100100100110111101010001101010100111010100001000100111001010100000000101100110010100100110" + /* 2*/ { BARCODE_EANX_CC, 1, -1, "123456789012+12345", 0, 7, 152, "EAN-13 default 7 gap", + "11011011101111001101001110011100010001001110100111010010001011000001100111100111101000101101100010100000000000000000000000000000000000000000000000000000" + "11011011001100010001110010011100110001110010100110010010010001111101100111101001010000001100100010100000000000000000000000000000000000000000000000000000" + "11011010001110111110101100010000101011110000100110011010000110001001110101111101100000101110100010100000000000000000000000000000000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" + "00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000" + "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" + "00010100100110111101001110101100010000101001000101010100100011101001110010110011011011001001000101000000010110110011010010011010100001010100011010110001" }, - /* 2*/ { BARCODE_EANX_CC, 1, -1, "123456789012+12345", 0, 7, 153, "EAN-13 default 7 gap", - "110110111011110011010011100111000100010011101001110100100010110000011001111001111010001011011000101000000000000000000000000000000000000000000000000000000" - "110110110011000100011100100111001100011100101001100100100100011111011001111010010100000011001000101000000000000000000000000000000000000000000000000000000" - "110110100011101111101011000100001010111100001001100110100001100010011101011111011000001011101000101000000000000000000000000000000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" - "001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" - "000101001001101111010011101011000100001010010001010101001000111010011100101100110110110010010001010000000101101100110100100110101000010101000110101100010" + /* 3*/ { BARCODE_EANX_CC, 1, 9, "123456789012+12345", 0, 7, 154, "EAN-13 9 gap", + "1101101110111100110100111001110001000100111010011101001000101100000110011110011110100010110110001010000000000000000000000000000000000000000000000000000000" + "1101101100110001000111001001110011000111001010011001001001000111110110011110100101000000110010001010000000000000000000000000000000000000000000000000000000" + "1101101000111011111010110001000010101111000010011001101000011000100111010111110110000010111010001010000000000000000000000000000000000000000000000000000000" + "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" + "0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" + "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" + "0001010010011011110100111010110001000010100100010101010010001110100111001011001101101100100100010100000000010110110011010010011010100001010100011010110001" }, - /* 3*/ { BARCODE_EANX_CC, 1, 9, "123456789012+12345", 0, 7, 155, "EAN-13 9 gap", + /* 4*/ { BARCODE_UPCA_CC, 1, -1, "12345678901+12345", 0, 7, 154, "UPC-A default 9 gap", + "1101101110111100110100111001110001000100111010011101001000101100000110011110011110100010110110001010000000000000000000000000000000000000000000000000000000" + "1101101100110001000111001001110011000111001010011001001001000111110110011110100101000000110010001010000000000000000000000000000000000000000000000000000000" + "1101101000111011111010110001000010101111000010011001101000011000100111010111110110000010111010001010000000000000000000000000000000000000000000000000000000" + "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" + "0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000" + "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" + "0001010011001001001101111010100011011000101011110101010001001001000111010011100101100110110110010100000000010110110011010010011010100001010100011010110001" + }, + /* 5*/ { BARCODE_UPCA_CC, 1, 10, "12345678901+12345", 0, 7, 155, "UPC-A 10 gap", "11011011101111001101001110011100010001001110100111010010001011000001100111100111101000101101100010100000000000000000000000000000000000000000000000000000000" "11011011001100010001110010011100110001110010100110010010010001111101100111101001010000001100100010100000000000000000000000000000000000000000000000000000000" "11011010001110111110101100010000101011110000100110011010000110001001110101111101100000101110100010100000000000000000000000000000000000000000000000000000000" "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000" "00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000" - "00010100100110111101001110101100010000101001000101010100100011101001110010110011011011001001000101000000000101101100110100100110101000010101000110101100010" + "00010100110010010011011110101000110110001010111101010100010010010001110100111001011001101101100101000000000010110110011010010011010100001010100011010110001" }, - /* 4*/ { BARCODE_UPCA_CC, 1, -1, "12345678901+12345", 0, 7, 155, "UPC-A default 9 gap", - "11011011101111001101001110011100010001001110100111010010001011000001100111100111101000101101100010100000000000000000000000000000000000000000000000000000000" - "11011011001100010001110010011100110001110010100110010010010001111101100111101001010000001100100010100000000000000000000000000000000000000000000000000000000" - "11011010001110111110101100010000101011110000100110011010000110001001110101111101100000101110100010100000000000000000000000000000000000000000000000000000000" - "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000" - "00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000" - "00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000" - "00010100110010010011011110101000110110001010111101010100010010010001110100111001011001101101100101000000000101101100110100100110101000010101000110101100010" + /* 6*/ { BARCODE_UPCE_CC, 1, -1, "1234567+12", 0, 9, 81, "UPC-E default 7 gap", + "110110011011101110101111000110111111011001001111010100100000000000000000000000000" + "110110111010111001111001100100110011000010001110010100100000000000000000000000000" + "110110110010010111101000000110100000111010001110110100100000000000000000000000000" + "110110100011001001000111110101100001100111101110100100100000000000000000000000000" + "110100100011001000001001100110100100011000001110100110100000000000000000000000000" + "000100000000000000000000000000000000000000000000000001000000000000000000000000000" + "001000000000000000000000000000000000000000000000000000100000000000000000000000000" + "000100000000000000000000000000000000000000000000000001000000000000000000000000000" + "000101001001101111010100011011100100001010010001010101000000010110011001010010011" }, - /* 5*/ { BARCODE_UPCA_CC, 1, 10, "12345678901+12345", 0, 7, 156, "UPC-A 10 gap", - "110110111011110011010011100111000100010011101001110100100010110000011001111001111010001011011000101000000000000000000000000000000000000000000000000000000000" - "110110110011000100011100100111001100011100101001100100100100011111011001111010010100000011001000101000000000000000000000000000000000000000000000000000000000" - "110110100011101111101011000100001010111100001001100110100001100010011101011111011000001011101000101000000000000000000000000000000000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000" - "001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000" - "000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000" - "000101001100100100110111101010001101100010101111010101000100100100011101001110010110011011011001010000000000101101100110100100110101000010101000110101100010" - }, - /* 6*/ { BARCODE_UPCE_CC, 1, -1, "1234567+12", 0, 9, 82, "UPC-E default 7 gap", - "1101100110111011101011110001101111110110010011110101001000000000000000000000000000" - "1101101110101110011110011001001100110000100011100101001000000000000000000000000000" - "1101101100100101111010000001101000001110100011101101001000000000000000000000000000" - "1101101000110010010001111101011000011001111011101001001000000000000000000000000000" - "1101001000110010000010011001101001000110000011101001101000000000000000000000000000" - "0001000000000000000000000000000000000000000000000000010000000000000000000000000000" - "0010000000000000000000000000000000000000000000000000001000000000000000000000000000" - "0001000000000000000000000000000000000000000000000000010000000000000000000000000000" - "0001010010011011110101000110111001000010100100010101010000000101100110010100100110" - }, - /* 7*/ { BARCODE_UPCE_CC, 1, 12, "1234567+12", 0, 9, 87, "UPC-E 12 gap", - "110110011011101110101111000110111111011001001111010100100000000000000000000000000000000" - "110110111010111001111001100100110011000010001110010100100000000000000000000000000000000" - "110110110010010111101000000110100000111010001110110100100000000000000000000000000000000" - "110110100011001001000111110101100001100111101110100100100000000000000000000000000000000" - "110100100011001000001001100110100100011000001110100110100000000000000000000000000000000" - "000100000000000000000000000000000000000000000000000001000000000000000000000000000000000" - "001000000000000000000000000000000000000000000000000000100000000000000000000000000000000" - "000100000000000000000000000000000000000000000000000001000000000000000000000000000000000" - "000101001001101111010100011011100100001010010001010101000000000000101100110010100100110" + /* 7*/ { BARCODE_UPCE_CC, 1, 12, "1234567+12", 0, 9, 86, "UPC-E 12 gap", + "11011001101110111010111100011011111101100100111101010010000000000000000000000000000000" + "11011011101011100111100110010011001100001000111001010010000000000000000000000000000000" + "11011011001001011110100000011010000011101000111011010010000000000000000000000000000000" + "11011010001100100100011111010110000110011110111010010010000000000000000000000000000000" + "11010010001100100000100110011010010001100000111010011010000000000000000000000000000000" + "00010000000000000000000000000000000000000000000000000100000000000000000000000000000000" + "00100000000000000000000000000000000000000000000000000010000000000000000000000000000000" + "00010000000000000000000000000000000000000000000000000100000000000000000000000000000000" + "00010100100110111101010001101110010000101001000101010100000000000010110011001010010011" }, }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char bwipp_buf[8192]; char bwipp_msg[1024]; @@ -3090,7 +3090,7 @@ static void test_addongap(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ - testStart("test_addongap"); + testStartSymbol("test_addongap", &symbol); for (i = 0; i < data_size; i++) { @@ -3179,9 +3179,9 @@ static void test_gs1parens(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_gs1parens"); + testStartSymbol("test_gs1parens", &symbol); for (i = 0; i < data_size; i++) { @@ -3262,9 +3262,9 @@ static void test_hrt(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_hrt"); + testStartSymbol("test_hrt", &symbol); for (i = 0; i < data_size; i++) { @@ -3424,9 +3424,9 @@ static void test_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_input"); + testStartSymbol("test_input", &symbol); for (i = 0; i < data_size; i++) { @@ -3478,9 +3478,9 @@ static void test_fuzz(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, composite_length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_fuzz"); + testStartSymbol("test_fuzz", &symbol); for (i = 0; i < data_size; i++) { diff --git a/backend/tests/test_emf.c b/backend/tests/test_emf.c index 145c1997..3443e1fe 100644 --- a/backend/tests/test_emf.c +++ b/backend/tests/test_emf.c @@ -64,28 +64,36 @@ static void test_print(const testCtx *const p_ctx) { /* 8*/ { BARCODE_ULTRA, -1, -1, -1, 5, -1, -1, -1, 0, "147AD0", "FC9630", 0, "123", "ultracode_fg_bg.emf", "" }, /* 9*/ { BARCODE_ULTRA, -1, 2, BARCODE_BOX, 2, 2, -1, -1, 0, "FF0000", "0000FF", 0, "123", "ultracode_fg_bg_box2.emf", "" }, /* 10*/ { BARCODE_ULTRA, -1, 2, BARCODE_BOX, 2, 2, -1, -1, 600.0f / 25.4f, "FF0000", "0000FF", 0, "123", "ultracode_fg_bg_box2_600dpi.emf", "" }, - /* 11*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "ean13_5addon_ggs_5.2.2.5.2-2.emf", "" }, - /* 12*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "210987654321+54321", "ean13_5addon_#185.emf", "#185 Byte count, font data, HeaderExtension1/2" }, - /* 13*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "upca_2addon_ggs_5.2.6.6-5.emf", "" }, - /* 14*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "0123456+12", "upce_2addon.emf", "" }, - /* 15*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, 150.f / 25.4f, "", "", 0, "0123456+12", "upce_2addon_150dpi.emf", "" }, - /* 16*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, 0, "", "", 0, "0123456+12", "upce_2addon_small_bold.emf", "" }, - /* 17*/ { BARCODE_ITF14, -1, -1, BOLD_TEXT, -1, -1, -1, -1, 0, "", "", 0, "123", "itf14_bold.emf", "" }, - /* 18*/ { BARCODE_ITF14, -1, -1, BOLD_TEXT, -1, -1, -1, -1, 600.f / 25.4f, "", "", 0, "123", "itf14_bold_600dpi.emf", "" }, - /* 19*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 90, "123", "code39_rotate_90.emf", "" }, - /* 20*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 300.f / 25.4f, "", "", 90, "123", "code39_rotate_90_300dpi.emf", "" }, - /* 21*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 180, "123", "code39_rotate_180.emf", "" }, - /* 22*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 270, "123", "code39_rotate_270.emf", "" }, - /* 23*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 0, "E0E0E0", "700070", 0, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_#185.emf", "#185 Maxicode scaling" }, - /* 24*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 150.f / 25.4f, "E0E0E0", "700070", 0, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_#185_150dpi.emf", "#185 Maxicode scaling" }, - /* 25*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 600.f / 25.4f, "E0E0E0", "700070", 0, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_#185_600dpi.emf", "#185 Maxicode scaling" }, - /* 26*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 0, "", "FFFFFF00", 90, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_rotate_90_nobg.emf", "" }, - /* 27*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 300.0f, "", "FFFFFF00", 90, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_rotate_90_nobg_300dpi.emf", "" }, - /* 28*/ { BARCODE_UPU_S10, -1, -1, CMYK_COLOUR, -1, -1, -1, -1, 0, "71,0,40,44", "FFFFFF00", 0, "QA47312482PS", "upu_s10_cmyk_nobg.emf", "" }, + /* 11*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9501101531000", "ean13_ggs_5.2.2.1-1.emf", "" }, + /* 12*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, 0, "", "", 0, "9501101531000", "ean13_ggs_5.2.2.1-1_gws.emf", "" }, + /* 13*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "ean13_5addon_ggs_5.2.2.5.2-2.emf", "" }, + /* 14*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "ean13_5addon_ggs_5.2.2.5.2-2_gws.emf", "" }, + /* 15*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "210987654321+54321", "ean13_5addon_#185.emf", "#185 Byte count, font data, HeaderExtension1/2" }, + /* 16*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9501234", "ean8_gss_5.2.2.2-1.emf", "" }, + /* 17*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, 0, "", "", 0, "9501234", "ean8_gss_5.2.2.2-1_gws.emf", "" }, + /* 18*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "upca_2addon_ggs_5.2.6.6-5.emf", "" }, + /* 19*/ { BARCODE_UPCA, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "upca_2addon_ggs_5.2.6.6-5_gws.emf", "" }, + /* 20*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "0123456+12", "upce_2addon.emf", "" }, + /* 21*/ { BARCODE_UPCE, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, 0, "", "", 0, "0123456+12", "upce_2addon_gws.emf", "" }, + /* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, 150.f / 25.4f, "", "", 0, "0123456+12", "upce_2addon_150dpi.emf", "" }, + /* 23*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, 0, "", "", 0, "0123456+12", "upce_2addon_small_bold.emf", "" }, + /* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT | BOLD_TEXT | EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, 0, "", "", 0, "0123456+12", "upce_2addon_small_bold_gws.emf", "" }, + /* 25*/ { BARCODE_ITF14, -1, -1, BOLD_TEXT, -1, -1, -1, -1, 0, "", "", 0, "123", "itf14_bold.emf", "" }, + /* 26*/ { BARCODE_ITF14, -1, -1, BOLD_TEXT, -1, -1, -1, -1, 600.f / 25.4f, "", "", 0, "123", "itf14_bold_600dpi.emf", "" }, + /* 27*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 90, "123", "code39_rotate_90.emf", "" }, + /* 28*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 300.f / 25.4f, "", "", 90, "123", "code39_rotate_90_300dpi.emf", "" }, + /* 29*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 180, "123", "code39_rotate_180.emf", "" }, + /* 30*/ { BARCODE_CODE39, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 270, "123", "code39_rotate_270.emf", "" }, + /* 31*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 0, "E0E0E0", "700070", 0, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_#185.emf", "#185 Maxicode scaling" }, + /* 32*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 150.f / 25.4f, "E0E0E0", "700070", 0, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_#185_150dpi.emf", "#185 Maxicode scaling" }, + /* 33*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 600.f / 25.4f, "E0E0E0", "700070", 0, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_#185_600dpi.emf", "#185 Maxicode scaling" }, + /* 34*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 0, "", "FFFFFF00", 90, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_rotate_90_nobg.emf", "" }, + /* 35*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, 300.0f, "", "FFFFFF00", 90, "THIS IS A 93 CHARACTER CODE SET A MESSAGE THAT FILLS A MODE 4, UNAPPENDED, MAXICODE SYMBOL...", "maxicode_rotate_90_nobg_300dpi.emf", "" }, + /* 36*/ { BARCODE_UPU_S10, -1, -1, CMYK_COLOUR, -1, -1, -1, -1, 0, "71,0,40,44", "FFFFFF00", 0, "QA47312482PS", "upu_s10_cmyk_nobg.emf", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; const char *data_dir = "/backend/tests/data/emf"; const char *emf = "out.emf"; @@ -98,7 +106,7 @@ static void test_print(const testCtx *const p_ctx) { have_libreoffice = testUtilHaveLibreOffice(); } - testStart("test_print"); + testStartSymbol("test_print", &symbol); if (p_ctx->generate) { char data_dir_path[1024]; @@ -206,8 +214,9 @@ static void test_outfile(const testCtx *const p_ctx) { symbol.output_options |= BARCODE_STDOUT; + printf("<< + Copyright (C) 2020-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -207,9 +207,9 @@ static void test_clz_u64(const testCtx *const p_ctx) { static void test_load(const testCtx *const p_ctx) { struct item { - large_int t; - large_int s; - large_int expected; + large_uint t; + large_uint s; + large_uint expected; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { @@ -244,10 +244,10 @@ static void test_load(const testCtx *const p_ctx) { static void test_load_str_u64(const testCtx *const p_ctx) { struct item { - large_int t; + large_uint t; const char *s; int length; - large_int expected; + large_uint expected; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { @@ -285,9 +285,9 @@ static void test_load_str_u64(const testCtx *const p_ctx) { static void test_add_u64(const testCtx *const p_ctx) { struct item { - large_int t; + large_uint t; uint64_t s; - large_int expected; + large_uint expected; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { @@ -329,9 +329,9 @@ static void test_add_u64(const testCtx *const p_ctx) { static void test_sub_u64(const testCtx *const p_ctx) { struct item { - large_int t; + large_uint t; uint64_t s; - large_int expected; + large_uint expected; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { @@ -373,9 +373,9 @@ static void test_sub_u64(const testCtx *const p_ctx) { static void test_mul_u64(const testCtx *const p_ctx) { struct item { - large_int t; + large_uint t; uint64_t s; - large_int expected; + large_uint expected; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { @@ -431,10 +431,10 @@ static void test_div_u64(const testCtx *const p_ctx) { uint64_t r; struct item { - large_int t; + large_uint t; uint64_t s; uint64_t expected_r; - large_int expected; + large_uint expected; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { @@ -557,9 +557,9 @@ static void test_div_u64(const testCtx *const p_ctx) { static void test_unset_bit(const testCtx *const p_ctx) { struct item { - large_int t; + large_uint t; int s; - large_int expected; + large_uint expected; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { @@ -721,7 +721,7 @@ static void test_unset_bit(const testCtx *const p_ctx) { static void test_uint_array(const testCtx *const p_ctx) { struct item { - large_int t; + large_uint t; int size; int bits; unsigned int expected[130]; @@ -810,7 +810,7 @@ static void test_uint_array(const testCtx *const p_ctx) { static void test_dump(const testCtx *const p_ctx) { struct item { - large_int t; + large_uint t; char *expected; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ diff --git a/backend/tests/test_output.c b/backend/tests/test_output.c index bb2f1ad5..37307405 100644 --- a/backend/tests/test_output.c +++ b/backend/tests/test_output.c @@ -31,6 +31,7 @@ #include "testcommon.h" #include "../output.h" +#include #ifdef _WIN32 #include #include @@ -202,13 +203,14 @@ static void test_colour_get_cmyk(const testCtx *const p_ctx) { testFinish(); } -INTERNAL int out_quiet_zones_test(const struct zint_symbol *symbol, const int hide_text, +INTERNAL int out_quiet_zones_test(const struct zint_symbol *symbol, const int hide_text, const int comp_xoffset, float *left, float *right, float *top, float *bottom); static void test_quiet_zones(const testCtx *const p_ctx) { int i, ret; struct zint_symbol symbol = {0}; int hide_text = 0; + int comp_xoffset = 0; float left, right, top, bottom; testStart("test_quiet_zones"); @@ -219,7 +221,7 @@ static void test_quiet_zones(const testCtx *const p_ctx) { symbol.symbology = i; symbol.output_options = BARCODE_QUIET_ZONES; - ret = out_quiet_zones_test(&symbol, hide_text, &left, &right, &top, &bottom); + ret = out_quiet_zones_test(&symbol, hide_text, comp_xoffset, &left, &right, &top, &bottom); if (i != BARCODE_FLAT && i != BARCODE_BC412) { /* Only two which aren't marked as done */ assert_nonzero(ret, "i:%d %s not done\n", i, testUtilBarcodeName(i)); } @@ -325,6 +327,77 @@ static void test_fopen(const testCtx *const p_ctx) { testFinish(); } +static void test_out_putsf(const testCtx *const p_ctx) { + int debug = p_ctx->debug; + + struct item { + const char *prefix; + int dp; + float arg; + const char *locale; + const char *expected; + }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { "", 2, 1234.123, "", "1234.12" }, + /* 1*/ { "", 3, 1234.123, "", "1234.123" }, + /* 2*/ { "prefix ", 4, 1234.123, "", "prefix 1234.123" }, + /* 3*/ { "", 2, -1234.126, "", "-1234.13" }, + /* 4*/ { "", 2, 1234.1, "", "1234.1" }, + /* 5*/ { "", 3, 1234.1, "", "1234.1" }, + /* 6*/ { "", 4, 1234.1, "", "1234.1" }, + /* 7*/ { "", 2, 1234.0, "", "1234" }, + /* 8*/ { "", 2, -1234.0, "", "-1234" }, + /* 9*/ { "", 3, 1234.1234, "de_DE.UTF-8", "1234.123" }, + /* 10*/ { "", 4, -1234.1234, "de_DE.UTF-8", "-1234.1234" }, + /* 11*/ { "prefix ", 4, -1234.1234, "de_DE.UTF-8", "prefix -1234.1234" }, + }; + int data_size = ARRAY_SIZE(data); + int i; + + FILE *fp; + char buf[512]; + + testStart("test_out_putsf"); + +#ifdef _WIN32 + (void)i; (void)fp; (void)buf; + testSkip("Test not implemented on Windows"); +#else + + for (i = 0; i < data_size; i++) { + const char *locale = NULL; + + if (testContinue(p_ctx, i)) continue; + + buf[0] = '\0'; + fp = fmemopen(buf, sizeof(buf), "w"); + assert_nonnull(fp, "%d: fmemopen fail (%d, %s)\n", i, errno, strerror(errno)); + + if (data[i].locale && data[i].locale[0]) { + locale = setlocale(LC_ALL, data[i].locale); + if (!locale) { /* May not be available - warn unless quiet mode */ + if (!(debug & ZINT_DEBUG_TEST_LESS_NOISY)) { + printf("%d: Warning: locale \"%s\" not available\n", i, data[i].locale); + } + } + } + + out_putsf(data[i].prefix, data[i].dp, data[i].arg, fp); + + assert_zero(fclose(fp), "%d: fclose fail (%d, %s)\n", i, errno, strerror(errno)); + + if (locale) { + assert_nonnull(setlocale(LC_ALL, locale), "%d: setlocale(%s) restore fail (%d, %s)\n", + i, locale, errno, strerror(errno)); + } + + assert_zero(strcmp(buf, data[i].expected), "%d: strcmp(%s, %s) != 0\n", i, buf, data[i].expected); + } + + testFinish(); +#endif /* _WIN32 */ +} int main(int argc, char *argv[]) { @@ -334,6 +407,7 @@ int main(int argc, char *argv[]) { { "test_colour_get_cmyk", test_colour_get_cmyk }, { "test_quiet_zones", test_quiet_zones }, { "test_fopen", test_fopen }, + { "test_out_putsf", test_out_putsf }, }; testRun(argc, argv, funcs, ARRAY_SIZE(funcs)); diff --git a/backend/tests/test_pdf417.c b/backend/tests/test_pdf417.c index a6bbd106..65fddd9e 100644 --- a/backend/tests/test_pdf417.c +++ b/backend/tests/test_pdf417.c @@ -61,11 +61,11 @@ static void test_large(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char data_buf[4096]; - testStart("test_large"); + testStartSymbol("test_large", &symbol); for (i = 0; i < data_size; i++) { @@ -186,11 +186,11 @@ static void test_options(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; struct zint_symbol previous_symbol; - testStart("test_options"); + testStartSymbol("test_options", &symbol); for (i = 0; i < data_size; i++) { @@ -257,7 +257,7 @@ static void test_reader_init(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char escaped[1024]; char cmp_buf[32768]; @@ -265,7 +265,7 @@ static void test_reader_init(const testCtx *const p_ctx) { int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ - testStart("test_reader_init"); + testStartSymbol("test_reader_init", &symbol); for (i = 0; i < data_size; i++) { @@ -423,7 +423,7 @@ static void test_input(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; int last_fast_num_cwds = 0; /* Keep clang-tidy happy */ char escaped[1024]; @@ -433,7 +433,7 @@ static void test_input(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ - testStart("test_input"); + testStartSymbol("test_input", &symbol); for (i = 0; i < data_size; i++) { @@ -3924,7 +3924,7 @@ static void test_encode(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; int last_fast_num_cwds = 0; /* Keep clang-tidy happy */ char escaped[1024]; @@ -3934,7 +3934,7 @@ static void test_encode(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ - testStart("test_encode"); + testStartSymbol("test_encode", &symbol); for (i = 0; i < data_size; i++) { @@ -4662,7 +4662,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, j, seg_count, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; int last_fast_num_cwds = 0; /* Keep clang-tidy happy */ char escaped[1024]; @@ -4672,7 +4672,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ - testStart("test_encode_segs"); + testStartSymbol("test_encode_segs", &symbol); for (i = 0; i < data_size; i++) { @@ -5299,9 +5299,9 @@ static void test_fuzz(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_fuzz"); + testStartSymbol("test_fuzz", &symbol); for (i = 0; i < data_size; i++) { @@ -5340,7 +5340,7 @@ INTERNAL void pdf_numbprocess_test(int *chainemc, int *p_mclength, const unsigne /* Max codewords 12 */ static int annex_d_decode_dump(int chainemc[], int mclength, unsigned char *chaine, int length, char *buf1, char *buf2) { - static large_int pow900s[] = { + static const large_uint pow900s[] = { { 0x1, 0 }, /*1*/ { 0x384, 0 }, /*900*/ { 0xC5C10, 0 }, /*810000*/ @@ -5354,7 +5354,7 @@ static int annex_d_decode_dump(int chainemc[], int mclength, unsigned char *chai { 0xC38B1A67CC100000, 0x466A40BB0 }, /*348678440100000000000000000000*/ { 0x7508D4E968400000, 0xF78D8B9196F }, /*313810596090000000000000000000000*/ }; - static large_int pow10s[] = { + static const large_uint pow10s[] = { { 1, 0 }, /*1*/ { 0xA, 0 }, /*10*/ { 0x64, 0 }, /*100*/ @@ -5379,7 +5379,7 @@ static int annex_d_decode_dump(int chainemc[], int mclength, unsigned char *chai { 0x35C9ADC5DEA00000, 0x36 }, /*1000000000000000000000*/ }; int i; - large_int t, s, e; + large_uint t, s, e; if (mclength > 12 + 1) { return -1; diff --git a/backend/tests/test_png.c b/backend/tests/test_png.c index a58ce806..9caef6fe 100644 --- a/backend/tests/test_png.c +++ b/backend/tests/test_png.c @@ -151,59 +151,82 @@ static void test_print(const testCtx *const p_ctx) { /* 4*/ { BARCODE_CODABLOCKF, -1, 3, -1, -1, -1, -1, 3, -1, 0, 0, { 0, 0, "" }, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_3rows.png", "" }, /* 5*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.png", "" }, /* 6*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.png", "" }, - /* 7*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.png", "" }, - /* 8*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.png", "" }, - /* 9*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.png", "" }, - /* 10*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.png", "" }, - /* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.png", "" }, - /* 12*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.png", "" }, - /* 13*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.png", "" }, - /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, 0, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_notext.png", "" }, - /* 15*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.png", "" }, - /* 16*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.png", "" }, - /* 17*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.png", "" }, - /* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.png", "" }, - /* 19*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.png", "" }, - /* 20*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12", "", 0, "upce_2addon.png", "" }, - /* 21*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "upce_5addon.png", "" }, - /* 22*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.png", "" }, - /* 23*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.png", "" }, - /* 24*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.png", "" }, - /* 25*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.png", "" }, - /* 26*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12", "", 0, "ean8_2addon.png", "" }, - /* 27*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.png", "" }, - /* 28*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.png", "" }, - /* 29*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.png", "" }, - /* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345", "", 0, "ean5.png", "" }, - /* 31*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12", "", 0, "ean2.png", "" }, - /* 32*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123", "", 0, "code39_small.png", "" }, - /* 33*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3.5, { 0, 0, "" }, "", "", 0, "12345", "", 0, "postnet_zip.png", "300 dpi, using 1/43in X, 300 / 43 / 2 = ~3.5 scale" }, - /* 34*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "CFCECDCC", 0, "12345", "", 0, "pdf417_bgalpha.png", "" }, - /* 35*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "30313233", "", 0, "12345", "", 0, "pdf417_fgalpha.png", "" }, - /* 36*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "20212244", "CFCECDCC", 0, "12345", "", 0, "pdf417_bgfgalpha.png", "" }, - /* 37*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "FF000033", 0, "12345", "", 0, "ultra_bgfgalpha.png", "" }, - /* 38*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "FF000033", 0, "12345", "", 0, "ultra_bgalpha.png", "" }, - /* 39*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "FF0000", 0, "12345", "", 0, "ultra_fgalpha.png", "" }, - /* 40*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "", 0, "12345", "", 0, "ultra_fgalpha_nobg.png", "" }, - /* 41*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345", "", 0, "ultra_hvwsp1_box1.png", "" }, - /* 42*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "00FF007F", "BABDB6", 0, "12345", "", 0, "ultra_fgalpha_hvwsp1_box1.png", "" }, - /* 43*/ { BARCODE_ULTRA, -1, 1, BARCODE_BIND_TOP, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "00FF007F", "BABDB6", 0, "12345", "", 0, "ultra_fgalpha_hvwsp1_bindtop1.png", "" }, - /* 44*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, { 0, 0, "" }, "", "", 0, "1", "", 0, "ultra_odd.png", "" }, - /* 45*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.5.png", "6 dpmm, 150 dpi" }, - /* 46*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BOX, 3, -1, -1, -1, -1, 0, 0.7, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.7_wsp3_box1.png", "8 dpmm, 200 dpi" }, - /* 47*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1.4, { 0, 0, "" }, "1111117F", "EEEEEEEE", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_1.4_bgfgalpha.png", "16 dpmm, 400 dpi" }, - /* 48*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2.1, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_2.1.png", "24 dpmm, 600 dpi" }, - /* 49*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_hvwsp1_box2.png", "" }, - /* 50*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.png", "" }, - /* 51*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, -1, -1, -1, -1, 0, 2.0f, { 0, 0, "" }, "", "", 0, "1234", "", 0, "datamatrix_2.0_bind1_dotty.png", "" }, - /* 52*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, 2.0f, { 0, 0, "" }, "", "", 0, "1234", "", 0, "datamatrix_2.0_hvwsp1_bind1_dotty.png", "" }, - /* 53*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678909", "", 0, "dbar_ltd.png", "" }, - /* 54*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5.0, 0, { 0, 0, "" }, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.png", "" }, - /* 55*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, 0, { 0, 0, "" }, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.png", "" }, - /* 56*/ { BARCODE_AZTEC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 4, 7, "Z1.txt" }, "", "", 0, "3456", "", 0, "aztec_z1_seq4of7.png", "" }, - /* 57*/ { BARCODE_PDF417, -1, -1, BARCODE_NO_QUIET_ZONES, -1, -1, -1, 5, 8, 16, 1.5, { 0, 0, "" }, "", "", 0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "", ZINT_WARN_NONCOMPLIANT, "pdf417_#204.png", "Ticket #204 Blank line in PDF417" }, - /* 58*/ { BARCODE_DPD, -1, -1, BARCODE_QUIET_ZONES | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "008182709980000020028101276", "", 0, "dpd_compliant.png", "Now with bind top 3X default" }, - /* 59*/ { BARCODE_CHANNEL, -1, -1, CMYK_COLOUR | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "100,85,0,20", "FFFFFF00", 0, "123", "", 0, "channel_cmyk_nobg.png", "" }, + /* 7*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9771384524017", "", 0, "ean13_ggs_5.2.2.1-1.png", "" }, + /* 8*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9771384524017", "", 0, "ean13_ggs_5.2.2.1-1_gws.png", "" }, + /* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.png", "" }, + /* 10*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2_gws.png", "" }, + /* 11*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.png", "" }, + /* 12*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2_gws.png", "" }, + /* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012", "[91]12345678901234567890123456789", 0, "ean13_cc_cca_5x4.png", "" }, + /* 14*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012", "[91]12345678901234567890123456789", 0, "ean13_cc_cca_5x4_gws.png", "" }, + /* 15*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.png", "" }, + /* 16*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4_gws.png", "" }, + /* 17*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.png", "" }, + /* 18*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_gws.png", "" }, + /* 19*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.png", "" }, + /* 20*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.png", "" }, + /* 21*/ { BARCODE_UPCA, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5_gws.png", "" }, + /* 22*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.png", "" }, + /* 23*/ { BARCODE_UPCA, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_gws.png", "" }, + /* 24*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, 0, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_notext.png", "" }, + /* 25*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.png", "" }, + /* 26*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.png", "" }, + /* 27*/ { BARCODE_UPCA_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4_gws.png", "" }, + /* 28*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.png", "" }, + /* 29*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.png", "" }, + /* 30*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.png", "" }, + /* 31*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12", "", 0, "upce_2addon.png", "" }, + /* 32*/ { BARCODE_UPCE, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12", "", 0, "upce_2addon_gws.png", "" }, + /* 33*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "upce_5addon.png", "" }, + /* 34*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.png", "" }, + /* 35*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT | EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small_gws.png", "" }, + /* 36*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.png", "" }, + /* 37*/ { BARCODE_UPCE_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_gws.png", "" }, + /* 38*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.png", "" }, + /* 39*/ { BARCODE_UPCE_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_gws.png", "" }, + /* 40*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.png", "" }, + /* 41*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567", "", 0, "ean8_gss_5.2.2.2-1.png", "" }, + /* 42*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567", "", 0, "ean8_gss_5.2.2.2-1_gws.png", "" }, + /* 43*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12", "", 0, "ean8_2addon.png", "" }, + /* 44*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12", "", 0, "ean8_2addon_gws.png", "" }, + /* 45*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.png", "" }, + /* 46*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "ean8_5addon_gws.png", "" }, + /* 47*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.png", "" }, + /* 48*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3_gws.png", "" }, + /* 49*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.png", "" }, + /* 50*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3_gws.png", "" }, + /* 51*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345", "", 0, "ean5.png", "" }, + /* 52*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345", "", 0, "ean5_gws.png", "" }, + /* 53*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12", "", 0, "ean2.png", "" }, + /* 54*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12", "", 0, "ean2_gws.png", "" }, + /* 55*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123", "", 0, "code39_small.png", "" }, + /* 56*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3.5, { 0, 0, "" }, "", "", 0, "12345", "", 0, "postnet_zip.png", "300 dpi, using 1/43in X, 300 / 43 / 2 = ~3.5 scale" }, + /* 57*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "CFCECDCC", 0, "12345", "", 0, "pdf417_bgalpha.png", "" }, + /* 58*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "30313233", "", 0, "12345", "", 0, "pdf417_fgalpha.png", "" }, + /* 59*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "20212244", "CFCECDCC", 0, "12345", "", 0, "pdf417_bgfgalpha.png", "" }, + /* 60*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "FF000033", 0, "12345", "", 0, "ultra_bgfgalpha.png", "" }, + /* 61*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "FF000033", 0, "12345", "", 0, "ultra_bgalpha.png", "" }, + /* 62*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "FF0000", 0, "12345", "", 0, "ultra_fgalpha.png", "" }, + /* 63*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "", 0, "12345", "", 0, "ultra_fgalpha_nobg.png", "" }, + /* 64*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345", "", 0, "ultra_hvwsp1_box1.png", "" }, + /* 65*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "00FF007F", "BABDB6", 0, "12345", "", 0, "ultra_fgalpha_hvwsp1_box1.png", "" }, + /* 66*/ { BARCODE_ULTRA, -1, 1, BARCODE_BIND_TOP, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "00FF007F", "BABDB6", 0, "12345", "", 0, "ultra_fgalpha_hvwsp1_bindtop1.png", "" }, + /* 67*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, { 0, 0, "" }, "", "", 0, "1", "", 0, "ultra_odd.png", "" }, + /* 68*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.5.png", "6 dpmm, 150 dpi" }, + /* 69*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BOX, 3, -1, -1, -1, -1, 0, 0.7, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.7_wsp3_box1.png", "8 dpmm, 200 dpi" }, + /* 70*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1.4, { 0, 0, "" }, "1111117F", "EEEEEEEE", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_1.4_bgfgalpha.png", "16 dpmm, 400 dpi" }, + /* 71*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2.1, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_2.1.png", "24 dpmm, 600 dpi" }, + /* 72*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_hvwsp1_box2.png", "" }, + /* 73*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.png", "" }, + /* 74*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, -1, -1, -1, -1, 0, 2.0f, { 0, 0, "" }, "", "", 0, "1234", "", 0, "datamatrix_2.0_bind1_dotty.png", "" }, + /* 75*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, 2.0f, { 0, 0, "" }, "", "", 0, "1234", "", 0, "datamatrix_2.0_hvwsp1_bind1_dotty.png", "" }, + /* 76*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678909", "", 0, "dbar_ltd.png", "" }, + /* 77*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5.0, 0, { 0, 0, "" }, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.png", "" }, + /* 78*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, 0, { 0, 0, "" }, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.png", "" }, + /* 79*/ { BARCODE_AZTEC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 4, 7, "Z1.txt" }, "", "", 0, "3456", "", 0, "aztec_z1_seq4of7.png", "" }, + /* 80*/ { BARCODE_PDF417, -1, -1, BARCODE_NO_QUIET_ZONES, -1, -1, -1, 5, 8, 16, 1.5, { 0, 0, "" }, "", "", 0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "", ZINT_WARN_NONCOMPLIANT, "pdf417_#204.png", "Ticket #204 Blank line in PDF417" }, + /* 81*/ { BARCODE_DPD, -1, -1, BARCODE_QUIET_ZONES | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "008182709980000020028101276", "", 0, "dpd_compliant.png", "Now with bind top 3X default" }, + /* 82*/ { BARCODE_CHANNEL, -1, -1, CMYK_COLOUR | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "100,85,0,20", "FFFFFF00", 0, "123", "", 0, "channel_cmyk_nobg.png", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -341,8 +364,9 @@ static void test_outfile(const testCtx *const p_ctx) { symbol.output_options |= BARCODE_STDOUT; + printf(">>>Begin ignore (PNG to stdout)\n"); fflush(stdout); ret = png_pixel_plot(&symbol, data); - printf(" - ignore (PNG to stdout)\n"); fflush(stdout); + printf("\n<<generate) { char data_dir_path[1024]; @@ -241,8 +251,9 @@ static void test_outfile(const testCtx *const p_ctx) { symbol.output_options |= BARCODE_STDOUT; + printf(">>>Begin ignore (EPS to stdout)\n"); fflush(stdout); ret = ps_plot(&symbol, 0); - printf(" - ignore (EPS to stdout)\n"); fflush(stdout); + printf("<<symbology = data[i].symbology; - if (data[i].show_hrt != -1) { + if (data[i].show_hrt != -1) { /* Default is show_hrt */ symbol->show_hrt = data[i].show_hrt; } + if (data[i].output_options != -1) { + symbol->output_options = data[i].output_options; + } symbol->debug |= debug; length = (int) strlen(data[i].data); @@ -535,7 +575,7 @@ static void test_upcean_hrt(const testCtx *const p_ctx) { if (data[i].expected_text_row == -1) { /* EAN-2/5 just truncates bitmap if no text */ assert_zero(data[i].show_hrt, "i:%d Expected text row -1 but show_hrt set\n", i); if (i && data[i - 1].symbology == symbol->symbology && data[i - 1].show_hrt && data[i - 1].expected_text_row != -1) { - assert_nonzero(data[i].expected_bitmap_height < data[i - 1].expected_text_row, "i:%d (%s) expected_bitmap_height %d >= previous expected_text_row %d\n", + assert_nonzero(data[i].expected_bitmap_height > data[i - 1].expected_text_row, "i:%d (%s) expected_bitmap_height %d <= previous expected_text_row %d\n", i, testUtilBarcodeName(data[i].symbology), data[i].expected_bitmap_height, data[i - 1].expected_text_row); } } else { @@ -548,27 +588,27 @@ static void test_upcean_hrt(const testCtx *const p_ctx) { break; } } - if (symbol->show_hrt) { + if (data[i].show_hrt == -1) { /* Using -1 in data as show_hrt, 1 in data as show_hrt but empty space */ assert_nonzero(text_bits_set, "i:%d (%s) text_bits_set zero\n", i, testUtilBarcodeName(data[i].symbology)); } else { assert_zero(text_bits_set, "i:%d (%s) text_bits_set non-zero\n", i, testUtilBarcodeName(data[i].symbology)); } } - if (data[i].expected_addon_text_row != -1) { - int addon_text_bits_set = 0; - int row = data[i].expected_addon_text_row; + if (data[i].expected_text2_row != -1) { + int text2_bits_set = 0; + int row = data[i].expected_text2_row; int column; - for (column = data[i].expected_addon_text_col; column < data[i].expected_addon_text_col + data[i].expected_addon_text_len; column++) { + for (column = data[i].expected_text2_col; column < data[i].expected_text2_col + data[i].expected_text2_len; column++) { if (is_row_column_black(symbol, row, column)) { - addon_text_bits_set = 1; + text2_bits_set = 1; break; } } - if (symbol->show_hrt) { - assert_nonzero(addon_text_bits_set, "i:%d (%s) addon_text_bits_set zero\n", i, testUtilBarcodeName(data[i].symbology)); + if (data[i].show_hrt == -1) { /* Using -1 in data as show_hrt, 1 in data as show_hrt but empty space */ + assert_nonzero(text2_bits_set, "i:%d (%s) text2_bits_set zero\n", i, testUtilBarcodeName(data[i].symbology)); } else { - assert_zero(addon_text_bits_set, "i:%d (%s) addon_text_bits_set non-zero\n", i, testUtilBarcodeName(data[i].symbology)); + assert_zero(text2_bits_set, "i:%d (%s) text2_bits_set non-zero\n", i, testUtilBarcodeName(data[i].symbology)); } } @@ -612,9 +652,9 @@ static void test_row_separator(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_row_separator"); + testStartSymbol("test_row_separator", &symbol); for (i = 0; i < data_size; i++) { int j, separator_bits_set; @@ -693,9 +733,9 @@ static void test_stacking(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_stacking"); + testStartSymbol("test_stacking", &symbol); for (i = 0; i < data_size; i++) { int length2; @@ -754,12 +794,12 @@ static void test_stacking_too_many(const testCtx *const p_ctx) { int debug = p_ctx->debug; int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char data[] = "A"; char expected_errtxt[] = "Error 770: Too many stacked symbols"; - testStart("test_stacking_too_many"); + testStartSymbol("test_stacking_too_many", &symbol); symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); @@ -899,9 +939,9 @@ static void test_output_options(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_output_options"); + testStartSymbol("test_output_options", &symbol); for (i = 0; i < data_size; i++) { @@ -986,9 +1026,9 @@ static void test_draw_string_wrap(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_draw_string_wrap"); + testStartSymbol("test_draw_string_wrap", &symbol); for (i = 0; i < data_size; i++) { int text_bits_set, row, column; @@ -1059,9 +1099,9 @@ static void test_code128_utf8(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_code128_utf8"); + testStartSymbol("test_code128_utf8", &symbol); for (i = 0; i < data_size; i++) { int text_bits_set, row, column; @@ -1206,10 +1246,10 @@ static void test_scale(const testCtx *const p_ctx) { /* 70*/ { BARCODE_DBAR_EXPSTK, 1, -1, 0, 101, 0.5, "[01]12345678901231", "", 0, 102, 9, 53, 106 * 0.5, 102, 0 /*set_row*/, 32, 36 * 0.5, 2 * 0.5 }, /* Height specified */ /* 71*/ { BARCODE_DBAR_EXPSTK, 1, -1, 0, 102, 0.5, "[01]12345678901231", "", 0, 102, 9, 53, 106 * 0.5, 102, 0 /*set_row*/, 32, 36 * 0.5, 2 * 0.5 }, /* Height specified */ /* 72*/ { BARCODE_DBAR_EXPSTK, 1, -1, 0, 103, 0.5, "[01]12345678901231", "", 0, 102, 9, 53, 106 * 0.5, 102, 0 /*set_row*/, 32, 36 * 0.5, 2 * 0.5 }, /* Height specified */ - /* 73*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142, 116, 104 /*set_row*/, 115, 11, 2 }, /* With no scaling */ - /* 74*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0.5, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142 * 0.5, 55, 18 /*set_row*/, 55, 62, 2 * 0.5 }, - /* 75*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 2.0, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142 * 2, 116 * 2, 104 * 2 + 1 /*set_row*/, 115 * 2, 11 * 2, 2 * 2 }, /* +1 set_row */ - /* 76*/ { BARCODE_UPCE_CC, -1, -1, -1, 2, 0.5, "1234567", "[17]010615[10]A123456\"", 0, 19, 10, 55, 142 * 0.5, 24, 16 /*set_row*/, 23, 62, 2 * 0.5 }, /* Height specified */ + /* 73*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 134, 116, 104 /*set_row*/, 116, 5, 2 }, /* With no scaling */ + /* 74*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0.5, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 134 * 0.5, 55, 18 /*set_row*/, 55, 59, 2 * 0.5 }, + /* 75*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 2.0, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 134 * 2, 116 * 2, 104 * 2 + 1 /*set_row*/, 116 * 2, 5 * 2, 2 * 2 }, /* +1 set_row */ + /* 76*/ { BARCODE_UPCE_CC, -1, -1, -1, 2, 0.5, "1234567", "[17]010615[10]A123456\"", 0, 19, 10, 55, 134 * 0.5, 24, 16 /*set_row*/, 24, 59, 2 * 0.5 }, /* Height specified */ /* 77*/ { BARCODE_MAXICODE, -1, -1, -1, 0, 0, "1234567890", "", 0, 165, 33, 30, 299, 298, 3 /*set_row*/, 7, 10, 9 }, /* With no scaling */ /* 78*/ { BARCODE_MAXICODE, -1, -1, -1, 0, 0.1, "1234567890", "", ZINT_WARN_NONCOMPLIANT, 165, 33, 30, 60, 65, 0 /*set_row*/, 1, 3, 1 }, /* 79*/ { BARCODE_POSTNET, -1, -1, BARCODE_QUIET_ZONES, 0, 0, "12345", "", 0, 12, 2, 63, 146, 30, 3 /*set_row*/, 27, 10, 2 }, /* With no scaling */ @@ -1223,11 +1263,11 @@ static void test_scale(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char *text; - testStart("test_scale"); + testStartSymbol("test_scale", &symbol); for (i = 0; i < data_size; i++) { int row, column; @@ -1349,9 +1389,9 @@ static void test_guard_descent(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_guard_descent"); + testStartSymbol("test_guard_descent", &symbol); for (i = 0; i < data_size; i++) { int row, column; @@ -1414,9 +1454,11 @@ static void test_quiet_zones(const testCtx *const p_ctx) { struct item { int symbology; int output_options; + int option_1; int option_2; int show_hrt; char *data; + char *composite; int ret_raster; float expected_height; @@ -1433,295 +1475,320 @@ static void test_quiet_zones(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_CODE11, -1, -1, -1, "1234", 0, 50, 1, 62, 124, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 1*/ { BARCODE_CODE11, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 62, 164, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 2*/ { BARCODE_CODE11, BARCODE_QUIET_ZONES | BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 62, 124, 116, 1 /*set*/, 0, 100, 0, 2 }, /* BARCODE_NO_QUIET_ZONES trumps BARCODE_QUIET_ZONES */ - /* 3*/ { BARCODE_C25STANDARD, -1, -1, -1, "1234", 0, 50, 1, 57, 114, 116, 1 /*set*/, 0, 100, 0, 8 }, - /* 4*/ { BARCODE_C25STANDARD, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 57, 154, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 5*/ { BARCODE_C25INTER, -1, -1, -1, "1234", 0, 50, 1, 45, 90, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 6*/ { BARCODE_C25INTER, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 45, 130, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 7*/ { BARCODE_C25IATA, -1, -1, -1, "1234", 0, 50, 1, 65, 130, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 8*/ { BARCODE_C25IATA, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 65, 170, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 9*/ { BARCODE_C25LOGIC, -1, -1, -1, "1234", 0, 50, 1, 49, 98, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 10*/ { BARCODE_C25LOGIC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 49, 138, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 11*/ { BARCODE_C25IND, -1, -1, -1, "1234", 0, 50, 1, 75, 150, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 12*/ { BARCODE_C25IND, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 75, 190, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 13*/ { BARCODE_CODE39, -1, -1, -1, "1234", 0, 50, 1, 77, 154, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 14*/ { BARCODE_CODE39, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 77, 194, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 15*/ { BARCODE_EXCODE39, -1, -1, -1, "1234", 0, 50, 1, 77, 154, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 16*/ { BARCODE_EXCODE39, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 77, 194, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 17*/ { BARCODE_EANX, -1, -1, -1, "023456789012", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 110, 212, 14 }, /* EAN-13 */ - /* 18*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 110, 212, 14 }, - /* 19*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 1, 95, 212, 116, 1 /*set*/, 0, 110, 210, 2 }, - /* 20*/ { BARCODE_EANX, -1, -1, 0, "023456789012", 0, 50, 1, 95, 226, 110, 0 /*set*/, 0, 110, 212, 14 }, /* Hide text */ - /* 21*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 1, 95, 226, 110, 0 /*set*/, 0, 110, 212, 14 }, /* Hide text */ - /* 22*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 1, 95, 190, 110, 1 /*set*/, 0, 110, 188, 2 }, /* Hide text */ - /* 23*/ { BARCODE_EANX, -1, -1, -1, "023456789012+12", 0, 50, 1, 122, 276, 116, 0 /*set*/, 16, 110, 266, 10 }, - /* 24*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "023456789012+12", 0, 50, 1, 122, 276, 116, 0 /*set*/, 16, 110, 266, 10 }, - /* 25*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012+12", 0, 50, 1, 122, 266, 116, 1 /*set*/, 16, 110, 262, 4 }, - /* 26*/ { BARCODE_EANX, -1, -1, 0, "023456789012+12", 0, 50, 1, 122, 276, 110, 0 /*set*/, 16, 110, 266, 10 }, /* Hide text */ - /* 27*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, 0, "023456789012+12", 0, 50, 1, 122, 276, 110, 0 /*set*/, 16, 110, 266, 10 }, /* Hide text */ - /* 28*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012+12", 0, 50, 1, 122, 244, 110, 1 /*set*/, 16, 110, 240, 4 }, /* Hide text */ - /* 29*/ { BARCODE_EANX_CHK, -1, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 330, 116, 0 /*set*/, 16, 110, 320, 10 }, - /* 30*/ { BARCODE_EANX_CHK, BARCODE_QUIET_ZONES, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 330, 116, 0 /*set*/, 16, 110, 320, 10 }, - /* 31*/ { BARCODE_EANX_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 320, 116, 1 /*set*/, 16, 110, 318, 2 }, - /* 32*/ { BARCODE_EANX, -1, -1, -1, "0234567", 0, 50, 1, 67, 162, 116, 0 /*set*/, 0, 100, 0, 14 }, /* EAN-8 */ - /* 33*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "0234567", 0, 50, 1, 67, 162, 116, 0 /*set*/, 0, 100, 0, 14 }, /* EAN-8 */ - /* 34*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "0234567", 0, 50, 1, 67, 134, 116, 1 /*set*/, 0, 100, 0, 2 }, /* EAN-8 */ - /* 35*/ { BARCODE_EANX, -1, -1, -1, "02345", 0, 50, 1, 47, 118, 116, 0 /*set*/, 0, 100, 0, 14 }, /* EAN-5 */ - /* 36*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "02345", 0, 50, 1, 47, 118, 116, 0 /*set*/, 0, 100, 0, 14 }, /* EAN-5 */ - /* 37*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "02345", 0, 50, 1, 47, 94, 116, 1 /*set*/, 0, 100, 0, 2 }, /* EAN-5 */ - /* 38*/ { BARCODE_EANX, -1, -1, -1, "02", 0, 50, 1, 20, 64, 116, 0 /*set*/, 0, 100, 0, 14 }, /* EAN-2 */ - /* 39*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "02", 0, 50, 1, 20, 64, 116, 0 /*set*/, 0, 100, 0, 14 }, /* EAN-2 */ - /* 40*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "02", 0, 50, 1, 20, 40, 116, 1 /*set*/, 0, 100, 0, 2 }, /* EAN-2 */ - /* 41*/ { BARCODE_GS1_128, -1, -1, -1, "[20]02", 0, 50, 1, 68, 136, 116, 1 /*set*/, 0, 100, 0, 4 }, - /* 42*/ { BARCODE_GS1_128, BARCODE_QUIET_ZONES, -1, -1, "[20]02", 0, 50, 1, 68, 176, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 43*/ { BARCODE_CODABAR, -1, -1, -1, "A0B", 0, 50, 1, 32, 64, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 44*/ { BARCODE_CODABAR, BARCODE_QUIET_ZONES, -1, -1, "A0B", 0, 50, 1, 32, 104, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 45*/ { BARCODE_CODE128, -1, -1, -1, "1234", 0, 50, 1, 57, 114, 116, 1 /*set*/, 0, 100, 0, 4 }, - /* 46*/ { BARCODE_CODE128, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 57, 154, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 47*/ { BARCODE_DPLEIT, -1, -1, -1, "1234", 0, 72, 1, 135, 270, 160, 1 /*set*/, 0, 100, 0, 2 }, - /* 48*/ { BARCODE_DPLEIT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 72, 1, 135, 310, 160, 0 /*set*/, 0, 100, 0, 20 }, - /* 49*/ { BARCODE_DPIDENT, -1, -1, -1, "1234", 0, 72, 1, 117, 234, 160, 1 /*set*/, 0, 100, 0, 2 }, - /* 50*/ { BARCODE_DPIDENT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 72, 1, 117, 274, 160, 0 /*set*/, 0, 100, 0, 20 }, - /* 51*/ { BARCODE_CODE16K, -1, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 0 /*set*/, 2, 20, 0, 20 }, - /* 52*/ { BARCODE_CODE16K, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 0 /*set*/, 2, 20, 0, 20 }, - /* 53*/ { BARCODE_CODE16K, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 140, 44, 1 /*set*/, 2, 20, 0, 6 }, - /* 54*/ { BARCODE_CODE49, -1, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 0 /*set*/, 2, 20, 0, 20 }, - /* 55*/ { BARCODE_CODE49, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 0 /*set*/, 2, 20, 0, 20 }, - /* 56*/ { BARCODE_CODE49, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 140, 44, 1 /*set*/, 2, 20, 0, 2 }, - /* 57*/ { BARCODE_CODE93, -1, -1, -1, "1234", 0, 50, 1, 73, 146, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 58*/ { BARCODE_CODE93, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 73, 186, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 59*/ { BARCODE_FLAT, -1, -1, -1, "1234", 0, 50, 1, 36, 72, 100, 1 /*set*/, 0, 100, 0, 2 }, - /* 60*/ { BARCODE_FLAT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 36, 72, 100, 1 /*set*/, 0, 100, 0, 2 }, - /* 61*/ { BARCODE_FLAT, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 36, 72, 100, 1 /*set*/, 0, 100, 0, 2 }, - /* 62*/ { BARCODE_DBAR_OMN, -1, -1, -1, "1234", 0, 50, 1, 96, 192, 116, 0 /*set*/, 0, 100, 0, 2 }, - /* 63*/ { BARCODE_DBAR_OMN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 96, 192, 116, 0 /*set*/, 0, 100, 0, 2 }, - /* 64*/ { BARCODE_DBAR_OMN, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 96, 192, 116, 0 /*set*/, 0, 100, 0, 2 }, - /* 65*/ { BARCODE_DBAR_LTD, -1, -1, -1, "1234", 0, 50, 1, 79, 158, 116, 0 /*set*/, 0, 100, 0, 2 }, - /* 66*/ { BARCODE_DBAR_LTD, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 79, 158, 116, 0 /*set*/, 0, 100, 0, 2 }, - /* 67*/ { BARCODE_DBAR_LTD, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 79, 158, 116, 0 /*set*/, 0, 100, 0, 2 }, - /* 68*/ { BARCODE_DBAR_EXP, -1, -1, -1, "[20]02", 0, 34, 1, 102, 204, 84, 0 /*set*/, 0, 84, 0, 2 }, - /* 69*/ { BARCODE_DBAR_EXP, BARCODE_QUIET_ZONES, -1, -1, "[20]02", 0, 34, 1, 102, 204, 84, 0 /*set*/, 0, 84, 0, 2 }, - /* 70*/ { BARCODE_DBAR_EXP, BARCODE_NO_QUIET_ZONES, -1, -1, "[20]02", 0, 34, 1, 102, 204, 84, 0 /*set*/, 0, 84, 0, 2 }, - /* 71*/ { BARCODE_TELEPEN, -1, -1, -1, "1234", 0, 50, 1, 112, 224, 116, 1 /*set*/, 0, 100, 0, 2 }, - /* 72*/ { BARCODE_TELEPEN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 112, 264, 116, 0 /*set*/, 0, 100, 0, 20 }, - /* 73*/ { BARCODE_UPCA, -1, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 100, 0, 18 }, - /* 74*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 100, 0, 18 }, - /* 75*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 100, 0, 18 }, - /* 76*/ { BARCODE_UPCA, -1, -1, 0, "01457137763", 0, 50, 1, 95, 226, 110, 0 /*set*/, 0, 110, 0, 18 }, /* Hide text */ - /* 77*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 1, 95, 226, 110, 0 /*set*/, 0, 110, 0, 18 }, /* Hide text */ - /* 78*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 1, 95, 190, 110, 1 /*set*/, 0, 110, 0, 2 }, /* Hide text */ - /* 79*/ { BARCODE_UPCA, -1, -1, -1, "01457137763+12", 0, 50, 1, 124, 276, 116, 0 /*set*/, 16, 100, 266, 10 }, - /* 80*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, "01457137763+12", 0, 50, 1, 124, 276, 116, 0 /*set*/, 16, 100, 266, 10 }, - /* 81*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763+12", 0, 50, 1, 124, 266, 116, 1 /*set*/, 16, 100, 262, 4 }, - /* 82*/ { BARCODE_UPCA, -1, -1, 0, "01457137763+12", 0, 50, 1, 124, 276, 110, 0 /*set*/, 16, 110, 266, 10 }, /* Hide text */ - /* 83*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, 0, "01457137763+12", 0, 50, 1, 124, 276, 110, 0 /*set*/, 16, 110, 266, 10 }, /* Hide text */ - /* 84*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763+12", 0, 50, 1, 124, 248, 110, 1 /*set*/, 16, 100, 244, 4 }, /* Hide text */ - /* 85*/ { BARCODE_UPCA_CHK, -1, -1, -1, "014571377638+12345", 0, 50, 1, 151, 330, 116, 0 /*set*/, 16, 100, 320, 10 }, - /* 86*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, -1, "014571377638+12345", 0, 50, 1, 151, 330, 116, 0 /*set*/, 16, 100, 320, 10 }, - /* 87*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "014571377638+12345", 0, 50, 1, 151, 320, 116, 1 /*set*/, 16, 100, 318, 2 }, - /* 88*/ { BARCODE_UPCA_CHK, -1, -1, 0, "014571377638+12345", 0, 50, 1, 151, 330, 110, 0 /*set*/, 16, 110, 320, 10 }, /* Hide text */ - /* 89*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, 0, "014571377638+12345", 0, 50, 1, 151, 330, 110, 0 /*set*/, 16, 110, 320, 10 }, /* Hide text */ - /* 90*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, 0, "014571377638+12345", 0, 50, 1, 151, 302, 110, 1 /*set*/, 16, 100, 300, 2 }, /* Hide text */ - /* 91*/ { BARCODE_UPCE, -1, -1, -1, "8145713", 0, 50, 1, 51, 134, 116, 0 /*set*/, 0, 100, 120, 18 }, - /* 92*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, "8145713", 0, 50, 1, 51, 134, 116, 0 /*set*/, 0, 100, 120, 18 }, - /* 93*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713", 0, 50, 1, 51, 134, 116, 0 /*set*/, 0, 100, 120, 18 }, - /* 94*/ { BARCODE_UPCE, -1, -1, 0, "8145713", 0, 50, 1, 51, 134, 110, 0 /*set*/, 0, 100, 120, 18 }, /* Hide text */ - /* 95*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, 0, "8145713", 0, 50, 1, 51, 134, 110, 0 /*set*/, 0, 100, 120, 18 }, /* Hide text */ - /* 96*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713", 0, 50, 1, 51, 102, 110, 1 /*set*/, 0, 110, 100, 2 }, /* Hide text */ - /* 97*/ { BARCODE_UPCE_CHK, -1, -1, -1, "81457132+12", 0, 50, 1, 78, 184, 116, 0 /*set*/, 16, 100, 174, 10 }, - /* 98*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, -1, "81457132+12", 0, 50, 1, 78, 184, 116, 0 /*set*/, 16, 100, 174, 10 }, - /* 99*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "81457132+12", 0, 50, 1, 78, 174, 116, 1 /*set*/, 16, 100, 170, 4 }, - /*100*/ { BARCODE_UPCE_CHK, -1, -1, 0, "81457132+12", 0, 50, 1, 78, 184, 110, 0 /*set*/, 16, 110, 174, 10 }, /* Hide text */ - /*101*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, 0, "81457132+12", 0, 50, 1, 78, 184, 110, 0 /*set*/, 16, 110, 174, 10 }, /* Hide text */ - /*102*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, 0, "81457132+12", 0, 50, 1, 78, 156, 110, 1 /*set*/, 16, 100, 152, 4 }, /* Hide text */ - /*103*/ { BARCODE_UPCE, -1, -1, -1, "8145713+12345", 0, 50, 1, 105, 238, 116, 0 /*set*/, 16, 100, 228, 10 }, - /*104*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, "8145713+12345", 0, 50, 1, 105, 238, 116, 0 /*set*/, 16, 100, 228, 10 }, - /*105*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713+12345", 0, 50, 1, 105, 228, 116, 1 /*set*/, 16, 100, 216, 2 }, - /*106*/ { BARCODE_UPCE, -1, -1, 0, "8145713+12345", 0, 50, 1, 105, 238, 110, 0 /*set*/, 16, 110, 228, 10 }, /* Hide text */ - /*107*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, 0, "8145713+12345", 0, 50, 1, 105, 238, 110, 0 /*set*/, 16, 110, 228, 10 }, /* Hide text */ - /*108*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713+12345", 0, 50, 1, 105, 210, 110, 1 /*set*/, 16, 100, 208, 2 }, /* Hide text */ - /*109*/ { BARCODE_POSTNET, -1, -1, -1, "12345", 0, 12, 2, 63, 126, 24, 1 /*set*/, 0, 24, 0, 2 }, - /*110*/ { BARCODE_POSTNET, BARCODE_QUIET_ZONES, -1, -1, "12345", 0, 12, 2, 63, 146, 30, 0 /*set*/, 0, 30, 0, 10 }, - /*111*/ { BARCODE_MSI_PLESSEY, -1, -1, -1, "1234", 0, 50, 1, 55, 110, 116, 1 /*set*/, 0, 100, 0, 4 }, - /*112*/ { BARCODE_MSI_PLESSEY, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 55, 158, 116, 0 /*set*/, 0, 100, 0, 24 }, - /*113*/ { BARCODE_FIM, -1, -1, -1, "A", 0, 50, 1, 17, 34, 100, 1 /*set*/, 0, 100, 0, 2 }, - /*114*/ { BARCODE_FIM, BARCODE_QUIET_ZONES, -1, -1, "A", 0, 50, 1, 17, 50, 100, 0 /*set*/, 0, 100, 0, 10 }, - /*115*/ { BARCODE_LOGMARS, -1, -1, -1, "1234", 0, 50, 1, 95, 190, 116, 1 /*set*/, 0, 100, 0, 2 }, - /*116*/ { BARCODE_LOGMARS, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 95, 230, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*117*/ { BARCODE_PHARMA, -1, -1, -1, "1234", 0, 50, 1, 38, 76, 100, 1 /*set*/, 0, 100, 0, 2 }, - /*118*/ { BARCODE_PHARMA, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 38, 100, 100, 0 /*set*/, 0, 100, 0, 12 }, - /*119*/ { BARCODE_PZN, -1, -1, -1, "1234", 0, 50, 1, 142, 284, 116, 1 /*set*/, 0, 100, 0, 2 }, - /*120*/ { BARCODE_PZN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 142, 324, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*121*/ { BARCODE_PHARMA_TWO, -1, -1, -1, "1234", 0, 10, 2, 13, 26, 20, 1 /*set*/, 10, 20, 0, 2 }, - /*122*/ { BARCODE_PHARMA_TWO, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 10, 2, 13, 50, 20, 0 /*set*/, 10, 20, 0, 12 }, - /*123*/ { BARCODE_CEPNET, -1, -1, -1, "12345678", 0, 5, 2, 93, 186, 10, 1 /*set*/, 0, 10, 0, 2 }, - /*124*/ { BARCODE_CEPNET, BARCODE_QUIET_ZONES, -1, -1, "12345678", 0, 5, 2, 93, 226, 16, 0 /*set*/, 0, 16, 0, 20 }, - /*125*/ { BARCODE_PDF417, -1, -1, -1, "1234", 0, 18, 6, 103, 206, 36, 1 /*set*/, 0, 36, 0, 16 }, - /*126*/ { BARCODE_PDF417, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 18, 6, 103, 214, 44, 0 /*set*/, 0, 44, 0, 4 }, - /*127*/ { BARCODE_PDF417COMP, -1, -1, -1, "1234", 0, 18, 6, 69, 138, 36, 1 /*set*/, 0, 36, 0, 16 }, - /*128*/ { BARCODE_PDF417COMP, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 18, 6, 69, 146, 44, 0 /*set*/, 0, 44, 0, 4 }, - /*129*/ { BARCODE_MAXICODE, -1, -1, -1, "1234", 0, 165, 33, 30, 299, 298, 1 /*set*/, 21, 25, 0, 9 }, - /*130*/ { BARCODE_MAXICODE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 165, 33, 30, 319, 318, 0 /*set*/, 0, 318, 0, 9 }, - /*131*/ { BARCODE_MAXICODE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 165, 33, 30, 319, 318, 0 /*set*/, 0, 9, 0, 319 }, - /*132*/ { BARCODE_QRCODE, -1, -1, -1, "1234", 0, 21, 21, 21, 42, 42, 1 /*set*/, 0, 2, 0, 14 }, - /*133*/ { BARCODE_QRCODE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 21, 21, 21, 58, 58, 0 /*set*/, 0, 8, 0, 58 }, - /*134*/ { BARCODE_CODE128AB, -1, -1, -1, "1234", 0, 50, 1, 79, 158, 116, 1 /*set*/, 0, 100, 0, 4 }, - /*135*/ { BARCODE_CODE128AB, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 79, 198, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*136*/ { BARCODE_AUSPOST, -1, -1, -1, "12345678", 0, 8, 3, 73, 146, 16, 1 /*set*/, 0, 10, 0, 2 }, - /*137*/ { BARCODE_AUSPOST, BARCODE_QUIET_ZONES, -1, -1, "12345678", 0, 8, 3, 73, 186, 28, 0 /*set*/, 0, 28, 0, 20 }, - /*138*/ { BARCODE_AUSREPLY, -1, -1, -1, "1234", 0, 8, 3, 73, 146, 16, 1 /*set*/, 0, 10, 0, 2 }, - /*139*/ { BARCODE_AUSREPLY, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 73, 186, 28, 0 /*set*/, 0, 28, 0, 20 }, - /*140*/ { BARCODE_AUSROUTE, -1, -1, -1, "1234", 0, 8, 3, 73, 146, 16, 1 /*set*/, 0, 10, 0, 2 }, - /*141*/ { BARCODE_AUSROUTE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 73, 186, 28, 0 /*set*/, 0, 28, 0, 20 }, - /*142*/ { BARCODE_AUSREDIRECT, -1, -1, -1, "1234", 0, 8, 3, 73, 146, 16, 1 /*set*/, 0, 10, 0, 2 }, - /*143*/ { BARCODE_AUSREDIRECT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 73, 186, 28, 0 /*set*/, 0, 28, 0, 20 }, - /*144*/ { BARCODE_ISBNX, -1, -1, -1, "123456789X", 0, 50, 1, 95, 226, 116, 0 /*set*/, 16, 110, 212, 14 }, - /*145*/ { BARCODE_ISBNX, BARCODE_QUIET_ZONES, -1, -1, "123456789X", 0, 50, 1, 95, 226, 116, 0 /*set*/, 16, 110, 212, 14 }, - /*146*/ { BARCODE_ISBNX, BARCODE_NO_QUIET_ZONES, -1, -1, "123456789X", 0, 50, 1, 95, 212, 116, 1 /*set*/, 16, 110, 210, 2 }, - /*147*/ { BARCODE_RM4SCC, -1, -1, -1, "1234", 0, 8, 3, 43, 86, 16, 1 /*set*/, 0, 10, 0, 2 }, - /*148*/ { BARCODE_RM4SCC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 43, 98, 28, 0 /*set*/, 0, 28, 0, 6 }, - /*149*/ { BARCODE_DATAMATRIX, -1, -1, -1, "1234", 0, 10, 10, 10, 20, 20, 1 /*set*/, 0, 20, 0, 2 }, - /*150*/ { BARCODE_DATAMATRIX, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 10, 10, 10, 24, 24, 0 /*set*/, 0, 24, 0, 2 }, - /*151*/ { BARCODE_EAN14, -1, -1, -1, "1234", 0, 50, 1, 134, 268, 116, 1 /*set*/, 0, 100, 0, 4 }, - /*152*/ { BARCODE_EAN14, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 134, 308, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*153*/ { BARCODE_VIN, -1, -1, -1, "12345678701234567", 0, 50, 1, 246, 492, 116, 1 /*set*/, 0, 100, 0, 2 }, - /*154*/ { BARCODE_VIN, BARCODE_QUIET_ZONES, -1, -1, "12345678701234567", 0, 50, 1, 246, 532, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*155*/ { BARCODE_CODABLOCKF, -1, -1, -1, "1234", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 }, - /*156*/ { BARCODE_CODABLOCKF, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 }, - /*157*/ { BARCODE_CODABLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 101, 202, 44, 1 /*set*/, 0, 44, 0, 4 }, - /*158*/ { BARCODE_NVE18, -1, -1, -1, "1234", 0, 50, 1, 156, 312, 116, 1 /*set*/, 0, 100, 0, 4 }, - /*159*/ { BARCODE_NVE18, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 156, 352, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*160*/ { BARCODE_JAPANPOST, -1, -1, -1, "1234", 0, 8, 3, 133, 266, 16, 1 /*set*/, 0, 16, 0, 2 }, - /*161*/ { BARCODE_JAPANPOST, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 133, 278, 28, 0 /*set*/, 0, 28, 0, 6 }, - /*162*/ { BARCODE_KOREAPOST, -1, -1, -1, "1234", 0, 50, 1, 167, 334, 116, 0 /*set*/, 0, 100, 0, 8 }, - /*163*/ { BARCODE_KOREAPOST, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 167, 374, 116, 0 /*set*/, 0, 100, 0, 28 }, - /*164*/ { BARCODE_DBAR_STK, -1, -1, -1, "1234", 0, 13, 3, 50, 100, 26, 1 /*set*/, 12, 26, 0, 2 }, - /*165*/ { BARCODE_DBAR_STK, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 13, 3, 50, 100, 26, 1 /*set*/, 12, 26, 0, 2 }, - /*166*/ { BARCODE_DBAR_STK, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 13, 3, 50, 100, 26, 1 /*set*/, 12, 26, 0, 2 }, - /*167*/ { BARCODE_DBAR_OMNSTK, -1, -1, -1, "1234", 0, 69, 5, 50, 100, 138, 1 /*set*/, 72, 138, 0, 2 }, - /*168*/ { BARCODE_DBAR_OMNSTK, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 69, 5, 50, 100, 138, 1 /*set*/, 72, 138, 0, 2 }, - /*169*/ { BARCODE_DBAR_OMNSTK, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 69, 5, 50, 100, 138, 1 /*set*/, 72, 138, 0, 2 }, - /*170*/ { BARCODE_DBAR_EXPSTK, -1, -1, -1, "[20]12", 0, 34, 1, 102, 204, 68, 1 /*set*/, 0, 68, 2, 2 }, - /*171*/ { BARCODE_DBAR_EXPSTK, BARCODE_QUIET_ZONES, -1, -1, "[20]12", 0, 34, 1, 102, 204, 68, 1 /*set*/, 0, 68, 2, 2 }, - /*172*/ { BARCODE_DBAR_EXPSTK, BARCODE_NO_QUIET_ZONES, -1, -1, "[20]12", 0, 34, 1, 102, 204, 68, 1 /*set*/, 0, 68, 2, 2 }, - /*173*/ { BARCODE_PLANET, -1, -1, -1, "12345678901", 0, 12, 2, 123, 246, 24, 1 /*set*/, 0, 24, 0, 2 }, - /*174*/ { BARCODE_PLANET, BARCODE_QUIET_ZONES, -1, -1, "12345678901", 0, 12, 2, 123, 266, 30, 0 /*set*/, 0, 30, 0, 10 }, - /*175*/ { BARCODE_MICROPDF417, -1, -1, -1, "1234", 0, 22, 11, 38, 76, 44, 1 /*set*/, 0, 44, 0, 4 }, - /*176*/ { BARCODE_MICROPDF417, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 22, 11, 38, 80, 48, 0 /*set*/, 0, 48, 0, 2 }, - /*177*/ { BARCODE_USPS_IMAIL, -1, -1, -1, "12345678901234567890", 0, 8, 3, 129, 258, 16, 1 /*set*/, 0, 10, 0, 2 }, - /*178*/ { BARCODE_USPS_IMAIL, BARCODE_QUIET_ZONES, -1, -1, "12345678901234567890", 0, 8, 3, 129, 276, 20, 0 /*set*/, 0, 20, 0, 9 }, - /*179*/ { BARCODE_PLESSEY, -1, -1, -1, "1234", 0, 50, 1, 131, 262, 116, 1 /*set*/, 0, 100, 0, 6 }, - /*180*/ { BARCODE_PLESSEY, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 131, 310, 116, 0 /*set*/, 0, 100, 0, 24 }, - /*181*/ { BARCODE_TELEPEN_NUM, -1, -1, -1, "1234", 0, 50, 1, 80, 160, 116, 1 /*set*/, 0, 100, 0, 2 }, - /*182*/ { BARCODE_TELEPEN_NUM, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 80, 200, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*183*/ { BARCODE_ITF14, -1, -1, -1, "1234", 0, 50, 1, 135, 330, 136, 0 /*set*/, 10, 110, 10, 20 }, - /*184*/ { BARCODE_ITF14, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 135, 330, 136, 0 /*set*/, 10, 110, 10, 20 }, - /*185*/ { BARCODE_ITF14, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 135, 290, 136, 1 /*set*/, 0, 120, 10, 2 }, - /*186*/ { BARCODE_KIX, -1, -1, -1, "1234", 0, 8, 3, 31, 62, 16, 1 /*set*/, 6, 10, 0, 2 }, - /*187*/ { BARCODE_KIX, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 31, 74, 28, 0 /*set*/, 0, 28, 0, 6 }, - /*188*/ { BARCODE_AZTEC, -1, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 1 /*set*/, 2, 6, 0, 4 }, - /*189*/ { BARCODE_AZTEC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 1 /*set*/, 2, 6, 0, 4 }, - /*190*/ { BARCODE_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 1 /*set*/, 2, 6, 0, 4 }, - /*191*/ { BARCODE_DAFT, -1, -1, -1, "FADT", 0, 8, 3, 7, 14, 16, 1 /*set*/, 0, 16, 0, 2 }, - /*192*/ { BARCODE_DAFT, BARCODE_QUIET_ZONES, -1, -1, "FADT", 0, 8, 3, 7, 14, 16, 1 /*set*/, 0, 16, 0, 2 }, - /*193*/ { BARCODE_DAFT, BARCODE_NO_QUIET_ZONES, -1, -1, "FADT", 0, 8, 3, 7, 14, 16, 1 /*set*/, 0, 16, 0, 2 }, - /*194*/ { BARCODE_DPD, -1, -1, -1, "1234567890123456789012345678", 0, 50, 1, 189, 378, 128, 1 /*set*/, 0, 100, 0, 4 }, - /*195*/ { BARCODE_DPD, BARCODE_QUIET_ZONES, -1, -1, "1234567890123456789012345678", 0, 50, 1, 189, 428, 128, 0 /*set*/, 0, 100, 0, 24 }, - /*196*/ { BARCODE_MICROQR, -1, -1, -1, "1234", 0, 11, 11, 11, 22, 22, 1 /*set*/, 0, 14, 0, 2 }, - /*197*/ { BARCODE_MICROQR, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 11, 11, 11, 30, 30, 0 /*set*/, 0, 30, 0, 4 }, - /*198*/ { BARCODE_HIBC_128, -1, -1, -1, "1234", 0, 50, 1, 90, 180, 116, 1 /*set*/, 0, 100, 0, 4 }, - /*199*/ { BARCODE_HIBC_128, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 90, 220, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*200*/ { BARCODE_HIBC_39, -1, -1, -1, "1234", 0, 50, 1, 127, 254, 116, 1 /*set*/, 0, 100, 0, 2 }, - /*201*/ { BARCODE_HIBC_39, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 127, 294, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*202*/ { BARCODE_HIBC_DM, -1, -1, -1, "1234", 0, 12, 12, 12, 24, 24, 1 /*set*/, 0, 24, 0, 2 }, - /*203*/ { BARCODE_HIBC_DM, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 12, 12, 12, 28, 28, 0 /*set*/, 0, 28, 0, 2 }, - /*204*/ { BARCODE_HIBC_QR, -1, -1, -1, "1234", 0, 21, 21, 21, 42, 42, 1 /*set*/, 0, 2, 0, 14 }, - /*205*/ { BARCODE_HIBC_QR, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 21, 21, 21, 58, 58, 0 /*set*/, 0, 58, 0, 8 }, - /*206*/ { BARCODE_HIBC_PDF, -1, -1, -1, "1234", 0, 21, 7, 103, 206, 42, 1 /*set*/, 0, 42, 0, 16 }, - /*207*/ { BARCODE_HIBC_PDF, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 21, 7, 103, 214, 50, 0 /*set*/, 0, 50, 0, 4 }, - /*208*/ { BARCODE_HIBC_MICPDF, -1, -1, -1, "1234", 0, 12, 6, 82, 164, 24, 1 /*set*/, 0, 24, 0, 4 }, - /*209*/ { BARCODE_HIBC_MICPDF, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 12, 6, 82, 168, 28, 0 /*set*/, 0, 28, 0, 2 }, - /*210*/ { BARCODE_HIBC_BLOCKF, -1, -1, -1, "1234", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 }, - /*211*/ { BARCODE_HIBC_BLOCKF, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 }, - /*212*/ { BARCODE_HIBC_BLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 101, 202, 44, 1 /*set*/, 0, 44, 0, 4 }, - /*213*/ { BARCODE_HIBC_AZTEC, -1, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 }, - /*214*/ { BARCODE_HIBC_AZTEC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 }, - /*215*/ { BARCODE_HIBC_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 }, - /*216*/ { BARCODE_DOTCODE, -1, -1, -1, "1234", 0, 10, 10, 13, 27, 21, 1 /*set*/, 5, 6, 1, 1 }, - /*217*/ { BARCODE_DOTCODE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 10, 10, 13, 39, 33, 0 /*set*/, 0, 33, 0, 7 }, - /*218*/ { BARCODE_HANXIN, -1, -1, -1, "1234", 0, 23, 23, 23, 46, 46, 1 /*set*/, 0, 2, 0, 14 }, - /*219*/ { BARCODE_HANXIN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 23, 23, 23, 58, 58, 0 /*set*/, 0, 58, 0, 6 }, - /*220*/ { BARCODE_MAILMARK_2D, -1, -1, -1, "012100123412345678AB19XY1A 0", 0, 24, 24, 24, 48, 48, 1 /*set*/, 0, 48, 0, 2 }, - /*221*/ { BARCODE_MAILMARK_2D, BARCODE_QUIET_ZONES, -1, -1, "012100123412345678AB19XY1A 0", 0, 24, 24, 24, 64, 64, 0 /*set*/, 0, 64, 0, 8 }, - /*222*/ { BARCODE_UPU_S10, -1, -1, -1, "EE876543216CA", 0, 50, 1, 156, 312, 116, 1 /*set*/, 0, 100, 0, 4 }, - /*223*/ { BARCODE_UPU_S10, BARCODE_QUIET_ZONES, -1, -1, "EE876543216CA", 0, 50, 1, 156, 352, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*224*/ { BARCODE_MAILMARK_4S, -1, -1, -1, "01000000000000000AA00AA0A", 0, 10, 3, 155, 310, 20, 1 /*set*/, 0, 20, 0, 2 }, - /*225*/ { BARCODE_MAILMARK_4S, BARCODE_QUIET_ZONES, -1, -1, "01000000000000000AA00AA0A", 0, 10, 3, 155, 322, 32, 0 /*set*/, 0, 32, 0, 6 }, - /*226*/ { BARCODE_AZRUNE, -1, -1, -1, "123", 0, 11, 11, 11, 22, 22, 1 /*set*/, 0, 6, 0, 4 }, - /*227*/ { BARCODE_AZRUNE, BARCODE_QUIET_ZONES, -1, -1, "123", 0, 11, 11, 11, 22, 22, 1 /*set*/, 0, 6, 0, 4 }, - /*228*/ { BARCODE_AZRUNE, BARCODE_NO_QUIET_ZONES, -1, -1, "123", 0, 11, 11, 11, 22, 22, 1 /*set*/, 0, 6, 0, 4 }, - /*229*/ { BARCODE_CODE32, -1, -1, -1, "1234", 0, 50, 1, 103, 206, 116, 1 /*set*/, 0, 100, 0, 2 }, - /*230*/ { BARCODE_CODE32, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 103, 246, 116, 0 /*set*/, 0, 100, 0, 20 }, - /*231*/ { BARCODE_EANX_CC, -1, -1, -1, "023456789012", 0, 50, 7, 99, 234, 116, 0 /*set*/, 24, 110, 218, 16 }, - /*232*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 7, 99, 234, 116, 0 /*set*/, 24, 110, 218, 16 }, - /*233*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 7, 99, 220, 116, 0 /*set*/, 24, 110, 218, 2 }, - /*234*/ { BARCODE_EANX_CC, -1, -1, 0, "023456789012", 0, 50, 7, 99, 234, 110, 0 /*set*/, 24, 110, 0, 28 }, /* Hide text */ - /*235*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 7, 99, 234, 110, 0 /*set*/, 24, 110, 0, 28 }, /* Hide text */ - /*236*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 7, 99, 198, 110, 1 /*set*/, 24, 110, 6, 2 }, /* Hide text */ - /*237*/ { BARCODE_GS1_128_CC, -1, -1, -1, "[20]02", 0, 50, 5, 99, 198, 116, 1 /*set*/, 14, 100, 24, 4 }, - /*238*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, -1, -1, "[20]02", 0, 50, 5, 99, 238, 116, 0 /*set*/, 14, 100, 24, 20 }, - /*239*/ { BARCODE_DBAR_OMN_CC, -1, -1, -1, "1234", 0, 21, 5, 100, 200, 58, 1 /*set*/, 14, 42, 10, 2 }, - /*240*/ { BARCODE_DBAR_OMN_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 21, 5, 100, 204, 58, 0 /*set*/, 14, 42, 10, 2 }, - /*241*/ { BARCODE_DBAR_LTD_CC, -1, -1, -1, "1234", 0, 19, 6, 79, 158, 54, 1 /*set*/, 18, 38, 2, 2 }, - /*242*/ { BARCODE_DBAR_LTD_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 19, 6, 79, 162, 54, 0 /*set*/, 18, 38, 2, 2 }, - /*243*/ { BARCODE_DBAR_EXP_CC, -1, -1, -1, "[20]12", 0, 41, 5, 102, 204, 98, 1 /*set*/, 14, 82, 2, 2 }, - /*244*/ { BARCODE_DBAR_EXP_CC, BARCODE_QUIET_ZONES, -1, -1, "[20]12", 0, 41, 5, 102, 208, 98, 0 /*set*/, 14, 82, 2, 2 }, - /*245*/ { BARCODE_UPCA_CC, -1, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116, 1 /*set*/, 24, 100, 212, 2 }, - /*246*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116, 1 /*set*/, 24, 100, 212, 2 }, - /*247*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116, 1 /*set*/, 24, 100, 212, 2 }, - /*248*/ { BARCODE_UPCA_CC, -1, -1, 0, "01457137763", 0, 50, 7, 99, 234, 110, 0 /*set*/, 24, 110, 0, 24 }, /* Hide text */ - /*249*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 7, 99, 234, 110, 0 /*set*/, 24, 110, 0, 24 }, /* Hide text */ - /*250*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 7, 99, 198, 110, 1 /*set*/, 24, 110, 6, 2 }, /* Hide text */ - /*251*/ { BARCODE_UPCE_CC, -1, -1, -1, "8145713", 0, 50, 9, 55, 142, 116, 1 /*set*/, 32, 100, 124, 2 }, - /*252*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, -1, "8145713", 0, 50, 9, 55, 142, 116, 1 /*set*/, 32, 100, 124, 2 }, - /*253*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713", 0, 50, 9, 55, 142, 116, 1 /*set*/, 32, 100, 124, 2 }, - /*254*/ { BARCODE_UPCE_CC, -1, -1, 0, "8145713", 0, 50, 9, 55, 142, 110, 0 /*set*/, 32, 110, 0, 24 }, /* Hide text */ - /*255*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, 0, "8145713", 0, 50, 9, 55, 142, 110, 0 /*set*/, 32, 110, 0, 24 }, /* Hide text */ - /*256*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713", 0, 50, 9, 55, 110, 110, 1 /*set*/, 32, 110, 6, 2 }, /* Hide text */ - /*257*/ { BARCODE_DBAR_STK_CC, -1, -1, -1, "1234", 0, 24, 9, 56, 112, 48, 1 /*set*/, 34, 48, 0, 2 }, - /*258*/ { BARCODE_DBAR_STK_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 24, 9, 56, 116, 48, 0 /*set*/, 34, 48, 0, 2 }, - /*259*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, -1, "1234", 0, 80, 11, 56, 112, 160, 1 /*set*/, 94, 160, 0, 2 }, - /*260*/ { BARCODE_DBAR_OMNSTK_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 80, 11, 56, 116, 160, 0 /*set*/, 94, 160, 0, 2 }, - /*261*/ { BARCODE_DBAR_EXPSTK_CC, -1, -1, -1, "[20]12", 0, 41, 5, 102, 204, 82, 1 /*set*/, 14, 82, 2, 2 }, - /*262*/ { BARCODE_DBAR_EXPSTK_CC, BARCODE_QUIET_ZONES, -1, -1, "[20]12", 0, 41, 5, 102, 208, 82, 0 /*set*/, 14, 82, 2, 2 }, - /*263*/ { BARCODE_CHANNEL, -1, -1, -1, "1234", 0, 50, 1, 27, 54, 116, 1 /*set*/, 0, 100, 0, 2 }, - /*264*/ { BARCODE_CHANNEL, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 27, 60, 116, 0 /*set*/, 0, 100, 0, 2 }, - /*265*/ { BARCODE_CODEONE, -1, -1, -1, "1234", 0, 16, 16, 18, 36, 32, 1 /*set*/, 0, 6, 0, 2 }, /* Versions A to H - no quiet zone */ - /*266*/ { BARCODE_CODEONE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 16, 16, 18, 36, 32, 1 /*set*/, 0, 6, 0, 2 }, - /*267*/ { BARCODE_CODEONE, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 16, 16, 18, 36, 32, 1 /*set*/, 0, 6, 0, 2 }, - /*268*/ { BARCODE_CODEONE, -1, 9, -1, "1234", 0, 8, 8, 11, 22, 16, 1 /*set*/, 10, 16, 0, 2 }, /* Version S (& T) have quiet zones */ - /*269*/ { BARCODE_CODEONE, BARCODE_QUIET_ZONES, 9, -1, "1234", 0, 8, 8, 11, 26, 16, 0 /*set*/, 0, 16, 0, 2 }, - /*270*/ { BARCODE_GRIDMATRIX, -1, -1, -1, "1234", 0, 18, 18, 18, 36, 36, 1 /*set*/, 0, 2, 0, 12 }, - /*271*/ { BARCODE_GRIDMATRIX, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 18, 18, 18, 60, 60, 0 /*set*/, 0, 60, 0, 12 }, - /*272*/ { BARCODE_UPNQR, -1, -1, -1, "1234", 0, 77, 77, 77, 154, 154, 1 /*set*/, 0, 14, 0, 2 }, - /*273*/ { BARCODE_UPNQR, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 77, 77, 77, 170, 170, 0 /*set*/, 0, 170, 0, 8 }, - /*274*/ { BARCODE_ULTRA, -1, -1, -1, "1234", 0, 13, 13, 15, 30, 26, 1 /*set*/, 0, 2, 0, 30 }, - /*275*/ { BARCODE_ULTRA, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 13, 13, 15, 34, 30, 0 /*set*/, 0, 2, 0, 34 }, - /*276*/ { BARCODE_RMQR, -1, -1, -1, "1234", 0, 11, 11, 27, 54, 22, 1 /*set*/, 0, 14, 0, 2 }, - /*277*/ { BARCODE_RMQR, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 11, 11, 27, 62, 30, 0 /*set*/, 0, 30, 0, 4 }, - /*278*/ { BARCODE_BC412, -1, -1, -1, "1234567", 0, 16.5, 1, 102, 204, 49, 1 /*set*/, 0, 32, 0, 2 }, - /*279*/ { BARCODE_BC412, BARCODE_QUIET_ZONES, -1, -1, "1234567", 0, 16.5, 1, 102, 244, 49, 0 /*set*/, 0, 32, 0, 2 }, + /* 0*/ { BARCODE_CODE11, -1, -1, -1, -1, "1234", "", 0, 50, 1, 62, 124, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 1*/ { BARCODE_CODE11, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 62, 164, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 2*/ { BARCODE_CODE11, BARCODE_QUIET_ZONES | BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 62, 124, 116, 1 /*set*/, 0, 100, 0, 2 }, /* BARCODE_NO_QUIET_ZONES trumps BARCODE_QUIET_ZONES */ + /* 3*/ { BARCODE_C25STANDARD, -1, -1, -1, -1, "1234", "", 0, 50, 1, 57, 114, 116, 1 /*set*/, 0, 100, 0, 8 }, + /* 4*/ { BARCODE_C25STANDARD, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 57, 154, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 5*/ { BARCODE_C25INTER, -1, -1, -1, -1, "1234", "", 0, 50, 1, 45, 90, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 6*/ { BARCODE_C25INTER, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 45, 130, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 7*/ { BARCODE_C25IATA, -1, -1, -1, -1, "1234", "", 0, 50, 1, 65, 130, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 8*/ { BARCODE_C25IATA, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 65, 170, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 9*/ { BARCODE_C25LOGIC, -1, -1, -1, -1, "1234", "", 0, 50, 1, 49, 98, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 10*/ { BARCODE_C25LOGIC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 49, 138, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 11*/ { BARCODE_C25IND, -1, -1, -1, -1, "1234", "", 0, 50, 1, 75, 150, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 12*/ { BARCODE_C25IND, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 75, 190, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 13*/ { BARCODE_CODE39, -1, -1, -1, -1, "1234", "", 0, 50, 1, 77, 154, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 14*/ { BARCODE_CODE39, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 77, 194, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 15*/ { BARCODE_EXCODE39, -1, -1, -1, -1, "1234", "", 0, 50, 1, 77, 154, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 16*/ { BARCODE_EXCODE39, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 77, 194, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 17*/ { BARCODE_EANX, -1, -1, -1, -1, "023456789012", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 110, 212, 14 }, /* EAN-13 */ + /* 18*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "023456789012", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 110, 212, 14 }, + /* 19*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "023456789012", "", 0, 50, 1, 95, 212, 116, 1 /*set*/, 0, 110, 210, 2 }, + /* 20*/ { BARCODE_EANX, -1, -1, -1, 0, "023456789012", "", 0, 50, 1, 95, 226, 110, 0 /*set*/, 0, 110, 212, 14 }, /* Hide text */ + /* 21*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, 0, "023456789012", "", 0, 50, 1, 95, 226, 110, 0 /*set*/, 0, 110, 212, 14 }, /* Hide text */ + /* 22*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "023456789012", "", 0, 50, 1, 95, 190, 110, 1 /*set*/, 0, 110, 188, 2 }, /* Hide text */ + /* 23*/ { BARCODE_EANX, -1, -1, -1, -1, "023456789012+12", "", 0, 50, 1, 122, 276, 116, 0 /*set*/, 16, 110, 266, 10 }, + /* 24*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "023456789012+12", "", 0, 50, 1, 122, 276, 116, 0 /*set*/, 16, 110, 266, 10 }, + /* 25*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "023456789012+12", "", 0, 50, 1, 122, 266, 116, 1 /*set*/, 16, 110, 262, 4 }, + /* 26*/ { BARCODE_EANX, -1, -1, -1, 0, "023456789012+12", "", 0, 50, 1, 122, 276, 110, 0 /*set*/, 16, 110, 266, 10 }, /* Hide text */ + /* 27*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, 0, "023456789012+12", "", 0, 50, 1, 122, 276, 110, 0 /*set*/, 16, 110, 266, 10 }, /* Hide text */ + /* 28*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "023456789012+12", "", 0, 50, 1, 122, 244, 110, 1 /*set*/, 16, 110, 240, 4 }, /* Hide text */ + /* 29*/ { BARCODE_EANX_CHK, -1, -1, -1, -1, "0234567890129+12345", "", 0, 50, 1, 149, 330, 116, 0 /*set*/, 16, 110, 320, 10 }, + /* 30*/ { BARCODE_EANX_CHK, BARCODE_QUIET_ZONES, -1, -1, -1, "0234567890129+12345", "", 0, 50, 1, 149, 330, 116, 0 /*set*/, 16, 110, 320, 10 }, + /* 31*/ { BARCODE_EANX_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "0234567890129+12345", "", 0, 50, 1, 149, 320, 116, 1 /*set*/, 16, 110, 318, 2 }, + /* 32*/ { BARCODE_EANX, -1, -1, -1, -1, "0234567", "", 0, 50, 1, 67, 162, 116, 0 /*set*/, 0, 100, 0, 14 }, /* EAN-8 */ + /* 33*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "0234567", "", 0, 50, 1, 67, 162, 116, 0 /*set*/, 0, 100, 0, 14 }, /* EAN-8 */ + /* 34*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "0234567", "", 0, 50, 1, 67, 134, 116, 1 /*set*/, 0, 100, 0, 2 }, /* EAN-8 */ + /* 35*/ { BARCODE_EANX, -1, -1, -1, -1, "02345", "", 0, 50, 1, 47, 104, 116, 0 /*set*/, 0, 116, 94, 10 }, /* EAN-5 */ + /* 36*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "02345", "", 0, 50, 1, 47, 104, 116, 0 /*set*/, 0, 116, 94, 10 }, /* EAN-5 */ + /* 37*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "02345", "", 0, 50, 1, 47, 94, 116, 1 /*set*/, 16, 116, 92, 2 }, /* EAN-5 */ + /* 38*/ { BARCODE_EANX, -1, -1, -1, -1, "02", "", 0, 50, 1, 20, 50, 116, 0 /*set*/, 0, 100, 40, 10 }, /* EAN-2 */ + /* 39*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "02", "", 0, 50, 1, 20, 50, 116, 0 /*set*/, 0, 116, 40, 10 }, /* EAN-2 */ + /* 40*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "02", "", 0, 50, 1, 20, 40, 116, 1 /*set*/, 16, 116, 36, 4 }, /* EAN-2 */ + /* 41*/ { BARCODE_GS1_128, -1, -1, -1, -1, "[20]02", "", 0, 50, 1, 68, 136, 116, 1 /*set*/, 0, 100, 0, 4 }, + /* 42*/ { BARCODE_GS1_128, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 50, 1, 68, 176, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 43*/ { BARCODE_CODABAR, -1, -1, -1, -1, "A0B", "", 0, 50, 1, 32, 64, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 44*/ { BARCODE_CODABAR, BARCODE_QUIET_ZONES, -1, -1, -1, "A0B", "", 0, 50, 1, 32, 104, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 45*/ { BARCODE_CODE128, -1, -1, -1, -1, "1234", "", 0, 50, 1, 57, 114, 116, 1 /*set*/, 0, 100, 0, 4 }, + /* 46*/ { BARCODE_CODE128, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 57, 154, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 47*/ { BARCODE_DPLEIT, -1, -1, -1, -1, "1234", "", 0, 72, 1, 135, 270, 160, 1 /*set*/, 0, 100, 0, 2 }, + /* 48*/ { BARCODE_DPLEIT, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 72, 1, 135, 310, 160, 0 /*set*/, 0, 100, 0, 20 }, + /* 49*/ { BARCODE_DPIDENT, -1, -1, -1, -1, "1234", "", 0, 72, 1, 117, 234, 160, 1 /*set*/, 0, 100, 0, 2 }, + /* 50*/ { BARCODE_DPIDENT, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 72, 1, 117, 274, 160, 0 /*set*/, 0, 100, 0, 20 }, + /* 51*/ { BARCODE_CODE16K, -1, -1, -1, -1, "1234", "", 0, 20, 2, 70, 162, 44, 0 /*set*/, 2, 20, 0, 20 }, + /* 52*/ { BARCODE_CODE16K, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 70, 162, 44, 0 /*set*/, 2, 20, 0, 20 }, + /* 53*/ { BARCODE_CODE16K, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 70, 140, 44, 1 /*set*/, 2, 20, 0, 6 }, + /* 54*/ { BARCODE_CODE49, -1, -1, -1, -1, "1234", "", 0, 20, 2, 70, 162, 44, 0 /*set*/, 2, 20, 0, 20 }, + /* 55*/ { BARCODE_CODE49, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 70, 162, 44, 0 /*set*/, 2, 20, 0, 20 }, + /* 56*/ { BARCODE_CODE49, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 70, 140, 44, 1 /*set*/, 2, 20, 0, 2 }, + /* 57*/ { BARCODE_CODE93, -1, -1, -1, -1, "1234", "", 0, 50, 1, 73, 146, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 58*/ { BARCODE_CODE93, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 73, 186, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 59*/ { BARCODE_FLAT, -1, -1, -1, -1, "1234", "", 0, 50, 1, 36, 72, 100, 1 /*set*/, 0, 100, 0, 2 }, + /* 60*/ { BARCODE_FLAT, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 36, 72, 100, 1 /*set*/, 0, 100, 0, 2 }, + /* 61*/ { BARCODE_FLAT, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 36, 72, 100, 1 /*set*/, 0, 100, 0, 2 }, + /* 62*/ { BARCODE_DBAR_OMN, -1, -1, -1, -1, "1234", "", 0, 50, 1, 96, 192, 116, 0 /*set*/, 0, 100, 0, 2 }, + /* 63*/ { BARCODE_DBAR_OMN, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 96, 192, 116, 0 /*set*/, 0, 100, 0, 2 }, + /* 64*/ { BARCODE_DBAR_OMN, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 96, 192, 116, 0 /*set*/, 0, 100, 0, 2 }, + /* 65*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, "1234", "", 0, 50, 1, 79, 158, 116, 0 /*set*/, 0, 100, 0, 2 }, + /* 66*/ { BARCODE_DBAR_LTD, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 79, 158, 116, 0 /*set*/, 0, 100, 0, 2 }, + /* 67*/ { BARCODE_DBAR_LTD, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 79, 158, 116, 0 /*set*/, 0, 100, 0, 2 }, + /* 68*/ { BARCODE_DBAR_EXP, -1, -1, -1, -1, "[20]02", "", 0, 34, 1, 102, 204, 84, 0 /*set*/, 0, 84, 0, 2 }, + /* 69*/ { BARCODE_DBAR_EXP, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 34, 1, 102, 204, 84, 0 /*set*/, 0, 84, 0, 2 }, + /* 70*/ { BARCODE_DBAR_EXP, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 34, 1, 102, 204, 84, 0 /*set*/, 0, 84, 0, 2 }, + /* 71*/ { BARCODE_TELEPEN, -1, -1, -1, -1, "1234", "", 0, 50, 1, 112, 224, 116, 1 /*set*/, 0, 100, 0, 2 }, + /* 72*/ { BARCODE_TELEPEN, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 112, 264, 116, 0 /*set*/, 0, 100, 0, 20 }, + /* 73*/ { BARCODE_UPCA, -1, -1, -1, -1, "01457137763", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 100, 0, 18 }, + /* 74*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, -1, "01457137763", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 100, 0, 18 }, + /* 75*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "01457137763", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 0, 100, 0, 18 }, + /* 76*/ { BARCODE_UPCA, -1, -1, -1, 0, "01457137763", "", 0, 50, 1, 95, 226, 110, 0 /*set*/, 0, 110, 0, 18 }, /* Hide text */ + /* 77*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, 0, "01457137763", "", 0, 50, 1, 95, 226, 110, 0 /*set*/, 0, 110, 0, 18 }, /* Hide text */ + /* 78*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "01457137763", "", 0, 50, 1, 95, 190, 110, 1 /*set*/, 0, 110, 0, 2 }, /* Hide text */ + /* 79*/ { BARCODE_UPCA, -1, -1, -1, -1, "01457137763+12", "", 0, 50, 1, 124, 276, 116, 0 /*set*/, 16, 100, 266, 10 }, + /* 80*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, -1, "01457137763+12", "", 0, 50, 1, 124, 276, 116, 0 /*set*/, 16, 100, 266, 10 }, + /* 81*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "01457137763+12", "", 0, 50, 1, 124, 266, 116, 1 /*set*/, 16, 100, 262, 4 }, + /* 82*/ { BARCODE_UPCA, -1, -1, -1, 0, "01457137763+12", "", 0, 50, 1, 124, 276, 110, 0 /*set*/, 16, 110, 266, 10 }, /* Hide text */ + /* 83*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, 0, "01457137763+12", "", 0, 50, 1, 124, 276, 110, 0 /*set*/, 16, 110, 266, 10 }, /* Hide text */ + /* 84*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "01457137763+12", "", 0, 50, 1, 124, 248, 110, 1 /*set*/, 16, 100, 244, 4 }, /* Hide text */ + /* 85*/ { BARCODE_UPCA_CHK, -1, -1, -1, -1, "014571377638+12345", "", 0, 50, 1, 151, 330, 116, 0 /*set*/, 16, 100, 320, 10 }, + /* 86*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, -1, -1, "014571377638+12345", "", 0, 50, 1, 151, 330, 116, 0 /*set*/, 16, 100, 320, 10 }, + /* 87*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "014571377638+12345", "", 0, 50, 1, 151, 320, 116, 1 /*set*/, 16, 100, 318, 2 }, + /* 88*/ { BARCODE_UPCA_CHK, -1, -1, -1, 0, "014571377638+12345", "", 0, 50, 1, 151, 330, 110, 0 /*set*/, 16, 110, 320, 10 }, /* Hide text */ + /* 89*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, -1, 0, "014571377638+12345", "", 0, 50, 1, 151, 330, 110, 0 /*set*/, 16, 110, 320, 10 }, /* Hide text */ + /* 90*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "014571377638+12345", "", 0, 50, 1, 151, 302, 110, 1 /*set*/, 16, 100, 300, 2 }, /* Hide text */ + /* 91*/ { BARCODE_UPCE, -1, -1, -1, -1, "8145713", "", 0, 50, 1, 51, 134, 116, 0 /*set*/, 0, 100, 120, 18 }, + /* 92*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, -1, "8145713", "", 0, 50, 1, 51, 134, 116, 0 /*set*/, 0, 100, 120, 18 }, + /* 93*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "8145713", "", 0, 50, 1, 51, 134, 116, 0 /*set*/, 0, 100, 120, 18 }, + /* 94*/ { BARCODE_UPCE, -1, -1, -1, 0, "8145713", "", 0, 50, 1, 51, 134, 110, 0 /*set*/, 0, 100, 120, 18 }, /* Hide text */ + /* 95*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, 0, "8145713", "", 0, 50, 1, 51, 134, 110, 0 /*set*/, 0, 100, 120, 18 }, /* Hide text */ + /* 96*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "8145713", "", 0, 50, 1, 51, 102, 110, 1 /*set*/, 0, 110, 100, 2 }, /* Hide text */ + /* 97*/ { BARCODE_UPCE_CHK, -1, -1, -1, -1, "81457132+12", "", 0, 50, 1, 78, 184, 116, 0 /*set*/, 16, 100, 174, 10 }, + /* 98*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, -1, -1, "81457132+12", "", 0, 50, 1, 78, 184, 116, 0 /*set*/, 16, 100, 174, 10 }, + /* 99*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "81457132+12", "", 0, 50, 1, 78, 174, 116, 1 /*set*/, 16, 100, 170, 4 }, + /*100*/ { BARCODE_UPCE_CHK, -1, -1, -1, 0, "81457132+12", "", 0, 50, 1, 78, 184, 110, 0 /*set*/, 16, 110, 174, 10 }, /* Hide text */ + /*101*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, -1, 0, "81457132+12", "", 0, 50, 1, 78, 184, 110, 0 /*set*/, 16, 110, 174, 10 }, /* Hide text */ + /*102*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "81457132+12", "", 0, 50, 1, 78, 156, 110, 1 /*set*/, 16, 100, 152, 4 }, /* Hide text */ + /*103*/ { BARCODE_UPCE, -1, -1, -1, -1, "8145713+12345", "", 0, 50, 1, 105, 238, 116, 0 /*set*/, 16, 100, 228, 10 }, + /*104*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, -1, "8145713+12345", "", 0, 50, 1, 105, 238, 116, 0 /*set*/, 16, 100, 228, 10 }, + /*105*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "8145713+12345", "", 0, 50, 1, 105, 228, 116, 1 /*set*/, 16, 100, 216, 2 }, + /*106*/ { BARCODE_UPCE, -1, -1, -1, 0, "8145713+12345", "", 0, 50, 1, 105, 238, 110, 0 /*set*/, 16, 110, 228, 10 }, /* Hide text */ + /*107*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, 0, "8145713+12345", "", 0, 50, 1, 105, 238, 110, 0 /*set*/, 16, 110, 228, 10 }, /* Hide text */ + /*108*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "8145713+12345", "", 0, 50, 1, 105, 210, 110, 1 /*set*/, 16, 100, 208, 2 }, /* Hide text */ + /*109*/ { BARCODE_POSTNET, -1, -1, -1, -1, "12345", "", 0, 12, 2, 63, 126, 24, 1 /*set*/, 0, 24, 0, 2 }, + /*110*/ { BARCODE_POSTNET, BARCODE_QUIET_ZONES, -1, -1, -1, "12345", "", 0, 12, 2, 63, 146, 30, 0 /*set*/, 0, 30, 0, 10 }, + /*111*/ { BARCODE_MSI_PLESSEY, -1, -1, -1, -1, "1234", "", 0, 50, 1, 55, 110, 116, 1 /*set*/, 0, 100, 0, 4 }, + /*112*/ { BARCODE_MSI_PLESSEY, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 55, 158, 116, 0 /*set*/, 0, 100, 0, 24 }, + /*113*/ { BARCODE_FIM, -1, -1, -1, -1, "A", "", 0, 50, 1, 17, 34, 100, 1 /*set*/, 0, 100, 0, 2 }, + /*114*/ { BARCODE_FIM, BARCODE_QUIET_ZONES, -1, -1, -1, "A", "", 0, 50, 1, 17, 50, 100, 0 /*set*/, 0, 100, 0, 10 }, + /*115*/ { BARCODE_LOGMARS, -1, -1, -1, -1, "1234", "", 0, 50, 1, 95, 190, 116, 1 /*set*/, 0, 100, 0, 2 }, + /*116*/ { BARCODE_LOGMARS, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 95, 230, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*117*/ { BARCODE_PHARMA, -1, -1, -1, -1, "1234", "", 0, 50, 1, 38, 76, 100, 1 /*set*/, 0, 100, 0, 2 }, + /*118*/ { BARCODE_PHARMA, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 38, 100, 100, 0 /*set*/, 0, 100, 0, 12 }, + /*119*/ { BARCODE_PZN, -1, -1, -1, -1, "1234", "", 0, 50, 1, 142, 284, 116, 1 /*set*/, 0, 100, 0, 2 }, + /*120*/ { BARCODE_PZN, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 142, 324, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*121*/ { BARCODE_PHARMA_TWO, -1, -1, -1, -1, "1234", "", 0, 10, 2, 13, 26, 20, 1 /*set*/, 10, 20, 0, 2 }, + /*122*/ { BARCODE_PHARMA_TWO, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 10, 2, 13, 50, 20, 0 /*set*/, 10, 20, 0, 12 }, + /*123*/ { BARCODE_CEPNET, -1, -1, -1, -1, "12345678", "", 0, 5, 2, 93, 186, 10, 1 /*set*/, 0, 10, 0, 2 }, + /*124*/ { BARCODE_CEPNET, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678", "", 0, 5, 2, 93, 226, 16, 0 /*set*/, 0, 16, 0, 20 }, + /*125*/ { BARCODE_PDF417, -1, -1, -1, -1, "1234", "", 0, 18, 6, 103, 206, 36, 1 /*set*/, 0, 36, 0, 16 }, + /*126*/ { BARCODE_PDF417, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 18, 6, 103, 214, 44, 0 /*set*/, 0, 44, 0, 4 }, + /*127*/ { BARCODE_PDF417COMP, -1, -1, -1, -1, "1234", "", 0, 18, 6, 69, 138, 36, 1 /*set*/, 0, 36, 0, 16 }, + /*128*/ { BARCODE_PDF417COMP, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 18, 6, 69, 146, 44, 0 /*set*/, 0, 44, 0, 4 }, + /*129*/ { BARCODE_MAXICODE, -1, -1, -1, -1, "1234", "", 0, 165, 33, 30, 299, 298, 1 /*set*/, 21, 25, 0, 9 }, + /*130*/ { BARCODE_MAXICODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 165, 33, 30, 319, 318, 0 /*set*/, 0, 318, 0, 9 }, + /*131*/ { BARCODE_MAXICODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 165, 33, 30, 319, 318, 0 /*set*/, 0, 9, 0, 319 }, + /*132*/ { BARCODE_QRCODE, -1, -1, -1, -1, "1234", "", 0, 21, 21, 21, 42, 42, 1 /*set*/, 0, 2, 0, 14 }, + /*133*/ { BARCODE_QRCODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 21, 21, 58, 58, 0 /*set*/, 0, 8, 0, 58 }, + /*134*/ { BARCODE_CODE128AB, -1, -1, -1, -1, "1234", "", 0, 50, 1, 79, 158, 116, 1 /*set*/, 0, 100, 0, 4 }, + /*135*/ { BARCODE_CODE128AB, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 79, 198, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*136*/ { BARCODE_AUSPOST, -1, -1, -1, -1, "12345678", "", 0, 8, 3, 73, 146, 16, 1 /*set*/, 0, 10, 0, 2 }, + /*137*/ { BARCODE_AUSPOST, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678", "", 0, 8, 3, 73, 186, 28, 0 /*set*/, 0, 28, 0, 20 }, + /*138*/ { BARCODE_AUSREPLY, -1, -1, -1, -1, "1234", "", 0, 8, 3, 73, 146, 16, 1 /*set*/, 0, 10, 0, 2 }, + /*139*/ { BARCODE_AUSREPLY, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 73, 186, 28, 0 /*set*/, 0, 28, 0, 20 }, + /*140*/ { BARCODE_AUSROUTE, -1, -1, -1, -1, "1234", "", 0, 8, 3, 73, 146, 16, 1 /*set*/, 0, 10, 0, 2 }, + /*141*/ { BARCODE_AUSROUTE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 73, 186, 28, 0 /*set*/, 0, 28, 0, 20 }, + /*142*/ { BARCODE_AUSREDIRECT, -1, -1, -1, -1, "1234", "", 0, 8, 3, 73, 146, 16, 1 /*set*/, 0, 10, 0, 2 }, + /*143*/ { BARCODE_AUSREDIRECT, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 73, 186, 28, 0 /*set*/, 0, 28, 0, 20 }, + /*144*/ { BARCODE_ISBNX, -1, -1, -1, -1, "123456789X", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 16, 110, 212, 14 }, + /*145*/ { BARCODE_ISBNX, BARCODE_QUIET_ZONES, -1, -1, -1, "123456789X", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 16, 110, 212, 14 }, + /*146*/ { BARCODE_ISBNX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "123456789X", "", 0, 50, 1, 95, 212, 116, 1 /*set*/, 16, 110, 210, 2 }, + /*147*/ { BARCODE_RM4SCC, -1, -1, -1, -1, "1234", "", 0, 8, 3, 43, 86, 16, 1 /*set*/, 0, 10, 0, 2 }, + /*148*/ { BARCODE_RM4SCC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 43, 98, 28, 0 /*set*/, 0, 28, 0, 6 }, + /*149*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, "1234", "", 0, 10, 10, 10, 20, 20, 1 /*set*/, 0, 20, 0, 2 }, + /*150*/ { BARCODE_DATAMATRIX, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 10, 10, 10, 24, 24, 0 /*set*/, 0, 24, 0, 2 }, + /*151*/ { BARCODE_EAN14, -1, -1, -1, -1, "1234", "", 0, 50, 1, 134, 268, 116, 1 /*set*/, 0, 100, 0, 4 }, + /*152*/ { BARCODE_EAN14, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 134, 308, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*153*/ { BARCODE_VIN, -1, -1, -1, -1, "12345678701234567", "", 0, 50, 1, 246, 492, 116, 1 /*set*/, 0, 100, 0, 2 }, + /*154*/ { BARCODE_VIN, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678701234567", "", 0, 50, 1, 246, 532, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*155*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 }, + /*156*/ { BARCODE_CODABLOCKF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 }, + /*157*/ { BARCODE_CODABLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 202, 44, 1 /*set*/, 0, 44, 0, 4 }, + /*158*/ { BARCODE_NVE18, -1, -1, -1, -1, "1234", "", 0, 50, 1, 156, 312, 116, 1 /*set*/, 0, 100, 0, 4 }, + /*159*/ { BARCODE_NVE18, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 156, 352, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*160*/ { BARCODE_JAPANPOST, -1, -1, -1, -1, "1234", "", 0, 8, 3, 133, 266, 16, 1 /*set*/, 0, 16, 0, 2 }, + /*161*/ { BARCODE_JAPANPOST, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 133, 278, 28, 0 /*set*/, 0, 28, 0, 6 }, + /*162*/ { BARCODE_KOREAPOST, -1, -1, -1, -1, "1234", "", 0, 50, 1, 167, 334, 116, 0 /*set*/, 0, 100, 0, 8 }, + /*163*/ { BARCODE_KOREAPOST, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 167, 374, 116, 0 /*set*/, 0, 100, 0, 28 }, + /*164*/ { BARCODE_DBAR_STK, -1, -1, -1, -1, "1234", "", 0, 13, 3, 50, 100, 26, 1 /*set*/, 12, 26, 0, 2 }, + /*165*/ { BARCODE_DBAR_STK, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 13, 3, 50, 100, 26, 1 /*set*/, 12, 26, 0, 2 }, + /*166*/ { BARCODE_DBAR_STK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 13, 3, 50, 100, 26, 1 /*set*/, 12, 26, 0, 2 }, + /*167*/ { BARCODE_DBAR_OMNSTK, -1, -1, -1, -1, "1234", "", 0, 69, 5, 50, 100, 138, 1 /*set*/, 72, 138, 0, 2 }, + /*168*/ { BARCODE_DBAR_OMNSTK, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 69, 5, 50, 100, 138, 1 /*set*/, 72, 138, 0, 2 }, + /*169*/ { BARCODE_DBAR_OMNSTK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 69, 5, 50, 100, 138, 1 /*set*/, 72, 138, 0, 2 }, + /*170*/ { BARCODE_DBAR_EXPSTK, -1, -1, -1, -1, "[20]12", "", 0, 34, 1, 102, 204, 68, 1 /*set*/, 0, 68, 2, 2 }, + /*171*/ { BARCODE_DBAR_EXPSTK, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]12", "", 0, 34, 1, 102, 204, 68, 1 /*set*/, 0, 68, 2, 2 }, + /*172*/ { BARCODE_DBAR_EXPSTK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "[20]12", "", 0, 34, 1, 102, 204, 68, 1 /*set*/, 0, 68, 2, 2 }, + /*173*/ { BARCODE_PLANET, -1, -1, -1, -1, "12345678901", "", 0, 12, 2, 123, 246, 24, 1 /*set*/, 0, 24, 0, 2 }, + /*174*/ { BARCODE_PLANET, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678901", "", 0, 12, 2, 123, 266, 30, 0 /*set*/, 0, 30, 0, 10 }, + /*175*/ { BARCODE_MICROPDF417, -1, -1, -1, -1, "1234", "", 0, 22, 11, 38, 76, 44, 1 /*set*/, 0, 44, 0, 4 }, + /*176*/ { BARCODE_MICROPDF417, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 22, 11, 38, 80, 48, 0 /*set*/, 0, 48, 0, 2 }, + /*177*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, "12345678901234567890", "", 0, 8, 3, 129, 258, 16, 1 /*set*/, 0, 10, 0, 2 }, + /*178*/ { BARCODE_USPS_IMAIL, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678901234567890", "", 0, 8, 3, 129, 276, 20, 0 /*set*/, 0, 20, 0, 9 }, + /*179*/ { BARCODE_PLESSEY, -1, -1, -1, -1, "1234", "", 0, 50, 1, 131, 262, 116, 1 /*set*/, 0, 100, 0, 6 }, + /*180*/ { BARCODE_PLESSEY, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 131, 310, 116, 0 /*set*/, 0, 100, 0, 24 }, + /*181*/ { BARCODE_TELEPEN_NUM, -1, -1, -1, -1, "1234", "", 0, 50, 1, 80, 160, 116, 1 /*set*/, 0, 100, 0, 2 }, + /*182*/ { BARCODE_TELEPEN_NUM, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 80, 200, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*183*/ { BARCODE_ITF14, -1, -1, -1, -1, "1234", "", 0, 50, 1, 135, 330, 136, 0 /*set*/, 10, 110, 10, 20 }, + /*184*/ { BARCODE_ITF14, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 135, 330, 136, 0 /*set*/, 10, 110, 10, 20 }, + /*185*/ { BARCODE_ITF14, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 135, 290, 136, 1 /*set*/, 0, 120, 10, 2 }, + /*186*/ { BARCODE_KIX, -1, -1, -1, -1, "1234", "", 0, 8, 3, 31, 62, 16, 1 /*set*/, 6, 10, 0, 2 }, + /*187*/ { BARCODE_KIX, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 31, 74, 28, 0 /*set*/, 0, 28, 0, 6 }, + /*188*/ { BARCODE_AZTEC, -1, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 2, 6, 0, 4 }, + /*189*/ { BARCODE_AZTEC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 2, 6, 0, 4 }, + /*190*/ { BARCODE_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 2, 6, 0, 4 }, + /*191*/ { BARCODE_DAFT, -1, -1, -1, -1, "FADT", "", 0, 8, 3, 7, 14, 16, 1 /*set*/, 0, 16, 0, 2 }, + /*192*/ { BARCODE_DAFT, BARCODE_QUIET_ZONES, -1, -1, -1, "FADT", "", 0, 8, 3, 7, 14, 16, 1 /*set*/, 0, 16, 0, 2 }, + /*193*/ { BARCODE_DAFT, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "FADT", "", 0, 8, 3, 7, 14, 16, 1 /*set*/, 0, 16, 0, 2 }, + /*194*/ { BARCODE_DPD, -1, -1, -1, -1, "1234567890123456789012345678", "", 0, 50, 1, 189, 378, 128, 1 /*set*/, 0, 100, 0, 4 }, + /*195*/ { BARCODE_DPD, BARCODE_QUIET_ZONES, -1, -1, -1, "1234567890123456789012345678", "", 0, 50, 1, 189, 428, 128, 0 /*set*/, 0, 100, 0, 24 }, + /*196*/ { BARCODE_MICROQR, -1, -1, -1, -1, "1234", "", 0, 11, 11, 11, 22, 22, 1 /*set*/, 0, 14, 0, 2 }, + /*197*/ { BARCODE_MICROQR, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 11, 11, 11, 30, 30, 0 /*set*/, 0, 30, 0, 4 }, + /*198*/ { BARCODE_HIBC_128, -1, -1, -1, -1, "1234", "", 0, 50, 1, 90, 180, 116, 1 /*set*/, 0, 100, 0, 4 }, + /*199*/ { BARCODE_HIBC_128, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 90, 220, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*200*/ { BARCODE_HIBC_39, -1, -1, -1, -1, "1234", "", 0, 50, 1, 127, 254, 116, 1 /*set*/, 0, 100, 0, 2 }, + /*201*/ { BARCODE_HIBC_39, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 127, 294, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*202*/ { BARCODE_HIBC_DM, -1, -1, -1, -1, "1234", "", 0, 12, 12, 12, 24, 24, 1 /*set*/, 0, 24, 0, 2 }, + /*203*/ { BARCODE_HIBC_DM, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 12, 12, 12, 28, 28, 0 /*set*/, 0, 28, 0, 2 }, + /*204*/ { BARCODE_HIBC_QR, -1, -1, -1, -1, "1234", "", 0, 21, 21, 21, 42, 42, 1 /*set*/, 0, 2, 0, 14 }, + /*205*/ { BARCODE_HIBC_QR, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 21, 21, 58, 58, 0 /*set*/, 0, 58, 0, 8 }, + /*206*/ { BARCODE_HIBC_PDF, -1, -1, -1, -1, "1234", "", 0, 21, 7, 103, 206, 42, 1 /*set*/, 0, 42, 0, 16 }, + /*207*/ { BARCODE_HIBC_PDF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 7, 103, 214, 50, 0 /*set*/, 0, 50, 0, 4 }, + /*208*/ { BARCODE_HIBC_MICPDF, -1, -1, -1, -1, "1234", "", 0, 12, 6, 82, 164, 24, 1 /*set*/, 0, 24, 0, 4 }, + /*209*/ { BARCODE_HIBC_MICPDF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 12, 6, 82, 168, 28, 0 /*set*/, 0, 28, 0, 2 }, + /*210*/ { BARCODE_HIBC_BLOCKF, -1, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 }, + /*211*/ { BARCODE_HIBC_BLOCKF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 }, + /*212*/ { BARCODE_HIBC_BLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 202, 44, 1 /*set*/, 0, 44, 0, 4 }, + /*213*/ { BARCODE_HIBC_AZTEC, -1, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 }, + /*214*/ { BARCODE_HIBC_AZTEC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 }, + /*215*/ { BARCODE_HIBC_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 }, + /*216*/ { BARCODE_DOTCODE, -1, -1, -1, -1, "1234", "", 0, 10, 10, 13, 27, 21, 1 /*set*/, 5, 6, 1, 1 }, + /*217*/ { BARCODE_DOTCODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 10, 10, 13, 39, 33, 0 /*set*/, 0, 33, 0, 7 }, + /*218*/ { BARCODE_HANXIN, -1, -1, -1, -1, "1234", "", 0, 23, 23, 23, 46, 46, 1 /*set*/, 0, 2, 0, 14 }, + /*219*/ { BARCODE_HANXIN, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 23, 23, 23, 58, 58, 0 /*set*/, 0, 58, 0, 6 }, + /*220*/ { BARCODE_MAILMARK_2D, -1, -1, -1, -1, "012100123412345678AB19XY1A 0", "", 0, 24, 24, 24, 48, 48, 1 /*set*/, 0, 48, 0, 2 }, + /*221*/ { BARCODE_MAILMARK_2D, BARCODE_QUIET_ZONES, -1, -1, -1, "012100123412345678AB19XY1A 0", "", 0, 24, 24, 24, 64, 64, 0 /*set*/, 0, 64, 0, 8 }, + /*222*/ { BARCODE_UPU_S10, -1, -1, -1, -1, "EE876543216CA", "", 0, 50, 1, 156, 312, 116, 1 /*set*/, 0, 100, 0, 4 }, + /*223*/ { BARCODE_UPU_S10, BARCODE_QUIET_ZONES, -1, -1, -1, "EE876543216CA", "", 0, 50, 1, 156, 352, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*224*/ { BARCODE_MAILMARK_4S, -1, -1, -1, -1, "01000000000000000AA00AA0A", "", 0, 10, 3, 155, 310, 20, 1 /*set*/, 0, 20, 0, 2 }, + /*225*/ { BARCODE_MAILMARK_4S, BARCODE_QUIET_ZONES, -1, -1, -1, "01000000000000000AA00AA0A", "", 0, 10, 3, 155, 322, 32, 0 /*set*/, 0, 32, 0, 6 }, + /*226*/ { BARCODE_AZRUNE, -1, -1, -1, -1, "123", "", 0, 11, 11, 11, 22, 22, 1 /*set*/, 0, 6, 0, 4 }, + /*227*/ { BARCODE_AZRUNE, BARCODE_QUIET_ZONES, -1, -1, -1, "123", "", 0, 11, 11, 11, 22, 22, 1 /*set*/, 0, 6, 0, 4 }, + /*228*/ { BARCODE_AZRUNE, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "123", "", 0, 11, 11, 11, 22, 22, 1 /*set*/, 0, 6, 0, 4 }, + /*229*/ { BARCODE_CODE32, -1, -1, -1, -1, "1234", "", 0, 50, 1, 103, 206, 116, 1 /*set*/, 0, 100, 0, 2 }, + /*230*/ { BARCODE_CODE32, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 103, 246, 116, 0 /*set*/, 0, 100, 0, 20 }, + /*231*/ { BARCODE_EANX_CC, -1, -1, -1, -1, "023456789012", "", 0, 50, 7, 99, 226, 116, 0 /*set*/, 24, 110, 212, 14 }, + /*232*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "023456789012", "", 0, 50, 7, 99, 226, 116, 0 /*set*/, 24, 110, 212, 14 }, + /*233*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "023456789012", "", 0, 50, 7, 99, 214, 116, 0 /*set*/, 24, 110, 212, 2 }, + /*234*/ { BARCODE_EANX_CC, -1, -1, -1, 0, "023456789012", "", 0, 50, 7, 99, 226, 110, 0 /*set*/, 24, 110, 0, 22 }, /* Hide text */ + /*235*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, -1, 0, "023456789012", "", 0, 50, 7, 99, 226, 110, 0 /*set*/, 24, 110, 0, 22 }, /* Hide text */ + /*236*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "023456789012", "", 0, 50, 7, 99, 198, 110, 1 /*set*/, 24, 110, 6, 2 }, /* Hide text */ + /*237*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, "[20]02", "", 0, 50, 5, 99, 198, 116, 1 /*set*/, 14, 100, 24, 4 }, /* CC-A */ + /*238*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 50, 5, 99, 204, 116, 0 /*set*/, 14, 100, 24, 2 }, + /*239*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 50, 5, 99, 204, 116, 1 /*set*/, 14, 100, 26, 4 }, + /*240*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, "[91]1", "", 0, 50, 5, 100, 200, 116, 1 /*set*/, 14, 100, 20, 4 }, /* CC-A */ + /*241*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[91]1", "", 0, 50, 5, 100, 222, 116, 0 /*set*/, 14, 100, 20, 2 }, + /*242*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[91]1", "", 0, 50, 5, 100, 222, 116, 1 /*set*/, 14, 100, 22, 4 }, + /*243*/ { BARCODE_GS1_128_CC, -1, 2, -1, -1, "[91]1", "", 0, 50, 6, 100, 200, 116, 1 /*set*/, 18, 100, 20, 4 }, /* CC-B */ + /*244*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "[91]1", "", 0, 50, 6, 100, 222, 116, 0 /*set*/, 18, 100, 20, 2 }, + /*245*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "[91]1", "", 0, 50, 6, 100, 222, 116, 1 /*set*/, 18, 100, 22, 4 }, + /*246*/ { BARCODE_GS1_128_CC, -1, 3, -1, -1, "[20]02", "", 0, 50, 15, 86, 172, 116, 1 /*set*/, 80, 100, 14, 4 }, /* CC-C */ + /*247*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, 3, -1, -1, "[20]02", "", 0, 50, 15, 86, 198, 116, 0 /*set*/, 80, 100, 14, 4 }, + /*248*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, 3, -1, -1, "[20]02", "", 0, 50, 15, 86, 198, 116, 1 /*set*/, 80, 100, 20, 4 }, + /*249*/ { BARCODE_DBAR_OMN_CC, -1, -1, -1, -1, "1234", "", 0, 21, 5, 100, 200, 58, 1 /*set*/, 14, 42, 10, 2 }, /* CC-A */ + /*250*/ { BARCODE_DBAR_OMN_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 5, 100, 202, 58, 0 /*set*/, 14, 42, 10, 2 }, + /*251*/ { BARCODE_DBAR_OMN_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 5, 100, 202, 58, 1 /*set*/, 14, 42, 12, 2 }, + /*252*/ { BARCODE_DBAR_OMN_CC, -1, 2, -1, -1, "1234", "", 0, 23, 6, 100, 200, 62, 1 /*set*/, 18, 46, 10, 2 }, /* CC-B */ + /*253*/ { BARCODE_DBAR_OMN_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 23, 6, 100, 202, 62, 0 /*set*/, 18, 46, 10, 2 }, + /*254*/ { BARCODE_DBAR_OMN_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 23, 6, 100, 202, 62, 1 /*set*/, 18, 46, 12, 2 }, + /*255*/ { BARCODE_DBAR_LTD_CC, -1, -1, -1, -1, "1234", "", 0, 19, 6, 79, 158, 54, 1 /*set*/, 18, 38, 2, 2 }, /* CC-A */ + /*256*/ { BARCODE_DBAR_LTD_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 19, 6, 79, 158, 54, 1 /*set*/, 18, 38, 2, 2 }, /* Same */ + /*257*/ { BARCODE_DBAR_LTD_CC, -1, 2, -1, -1, "1234", "", 0, 23, 8, 88, 176, 62, 1 /*set*/, 26, 46, 20, 2 }, /* CC-B */ + /*258*/ { BARCODE_DBAR_LTD_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 23, 8, 88, 178, 62, 0 /*set*/, 26, 46, 20, 2 }, + /*259*/ { BARCODE_DBAR_LTD_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 23, 8, 88, 178, 62, 1 /*set*/, 26, 46, 22, 2 }, + /*260*/ { BARCODE_DBAR_EXP_CC, -1, -1, -1, -1, "[20]12", "", 0, 41, 5, 102, 204, 98, 1 /*set*/, 14, 82, 2, 2 }, /* CC-A */ + /*261*/ { BARCODE_DBAR_EXP_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]12", "", 0, 41, 5, 102, 204, 98, 1 /*set*/, 14, 82, 2, 2 }, /* Same */ + /*262*/ { BARCODE_DBAR_EXP_CC, -1, 2, -1, -1, "[20]12", "", 0, 43, 6, 102, 204, 102, 1 /*set*/, 18, 86, 2, 2 }, /* CC-B */ + /*263*/ { BARCODE_DBAR_EXP_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "[20]12", "", 0, 43, 6, 102, 204, 102, 1 /*set*/, 18, 86, 2, 2 }, /* Same */ + /*264*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, "01457137763", "", 0, 50, 7, 99, 226, 116, 1 /*set*/, 24, 100, 206, 2 }, + /*265*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "01457137763", "", 0, 50, 7, 99, 226, 116, 1 /*set*/, 24, 100, 206, 2 }, + /*266*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "01457137763", "", 0, 50, 7, 99, 226, 116, 1 /*set*/, 24, 100, 206, 2 }, + /*267*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, "01457137763", "", 0, 50, 7, 99, 226, 110, 0 /*set*/, 24, 110, 0, 18 }, /* Hide text */ + /*268*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, -1, 0, "01457137763", "", 0, 50, 7, 99, 226, 110, 0 /*set*/, 24, 110, 0, 18 }, /* Hide text */ + /*269*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "01457137763", "", 0, 50, 7, 99, 198, 110, 1 /*set*/, 24, 110, 6, 2 }, /* Hide text */ + /*270*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, "8145713", "", 0, 50, 9, 55, 134, 116, 1 /*set*/, 32, 100, 118, 2 }, + /*271*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "8145713", "", 0, 50, 9, 55, 134, 116, 1 /*set*/, 32, 100, 118, 2 }, + /*272*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "8145713", "", 0, 50, 9, 55, 134, 116, 1 /*set*/, 32, 100, 118, 2 }, + /*273*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, "8145713", "", 0, 50, 9, 55, 134, 110, 0 /*set*/, 32, 110, 0, 18 }, /* Hide text */ + /*274*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, -1, 0, "8145713", "", 0, 50, 9, 55, 134, 110, 0 /*set*/, 32, 110, 0, 18 }, /* Hide text */ + /*275*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "8145713", "", 0, 50, 9, 55, 110, 110, 1 /*set*/, 32, 110, 6, 2 }, /* Hide text */ + /*276*/ { BARCODE_DBAR_STK_CC, -1, -1, -1, -1, "1234", "", 0, 24, 9, 56, 112, 48, 0 /*set*/, 20, 48, 100, 10 }, /* CC-A */ + /*277*/ { BARCODE_DBAR_STK_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 24, 9, 56, 114, 48, 0 /*set*/, 20, 48, 100, 14 }, + /*278*/ { BARCODE_DBAR_STK_CC, -1, 2, -1, -1, "1234", "", 0, 30, 12, 56, 112, 60, 0 /*set*/, 34, 60, 100, 10 }, /* CC-B */ + /*279*/ { BARCODE_DBAR_STK_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 30, 12, 56, 114, 60, 0 /*set*/, 34, 60, 100, 14 }, + /*280*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, -1, -1, "1234", "", 0, 80, 11, 56, 112, 160, 0 /*set*/, 20, 48, 100, 10 }, /* CC-A */ + /*281*/ { BARCODE_DBAR_OMNSTK_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 80, 11, 56, 114, 160, 0 /*set*/, 20, 48, 100, 14 }, + /*282*/ { BARCODE_DBAR_OMNSTK_CC, -1, 2, -1, -1, "1234", "", 0, 86, 14, 56, 112, 172, 0 /*set*/, 34, 172, 100, 10 }, /* CC-B */ + /*283*/ { BARCODE_DBAR_OMNSTK_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 86, 14, 56, 114, 172, 0 /*set*/, 34, 172, 100, 14 }, + /*284*/ { BARCODE_DBAR_EXPSTK_CC, -1, -1, -1, -1, "[20]12", "", 0, 41, 5, 102, 204, 82, 1 /*set*/, 14, 82, 2, 2 }, /* CC-A */ + /*285*/ { BARCODE_DBAR_EXPSTK_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]12", "", 0, 41, 5, 102, 204, 82, 1 /*set*/, 14, 82, 2, 2 }, /* Same */ + /*286*/ { BARCODE_DBAR_EXPSTK_CC, -1, 2, -1, -1, "[20]12", "", 0, 43, 6, 102, 204, 86, 1 /*set*/, 18, 86, 202, 2 }, /* CC-B */ + /*287*/ { BARCODE_DBAR_EXPSTK_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "[20]12", "", 0, 43, 6, 102, 204, 86, 1 /*set*/, 18, 86, 202, 2 }, /* Same */ + /*288*/ { BARCODE_CHANNEL, -1, -1, -1, -1, "1234", "", 0, 50, 1, 27, 54, 116, 1 /*set*/, 0, 100, 0, 2 }, + /*289*/ { BARCODE_CHANNEL, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 27, 60, 116, 0 /*set*/, 0, 100, 0, 2 }, + /*290*/ { BARCODE_CODEONE, -1, -1, -1, -1, "1234", "", 0, 16, 16, 18, 36, 32, 1 /*set*/, 0, 6, 0, 2 }, /* Versions A to H - no quiet zone */ + /*291*/ { BARCODE_CODEONE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 16, 16, 18, 36, 32, 1 /*set*/, 0, 6, 0, 2 }, + /*292*/ { BARCODE_CODEONE, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 16, 16, 18, 36, 32, 1 /*set*/, 0, 6, 0, 2 }, + /*293*/ { BARCODE_CODEONE, -1, -1, 9, -1, "1234", "", 0, 8, 8, 11, 22, 16, 1 /*set*/, 10, 16, 0, 2 }, /* Version S (& T) have quiet zones */ + /*294*/ { BARCODE_CODEONE, BARCODE_QUIET_ZONES, -1, 9, -1, "1234", "", 0, 8, 8, 11, 26, 16, 0 /*set*/, 0, 16, 0, 2 }, + /*295*/ { BARCODE_GRIDMATRIX, -1, -1, -1, -1, "1234", "", 0, 18, 18, 18, 36, 36, 1 /*set*/, 0, 2, 0, 12 }, + /*296*/ { BARCODE_GRIDMATRIX, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 18, 18, 18, 60, 60, 0 /*set*/, 0, 60, 0, 12 }, + /*297*/ { BARCODE_UPNQR, -1, -1, -1, -1, "1234", "", 0, 77, 77, 77, 154, 154, 1 /*set*/, 0, 14, 0, 2 }, + /*298*/ { BARCODE_UPNQR, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 77, 77, 77, 170, 170, 0 /*set*/, 0, 170, 0, 8 }, + /*299*/ { BARCODE_ULTRA, -1, -1, -1, -1, "1234", "", 0, 13, 13, 15, 30, 26, 1 /*set*/, 0, 2, 0, 30 }, + /*300*/ { BARCODE_ULTRA, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 13, 13, 15, 34, 30, 0 /*set*/, 0, 2, 0, 34 }, + /*301*/ { BARCODE_RMQR, -1, -1, -1, -1, "1234", "", 0, 11, 11, 27, 54, 22, 1 /*set*/, 0, 14, 0, 2 }, + /*302*/ { BARCODE_RMQR, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 11, 11, 27, 62, 30, 0 /*set*/, 0, 30, 0, 4 }, + /*303*/ { BARCODE_BC412, -1, -1, -1, -1, "1234567", "", 0, 16.5, 1, 102, 204, 49, 1 /*set*/, 0, 32, 0, 2 }, + /*304*/ { BARCODE_BC412, BARCODE_QUIET_ZONES, -1, -1, -1, "1234567", "", 0, 16.5, 1, 102, 244, 49, 0 /*set*/, 0, 32, 0, 2 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; const char *text; static const char composite[] = "[20]12"; - testStart("test_quiet_zones"); + testStartSymbol("test_quiet_zones", &symbol); for (i = 0; i < data_size; i++) { int row, column; @@ -1731,13 +1798,13 @@ static void test_quiet_zones(const testCtx *const p_ctx) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - length = testUtilSetSymbol(symbol, data[i].symbology, UNICODE_MODE, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, data[i].symbology, UNICODE_MODE, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug); if (data[i].show_hrt != -1) { symbol->show_hrt = data[i].show_hrt; } if (is_composite(symbol->symbology)) { - text = composite; + text = *(data[i].composite) ? data[i].composite : composite; length = (int) strlen(text); assert_nonzero(strlen(data[i].data) < 128, "i:%d linear data length %d >= 128\n", i, (int) strlen(data[i].data)); strcpy(symbol->primary, data[i].data); @@ -1749,25 +1816,34 @@ static void test_quiet_zones(const testCtx *const p_ctx) { assert_zero(ret, "i:%d ZBarcode_Encode(%d) ret %d != 0 (%s)\n", i, data[i].symbology, ret, symbol->errtxt); ret = ZBarcode_Buffer(symbol, 0); - assert_equal(ret, data[i].ret_raster, "i:%d ZBarcode_Buffer(%d) ret %d != %d (%s)\n", i, data[i].symbology, ret, data[i].ret_raster, symbol->errtxt); + assert_equal(ret, data[i].ret_raster, "i:%d ZBarcode_Buffer(%d) ret %d != %d (%s)\n", + i, data[i].symbology, ret, data[i].ret_raster, symbol->errtxt); assert_nonnull(symbol->bitmap, "i:%d (%d) symbol->bitmap NULL\n", i, data[i].symbology); if (p_ctx->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 %.8g != %.8g\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->width, data[i].expected_width, "i:%d (%d) symbol->width %d != %d\n", i, data[i].symbology, symbol->width, data[i].expected_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->height, data[i].expected_height, "i:%d (%s) symbol->height %.8g != %.8g\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->width, data[i].expected_width, "i:%d (%s) symbol->width %d != %d\n", + i, testUtilBarcodeName(data[i].symbology), symbol->width, data[i].expected_width); + assert_equal(symbol->bitmap_width, data[i].expected_bitmap_width, "i:%d (%s) symbol->bitmap_width %d != %d\n", + i, testUtilBarcodeName(data[i].symbology), symbol->bitmap_width, data[i].expected_bitmap_width); + assert_equal(symbol->bitmap_height, data[i].expected_bitmap_height, "i:%d (%s) symbol->bitmap_height %d != %d\n", + i, testUtilBarcodeName(data[i].symbology), symbol->bitmap_height, data[i].expected_bitmap_height); ret = ZBarcode_Print(symbol, 0); - assert_equal(ret, data[i].ret_raster, "i:%d ZBarcode_Print(%d) ret %d != %d (%s)\n", i, data[i].symbology, ret, data[i].ret_raster, symbol->errtxt); + assert_equal(ret, data[i].ret_raster, "i:%d ZBarcode_Print(%s) ret %d != %d (%s)\n", + i, testUtilBarcodeName(data[i].symbology), ret, data[i].ret_raster, symbol->errtxt); assert_zero(testUtilRemove(symbol->outfile), "i:%d testUtilRemove(%s) != 0\n", i, symbol->outfile); - assert_nonzero(symbol->bitmap_height >= data[i].expected_set_rows, "i:%d (%d) symbol->bitmap_height %d < expected_set_rows %d\n", - i, data[i].symbology, symbol->bitmap_height, data[i].expected_set_rows); - assert_nonzero(data[i].expected_set_rows > data[i].expected_set_row, "i:%d (%d) expected_set_rows %d < expected_set_row %d\n", - i, data[i].symbology, data[i].expected_set_rows, data[i].expected_set_row); + assert_nonzero(symbol->bitmap_height >= data[i].expected_set_rows, + "i:%d (%s) symbol->bitmap_height %d < expected_set_rows %d\n", + i, testUtilBarcodeName(data[i].symbology), symbol->bitmap_height, data[i].expected_set_rows); + assert_nonzero(data[i].expected_set_rows > data[i].expected_set_row, + "i:%d (%s) expected_set_rows %d < expected_set_row %d\n", + i, testUtilBarcodeName(data[i].symbology), data[i].expected_set_rows, data[i].expected_set_row); for (row = data[i].expected_set_row; row < data[i].expected_set_rows; row++) { int bits_set = 0; for (column = data[i].expected_set_col; column < data[i].expected_set_col + data[i].expected_set_len; column++) { @@ -1776,9 +1852,11 @@ static void test_quiet_zones(const testCtx *const p_ctx) { } } if (data[i].expected_set) { - assert_equal(bits_set, data[i].expected_set_len, "i:%d (%d) row %d bits_set %d != expected_set_len %d\n", i, data[i].symbology, row, bits_set, data[i].expected_set_len); + assert_equal(bits_set, data[i].expected_set_len, "i:%d (%s) row %d bits_set %d != expected_set_len %d\n", + i, testUtilBarcodeName(data[i].symbology), row, bits_set, data[i].expected_set_len); } else { - assert_zero(bits_set, "i:%d (%d) row %d bits_set %d != 0\n", i, data[i].symbology, row, bits_set); + assert_zero(bits_set, "i:%d (%s) row %d bits_set %d != 0\n", + i, testUtilBarcodeName(data[i].symbology), row, bits_set); } } ZBarcode_Delete(symbol); @@ -1857,24 +1935,24 @@ static void test_text_gap(const testCtx *const p_ctx) { /* 39*/ { BARCODE_UPCA, -1, -1, -1, 1.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 117, 1 /*set*/, 17, 100, 244, 4 }, /* 40*/ { BARCODE_UPCA, -1, -1, -1, 2.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 119, 0 /*set*/, 14, 19, 208, 68 }, /* 41*/ { BARCODE_UPCA, -1, -1, -1, 2.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 119, 1 /*set*/, 19, 100, 244, 4 }, - /* 42*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116, 0 /*set*/, 38, 40, 214, 70 }, /* Default */ - /* 43*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116, 1 /*set*/, 40, 100, 250, 4 }, /* Default */ - /* 44*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116, 0 /*set*/, 38, 40, 214, 70 }, /* Same as default */ - /* 45*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116, 1 /*set*/, 40, 100, 250, 4 }, - /* 46*/ { BARCODE_UPCA_CC, -1, -1, -1, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 120, 0 /*set*/, 38, 44, 214, 70 }, - /* 47*/ { BARCODE_UPCA_CC, -1, -1, -1, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 120, 1 /*set*/, 44, 100, 250, 4 }, - /* 48*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 0 /*set*/, 38, 40, 214, 70 }, /* Hide text default */ - /* 49*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 1 /*set*/, 40, 100, 250, 4 }, /* Hide text default */ - /* 50*/ { BARCODE_UPCA_CC, -1, -1, 0, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 0 /*set*/, 38, 44, 214, 70 }, /* Hide text */ - /* 51*/ { BARCODE_UPCA_CC, -1, -1, 0, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 1 /*set*/, 44, 100, 250, 4 }, /* Hide text */ + /* 42*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 116, 0 /*set*/, 38, 40, 208, 68 }, /* Default */ + /* 43*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 116, 1 /*set*/, 40, 100, 258, 4 }, /* Default */ + /* 44*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 116, 0 /*set*/, 38, 40, 208, 68 }, /* Same as default */ + /* 45*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 116, 1 /*set*/, 40, 100, 258, 4 }, + /* 46*/ { BARCODE_UPCA_CC, -1, -1, -1, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 120, 0 /*set*/, 38, 44, 208, 68 }, + /* 47*/ { BARCODE_UPCA_CC, -1, -1, -1, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 120, 1 /*set*/, 44, 100, 258, 4 }, + /* 48*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 110, 0 /*set*/, 38, 40, 208, 68 }, /* Hide text default */ + /* 49*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 110, 1 /*set*/, 40, 100, 258, 4 }, /* Hide text default */ + /* 50*/ { BARCODE_UPCA_CC, -1, -1, 0, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 110, 0 /*set*/, 38, 44, 208, 68 }, /* Hide text */ + /* 51*/ { BARCODE_UPCA_CC, -1, -1, 0, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 110, 1 /*set*/, 44, 100, 258, 4 }, /* Hide text */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; const char *text; - testStart("test_text_gap"); + testStartSymbol("test_text_gap", &symbol); for (i = 0; i < data_size; i++) { int row, column; @@ -1923,6 +2001,9 @@ static void test_text_gap(const testCtx *const p_ctx) { i, data[i].symbology, symbol->bitmap_height, data[i].expected_set_rows); assert_nonzero(data[i].expected_set_rows > data[i].expected_set_row, "i:%d (%d) expected_set_rows %d < expected_set_row %d\n", i, data[i].symbology, data[i].expected_set_rows, data[i].expected_set_row); + assert_nonzero(symbol->bitmap_width >= data[i].expected_set_col + data[i].expected_set_len, + "i:%d (%d) symbol->bitmap_width %d < expected_set_col %d + expected_set_len %d\n", + i, data[i].symbology, symbol->bitmap_width, data[i].expected_set_col, data[i].expected_set_len); for (row = data[i].expected_set_row; row < data[i].expected_set_rows; row++) { int bits_set = 0; for (column = data[i].expected_set_col; column < data[i].expected_set_col + data[i].expected_set_len; column++) { @@ -1966,105 +2047,105 @@ static void test_buffer_plot(const testCtx *const p_ctx) { }; struct item data[] = { /* 0*/ { BARCODE_PDF417, 0, 1, -1, -1, 15, "", "", "1", 0, 16, 4, 86, 86, 16, - "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" - "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" - "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" - "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" - "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" - "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" - "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" - "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" - "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" - "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" - "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" - "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" - "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" - "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" - "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" - "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" + "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" + "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" + "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" + "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" + "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" + "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" + "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" + "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" + "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" + "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" + "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" + "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" + "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" + "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" + "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" + "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" }, /* 1*/ { BARCODE_PDF417, 0, 1, -1, -1, 15, "FF0000", "00FF0099", "1", 0, 16, 4, 86, 86, 16, - "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" }, /* 2*/ { BARCODE_PDF417, 0, 1, 1, -1, 15, "FFFF0033", "00FF00", "1", 0, 16, 4, 86, 88, 16, - "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" }, /* 3*/ { BARCODE_ULTRA, -1, -1, -1, -1, 13, "FF00007F", "00FF0000", "1", 0, 13, 13, 13, 13, 13, - "1111111111111" - "10Y10GYCGYYC1" - "11C10MGYCGGG1" - "10G10GYCMCYC1" - "11Y10YMMGYGY1" - "10M10CGGCMYM1" - "1101010101011" - "10G10CYMGCCC1" - "11C10MCGCMMM1" - "10Y10CGCGYCY1" - "11M10GMMMMGC1" - "10C10MYYYGMY1" - "1111111111111" + "1111111111111" + "10Y10GYCGYYC1" + "11C10MGYCGGG1" + "10G10GYCMCYC1" + "11Y10YMMGYGY1" + "10M10CGGCMYM1" + "1101010101011" + "10G10CYMGCCC1" + "11C10MCGCMMM1" + "10Y10CGCGYCY1" + "11M10GMMMMGC1" + "10C10MYYYGMY1" + "1111111111111" }, /* 4*/ { BARCODE_ULTRA, -1, -1, 1, -1, 13, "", "00FF0000", "1", 0, 13, 13, 13, 15, 13, - "G1111111111111G" - "G10Y10GYCGYYC1G" - "G11C10MGYCGGG1G" - "G10G10GYCMCYC1G" - "G11Y10YMMGYGY1G" - "G10M10CGGCMYM1G" - "G1101010101011G" - "G10G10CYMGCCC1G" - "G11C10MCGCMMM1G" - "G10Y10CGCGYCY1G" - "G11M10GMMMMGC1G" - "G10C10MYYYGMY1G" - "G1111111111111G" + "G1111111111111G" + "G10Y10GYCGYYC1G" + "G11C10MGYCGGG1G" + "G10G10GYCMCYC1G" + "G11Y10YMMGYGY1G" + "G10M10CGGCMYM1G" + "G1101010101011G" + "G10G10CYMGCCC1G" + "G11C10MCGCMMM1G" + "G10Y10CGCGYCY1G" + "G11M10GMMMMGC1G" + "G10C10MYYYGMY1G" + "G1111111111111G" }, /* 5*/ { BARCODE_CHANNEL, -1, -1, 1, -1, 5, "30313233", "CFCECDCC", "1", 0, 5, 1, 19, 21, 5, - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; int row, column; int fg_len, bg_len; - testStart("test_buffer_plot"); + testStartSymbol("test_buffer_plot", &symbol); for (i = 0; i < data_size; i++) { @@ -2565,36 +2646,36 @@ static void test_height(const testCtx *const p_ctx) { /*408*/ { BARCODE_CODE32, -1, 19, "12345678", "", 0, 19, 1, 103, 206, 38, "" }, /*409*/ { BARCODE_CODE32, COMPLIANT_HEIGHT, 19, "12345678", "", ZINT_WARN_NONCOMPLIANT, 19, 1, 103, 206, 38, "" }, /*410*/ { BARCODE_CODE32, COMPLIANT_HEIGHT, 20, "12345678", "", 0, 20, 1, 103, 206, 40, "" }, - /*411*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01", 0, 50, 7, 99, 234, 110, "EAN-13, CC-A 3 rows" }, - /*412*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01", 0, 12.5, 7, 99, 234, 35, "" }, - /*413*/ { BARCODE_EANX_CC, -1, 81, "123456789012", "[20]01", 0, 81, 7, 99, 234, 172, "" }, - /*414*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 81, "123456789012", "[20]01", ZINT_WARN_NONCOMPLIANT, 81, 7, 99, 234, 172, "" }, - /*415*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 81.25, "123456789012", "[20]01", 0, 81.5, 7, 99, 234, 173, "" }, - /*416*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 50, 9, 99, 234, 110, "EAN-13, CC-A 5 rows" }, - /*417*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 16.5, 9, 99, 234, 43, "" }, - /*418*/ { BARCODE_EANX_CC, -1, 85, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 85, 9, 99, 234, 180, "" }, - /*419*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 85, "123456789012", "[20]01[90]123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, 85, 9, 99, 234, 180, "" }, - /*420*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 85.25, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 85.5, 9, 99, 234, 181, "" }, - /*421*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 50, 11, 99, 234, 110, "EAN-13, CC-A 7 rows" }, - /*422*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 20.5, 11, 99, 234, 51, "" }, - /*423*/ { BARCODE_EANX_CC, -1, 89, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 89, 11, 99, 234, 188, "" }, - /*424*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 89, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", ZINT_WARN_NONCOMPLIANT, 89, 11, 99, 234, 188, "" }, - /*425*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 89.25, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 89.5, 11, 99, 234, 189, "" }, - /*426*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 50, 14, 99, 234, 110, "EAN-13, CC-B 10 rows" }, - /*427*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 26.5, 14, 99, 234, 63, "" }, - /*428*/ { BARCODE_EANX_CC, -1, 95, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 95, 14, 99, 234, 200, "" }, - /*429*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 95, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 95, 14, 99, 234, 200, "" }, - /*430*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 95.25, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 95.5, 14, 99, 234, 201, "" }, - /*431*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234", 0, 50, 10, 72, 172, 110, "EAN-8, CC-A 4 rows" }, - /*432*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234", 0, 18.5, 10, 72, 172, 47, "" }, - /*433*/ { BARCODE_EANX_CC, -1, 73, "1234567", "[20]01[90]123456789012345678901234", 0, 73, 10, 72, 172, 156, "" }, - /*434*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 73, "1234567", "[20]01[90]123456789012345678901234", ZINT_WARN_NONCOMPLIANT, 73, 10, 72, 172, 156, "" }, - /*435*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 73.25, "1234567", "[20]01[90]123456789012345678901234", 0, 73.5, 10, 72, 172, 157, "" }, - /*436*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 50, 24, 82, 192, 110, "EAN-8, CC-B 15 rows" }, - /*437*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 46.5, 24, 82, 192, 103, "" }, - /*438*/ { BARCODE_EANX_CC, -1, 101, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 101, 24, 82, 192, 212, "" }, - /*439*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 101, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, 101, 24, 82, 192, 212, "" }, - /*440*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 101.25, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 101.5, 24, 82, 192, 213, "" }, + /*411*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01", 0, 50, 7, 99, 226, 110, "EAN-13, CC-A 3 rows" }, + /*412*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01", 0, 12.5, 7, 99, 226, 35, "" }, + /*413*/ { BARCODE_EANX_CC, -1, 81, "123456789012", "[20]01", 0, 81, 7, 99, 226, 172, "" }, + /*414*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 81, "123456789012", "[20]01", ZINT_WARN_NONCOMPLIANT, 81, 7, 99, 226, 172, "" }, + /*415*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 81.25, "123456789012", "[20]01", 0, 81.5, 7, 99, 226, 173, "" }, + /*416*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 50, 9, 99, 226, 110, "EAN-13, CC-A 5 rows" }, + /*417*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 16.5, 9, 99, 226, 43, "" }, + /*418*/ { BARCODE_EANX_CC, -1, 85, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 85, 9, 99, 226, 180, "" }, + /*419*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 85, "123456789012", "[20]01[90]123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, 85, 9, 99, 226, 180, "" }, + /*420*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 85.25, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 85.5, 9, 99, 226, 181, "" }, + /*421*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 50, 11, 99, 226, 110, "EAN-13, CC-A 7 rows" }, + /*422*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 20.5, 11, 99, 226, 51, "" }, + /*423*/ { BARCODE_EANX_CC, -1, 89, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 89, 11, 99, 226, 188, "" }, + /*424*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 89, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", ZINT_WARN_NONCOMPLIANT, 89, 11, 99, 226, 188, "" }, + /*425*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 89.25, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 89.5, 11, 99, 226, 189, "" }, + /*426*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 50, 14, 99, 226, 110, "EAN-13, CC-B 10 rows" }, + /*427*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 26.5, 14, 99, 226, 63, "" }, + /*428*/ { BARCODE_EANX_CC, -1, 95, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 95, 14, 99, 226, 200, "" }, + /*429*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 95, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 95, 14, 99, 226, 200, "" }, + /*430*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 95.25, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 95.5, 14, 99, 226, 201, "" }, + /*431*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234", 0, 50, 10, 72, 162, 110, "EAN-8, CC-A 4 rows" }, + /*432*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234", 0, 18.5, 10, 72, 162, 47, "" }, + /*433*/ { BARCODE_EANX_CC, -1, 73, "1234567", "[20]01[90]123456789012345678901234", 0, 73, 10, 72, 162, 156, "" }, + /*434*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 73, "1234567", "[20]01[90]123456789012345678901234", ZINT_WARN_NONCOMPLIANT, 73, 10, 72, 162, 156, "" }, + /*435*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 73.25, "1234567", "[20]01[90]123456789012345678901234", 0, 73.5, 10, 72, 162, 157, "" }, + /*436*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 50, 24, 82, 178, 110, "EAN-8, CC-B 15 rows" }, + /*437*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 46.5, 24, 82, 178, 103, "" }, + /*438*/ { BARCODE_EANX_CC, -1, 101, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 101, 24, 82, 178, 212, "" }, + /*439*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 101, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, 101, 24, 82, 178, 212, "" }, + /*440*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 101.25, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 101.5, 24, 82, 178, 213, "" }, /*441*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231", "[20]01", 0, 50, 5, 145, 290, 100, "CC-A 3 rows" }, /*442*/ { BARCODE_GS1_128_CC, -1, 1, "[01]12345678901231", "[20]01", 0, 7.5, 5, 145, 290, 15, "" }, /*443*/ { BARCODE_GS1_128_CC, -1, 12.5, "[01]12345678901231", "[20]01", 0, 12.5, 5, 145, 290, 25, "" }, @@ -2665,41 +2746,41 @@ static void test_height(const testCtx *const p_ctx) { /*508*/ { BARCODE_DBAR_EXP_CC, -1, 54, "[01]12345678901231", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 54, 12, 134, 268, 108, "" }, /*509*/ { BARCODE_DBAR_EXP_CC, COMPLIANT_HEIGHT, 54, "[01]12345678901231", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 54, 12, 134, 268, 108, "" }, /*510*/ { BARCODE_DBAR_EXP_CC, COMPLIANT_HEIGHT, 55, "[01]12345678901231", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 55, 12, 134, 268, 110, "" }, - /*511*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01", 0, 50, 7, 99, 234, 110, "CC-A 3 rows" }, - /*512*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01", 0, 12.5, 7, 99, 234, 35, "" }, - /*513*/ { BARCODE_UPCA_CC, -1, 81.24, "12345678901", "[20]01", 0, 81, 7, 99, 234, 172, "" }, - /*514*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 81.24, "12345678901", "[20]01", ZINT_WARN_NONCOMPLIANT, 81, 7, 99, 234, 172, "" }, - /*515*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 81.25, "12345678901", "[20]01", 0, 81.5, 7, 99, 234, 173, "" }, - /*516*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 50, 10, 99, 234, 110, "CC-A 6 rows" }, - /*517*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 18.5, 10, 99, 234, 47, "" }, - /*518*/ { BARCODE_UPCA_CC, -1, 87.24, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 87, 10, 99, 234, 184, "" }, - /*519*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 87.24, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", ZINT_WARN_NONCOMPLIANT, 87, 10, 99, 234, 184, "" }, - /*520*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 87.25, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 87.5, 10, 99, 234, 185, "" }, - /*521*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 50, 16, 99, 234, 110, "CC-B 12 rows" }, - /*522*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 30.5, 16, 99, 234, 71, "" }, - /*523*/ { BARCODE_UPCA_CC, -1, 99, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 99, 16, 99, 234, 208, "" }, - /*524*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 99, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", ZINT_WARN_NONCOMPLIANT, 99, 16, 99, 234, 208, "" }, - /*525*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 99.25, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 99.5, 16, 99, 234, 209, "" }, - /*526*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678", 0, 50, 11, 55, 142, 110, "CC-A 7 rows" }, - /*527*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678", 0, 20.5, 11, 55, 142, 51, "" }, - /*528*/ { BARCODE_UPCE_CC, -1, 89, "1234567", "[20]01[90]123456789012345678", 0, 89, 11, 55, 142, 188, "" }, - /*529*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 89, "1234567", "[20]01[90]123456789012345678", ZINT_WARN_NONCOMPLIANT, 89, 11, 55, 142, 188, "" }, - /*530*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 89.25, "1234567", "[20]01[90]123456789012345678", 0, 89.5, 11, 55, 142, 189, "" }, - /*531*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 50, 16, 55, 142, 110, "CC-A 12 rows" }, - /*532*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 30.5, 16, 55, 142, 71, "" }, - /*533*/ { BARCODE_UPCE_CC, -1, 99, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 99, 16, 55, 142, 208, "" }, - /*534*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 99, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", ZINT_WARN_NONCOMPLIANT, 99, 16, 55, 142, 208, "" }, - /*535*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 99.25, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 99.5, 16, 55, 142, 209, "" }, - /*536*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 50, 21, 55, 142, 110, "CC-B 17 rows" }, - /*537*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 40.5, 21, 55, 142, 91, "" }, - /*538*/ { BARCODE_UPCE_CC, -1, 109, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 109, 21, 55, 142, 228, "" }, - /*539*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 109, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 109, 21, 55, 142, 228, "" }, - /*540*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 109.25, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 109.5, 21, 55, 142, 229, "" }, - /*541*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 52.5, 27, 55, 142, 115, "CC-B 23 rows" }, - /*542*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 52.5, 27, 55, 142, 115, "" }, - /*543*/ { BARCODE_UPCE_CC, -1, 121, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 121, 27, 55, 142, 252, "" }, - /*544*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 121, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", ZINT_WARN_NONCOMPLIANT, 121, 27, 55, 142, 252, "" }, - /*545*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 121.25, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 121.5, 27, 55, 142, 253, "" }, + /*511*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01", 0, 50, 7, 99, 226, 110, "CC-A 3 rows" }, + /*512*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01", 0, 12.5, 7, 99, 226, 35, "" }, + /*513*/ { BARCODE_UPCA_CC, -1, 81.24, "12345678901", "[20]01", 0, 81, 7, 99, 226, 172, "" }, + /*514*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 81.24, "12345678901", "[20]01", ZINT_WARN_NONCOMPLIANT, 81, 7, 99, 226, 172, "" }, + /*515*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 81.25, "12345678901", "[20]01", 0, 81.5, 7, 99, 226, 173, "" }, + /*516*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 50, 10, 99, 226, 110, "CC-A 6 rows" }, + /*517*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 18.5, 10, 99, 226, 47, "" }, + /*518*/ { BARCODE_UPCA_CC, -1, 87.24, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 87, 10, 99, 226, 184, "" }, + /*519*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 87.24, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", ZINT_WARN_NONCOMPLIANT, 87, 10, 99, 226, 184, "" }, + /*520*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 87.25, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 87.5, 10, 99, 226, 185, "" }, + /*521*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 50, 16, 99, 226, 110, "CC-B 12 rows" }, + /*522*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 30.5, 16, 99, 226, 71, "" }, + /*523*/ { BARCODE_UPCA_CC, -1, 99, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 99, 16, 99, 226, 208, "" }, + /*524*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 99, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", ZINT_WARN_NONCOMPLIANT, 99, 16, 99, 226, 208, "" }, + /*525*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 99.25, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 99.5, 16, 99, 226, 209, "" }, + /*526*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678", 0, 50, 11, 55, 134, 110, "CC-A 7 rows" }, + /*527*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678", 0, 20.5, 11, 55, 134, 51, "" }, + /*528*/ { BARCODE_UPCE_CC, -1, 89, "1234567", "[20]01[90]123456789012345678", 0, 89, 11, 55, 134, 188, "" }, + /*529*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 89, "1234567", "[20]01[90]123456789012345678", ZINT_WARN_NONCOMPLIANT, 89, 11, 55, 134, 188, "" }, + /*530*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 89.25, "1234567", "[20]01[90]123456789012345678", 0, 89.5, 11, 55, 134, 189, "" }, + /*531*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 50, 16, 55, 134, 110, "CC-A 12 rows" }, + /*532*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 30.5, 16, 55, 134, 71, "" }, + /*533*/ { BARCODE_UPCE_CC, -1, 99, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 99, 16, 55, 134, 208, "" }, + /*534*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 99, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", ZINT_WARN_NONCOMPLIANT, 99, 16, 55, 134, 208, "" }, + /*535*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 99.25, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 99.5, 16, 55, 134, 209, "" }, + /*536*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 50, 21, 55, 134, 110, "CC-B 17 rows" }, + /*537*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 40.5, 21, 55, 134, 91, "" }, + /*538*/ { BARCODE_UPCE_CC, -1, 109, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 109, 21, 55, 134, 228, "" }, + /*539*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 109, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 109, 21, 55, 134, 228, "" }, + /*540*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 109.25, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 109.5, 21, 55, 134, 229, "" }, + /*541*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 52.5, 27, 55, 134, 115, "CC-B 23 rows" }, + /*542*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 52.5, 27, 55, 134, 115, "" }, + /*543*/ { BARCODE_UPCE_CC, -1, 121, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 121, 27, 55, 134, 252, "" }, + /*544*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 121, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", ZINT_WARN_NONCOMPLIANT, 121, 27, 55, 134, 252, "" }, + /*545*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 121.25, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 121.5, 27, 55, 134, 253, "" }, /*546*/ { BARCODE_DBAR_STK_CC, -1, -1, "1234567890123", "[20]01", 0, 24, 9, 56, 112, 48, "CC-A 5 rows" }, /*547*/ { BARCODE_DBAR_STK_CC, -1, 1, "1234567890123", "[20]01", 0, 13, 9, 56, 112, 26, "" }, /*548*/ { BARCODE_DBAR_STK_CC, -1, 23.9, "1234567890123", "[20]01", 0, 24, 9, 56, 112, 48, "" }, @@ -2773,11 +2854,11 @@ static void test_height(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char *text; - testStart("test_height"); + testStartSymbol("test_height", &symbol); for (i = 0; i < data_size; i++) { @@ -2930,19 +3011,19 @@ static void test_height_per_row(const testCtx *const p_ctx) { /* 68*/ { BARCODE_DBAR_OMNSTK, HEIGHTPERROW_MODE, -1, -1, -1, 0.5, -1, "1234567890123", "", 0, 4, 5, 50, 100, 8, "(0.5 * 2 rows + 3 separators) * 2 scale = 8" }, /* 69*/ { BARCODE_DBAR_OMNSTK, HEIGHTPERROW_MODE, -1, -1, -1, 1, -1, "1234567890123", "", 0, 5, 5, 50, 100, 10, "" }, /* 70*/ { BARCODE_DBAR_OMNSTK, HEIGHTPERROW_MODE, -1, -1, -1, 3.2, -1, "1234567890123", "", 0, 9, 5, 50, 100, 18, "" }, - /* 71*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, "123456789012", "[20]01", 0, 50, 7, 99, 234, 110, "" }, - /* 72*/ { BARCODE_EANX_CC, HEIGHTPERROW_MODE, -1, -1, -1, 0.5, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 234, 35, "(0.5 * 1 row + 2 * 3 seps + 2 * 3 cc rows + 5 guards) * 2 scale = 35" }, - /* 73*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 0.5, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 234, 35, "0.5 height below fixed height" }, - /* 74*/ { BARCODE_EANX_CC, HEIGHTPERROW_MODE, -1, -1, -1, 4, -1, "123456789012", "[20]01", 0, 16, 7, 99, 234, 42, "" }, - /* 75*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 4, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 234, 35, "4 height below fixed height" }, + /* 71*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, "123456789012", "[20]01", 0, 50, 7, 99, 226, 110, "" }, + /* 72*/ { BARCODE_EANX_CC, HEIGHTPERROW_MODE, -1, -1, -1, 0.5, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 226, 35, "(0.5 * 1 row + 2 * 3 seps + 2 * 3 cc rows + 5 guards) * 2 scale = 35" }, + /* 73*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 0.5, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 226, 35, "0.5 height below fixed height" }, + /* 74*/ { BARCODE_EANX_CC, HEIGHTPERROW_MODE, -1, -1, -1, 4, -1, "123456789012", "[20]01", 0, 16, 7, 99, 226, 42, "" }, + /* 75*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 4, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 226, 35, "4 height below fixed height" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char *text; - testStart("test_height_per_row"); + testStartSymbol("test_height_per_row", &symbol); for (i = 0; i < data_size; i++) { diff --git a/backend/tests/test_svg.c b/backend/tests/test_svg.c index 8b554a6a..b0a6744a 100644 --- a/backend/tests/test_svg.c +++ b/backend/tests/test_svg.c @@ -66,55 +66,80 @@ static void test_print(const testCtx *const p_ctx) { /* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_3rows.svg", "" }, /* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.svg", "" }, /* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.svg", "" }, - /* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.svg", "" }, - /* 10*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.svg", "" }, - /* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.svg", "" }, - /* 12*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.svg", "" }, - /* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.svg", "" }, - /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.svg", "" }, - /* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.svg", "" }, - /* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.svg", "" }, - /* 17*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_small_bold.svg", "Note BOLD_TEXT ignored for UPC/EAN" }, - /* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.svg", "" }, - /* 19*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.svg", "" }, - /* 20*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.svg", "" }, - /* 21*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.svg", "" }, - /* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "upce_2addon.svg", "" }, - /* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon.svg", "" }, - /* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.svg", "" }, - /* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_notext.svg", "" }, - /* 26*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.svg", "" }, - /* 27*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "FF0000EE", "0000FF11", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_fgbgalpha.svg", "" }, - /* 28*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "FFFFFF00", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_nobg.svg", "" }, - /* 29*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 270, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_rotate_270.svg", "" }, - /* 30*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.svg", "" }, - /* 31*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.svg", "" }, - /* 32*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "ean8_2addon.svg", "" }, - /* 33*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.svg", "" }, - /* 34*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.svg", "" }, - /* 35*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.svg", "" }, - /* 36*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "ean5.svg", "" }, - /* 37*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12", "", 0, "ean2.svg", "" }, - /* 38*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "123", "", 0, "code39_small.svg", "" }, - /* 39*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "postnet_zip.svg", "" }, - /* 40*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_box2.svg", "" }, - /* 41*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.svg", "" }, - /* 42*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "121212DD", "EEEEEE22", 90, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_fgbg_rotate_90.svg", "" }, - /* 43*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_vwsp1_bind1_dotty.svg", "" }, - /* 44*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_hvwsp1_bind1_dotty.svg", "" }, - /* 45*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345678909", "", 0, "dbar_ltd.svg", "" }, - /* 46*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.svg", "" }, - /* 47*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.svg", "" }, - /* 48*/ { BARCODE_ULTRA, -1, 3, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "FF0000", "0000FF", 0, "12345678901234567890", "", 0, "ultra_fgbg_hvwsp2_box3.svg", "" }, - /* 49*/ { BARCODE_TELEPEN, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.4, "", "", 180, "A", "", 0, "telepen_height0.4_rotate_180.svg", "" }, - /* 50*/ { BARCODE_CODE49, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "FF11157F", "", 0, "A", "", 0, "code49_comph_fgalpha.svg", "" }, - /* 51*/ { BARCODE_CODABLOCKF, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 2, 0, "00000033", "FFFFFF66", 0, "1234567890123456789012345678901234", "", 0, "codablockf_comph_sep2_fgbgalpha.svg", "" }, - /* 52*/ { BARCODE_DPD, -1, -1, BARCODE_QUIET_ZONES | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "008182709980000020028101276", "", 0, "dpd_compliant.svg", "" }, - /* 53*/ { BARCODE_CHANNEL, -1, -1, CMYK_COLOUR | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "100,85,0,20", "FFFFFF00", 0, "123", "", 0, "channel_cmyk_nobg.svg", "" }, + /* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9501101531000", "", 0, "ean13_ggs_5.2.2.1-1.svg", "" }, + /* 10*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9501101531000", "", 0, "ean13_ggs_5.2.2.1-1_gws.svg", "" }, + /* 11*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE | EMBED_VECTOR_FONT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9501101531000", "", 0, "ean13_ggs_5.2.2.1-1_gws_embed.svg", "" }, + /* 12*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.svg", "" }, + /* 13*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2_gws.svg", "" }, + /* 14*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.svg", "" }, + /* 15*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2_gws.svg", "" }, + /* 16*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "123456789012", "[91]12345678901234567890123456789", 0, "ean13_cc_cca_5x4.svg", "" }, + /* 17*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "123456789012", "[91]12345678901234567890123456789", 0, "ean13_cc_cca_5x4_gws.svg", "" }, + /* 18*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.svg", "" }, + /* 19*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4_gws.svg", "" }, + /* 20*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.svg", "" }, + /* 21*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_gws.svg", "" }, + /* 22*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.svg", "" }, + /* 23*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.svg", "" }, + /* 24*/ { BARCODE_UPCA, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5_gws.svg", "" }, + /* 25*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.svg", "" }, + /* 26*/ { BARCODE_UPCA, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_gws.svg", "" }, + /* 27*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.svg", "" }, + /* 28*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_small_bold.svg", "Note BOLD_TEXT ignored for UPC/EAN" }, + /* 29*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.svg", "" }, + /* 30*/ { BARCODE_UPCA_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4_gws.svg", "" }, + /* 31*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.svg", "" }, + /* 32*/ { BARCODE_UPCA_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_gws.svg", "" }, + /* 33*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.svg", "" }, + /* 34*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.svg", "" }, + /* 35*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "upce_2addon.svg", "" }, + /* 36*/ { BARCODE_UPCE, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "upce_2addon_gws.svg", "" }, + /* 37*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon.svg", "" }, + /* 38*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.svg", "" }, + /* 39*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT | EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small_gws.svg", "" }, + /* 40*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_notext.svg", "" }, + /* 41*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.svg", "" }, + /* 42*/ { BARCODE_UPCE_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_gws.svg", "" }, + /* 43*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "FF0000EE", "0000FF11", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_fgbgalpha.svg", "" }, + /* 44*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "FFFFFF00", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_nobg.svg", "" }, + /* 45*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 270, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_rotate_270.svg", "" }, + /* 46*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.svg", "" }, + /* 47*/ { BARCODE_UPCE_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_gws.svg", "" }, + /* 48*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.svg", "" }, + /* 49*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9501234", "", 0, "ean8_gss_5.2.2.2-1.svg", "" }, + /* 50*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9501234", "", 0, "ean8_gss_5.2.2.2-1_gws.svg", "" }, + /* 51*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "ean8_2addon.svg", "" }, + /* 52*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "ean8_2addon_gws.svg", "" }, + /* 53*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.svg", "" }, + /* 54*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "ean8_5addon_gws.svg", "" }, + /* 55*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.svg", "" }, + /* 56*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3_gws.svg", "" }, + /* 57*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.svg", "" }, + /* 58*/ { BARCODE_EANX_CC, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3_gws.svg", "" }, + /* 59*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "ean5.svg", "" }, + /* 60*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "ean5_gws.svg", "" }, + /* 61*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12", "", 0, "ean2.svg", "" }, + /* 62*/ { BARCODE_EANX, -1, -1, EANUPC_GUARD_WHITESPACE, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12", "", 0, "ean2_gws.svg", "" }, + /* 63*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "123", "", 0, "code39_small.svg", "" }, + /* 64*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "postnet_zip.svg", "" }, + /* 65*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_box2.svg", "" }, + /* 66*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.svg", "" }, + /* 67*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "121212DD", "EEEEEE22", 90, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_fgbg_rotate_90.svg", "" }, + /* 68*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_vwsp1_bind1_dotty.svg", "" }, + /* 69*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_hvwsp1_bind1_dotty.svg", "" }, + /* 70*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345678909", "", 0, "dbar_ltd.svg", "" }, + /* 71*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.svg", "" }, + /* 72*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.svg", "" }, + /* 73*/ { BARCODE_ULTRA, -1, 3, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "FF0000", "0000FF", 0, "12345678901234567890", "", 0, "ultra_fgbg_hvwsp2_box3.svg", "" }, + /* 74*/ { BARCODE_TELEPEN, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.4, "", "", 180, "A", "", 0, "telepen_height0.4_rotate_180.svg", "" }, + /* 75*/ { BARCODE_CODE49, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "FF11157F", "", 0, "A", "", 0, "code49_comph_fgalpha.svg", "" }, + /* 76*/ { BARCODE_CODABLOCKF, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 2, 0, "00000033", "FFFFFF66", 0, "1234567890123456789012345678901234", "", 0, "codablockf_comph_sep2_fgbgalpha.svg", "" }, + /* 77*/ { BARCODE_DPD, -1, -1, BARCODE_QUIET_ZONES | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "008182709980000020028101276", "", 0, "dpd_compliant.svg", "" }, + /* 78*/ { BARCODE_CHANNEL, -1, -1, CMYK_COLOUR | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "100,85,0,20", "FFFFFF00", 0, "123", "", 0, "channel_cmyk_nobg.svg", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; const char *data_dir = "/backend/tests/data/svg"; const char *svg = "out.svg"; @@ -126,7 +151,7 @@ static void test_print(const testCtx *const p_ctx) { int have_libreoffice = 0; int have_vnu = 0; - testStart("test_print"); + testStartSymbol("test_print", &symbol); if (p_ctx->generate) { char data_dir_path[1024]; @@ -250,8 +275,9 @@ static void test_outfile(const testCtx *const p_ctx) { symbol.output_options |= BARCODE_STDOUT; + printf(">>>Begin ignore (SVG to stdout)\n"); fflush(stdout); ret = svg_plot(&symbol, 0); - printf(" - ignore (SVG to stdout)\n"); fflush(stdout); + printf("<<generate) { char data_dir_path[1024]; @@ -337,8 +339,9 @@ static void test_outfile(const testCtx *const p_ctx) { symbol.output_options |= BARCODE_STDOUT; + printf("<<vector) { + for (string = symbol->vector->strings; string; string = string->next, cnt++); + } + return cnt; +} + static void test_options(const testCtx *const p_ctx) { int debug = p_ctx->debug; @@ -487,9 +498,9 @@ static void test_options(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_options"); + testStartSymbol("test_options", &symbol); for (i = 0; i < data_size; i++) { @@ -548,22 +559,22 @@ static void test_buffer_vector(const testCtx *const p_ctx) { /* 5*/ { BARCODE_C25IND, "1234567890", "", 50, 1, 159, 318, 118.900002 }, /* 6*/ { BARCODE_CODE39, "1234567890", "", 50, 1, 155, 310, 118.900002 }, /* 7*/ { BARCODE_EXCODE39, "1234567890", "", 50, 1, 155, 310, 118.900002 }, - /* 8*/ { BARCODE_EANX, "123456789012", "", 50, 1, 95, 226, 116.9 }, - /* 9*/ { BARCODE_EANX_CHK, "1234567890128", "", 50, 1, 95, 226, 116.9 }, - /* 10*/ { BARCODE_EANX, "123456789012+12", "", 50, 1, 122, 276, 116.9 }, - /* 11*/ { BARCODE_EANX_CHK, "1234567890128+12", "", 50, 1, 122, 276, 116.9 }, - /* 12*/ { BARCODE_EANX, "123456789012+12345", "", 50, 1, 149, 330, 116.9 }, - /* 13*/ { BARCODE_EANX_CHK, "1234567890128+12345", "", 50, 1, 149, 330, 116.9 }, - /* 14*/ { BARCODE_EANX, "1234567", "", 50, 1, 67, 162, 116.9 }, - /* 15*/ { BARCODE_EANX_CHK, "12345670", "", 50, 1, 67, 162, 116.9 }, - /* 16*/ { BARCODE_EANX, "1234567+12", "", 50, 1, 94, 216, 116.9 }, - /* 17*/ { BARCODE_EANX_CHK, "12345670+12", "", 50, 1, 94, 216, 116.9 }, - /* 18*/ { BARCODE_EANX, "1234567+12345", "", 50, 1, 121, 270, 116.9 }, - /* 19*/ { BARCODE_EANX_CHK, "12345670+12345", "", 50, 1, 121, 270, 116.9 }, - /* 20*/ { BARCODE_EANX, "1234", "", 50, 1, 47, 118, 116.9 }, - /* 21*/ { BARCODE_EANX_CHK, "1234", "", 50, 1, 47, 118, 116.9 }, - /* 22*/ { BARCODE_EANX, "12", "", 50, 1, 20, 64, 116.9 }, - /* 23*/ { BARCODE_EANX_CHK, "12", "", 50, 1, 20, 64, 116.9 }, + /* 8*/ { BARCODE_EANX, "123456789012", "", 50, 1, 95, 226, 118 }, + /* 9*/ { BARCODE_EANX_CHK, "1234567890128", "", 50, 1, 95, 226, 118 }, + /* 10*/ { BARCODE_EANX, "123456789012+12", "", 50, 1, 122, 276, 118 }, + /* 11*/ { BARCODE_EANX_CHK, "1234567890128+12", "", 50, 1, 122, 276, 118 }, + /* 12*/ { BARCODE_EANX, "123456789012+12345", "", 50, 1, 149, 330, 118 }, + /* 13*/ { BARCODE_EANX_CHK, "1234567890128+12345", "", 50, 1, 149, 330, 118 }, + /* 14*/ { BARCODE_EANX, "1234567", "", 50, 1, 67, 162, 118 }, + /* 15*/ { BARCODE_EANX_CHK, "12345670", "", 50, 1, 67, 162, 118 }, + /* 16*/ { BARCODE_EANX, "1234567+12", "", 50, 1, 94, 212, 118 }, + /* 17*/ { BARCODE_EANX_CHK, "12345670+12", "", 50, 1, 94, 212, 118 }, + /* 18*/ { BARCODE_EANX, "1234567+12345", "", 50, 1, 121, 266, 118 }, + /* 19*/ { BARCODE_EANX_CHK, "12345670+12345", "", 50, 1, 121, 266, 118 }, + /* 20*/ { BARCODE_EANX, "1234", "", 50, 1, 47, 104, 118 }, + /* 21*/ { BARCODE_EANX_CHK, "1234", "", 50, 1, 47, 104, 118 }, + /* 22*/ { BARCODE_EANX, "12", "", 50, 1, 20, 50, 118 }, + /* 23*/ { BARCODE_EANX_CHK, "12", "", 50, 1, 20, 50, 118 }, /* 24*/ { BARCODE_GS1_128, "[01]12345678901231", "", 50, 1, 134, 268, 118.900002 }, /* 25*/ { BARCODE_CODABAR, "A00000000B", "", 50, 1, 102, 204, 118.900002 }, /* 26*/ { BARCODE_CODE128, "1234567890", "", 50, 1, 90, 180, 118.900002 }, @@ -577,18 +588,18 @@ static void test_buffer_vector(const testCtx *const p_ctx) { /* 34*/ { BARCODE_DBAR_LTD, "1234567890123", "", 50, 1, 79, 158, 118.900002 }, /* 35*/ { BARCODE_DBAR_EXP, "[01]12345678901231", "", 34, 1, 134, 268, 86.9000015 }, /* 36*/ { BARCODE_TELEPEN, "1234567890", "", 50, 1, 208, 416, 118.900002 }, - /* 37*/ { BARCODE_UPCA, "12345678901", "", 50, 1, 95, 226, 116.9 }, - /* 38*/ { BARCODE_UPCA_CHK, "123456789012", "", 50, 1, 95, 226, 116.9 }, - /* 39*/ { BARCODE_UPCA, "12345678901+12", "", 50, 1, 124, 276, 116.9 }, - /* 40*/ { BARCODE_UPCA_CHK, "123456789012+12", "", 50, 1, 124, 276, 116.9 }, - /* 41*/ { BARCODE_UPCA, "12345678901+12345", "", 50, 1, 151, 330, 116.9 }, - /* 42*/ { BARCODE_UPCA_CHK, "123456789012+12345", "", 50, 1, 151, 330, 116.9 }, - /* 43*/ { BARCODE_UPCE, "1234567", "", 50, 1, 51, 134, 116.9 }, - /* 44*/ { BARCODE_UPCE_CHK, "12345670", "", 50, 1, 51, 134, 116.9 }, - /* 45*/ { BARCODE_UPCE, "1234567+12", "", 50, 1, 78, 184, 116.9 }, - /* 46*/ { BARCODE_UPCE_CHK, "12345670+12", "", 50, 1, 78, 184, 116.9 }, - /* 47*/ { BARCODE_UPCE, "1234567+12345", "", 50, 1, 105, 238, 116.9 }, - /* 48*/ { BARCODE_UPCE_CHK, "12345670+12345", "", 50, 1, 105, 238, 116.9 }, + /* 37*/ { BARCODE_UPCA, "12345678901", "", 50, 1, 95, 226, 118 }, + /* 38*/ { BARCODE_UPCA_CHK, "123456789012", "", 50, 1, 95, 226, 118 }, + /* 39*/ { BARCODE_UPCA, "12345678901+12", "", 50, 1, 124, 276, 118 }, + /* 40*/ { BARCODE_UPCA_CHK, "123456789012+12", "", 50, 1, 124, 276, 118 }, + /* 41*/ { BARCODE_UPCA, "12345678901+12345", "", 50, 1, 151, 330, 118 }, + /* 42*/ { BARCODE_UPCA_CHK, "123456789012+12345", "", 50, 1, 151, 330, 118 }, + /* 43*/ { BARCODE_UPCE, "1234567", "", 50, 1, 51, 134, 118 }, + /* 44*/ { BARCODE_UPCE_CHK, "12345670", "", 50, 1, 51, 134, 118 }, + /* 45*/ { BARCODE_UPCE, "1234567+12", "", 50, 1, 78, 184, 118 }, + /* 46*/ { BARCODE_UPCE_CHK, "12345670+12", "", 50, 1, 78, 184, 118 }, + /* 47*/ { BARCODE_UPCE, "1234567+12345", "", 50, 1, 105, 238, 118 }, + /* 48*/ { BARCODE_UPCE_CHK, "12345670+12345", "", 50, 1, 105, 238, 118 }, /* 49*/ { BARCODE_POSTNET, "12345678901", "", 12, 2, 123, 246, 24 }, /* 50*/ { BARCODE_MSI_PLESSEY, "1234567890", "", 50, 1, 127, 254, 118.900002 }, /* 51*/ { BARCODE_FIM, "A", "", 50, 1, 17, 34, 100 }, @@ -606,9 +617,9 @@ static void test_buffer_vector(const testCtx *const p_ctx) { /* 63*/ { BARCODE_AUSREPLY, "12345678", "", 8, 3, 73, 146, 16 }, /* 64*/ { BARCODE_AUSROUTE, "12345678", "", 8, 3, 73, 146, 16 }, /* 65*/ { BARCODE_AUSREDIRECT, "12345678", "", 8, 3, 73, 146, 16 }, - /* 66*/ { BARCODE_ISBNX, "123456789", "", 50, 1, 95, 226, 116.9 }, - /* 67*/ { BARCODE_ISBNX, "123456789+12", "", 50, 1, 122, 276, 116.9 }, - /* 68*/ { BARCODE_ISBNX, "123456789+12345", "", 50, 1, 149, 330, 116.9 }, + /* 66*/ { BARCODE_ISBNX, "123456789", "", 50, 1, 95, 226, 118 }, + /* 67*/ { BARCODE_ISBNX, "123456789+12", "", 50, 1, 122, 276, 118 }, + /* 68*/ { BARCODE_ISBNX, "123456789+12345", "", 50, 1, 149, 330, 118 }, /* 69*/ { BARCODE_RM4SCC, "1234567890", "", 8, 3, 91, 182, 16 }, /* 70*/ { BARCODE_DATAMATRIX, "ABC", "", 10, 10, 10, 20, 20 }, /* 71*/ { BARCODE_EAN14, "1234567890123", "", 50, 1, 134, 268, 118.900002 }, @@ -646,22 +657,22 @@ static void test_buffer_vector(const testCtx *const p_ctx) { /*103*/ { BARCODE_MAILMARK_4S, "01000000000000000AA00AA0A", "", 10, 3, 155, 310, 20 }, /*104*/ { BARCODE_AZRUNE, "255", "", 11, 11, 11, 22, 22 }, /*105*/ { BARCODE_CODE32, "12345678", "", 50, 1, 103, 206, 118.900002 }, - /*106*/ { BARCODE_EANX_CC, "123456789012", "[20]01", 50, 7, 99, 234, 116.9 }, - /*107*/ { BARCODE_EANX_CC, "123456789012+12", "[20]01", 50, 7, 126, 284, 116.9 }, - /*108*/ { BARCODE_EANX_CC, "123456789012+12345", "[20]01", 50, 7, 153, 338, 116.9 }, - /*109*/ { BARCODE_EANX_CC, "1234567", "[20]01", 50, 8, 72, 172, 116.9 }, - /*110*/ { BARCODE_EANX_CC, "1234567+12", "[20]01", 50, 8, 99, 226, 116.9 }, - /*111*/ { BARCODE_EANX_CC, "1234567+12345", "[20]01", 50, 8, 126, 280, 116.9 }, + /*106*/ { BARCODE_EANX_CC, "123456789012", "[20]01", 50, 7, 99, 226, 118 }, + /*107*/ { BARCODE_EANX_CC, "123456789012+12", "[20]01", 50, 7, 125, 276, 118 }, + /*108*/ { BARCODE_EANX_CC, "123456789012+12345", "[20]01", 50, 7, 152, 330, 118 }, + /*109*/ { BARCODE_EANX_CC, "1234567", "[20]01", 50, 8, 72, 162, 118 }, + /*110*/ { BARCODE_EANX_CC, "1234567+12", "[20]01", 50, 8, 98, 212, 118 }, + /*111*/ { BARCODE_EANX_CC, "1234567+12345", "[20]01", 50, 8, 125, 266, 118 }, /*112*/ { BARCODE_GS1_128_CC, "[01]12345678901231", "[20]01", 50, 5, 145, 290, 118.900002 }, /*113*/ { BARCODE_DBAR_OMN_CC, "1234567890123", "[20]01", 21, 5, 100, 200, 60.9000015 }, /*114*/ { BARCODE_DBAR_LTD_CC, "1234567890123", "[20]01", 19, 6, 79, 158, 56.9000015 }, /*115*/ { BARCODE_DBAR_EXP_CC, "[01]12345678901231", "[20]01", 41, 5, 134, 268, 100.900002 }, - /*116*/ { BARCODE_UPCA_CC, "12345678901", "[20]01", 50, 7, 99, 234, 116.9 }, - /*117*/ { BARCODE_UPCA_CC, "12345678901+12", "[20]01", 50, 7, 128, 284, 116.9 }, - /*118*/ { BARCODE_UPCA_CC, "12345678901+12345", "[20]01", 50, 7, 155, 338, 116.9 }, - /*119*/ { BARCODE_UPCE_CC, "1234567", "[20]01", 50, 9, 55, 142, 116.9 }, - /*120*/ { BARCODE_UPCE_CC, "1234567+12", "[20]01", 50, 9, 82, 192, 116.9 }, - /*121*/ { BARCODE_UPCE_CC, "1234567+12345", "[20]01", 50, 9, 109, 246, 116.9 }, + /*116*/ { BARCODE_UPCA_CC, "12345678901", "[20]01", 50, 7, 99, 226, 118 }, + /*117*/ { BARCODE_UPCA_CC, "12345678901+12", "[20]01", 50, 7, 127, 276, 118 }, + /*118*/ { BARCODE_UPCA_CC, "12345678901+12345", "[20]01", 50, 7, 154, 330, 118 }, + /*119*/ { BARCODE_UPCE_CC, "1234567", "[20]01", 50, 9, 55, 134, 118 }, + /*120*/ { BARCODE_UPCE_CC, "1234567+12", "[20]01", 50, 9, 81, 184, 118 }, + /*121*/ { BARCODE_UPCE_CC, "1234567+12345", "[20]01", 50, 9, 108, 238, 118 }, /*122*/ { BARCODE_DBAR_STK_CC, "1234567890123", "[20]01", 24, 9, 56, 112, 48 }, /*123*/ { BARCODE_DBAR_OMNSTK_CC, "1234567890123", "[20]01", 80, 11, 56, 112, 160 }, /*124*/ { BARCODE_DBAR_EXPSTK_CC, "[01]12345678901231", "[20]01", 78, 9, 102, 204, 156 }, @@ -675,12 +686,12 @@ static void test_buffer_vector(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char *text; char errmsg[128]; - testStart("test_buffer_vector"); + testStartSymbol("test_buffer_vector", &symbol); for (i = 0; i < data_size; i++) { @@ -844,12 +855,12 @@ static void test_has_hrt(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char *text; char errmsg[128]; - testStart("test_has_hrt"); + testStartSymbol("test_has_hrt", &symbol); for (i = 0; i < data_size; i++) { @@ -889,6 +900,7 @@ static void test_upcean_hrt(const testCtx *const p_ctx) { struct item { int symbology; int show_hrt; + int output_options; char *data; int ret; @@ -898,58 +910,84 @@ static void test_upcean_hrt(const testCtx *const p_ctx) { float expected_vector_width; float expected_vector_height; float expected_string_x; - float expected_addon_string_x; + float expected_string_y; + float expected_string2_x; + float expected_string2_y; + int expected_string_cnt; }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_EANX, -1, "123456789012", 0, 50, 1, 95, 226, 116.9, 12.2, -1 }, /* EAN-13 */ - /* 1*/ { BARCODE_EANX, 0, "123456789012", 0, 50, 1, 95, 226, 110, -1, -1 }, /* EAN-13 */ - /* 2*/ { BARCODE_EANX_CHK, -1, "1234567890128", 0, 50, 1, 95, 226, 116.9, 12.2, -1 }, /* EAN-13 */ - /* 3*/ { BARCODE_EANX_CHK, 0, "1234567890128", 0, 50, 1, 95, 226, 110, -1, -1 }, /* EAN-13 */ - /* 4*/ { BARCODE_ISBNX, -1, "9784567890120", 0, 50, 1, 95, 226, 116.9, 12.2, -1 }, - /* 5*/ { BARCODE_ISBNX, 0, "9784567890120", 0, 50, 1, 95, 226, 110, -1, -1 }, - /* 6*/ { BARCODE_EANX, -1, "1234567", 0, 50, 1, 67, 162, 116.9, 49, -1 }, /* EAN-8 */ - /* 7*/ { BARCODE_EANX, 0, "1234567", 0, 50, 1, 67, 162, 110, -1, -1 }, /* EAN-8 */ - /* 8*/ { BARCODE_EANX, -1, "1234", 0, 50, 1, 47, 118, 116.9, 61, -1 }, /* EAN-5 */ - /* 9*/ { BARCODE_EANX, 0, "1234", 0, 50, 1, 47, 118, 100, -1, -1 }, /* EAN-5 */ - /* 10*/ { BARCODE_EANX, -1, "12", 0, 50, 1, 20, 64, 116.9, 34, -1 }, /* EAN-2 */ - /* 11*/ { BARCODE_EANX, 0, "12", 0, 50, 1, 20, 64, 100, -1, -1 }, /* EAN-2 */ - /* 12*/ { BARCODE_UPCA, -1, "12345678901", 0, 50, 1, 95, 226, 116.9, 8.7, -1 }, - /* 13*/ { BARCODE_UPCA, 0, "12345678901", 0, 50, 1, 95, 226, 110, -1, -1 }, - /* 14*/ { BARCODE_UPCA_CHK, -1, "123456789012", 0, 50, 1, 95, 226, 116.9, 8.7, -1 }, - /* 15*/ { BARCODE_UPCA_CHK, 0, "123456789012", 0, 50, 1, 95, 226, 110, -1, -1 }, - /* 16*/ { BARCODE_UPCE, -1, "1234567", 0, 50, 1, 51, 134, 116.9, 8.7, -1 }, - /* 17*/ { BARCODE_UPCE, 0, "1234567", 0, 50, 1, 51, 134, 110, -1, -1 }, - /* 18*/ { BARCODE_UPCE_CHK, -1, "12345670", 0, 50, 1, 51, 134, 116.9, 8.7, -1 }, - /* 19*/ { BARCODE_UPCE_CHK, 0, "12345670", 0, 50, 1, 51, 134, 110, -1, -1 }, - /* 20*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276.0, 116.9, 12.2, 71 }, /* EAN-13 + EAN-2 */ - /* 21*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276.0, 110, -1, -1 }, /* EAN-13 + EAN-2 */ - /* 22*/ { BARCODE_ISBNX, -1, "9784567890120+12", 0, 50, 1, 122, 276.0, 116.9, 12.2, 71 }, /* ISBN + EAN-2 */ - /* 23*/ { BARCODE_ISBNX, 0, "9784567890120+12", 0, 50, 1, 122, 276.0, 110, -1, -1 }, /* ISBN + EAN-2 */ - /* 24*/ { BARCODE_EANX, -1, "123456789012+12345", 0, 50, 1, 149, 330.0, 116.9, 12.2, 71 }, /* EAN-13 + EAN-5 */ - /* 25*/ { BARCODE_EANX, 0, "123456789012+12345", 0, 50, 1, 149, 330.0, 110, -1, -1 }, /* EAN-13 + EAN-5 */ - /* 26*/ { BARCODE_ISBNX, -1, "9784567890120+12345", 0, 50, 1, 149, 330.0, 116.9, 12.2, 71 }, /* ISBN + EAN-5 */ - /* 27*/ { BARCODE_ISBNX, 0, "9784567890120+12345", 0, 50, 1, 149, 330.0, 110, -1, -1 }, /* ISBN + EAN-5 */ - /* 28*/ { BARCODE_EANX, -1, "1234567+12", 0, 50, 1, 94, 216.0, 116.9, 49, 113 }, /* EAN-8 + EAN-2 */ - /* 29*/ { BARCODE_EANX, 0, "1234567+12", 0, 50, 1, 94, 216.0, 110, -1, -1 }, /* EAN-8 + EAN-2 */ - /* 30*/ { BARCODE_EANX, -1, "1234567+12345", 0, 50, 1, 121, 270.0, 116.9, 49, 113 }, /* EAN-8 + EAN-5 */ - /* 31*/ { BARCODE_EANX, 0, "1234567+12345", 0, 50, 1, 121, 270.0, 110, -1, -1 }, /* EAN-8 + EAN-5 */ - /* 32*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 8.7, 74 }, - /* 33*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 110, -1, -1 }, - /* 34*/ { BARCODE_UPCA, -1, "12345678901+12345", 0, 50, 1, 151, 330, 116.9, 8.7, 74 }, - /* 35*/ { BARCODE_UPCA, 0, "12345678901+12345", 0, 50, 1, 151, 330, 110, -1, -1 }, - /* 36*/ { BARCODE_UPCE, -1, "1234567+12", 0, 50, 1, 78, 184.0, 116.9, 8.7, 67 }, - /* 37*/ { BARCODE_UPCE, 0, "1234567+12", 0, 50, 1, 78, 184.0, 110, -1, -1 }, - /* 38*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238.0, 116.9, 8.7, 67 }, - /* 39*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238.0, 110, -1, -1 }, + /* 0*/ { BARCODE_EANX, -1, -1, "123456789012", 0, 50, 1, 95, 226, 118, 12.2, 117.2, -1, -1, 3 }, /* EAN-13 */ + /* 1*/ { BARCODE_EANX, 0, -1, "123456789012", 0, 50, 1, 95, 226, 110, -1, -1, -1, -1, 0 }, /* EAN-13 */ + /* 2*/ { BARCODE_EANX, -1, EANUPC_GUARD_WHITESPACE, "123456789012", 0, 50, 1, 95, 226, 118, 12.2, 117.2, 214, 117.2, 4 }, /* EAN-13 */ + /* 3*/ { BARCODE_EANX_CHK, -1, -1, "1234567890128", 0, 50, 1, 95, 226, 118, 12.2, 117.2, -1, -1, 3 }, /* EAN-13 */ + /* 4*/ { BARCODE_EANX_CHK, 0, -1, "1234567890128", 0, 50, 1, 95, 226, 110, -1, -1, -1, -1, 0 }, /* EAN-13 */ + /* 5*/ { BARCODE_EANX_CHK, -1, EANUPC_GUARD_WHITESPACE, "1234567890128", 0, 50, 1, 95, 226, 118, 12.2, 117.2, 214, 117.2, 4 }, /* EAN-13 */ + /* 6*/ { BARCODE_ISBNX, -1, -1, "9784567890120", 0, 50, 1, 95, 226, 118, 12.2, 117.2, -1, -1, 3 }, + /* 7*/ { BARCODE_ISBNX, 0, -1, "9784567890120", 0, 50, 1, 95, 226, 110, -1, -1, -1, -1, 0 }, + /* 8*/ { BARCODE_ISBNX, -1, EANUPC_GUARD_WHITESPACE, "9784567890120", 0, 50, 1, 95, 226, 118, 12.2, 117.2, 214, 117.2, 4 }, + /* 9*/ { BARCODE_EANX, -1, -1, "1234567", 0, 50, 1, 67, 162, 118, 49, 117.2, -1, -1, 2 }, /* EAN-8 */ + /* 10*/ { BARCODE_EANX, 0, -1, "1234567", 0, 50, 1, 67, 162, 110, -1, -1, -1, -1, 0 }, /* EAN-8 */ + /* 11*/ { BARCODE_EANX, -1, EANUPC_GUARD_WHITESPACE, "1234567", 0, 50, 1, 67, 162, 118, 49, 117.2, 12.5, 117.2, 4 }, /* EAN-8 */ + /* 12*/ { BARCODE_EANX, -1, -1, "1234", 0, 50, 1, 47, 104, 118, 47, 15.6, -1, -1, 1 }, /* EAN-5 */ + /* 13*/ { BARCODE_EANX, 0, -1, "1234", 0, 50, 1, 47, 104, 100, -1, -1, -1, -1, 0 }, /* EAN-5 */ + /* 14*/ { BARCODE_EANX, -1, EANUPC_GUARD_WHITESPACE, "1234", 0, 50, 1, 47, 104, 118, 47, 15.6, 91.5, 15.6, 2 }, /* EAN-5 */ + /* 15*/ { BARCODE_EANX, -1, -1, "12", 0, 50, 1, 20, 50, 118, 20, 15.6, -1, -1, 1 }, /* EAN-2 */ + /* 16*/ { BARCODE_EANX, 0, -1, "12", 0, 50, 1, 20, 50, 100, -1, -1, -1, -1, 0 }, /* EAN-2 */ + /* 17*/ { BARCODE_EANX, -1, EANUPC_GUARD_WHITESPACE, "12", 0, 50, 1, 20, 50, 118, 20, 15.6, -1, -1, 2 }, /* EAN-2 */ + /* 18*/ { BARCODE_UPCA, -1, -1, "12345678901", 0, 50, 1, 95, 226, 118, 8.7, 117.2, -1, -1, 4 }, + /* 19*/ { BARCODE_UPCA, 0, -1, "12345678901", 0, 50, 1, 95, 226, 110, -1, -1, -1, -1, 0 }, + /* 20*/ { BARCODE_UPCA, -1, EANUPC_GUARD_WHITESPACE, "12345678901", 0, 50, 1, 95, 226, 118, 8.7, 117.2, -1, -1, 4 }, + /* 21*/ { BARCODE_UPCA_CHK, -1, -1, "123456789012", 0, 50, 1, 95, 226, 118, 8.7, 117.2, -1, -1, 4 }, + /* 22*/ { BARCODE_UPCA_CHK, 0, -1, "123456789012", 0, 50, 1, 95, 226, 110, -1, -1, -1, -1, 0 }, + /* 23*/ { BARCODE_UPCA_CHK, -1, EANUPC_GUARD_WHITESPACE, "123456789012", 0, 50, 1, 95, 226, 118, 8.7, 117.2, -1, -1, 4 }, + /* 24*/ { BARCODE_UPCE, -1, -1, "1234567", 0, 50, 1, 51, 134, 118, 8.7, 117.2, -1, -1, 3 }, + /* 25*/ { BARCODE_UPCE, 0, -1, "1234567", 0, 50, 1, 51, 134, 110, -1, -1, -1, -1, 0 }, + /* 26*/ { BARCODE_UPCE, -1, EANUPC_GUARD_WHITESPACE, "1234567", 0, 50, 1, 51, 134, 118, 8.7, 117.2, -1, -1, 3 }, + /* 27*/ { BARCODE_UPCE_CHK, -1, -1, "12345670", 0, 50, 1, 51, 134, 118, 8.7, 117.2, -1, -1, 3 }, + /* 28*/ { BARCODE_UPCE_CHK, 0, -1, "12345670", 0, 50, 1, 51, 134, 110, -1, -1, -1, -1, 0 }, + /* 29*/ { BARCODE_UPCE_CHK, -1, EANUPC_GUARD_WHITESPACE, "12345670", 0, 50, 1, 51, 134, 118, 8.7, 117.2, -1, -1, 3 }, + /* 30*/ { BARCODE_EANX, -1, -1, "123456789012+12", 0, 50, 1, 122, 276.0, 118, 12.2, 117.2, 246, 15.6, 4 }, /* EAN-13 + EAN-2 */ + /* 31*/ { BARCODE_EANX, 0, -1, "123456789012+12", 0, 50, 1, 122, 276.0, 110, -1, -1, -1, -1, 0 }, /* EAN-13 + EAN-2 */ + /* 32*/ { BARCODE_EANX, -1, EANUPC_GUARD_WHITESPACE, "123456789012+12", 0, 50, 1, 122, 276.0, 118, 12.2, 117.2, 246, 15.6, 5 }, /* EAN-13 + EAN-2 */ + /* 33*/ { BARCODE_ISBNX, -1, -1, "9784567890120+12", 0, 50, 1, 122, 276.0, 118, 12.2, 117.2, 246, 15.6, 4 }, /* ISBN + EAN-2 */ + /* 34*/ { BARCODE_ISBNX, 0, -1, "9784567890120+12", 0, 50, 1, 122, 276.0, 110, -1, -1, -1, -1, 0 }, /* ISBN + EAN-2 */ + /* 35*/ { BARCODE_ISBNX, -1, EANUPC_GUARD_WHITESPACE, "9784567890120+12", 0, 50, 1, 122, 276.0, 118, 246, 15.6, 264, 15.6, 5 }, /* ISBN + EAN-2 */ + /* 36*/ { BARCODE_EANX, -1, -1, "123456789012+12345", 0, 50, 1, 149, 330.0, 118, 12.2, 117.2, 274, 15.6, 4 }, /* EAN-13 + EAN-5 */ + /* 37*/ { BARCODE_EANX, 0, -1, "123456789012+12345", 0, 50, 1, 149, 330.0, 110, -1, -1, -1, -1, 0 }, /* EAN-13 + EAN-5 */ + /* 38*/ { BARCODE_EANX, -1, EANUPC_GUARD_WHITESPACE, "123456789012+12345", 0, 50, 1, 149, 330.0, 118, 12.2, 117.2, 274, 15.6, 5 }, /* EAN-13 + EAN-5 */ + /* 39*/ { BARCODE_ISBNX, -1, -1, "9784567890120+12345", 0, 50, 1, 149, 330.0, 118, 12.2, 117.2, 274, 15.6, 4 }, /* ISBN + EAN-5 */ + /* 40*/ { BARCODE_ISBNX, 0, -1, "9784567890120+12345", 0, 50, 1, 149, 330.0, 110, -1, -1, -1, -1, 0 }, /* ISBN + EAN-5 */ + /* 41*/ { BARCODE_ISBNX, -1, EANUPC_GUARD_WHITESPACE, "9784567890120+12345", 0, 50, 1, 149, 330.0, 118, 274, 15.6, 318, 15.6, 5 }, /* ISBN + EAN-5 */ + /* 42*/ { BARCODE_EANX, -1, -1, "1234567+12", 0, 50, 1, 94, 212, 118, 49, 117.2, 182, 15.6, 3 }, /* EAN-8 + EAN-2 */ + /* 43*/ { BARCODE_EANX, 0, -1, "1234567+12", 0, 50, 1, 94, 212, 110, -1, -1, -1, -1, 0 }, /* EAN-8 + EAN-2 */ + /* 44*/ { BARCODE_EANX, -1, EANUPC_GUARD_WHITESPACE, "1234567+12", 0, 50, 1, 94, 212, 118, 182, 15.6, 199.6, 15.6, 5 }, /* EAN-8 + EAN-2 */ + /* 45*/ { BARCODE_EANX, -1, -1, "1234567+12345", 0, 50, 1, 121, 266, 118, 49, 117.2, 210, 15.6, 3 }, /* EAN-8 + EAN-5 */ + /* 46*/ { BARCODE_EANX, 0, -1, "1234567+12345", 0, 50, 1, 121, 266, 110, -1, -1, -1, -1, 0 }, /* EAN-8 + EAN-5 */ + /* 47*/ { BARCODE_EANX, -1, EANUPC_GUARD_WHITESPACE, "1234567+12345", 0, 50, 1, 121, 266, 118, 210, 15.6, 210, 15.6, 5 }, /* EAN-8 + EAN-5 */ + /* 48*/ { BARCODE_UPCA, -1, -1, "12345678901+12", 0, 50, 1, 124, 276, 118, 8.7, 117.2, 246, 15.6, 5 }, + /* 49*/ { BARCODE_UPCA, 0, -1, "12345678901+12", 0, 50, 1, 124, 276, 110, -1, -1, -1, -1, 0 }, + /* 50*/ { BARCODE_UPCA, -1, EANUPC_GUARD_WHITESPACE, "12345678901+12", 0, 50, 1, 124, 276, 118, 8.7, 117.2, 263.6, 15.6, 6 }, + /* 51*/ { BARCODE_UPCA, -1, -1, "12345678901+12345", 0, 50, 1, 151, 330, 118, 8.7, 117.2, 274, 15.6, 5 }, + /* 52*/ { BARCODE_UPCA, 0, -1, "12345678901+12345", 0, 50, 1, 151, 330, 110, -1, -1, -1, -1, 0 }, + /* 53*/ { BARCODE_UPCA, -1, EANUPC_GUARD_WHITESPACE, "12345678901+12345", 0, 50, 1, 151, 330, 118, 274, 15.6, 317.6, 15.6, 6 }, + /* 54*/ { BARCODE_UPCE, -1, -1, "1234567+12", 0, 50, 1, 78, 184.0, 118, 8.7, 117.2, 154, 15.6, 4 }, + /* 55*/ { BARCODE_UPCE, 0, -1, "1234567+12", 0, 50, 1, 78, 184.0, 110, -1, -1, -1, -1, 0 }, + /* 56*/ { BARCODE_UPCE, -1, EANUPC_GUARD_WHITESPACE, "1234567+12", 0, 50, 1, 78, 184.0, 118, 8.7, 117.2, 171.6, 15.6, 5 }, + /* 57*/ { BARCODE_UPCE, -1, -1, "1234567+12345", 0, 50, 1, 105, 238.0, 118, 8.7, 117.2, 182, 15.6, 4 }, + /* 58*/ { BARCODE_UPCE, 0, -1, "1234567+12345", 0, 50, 1, 105, 238.0, 110, -1, -1, -1, -1, 0 }, + /* 59*/ { BARCODE_UPCE, -1, EANUPC_GUARD_WHITESPACE, "1234567+12345", 0, 50, 1, 105, 238.0, 118, 182, 15.6, 225.6, 15.6, 5 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_upcean_hrt"); + struct zint_vector_string *string; + + testStartSymbol("test_upcean_hrt", &symbol); for (i = 0; i < data_size; i++) { + int string_cnt; if (testContinue(p_ctx, i)) continue; @@ -960,6 +998,9 @@ static void test_upcean_hrt(const testCtx *const p_ctx) { if (data[i].show_hrt != -1) { symbol->show_hrt = data[i].show_hrt; } + if (data[i].output_options != -1) { + symbol->output_options = data[i].output_options; + } symbol->debug |= debug; length = (int) strlen(data[i].data); @@ -981,23 +1022,30 @@ static void test_upcean_hrt(const testCtx *const p_ctx) { i, testUtilBarcodeName(data[i].symbology), symbol->vector->height, data[i].expected_vector_height); if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { - sprintf(symbol->outfile, "test_upcean_hrt%d.svg", i); - ZBarcode_Print(symbol, 0); + testUtilVectorPrint(symbol); } if (data[i].show_hrt) { - assert_nonnull(symbol->vector->strings, "i:%d ZBarcode_Buffer_Vector(%d) vector->strings NULL\n", i, data[i].symbology); - assert_equal(symbol->vector->strings->x, data[i].expected_string_x, - "i:%d (%s) symbol->vector->strings->x %.8g != %.8g\n", i, testUtilBarcodeName(data[i].symbology), symbol->vector->strings->x, data[i].expected_string_x); + assert_nonnull(symbol->vector->strings, "i:%d (%s) vector->strings NULL\n", + i, testUtilBarcodeName(data[i].symbology)); + string = find_string(symbol, data[i].expected_string_x, data[i].expected_string_y); + assert_nonnull(string, "i:%d (%s) find_string(%g, %g) NULL\n", + i, testUtilBarcodeName(data[i].symbology), data[i].expected_string_x, data[i].expected_string_y); - if (data[i].expected_addon_string_x != -1) { - assert_nonnull(symbol->vector->strings->next, "i:%d ZBarcode_Buffer_Vector(%d) vector->strings->next NULL\n", i, data[i].symbology); - assert_equal(symbol->vector->strings->next->x, data[i].expected_addon_string_x, - "i:%d (%s) symbol->vector->strings->next->x %.8g != %.8g\n", i, testUtilBarcodeName(data[i].symbology), symbol->vector->strings->next->x, data[i].expected_addon_string_x); + if (data[i].expected_string2_x != -1) { + assert_nonnull(symbol->vector->strings->next, "i:%d (%s) vector->strings->next NULL\n", + i, testUtilBarcodeName(data[i].symbology)); + string = find_string(symbol, data[i].expected_string2_x, data[i].expected_string2_y); + assert_nonnull(string, "i:%d (%s) find_string(%g, %g) NULL\n", + i, testUtilBarcodeName(data[i].symbology), data[i].expected_string2_x, data[i].expected_string2_y); } } else { - assert_null(symbol->vector->strings, "i:%d ZBarcode_Buffer_Vector(%d) vector->strings NULL\n", i, data[i].symbology); + assert_null(symbol->vector->strings, "i:%d (%s) vector->strings NULL\n", + i, testUtilBarcodeName(data[i].symbology)); } + string_cnt = cnt_strings(symbol); + assert_equal(string_cnt, data[i].expected_string_cnt, "i:%d (%s) cnt_strings(symbol) %d != %d\n", + i, testUtilBarcodeName(data[i].symbology), string_cnt, data[i].expected_string_cnt); ZBarcode_Delete(symbol); } @@ -1037,11 +1085,11 @@ static void test_row_separator(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; struct zint_vector_rect *rect; - testStart("test_row_separator"); + testStartSymbol("test_row_separator", &symbol); for (i = 0; i < data_size; i++) { @@ -1103,11 +1151,11 @@ static void test_stacking(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; struct zint_vector_rect *rect; - testStart("test_stacking"); + testStartSymbol("test_stacking", &symbol); for (i = 0; i < data_size; i++) { int length2; @@ -1135,8 +1183,7 @@ static void test_stacking(const testCtx *const p_ctx) { if (data[i].expected_separator_y != -1) { if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { - sprintf(symbol->outfile, "test_stacking_%d.svg", i); - ZBarcode_Print(symbol, 0); + testUtilVectorPrint(symbol); } ret = ZBarcode_Buffer_Vector(symbol, 0); @@ -1234,11 +1281,11 @@ static void test_output_options(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; struct zint_vector_rect *rect; - testStart("test_output_options"); + testStartSymbol("test_output_options", &symbol); for (i = 0; i < data_size; i++) { @@ -1268,8 +1315,7 @@ static void test_output_options(const testCtx *const p_ctx) { assert_nonnull(symbol->vector, "i:%d ZBarcode_Buffer_Vector(%d) vector NULL\n", i, data[i].symbology); if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { - sprintf(symbol->outfile, "test_output_options_%d.svg", i); - ZBarcode_Print(symbol, 0); + testUtilVectorPrint(symbol); } assert_equal(symbol->height, data[i].expected_height, "i:%d (%d) symbol->height %.8g != %.8g\n", i, data[i].symbology, symbol->height, data[i].expected_height); @@ -1316,9 +1362,9 @@ static void test_noncomposite_string_x(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; - testStart("test_noncomposite_string_x"); + testStartSymbol("test_noncomposite_string_x", &symbol); for (i = 0; i < data_size; i++) { @@ -1367,19 +1413,19 @@ static void test_upcean_whitespace_width(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_UPCA, "12345678904+12345", 0, 151, 330.0, 5, 15.0 }, - /* 1*/ { BARCODE_UPCA, "12345678904+12345", 11, 151, 330.0 + 4 * 11, 5, 15.0 }, - /* 2*/ { BARCODE_UPCE, "1234567+12", 0, 78, 184.0, 4, 15.0 }, - /* 3*/ { BARCODE_UPCE, "1234567+12", 8, 78, 184.0 + 4 * 8, 4, 15.0 }, /* Note: change from previous behaviour where if whitespace < 10 then set to 10 */ + /* 0*/ { BARCODE_UPCA, "12345678904+12345", 0, 151, 330.0, 5, 15.6 }, + /* 1*/ { BARCODE_UPCA, "12345678904+12345", 11, 151, 330.0 + 4 * 11, 5, 15.6 }, + /* 2*/ { BARCODE_UPCE, "1234567+12", 0, 78, 184.0, 4, 15.6 }, + /* 3*/ { BARCODE_UPCE, "1234567+12", 8, 78, 184.0 + 4 * 8, 4, 15.6 }, /* Note: change from previous behaviour where if whitespace < 10 then set to 10 */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; struct zint_vector_string *string; int string_cnt; - testStart("test_upcean_whitespace_width"); + testStartSymbol("test_upcean_whitespace_width", &symbol); for (i = 0; i < data_size; i++) { @@ -1403,8 +1449,7 @@ static void test_upcean_whitespace_width(const testCtx *const p_ctx) { assert_nonnull(symbol->vector, "i:%d ZBarcode_Buffer_Vector(%d) vector NULL\n", i, data[i].symbology); if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { - sprintf(symbol->outfile, "test_upcean_whitespace_width_%d.svg", i); - ZBarcode_Print(symbol, 0); + testUtilVectorPrint(symbol); } assert_equal(symbol->width, data[i].expected_width, "i:%d (%s) symbol->width %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->width, data[i].expected_width); @@ -1456,18 +1501,18 @@ static void test_scale(const testCtx *const p_ctx) { /* 1*/ { BARCODE_PDF417, -1, -1, -1, 0, 0.1, "1", "", 0, 15, 5, 103, 206 * 0.1, 3, 1, 5.2000003, 0, 8 * 0.1, 6 * 0.1 }, /* 2*/ { BARCODE_PDF417, -1, -1, -1, 0, 0.3, "1", "", 0, 15, 5, 103, 61.8000031, 30 * 0.3, 1, 52 * 0.3, 0, 2.4000001, 1.8000001 }, /* 3*/ { BARCODE_PDF417, -1, -1, -1, 0, 0.6, "1", "", 0, 15, 5, 103, 123.600006, 30 * 0.6, 1, 52 * 0.6, 0, 4.8000002, 3.6000001 }, - /* 4*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142, 116.9, 1, 34, 36, 2, 64 }, /* With no scaling */ - /* 5*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0.1, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142 * 0.1, 11.6900005, 1, 34 * 0.1, 3.6000001, 2 * 0.1, 64 * 0.1 }, - /* 6*/ { BARCODE_UPCE_CC, -1, -1, -1, 0.1, 0.1, "1234567", "[17]010615[10]A123456\"", 0, 18.5, 10, 55, 142 * 0.1, 5.39000034, 1, 34 * 0.1, 3.6000001, 2 * 0.1, 0.1 }, /* Height specified */ + /* 4*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 134, 118, 1, 28, 36, 2, 64 }, /* With no scaling */ + /* 5*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0.1, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 13.4000006, 118 * 0.1, 1, 28 * 0.1, 3.6000001, 2 * 0.1, 64 * 0.1 }, + /* 6*/ { BARCODE_UPCE_CC, -1, -1, -1, 0.1, 0.1, "1234567", "[17]010615[10]A123456\"", 0, 18.5, 10, 55, 13.4000006, 5.5, 1, 28 * 0.1, 3.6000001, 2 * 0.1, 0.1 }, /* Height specified */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char *text; struct zint_vector_rect *rect; - testStart("test_scale"); + testStartSymbol("test_scale", &symbol); for (i = 0; i < data_size; i++) { @@ -1502,8 +1547,7 @@ static void test_scale(const testCtx *const p_ctx) { assert_nonnull(symbol->vector, "i:%d ZBarcode_Buffer_Vector(%d) vector NULL\n", i, data[i].symbology); if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { - sprintf(symbol->outfile, "test_scale_%d.svg", i); - ZBarcode_Print(symbol, 0); + testUtilVectorPrint(symbol); } assert_equal(symbol->height, data[i].expected_height, "i:%d (%d) symbol->height %.8g != %.8g\n", i, data[i].symbology, symbol->height, data[i].expected_height); @@ -1553,48 +1597,48 @@ static void test_guard_descent(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_UPCE, -1, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 110 }, - /* 1*/ { BARCODE_UPCE, 0, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 100 }, - /* 2*/ { BARCODE_UPCE, 3, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 106 }, - /* 3*/ { BARCODE_UPCE, 8, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 116 }, - /* 4*/ { BARCODE_UPCE, 8.2, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 116.4 }, - /* 5*/ { BARCODE_UPCE, 8.25, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 116.5 }, - /* 6*/ { BARCODE_UPCE, 8.3, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 116.6 }, + /* 0*/ { BARCODE_UPCE, -1, "1234567", 0, 50, 1, 51, 134, 118, 18, 0, 2, 110 }, + /* 1*/ { BARCODE_UPCE, 0, "1234567", 0, 50, 1, 51, 134, 118, 18, 0, 2, 100 }, + /* 2*/ { BARCODE_UPCE, 3, "1234567", 0, 50, 1, 51, 134, 118, 18, 0, 2, 106 }, + /* 3*/ { BARCODE_UPCE, 8, "1234567", 0, 50, 1, 51, 134, 118, 18, 0, 2, 116 }, + /* 4*/ { BARCODE_UPCE, 8.2, "1234567", 0, 50, 1, 51, 134, 118, 18, 0, 2, 116.4 }, + /* 5*/ { BARCODE_UPCE, 8.25, "1234567", 0, 50, 1, 51, 134, 118, 18, 0, 2, 116.5 }, + /* 6*/ { BARCODE_UPCE, 8.3, "1234567", 0, 50, 1, 51, 134, 118, 18, 0, 2, 116.6 }, /* 7*/ { BARCODE_UPCE, 19.6, "1234567", 0, 50, 1, 51, 134, 139.2, 18, 0, 2, 139.2 }, - /* 8*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 118, 0, 2, 110 }, - /* 9*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 134, 16.9, 2, 83.1 }, - /* 10*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 118, 0, 2, 100 }, - /* 11*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 134, 16.9, 2, 83.1 }, - /* 12*/ { BARCODE_UPCE, 4, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 118, 0, 2, 108 }, - /* 13*/ { BARCODE_UPCE, 4, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 134, 16.9, 2, 83.1 }, - /* 14*/ { BARCODE_UPCA, -1, "12345678901", 0, 50, 1, 95, 226, 116.9, 188, 0, 4, 110 }, - /* 15*/ { BARCODE_UPCA, 0, "12345678901", 0, 50, 1, 95, 226, 116.9, 188, 0, 4, 100 }, - /* 16*/ { BARCODE_UPCA, 6, "12345678901", 0, 50, 1, 95, 226, 116.9, 188, 0, 4, 112 }, - /* 17*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 188, 0, 4, 110 }, - /* 18*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 262, 16.9, 4, 83.1 }, - /* 19*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 188, 0, 4, 100 }, - /* 20*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 262, 16.9, 4, 83.1 }, + /* 8*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238, 118, 118, 0, 2, 110 }, + /* 9*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238, 118, 134, 18, 2, 82 }, + /* 10*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238, 118, 118, 0, 2, 100 }, + /* 11*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238, 118, 134, 18, 2, 82 }, + /* 12*/ { BARCODE_UPCE, 4, "1234567+12345", 0, 50, 1, 105, 238, 118, 118, 0, 2, 108 }, + /* 13*/ { BARCODE_UPCE, 4, "1234567+12345", 0, 50, 1, 105, 238, 118, 134, 18, 2, 82 }, + /* 14*/ { BARCODE_UPCA, -1, "12345678901", 0, 50, 1, 95, 226, 118, 188, 0, 4, 110 }, + /* 15*/ { BARCODE_UPCA, 0, "12345678901", 0, 50, 1, 95, 226, 118, 188, 0, 4, 100 }, + /* 16*/ { BARCODE_UPCA, 6, "12345678901", 0, 50, 1, 95, 226, 118, 188, 0, 4, 112 }, + /* 17*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 118, 188, 0, 4, 110 }, + /* 18*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 118, 262, 18, 4, 82 }, + /* 19*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 118, 188, 0, 4, 100 }, + /* 20*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 118, 262, 18, 4, 82 }, /* 21*/ { BARCODE_UPCA, 9, "12345678901+12", 0, 50, 1, 124, 276, 118, 188, 0, 4, 118 }, - /* 22*/ { BARCODE_UPCA, 9, "12345678901+12", 0, 50, 1, 124, 276, 118, 262, 16.9, 4, 83.1 }, - /* 23*/ { BARCODE_EANX, -1, "123456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, - /* 24*/ { BARCODE_EANX, 0, "123456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 100 }, - /* 25*/ { BARCODE_EANX, 7, "123456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 114 }, - /* 26*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 22, 0, 2, 110 }, - /* 27*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 93.1 }, - /* 28*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 22, 0, 2, 100 }, - /* 29*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 83.1 }, - /* 30*/ { BARCODE_EANX, 8.21, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 22, 0, 2, 116.42 }, - /* 31*/ { BARCODE_EANX, 8.21, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 99.52 }, - /* 32*/ { BARCODE_ISBNX, -1, "123456789", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, - /* 33*/ { BARCODE_ISBNX, 0, "123456789", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 100 }, + /* 22*/ { BARCODE_UPCA, 9, "12345678901+12", 0, 50, 1, 124, 276, 118, 262, 18, 4, 82 }, + /* 23*/ { BARCODE_EANX, -1, "123456789012", 0, 50, 1, 95, 226, 118, 22, 0, 2, 110 }, + /* 24*/ { BARCODE_EANX, 0, "123456789012", 0, 50, 1, 95, 226, 118, 22, 0, 2, 100 }, + /* 25*/ { BARCODE_EANX, 7, "123456789012", 0, 50, 1, 95, 226, 118, 22, 0, 2, 114 }, + /* 26*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276, 118, 22, 0, 2, 110 }, + /* 27*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276, 118, 262, 18, 4, 92 }, + /* 28*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276, 118, 22, 0, 2, 100 }, + /* 29*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276, 118, 262, 18, 4, 82 }, + /* 30*/ { BARCODE_EANX, 8.21, "123456789012+12", 0, 50, 1, 122, 276, 118, 22, 0, 2, 116.42 }, + /* 31*/ { BARCODE_EANX, 8.21, "123456789012+12", 0, 50, 1, 122, 276, 118, 262, 18, 4, 98.42 }, + /* 32*/ { BARCODE_ISBNX, -1, "123456789", 0, 50, 1, 95, 226, 118, 22, 0, 2, 110 }, + /* 33*/ { BARCODE_ISBNX, 0, "123456789", 0, 50, 1, 95, 226, 118, 22, 0, 2, 100 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; struct zint_vector_rect *rect; - testStart("test_guard_descent"); + testStartSymbol("test_guard_descent", &symbol); for (i = 0; i < data_size; i++) { @@ -1618,8 +1662,7 @@ static void test_guard_descent(const testCtx *const p_ctx) { assert_nonnull(symbol->vector, "i:%d ZBarcode_Buffer_Vector(%d) vector NULL\n", i, data[i].symbology); if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { /* ZINT_DEBUG_TEST_PRINT 16 */ - sprintf(symbol->outfile, "test_guard_descent_%d.svg", i); - ZBarcode_Print(symbol, 0); + testUtilVectorPrint(symbol); } assert_equal(symbol->height, data[i].expected_height, "i:%d (%d) symbol->height %.8g != %.8g\n", i, data[i].symbology, symbol->height, data[i].expected_height); @@ -1648,11 +1691,13 @@ static void test_quiet_zones(const testCtx *const p_ctx) { struct item { int symbology; int output_options; + int option_1; int option_2; int show_hrt; char *data; - int ret; + char *composite; + int ret; float expected_height; int expected_rows; int expected_width; @@ -1665,289 +1710,307 @@ static void test_quiet_zones(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_CODE11, -1, -1, -1, "1234", 0, 50, 1, 62, 124, 118.9, 0, 0, 2, 100 }, - /* 1*/ { BARCODE_CODE11, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 62, 164, 118.9, 20, 0, 2, 100 }, - /* 2*/ { BARCODE_CODE11, BARCODE_QUIET_ZONES | BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 62, 124, 118.9, 0, 0, 2, 100 }, /* BARCODE_NO_QUIET_ZONES trumps BARCODE_QUIET_ZONES */ - /* 3*/ { BARCODE_C25STANDARD, -1, -1, -1, "1234", 0, 50, 1, 57, 114, 118.9, 0, 0, 8, 100 }, - /* 4*/ { BARCODE_C25STANDARD, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 57, 154, 118.9, 20, 0, 8, 100 }, - /* 5*/ { BARCODE_C25INTER, -1, -1, -1, "1234", 0, 50, 1, 45, 90, 118.9, 0, 0, 2, 100 }, - /* 6*/ { BARCODE_C25INTER, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 45, 130, 118.9, 20, 0, 2, 100 }, - /* 7*/ { BARCODE_C25IATA, -1, -1, -1, "1234", 0, 50, 1, 65, 130, 118.9, 0, 0, 2, 100 }, - /* 8*/ { BARCODE_C25IATA, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 65, 170, 118.9, 20, 0, 2, 100 }, - /* 9*/ { BARCODE_C25LOGIC, -1, -1, -1, "1234", 0, 50, 1, 49, 98, 118.9, 0, 0, 2, 100 }, - /* 10*/ { BARCODE_C25LOGIC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 49, 138, 118.9, 20, 0, 2, 100 }, - /* 11*/ { BARCODE_C25IND, -1, -1, -1, "1234", 0, 50, 1, 75, 150, 118.9, 0, 0, 6, 100 }, - /* 12*/ { BARCODE_C25IND, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 75, 190, 118.9, 20, 0, 6, 100 }, - /* 13*/ { BARCODE_CODE39, -1, -1, -1, "1234", 0, 50, 1, 77, 154, 118.9, 0, 0, 2, 100 }, - /* 14*/ { BARCODE_CODE39, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 77, 194, 118.9, 20, 0, 2, 100 }, - /* 15*/ { BARCODE_EXCODE39, -1, -1, -1, "1234", 0, 50, 1, 77, 154, 118.9, 0, 0, 2, 100 }, - /* 16*/ { BARCODE_EXCODE39, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 77, 194, 118.9, 20, 0, 2, 100 }, - /* 17*/ { BARCODE_EANX, -1, -1, -1, "023456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, - /* 18*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, - /* 19*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 1, 95, 212, 116.9, 22, 0, 2, 110 }, - /* 20*/ { BARCODE_EANX, -1, -1, 0, "023456789012", 0, 50, 1, 95, 226, 110, 22, 0, 2, 110 }, /* Hide text */ - /* 21*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 1, 95, 226, 110, 22, 0, 2, 110 }, /* Hide text */ - /* 22*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 1, 95, 190, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 23*/ { BARCODE_EANX, -1, -1, -1, "023456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 93.1 }, - /* 24*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "023456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 93.1 }, - /* 25*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012+12", 0, 50, 1, 122, 266, 116.9, 262, 16.9, 4, 93.1 }, - /* 26*/ { BARCODE_EANX, -1, -1, 0, "023456789012+12", 0, 50, 1, 122, 276, 110, 262, 16.9, 4, 93.1 }, /* Hide text */ - /* 27*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, 0, "023456789012+12", 0, 50, 1, 122, 276, 110, 262, 16.9, 4, 93.1 }, /* Hide text */ - /* 28*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012+12", 0, 50, 1, 122, 244, 110, 240, 16.9, 4, 93.1 }, /* Hide text */ - /* 29*/ { BARCODE_EANX_CHK, -1, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 330, 116.9, 318, 16.9, 2, 93.1 }, - /* 30*/ { BARCODE_EANX_CHK, BARCODE_QUIET_ZONES, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 330, 116.9, 318, 16.9, 2, 93.1 }, - /* 31*/ { BARCODE_EANX_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 320, 116.9, 318, 16.9, 2, 93.1 }, - /* 32*/ { BARCODE_EANX, -1, -1, -1, "0234567", 0, 50, 1, 67, 162, 116.9, 14, 0, 2, 110 }, /* EAN-8 */ - /* 33*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "0234567", 0, 50, 1, 67, 162, 116.9, 14, 0, 2, 110 }, /* EAN-8 */ - /* 34*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "0234567", 0, 50, 1, 67, 134, 116.9, 0, 0, 2, 110 }, /* EAN-8 */ - /* 35*/ { BARCODE_EANX, -1, -1, -1, "02345", 0, 50, 1, 47, 118, 116.9, 14, 0, 2, 100 }, /* EAN-5 */ - /* 36*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "02345", 0, 50, 1, 47, 118, 116.9, 14, 0, 2, 100 }, /* EAN-5 */ - /* 37*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "02345", 0, 50, 1, 47, 94, 116.9, 0, 0, 2, 100 }, /* EAN-5 */ - /* 38*/ { BARCODE_EANX, -1, -1, -1, "02", 0, 50, 1, 20, 64, 116.9, 14, 0, 2, 100 }, /* EAN-2 */ - /* 39*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "02", 0, 50, 1, 20, 64, 116.9, 14, 0, 2, 100 }, /* EAN-2 */ - /* 40*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "02", 0, 50, 1, 20, 40, 116.9, 0, 0, 2, 100 }, /* EAN-2 */ - /* 41*/ { BARCODE_GS1_128, -1, -1, -1, "[20]02", 0, 50, 1, 68, 136, 118.9, 0, 0, 4, 100 }, - /* 42*/ { BARCODE_GS1_128, BARCODE_QUIET_ZONES, -1, -1, "[20]02", 0, 50, 1, 68, 176, 118.9, 20, 0, 4, 100 }, - /* 43*/ { BARCODE_CODABAR, -1, -1, -1, "A0B", 0, 50, 1, 32, 64, 118.9, 0, 0, 2, 100 }, - /* 44*/ { BARCODE_CODABAR, BARCODE_QUIET_ZONES, -1, -1, "A0B", 0, 50, 1, 32, 104, 118.9, 20, 0, 2, 100 }, - /* 45*/ { BARCODE_CODE128, -1, -1, -1, "1234", 0, 50, 1, 57, 114, 118.9, 0, 0, 4, 100 }, - /* 46*/ { BARCODE_CODE128, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 57, 154, 118.9, 20, 0, 4, 100 }, - /* 47*/ { BARCODE_DPLEIT, -1, -1, -1, "1234", 0, 72, 1, 135, 270, 162.89999, 0, 0, 2, 144 }, - /* 48*/ { BARCODE_DPLEIT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 72, 1, 135, 310, 162.89999, 20, 0, 2, 144 }, - /* 49*/ { BARCODE_DPIDENT, -1, -1, -1, "1234", 0, 72, 1, 117, 234, 162.89999, 0, 0, 2, 144 }, - /* 50*/ { BARCODE_DPIDENT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 72, 1, 117, 274, 162.89999, 20, 0, 2, 144 }, - /* 51*/ { BARCODE_CODE16K, -1, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 6, 19 }, - /* 52*/ { BARCODE_CODE16K, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 6, 19 }, - /* 53*/ { BARCODE_CODE16K, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 140, 44, 0, 2, 6, 19 }, - /* 54*/ { BARCODE_CODE49, -1, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 2, 19 }, - /* 55*/ { BARCODE_CODE49, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 2, 19 }, - /* 56*/ { BARCODE_CODE49, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 140, 44, 0, 2, 2, 19 }, - /* 57*/ { BARCODE_CODE93, -1, -1, -1, "1234", 0, 50, 1, 73, 146, 118.9, 0, 0, 2, 100 }, - /* 58*/ { BARCODE_CODE93, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 73, 186, 118.9, 20, 0, 2, 100 }, - /* 59*/ { BARCODE_FLAT, -1, -1, -1, "1234", 0, 50, 1, 36, 72, 100, 0, 0, 2, 100 }, - /* 60*/ { BARCODE_FLAT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 36, 72, 100, 0, 0, 2, 100 }, - /* 61*/ { BARCODE_FLAT, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 36, 72, 100, 0, 0, 2, 100 }, - /* 62*/ { BARCODE_DBAR_OMN, -1, -1, -1, "1234", 0, 50, 1, 96, 192, 118.9, 2, 0, 2, 100 }, - /* 63*/ { BARCODE_DBAR_OMN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 96, 192, 118.9, 2, 0, 2, 100 }, - /* 64*/ { BARCODE_DBAR_OMN, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 96, 192, 118.9, 2, 0, 2, 100 }, - /* 65*/ { BARCODE_DBAR_LTD, -1, -1, -1, "1234", 0, 50, 1, 79, 158, 118.9, 2, 0, 2, 100 }, - /* 66*/ { BARCODE_DBAR_LTD, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 79, 158, 118.9, 2, 0, 2, 100 }, - /* 67*/ { BARCODE_DBAR_LTD, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 79, 158, 118.9, 2, 0, 2, 100 }, - /* 68*/ { BARCODE_DBAR_EXP, -1, -1, -1, "[20]02", 0, 34, 1, 102, 204, 86.900002, 2, 0, 2, 68 }, - /* 69*/ { BARCODE_DBAR_EXP, BARCODE_QUIET_ZONES, -1, -1, "[20]02", 0, 34, 1, 102, 204, 86.900002, 2, 0, 2, 68 }, - /* 70*/ { BARCODE_DBAR_EXP, BARCODE_NO_QUIET_ZONES, -1, -1, "[20]02", 0, 34, 1, 102, 204, 86.900002, 2, 0, 2, 68 }, - /* 71*/ { BARCODE_TELEPEN, -1, -1, -1, "1234", 0, 50, 1, 112, 224, 118.9, 0, 0, 2, 100 }, - /* 72*/ { BARCODE_TELEPEN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 112, 264, 118.9, 20, 0, 2, 100 }, - /* 73*/ { BARCODE_UPCA, -1, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.9, 18, 0, 2, 110 }, - /* 74*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.9, 18, 0, 2, 110 }, - /* 75*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.9, 18, 0, 2, 110 }, - /* 76*/ { BARCODE_UPCA, -1, -1, 0, "01457137763", 0, 50, 1, 95, 226, 110, 18, 0, 2, 110 }, /* Hide text */ - /* 77*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 1, 95, 226, 110, 18, 0, 2, 110 }, /* Hide text */ - /* 78*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 1, 95, 190, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 79*/ { BARCODE_UPCA, -1, -1, -1, "01457137763+12", 0, 50, 1, 124, 276, 116.9, 18, 0, 2, 110 }, - /* 80*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, "01457137763+12", 0, 50, 1, 124, 276, 116.9, 18, 0, 2, 110 }, - /* 81*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763+12", 0, 50, 1, 124, 266, 116.9, 18, 0, 2, 110 }, - /* 82*/ { BARCODE_UPCA, -1, -1, 0, "01457137763+12", 0, 50, 1, 124, 276, 110, 18, 0, 2, 110 }, /* Hide text */ - /* 83*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, 0, "01457137763+12", 0, 50, 1, 124, 276, 110, 18, 0, 2, 110 }, /* Hide text */ - /* 84*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763+12", 0, 50, 1, 124, 248, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 85*/ { BARCODE_UPCA_CHK, -1, -1, -1, "014571377638+12345", 0, 50, 1, 151, 330, 116.9, 18, 0, 2, 110 }, - /* 86*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, -1, "014571377638+12345", 0, 50, 1, 151, 330, 116.9, 18, 0, 2, 110 }, - /* 87*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "014571377638+12345", 0, 50, 1, 151, 320, 116.9, 18, 0, 2, 110 }, - /* 88*/ { BARCODE_UPCA_CHK, -1, -1, 0, "014571377638+12345", 0, 50, 1, 151, 330, 110, 18, 0, 2, 110 }, /* Hide text */ - /* 89*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, 0, "014571377638+12345", 0, 50, 1, 151, 330, 110, 18, 0, 2, 110 }, /* Hide text */ - /* 90*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, 0, "014571377638+12345", 0, 50, 1, 151, 302, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 91*/ { BARCODE_UPCE, -1, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 110 }, - /* 92*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 110 }, - /* 93*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 110 }, - /* 94*/ { BARCODE_UPCE, -1, -1, 0, "8145713", 0, 50, 1, 51, 134, 110, 18, 0, 2, 110 }, /* Hide text */ - /* 95*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, 0, "8145713", 0, 50, 1, 51, 134, 110, 18, 0, 2, 110 }, /* Hide text */ - /* 96*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713", 0, 50, 1, 51, 102, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 97*/ { BARCODE_UPCE_CHK, -1, -1, -1, "81457132+12", 0, 50, 1, 78, 184, 116.9, 170, 16.9, 4, 83.1 }, - /* 98*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, -1, "81457132+12", 0, 50, 1, 78, 184, 116.9, 170, 16.9, 4, 83.1 }, - /* 99*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "81457132+12", 0, 50, 1, 78, 174, 116.9, 170, 16.9, 4, 83.1 }, - /*100*/ { BARCODE_UPCE_CHK, -1, -1, 0, "81457132+12", 0, 50, 1, 78, 184, 110, 170, 16.9, 4, 83.1 }, /* Hide text */ - /*101*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, 0, "81457132+12", 0, 50, 1, 78, 184, 110, 170, 16.9, 4, 83.1 }, /* Hide text */ - /*102*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, 0, "81457132+12", 0, 50, 1, 78, 156, 110, 152, 16.9, 4, 83.1 }, /* Hide text */ - /*103*/ { BARCODE_UPCE, -1, -1, -1, "8145713+12345", 0, 50, 1, 105, 238, 116.9, 226, 16.9, 2, 83.1 }, - /*104*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, "8145713+12345", 0, 50, 1, 105, 238, 116.9, 226, 16.9, 2, 83.1 }, - /*105*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713+12345", 0, 50, 1, 105, 228, 116.9, 226, 16.9, 2, 83.1 }, - /*106*/ { BARCODE_UPCE, -1, -1, 0, "8145713+12345", 0, 50, 1, 105, 238, 110, 226, 16.9, 2, 83.1 }, /* Hide text */ - /*107*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, 0, "8145713+12345", 0, 50, 1, 105, 238, 110, 226, 16.9, 2, 83.1 }, /* Hide text */ - /*108*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713+12345", 0, 50, 1, 105, 210, 110, 208, 16.9, 2, 83.1 }, /* Hide text */ - /*109*/ { BARCODE_POSTNET, -1, -1, -1, "12345", 0, 12, 2, 63, 126, 24, 0, 0, 2, 24 }, - /*110*/ { BARCODE_POSTNET, BARCODE_QUIET_ZONES, -1, -1, "12345", 0, 12, 2, 63, 146, 30.4, 10, 3.2, 2, 24 }, - /*111*/ { BARCODE_MSI_PLESSEY, -1, -1, -1, "1234", 0, 50, 1, 55, 110, 118.9, 0, 0, 4, 100 }, - /*112*/ { BARCODE_MSI_PLESSEY, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 55, 158, 118.9, 24, 0, 4, 100 }, - /*113*/ { BARCODE_FIM, -1, -1, -1, "A", 0, 50, 1, 17, 34, 100, 0, 0, 2, 100 }, - /*114*/ { BARCODE_FIM, BARCODE_QUIET_ZONES, -1, -1, "A", 0, 50, 1, 17, 50.955414, 100, 10.585987, 0, 2, 100 }, - /*115*/ { BARCODE_LOGMARS, -1, -1, -1, "1234", 0, 50, 1, 95, 190, 118.9, 0, 0, 2, 100 }, - /*116*/ { BARCODE_LOGMARS, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 95, 230, 118.9, 20, 0, 2, 100 }, - /*117*/ { BARCODE_PHARMA, -1, -1, -1, "1234", 0, 50, 1, 38, 76, 100, 0, 0, 2, 100 }, - /*118*/ { BARCODE_PHARMA, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 38, 100, 100, 12, 0, 2, 100 }, - /*119*/ { BARCODE_PZN, -1, -1, -1, "1234", 0, 50, 1, 142, 284, 118.9, 0, 0, 2, 100 }, - /*120*/ { BARCODE_PZN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 142, 324, 118.9, 20, 0, 2, 100 }, - /*121*/ { BARCODE_PHARMA_TWO, -1, -1, -1, "1234", 0, 10, 2, 13, 26, 20, 8, 0, 2, 10 }, - /*122*/ { BARCODE_PHARMA_TWO, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 10, 2, 13, 50, 20, 20, 0, 2, 10 }, - /*123*/ { BARCODE_CEPNET, -1, -1, -1, "12345678", 0, 5.375, 2, 93, 186, 10.75, 0, 0, 2, 10.75 }, - /*124*/ { BARCODE_CEPNET, BARCODE_QUIET_ZONES, -1, -1, "12345678", 0, 5.375, 2, 93, 226, 17.15, 20, 3.2, 2, 10.75 }, - /*125*/ { BARCODE_PDF417, -1, -1, -1, "1234", 0, 18, 6, 103, 206, 36, 0, 0, 16, 36 }, - /*126*/ { BARCODE_PDF417, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 18, 6, 103, 214, 44, 4, 4, 16, 36 }, - /*127*/ { BARCODE_PDF417COMP, -1, -1, -1, "1234", 0, 18, 6, 69, 138, 36, 0, 0, 16, 36 }, - /*128*/ { BARCODE_PDF417COMP, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 18, 6, 69, 146, 44, 4, 4, 16, 36 }, - /*129*/ { BARCODE_MAXICODE, -1, -1, -1, "1234", 0, 165, 33, 30, 60, 57.733398, 29, 28.866699, 16.430941, 0 }, - /*130*/ { BARCODE_MAXICODE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 165, 33, 30, 64, 61.733398, 31, 30.866699, 16.430941, 0 }, - /*131*/ { BARCODE_QRCODE, -1, -1, -1, "1234", 0, 21, 21, 21, 42, 42, 0, 0, 14, 2 }, - /*132*/ { BARCODE_QRCODE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 21, 21, 21, 58, 58, 8, 8, 14, 2 }, - /*133*/ { BARCODE_CODE128AB, -1, -1, -1, "1234", 0, 50, 1, 79, 158, 118.9, 0, 0, 4, 100 }, - /*134*/ { BARCODE_CODE128AB, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 79, 198, 118.9, 20, 0, 4, 100 }, - /*135*/ { BARCODE_AUSPOST, -1, -1, -1, "12345678", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, - /*136*/ { BARCODE_AUSPOST, BARCODE_QUIET_ZONES, -1, -1, "12345678", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, - /*137*/ { BARCODE_AUSREPLY, -1, -1, -1, "1234", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, - /*138*/ { BARCODE_AUSREPLY, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, - /*139*/ { BARCODE_AUSROUTE, -1, -1, -1, "1234", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, - /*140*/ { BARCODE_AUSROUTE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, - /*141*/ { BARCODE_AUSREDIRECT, -1, -1, -1, "1234", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, - /*142*/ { BARCODE_AUSREDIRECT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, - /*143*/ { BARCODE_ISBNX, -1, -1, -1, "123456789X", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, - /*144*/ { BARCODE_ISBNX, BARCODE_QUIET_ZONES, -1, -1, "123456789X", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, - /*145*/ { BARCODE_ISBNX, BARCODE_NO_QUIET_ZONES, -1, -1, "123456789X", 0, 50, 1, 95, 212, 116.9, 22, 0, 2, 110 }, - /*146*/ { BARCODE_RM4SCC, -1, -1, -1, "1234", 0, 8, 3, 43, 86, 16, 0, 0, 2, 10 }, - /*147*/ { BARCODE_RM4SCC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 43, 98.283463, 28.283464, 6.1417322, 6.1417322, 2, 10 }, - /*148*/ { BARCODE_DATAMATRIX, -1, -1, -1, "1234", 0, 10, 10, 10, 20, 20, 0, 0, 2, 2 }, - /*149*/ { BARCODE_DATAMATRIX, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 10, 10, 10, 24, 24, 2, 2, 2, 2 }, - /*150*/ { BARCODE_EAN14, -1, -1, -1, "1234", 0, 50, 1, 134, 268, 118.9, 0, 0, 4, 100 }, - /*151*/ { BARCODE_EAN14, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 134, 308, 118.9, 20, 0, 4, 100 }, - /*152*/ { BARCODE_VIN, -1, -1, -1, "12345678701234567", 0, 50, 1, 246, 492, 118.9, 0, 0, 2, 100 }, - /*153*/ { BARCODE_VIN, BARCODE_QUIET_ZONES, -1, -1, "12345678701234567", 0, 50, 1, 246, 532, 118.9, 20, 0, 2, 100 }, - /*154*/ { BARCODE_CODABLOCKF, -1, -1, -1, "1234", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 }, - /*155*/ { BARCODE_CODABLOCKF, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 }, - /*156*/ { BARCODE_CODABLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 101, 202, 44, 0, 2, 4, 40 }, - /*157*/ { BARCODE_NVE18, -1, -1, -1, "1234", 0, 50, 1, 156, 312, 118.9, 0, 0, 4, 100 }, - /*158*/ { BARCODE_NVE18, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 156, 352, 118.9, 20, 0, 4, 100 }, - /*159*/ { BARCODE_JAPANPOST, -1, -1, -1, "1234", 0, 8, 3, 133, 266, 16, 0, 0, 2, 16 }, - /*160*/ { BARCODE_JAPANPOST, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 133, 279.33334, 29.333332, 6.6666665, 6.6666665, 2, 16 }, - /*161*/ { BARCODE_KOREAPOST, -1, -1, -1, "1234", 0, 50, 1, 167, 334, 118.9, 8, 0, 2, 100 }, - /*162*/ { BARCODE_KOREAPOST, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 167, 374, 118.9, 28, 0, 2, 100 }, - /*163*/ { BARCODE_DBAR_STK, -1, -1, -1, "1234", 0, 13, 3, 50, 100, 26, 2, 0, 2, 10 }, - /*164*/ { BARCODE_DBAR_STK, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 13, 3, 50, 100, 26, 2, 0, 2, 10 }, - /*165*/ { BARCODE_DBAR_STK, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 13, 3, 50, 100, 26, 2, 0, 2, 10 }, - /*166*/ { BARCODE_DBAR_OMNSTK, -1, -1, -1, "1234", 0, 69, 5, 50, 100, 138, 2, 0, 2, 66 }, - /*167*/ { BARCODE_DBAR_OMNSTK, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 69, 5, 50, 100, 138, 2, 0, 2, 66 }, - /*168*/ { BARCODE_DBAR_OMNSTK, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 69, 5, 50, 100, 138, 2, 0, 2, 66 }, - /*169*/ { BARCODE_DBAR_EXPSTK, -1, -1, -1, "[20]12", 0, 34, 1, 102, 204, 68, 2, 0, 2, 68 }, - /*170*/ { BARCODE_DBAR_EXPSTK, BARCODE_QUIET_ZONES, -1, -1, "[20]12", 0, 34, 1, 102, 204, 68, 2, 0, 2, 68 }, - /*171*/ { BARCODE_DBAR_EXPSTK, BARCODE_NO_QUIET_ZONES, -1, -1, "[20]12", 0, 34, 1, 102, 204, 68, 2, 0, 2, 68 }, - /*172*/ { BARCODE_PLANET, -1, -1, -1, "12345678901", 0, 12, 2, 123, 246, 24, 0, 0, 2, 24 }, - /*173*/ { BARCODE_PLANET, BARCODE_QUIET_ZONES, -1, -1, "12345678901", 0, 12, 2, 123, 266, 30.4, 10, 3.2, 2, 24 }, - /*174*/ { BARCODE_MICROPDF417, -1, -1, -1, "1234", 0, 22, 11, 38, 76, 44, 0, 0, 4, 4 }, - /*175*/ { BARCODE_MICROPDF417, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 22, 11, 38, 80, 48, 2, 2, 4, 4 }, - /*176*/ { BARCODE_USPS_IMAIL, -1, -1, -1, "12345678901234567890", 0, 8, 3, 129, 258, 16, 0, 0, 2, 10 }, - /*177*/ { BARCODE_USPS_IMAIL, BARCODE_QUIET_ZONES, -1, -1, "12345678901234567890", 0, 8, 3, 129, 277.5, 20.056, 9.75, 2.0280001, 2, 10 }, - /*178*/ { BARCODE_PLESSEY, -1, -1, -1, "1234", 0, 50, 1, 131, 262, 118.9, 0, 0, 6, 100 }, - /*179*/ { BARCODE_PLESSEY, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 131, 310, 118.9, 24, 0, 6, 100 }, - /*180*/ { BARCODE_TELEPEN_NUM, -1, -1, -1, "1234", 0, 50, 1, 80, 160, 118.9, 0, 0, 2, 100 }, - /*181*/ { BARCODE_TELEPEN_NUM, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 80, 200, 118.9, 20, 0, 2, 100 }, - /*182*/ { BARCODE_ITF14, -1, -1, -1, "1234", 0, 50, 1, 135, 330, 138.89999, 30, 10, 2, 100 }, - /*183*/ { BARCODE_ITF14, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 135, 330, 138.89999, 30, 10, 2, 100 }, - /*184*/ { BARCODE_ITF14, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 135, 290, 138.89999, 10, 10, 2, 100 }, - /*185*/ { BARCODE_KIX, -1, -1, -1, "1234", 0, 8, 3, 31, 62, 16, 8, 0, 2, 10 }, - /*186*/ { BARCODE_KIX, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 31, 74.283463, 28.283464, 14.141732, 6.1417322, 2, 10 }, - /*187*/ { BARCODE_AZTEC, -1, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 6, 0, 6, 2 }, - /*188*/ { BARCODE_AZTEC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 6, 0, 6, 2 }, - /*189*/ { BARCODE_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 6, 0, 6, 2 }, - /*190*/ { BARCODE_DAFT, -1, -1, -1, "FADT", 0, 8, 3, 7, 14, 16, 0, 0, 2, 16 }, - /*191*/ { BARCODE_DAFT, BARCODE_QUIET_ZONES, -1, -1, "FADT", 0, 8, 3, 7, 14, 16, 0, 0, 2, 16 }, - /*192*/ { BARCODE_DAFT, BARCODE_NO_QUIET_ZONES, -1, -1, "FADT", 0, 8, 3, 7, 14, 16, 0, 0, 2, 16 }, - /*193*/ { BARCODE_DPD, -1, -1, -1, "1234567890123456789012345678", 0, 50, 1, 189, 378, 130.89999, 0, 6, 4, 100 }, - /*194*/ { BARCODE_DPD, BARCODE_QUIET_ZONES, -1, -1, "1234567890123456789012345678", 0, 50, 1, 189, 428, 130.89999, 25, 6, 4, 100 }, - /*195*/ { BARCODE_MICROQR, -1, -1, -1, "1234", 0, 11, 11, 11, 22, 22, 0, 0, 14, 2 }, - /*196*/ { BARCODE_MICROQR, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 11, 11, 11, 30, 30, 4, 4, 14, 2 }, - /*197*/ { BARCODE_HIBC_128, -1, -1, -1, "1234", 0, 50, 1, 90, 180, 118.9, 0, 0, 4, 100 }, - /*198*/ { BARCODE_HIBC_128, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 90, 220, 118.9, 20, 0, 4, 100 }, - /*199*/ { BARCODE_HIBC_39, -1, -1, -1, "1234", 0, 50, 1, 127, 254, 118.9, 0, 0, 2, 100 }, - /*200*/ { BARCODE_HIBC_39, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 127, 294, 118.9, 20, 0, 2, 100 }, - /*201*/ { BARCODE_HIBC_DM, -1, -1, -1, "1234", 0, 12, 12, 12, 24, 24, 0, 0, 2, 2 }, - /*202*/ { BARCODE_HIBC_DM, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 12, 12, 12, 28, 28, 2, 2, 2, 2 }, - /*203*/ { BARCODE_HIBC_QR, -1, -1, -1, "1234", 0, 21, 21, 21, 42, 42, 0, 0, 14, 2 }, - /*204*/ { BARCODE_HIBC_QR, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 21, 21, 21, 58, 58, 8, 8, 14, 2 }, - /*205*/ { BARCODE_HIBC_PDF, -1, -1, -1, "1234", 0, 21, 7, 103, 206, 42, 0, 0, 16, 42 }, - /*206*/ { BARCODE_HIBC_PDF, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 21, 7, 103, 214, 50, 4, 4, 16, 42 }, - /*207*/ { BARCODE_HIBC_MICPDF, -1, -1, -1, "1234", 0, 12, 6, 82, 164, 24, 0, 0, 4, 4 }, - /*208*/ { BARCODE_HIBC_MICPDF, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 12, 6, 82, 168, 28, 2, 2, 4, 4 }, - /*209*/ { BARCODE_HIBC_BLOCKF, -1, -1, -1, "1234", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 }, - /*210*/ { BARCODE_HIBC_BLOCKF, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 }, - /*211*/ { BARCODE_HIBC_BLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 101, 202, 44, 0, 2, 4, 40 }, - /*212*/ { BARCODE_HIBC_AZTEC, -1, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 }, - /*213*/ { BARCODE_HIBC_AZTEC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 }, - /*214*/ { BARCODE_HIBC_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 }, - /*215*/ { BARCODE_DOTCODE, -1, -1, -1, "1234", 0, 10, 10, 13, 26, 20, 5, 1, 1.6, 0 }, - /*216*/ { BARCODE_DOTCODE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 10, 10, 13, 38, 32, 11, 7, 1.6, 0 }, - /*217*/ { BARCODE_HANXIN, -1, -1, -1, "1234", 0, 23, 23, 23, 46, 46, 0, 0, 14, 2 }, - /*218*/ { BARCODE_HANXIN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 23, 23, 23, 58, 58, 6, 6, 14, 2 }, - /*219*/ { BARCODE_MAILMARK_2D, -1, -1, -1, "012100123412345678AB19XY1A 0", 0, 24, 24, 24, 48, 48, 0, 0, 2, 2 }, - /*220*/ { BARCODE_MAILMARK_2D, BARCODE_QUIET_ZONES, -1, -1, "012100123412345678AB19XY1A 0", 0, 24, 24, 24, 64, 64, 8, 8, 2, 2 }, - /*221*/ { BARCODE_UPU_S10, -1, -1, -1, "EE876543216CA", 0, 50, 1, 156, 312, 118.9, 0, 0, 4, 100 }, - /*222*/ { BARCODE_UPU_S10, BARCODE_QUIET_ZONES, -1, -1, "EE876543216CA", 0, 50, 1, 156, 352, 118.9, 20, 0, 4, 100 }, - /*223*/ { BARCODE_MAILMARK_4S, -1, -1, -1, "01000000000000000AA00AA0A", 0, 10, 3, 155, 310, 20, 0, 0, 2, 20 }, - /*224*/ { BARCODE_MAILMARK_4S, BARCODE_QUIET_ZONES, -1, -1, "01000000000000000AA00AA0A", 0, 10, 3, 155, 322.28348, 32.283463, 6.1417322, 6.1417322, 2, 20 }, - /*225*/ { BARCODE_AZRUNE, -1, -1, -1, "123", 0, 11, 11, 11, 22, 22, 0, 0, 8, 2 }, - /*226*/ { BARCODE_AZRUNE, BARCODE_QUIET_ZONES, -1, -1, "123", 0, 11, 11, 11, 22, 22, 0, 0, 8, 2 }, - /*227*/ { BARCODE_AZRUNE, BARCODE_NO_QUIET_ZONES, -1, -1, "123", 0, 11, 11, 11, 22, 22, 0, 0, 8, 2 }, - /*228*/ { BARCODE_CODE32, -1, -1, -1, "1234", 0, 50, 1, 103, 206, 118.9, 0, 0, 2, 100 }, - /*229*/ { BARCODE_CODE32, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 103, 246, 118.9, 20, 0, 2, 100 }, - /*230*/ { BARCODE_EANX_CC, -1, -1, -1, "023456789012", 0, 50, 7, 99, 234, 116.9, 32, 24, 2, 86 }, - /*231*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 7, 99, 234, 116.9, 32, 24, 2, 86 }, - /*232*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 7, 99, 220, 116.9, 32, 24, 2, 86 }, - /*233*/ { BARCODE_EANX_CC, -1, -1, 0, "023456789012", 0, 50, 7, 99, 234, 110, 32, 24, 2, 86 }, /* Hide text */ - /*234*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 7, 99, 234, 110, 32, 24, 2, 86 }, /* Hide text */ - /*235*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 7, 99, 198, 110, 10, 24, 2, 86 }, /* Hide text */ - /*236*/ { BARCODE_GS1_128_CC, -1, -1, -1, "[20]02", 0, 50, 5, 99, 198, 118.9, 24, 14, 4, 86 }, - /*237*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, -1, -1, "[20]02", 0, 50, 5, 99, 238, 118.9, 44, 14, 4, 86 }, - /*238*/ { BARCODE_DBAR_OMN_CC, -1, -1, -1, "1234", 0, 21, 5, 100, 200, 60.900002, 10, 14, 2, 28 }, - /*239*/ { BARCODE_DBAR_OMN_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 21, 5, 100, 204, 60.900002, 12, 14, 2, 28 }, - /*240*/ { BARCODE_DBAR_LTD_CC, -1, -1, -1, "1234", 0, 19, 6, 79, 158, 56.900002, 2, 18, 2, 20 }, - /*241*/ { BARCODE_DBAR_LTD_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 19, 6, 79, 162, 56.900002, 4, 18, 2, 20 }, - /*242*/ { BARCODE_DBAR_EXP_CC, -1, -1, -1, "[20]12", 0, 41, 5, 102, 204, 100.9, 2, 14, 2, 68 }, - /*243*/ { BARCODE_DBAR_EXP_CC, BARCODE_QUIET_ZONES, -1, -1, "[20]12", 0, 41, 5, 102, 208, 100.9, 4, 14, 2, 68 }, - /*244*/ { BARCODE_UPCA_CC, -1, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.9, 24, 20, 2, 90 }, - /*245*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.9, 24, 20, 2, 90 }, - /*246*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.9, 24, 20, 2, 90 }, - /*247*/ { BARCODE_UPCA_CC, -1, -1, 0, "01457137763", 0, 50, 7, 99, 234, 110, 24, 20, 2, 90 }, /* Hide text */ - /*248*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 7, 99, 234, 110, 24, 20, 2, 90 }, /* Hide text */ - /*249*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 7, 99, 198, 110, 6, 20, 2, 90 }, /* Hide text */ - /*250*/ { BARCODE_UPCE_CC, -1, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.9, 24, 28, 2, 82 }, - /*251*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.9, 24, 28, 2, 82 }, - /*252*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.9, 24, 28, 2, 82 }, - /*253*/ { BARCODE_UPCE_CC, -1, -1, 0, "8145713", 0, 50, 9, 55, 142, 110, 24, 28, 2, 82 }, /* Hide text */ - /*254*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, 0, "8145713", 0, 50, 9, 55, 142, 110, 24, 28, 2, 82 }, /* Hide text */ - /*255*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713", 0, 50, 9, 55, 110, 110, 6, 28, 2, 82 }, /* Hide text */ - /*256*/ { BARCODE_DBAR_STK_CC, -1, -1, -1, "1234", 0, 24, 9, 56, 112, 48, 0, 34, 2, 14 }, - /*257*/ { BARCODE_DBAR_STK_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 24, 9, 56, 116, 48, 2, 34, 2, 14 }, - /*258*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, -1, "1234", 0, 80, 11, 56, 112, 160, 0, 94, 2, 66 }, - /*259*/ { BARCODE_DBAR_OMNSTK_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 80, 11, 56, 116, 160, 2, 94, 2, 66 }, - /*260*/ { BARCODE_DBAR_EXPSTK_CC, -1, -1, -1, "[20]12", 0, 41, 5, 102, 204, 82, 2, 14, 2, 68 }, - /*261*/ { BARCODE_DBAR_EXPSTK_CC, BARCODE_QUIET_ZONES, -1, -1, "[20]12", 0, 41, 5, 102, 208, 82, 4, 14, 2, 68 }, - /*262*/ { BARCODE_CHANNEL, -1, -1, -1, "1234", 0, 50, 1, 27, 54, 118.9, 0, 0, 2, 100 }, - /*263*/ { BARCODE_CHANNEL, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 27, 60, 118.9, 2, 0, 2, 100 }, - /*264*/ { BARCODE_CODEONE, -1, -1, -1, "1234", 0, 16, 16, 18, 36, 32, 0, 0, 2, 2 }, /* Versions A to H - no quiet zone */ - /*265*/ { BARCODE_CODEONE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 16, 16, 18, 36, 32, 0, 0, 2, 2 }, - /*266*/ { BARCODE_CODEONE, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 16, 16, 18, 36, 32, 0, 0, 2, 2 }, - /*267*/ { BARCODE_CODEONE, -1, 9, -1, "1234", 0, 8, 8, 11, 22, 16, 10, 0, 2, 2 }, /* Version S (& T) have quiet zones */ - /*268*/ { BARCODE_CODEONE, BARCODE_QUIET_ZONES, 9, -1, "1234", 0, 8, 8, 11, 26, 16, 12, 0, 2, 2 }, - /*269*/ { BARCODE_GRIDMATRIX, -1, -1, -1, "123", 0, 18, 18, 18, 36, 36, 0, 0, 12, 2 }, - /*270*/ { BARCODE_GRIDMATRIX, BARCODE_QUIET_ZONES, -1, -1, "123", 0, 18, 18, 18, 60, 60, 12, 12, 12, 2 }, - /*271*/ { BARCODE_UPNQR, -1, -1, -1, "1234", 0, 77, 77, 77, 154, 154, 0, 0, 14, 2 }, - /*272*/ { BARCODE_UPNQR, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 77, 77, 77, 170, 170, 8, 8, 14, 2 }, - /*273*/ { BARCODE_ULTRA, -1, -1, -1, "1234", 0, 13, 13, 15, 30, 26, 0, 0, 30, 2 }, - /*274*/ { BARCODE_ULTRA, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 13, 13, 15, 34, 30, 2, 2, 30, 2 }, - /*275*/ { BARCODE_RMQR, -1, -1, -1, "1234", 0, 11, 11, 27, 54, 22, 0, 0, 14, 2 }, - /*276*/ { BARCODE_RMQR, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 11, 11, 27, 62, 30, 4, 4, 14, 2 }, - /*277*/ { BARCODE_BC412, -1, -1, -1, "1234567", 0, 16.666668, 1, 102, 204, 52.233337, 0, 0, 2, 33.333336 }, - /*278*/ { BARCODE_BC412, BARCODE_QUIET_ZONES, -1, -1, "1234567", 0, 16.666668, 1, 102, 244, 52.233337, 20, 0, 2, 33.333336 }, + /* 0*/ { BARCODE_CODE11, -1, -1, -1, -1, "1234", "", 0, 50, 1, 62, 124, 118.9, 0, 0, 2, 100 }, + /* 1*/ { BARCODE_CODE11, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 62, 164, 118.9, 20, 0, 2, 100 }, + /* 2*/ { BARCODE_CODE11, BARCODE_QUIET_ZONES | BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 62, 124, 118.9, 0, 0, 2, 100 }, /* BARCODE_NO_QUIET_ZONES trumps BARCODE_QUIET_ZONES */ + /* 3*/ { BARCODE_C25STANDARD, -1, -1, -1, -1, "1234", "", 0, 50, 1, 57, 114, 118.9, 0, 0, 8, 100 }, + /* 4*/ { BARCODE_C25STANDARD, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 57, 154, 118.9, 20, 0, 8, 100 }, + /* 5*/ { BARCODE_C25INTER, -1, -1, -1, -1, "1234", "", 0, 50, 1, 45, 90, 118.9, 0, 0, 2, 100 }, + /* 6*/ { BARCODE_C25INTER, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 45, 130, 118.9, 20, 0, 2, 100 }, + /* 7*/ { BARCODE_C25IATA, -1, -1, -1, -1, "1234", "", 0, 50, 1, 65, 130, 118.9, 0, 0, 2, 100 }, + /* 8*/ { BARCODE_C25IATA, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 65, 170, 118.9, 20, 0, 2, 100 }, + /* 9*/ { BARCODE_C25LOGIC, -1, -1, -1, -1, "1234", "", 0, 50, 1, 49, 98, 118.9, 0, 0, 2, 100 }, + /* 10*/ { BARCODE_C25LOGIC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 49, 138, 118.9, 20, 0, 2, 100 }, + /* 11*/ { BARCODE_C25IND, -1, -1, -1, -1, "1234", "", 0, 50, 1, 75, 150, 118.9, 0, 0, 6, 100 }, + /* 12*/ { BARCODE_C25IND, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 75, 190, 118.9, 20, 0, 6, 100 }, + /* 13*/ { BARCODE_CODE39, -1, -1, -1, -1, "1234", "", 0, 50, 1, 77, 154, 118.9, 0, 0, 2, 100 }, + /* 14*/ { BARCODE_CODE39, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 77, 194, 118.9, 20, 0, 2, 100 }, + /* 15*/ { BARCODE_EXCODE39, -1, -1, -1, -1, "1234", "", 0, 50, 1, 77, 154, 118.9, 0, 0, 2, 100 }, + /* 16*/ { BARCODE_EXCODE39, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 77, 194, 118.9, 20, 0, 2, 100 }, + /* 17*/ { BARCODE_EANX, -1, -1, -1, -1, "023456789012", "", 0, 50, 1, 95, 226, 118, 22, 0, 2, 110 }, + /* 18*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "023456789012", "", 0, 50, 1, 95, 226, 118, 22, 0, 2, 110 }, + /* 19*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "023456789012", "", 0, 50, 1, 95, 212, 118, 22, 0, 2, 110 }, + /* 20*/ { BARCODE_EANX, -1, -1, -1, 0, "023456789012", "", 0, 50, 1, 95, 226, 110, 22, 0, 2, 110 }, /* Hide text */ + /* 21*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, 0, "023456789012", "", 0, 50, 1, 95, 226, 110, 22, 0, 2, 110 }, /* Hide text */ + /* 22*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "023456789012", "", 0, 50, 1, 95, 190, 110, 0, 0, 2, 110 }, /* Hide text */ + /* 23*/ { BARCODE_EANX, -1, -1, -1, -1, "023456789012+12", "", 0, 50, 1, 122, 276, 118, 262, 18, 4, 92 }, + /* 24*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "023456789012+12", "", 0, 50, 1, 122, 276, 118, 262, 18, 4, 92 }, + /* 25*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "023456789012+12", "", 0, 50, 1, 122, 266, 118, 262, 18, 4, 92 }, + /* 26*/ { BARCODE_EANX, -1, -1, -1, 0, "023456789012+12", "", 0, 50, 1, 122, 276, 110, 262, 18, 4, 92 }, /* Hide text */ + /* 27*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, 0, "023456789012+12", "", 0, 50, 1, 122, 276, 110, 262, 18, 4, 92 }, /* Hide text */ + /* 28*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "023456789012+12", "", 0, 50, 1, 122, 244, 110, 240, 18, 4, 92 }, /* Hide text */ + /* 29*/ { BARCODE_EANX_CHK, -1, -1, -1, -1, "0234567890129+12345", "", 0, 50, 1, 149, 330, 118, 318, 18, 2, 92 }, + /* 30*/ { BARCODE_EANX_CHK, BARCODE_QUIET_ZONES, -1, -1, -1, "0234567890129+12345", "", 0, 50, 1, 149, 330, 118, 318, 18, 2, 92 }, + /* 31*/ { BARCODE_EANX_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "0234567890129+12345", "", 0, 50, 1, 149, 320, 118, 318, 18, 2, 92 }, + /* 32*/ { BARCODE_EANX, -1, -1, -1, -1, "0234567", "", 0, 50, 1, 67, 162, 118, 14, 0, 2, 110 }, /* EAN-8 */ + /* 33*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "0234567", "", 0, 50, 1, 67, 162, 118, 14, 0, 2, 110 }, /* EAN-8 */ + /* 34*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "0234567", "", 0, 50, 1, 67, 134, 118, 0, 0, 2, 110 }, /* EAN-8 */ + /* 35*/ { BARCODE_EANX, -1, -1, -1, -1, "02345", "", 0, 50, 1, 47, 104, 118, 92, 18, 2, 100 }, /* EAN-5 */ + /* 36*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "02345", "", 0, 50, 1, 47, 104, 118, 92, 18, 2, 100 }, /* EAN-5 */ + /* 37*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "02345", "", 0, 50, 1, 47, 94, 118, 92, 18, 2, 100 }, /* EAN-5 - only width changes */ + /* 38*/ { BARCODE_EANX, -1, -1, -1, -1, "02", "", 0, 50, 1, 20, 50, 118, 36, 18, 4, 100 }, /* EAN-2 */ + /* 39*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, -1, "02", "", 0, 50, 1, 20, 50, 118, 36, 18, 4, 100 }, /* EAN-2 */ + /* 40*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "02", "", 0, 50, 1, 20, 40, 118, 36, 18, 4, 100 }, /* EAN-2 - only width changes */ + /* 41*/ { BARCODE_GS1_128, -1, -1, -1, -1, "[20]02", "", 0, 50, 1, 68, 136, 118.9, 0, 0, 4, 100 }, + /* 42*/ { BARCODE_GS1_128, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 50, 1, 68, 176, 118.9, 20, 0, 4, 100 }, + /* 43*/ { BARCODE_CODABAR, -1, -1, -1, -1, "A0B", "", 0, 50, 1, 32, 64, 118.9, 0, 0, 2, 100 }, + /* 44*/ { BARCODE_CODABAR, BARCODE_QUIET_ZONES, -1, -1, -1, "A0B", "", 0, 50, 1, 32, 104, 118.9, 20, 0, 2, 100 }, + /* 45*/ { BARCODE_CODE128, -1, -1, -1, -1, "1234", "", 0, 50, 1, 57, 114, 118.9, 0, 0, 4, 100 }, + /* 46*/ { BARCODE_CODE128, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 57, 154, 118.9, 20, 0, 4, 100 }, + /* 47*/ { BARCODE_DPLEIT, -1, -1, -1, -1, "1234", "", 0, 72, 1, 135, 270, 162.89999, 0, 0, 2, 144 }, + /* 48*/ { BARCODE_DPLEIT, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 72, 1, 135, 310, 162.89999, 20, 0, 2, 144 }, + /* 49*/ { BARCODE_DPIDENT, -1, -1, -1, -1, "1234", "", 0, 72, 1, 117, 234, 162.89999, 0, 0, 2, 144 }, + /* 50*/ { BARCODE_DPIDENT, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 72, 1, 117, 274, 162.89999, 20, 0, 2, 144 }, + /* 51*/ { BARCODE_CODE16K, -1, -1, -1, -1, "1234", "", 0, 20, 2, 70, 162, 44, 20, 2, 6, 19 }, + /* 52*/ { BARCODE_CODE16K, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 70, 162, 44, 20, 2, 6, 19 }, + /* 53*/ { BARCODE_CODE16K, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 70, 140, 44, 0, 2, 6, 19 }, + /* 54*/ { BARCODE_CODE49, -1, -1, -1, -1, "1234", "", 0, 20, 2, 70, 162, 44, 20, 2, 2, 19 }, + /* 55*/ { BARCODE_CODE49, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 70, 162, 44, 20, 2, 2, 19 }, + /* 56*/ { BARCODE_CODE49, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 70, 140, 44, 0, 2, 2, 19 }, + /* 57*/ { BARCODE_CODE93, -1, -1, -1, -1, "1234", "", 0, 50, 1, 73, 146, 118.9, 0, 0, 2, 100 }, + /* 58*/ { BARCODE_CODE93, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 73, 186, 118.9, 20, 0, 2, 100 }, + /* 59*/ { BARCODE_FLAT, -1, -1, -1, -1, "1234", "", 0, 50, 1, 36, 72, 100, 0, 0, 2, 100 }, + /* 60*/ { BARCODE_FLAT, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 36, 72, 100, 0, 0, 2, 100 }, + /* 61*/ { BARCODE_FLAT, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 36, 72, 100, 0, 0, 2, 100 }, + /* 62*/ { BARCODE_DBAR_OMN, -1, -1, -1, -1, "1234", "", 0, 50, 1, 96, 192, 118.9, 2, 0, 2, 100 }, + /* 63*/ { BARCODE_DBAR_OMN, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 96, 192, 118.9, 2, 0, 2, 100 }, + /* 64*/ { BARCODE_DBAR_OMN, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 96, 192, 118.9, 2, 0, 2, 100 }, + /* 65*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, "1234", "", 0, 50, 1, 79, 158, 118.9, 2, 0, 2, 100 }, + /* 66*/ { BARCODE_DBAR_LTD, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 79, 158, 118.9, 2, 0, 2, 100 }, + /* 67*/ { BARCODE_DBAR_LTD, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 79, 158, 118.9, 2, 0, 2, 100 }, + /* 68*/ { BARCODE_DBAR_EXP, -1, -1, -1, -1, "[20]02", "", 0, 34, 1, 102, 204, 86.900002, 2, 0, 2, 68 }, + /* 69*/ { BARCODE_DBAR_EXP, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 34, 1, 102, 204, 86.900002, 2, 0, 2, 68 }, + /* 70*/ { BARCODE_DBAR_EXP, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 34, 1, 102, 204, 86.900002, 2, 0, 2, 68 }, + /* 71*/ { BARCODE_TELEPEN, -1, -1, -1, -1, "1234", "", 0, 50, 1, 112, 224, 118.9, 0, 0, 2, 100 }, + /* 72*/ { BARCODE_TELEPEN, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 112, 264, 118.9, 20, 0, 2, 100 }, + /* 73*/ { BARCODE_UPCA, -1, -1, -1, -1, "01457137763", "", 0, 50, 1, 95, 226, 118, 18, 0, 2, 110 }, + /* 74*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, -1, "01457137763", "", 0, 50, 1, 95, 226, 118, 18, 0, 2, 110 }, + /* 75*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "01457137763", "", 0, 50, 1, 95, 226, 118, 18, 0, 2, 110 }, + /* 76*/ { BARCODE_UPCA, -1, -1, -1, 0, "01457137763", "", 0, 50, 1, 95, 226, 110, 18, 0, 2, 110 }, /* Hide text */ + /* 77*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, 0, "01457137763", "", 0, 50, 1, 95, 226, 110, 18, 0, 2, 110 }, /* Hide text */ + /* 78*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "01457137763", "", 0, 50, 1, 95, 190, 110, 0, 0, 2, 110 }, /* Hide text */ + /* 79*/ { BARCODE_UPCA, -1, -1, -1, -1, "01457137763+12", "", 0, 50, 1, 124, 276, 118, 18, 0, 2, 110 }, + /* 80*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, -1, "01457137763+12", "", 0, 50, 1, 124, 276, 118, 18, 0, 2, 110 }, + /* 81*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "01457137763+12", "", 0, 50, 1, 124, 266, 118, 18, 0, 2, 110 }, + /* 82*/ { BARCODE_UPCA, -1, -1, -1, 0, "01457137763+12", "", 0, 50, 1, 124, 276, 110, 18, 0, 2, 110 }, /* Hide text */ + /* 83*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, 0, "01457137763+12", "", 0, 50, 1, 124, 276, 110, 18, 0, 2, 110 }, /* Hide text */ + /* 84*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "01457137763+12", "", 0, 50, 1, 124, 248, 110, 0, 0, 2, 110 }, /* Hide text */ + /* 85*/ { BARCODE_UPCA_CHK, -1, -1, -1, -1, "014571377638+12345", "", 0, 50, 1, 151, 330, 118, 18, 0, 2, 110 }, + /* 86*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, -1, -1, "014571377638+12345", "", 0, 50, 1, 151, 330, 118, 18, 0, 2, 110 }, + /* 87*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "014571377638+12345", "", 0, 50, 1, 151, 320, 118, 18, 0, 2, 110 }, + /* 88*/ { BARCODE_UPCA_CHK, -1, -1, -1, 0, "014571377638+12345", "", 0, 50, 1, 151, 330, 110, 18, 0, 2, 110 }, /* Hide text */ + /* 89*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, -1, 0, "014571377638+12345", "", 0, 50, 1, 151, 330, 110, 18, 0, 2, 110 }, /* Hide text */ + /* 90*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "014571377638+12345", "", 0, 50, 1, 151, 302, 110, 0, 0, 2, 110 }, /* Hide text */ + /* 91*/ { BARCODE_UPCE, -1, -1, -1, -1, "8145713", "", 0, 50, 1, 51, 134, 118, 18, 0, 2, 110 }, + /* 92*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, -1, "8145713", "", 0, 50, 1, 51, 134, 118, 18, 0, 2, 110 }, + /* 93*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "8145713", "", 0, 50, 1, 51, 134, 118, 18, 0, 2, 110 }, + /* 94*/ { BARCODE_UPCE, -1, -1, -1, 0, "8145713", "", 0, 50, 1, 51, 134, 110, 18, 0, 2, 110 }, /* Hide text */ + /* 95*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, 0, "8145713", "", 0, 50, 1, 51, 134, 110, 18, 0, 2, 110 }, /* Hide text */ + /* 96*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "8145713", "", 0, 50, 1, 51, 102, 110, 0, 0, 2, 110 }, /* Hide text */ + /* 97*/ { BARCODE_UPCE_CHK, -1, -1, -1, -1, "81457132+12", "", 0, 50, 1, 78, 184, 118, 170, 18, 4, 82 }, + /* 98*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, -1, -1, "81457132+12", "", 0, 50, 1, 78, 184, 118, 170, 18, 4, 82 }, + /* 99*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "81457132+12", "", 0, 50, 1, 78, 174, 118, 170, 18, 4, 82 }, + /*100*/ { BARCODE_UPCE_CHK, -1, -1, -1, 0, "81457132+12", "", 0, 50, 1, 78, 184, 110, 170, 18, 4, 82 }, /* Hide text */ + /*101*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, -1, 0, "81457132+12", "", 0, 50, 1, 78, 184, 110, 170, 18, 4, 82 }, /* Hide text */ + /*102*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "81457132+12", "", 0, 50, 1, 78, 156, 110, 152, 18, 4, 82 }, /* Hide text */ + /*103*/ { BARCODE_UPCE, -1, -1, -1, -1, "8145713+12345", "", 0, 50, 1, 105, 238, 118, 226, 18, 2, 82 }, + /*104*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, -1, "8145713+12345", "", 0, 50, 1, 105, 238, 118, 226, 18, 2, 82 }, + /*105*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "8145713+12345", "", 0, 50, 1, 105, 228, 118, 226, 18, 2, 82 }, + /*106*/ { BARCODE_UPCE, -1, -1, -1, 0, "8145713+12345", "", 0, 50, 1, 105, 238, 110, 226, 18, 2, 82 }, /* Hide text */ + /*107*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, 0, "8145713+12345", "", 0, 50, 1, 105, 238, 110, 226, 18, 2, 82 }, /* Hide text */ + /*108*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "8145713+12345", "", 0, 50, 1, 105, 210, 110, 208, 18, 2, 82 }, /* Hide text */ + /*109*/ { BARCODE_POSTNET, -1, -1, -1, -1, "12345", "", 0, 12, 2, 63, 126, 24, 0, 0, 2, 24 }, + /*110*/ { BARCODE_POSTNET, BARCODE_QUIET_ZONES, -1, -1, -1, "12345", "", 0, 12, 2, 63, 146, 30.4, 10, 3.2, 2, 24 }, + /*111*/ { BARCODE_MSI_PLESSEY, -1, -1, -1, -1, "1234", "", 0, 50, 1, 55, 110, 118.9, 0, 0, 4, 100 }, + /*112*/ { BARCODE_MSI_PLESSEY, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 55, 158, 118.9, 24, 0, 4, 100 }, + /*113*/ { BARCODE_FIM, -1, -1, -1, -1, "A", "", 0, 50, 1, 17, 34, 100, 0, 0, 2, 100 }, + /*114*/ { BARCODE_FIM, BARCODE_QUIET_ZONES, -1, -1, -1, "A", "", 0, 50, 1, 17, 50.955414, 100, 10.585987, 0, 2, 100 }, + /*115*/ { BARCODE_LOGMARS, -1, -1, -1, -1, "1234", "", 0, 50, 1, 95, 190, 118.9, 0, 0, 2, 100 }, + /*116*/ { BARCODE_LOGMARS, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 95, 230, 118.9, 20, 0, 2, 100 }, + /*117*/ { BARCODE_PHARMA, -1, -1, -1, -1, "1234", "", 0, 50, 1, 38, 76, 100, 0, 0, 2, 100 }, + /*118*/ { BARCODE_PHARMA, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 38, 100, 100, 12, 0, 2, 100 }, + /*119*/ { BARCODE_PZN, -1, -1, -1, -1, "1234", "", 0, 50, 1, 142, 284, 118.9, 0, 0, 2, 100 }, + /*120*/ { BARCODE_PZN, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 142, 324, 118.9, 20, 0, 2, 100 }, + /*121*/ { BARCODE_PHARMA_TWO, -1, -1, -1, -1, "1234", "", 0, 10, 2, 13, 26, 20, 8, 0, 2, 10 }, + /*122*/ { BARCODE_PHARMA_TWO, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 10, 2, 13, 50, 20, 20, 0, 2, 10 }, + /*123*/ { BARCODE_CEPNET, -1, -1, -1, -1, "12345678", "", 0, 5.375, 2, 93, 186, 10.75, 0, 0, 2, 10.75 }, + /*124*/ { BARCODE_CEPNET, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678", "", 0, 5.375, 2, 93, 226, 17.15, 20, 3.2, 2, 10.75 }, + /*125*/ { BARCODE_PDF417, -1, -1, -1, -1, "1234", "", 0, 18, 6, 103, 206, 36, 0, 0, 16, 36 }, + /*126*/ { BARCODE_PDF417, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 18, 6, 103, 214, 44, 4, 4, 16, 36 }, + /*127*/ { BARCODE_PDF417COMP, -1, -1, -1, -1, "1234", "", 0, 18, 6, 69, 138, 36, 0, 0, 16, 36 }, + /*128*/ { BARCODE_PDF417COMP, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 18, 6, 69, 146, 44, 4, 4, 16, 36 }, + /*129*/ { BARCODE_MAXICODE, -1, -1, -1, -1, "1234", "", 0, 165, 33, 30, 60, 57.733398, 29, 28.866699, 16.430941, 0 }, + /*130*/ { BARCODE_MAXICODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 165, 33, 30, 64, 61.733398, 31, 30.866699, 16.430941, 0 }, + /*131*/ { BARCODE_QRCODE, -1, -1, -1, -1, "1234", "", 0, 21, 21, 21, 42, 42, 0, 0, 14, 2 }, + /*132*/ { BARCODE_QRCODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 21, 21, 58, 58, 8, 8, 14, 2 }, + /*133*/ { BARCODE_CODE128AB, -1, -1, -1, -1, "1234", "", 0, 50, 1, 79, 158, 118.9, 0, 0, 4, 100 }, + /*134*/ { BARCODE_CODE128AB, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 79, 198, 118.9, 20, 0, 4, 100 }, + /*135*/ { BARCODE_AUSPOST, -1, -1, -1, -1, "12345678", "", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, + /*136*/ { BARCODE_AUSPOST, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678", "", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, + /*137*/ { BARCODE_AUSREPLY, -1, -1, -1, -1, "1234", "", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, + /*138*/ { BARCODE_AUSREPLY, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, + /*139*/ { BARCODE_AUSROUTE, -1, -1, -1, -1, "1234", "", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, + /*140*/ { BARCODE_AUSROUTE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, + /*141*/ { BARCODE_AUSREDIRECT, -1, -1, -1, -1, "1234", "", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, + /*142*/ { BARCODE_AUSREDIRECT, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, + /*143*/ { BARCODE_ISBNX, -1, -1, -1, -1, "123456789X", "", 0, 50, 1, 95, 226, 118, 22, 0, 2, 110 }, + /*144*/ { BARCODE_ISBNX, BARCODE_QUIET_ZONES, -1, -1, -1, "123456789X", "", 0, 50, 1, 95, 226, 118, 22, 0, 2, 110 }, + /*145*/ { BARCODE_ISBNX, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "123456789X", "", 0, 50, 1, 95, 212, 118, 22, 0, 2, 110 }, + /*146*/ { BARCODE_RM4SCC, -1, -1, -1, -1, "1234", "", 0, 8, 3, 43, 86, 16, 0, 0, 2, 10 }, + /*147*/ { BARCODE_RM4SCC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 43, 98.283463, 28.283464, 6.1417322, 6.1417322, 2, 10 }, + /*148*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, "1234", "", 0, 10, 10, 10, 20, 20, 0, 0, 2, 2 }, + /*149*/ { BARCODE_DATAMATRIX, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 10, 10, 10, 24, 24, 2, 2, 2, 2 }, + /*150*/ { BARCODE_EAN14, -1, -1, -1, -1, "1234", "", 0, 50, 1, 134, 268, 118.9, 0, 0, 4, 100 }, + /*151*/ { BARCODE_EAN14, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 134, 308, 118.9, 20, 0, 4, 100 }, + /*152*/ { BARCODE_VIN, -1, -1, -1, -1, "12345678701234567", "", 0, 50, 1, 246, 492, 118.9, 0, 0, 2, 100 }, + /*153*/ { BARCODE_VIN, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678701234567", "", 0, 50, 1, 246, 532, 118.9, 20, 0, 2, 100 }, + /*154*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 }, + /*155*/ { BARCODE_CODABLOCKF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 }, + /*156*/ { BARCODE_CODABLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 202, 44, 0, 2, 4, 40 }, + /*157*/ { BARCODE_NVE18, -1, -1, -1, -1, "1234", "", 0, 50, 1, 156, 312, 118.9, 0, 0, 4, 100 }, + /*158*/ { BARCODE_NVE18, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 156, 352, 118.9, 20, 0, 4, 100 }, + /*159*/ { BARCODE_JAPANPOST, -1, -1, -1, -1, "1234", "", 0, 8, 3, 133, 266, 16, 0, 0, 2, 16 }, + /*160*/ { BARCODE_JAPANPOST, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 133, 279.33334, 29.333332, 6.6666665, 6.6666665, 2, 16 }, + /*161*/ { BARCODE_KOREAPOST, -1, -1, -1, -1, "1234", "", 0, 50, 1, 167, 334, 118.9, 8, 0, 2, 100 }, + /*162*/ { BARCODE_KOREAPOST, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 167, 374, 118.9, 28, 0, 2, 100 }, + /*163*/ { BARCODE_DBAR_STK, -1, -1, -1, -1, "1234", "", 0, 13, 3, 50, 100, 26, 2, 0, 2, 10 }, + /*164*/ { BARCODE_DBAR_STK, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 13, 3, 50, 100, 26, 2, 0, 2, 10 }, + /*165*/ { BARCODE_DBAR_STK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 13, 3, 50, 100, 26, 2, 0, 2, 10 }, + /*166*/ { BARCODE_DBAR_OMNSTK, -1, -1, -1, -1, "1234", "", 0, 69, 5, 50, 100, 138, 2, 0, 2, 66 }, + /*167*/ { BARCODE_DBAR_OMNSTK, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 69, 5, 50, 100, 138, 2, 0, 2, 66 }, + /*168*/ { BARCODE_DBAR_OMNSTK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 69, 5, 50, 100, 138, 2, 0, 2, 66 }, + /*169*/ { BARCODE_DBAR_EXPSTK, -1, -1, -1, -1, "[20]12", "", 0, 34, 1, 102, 204, 68, 2, 0, 2, 68 }, + /*170*/ { BARCODE_DBAR_EXPSTK, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]12", "", 0, 34, 1, 102, 204, 68, 2, 0, 2, 68 }, + /*171*/ { BARCODE_DBAR_EXPSTK, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "[20]12", "", 0, 34, 1, 102, 204, 68, 2, 0, 2, 68 }, + /*172*/ { BARCODE_PLANET, -1, -1, -1, -1, "12345678901", "", 0, 12, 2, 123, 246, 24, 0, 0, 2, 24 }, + /*173*/ { BARCODE_PLANET, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678901", "", 0, 12, 2, 123, 266, 30.4, 10, 3.2, 2, 24 }, + /*174*/ { BARCODE_MICROPDF417, -1, -1, -1, -1, "1234", "", 0, 22, 11, 38, 76, 44, 0, 0, 4, 4 }, + /*175*/ { BARCODE_MICROPDF417, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 22, 11, 38, 80, 48, 2, 2, 4, 4 }, + /*176*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, "12345678901234567890", "", 0, 8, 3, 129, 258, 16, 0, 0, 2, 10 }, + /*177*/ { BARCODE_USPS_IMAIL, BARCODE_QUIET_ZONES, -1, -1, -1, "12345678901234567890", "", 0, 8, 3, 129, 277.5, 20.056, 9.75, 2.0280001, 2, 10 }, + /*178*/ { BARCODE_PLESSEY, -1, -1, -1, -1, "1234", "", 0, 50, 1, 131, 262, 118.9, 0, 0, 6, 100 }, + /*179*/ { BARCODE_PLESSEY, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 131, 310, 118.9, 24, 0, 6, 100 }, + /*180*/ { BARCODE_TELEPEN_NUM, -1, -1, -1, -1, "1234", "", 0, 50, 1, 80, 160, 118.9, 0, 0, 2, 100 }, + /*181*/ { BARCODE_TELEPEN_NUM, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 80, 200, 118.9, 20, 0, 2, 100 }, + /*182*/ { BARCODE_ITF14, -1, -1, -1, -1, "1234", "", 0, 50, 1, 135, 330, 138.89999, 30, 10, 2, 100 }, + /*183*/ { BARCODE_ITF14, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 135, 330, 138.89999, 30, 10, 2, 100 }, + /*184*/ { BARCODE_ITF14, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 135, 290, 138.89999, 10, 10, 2, 100 }, + /*185*/ { BARCODE_KIX, -1, -1, -1, -1, "1234", "", 0, 8, 3, 31, 62, 16, 8, 0, 2, 10 }, + /*186*/ { BARCODE_KIX, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 8, 3, 31, 74.283463, 28.283464, 14.141732, 6.1417322, 2, 10 }, + /*187*/ { BARCODE_AZTEC, -1, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 6, 0, 6, 2 }, + /*188*/ { BARCODE_AZTEC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 6, 0, 6, 2 }, + /*189*/ { BARCODE_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 6, 0, 6, 2 }, + /*190*/ { BARCODE_DAFT, -1, -1, -1, -1, "FADT", "", 0, 8, 3, 7, 14, 16, 0, 0, 2, 16 }, + /*191*/ { BARCODE_DAFT, BARCODE_QUIET_ZONES, -1, -1, -1, "FADT", "", 0, 8, 3, 7, 14, 16, 0, 0, 2, 16 }, + /*192*/ { BARCODE_DAFT, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "FADT", "", 0, 8, 3, 7, 14, 16, 0, 0, 2, 16 }, + /*193*/ { BARCODE_DPD, -1, -1, -1, -1, "1234567890123456789012345678", "", 0, 50, 1, 189, 378, 130.89999, 0, 6, 4, 100 }, + /*194*/ { BARCODE_DPD, BARCODE_QUIET_ZONES, -1, -1, -1, "1234567890123456789012345678", "", 0, 50, 1, 189, 428, 130.89999, 25, 6, 4, 100 }, + /*195*/ { BARCODE_MICROQR, -1, -1, -1, -1, "1234", "", 0, 11, 11, 11, 22, 22, 0, 0, 14, 2 }, + /*196*/ { BARCODE_MICROQR, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 11, 11, 11, 30, 30, 4, 4, 14, 2 }, + /*197*/ { BARCODE_HIBC_128, -1, -1, -1, -1, "1234", "", 0, 50, 1, 90, 180, 118.9, 0, 0, 4, 100 }, + /*198*/ { BARCODE_HIBC_128, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 90, 220, 118.9, 20, 0, 4, 100 }, + /*199*/ { BARCODE_HIBC_39, -1, -1, -1, -1, "1234", "", 0, 50, 1, 127, 254, 118.9, 0, 0, 2, 100 }, + /*200*/ { BARCODE_HIBC_39, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 127, 294, 118.9, 20, 0, 2, 100 }, + /*201*/ { BARCODE_HIBC_DM, -1, -1, -1, -1, "1234", "", 0, 12, 12, 12, 24, 24, 0, 0, 2, 2 }, + /*202*/ { BARCODE_HIBC_DM, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 12, 12, 12, 28, 28, 2, 2, 2, 2 }, + /*203*/ { BARCODE_HIBC_QR, -1, -1, -1, -1, "1234", "", 0, 21, 21, 21, 42, 42, 0, 0, 14, 2 }, + /*204*/ { BARCODE_HIBC_QR, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 21, 21, 58, 58, 8, 8, 14, 2 }, + /*205*/ { BARCODE_HIBC_PDF, -1, -1, -1, -1, "1234", "", 0, 21, 7, 103, 206, 42, 0, 0, 16, 42 }, + /*206*/ { BARCODE_HIBC_PDF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 7, 103, 214, 50, 4, 4, 16, 42 }, + /*207*/ { BARCODE_HIBC_MICPDF, -1, -1, -1, -1, "1234", "", 0, 12, 6, 82, 164, 24, 0, 0, 4, 4 }, + /*208*/ { BARCODE_HIBC_MICPDF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 12, 6, 82, 168, 28, 2, 2, 4, 4 }, + /*209*/ { BARCODE_HIBC_BLOCKF, -1, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 }, + /*210*/ { BARCODE_HIBC_BLOCKF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 }, + /*211*/ { BARCODE_HIBC_BLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 202, 44, 0, 2, 4, 40 }, + /*212*/ { BARCODE_HIBC_AZTEC, -1, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 }, + /*213*/ { BARCODE_HIBC_AZTEC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 }, + /*214*/ { BARCODE_HIBC_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 }, + /*215*/ { BARCODE_DOTCODE, -1, -1, -1, -1, "1234", "", 0, 10, 10, 13, 26, 20, 5, 1, 1.6, 0 }, + /*216*/ { BARCODE_DOTCODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 10, 10, 13, 38, 32, 11, 7, 1.6, 0 }, + /*217*/ { BARCODE_HANXIN, -1, -1, -1, -1, "1234", "", 0, 23, 23, 23, 46, 46, 0, 0, 14, 2 }, + /*218*/ { BARCODE_HANXIN, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 23, 23, 23, 58, 58, 6, 6, 14, 2 }, + /*219*/ { BARCODE_MAILMARK_2D, -1, -1, -1, -1, "012100123412345678AB19XY1A 0", "", 0, 24, 24, 24, 48, 48, 0, 0, 2, 2 }, + /*220*/ { BARCODE_MAILMARK_2D, BARCODE_QUIET_ZONES, -1, -1, -1, "012100123412345678AB19XY1A 0", "", 0, 24, 24, 24, 64, 64, 8, 8, 2, 2 }, + /*221*/ { BARCODE_UPU_S10, -1, -1, -1, -1, "EE876543216CA", "", 0, 50, 1, 156, 312, 118.9, 0, 0, 4, 100 }, + /*222*/ { BARCODE_UPU_S10, BARCODE_QUIET_ZONES, -1, -1, -1, "EE876543216CA", "", 0, 50, 1, 156, 352, 118.9, 20, 0, 4, 100 }, + /*223*/ { BARCODE_MAILMARK_4S, -1, -1, -1, -1, "01000000000000000AA00AA0A", "", 0, 10, 3, 155, 310, 20, 0, 0, 2, 20 }, + /*224*/ { BARCODE_MAILMARK_4S, BARCODE_QUIET_ZONES, -1, -1, -1, "01000000000000000AA00AA0A", "", 0, 10, 3, 155, 322.28348, 32.283463, 6.1417322, 6.1417322, 2, 20 }, + /*225*/ { BARCODE_AZRUNE, -1, -1, -1, -1, "123", "", 0, 11, 11, 11, 22, 22, 0, 0, 8, 2 }, + /*226*/ { BARCODE_AZRUNE, BARCODE_QUIET_ZONES, -1, -1, -1, "123", "", 0, 11, 11, 11, 22, 22, 0, 0, 8, 2 }, + /*227*/ { BARCODE_AZRUNE, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "123", "", 0, 11, 11, 11, 22, 22, 0, 0, 8, 2 }, + /*228*/ { BARCODE_CODE32, -1, -1, -1, -1, "1234", "", 0, 50, 1, 103, 206, 118.9, 0, 0, 2, 100 }, + /*229*/ { BARCODE_CODE32, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 103, 246, 118.9, 20, 0, 2, 100 }, + /*230*/ { BARCODE_EANX_CC, -1, -1, -1, -1, "023456789012", "", 0, 50, 7, 99, 226, 118, 26, 24, 2, 86 }, + /*231*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "023456789012", "", 0, 50, 7, 99, 226, 118, 26, 24, 2, 86 }, + /*232*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "023456789012", "", 0, 50, 7, 99, 214, 118, 26, 24, 2, 86 }, + /*233*/ { BARCODE_EANX_CC, -1, -1, -1, 0, "023456789012", "", 0, 50, 7, 99, 226, 110, 26, 24, 2, 86 }, /* Hide text */ + /*234*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, -1, 0, "023456789012", "", 0, 50, 7, 99, 226, 110, 26, 24, 2, 86 }, /* Hide text */ + /*235*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "023456789012", "", 0, 50, 7, 99, 198, 110, 10, 24, 2, 86 }, /* Hide text */ + /*236*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, "[20]02", "", 0, 50, 5, 99, 198, 118.9, 24, 14, 4, 86 }, /* CC-A */ + /*237*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]02", "", 0, 50, 5, 99, 204, 118.9, 26, 14, 4, 86 }, + /*238*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, "[91]1", "", 0, 50, 5, 100, 200, 118.9, 20, 14, 4, 86 }, /* CC-A */ + /*239*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[91]1", "", 0, 50, 5, 100, 222, 118.9, 22, 14, 4, 86 }, + /*240*/ { BARCODE_GS1_128_CC, -1, 2, -1, -1, "[91]1", "", 0, 50, 6, 100, 200, 118.9, 20, 18, 4, 82 }, /* CC-B */ + /*241*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "[91]1", "", 0, 50, 6, 100, 222, 118.9, 22, 18, 4, 82 }, + /*242*/ { BARCODE_GS1_128_CC, -1, 3, -1, -1, "[20]02", "", 0, 50, 15, 86, 172, 118.9, 14, 80, 4, 20 }, /* CC-C */ + /*243*/ { BARCODE_GS1_128_CC, BARCODE_QUIET_ZONES, 3, -1, -1, "[20]02", "", 0, 50, 15, 86, 198, 118.9, 20, 80, 4, 20 }, + /*244*/ { BARCODE_DBAR_OMN_CC, -1, -1, -1, -1, "1234", "", 0, 21, 5, 100, 200, 60.900002, 10, 14, 2, 28 }, /* CC-A */ + /*245*/ { BARCODE_DBAR_OMN_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 21, 5, 100, 202, 60.900002, 12, 14, 2, 28 }, + /*246*/ { BARCODE_DBAR_OMN_CC, -1, 2, -1, -1, "1234", "", 0, 23, 6, 100, 200, 64.900002, 10, 18, 2, 28 }, /* CC-B */ + /*247*/ { BARCODE_DBAR_OMN_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 23, 6, 100, 202, 64.900002, 12, 18, 2, 28 }, + /*248*/ { BARCODE_DBAR_LTD_CC, -1, -1, -1, -1, "1234", "", 0, 19, 6, 79, 158, 56.900002, 2, 18, 2, 20 }, /* CC-A */ + /*249*/ { BARCODE_DBAR_LTD_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 19, 6, 79, 158, 56.900002, 2, 18, 2, 20 }, /* Same */ + /*250*/ { BARCODE_DBAR_LTD_CC, -1, 2, -1, -1, "1234", "", 0, 23, 8, 88, 176, 64.900002, 20, 26, 2, 20 }, /* CC-B */ + /*251*/ { BARCODE_DBAR_LTD_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 23, 8, 88, 178, 64.900002, 22, 26, 2, 20 }, + /*252*/ { BARCODE_DBAR_EXP_CC, -1, -1, -1, -1, "[20]12", "", 0, 41, 5, 102, 204, 100.9, 2, 14, 2, 68 }, /* CC-A */ + /*253*/ { BARCODE_DBAR_EXP_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]12", "", 0, 41, 5, 102, 204, 100.9, 2, 14, 2, 68 }, /* Same */ + /*254*/ { BARCODE_DBAR_EXP_CC, -1, 2, -1, -1, "[20]12", "", 0, 43, 6, 102, 204, 104.9, 2, 18, 2, 68 }, /* CC-B */ + /*255*/ { BARCODE_DBAR_EXP_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "[20]12", "", 0, 43, 6, 102, 204, 104.9, 2, 18, 2, 68 }, /* Same */ + /*256*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, "01457137763", "", 0, 50, 7, 99, 226, 118, 18, 20, 2, 90 }, + /*257*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "01457137763", "", 0, 50, 7, 99, 226, 118, 18, 20, 2, 90 }, + /*258*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "01457137763", "", 0, 50, 7, 99, 226, 118, 18, 20, 2, 90 }, + /*259*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, "01457137763", "", 0, 50, 7, 99, 226, 110, 18, 20, 2, 90 }, /* Hide text */ + /*260*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, -1, 0, "01457137763", "", 0, 50, 7, 99, 226, 110, 18, 20, 2, 90 }, /* Hide text */ + /*261*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "01457137763", "", 0, 50, 7, 99, 198, 110, 6, 20, 2, 90 }, /* Hide text */ + /*262*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, "8145713", "", 0, 50, 9, 55, 134, 118, 18, 28, 2, 82 }, + /*263*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "8145713", "", 0, 50, 9, 55, 134, 118, 18, 28, 2, 82 }, + /*264*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "8145713", "", 0, 50, 9, 55, 134, 118, 18, 28, 2, 82 }, + /*265*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, "8145713", "", 0, 50, 9, 55, 134, 110, 18, 28, 2, 82 }, /* Hide text */ + /*266*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, -1, 0, "8145713", "", 0, 50, 9, 55, 134, 110, 18, 28, 2, 82 }, /* Hide text */ + /*267*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, -1, 0, "8145713", "", 0, 50, 9, 55, 110, 110, 6, 28, 2, 82 }, /* Hide text */ + /*268*/ { BARCODE_DBAR_STK_CC, -1, -1, -1, -1, "1234", "", 0, 24, 9, 56, 112, 48, 0, 34, 2, 14 }, /* CC-A */ + /*269*/ { BARCODE_DBAR_STK_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 24, 9, 56, 114, 48, 0, 34, 2, 14 }, + /*270*/ { BARCODE_DBAR_STK_CC, -1, 2, -1, -1, "1234", "", 0, 30, 12, 56, 112, 60, 0, 46, 2, 14 }, /* CC-B */ + /*271*/ { BARCODE_DBAR_STK_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 30, 12, 56, 114, 60, 0, 46, 2, 14 }, + /*272*/ { BARCODE_DBAR_OMNSTK_CC, -1, -1, -1, -1, "1234", "", 0, 80, 11, 56, 112, 160, 0, 94, 2, 66 }, /* CC-A */ + /*273*/ { BARCODE_DBAR_OMNSTK_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 80, 11, 56, 114, 160, 0, 94, 2, 66 }, + /*274*/ { BARCODE_DBAR_OMNSTK_CC, -1, 2, -1, -1, "1234", "", 0, 86, 14, 56, 112, 172, 0, 106, 2, 66 }, /* CC-B */ + /*275*/ { BARCODE_DBAR_OMNSTK_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "1234", "", 0, 86, 14, 56, 114, 172, 0, 106, 2, 66 }, + /*276*/ { BARCODE_DBAR_EXPSTK_CC, -1, -1, -1, -1, "[20]12", "", 0, 41, 5, 102, 204, 82, 2, 14, 2, 68 }, /* CC-A */ + /*277*/ { BARCODE_DBAR_EXPSTK_CC, BARCODE_QUIET_ZONES, -1, -1, -1, "[20]12", "", 0, 41, 5, 102, 204, 82, 2, 14, 2, 68 }, /* Same */ + /*278*/ { BARCODE_DBAR_EXPSTK_CC, -1, 2, -1, -1, "[20]12", "", 0, 43, 6, 102, 204, 86, 2, 18, 2, 68 }, /* CC-B */ + /*279*/ { BARCODE_DBAR_EXPSTK_CC, BARCODE_QUIET_ZONES, 2, -1, -1, "[20]12", "", 0, 43, 6, 102, 204, 86, 2, 18, 2, 68 }, /* Same */ + /*280*/ { BARCODE_CHANNEL, -1, -1, -1, -1, "1234", "", 0, 50, 1, 27, 54, 118.9, 0, 0, 2, 100 }, + /*281*/ { BARCODE_CHANNEL, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 50, 1, 27, 60, 118.9, 2, 0, 2, 100 }, + /*282*/ { BARCODE_CODEONE, -1, -1, -1, -1, "1234", "", 0, 16, 16, 18, 36, 32, 0, 0, 2, 2 }, /* Versions A to H - no quiet zone */ + /*283*/ { BARCODE_CODEONE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 16, 16, 18, 36, 32, 0, 0, 2, 2 }, + /*284*/ { BARCODE_CODEONE, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 16, 16, 18, 36, 32, 0, 0, 2, 2 }, + /*285*/ { BARCODE_CODEONE, -1, -1, 9, -1, "1234", "", 0, 8, 8, 11, 22, 16, 10, 0, 2, 2 }, /* Version S (& T) have quiet zones */ + /*286*/ { BARCODE_CODEONE, BARCODE_QUIET_ZONES, -1, 9, -1, "1234", "", 0, 8, 8, 11, 26, 16, 12, 0, 2, 2 }, + /*287*/ { BARCODE_GRIDMATRIX, -1, -1, -1, -1, "123", "", 0, 18, 18, 18, 36, 36, 0, 0, 12, 2 }, + /*288*/ { BARCODE_GRIDMATRIX, BARCODE_QUIET_ZONES, -1, -1, -1, "123", "", 0, 18, 18, 18, 60, 60, 12, 12, 12, 2 }, + /*289*/ { BARCODE_UPNQR, -1, -1, -1, -1, "1234", "", 0, 77, 77, 77, 154, 154, 0, 0, 14, 2 }, + /*290*/ { BARCODE_UPNQR, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 77, 77, 77, 170, 170, 8, 8, 14, 2 }, + /*291*/ { BARCODE_ULTRA, -1, -1, -1, -1, "1234", "", 0, 13, 13, 15, 30, 26, 0, 0, 30, 2 }, + /*292*/ { BARCODE_ULTRA, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 13, 13, 15, 34, 30, 2, 2, 30, 2 }, + /*293*/ { BARCODE_RMQR, -1, -1, -1, -1, "1234", "", 0, 11, 11, 27, 54, 22, 0, 0, 14, 2 }, + /*294*/ { BARCODE_RMQR, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 11, 11, 27, 62, 30, 4, 4, 14, 2 }, + /*295*/ { BARCODE_BC412, -1, -1, -1, -1, "1234567", "", 0, 16.666668, 1, 102, 204, 52.233337, 0, 0, 2, 33.333336 }, + /*296*/ { BARCODE_BC412, BARCODE_QUIET_ZONES, -1, -1, -1, "1234567", "", 0, 16.666668, 1, 102, 244, 52.233337, 20, 0, 2, 33.333336 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; const char *text; static const char composite[] = "[20]12"; @@ -1955,7 +2018,7 @@ static void test_quiet_zones(const testCtx *const p_ctx) { struct zint_vector_rect *rect; struct zint_vector_circle *circle; - testStart("test_quiet_zones"); + testStartSymbol("test_quiet_zones", &symbol); for (i = 0; i < data_size; i++) { @@ -1964,13 +2027,13 @@ static void test_quiet_zones(const testCtx *const p_ctx) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug); if (data[i].show_hrt != -1) { symbol->show_hrt = data[i].show_hrt; } if (is_composite(symbol->symbology)) { - text = composite; + text = *(data[i].composite) ? data[i].composite : composite; length = (int) strlen(text); assert_nonzero(strlen(data[i].data) < 128, "i:%d linear data length %d >= 128\n", i, (int) strlen(data[i].data)); strcpy(symbol->primary, data[i].data); @@ -1988,8 +2051,7 @@ static void test_quiet_zones(const testCtx *const p_ctx) { assert_nonnull(symbol->vector, "i:%d ZBarcode_Buffer_Vector(%d) vector NULL\n", i, data[i].symbology); if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { /* ZINT_DEBUG_TEST_PRINT 16 */ - sprintf(symbol->outfile, "test_quiet_zones_%d.svg", i); - ZBarcode_Print(symbol, 0); + testUtilVectorPrint(symbol); } assert_equal(symbol->height, data[i].expected_height, "i:%d (%d) symbol->height %.8g != %.8g\n", i, data[i].symbology, symbol->height, data[i].expected_height); @@ -2052,10 +2114,10 @@ static void test_text_gap(const testCtx *const p_ctx) { /* 5*/ { BARCODE_CODE11, -1, -1, -1, 0.5, 0, "1234", "", 0, 50, 1, 62, 124, 118.5, 62.0, 113.6, -1, -1 }, /* 6*/ { BARCODE_CODE11, -1, -1, -1, 0.6, 0, "1234", "", 0, 50, 1, 62, 124, 118.7, 62.0, 113.799995, -1, -1 }, /* 7*/ { BARCODE_CODE11, -1, -1, -1, 0.7, 0, "1234", "", 0, 50, 1, 62, 124, 118.9, 62.0, 114, -1, -1 }, - /* 8*/ { BARCODE_CODE11, -1, -1, -1, 0.75, 0, "1234", "", 0, 50, 1, 62, 124, 119, 62.0, 114.1, -1, -1 }, /* Same as default */ + /* 8*/ { BARCODE_CODE11, -1, -1, -1, 0.75, 0, "1234", "", 0, 50, 1, 62, 124, 119, 62.0, 114.1, -1, -1 }, /* 9*/ { BARCODE_CODE11, -1, -1, -1, 0.8, 0, "1234", "", 0, 50, 1, 62, 124, 119.1, 62.0, 114.2, -1, -1 }, /* 10*/ { BARCODE_CODE11, -1, -1, -1, 0.9, 0, "1234", "", 0, 50, 1, 62, 124, 119.3, 62.0, 114.4, -1, -1 }, - /* 11*/ { BARCODE_CODE11, -1, -1, -1, 1.0, 0, "1234", "", 0, 50, 1, 62, 124, 119.5, 62.0, 114.6, -1, -1 }, + /* 11*/ { BARCODE_CODE11, -1, -1, -1, 1.0, 0, "1234", "", 0, 50, 1, 62, 124, 119.5, 62.0, 114.6, -1, -1 }, /* Same as default */ /* 12*/ { BARCODE_CODE11, -1, -1, -1, 1.1, 0, "1234", "", 0, 50, 1, 62, 124, 119.7, 62.0, 114.799995, -1, -1 }, /* 13*/ { BARCODE_CODE11, -1, -1, -1, 1.5, 0, "1234", "", 0, 50, 1, 62, 124, 120.5, 62.0, 115.6, -1, -1 }, /* 14*/ { BARCODE_CODE11, -1, -1, -1, 2.0, 0, "1234", "", 0, 50, 1, 62, 124, 121.5, 62.0, 116.6, -1, -1 }, @@ -2064,39 +2126,42 @@ static void test_text_gap(const testCtx *const p_ctx) { /* 17*/ { BARCODE_CODE11, -1, -1, -1, 5.0, 0, "1234", "", 0, 50, 1, 62, 124, 127.5, 62.0, 122.6, -1, -1 }, /* 18*/ { BARCODE_CODE11, -1, -1, -1, 0, 3.0, "1234", "", 0, 50, 1, 62, 372, 356.7, 186.0, 342.0, -1, -1 }, /* Scale default */ /* 19*/ { BARCODE_CODE11, -1, -1, -1, 0.1, 3.0, "1234", "", 0, 50, 1, 62, 372, 353.09998, 186.0, 338.4, -1, -1 }, /* Scale */ - /* 20*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.9, 74.0, 116.1, -1, -1 }, /* Default */ - /* 21*/ { BARCODE_UPCA, -1, -1, -1, 0.1, 0, "01457130763", "", 0, 50, 1, 95, 226, 115.6, 74.0, 114.799995, -1, -1 }, - /* 22*/ { BARCODE_UPCA, -1, -1, -1, 0.6, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.6, 74.0, 115.799995, -1, -1 }, - /* 23*/ { BARCODE_UPCA, -1, -1, -1, 0.7, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.8, 74.0, 116, -1, -1 }, - /* 24*/ { BARCODE_UPCA, -1, -1, -1, 0.75, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.9, 74.0, 116.1, -1, -1 }, /* Same as default */ - /* 25*/ { BARCODE_UPCA, -1, -1, -1, 0.8, 0, "01457130763", "", 0, 50, 1, 95, 226, 117, 74.0, 116.2, -1, -1 }, - /* 26*/ { BARCODE_UPCA, -1, -1, -1, 1.6, 0, "01457130763", "", 0, 50, 1, 95, 226, 118.6, 74.0, 117.799995, -1, -1 }, - /* 27*/ { BARCODE_UPCA, -1, -1, -1, 1.6, 2.5, "01457130763", "", 0, 50, 1, 95, 565, 296.5, 185.0, 294.5, -1, -1 }, /* Scale */ - /* 28*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116.9, 74.0, 116.1, -1, -1 }, /* Default */ - /* 29*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116.9, 230.0, 16.9, 4.0, 83.1 }, /* Default */ - /* 30*/ { BARCODE_UPCA, -1, -1, -1, 0.1, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 115.6, 230.0, 15.5999994, 4.0, 84.4 }, - /* 31*/ { BARCODE_UPCA, -1, -1, -1, 0.75, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116.9, 230.0, 16.9, 4.0, 83.1 }, /* Same as default */ - /* 32*/ { BARCODE_UPCA, -1, -1, -1, 0.9, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 117.2, 230.0, 17.1999989, 4.0, 82.8 }, - /* 33*/ { BARCODE_UPCA, -1, -1, -1, 4.2, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 123.8, 230.0, 23.8, 4.0, 76.2 }, - /* 34*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116.9, 80.0, 116.1, -1, -1 }, /* Default */ - /* 35*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.1, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 115.6, 80.0, 114.799995, -1, -1 }, - /* 36*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116.9, 236.0, 40.9, 4.0, 59.1 }, /* Default */ - /* 37*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.1, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 115.6, 236.0, 39.6000023, 4.0, 60.3999977 }, - /* 38*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.75, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116.9, 236.0, 40.9, 4.0, 59.1 }, /* Same as default */ - /* 39*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.5, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 118.4, 236.0, 42.4, 4.0, 57.6 }, - /* 40*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 236.0, 40.9, 4.0, 59.1 }, /* Hide text default */ - /* 41*/ { BARCODE_UPCA_CC, -1, -1, 0, 1.5, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 236.0, 42.4, 4.0, 57.6 }, /* Hide text */ + /* 20*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763", "", 0, 50, 1, 95, 226, 118, 74.0, 117.2, -1, -1 }, /* Default */ + /* 21*/ { BARCODE_UPCA, -1, -1, -1, 0.1, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.2, 74.0, 115.4, -1, -1 }, + /* 22*/ { BARCODE_UPCA, -1, -1, -1, 0.6, 0, "01457130763", "", 0, 50, 1, 95, 226, 117.2, 74.0, 116.4, -1, -1 }, + /* 23*/ { BARCODE_UPCA, -1, -1, -1, 0.7, 0, "01457130763", "", 0, 50, 1, 95, 226, 117.4, 74.0, 116.6, -1, -1 }, + /* 24*/ { BARCODE_UPCA, -1, -1, -1, 0.75, 0, "01457130763", "", 0, 50, 1, 95, 226, 117.5, 74.0, 116.7, -1, -1 }, + /* 25*/ { BARCODE_UPCA, -1, -1, -1, 0.8, 0, "01457130763", "", 0, 50, 1, 95, 226, 117.6, 74.0, 116.8, -1, -1 }, + /* 26*/ { BARCODE_UPCA, -1, -1, -1, 1.0, 0, "01457130763", "", 0, 50, 1, 95, 226, 118, 74.0, 117.2, -1, -1 }, /* Same as default */ + /* 27*/ { BARCODE_UPCA, -1, -1, -1, 1.6, 0, "01457130763", "", 0, 50, 1, 95, 226, 119.2, 74.0, 118.4, -1, -1 }, + /* 28*/ { BARCODE_UPCA, -1, -1, -1, 1.6, 2.5, "01457130763", "", 0, 50, 1, 95, 565, 298, 185.0, 296.0, -1, -1 }, /* Scale */ + /* 29*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 118, 74.0, 117.2, -1, -1 }, /* Default */ + /* 30*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 118, 230.0, 18, 4.0, 82 }, /* Default */ + /* 31*/ { BARCODE_UPCA, -1, -1, -1, 0.1, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116.2, 230.0, 16.2, 4.0, 83.8 }, + /* 32*/ { BARCODE_UPCA, -1, -1, -1, 0.75, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 117.5, 230.0, 17.5, 4.0, 82.5 }, + /* 33*/ { BARCODE_UPCA, -1, -1, -1, 0.9, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 117.8, 230.0, 17.8, 4.0, 82.2 }, + /* 34*/ { BARCODE_UPCA, -1, -1, -1, 1.0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 118, 74.0, 117.2, -1, -1 }, /* Same as default */ + /* 35*/ { BARCODE_UPCA, -1, -1, -1, 4.2, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 124.4, 230.0, 24.4, 4.0, 75.6 }, + /* 36*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 118, 74.0, 117.2, -1, -1 }, /* Default */ + /* 37*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.1, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 116.2, 74.0, 115.4, -1, -1 }, + /* 38*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 118, 236.0, 42, 4.0, 58 }, /* Default */ + /* 39*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.1, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 116.2, 236.0, 40.2, 4.0, 59.8 }, + /* 40*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.75, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 117.5, 236.0, 41.5, 4.0, 58.5 }, + /* 41*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 118, 236.0, 42, 4.0, 58 }, /* Same as default */ + /* 42*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.5, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 119.0, 236.0, 43.0, 4.0, 57.0 }, + /* 43*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 110, 236.0, 42, 4.0, 58 }, /* Hide text default */ + /* 44*/ { BARCODE_UPCA_CC, -1, -1, 0, 1.5, 0, "01457130763+10", "[91]12", 0, 50, 7, 127, 276, 110, 236.0, 43.0, 4.0, 57.0 }, /* Hide text */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; const char *text; struct zint_vector_string *string; struct zint_vector_rect *rect; - testStart("test_text_gap"); + testStartSymbol("test_text_gap", &symbol); for (i = 0; i < data_size; i++) { @@ -2131,8 +2196,7 @@ static void test_text_gap(const testCtx *const p_ctx) { assert_nonnull(symbol->vector, "i:%d ZBarcode_Buffer_Vector(%d) vector NULL\n", i, data[i].symbology); if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { /* ZINT_DEBUG_TEST_PRINT 16 */ - sprintf(symbol->outfile, "test_text_gap_%d.svg", i); - ZBarcode_Print(symbol, 0); + testUtilVectorPrint(symbol); } assert_equal(symbol->height, data[i].expected_height, "i:%d (%d) symbol->height %.8g != %.8g\n", i, data[i].symbology, symbol->height, data[i].expected_height); @@ -2592,36 +2656,36 @@ static void test_height(const testCtx *const p_ctx) { /*408*/ { BARCODE_CODE32, -1, 19, "12345678", "", 0, 19, 1, 103, 206, 38, "" }, /*409*/ { BARCODE_CODE32, COMPLIANT_HEIGHT, 19, "12345678", "", ZINT_WARN_NONCOMPLIANT, 19, 1, 103, 206, 38, "" }, /*410*/ { BARCODE_CODE32, COMPLIANT_HEIGHT, 20, "12345678", "", 0, 20, 1, 103, 206, 40, "" }, - /*411*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01", 0, 50, 7, 99, 234, 110, "EAN-13, CC-A 3 rows" }, - /*412*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01", 0, 12.5, 7, 99, 234, 35, "" }, - /*413*/ { BARCODE_EANX_CC, -1, 81, "123456789012", "[20]01", 0, 81, 7, 99, 234, 172, "" }, - /*414*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 81, "123456789012", "[20]01", ZINT_WARN_NONCOMPLIANT, 81, 7, 99, 234, 172, "" }, - /*415*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 81.25, "123456789012", "[20]01", 0, 81.25, 7, 99, 234, 172.5, "" }, - /*416*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 50, 9, 99, 234, 110, "EAN-13, CC-A 5 rows" }, - /*417*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 16.5, 9, 99, 234, 43, "" }, - /*418*/ { BARCODE_EANX_CC, -1, 85, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 85, 9, 99, 234, 180, "" }, - /*419*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 85, "123456789012", "[20]01[90]123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, 85, 9, 99, 234, 180, "" }, - /*420*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 85.25, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 85.25, 9, 99, 234, 180.5, "" }, - /*421*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 50, 11, 99, 234, 110, "EAN-13, CC-A 7 rows" }, - /*422*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 20.5, 11, 99, 234, 51, "" }, - /*423*/ { BARCODE_EANX_CC, -1, 89, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 89, 11, 99, 234, 188, "" }, - /*424*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 89, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", ZINT_WARN_NONCOMPLIANT, 89, 11, 99, 234, 188, "" }, - /*425*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 89.25, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 89.25, 11, 99, 234, 188.5, "" }, - /*426*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 50, 14, 99, 234, 110, "EAN-13, CC-B 10 rows" }, - /*427*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 26.5, 14, 99, 234, 63, "" }, - /*428*/ { BARCODE_EANX_CC, -1, 95, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 95, 14, 99, 234, 200, "" }, - /*429*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 95, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 95, 14, 99, 234, 200, "" }, - /*430*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 95.25, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 95.25, 14, 99, 234, 200.5, "" }, - /*431*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234", 0, 50, 10, 72, 172, 110, "EAN-8, CC-A 4 rows" }, - /*432*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234", 0, 18.5, 10, 72, 172, 47, "" }, - /*433*/ { BARCODE_EANX_CC, -1, 73, "1234567", "[20]01[90]123456789012345678901234", 0, 73, 10, 72, 172, 156, "" }, - /*434*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 73, "1234567", "[20]01[90]123456789012345678901234", ZINT_WARN_NONCOMPLIANT, 73, 10, 72, 172, 156, "" }, - /*435*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 73.25, "1234567", "[20]01[90]123456789012345678901234", 0, 73.25, 10, 72, 172, 156.5, "" }, - /*436*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 50, 24, 82, 192, 110, "EAN-8, CC-B 15 rows" }, - /*437*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 46.5, 24, 82, 192, 103, "" }, - /*438*/ { BARCODE_EANX_CC, -1, 101, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 101, 24, 82, 192, 212, "" }, - /*439*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 101, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, 101, 24, 82, 192, 212, "" }, - /*440*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 101.25, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 101.25, 24, 82, 192, 212.5, "" }, + /*411*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01", 0, 50, 7, 99, 226, 110, "EAN-13, CC-A 3 rows" }, + /*412*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01", 0, 12.5, 7, 99, 226, 35, "" }, + /*413*/ { BARCODE_EANX_CC, -1, 81, "123456789012", "[20]01", 0, 81, 7, 99, 226, 172, "" }, + /*414*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 81, "123456789012", "[20]01", ZINT_WARN_NONCOMPLIANT, 81, 7, 99, 226, 172, "" }, + /*415*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 81.25, "123456789012", "[20]01", 0, 81.25, 7, 99, 226, 172.5, "" }, + /*416*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 50, 9, 99, 226, 110, "EAN-13, CC-A 5 rows" }, + /*417*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 16.5, 9, 99, 226, 43, "" }, + /*418*/ { BARCODE_EANX_CC, -1, 85, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 85, 9, 99, 226, 180, "" }, + /*419*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 85, "123456789012", "[20]01[90]123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, 85, 9, 99, 226, 180, "" }, + /*420*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 85.25, "123456789012", "[20]01[90]123456789012345678901234567890", 0, 85.25, 9, 99, 226, 180.5, "" }, + /*421*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 50, 11, 99, 226, 110, "EAN-13, CC-A 7 rows" }, + /*422*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 20.5, 11, 99, 226, 51, "" }, + /*423*/ { BARCODE_EANX_CC, -1, 89, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 89, 11, 99, 226, 188, "" }, + /*424*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 89, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", ZINT_WARN_NONCOMPLIANT, 89, 11, 99, 226, 188, "" }, + /*425*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 89.25, "123456789012", "[20]01[90]123456789012345678901234567890[91]1234567890", 0, 89.25, 11, 99, 226, 188.5, "" }, + /*426*/ { BARCODE_EANX_CC, -1, -1, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 50, 14, 99, 226, 110, "EAN-13, CC-B 10 rows" }, + /*427*/ { BARCODE_EANX_CC, -1, 1, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 26.5, 14, 99, 226, 63, "" }, + /*428*/ { BARCODE_EANX_CC, -1, 95, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 95, 14, 99, 226, 200, "" }, + /*429*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 95, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 95, 14, 99, 226, 200, "" }, + /*430*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 95.25, "123456789012", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 95.25, 14, 99, 226, 200.5, "" }, + /*431*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234", 0, 50, 10, 72, 162, 110, "EAN-8, CC-A 4 rows" }, + /*432*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234", 0, 18.5, 10, 72, 162, 47, "" }, + /*433*/ { BARCODE_EANX_CC, -1, 73, "1234567", "[20]01[90]123456789012345678901234", 0, 73, 10, 72, 162, 156, "" }, + /*434*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 73, "1234567", "[20]01[90]123456789012345678901234", ZINT_WARN_NONCOMPLIANT, 73, 10, 72, 162, 156, "" }, + /*435*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 73.25, "1234567", "[20]01[90]123456789012345678901234", 0, 73.25, 10, 72, 162, 156.5, "" }, + /*436*/ { BARCODE_EANX_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 50, 24, 82, 178, 110, "EAN-8, CC-B 15 rows" }, + /*437*/ { BARCODE_EANX_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 46.5, 24, 82, 178, 103, "" }, + /*438*/ { BARCODE_EANX_CC, -1, 101, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 101, 24, 82, 178, 212, "" }, + /*439*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 101, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", ZINT_WARN_NONCOMPLIANT, 101, 24, 82, 178, 212, "" }, + /*440*/ { BARCODE_EANX_CC, COMPLIANT_HEIGHT, 101.25, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567890", 0, 101.25, 24, 82, 178, 212.5, "" }, /*441*/ { BARCODE_GS1_128_CC, -1, -1, "[01]12345678901231", "[20]01", 0, 50, 5, 145, 290, 100, "CC-A 3 rows" }, /*442*/ { BARCODE_GS1_128_CC, -1, 1, "[01]12345678901231", "[20]01", 0, 7.5, 5, 145, 290, 15, "" }, /*443*/ { BARCODE_GS1_128_CC, -1, 12.5, "[01]12345678901231", "[20]01", 0, 12.5, 5, 145, 290, 25, "" }, @@ -2692,41 +2756,41 @@ static void test_height(const testCtx *const p_ctx) { /*508*/ { BARCODE_DBAR_EXP_CC, -1, 54, "[01]12345678901231", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 54, 12, 134, 268, 108, "" }, /*509*/ { BARCODE_DBAR_EXP_CC, COMPLIANT_HEIGHT, 54, "[01]12345678901231", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 54, 12, 134, 268, 108, "" }, /*510*/ { BARCODE_DBAR_EXP_CC, COMPLIANT_HEIGHT, 55, "[01]12345678901231", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 55, 12, 134, 268, 110, "" }, - /*511*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01", 0, 50, 7, 99, 234, 110, "CC-A 3 rows" }, - /*512*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01", 0, 12.5, 7, 99, 234, 35, "" }, - /*513*/ { BARCODE_UPCA_CC, -1, 81.24, "12345678901", "[20]01", 0, 81.239998, 7, 99, 234, 172.48, "" }, - /*514*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 81.24, "12345678901", "[20]01", ZINT_WARN_NONCOMPLIANT, 81.239998, 7, 99, 234, 172.48, "" }, - /*515*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 81.25, "12345678901", "[20]01", 0, 81.25, 7, 99, 234, 172.5, "" }, - /*516*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 50, 10, 99, 234, 110, "CC-A 6 rows" }, - /*517*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 18.5, 10, 99, 234, 47, "" }, - /*518*/ { BARCODE_UPCA_CC, -1, 87.24, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 87.239998, 10, 99, 234, 184.48, "" }, - /*519*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 87.24, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", ZINT_WARN_NONCOMPLIANT, 87.239998, 10, 99, 234, 184.48, "" }, - /*520*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 87.25, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 87.25, 10, 99, 234, 184.5, "" }, - /*521*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 50, 16, 99, 234, 110, "CC-B 12 rows" }, - /*522*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 30.5, 16, 99, 234, 71, "" }, - /*523*/ { BARCODE_UPCA_CC, -1, 99, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 99, 16, 99, 234, 208, "" }, - /*524*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 99, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", ZINT_WARN_NONCOMPLIANT, 99, 16, 99, 234, 208, "" }, - /*525*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 99.25, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 99.25, 16, 99, 234, 208.5, "" }, - /*526*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678", 0, 50, 11, 55, 142, 110, "CC-A 7 rows" }, - /*527*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678", 0, 20.5, 11, 55, 142, 51, "" }, - /*528*/ { BARCODE_UPCE_CC, -1, 89, "1234567", "[20]01[90]123456789012345678", 0, 89, 11, 55, 142, 188, "" }, - /*529*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 89, "1234567", "[20]01[90]123456789012345678", ZINT_WARN_NONCOMPLIANT, 89, 11, 55, 142, 188, "" }, - /*530*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 89.25, "1234567", "[20]01[90]123456789012345678", 0, 89.25, 11, 55, 142, 188.5, "" }, - /*531*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 50, 16, 55, 142, 110, "CC-A 12 rows" }, - /*532*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 30.5, 16, 55, 142, 71, "" }, - /*533*/ { BARCODE_UPCE_CC, -1, 99, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 99, 16, 55, 142, 208, "" }, - /*534*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 99, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", ZINT_WARN_NONCOMPLIANT, 99, 16, 55, 142, 208, "" }, - /*535*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 99.25, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 99.25, 16, 55, 142, 208.5, "" }, - /*536*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 50, 21, 55, 142, 110, "CC-B 17 rows" }, - /*537*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 40.5, 21, 55, 142, 91, "" }, - /*538*/ { BARCODE_UPCE_CC, -1, 109, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 109, 21, 55, 142, 228, "" }, - /*539*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 109, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 109, 21, 55, 142, 228, "" }, - /*540*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 109.25, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 109.25, 21, 55, 142, 228.5, "" }, - /*541*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 52.5, 27, 55, 142, 115, "CC-B 23 rows" }, - /*542*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 52.5, 27, 55, 142, 115, "" }, - /*543*/ { BARCODE_UPCE_CC, -1, 121, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 121, 27, 55, 142, 252, "" }, - /*544*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 121, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", ZINT_WARN_NONCOMPLIANT, 121, 27, 55, 142, 252, "" }, - /*545*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 121.25, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 121.25, 27, 55, 142, 252.5, "" }, + /*511*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01", 0, 50, 7, 99, 226, 110, "CC-A 3 rows" }, + /*512*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01", 0, 12.5, 7, 99, 226, 35, "" }, + /*513*/ { BARCODE_UPCA_CC, -1, 81.24, "12345678901", "[20]01", 0, 81.239998, 7, 99, 226, 172.48, "" }, + /*514*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 81.24, "12345678901", "[20]01", ZINT_WARN_NONCOMPLIANT, 81.239998, 7, 99, 226, 172.48, "" }, + /*515*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 81.25, "12345678901", "[20]01", 0, 81.25, 7, 99, 226, 172.5, "" }, + /*516*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 50, 10, 99, 226, 110, "CC-A 6 rows" }, + /*517*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 18.5, 10, 99, 226, 47, "" }, + /*518*/ { BARCODE_UPCA_CC, -1, 87.24, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 87.239998, 10, 99, 226, 184.48, "" }, + /*519*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 87.24, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", ZINT_WARN_NONCOMPLIANT, 87.239998, 10, 99, 226, 184.48, "" }, + /*520*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 87.25, "12345678901", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 87.25, 10, 99, 226, 184.5, "" }, + /*521*/ { BARCODE_UPCA_CC, -1, -1, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 50, 16, 99, 226, 110, "CC-B 12 rows" }, + /*522*/ { BARCODE_UPCA_CC, -1, 1, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 30.5, 16, 99, 226, 71, "" }, + /*523*/ { BARCODE_UPCA_CC, -1, 99, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 99, 16, 99, 226, 208, "" }, + /*524*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 99, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", ZINT_WARN_NONCOMPLIANT, 99, 16, 99, 226, 208, "" }, + /*525*/ { BARCODE_UPCA_CC, COMPLIANT_HEIGHT, 99.25, "12345678901", "[20]01[90]123456789012345678901234567890[91]123456789012345678912345678901234567", 0, 99.25, 16, 99, 226, 208.5, "" }, + /*526*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678", 0, 50, 11, 55, 134, 110, "CC-A 7 rows" }, + /*527*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678", 0, 20.5, 11, 55, 134, 51, "" }, + /*528*/ { BARCODE_UPCE_CC, -1, 89, "1234567", "[20]01[90]123456789012345678", 0, 89, 11, 55, 134, 188, "" }, + /*529*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 89, "1234567", "[20]01[90]123456789012345678", ZINT_WARN_NONCOMPLIANT, 89, 11, 55, 134, 188, "" }, + /*530*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 89.25, "1234567", "[20]01[90]123456789012345678", 0, 89.25, 11, 55, 134, 188.5, "" }, + /*531*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 50, 16, 55, 134, 110, "CC-A 12 rows" }, + /*532*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 30.5, 16, 55, 134, 71, "" }, + /*533*/ { BARCODE_UPCE_CC, -1, 99, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 99, 16, 55, 134, 208, "" }, + /*534*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 99, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", ZINT_WARN_NONCOMPLIANT, 99, 16, 55, 134, 208, "" }, + /*535*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 99.25, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678", 0, 99.25, 16, 55, 134, 208.5, "" }, + /*536*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 50, 21, 55, 134, 110, "CC-B 17 rows" }, + /*537*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 40.5, 21, 55, 134, 91, "" }, + /*538*/ { BARCODE_UPCE_CC, -1, 109, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 109, 21, 55, 134, 228, "" }, + /*539*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 109, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", ZINT_WARN_NONCOMPLIANT, 109, 21, 55, 134, 228, "" }, + /*540*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 109.25, "1234567", "[20]01[90]123456789012345678901234567890[91]12345678901234567890", 0, 109.25, 21, 55, 134, 228.5, "" }, + /*541*/ { BARCODE_UPCE_CC, -1, -1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 52.5, 27, 55, 134, 115, "CC-B 23 rows" }, + /*542*/ { BARCODE_UPCE_CC, -1, 1, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 52.5, 27, 55, 134, 115, "" }, + /*543*/ { BARCODE_UPCE_CC, -1, 121, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 121, 27, 55, 134, 252, "" }, + /*544*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 121, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", ZINT_WARN_NONCOMPLIANT, 121, 27, 55, 134, 252, "" }, + /*545*/ { BARCODE_UPCE_CC, COMPLIANT_HEIGHT, 121.25, "1234567", "[20]01[90]123456789012345678901234567890[91]1234567890123456789012345678901234567", 0, 121.25, 27, 55, 134, 252.5, "" }, /*546*/ { BARCODE_DBAR_STK_CC, -1, -1, "1234567890123", "[20]01", 0, 24, 9, 56, 112, 48, "CC-A 5 rows" }, /*547*/ { BARCODE_DBAR_STK_CC, -1, 1, "1234567890123", "[20]01", 0, 13.2, 9, 56, 112, 26.4, "" }, /*548*/ { BARCODE_DBAR_STK_CC, -1, 23.9, "1234567890123", "[20]01", 0, 23.9, 9, 56, 112, 47.799999, "" }, @@ -2800,11 +2864,11 @@ static void test_height(const testCtx *const p_ctx) { }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char *text; - testStart("test_height"); + testStartSymbol("test_height", &symbol); for (i = 0; i < data_size; i++) { @@ -2955,19 +3019,19 @@ static void test_height_per_row(const testCtx *const p_ctx) { /* 68*/ { BARCODE_DBAR_OMNSTK, HEIGHTPERROW_MODE, -1, -1, -1, 0.5, -1, "1234567890123", "", 0, 4, 5, 50, 100, 8, "(0.5 * 2 rows + 3 separators) * 2 scale = 8" }, /* 69*/ { BARCODE_DBAR_OMNSTK, HEIGHTPERROW_MODE, -1, -1, -1, 1, -1, "1234567890123", "", 0, 5, 5, 50, 100, 10, "" }, /* 70*/ { BARCODE_DBAR_OMNSTK, HEIGHTPERROW_MODE, -1, -1, -1, 3.2, -1, "1234567890123", "", 0, 9.3999996, 5, 50, 100, 18.799999, "" }, - /* 71*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, "123456789012", "[20]01", 0, 50, 7, 99, 234, 110, "" }, - /* 72*/ { BARCODE_EANX_CC, HEIGHTPERROW_MODE, -1, -1, -1, 0.5, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 234, 35, "(0.5 * 1 row + 2 * 3 seps + 2 * 3 cc rows + 5 guards) * 2 scale = 35" }, - /* 73*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 0.5, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 234, 35, "0.5 height below fixed height" }, - /* 74*/ { BARCODE_EANX_CC, HEIGHTPERROW_MODE, -1, -1, -1, 4, -1, "123456789012", "[20]01", 0, 16, 7, 99, 234, 42, "" }, - /* 75*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 4, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 234, 35, "4 height below fixed height" }, + /* 71*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, "123456789012", "[20]01", 0, 50, 7, 99, 226, 110, "" }, + /* 72*/ { BARCODE_EANX_CC, HEIGHTPERROW_MODE, -1, -1, -1, 0.5, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 226, 35, "(0.5 * 1 row + 2 * 3 seps + 2 * 3 cc rows + 5 guards) * 2 scale = 35" }, + /* 73*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 0.5, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 226, 35, "0.5 height below fixed height" }, + /* 74*/ { BARCODE_EANX_CC, HEIGHTPERROW_MODE, -1, -1, -1, 4, -1, "123456789012", "[20]01", 0, 16, 7, 99, 226, 42, "" }, + /* 75*/ { BARCODE_EANX_CC, -1, -1, -1, -1, 4, -1, "123456789012", "[20]01", 0, 12.5, 7, 99, 226, 35, "4 height below fixed height" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; - struct zint_symbol *symbol; + struct zint_symbol *symbol = NULL; char *text; - testStart("test_height_per_row"); + testStartSymbol("test_height_per_row", &symbol); for (i = 0; i < data_size; i++) { diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index 781d4a5e..a807c415 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -57,6 +57,7 @@ static int failed = 0; static int skipped = 0; int assertionFailed = 0; int assertionNum = 0; +struct zint_symbol **assertionPPSymbol = NULL; const char *assertionFilename = ""; static const char *testName = NULL; static const char *testFunc = NULL; @@ -69,42 +70,49 @@ void assert_zero(int exp, const char *fmt, ...) { assertionNum++; if (exp != 0) { va_list args; assertionFailed++; va_start(args, fmt); vprintf(fmt, args); va_end(args); testFinish(); + if (assertionPPSymbol) { ZBarcode_Delete(*assertionPPSymbol); assertionPPSymbol = NULL; }; } } void assert_nonzero(int exp, const char *fmt, ...) { assertionNum++; if (exp == 0) { va_list args; assertionFailed++; va_start(args, fmt); vprintf(fmt, args); va_end(args); testFinish(); + if (assertionPPSymbol) { ZBarcode_Delete(*assertionPPSymbol); assertionPPSymbol = NULL; }; } } void assert_null(const void *exp, const char *fmt, ...) { assertionNum++; if (exp != NULL) { va_list args; assertionFailed++; va_start(args, fmt); vprintf(fmt, args); va_end(args); testFinish(); + if (assertionPPSymbol) { ZBarcode_Delete(*assertionPPSymbol); assertionPPSymbol = NULL; }; } } void assert_nonnull(const void *exp, const char *fmt, ...) { assertionNum++; if (exp == NULL) { va_list args; assertionFailed++; va_start(args, fmt); vprintf(fmt, args); va_end(args); testFinish(); + if (assertionPPSymbol) { ZBarcode_Delete(*assertionPPSymbol); assertionPPSymbol = NULL; }; } } void assert_equal(int e1, int e2, const char *fmt, ...) { assertionNum++; if (e1 != e2) { va_list args; assertionFailed++; va_start(args, fmt); vprintf(fmt, args); va_end(args); testFinish(); + if (assertionPPSymbol) { ZBarcode_Delete(*assertionPPSymbol); assertionPPSymbol = NULL; }; } } void assert_equalu64(uint64_t e1, uint64_t e2, const char *fmt, ...) { assertionNum++; if (e1 != e2) { va_list args; assertionFailed++; va_start(args, fmt); vprintf(fmt, args); va_end(args); testFinish(); + if (assertionPPSymbol) { ZBarcode_Delete(*assertionPPSymbol); assertionPPSymbol = NULL; }; } } void assert_notequal(int e1, int e2, const char *fmt, ...) { assertionNum++; if (e1 == e2) { va_list args; assertionFailed++; va_start(args, fmt); vprintf(fmt, args); va_end(args); testFinish(); + if (assertionPPSymbol) { ZBarcode_Delete(*assertionPPSymbol); assertionPPSymbol = NULL; }; } } #endif @@ -120,7 +128,7 @@ void assert_notequal(int e1, int e2, const char *fmt, ...) { #endif /* Begin individual test function */ -void testStartReal(const char *func, const char *name) { +void testStartReal(const char *func, const char *name, struct zint_symbol **pp_symbol) { tests++; if (func && *func && name && *name && strcmp(func, name) == 0) { testName = ""; @@ -130,15 +138,17 @@ void testStartReal(const char *func, const char *name) { testFunc = func ? func : ""; assertionFailed = 0; assertionNum = 0; + assertionPPSymbol = pp_symbol; printf("_____%d: %s: %s...\n", tests, testFunc, testName ? testName : ""); } /* End individual test function */ void testFinish(void) { + fputs(assertionFailed ? "*****" : ".....", stdout); if (testName && *testName) { - printf(".....%d: %s: %s ", tests, testFunc, testName); + printf("%d: %s: %s ", tests, testFunc, testName); } else { - printf(".....%d: %s: ", tests, testFunc); + printf("%d: %s: ", tests, testFunc); } if (assertionFailed) { printf("FAILED. (%d assertions failed.)\n", assertionFailed); @@ -151,10 +161,11 @@ void testFinish(void) { /* Skip (and end) individual test function */ void testSkip(const char *msg) { skipped++; + fputs(assertionFailed ? "*****" : ".....", stdout); if (testName && *testName) { - printf(".....%d: %s: %s ", tests, testFunc, testName); + printf("%d: %s: %s ", tests, testFunc, testName); } else { - printf(".....%d: %s: ", tests, testFunc); + printf("%d: %s: ", tests, testFunc); } if (assertionFailed) { printf("FAILED. (%d assertions failed.)\n", assertionFailed); @@ -167,11 +178,11 @@ void testSkip(const char *msg) { /* End test program */ void testReport(void) { if (failed && skipped) { - printf("Total %d tests, %d skipped, %d fails.\n", tests, skipped, failed); + printf("Total %d tests, %d skipped, %d **fails**.\n", tests, skipped, failed); exit(-1); } if (failed) { - printf("Total %d tests, %d fails.\n", tests, failed); + printf("Total %d tests, %d **fails**.\n", tests, failed); exit(-1); } if (skipped) { @@ -179,7 +190,7 @@ void testReport(void) { } else if (tests) { printf("Total %d tests, all passed.\n", tests); } else { - printf("Total %d tests.\n", tests); + fputs("***No tests run.***\n", stdout); } } @@ -204,7 +215,7 @@ static int validate_int(const char src[], int *p_val) { return 1; } -/* Verifies that a string `src` only uses digits or a comma-separated range of digits. +/* Verifies that a string `src` only uses digits or a hyphen-separated range of digits. On success returns value in `p_val` and if present a range end value in `p_val_end` */ static int validate_int_range(const char src[], int *p_val, int *p_val_end) { int val = 0; @@ -424,7 +435,7 @@ const char *testUtilErrorName(int error_number) { }; static const struct item data[] = { { "0", 0, 0 }, - { "", -1, 1 }, + { "ZINT_WARN_HRT_TRUNCATED", ZINT_WARN_HRT_TRUNCATED, 1 }, { "ZINT_WARN_INVALID_OPTION", ZINT_WARN_INVALID_OPTION, 2 }, { "ZINT_WARN_USES_ECI", ZINT_WARN_USES_ECI, 3 }, { "ZINT_WARN_NONCOMPLIANT", ZINT_WARN_NONCOMPLIANT, 4 }, @@ -435,6 +446,10 @@ const char *testUtilErrorName(int error_number) { { "ZINT_ERROR_ENCODING_PROBLEM", ZINT_ERROR_ENCODING_PROBLEM, 9 }, { "ZINT_ERROR_FILE_ACCESS", ZINT_ERROR_FILE_ACCESS, 10 }, { "ZINT_ERROR_MEMORY", ZINT_ERROR_MEMORY, 11 }, + { "ZINT_ERROR_FILE_WRITE", ZINT_ERROR_FILE_WRITE, 12 }, + { "ZINT_ERROR_USES_ECI", ZINT_ERROR_USES_ECI, 13 }, + { "ZINT_ERROR_NONCOMPLIANT", ZINT_ERROR_NONCOMPLIANT, 14 }, + { "ZINT_ERROR_HRT_TRUNCATED", ZINT_ERROR_HRT_TRUNCATED, 15 }, }; static const int data_size = ARRAY_SIZE(data); @@ -571,6 +586,8 @@ const char *testUtilOutputOptionsName(int output_options) { { "BARCODE_QUIET_ZONES", BARCODE_QUIET_ZONES, 2048 }, { "BARCODE_NO_QUIET_ZONES", BARCODE_NO_QUIET_ZONES, 4096 }, { "COMPLIANT_HEIGHT", COMPLIANT_HEIGHT, 0x2000 }, + { "EANUPC_GUARD_WHITESPACE", EANUPC_GUARD_WHITESPACE, 0x4000 }, + { "EMBED_VECTOR_FONT", EMBED_VECTOR_FONT, 0x8000 }, }; static int const data_size = ARRAY_SIZE(data); int set = 0; @@ -597,8 +614,8 @@ const char *testUtilOutputOptionsName(int output_options) { } } if (set != output_options) { - fprintf(stderr, "testUtilOutputOptionsName: unknown output option(s) %d (%d)\n", - output_options & set, output_options); + fprintf(stderr, "testUtilOutputOptionsName: unknown output option(s) %d (%d, 0x%X)\n", + output_options & set, output_options, output_options); abort(); } return buf; @@ -1175,6 +1192,7 @@ void testUtilBitmapPrint(const struct zint_symbol *symbol, const char *prefix, c for (column = 0; column < symbol->bitmap_width; column += 10) printf("%-3d ", column); putchar('\n'); } + fflush(stdout); } /* Compare a bitmap to a dump */ @@ -1224,6 +1242,35 @@ int testUtilBitmapCmp(const struct zint_symbol *symbol, const char *expected, in return e != ep || r != symbol->bitmap_height || c != symbol->bitmap_width ? 1 /*fail*/ : 0 /*success*/; } +/* Dump vectors to stdout, for debugging */ +void testUtilVectorPrint(const struct zint_symbol *symbol) { + struct zint_vector_rect *rect; + struct zint_vector_hexagon *hex; + struct zint_vector_circle *circ; + struct zint_vector_string *str; + + if (symbol->vector == NULL) { + fputs("symbol->vector NULL\n", stdout); + } else { + for (rect = symbol->vector->rectangles; rect; rect = rect->next) { + printf("rect(x %.9g, y %.9g, width %.9g, height %.9g, colour %d)\n", rect->x, rect->y, rect->width, + rect->height, rect->colour); + } + for (hex = symbol->vector->hexagons; hex; hex = hex->next) { + printf("hex(x %.9g, y %.9g, diameter %.9g, rotation %d)\n", hex->x, hex->y, hex->diameter, hex->rotation); + } + for (circ = symbol->vector->circles; circ; circ = circ->next) { + printf("circ(x %.9g, y %.9g, diameter %.9g, width %.9g, colour %d)\n", circ->x, circ->y, circ->diameter, + circ->width, circ->colour); + } + for (str = symbol->vector->strings; str; str = str->next) { + printf("str(x %.9g, y %.9g, fsize %.9g, width %.9g, length %d, rotation %d, halign %d, \"%s\")\n", str->x, + str->y, str->fsize, str->width, str->length, str->rotation, str->halign, str->text); + } + } + fflush(stdout); +} + /* Determine the location of test data relative to where the test is being run */ int testUtilDataPath(char *buffer, int buffer_size, const char *subdir, const char *filename) { int subdir_len = subdir ? (int) strlen(subdir) : 0; @@ -3496,7 +3543,7 @@ static const char *testUtilZXingCPPName(int index, const struct zint_symbol *sym { "", BARCODE_JAPANPOST, 76, }, { "", BARCODE_KOREAPOST, 77, }, { "", -1, 78, }, - { "", BARCODE_DBAR_STK, 79, }, + { "DataBar", BARCODE_DBAR_STK, 79, }, { "DataBar", BARCODE_DBAR_OMNSTK, 80, }, { "DataBarExpanded", BARCODE_DBAR_EXPSTK, 81, }, { "", BARCODE_PLANET, 82, }, @@ -3945,7 +3992,7 @@ int testUtilZXingCPPCmp(struct zint_symbol *symbol, char *msg, char *cmp_buf, in c25inter[++expected_len] = '\0'; expected = c25inter; } - } else if (symbology == BARCODE_DBAR_OMN || symbology == BARCODE_DBAR_OMNSTK) { + } else if (symbology == BARCODE_DBAR_OMN || symbology == BARCODE_DBAR_OMNSTK || symbology == BARCODE_DBAR_STK) { if (expected_len == 13) { cmp_len--; /* Too messy to calc the check digit so ignore */ } diff --git a/backend/tests/testcommon.h b/backend/tests/testcommon.h index 34bdd437..375c277d 100644 --- a/backend/tests/testcommon.h +++ b/backend/tests/testcommon.h @@ -74,14 +74,17 @@ extern "C" { extern int assertionFailed; extern int assertionNum; +extern struct zint_symbol **assertionPPSymbol; extern const char *assertionFilename; #if defined(_MSC_VER) && _MSC_VER < 1900 /* MSVC 2015 */ -#define testStart(__arg__) (testStartReal("", __arg__)) +#define testStart(name) (testStartReal("", name, NULL)) +#define testStartSymbol(name, pp_symbol) (testStartReal("", name, pp_symbol)) #else -#define testStart(__arg__) (testStartReal(__func__, __arg__)) +#define testStart(name) (testStartReal(__func__, name, NULL)) +#define testStartSymbol(name, pp_symbol) (testStartReal(__func__, name, pp_symbol)) #endif -void testStartReal(const char *func, const char *name); +void testStartReal(const char *func, const char *name, struct zint_symbol **pp_symbol); void testFinish(void); void testSkip(const char *msg); void testReport(void); @@ -111,17 +114,18 @@ void assert_equal(int e1, int e2, const char *fmt, ...); void assert_equalu64(uint64_t e1, uint64_t e2, const char *fmt, ...); void assert_notequal(int e1, int e2, const char *fmt, ...); #else -#define assert_exp(__exp__, ...) \ - { assertionNum++; if (!(__exp__)) { assertionFailed++; printf("%s:%d ", assertionFilename, __LINE__); \ - printf(__VA_ARGS__); testFinish(); return; } } +#define assert_exp(exp, ...) \ + { assertionNum++; if (!(exp)) { assertionFailed++; printf("%s:%d ", assertionFilename, __LINE__); \ + printf(__VA_ARGS__); testFinish(); \ + if (assertionPPSymbol) { ZBarcode_Delete(*assertionPPSymbol); assertionPPSymbol = NULL; } return; } } -#define assert_zero(__exp__, ...) assert_exp((__exp__) == 0, __VA_ARGS__) -#define assert_nonzero(__exp__, ...) assert_exp((__exp__) != 0, __VA_ARGS__) -#define assert_null(__ptr__, ...) assert_exp((__ptr__) == NULL, __VA_ARGS__) -#define assert_nonnull(__ptr__, ...) assert_exp((__ptr__) != NULL, __VA_ARGS__) -#define assert_equal(__e1__, __e2__, ...) assert_exp((__e1__) == (__e2__), __VA_ARGS__) +#define assert_zero(exp, ...) assert_exp((exp) == 0, __VA_ARGS__) +#define assert_nonzero(exp, ...) assert_exp((exp) != 0, __VA_ARGS__) +#define assert_null(ptr, ...) assert_exp((ptr) == NULL, __VA_ARGS__) +#define assert_nonnull(ptr, ...) assert_exp((ptr) != NULL, __VA_ARGS__) +#define assert_equal(e1, e2, ...) assert_exp((e1) == (e2), __VA_ARGS__) #define assert_equalu64 assert_equal -#define assert_notequal(__e1__, __e2__, ...) assert_exp((__e1__) != (__e2__), __VA_ARGS__) +#define assert_notequal(e1, e2, ...) assert_exp((e1) != (e2), __VA_ARGS__) #endif #define TU(p) ((unsigned char *) (p)) @@ -158,6 +162,8 @@ char *testUtilUCharArrayDump(unsigned char *array, int size, char *dump, int dum void testUtilBitmapPrint(const struct zint_symbol *symbol, const char *prefix, const char *postfix); int testUtilBitmapCmp(const struct zint_symbol *symbol, const char *expected, int *row, int *column); +void testUtilVectorPrint(const struct zint_symbol *symbol); + int testUtilDataPath(char *buffer, int buffer_size, const char *subdir, const char *filename); FILE *testUtilOpen(const char *filename, const char *mode); int testUtilExists(const char *filename); diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index f22cd816..85b9da6d 100644 Binary files a/backend/tests/tools/bwipp_dump.ps.tar.xz and b/backend/tests/tools/bwipp_dump.ps.tar.xz differ diff --git a/backend/ultra.c b/backend/ultra.c index 75d74987..7a6e7135 100644 --- a/backend/ultra.c +++ b/backend/ultra.c @@ -1,7 +1,7 @@ /* ultra.c - Ultracode */ /* libzint - the open source barcode library - Copyright (C) 2020-2022 Robin Stuart + Copyright (C) 2020-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -592,7 +592,7 @@ static float ult_look_ahead_c43(const unsigned char source[], const int length, if (debug_print) { printf("C43 codewords %.*s: (%d)", length, source + in_locn, subcodeword_count); for (i = 0; i < subcodeword_count; i++) printf( " %d", subcw[i]); - printf("\n"); + fputc('\n', stdout); } letters_encoded = sublocn - in_locn; @@ -998,7 +998,7 @@ INTERNAL int ultra(struct zint_symbol *symbol, struct zint_seg segs[], const int for (i = 0; i < data_cw_count; i++) { printf(" %d", data_codewords[i]); } - printf("\n"); + fputc('\n', stdout); } #ifdef ZINT_TEST if (symbol->debug & ZINT_DEBUG_TEST) { @@ -1052,7 +1052,7 @@ INTERNAL int ultra(struct zint_symbol *symbol, struct zint_seg segs[], const int printf(", SCR1: %d, SCR2: %d", scr[1], scr[2]); } } - printf("\n"); + fputc('\n', stdout); } /* Maximum capacity is 282 codewords */ @@ -1102,7 +1102,7 @@ INTERNAL int ultra(struct zint_symbol *symbol, struct zint_seg segs[], const int for (i = 0; i < qcc; i++) { printf(" %d", data_codewords[(282 - qcc) + i]); } - printf("\n"); + fputc('\n', stdout); } /* Rearrange to make final codeword sequence */ @@ -1128,11 +1128,11 @@ INTERNAL int ultra(struct zint_symbol *symbol, struct zint_seg segs[], const int codeword[locn++] = qcc; /* QCC */ if (debug_print) { - printf("Rearranged codewords with ECC:\n"); + fputs("Rearranged codewords with ECC:\n", stdout); for (i = 0; i < locn; i++) { - printf("%d ", codeword[i]); + printf(" %d", codeword[i]); } - printf("\n"); + fputc('\n', stdout); } total_height = (rows * 6) + 1; @@ -1228,7 +1228,7 @@ INTERNAL int ultra(struct zint_symbol *symbol, struct zint_seg segs[], const int for (i = 0; i < (total_height * total_width); i++) { printf("%c", pattern[i]); if ((i + 1) % total_width == 0) { - printf("\n"); + fputc('\n', stdout); } } } diff --git a/backend/upcean.c b/backend/upcean.c index 8a07ea3a..67beb0f9 100644 --- a/backend/upcean.c +++ b/backend/upcean.c @@ -228,7 +228,9 @@ static int upce_cc(struct zint_symbol *symbol, unsigned char source[], int lengt equivalent[10] = source[4]; if (((source[2] == '0') || (source[2] == '1')) || (source[2] == '2')) { /* Note 1 - "X3 shall not be equal to 0, 1 or 2" */ - strcpy(symbol->errtxt, "271: Invalid UPC-E data"); /* TODO: Better error message */ + sprintf(symbol->errtxt, + "271: For this UPC-E zero suppression, 3rd character cannot be \"0\", \"1\" or \"2\" (%.*s)", + length, source); return ZINT_ERROR_INVALID_DATA; } break; @@ -238,7 +240,8 @@ static int upce_cc(struct zint_symbol *symbol, unsigned char source[], int lengt equivalent[10] = source[4]; if (source[3] == '0') { /* Note 2 - "X4 shall not be equal to 0" */ - strcpy(symbol->errtxt, "272: Invalid UPC-E data"); /* TODO: Better error message */ + sprintf(symbol->errtxt, "272: For this UPC-E zero suppression, 4th character cannot be \"0\" (%.*s)", + length, source); return ZINT_ERROR_INVALID_DATA; } break; @@ -253,7 +256,8 @@ static int upce_cc(struct zint_symbol *symbol, unsigned char source[], int lengt equivalent[10] = emode; if (source[4] == '0') { /* Note 3 - "X5 shall not be equal to 0" */ - strcpy(symbol->errtxt, "273: Invalid UPC-E data"); /* TODO: Better error message */ + sprintf(symbol->errtxt, "273: For this UPC-E zero suppression, 5th character cannot be \"0\" (%.*s)", + length, source); return ZINT_ERROR_INVALID_DATA; } break; @@ -808,16 +812,7 @@ INTERNAL int eanx_cc(struct zint_symbol *symbol, unsigned char source[], int src case BARCODE_EANX: case BARCODE_EANX_CHK: switch (first_part_len) { - case 2: ean_add_on(first_part, first_part_len, dest, 0); - ustrcpy(symbol->text, first_part); - if (symbol->output_options & COMPLIANT_HEIGHT) { - /* 21.9mm from GS1 General Specifications 5.2.6.6, Figure 5.2.6.6-5 */ - const float height = stripf(21.9f / 0.33f); /* 21.9mm / 0.33mm ~ 66.36 */ - error_number = set_height(symbol, height, height, 0.0f, 0 /*no_errtxt*/); - } else { - (void) set_height(symbol, 0.0f, 50.0f, 0.0f, 1 /*no_errtxt*/); - } - break; + case 2: case 5: ean_add_on(first_part, first_part_len, dest, 0); ustrcpy(symbol->text, first_part); if (symbol->output_options & COMPLIANT_HEIGHT) { @@ -973,7 +968,7 @@ INTERNAL int eanx_cc(struct zint_symbol *symbol, unsigned char source[], int src } } unset_module(symbol, symbol->rows - 1, 0); - symbol->width += 2; + symbol->width += 1 + (second_part_len == 0); /* Only need right space if no add-on */ break; } diff --git a/backend/vector.c b/backend/vector.c index d572d861..51773978 100644 --- a/backend/vector.c +++ b/backend/vector.c @@ -38,14 +38,14 @@ INTERNAL int ps_plot(struct zint_symbol *symbol); INTERNAL int svg_plot(struct zint_symbol *symbol); INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle); -static struct zint_vector_rect *vector_plot_create_rect(struct zint_symbol *symbol, - const float x, const float y, const float width, const float height) { +static int vector_add_rect(struct zint_symbol *symbol, const float x, const float y, const float width, + const float height, struct zint_vector_rect **last_rect) { struct zint_vector_rect *rect; rect = (struct zint_vector_rect *) malloc(sizeof(struct zint_vector_rect)); if (!rect) { strcpy(symbol->errtxt, "691: Insufficient memory for vector rectangle"); - return NULL; + return 0; } rect->next = NULL; @@ -55,27 +55,24 @@ static struct zint_vector_rect *vector_plot_create_rect(struct zint_symbol *symb rect->height = height; rect->colour = -1; /* Default colour */ - return rect; -} - -static void vector_plot_add_rect(struct zint_symbol *symbol, struct zint_vector_rect *rect, - struct zint_vector_rect **last_rect) { if (*last_rect) (*last_rect)->next = rect; else symbol->vector->rectangles = rect; /* first rectangle */ *last_rect = rect; + + return 1; } -static struct zint_vector_hexagon *vector_plot_create_hexagon(struct zint_symbol *symbol, - const float x, const float y, const float diameter) { +static int vector_add_hexagon(struct zint_symbol *symbol, const float x, const float y, + const float diameter, struct zint_vector_hexagon **last_hexagon) { struct zint_vector_hexagon *hexagon; hexagon = (struct zint_vector_hexagon *) malloc(sizeof(struct zint_vector_hexagon)); if (!hexagon) { strcpy(symbol->errtxt, "692: Insufficient memory for vector hexagon"); - return NULL; + return 0; } hexagon->next = NULL; hexagon->x = x; @@ -83,28 +80,24 @@ static struct zint_vector_hexagon *vector_plot_create_hexagon(struct zint_symbol hexagon->diameter = diameter; hexagon->rotation = 0; - return hexagon; -} - -static void vector_plot_add_hexagon(struct zint_symbol *symbol, struct zint_vector_hexagon *hexagon, - struct zint_vector_hexagon **last_hexagon) { if (*last_hexagon) (*last_hexagon)->next = hexagon; else symbol->vector->hexagons = hexagon; /* first hexagon */ *last_hexagon = hexagon; + + return 1; } -static struct zint_vector_circle *vector_plot_create_circle(struct zint_symbol *symbol, - const float x, const float y, const float diameter, const float width, - const int colour) { +static int vector_add_circle(struct zint_symbol *symbol, const float x, const float y, const float diameter, + const float width, const int colour, struct zint_vector_circle **last_circle) { struct zint_vector_circle *circle; circle = (struct zint_vector_circle *) malloc(sizeof(struct zint_vector_circle)); if (!circle) { strcpy(symbol->errtxt, "693: Insufficient memory for vector circle"); - return NULL; + return 0; } circle->next = NULL; circle->x = x; @@ -113,20 +106,17 @@ static struct zint_vector_circle *vector_plot_create_circle(struct zint_symbol * circle->width = width; circle->colour = colour; - return circle; -} - -static void vector_plot_add_circle(struct zint_symbol *symbol, struct zint_vector_circle *circle, - struct zint_vector_circle **last_circle) { if (*last_circle) (*last_circle)->next = circle; else symbol->vector->circles = circle; /* first circle */ *last_circle = circle; + + return 1; } -static int vector_plot_add_string(struct zint_symbol *symbol, const unsigned char *text, const int length, +static int vector_add_string(struct zint_symbol *symbol, const unsigned char *text, const int length, const float x, const float y, const float fsize, const float width, const int halign, struct zint_vector_string **last_string) { struct zint_vector_string *string; @@ -157,6 +147,7 @@ static int vector_plot_add_string(struct zint_symbol *symbol, const unsigned cha (*last_string)->next = string; else symbol->vector->strings = string; /* First text portion */ + *last_string = string; return 1; @@ -392,6 +383,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ int error_number; int main_width; int comp_xoffset = 0; + int comp_roffset = 0; unsigned char addon[6]; int addon_gap = 0; float addon_text_yposn = 0.0f; @@ -406,6 +398,8 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ int text_height; /* Font pixel size (so whole integers) */ float text_gap; /* Gap between barcode and text */ float guard_descent; + const int upcean_guard_whitespace = !(symbol->output_options & BARCODE_NO_QUIET_ZONES) + && (symbol->output_options & EANUPC_GUARD_WHITESPACE); const int is_codablockf = symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF; const int no_extend = is_codablockf || symbol->symbology == BARCODE_DPD; @@ -417,7 +411,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ float addon_row_height; int upcae_outside_text_height = 0; /* UPC-A/E outside digits font size */ /* Note using "ascender" to mean height above digits as "ascent" usually measured from baseline */ - const float digit_ascender_factor = 0.25f; /* Assuming digit ascender height roughly 25% of font size */ + const float digit_ascender_factor = 0.22f; /* Assuming digit ascender height roughly 22% of font size */ float digit_ascender = 0.0f; /* Avoid gcc -Wmaybe-uninitialized */ const float antialias_fudge_factor = 0.02f; float antialias_fudge = 0.0f; /* Avoid gcc -Wmaybe-uninitialized */ @@ -428,10 +422,10 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ float yposn; struct zint_vector *vector; - struct zint_vector_rect *rect, *last_rectangle = NULL; - struct zint_vector_hexagon *hexagon, *last_hexagon = NULL; + struct zint_vector_rect *rect, *last_rect = NULL; + struct zint_vector_hexagon *last_hexagon = NULL; struct zint_vector_string *last_string = NULL; - struct zint_vector_circle *circle, *last_circle = NULL; + struct zint_vector_circle *last_circle = NULL; struct zint_vector_rect **first_row_rects = (struct zint_vector_rect **) z_alloca(sizeof(struct zint_vector_rect *) * (symbol->rows + 1)); @@ -462,27 +456,37 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ main_width = symbol->width; + if (is_composite(symbol->symbology)) { + while (!module_is_set(symbol, symbol->rows - 1, comp_xoffset)) { + comp_xoffset++; + } + } if (is_extendable(symbol->symbology)) { - upceanflag = out_process_upcean(symbol, &main_width, &comp_xoffset, addon, &addon_gap); + upceanflag = out_process_upcean(symbol, comp_xoffset, &main_width, addon, &addon_gap); + } else if (is_composite(symbol->symbology)) { + int x; + for (x = symbol->width - 1; x && !module_is_set(symbol, symbol->rows - 1, x); comp_roffset++, x--); + main_width -= comp_xoffset + comp_roffset; } hide_text = ((!symbol->show_hrt) || (ustrlen(symbol->text) == 0)); - out_set_whitespace_offsets(symbol, hide_text, &xoffset, &yoffset, &roffset, &boffset, 0 /*scaler*/, + out_set_whitespace_offsets(symbol, hide_text, comp_xoffset, &xoffset, &yoffset, &roffset, &boffset, 0 /*scaler*/, NULL, NULL, NULL, NULL); - /* Note font sizes scaled by 2 so really twice these values */ if (upceanflag) { /* Note BOLD_TEXT ignored for UPCEAN by svg/emf/ps/qzint */ text_height = symbol->output_options & SMALL_TEXT ? 7 : 10; - digit_ascender = text_height * digit_ascender_factor; /* Digit ascender is unused (empty) */ + digit_ascender = text_height * digit_ascender_factor; antialias_fudge = text_height * antialias_fudge_factor; + /* Although font size 7 (for normal) seems small it meets GS1 General Spec (GGS) Section 5.2.5: + "the size of the first and last digits should be reduced to a maximum width equivalent to four modules" */ upcae_outside_text_height = symbol->output_options & SMALL_TEXT ? 6 : 7; - /* Note default 0.75 was 0.5 (minimum per standard) but that looks too close */ - text_gap = (symbol->text_gap ? symbol->text_gap : 0.75f) - digit_ascender; + /* Note default now 1.0 (GGS 5.2.5 "Normally the minimum is one module") but was 0.5 (absolute minimum) */ + text_gap = (symbol->text_gap ? symbol->text_gap : 1.0f) - digit_ascender; /* Guard bar height (none for EAN-2 and EAN-5) */ - guard_descent = upceanflag != 2 && upceanflag != 5 ? symbol->guard_descent : 0.0f; + guard_descent = upceanflag >= 6 ? symbol->guard_descent : 0.0f; } else { text_height = symbol->output_options & SMALL_TEXT ? 6 : 7; text_gap = symbol->text_gap ? symbol->text_gap : text_height * 0.1f; @@ -541,18 +545,12 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ bull_d_incr = (hex_diameter * 9 - hex_ydiameter) / 5.0f; bull_width = bull_d_incr / 2.0f; - circle = vector_plot_create_circle(symbol, bull_x, bull_y, - hex_ydiameter + bull_d_incr * 5 - bull_width, bull_width, 0); - if (!circle) return ZINT_ERROR_MEMORY; - vector_plot_add_circle(symbol, circle, &last_circle); - circle = vector_plot_create_circle(symbol, bull_x, bull_y, - hex_ydiameter + bull_d_incr * 3 - bull_width, bull_width, 0); - if (!circle) return ZINT_ERROR_MEMORY; - vector_plot_add_circle(symbol, circle, &last_circle); - circle = vector_plot_create_circle(symbol, bull_x, bull_y, - hex_ydiameter + bull_d_incr - bull_width, bull_width, 0); - if (!circle) return ZINT_ERROR_MEMORY; - vector_plot_add_circle(symbol, circle, &last_circle); + if (!vector_add_circle(symbol, bull_x, bull_y, hex_ydiameter + bull_d_incr * 5 - bull_width, bull_width, 0, + &last_circle)) return ZINT_ERROR_MEMORY; + if (!vector_add_circle(symbol, bull_x, bull_y, hex_ydiameter + bull_d_incr * 3 - bull_width, bull_width, 0, + &last_circle)) return ZINT_ERROR_MEMORY; + if (!vector_add_circle(symbol, bull_x, bull_y, hex_ydiameter + bull_d_incr - bull_width, bull_width, 0, + &last_circle)) return ZINT_ERROR_MEMORY; /* Hexagons */ for (r = 0; r < symbol->rows; r++) { @@ -562,9 +560,8 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ for (i = 0; i < symbol->width - odd_row; i++) { if (module_is_set(symbol, r, i)) { const float hex_xposn = i * hex_diameter + xposn_offset; - hexagon = vector_plot_create_hexagon(symbol, hex_xposn, hex_yposn, hex_diameter); - if (!hexagon) return ZINT_ERROR_MEMORY; - vector_plot_add_hexagon(symbol, hexagon, &last_hexagon); + if (!vector_add_hexagon(symbol, hex_xposn, hex_yposn, hex_diameter, &last_hexagon)) + return ZINT_ERROR_MEMORY; } } } @@ -573,10 +570,8 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ for (r = 0; r < symbol->rows; r++) { for (i = 0; i < symbol->width; i++) { if (module_is_set(symbol, r, i)) { - circle = vector_plot_create_circle(symbol, i + dot_offset + xoffset, r + dot_offset + yoffset, - symbol->dot_size, 0, 0); - if (!circle) return ZINT_ERROR_MEMORY; - vector_plot_add_circle(symbol, circle, &last_circle); + if (!vector_add_circle(symbol, i + dot_offset + xoffset, r + dot_offset + yoffset, + symbol->dot_size, 0, 0, &last_circle)) return ZINT_ERROR_MEMORY; } } } @@ -592,10 +587,9 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ && module_colour_is_set(symbol, r, i + block_width) == fill; block_width++); if (fill) { /* a colour block */ - rect = vector_plot_create_rect(symbol, i + xoffset, yposn, block_width, row_height); - if (!rect) return ZINT_ERROR_MEMORY; - rect->colour = module_colour_is_set(symbol, r, i); - vector_plot_add_rect(symbol, rect, &last_rectangle); + if (!vector_add_rect(symbol, i + xoffset, yposn, block_width, row_height, &last_rect)) + return ZINT_ERROR_MEMORY; + last_rect->colour = module_colour_is_set(symbol, r, i); } } yposn += row_height; @@ -630,13 +624,12 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ if (fill) { /* a bar */ if (addon_latch) { - rect = vector_plot_create_rect(symbol, i + xoffset, addon_row_yposn, block_width, - addon_row_height); + if (!vector_add_rect(symbol, i + xoffset, addon_row_yposn, block_width, addon_row_height, + &last_rect)) return ZINT_ERROR_MEMORY; } else { - rect = vector_plot_create_rect(symbol, i + xoffset, yposn, block_width, row_height); + if (!vector_add_rect(symbol, i + xoffset, yposn, block_width, row_height, &last_rect)) + return ZINT_ERROR_MEMORY; } - if (!rect) return ZINT_ERROR_MEMORY; - vector_plot_add_rect(symbol, rect, &last_rectangle); rect_count++; } } @@ -645,6 +638,9 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ } else { yposn = yoffset; + if (upceanflag && !hide_text) { /* EAN-2, EAN-5 (standalone add-ons) */ + yposn += text_height + text_gap + antialias_fudge; + } for (r = 0; r < symbol->rows; r++) { const float row_height = symbol->row_height[r] ? symbol->row_height[r] : large_bar_height; @@ -654,11 +650,10 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ && module_is_set(symbol, r, i + block_width) == fill; block_width++); if (fill) { /* a bar */ - rect = vector_plot_create_rect(symbol, i + xoffset, yposn, block_width, row_height); - if (!rect) return ZINT_ERROR_MEMORY; - vector_plot_add_rect(symbol, rect, &last_rectangle); + if (!vector_add_rect(symbol, i + xoffset, yposn, block_width, row_height, &last_rect)) + return ZINT_ERROR_MEMORY; if (i == 0) { - first_row_rects[r] = rect; + first_row_rects[r] = last_rect; } } } @@ -739,12 +734,18 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ if (!hide_text) { float text_xposn; float text_yposn; - - xoffset += comp_xoffset; + float textwidth; text_yposn = yoffset + symbol->height + text_height + text_gap; /* Calculated to bottom of text */ if (upceanflag) { /* Allow for anti-aliasing if UPC/EAN */ - text_yposn -= antialias_fudge; + if (upceanflag >= 6) { + text_yposn -= antialias_fudge; + } else { /* EAN-2/5 */ + text_yposn = yoffset + text_height - digit_ascender; + if (text_yposn < 0.0f) { + text_yposn = 0.0f; + } + } } else { /* Else adjust to baseline */ text_yposn -= text_height * descent_factor; } @@ -754,100 +755,151 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ if (upceanflag >= 6) { /* UPC-E, EAN-8, UPC-A, EAN-13 */ const int addon_len = (int) ustrlen(addon); - float textwidth; + + xoffset += comp_xoffset; /* Hacky shortcut - restored at end */ out_upcean_split_text(upceanflag, symbol->text, textparts); if (upceanflag == 6) { /* UPC-E */ text_xposn = -(5.0f - 0.35f) + xoffset; textwidth = 6.2f; - if (!vector_plot_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, - upcae_outside_text_height, textwidth, 2 /*right align*/, - &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, upcae_outside_text_height, + textwidth, 2 /*right align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = (24.0f + 0.5f) + xoffset; textwidth = 6.0f * 8.5f; - if (!vector_plot_add_string(symbol, textparts[1], 6, text_xposn, text_yposn, text_height, - textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[1], 6, text_xposn, text_yposn, text_height, textwidth, + 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = (51.0f - 0.35f) + 3.0f + xoffset; textwidth = 6.2f; - if (!vector_plot_add_string(symbol, textparts[2], 1, text_xposn, text_yposn, - upcae_outside_text_height, textwidth, 1 /*left align*/, - &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[2], 1, text_xposn, text_yposn, upcae_outside_text_height, + textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; if (addon_len) { text_xposn = (addon_len == 2 ? 61.0f : 75.0f) + xoffset + addon_gap; textwidth = addon_len * 8.5f; - if (!vector_plot_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, - text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, text_height, + textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (upcean_guard_whitespace) { + text_xposn = (addon_len == 2 ? 70.0f : 97.0f) - 0.2f + xoffset + addon_gap; + textwidth = 8.5f; + if (!vector_add_string(symbol, (const unsigned char *) ">", 1, text_xposn, addon_text_yposn, + text_height, textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; + } } } else if (upceanflag == 8) { /* EAN-8 */ + if (upcean_guard_whitespace) { + text_xposn = -0.75f + xoffset; + textwidth = 8.5f; + if (!vector_add_string(symbol, (const unsigned char *) "<", 1, text_xposn, text_yposn, + text_height, textwidth, 2 /*right align*/, &last_string)) return ZINT_ERROR_MEMORY; + } text_xposn = (17.0f + 0.5f) + xoffset; textwidth = 4.0f * 8.5f; - if (!vector_plot_add_string(symbol, textparts[0], 4, text_xposn, text_yposn, - text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[0], 4, text_xposn, text_yposn, text_height, textwidth, + 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = (50.0f - 0.5f) + xoffset; - if (!vector_plot_add_string(symbol, textparts[1], 4, text_xposn, text_yposn, - text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[1], 4, text_xposn, text_yposn, text_height, textwidth, + 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; if (addon_len) { text_xposn = (addon_len == 2 ? 77.0f : 91.0f) + xoffset + addon_gap; textwidth = addon_len * 8.5f; - if (!vector_plot_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, - text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, text_height, + textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (upcean_guard_whitespace) { + text_xposn = (addon_len == 2 ? 86.0f : 113.0f) - 0.2f + xoffset + addon_gap; + textwidth = 8.5f; + if (!vector_add_string(symbol, (const unsigned char *) ">", 1, text_xposn, addon_text_yposn, + text_height, textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; + } + } else if (upcean_guard_whitespace) { + text_xposn = (68.0f - 0.2f) + xoffset; + textwidth = 8.5f; + if (!vector_add_string(symbol, (const unsigned char *) ">", 1, text_xposn, text_yposn, + text_height, textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; } } else if (upceanflag == 12) { /* UPC-A */ text_xposn = -(5.0f - 0.35f) + xoffset; textwidth = 6.2f; - if (!vector_plot_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, - upcae_outside_text_height, textwidth, 2 /*right align*/, - &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, upcae_outside_text_height, + textwidth, 2 /*right align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = (27.0f + 1.0f) + xoffset; textwidth = 5.0f * 8.5f; - if (!vector_plot_add_string(symbol, textparts[1], 5, text_xposn, text_yposn, text_height, - textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[1], 5, text_xposn, text_yposn, text_height, textwidth, + 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = 67.0f + xoffset; - if (!vector_plot_add_string(symbol, textparts[2], 5, text_xposn, text_yposn, text_height, - textwidth, 0 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[2], 5, text_xposn, text_yposn, text_height, textwidth, + 0 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = (95.0f - 0.35f) + 5.0f + xoffset; textwidth = 6.2f; - if (!vector_plot_add_string(symbol, textparts[3], 1, text_xposn, text_yposn, - upcae_outside_text_height, textwidth, 1 /*left align*/, - &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[3], 1, text_xposn, text_yposn, upcae_outside_text_height, + textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; if (addon_len) { text_xposn = (addon_len == 2 ? 105.0f : 119.0f) + xoffset + addon_gap; textwidth = addon_len * 8.5f; - if (!vector_plot_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, - text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, text_height, + textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (upcean_guard_whitespace) { + text_xposn = (addon_len == 2 ? 114.0f : 141.0f) - 0.2f + xoffset + addon_gap; + textwidth = 8.5f; + if (!vector_add_string(symbol, (const unsigned char *) ">", 1, text_xposn, addon_text_yposn, + text_height, textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; + } } } else { /* EAN-13 */ text_xposn = -(5.0f - 0.1f) + xoffset; textwidth = 8.5f; - if (!vector_plot_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, - text_height, textwidth, 2 /*right align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, text_height, textwidth, + 2 /*right align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = (24.0f + 0.5f) + xoffset; textwidth = 6.0f * 8.5f; - if (!vector_plot_add_string(symbol, textparts[1], 6, text_xposn, text_yposn, - text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[1], 6, text_xposn, text_yposn, text_height, textwidth, + 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = (71.0f - 0.5f) + xoffset; - if (!vector_plot_add_string(symbol, textparts[2], 6, text_xposn, text_yposn, - text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, textparts[2], 6, text_xposn, text_yposn, text_height, textwidth, + 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; if (addon_len) { text_xposn = (addon_len == 2 ? 105.0f : 119.0f) + xoffset + addon_gap; textwidth = addon_len * 8.5f; - if (!vector_plot_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, - text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, text_height, + textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (upcean_guard_whitespace) { + text_xposn = (addon_len == 2 ? 114.0f : 141.0f) + xoffset + addon_gap; + textwidth = 8.5f; + if (!vector_add_string(symbol, (const unsigned char *) ">", 1, text_xposn, addon_text_yposn, + text_height, textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; + } + } else if (upcean_guard_whitespace) { + text_xposn = 96.0f + xoffset; + textwidth = 8.5f; + if (!vector_add_string(symbol, (const unsigned char *) ">", 1, text_xposn, text_yposn, + text_height, textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; } } + + xoffset -= comp_xoffset; /* Restore xoffset */ + + } else if (upceanflag) { /* EAN-2, EAN-5 (standalone add-ons) */ + const int addon_len = (int) ustrlen(symbol->text); + /* Put at top (and centered) */ + text_xposn = main_width / 2.0f + xoffset; + textwidth = addon_len * 8.5f; + if (!vector_add_string(symbol, symbol->text, addon_len, text_xposn, text_yposn, text_height, + textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (upcean_guard_whitespace) { + text_xposn = (addon_len == 2 ? 18.75f : 45.75f) + xoffset + addon_gap; + textwidth = 8.5f; + if (!vector_add_string(symbol, (const unsigned char *) ">", 1, text_xposn, text_yposn, + text_height, textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; + } + } else { /* Put normal human readable text at the bottom (and centered) */ - /* calculate start xoffset to center text */ - text_xposn = main_width / 2.0f + xoffset; - if (!vector_plot_add_string(symbol, symbol->text, -1, text_xposn, text_yposn, - text_height, symbol->width, 0, &last_string)) return ZINT_ERROR_MEMORY; + text_xposn = main_width / 2.0f + xoffset + comp_xoffset; + if (!vector_add_string(symbol, symbol->text, -1, text_xposn, text_yposn, text_height, symbol->width, 0, + &last_string)) return ZINT_ERROR_MEMORY; } - - xoffset -= comp_xoffset; /* Restore xoffset */ } /* Separator binding for stacked barcodes */ @@ -890,10 +942,8 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ } for (r = 1; r < symbol->rows; r++) { const float row_height = symbol->row_height[r - 1] ? symbol->row_height[r - 1] : large_bar_height; - rect = vector_plot_create_rect(symbol, sep_xoffset, (r * row_height) + sep_yoffset, - sep_width, sep_height); - if (!rect) return ZINT_ERROR_MEMORY; - vector_plot_add_rect(symbol, rect, &last_rectangle); + if (!vector_add_rect(symbol, sep_xoffset, (r * row_height) + sep_yoffset, sep_width, sep_height, + &last_rect)) return ZINT_ERROR_MEMORY; } } @@ -908,24 +958,22 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ ybind_bot = vector->height - symbol->border_width; } /* Top */ - rect = vector_plot_create_rect(symbol, 0.0f, ybind_top, vector->width, symbol->border_width); - if (!rect) return ZINT_ERROR_MEMORY; + if (!vector_add_rect(symbol, 0.0f, ybind_top, vector->width, symbol->border_width, &last_rect)) + return ZINT_ERROR_MEMORY; if (!(symbol->output_options & BARCODE_BOX) && no_extend) { /* CodaBlockF/DPD bind - does not extend over horizontal whitespace */ - rect->x = xoffset; - rect->width -= xoffset + roffset; + last_rect->x = xoffset; + last_rect->width -= xoffset + roffset; } - vector_plot_add_rect(symbol, rect, &last_rectangle); /* Bottom */ if (!(symbol->output_options & BARCODE_BIND_TOP)) { /* Trumps BARCODE_BOX & BARCODE_BIND */ - rect = vector_plot_create_rect(symbol, 0.0f, ybind_bot, vector->width, symbol->border_width); - if (!rect) return ZINT_ERROR_MEMORY; + if (!vector_add_rect(symbol, 0.0f, ybind_bot, vector->width, symbol->border_width, &last_rect)) + return ZINT_ERROR_MEMORY; if (!(symbol->output_options & BARCODE_BOX) && no_extend) { /* CodaBlockF/DPD bind - does not extend over horizontal whitespace */ - rect->x = xoffset; - rect->width -= xoffset + roffset; + last_rect->x = xoffset; + last_rect->width -= xoffset + roffset; } - vector_plot_add_rect(symbol, rect, &last_rectangle); } if (symbol->output_options & BARCODE_BOX) { const float xbox_right = vector->width - symbol->border_width; @@ -937,13 +985,11 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ box_height = vector->height - symbol->border_width * 2; } /* Left */ - rect = vector_plot_create_rect(symbol, 0.0f, box_top, symbol->border_width, box_height); - if (!rect) return ZINT_ERROR_MEMORY; - vector_plot_add_rect(symbol, rect, &last_rectangle); + if (!vector_add_rect(symbol, 0.0f, box_top, symbol->border_width, box_height, &last_rect)) + return ZINT_ERROR_MEMORY; /* Right */ - rect = vector_plot_create_rect(symbol, xbox_right, box_top, symbol->border_width, box_height); - if (!rect) return ZINT_ERROR_MEMORY; - vector_plot_add_rect(symbol, rect, &last_rectangle); + if (!vector_add_rect(symbol, xbox_right, box_top, symbol->border_width, box_height, &last_rect)) + return ZINT_ERROR_MEMORY; } } diff --git a/backend/zint.h b/backend/zint.h index 14bb38db..54fa7153 100644 --- a/backend/zint.h +++ b/backend/zint.h @@ -60,7 +60,7 @@ extern "C" { struct zint_vector_string { float x, y; /* x is relative to halign (i.e. centre, left, right), y is relative to baseline */ float fsize; /* Font size */ - float width; /* Suggested string width, may be 0 if none recommended */ + float width; /* Rendered width estimate */ int length; /* Number of characters (bytes) */ int rotation; /* 0, 90, 180, 270 degrees */ int halign; /* Horizontal alignment: 0 for centre, 1 for left, 2 for right (end) */ @@ -111,7 +111,6 @@ extern "C" { int option_2; /* Symbol-specific options */ int option_3; /* Symbol-specific options */ int show_hrt; /* Show (1) or hide (0) Human Readable Text (HRT). Default 1 */ - int fontsize; /* Unused */ int input_mode; /* Encoding of input data (see DATA_MODE etc below). Default DATA_MODE */ int eci; /* Extended Channel Interpretation. Default 0 (none) */ float dpmm; /* Resolution of output in dots per mm (BMP/EMF/PCX/PNG/TIF only). Default 0 (none) */ @@ -121,7 +120,7 @@ extern "C" { struct zint_structapp structapp; /* Structured Append info. Default structapp.count 0 (none) */ int warn_level; /* Affects error/warning value returned by Zint API (see WARN_XXX below) */ int debug; /* Debugging flags */ - unsigned char text[128]; /* Human Readable Text (HRT) (if any), UTF-8, NUL-terminated (output only) */ + unsigned char text[160]; /* Human Readable Text (HRT) (if any), UTF-8, NUL-terminated (output only) */ int rows; /* Number of rows used by the symbol (output only) */ int width; /* Width of the generated symbol (output only) */ unsigned char encoded_data[200][144]; /* Encoded data (output only). Allows for rows of 1152 modules */ @@ -292,6 +291,8 @@ extern "C" { */ #define BARCODE_NO_QUIET_ZONES 0x1000 /* Disable quiet zones, notably those with defaults as listed above */ #define COMPLIANT_HEIGHT 0x2000 /* Warn if height not compliant and use standard height (if any) as default */ +#define EANUPC_GUARD_WHITESPACE 0x4000 /* Add quiet zone indicators ("<"/">") to HRT whitespace (EAN/UPC) */ +#define EMBED_VECTOR_FONT 0x8000 /* Embed font in vector output - currently only for SVG output of EAN/UPC */ /* Input data types (`symbol->input_mode`) */ #define DATA_MODE 0 /* Binary */ @@ -318,6 +319,7 @@ extern "C" { #define ULTRA_COMPRESSION 128 /* Enable Ultracode compression (experimental) */ /* Warning and error conditions (API return values) */ +#define ZINT_WARN_HRT_TRUNCATED 1 /* Human Readable Text was truncated (max 159 bytes) */ #define ZINT_WARN_INVALID_OPTION 2 /* Invalid option given but overridden by Zint */ #define ZINT_WARN_USES_ECI 3 /* Automatic ECI inserted by Zint */ #define ZINT_WARN_NONCOMPLIANT 4 /* Symbol created not compliant with standards */ @@ -332,6 +334,7 @@ extern "C" { #define ZINT_ERROR_FILE_WRITE 12 /* Error writing to output file */ #define ZINT_ERROR_USES_ECI 13 /* Error counterpart of warning if WARN_FAIL_ALL set (see below) */ #define ZINT_ERROR_NONCOMPLIANT 14 /* Error counterpart of warning if WARN_FAIL_ALL set */ +#define ZINT_ERROR_HRT_TRUNCATED 15 /* Error counterpart of warning if WARN_FAIL_ALL set */ /* Warning level (`symbol->warn_level`) */ #define WARN_DEFAULT 0 /* Default behaviour */ diff --git a/backend_qt/backend_qt.pro b/backend_qt/backend_qt.pro index f3ec0665..fadde269 100644 --- a/backend_qt/backend_qt.pro +++ b/backend_qt/backend_qt.pro @@ -38,7 +38,7 @@ HEADERS += ../backend/aztec.h \ ../backend/eci.h \ ../backend/eci_sb.h \ ../backend/emf.h \ - ../backend/font.h \ + ../backend/raster_font.h \ ../backend/gb18030.h \ ../backend/gb2312.h \ ../backend/gbk.h \ diff --git a/backend_qt/backend_vc8.pro b/backend_qt/backend_vc8.pro index fb169341..f6e458a4 100644 --- a/backend_qt/backend_vc8.pro +++ b/backend_qt/backend_vc8.pro @@ -29,7 +29,7 @@ HEADERS += ../backend/aztec.h \ ../backend/dmatrix_trace.h \ ../backend/eci.h \ ../backend/emf.h \ - ../backend/font.h \ + ../backend/raster_font.h \ ../backend/gb18030.h \ ../backend/gb2312.h \ ../backend/gbk.h \ diff --git a/backend_qt/qzint.cpp b/backend_qt/qzint.cpp index db3d2af7..2dc7798a 100644 --- a/backend_qt/qzint.cpp +++ b/backend_qt/qzint.cpp @@ -26,25 +26,41 @@ #include "qzint.h" #include #include +#include #include /* The following include is necessary to compile with Qt 5.15 on Windows; Qt 5.7 did not require it */ #include #include +#include "../backend/fonts/upcean_ttf.h" /* OCR-B subset (digits, "<", ">") */ // Shorthand #define QSL QStringLiteral namespace Zint { - static const QString fontFamily = QSL("Helvetica"); - static const QString fontFamilyError = QSL("Helvetica"); - static const int fontSizeError = 14; /* Point size */ - static const int maxSegs = 256; static const int maxCLISegs = 10; /* CLI restricted to 10 segments (including main data) */ + /* Matches RGB(A) hex string or CMYK decimal "C,M,Y,K" percentage string */ static const QRegularExpression colorRE( QSL("^([0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?)|(((100|[0-9]{0,2}),){3}(100|[0-9]{0,2}))$")); + static const QString fontFamily = QSL("Arimo"); /* Sans-serif metrically compatible with Arial */ + static const QString upceanFontFamily = QSL("OCRB"); /* Monospace OCR-B */ + static const QString fontFamilyError = QSL("Arimo"); + static const int fontSizeError = 14; /* Point size */ + + static int upceanFontID = -2; /* Use -2 as `addApplicationFontFromData()` returns -1 on error */ + + /* Load OCR-B EAN/UPC subset from static array */ + static int loadUpceanFont() { + static const QByteArray upceanFontArray + = QByteArray::fromRawData((const char *) upcean_ttf, sizeof(upcean_ttf)); + + upceanFontID = QFontDatabase::addApplicationFontFromData(upceanFontArray); + return upceanFontID; + } + + /* Helper to convert QColor to RGB(A) hex string */ static QString qcolor_to_str(const QColor &color) { if (color.alpha() == 0xFF) { return QString::asprintf("%02X%02X%02X", color.red(), color.green(), color.blue()); @@ -52,6 +68,7 @@ namespace Zint { return QString::asprintf("%02X%02X%02X%02X", color.red(), color.green(), color.blue(), color.alpha()); } + /* Helper to convert RGB(A) hex string or CMYK decimal "C,M,Y,K" percentage string) to QColor */ static QColor str_to_qcolor(const QString &text) { QColor color; int r, g, b, a; @@ -96,7 +113,7 @@ namespace Zint { return ret; } - /* Helper to calculate max right and bottom of elements for fudging render() */ + /* Helper to calculate max right and bottom of elements for fudging `render()` */ static void getMaxRectsRightBottom(struct zint_vector *vector, int &maxRight, int &maxBottom) { struct zint_vector_rect *rect; struct zint_vector_hexagon *hex; @@ -159,6 +176,8 @@ namespace Zint { m_eci(0), m_gs1parens(false), m_gs1nocheck(false), m_reader_init(false), + m_guard_whitespace(false), + m_embed_vector_font(false), m_warn_level(WARN_DEFAULT), m_debug(false), m_encodedWidth(0), m_encodedRows(0), m_encodedHeight(0.0f), m_vectorWidth(0.0f), m_vectorHeight(0.0f), @@ -213,6 +232,12 @@ namespace Zint { if (m_reader_init) { m_zintSymbol->output_options |= READER_INIT; } + if (m_guard_whitespace) { + m_zintSymbol->output_options |= EANUPC_GUARD_WHITESPACE; + } + if (m_embed_vector_font) { + m_zintSymbol->output_options |= EMBED_VECTOR_FONT; + } strcpy(m_zintSymbol->fgcolour, m_fgStr.toLatin1().left(15)); strcpy(m_zintSymbol->bgcolour, m_bgStr.toLatin1().left(15)); strcpy(m_zintSymbol->primary, m_primaryMessage.toLatin1().left(127)); @@ -697,6 +722,24 @@ namespace Zint { m_reader_init = readerInit; } + /* Whether to add quiet zone indicators ("<", ">") to HRT (EAN/UPC) */ + bool QZint::guardWhitespace() const { + return m_guard_whitespace; + } + + void QZint::setGuardWhitespace(bool guardWhitespace) { + m_guard_whitespace = guardWhitespace; + } + + /* Whether to embed the font in vector output - currently only for SVG output of EAN/UPC */ + bool QZint::embedVectorFont() const { + return m_embed_vector_font; + } + + void QZint::setEmbedVectorFont(bool embedVectorFont) { + m_embed_vector_font = embedVectorFont; + } + /* Affects error/warning value returned by Zint API (see `getError()` below) */ int QZint::warnLevel() const { return m_warn_level; @@ -918,7 +961,6 @@ namespace Zint { struct zint_vector_string *string; QColor fgColor = str_to_qcolor(m_fgStr); QColor bgColor = str_to_qcolor(m_bgStr); - encode(); painter.save(); @@ -1051,12 +1093,15 @@ namespace Zint { // Plot text string = m_zintSymbol->vector->strings; if (string) { + if (upceanFontID == -2) { /* First time? */ + loadUpceanFont(); + } painter.setRenderHint(QPainter::Antialiasing); QPen p; p.setColor(fgColor); painter.setPen(p); bool bold = (m_zintSymbol->output_options & BOLD_TEXT) && !isExtendable(); - QFont font(fontFamily, -1 /*pointSize*/, bold ? QFont::Bold : -1); + QFont font(isExtendable() ? upceanFontFamily : fontFamily, -1 /*pointSize*/, bold ? QFont::Bold : -1); while (string) { font.setPixelSize(string->fsize); painter.setFont(font); @@ -1235,6 +1280,9 @@ namespace Zint { arg_bool(cmd, "--dotty", dotty()); } + if (isExtendable() && showText()) { + arg_bool(cmd, "--embedfont", embedVectorFont()); + } arg_bool(cmd, "--esc", inputMode() & ESCAPE_MODE); arg_bool(cmd, "--extraesc", inputMode() & EXTRA_ESCAPE_MODE); arg_bool(cmd, "--fast", inputMode() & FAST_MODE); @@ -1255,6 +1303,9 @@ namespace Zint { if (isExtendable() && guardDescent() != 5.0f) { arg_float(cmd, "--guarddescent=", guardDescent(), true /*allowZero*/); } + if (isExtendable() && showText()) { + arg_bool(cmd, "--guardwhitespace", guardWhitespace()); + } if (!autoHeight && !isFixedRatio()) { if (inputMode() & HEIGHTPERROW_MODE) { diff --git a/backend_qt/qzint.h b/backend_qt/qzint.h index 4c209ef4..a4eb06b4 100644 --- a/backend_qt/qzint.h +++ b/backend_qt/qzint.h @@ -212,6 +212,14 @@ public: bool readerInit() const; // `symbol->output_options | READER_INIT` void setReaderInit(bool readerInit); + /* Whether to add quiet zone indicators ("<", ">") to HRT (EAN/UPC) */ + bool guardWhitespace() const; // `symbol->output_options | EANUPC_GUARD_WHITESPACE` + void setGuardWhitespace(bool guardWhitespace); + + /* Whether to embed the font in vector output - currently only for SVG output of EAN/UPC */ + bool embedVectorFont() const; // `symbol->output_options | EANUPC_GUARD_WHITESPACE` + void setEmbedVectorFont(bool embedVectorFont); + /* Affects error/warning value returned by Zint API (see `getError()` below) */ int warnLevel() const; // `symbol->warn_level` void setWarnLevel(int warnLevel); @@ -379,6 +387,8 @@ private: bool m_gs1parens; bool m_gs1nocheck; bool m_reader_init; + bool m_guard_whitespace; + bool m_embed_vector_font; int m_warn_level; bool m_debug; int m_encodedWidth; diff --git a/backend_qt/tests/test_qzint.cpp b/backend_qt/tests/test_qzint.cpp index 784a4a99..c504be3a 100644 --- a/backend_qt/tests/test_qzint.cpp +++ b/backend_qt/tests/test_qzint.cpp @@ -272,6 +272,14 @@ private slots: bc.setReaderInit(readerInit); QCOMPARE(bc.readerInit(), readerInit); + bool guardWhitespace = true; + bc.setGuardWhitespace(guardWhitespace); + QCOMPARE(bc.guardWhitespace(), guardWhitespace); + + bool embedVectorFont = true; + bc.setEmbedVectorFont(embedVectorFont); + QCOMPARE(bc.embedVectorFont(), embedVectorFont); + int warnLevel = WARN_FAIL_ALL; bc.setWarnLevel(warnLevel); QCOMPARE(bc.warnLevel(), warnLevel); @@ -563,6 +571,8 @@ private slots: QTest::addColumn("gs1Parens"); QTest::addColumn("gs1NoCheck"); QTest::addColumn("readerInit"); + QTest::addColumn("guardWhitespace"); + QTest::addColumn("embedVectorFont"); QTest::addColumn("warnLevel"); QTest::addColumn("debug"); @@ -588,7 +598,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 63 --binary --compliantheight -d '12345678'" << "zint.exe -b 63 --binary --compliantheight -d \"12345678\"" @@ -605,7 +615,7 @@ private slots: << "" << "" << QColor(Qt::blue) << QColor(Qt::white) << true // fgStr-cmyk << 0 << 0 << 2 << 3 << 0 // borderTypeIndex-fontSetting << true << false << false << false << false << 0 // showText-rotateAngle - << 7 << false << false << false << WARN_DEFAULT << false // eci-debug + << 7 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 92 --cmyk --eci=7 -d '12345678Ж0%var%' --dotsize=0.9 --dotty --fg=0000FF --scale=4" " --secure=1 --structapp='1,2,as\"dfa'\\''sdf' --vwhitesp=3 -w 2" @@ -613,7 +623,7 @@ private slots: " --secure=1 --structapp=\"1,2,as\\\"dfa'sdf\" --vwhitesp=3 -w 2" << "" << "" << "" << ""; - QTest::newRow("BARCODE_AZTEC") << false << 0.0f << "" + QTest::newRow("BARCODE_AZTEC (bgStr CMYK, fgStr CMYK)") << false << 0.0f << "" << BARCODE_AZTEC << UNICODE_MODE // symbology-inputMode << "12345678Ж0%var%" << "" // text-primary << 0.0f << 1 << 0 << 0 << 4.0f << 0.0f << true << 0.9f << 0.0f // height-textGap @@ -621,7 +631,7 @@ private slots: << "71,0,40,44" << "0,0,0,0" << QColor(Qt::black) << QColor(Qt::white) << true // fgStr-cmyk << 0 << 0 << 2 << 3 << 0 // borderTypeIndex-fontSetting << true << false << false << false << false << 0 // showText-rotateAngle - << 7 << false << false << false << WARN_DEFAULT << false // eci-debug + << 7 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 92 --bg=0,0,0,0 --cmyk --eci=7 -d '12345678Ж0%var%' --dotsize=0.9 --dotty --fg=71,0,40,44 --scale=4" " --secure=1 --structapp='1,2,as\"dfa'\\''sdf' --vwhitesp=3 -w 2" @@ -637,7 +647,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << SMALL_TEXT // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 3 --compliantheight -d '12345' --small --vers=2" << "zint.exe -b 3 --compliantheight -d \"12345\" --small --vers=2" @@ -651,7 +661,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(255, 255, 255, 0) << false // fgStr-cmyk << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting << true << false << true << false << false << 90 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << true // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << true // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 140 --bind --bold --border=2 -d '453678' --height=19.7 --nobackground --quietzones" " --rotate=90 --verbose --vers=7" @@ -659,7 +669,7 @@ private slots: " --rotate=90 --verbose --vers=7" << "" << "" << "" << ""; - QTest::newRow("BARCODE_CHANNEL") << false << 0.0f << "" + QTest::newRow("BARCODE_CHANNEL (bgStr FFFFFF00)") << false << 0.0f << "" << BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode << "453678" << "" // text-primary << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap @@ -667,7 +677,7 @@ private slots: << "" << "FFFFFF00" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting << true << false << true << false << false << 90 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << true // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << true // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 140 --bind --bold --border=2 -d '453678' --height=19.7 --nobackground --quietzones" " --rotate=90 --verbose --vers=7" @@ -675,7 +685,7 @@ private slots: " --rotate=90 --verbose --vers=7" << "" << "" << "" << ""; - QTest::newRow("BARCODE_CHANNEL") << false << 0.0f << "" + QTest::newRow("BARCODE_CHANNEL (bgStr 12345600)") << false << 0.0f << "" << BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode << "453678" << "" // text-primary << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap @@ -683,7 +693,7 @@ private slots: << "" << "12345600" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting << true << false << true << false << false << 90 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << true // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << true // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 140 --bind --bold --border=2 -d '453678' --height=19.7 --nobackground --quietzones" " --rotate=90 --verbose --vers=7" @@ -699,7 +709,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << false << false << true << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 20 -d '1234\\^A56' --extraesc --notext --quietzones" << "zint.exe -b 20 -d \"1234\\^A56\" --extraesc --notext --quietzones" @@ -713,7 +723,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << false << false << true << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 131 --compliantheight -d '[11]901222[99]ABCDE' --height=71.142 --mode=3 --notext" " --primary='[01]12345678901231[15]121212' --quietzones --scale=3.5" @@ -729,7 +739,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 1 << 1 << 0 << 0 << SMALL_TEXT // borderTypeIndex-fontSetting << true << false << false << true << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 23 --compliantheight -d '12345678901234567890123456789012'" " --height=11.7 --heightperrow --noquietzones --rows=4 --separator=2 --small" @@ -745,7 +755,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 24 --compliantheight -d '12345678901234567890'" << "zint.exe -b 24 --compliantheight -d \"12345678901234567890\"" @@ -759,7 +769,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 2 << 4 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << true << WARN_DEFAULT << false // eci-debug + << 0 << false << false << true << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 74 --binary --border=4 --box --cols=5 --compliantheight -d 'T\\n\\xA0t\\\"' --esc --init" " --rows=2 --scale=3 --separator=3" @@ -775,13 +785,13 @@ private slots: << "" << "" << QColor(0x30, 0x31, 0x32, 0x33) << QColor(0xBF, 0xBE, 0xBD, 0xBC) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 93 --bg=BFBEBDBC -d 'daft' --fg=30313233 --height=9.2 --vers=251" << "zint.exe -b 93 --bg=BFBEBDBC -d \"daft\" --fg=30313233 --height=9.2 --vers=251" << "" << "" << "" << ""; - QTest::newRow("BARCODE_DATAMATRIX") << true << 0.0f << "" + QTest::newRow("BARCODE_DATAMATRIX (GS1)") << true << 0.0f << "" << BARCODE_DATAMATRIX << GS1_MODE // symbology-inputMode << "[20]12" << "" // text-primary << 0.0f << -1 << 0 << DM_SQUARE << 1.0f << 0.0f << false << 0.7f << 0.0f // height-textGap @@ -789,7 +799,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << true << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 71 -d '[20]12' --gs1 --gssep --square" << "zint.exe -b 71 -d \"[20]12\" --gs1 --gssep --square" @@ -803,7 +813,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 71 --binary -d 'ABCDEFGH\\x01I' --esc --fast" << "zint.exe -b 71 --binary -d \"ABCDEFGH\\x01I\" --esc --fast" @@ -817,7 +827,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 139 --binary --compliantheight -d '[11]901222[99]ABCDE' --height=40.8 --heightperrow" " --primary='[91]ABCDEFGHIJKL' --rows=2" @@ -833,21 +843,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug - << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp - << "zint -b 115 --cols=8 -d '[20]01' --dotsize=0.7 --gs1 --mask=0" - << "zint.exe -b 115 --cols=8 -d \"[20]01\" --dotsize=0.7 --gs1 --mask=0" - << "" << "" << "" << ""; - - QTest::newRow("BARCODE_DOTCODE") << false << 1.0f << "" - << BARCODE_DOTCODE << GS1_MODE // symbology-inputMode - << "[20]01" << "" // text-primary - << 30.0f << -1 << 8 << ((0 + 1) << 8) << 1.0f << 0.0f << false << 0.7f << 0.0f // height-textGap - << 0.0f << 0 << 0 << "" // guardDescent-structAppID - << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk - << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting - << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 115 --cols=8 -d '[20]01' --dotsize=0.7 --gs1 --mask=0" << "zint.exe -b 115 --cols=8 -d \"[20]01\" --dotsize=0.7 --gs1 --mask=0" @@ -861,7 +857,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.375 << 0 << 600 << 1 << 0 << 0 // xdimdp << "zint -b 96 --compliantheight -d '1234567890123456789012345678' --scalexdimdp=0.375,24" << "zint.exe -b 96 --compliantheight -d \"1234567890123456789012345678\" --scalexdimdp=0.375,24" @@ -876,12 +872,26 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 13 --addongap=8 --compliantheight -d '123456789012+12' --guarddescent=0" << "zint.exe -b 13 --addongap=8 --compliantheight -d \"123456789012+12\" --guarddescent=0" << "" << "" << "" << ""; + QTest::newRow("BARCODE_EANX (guardWhitespace/embedVectorFont") << true << 0.0f << "" + << BARCODE_EANX << UNICODE_MODE // symbology-inputMode + << "123456789012+12" << "" // text-primary + << 0.0f << -1 << 8 << 0 << 1.0f << 0.0f << true << 0.8f << 0.0f // height-textGap + << 0.0f << 0 << 0 << "" // guardDescent-structAppID + << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk + << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting + << true << false << false << false << true << 0 // showText-rotateAngle + << 0 << false << false << false << true << true << WARN_DEFAULT << false // eci-debug + << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp + << "zint -b 13 --addongap=8 --compliantheight -d '123456789012+12' --embedfont --guarddescent=0 --guardwhitespace" + << "zint.exe -b 13 --addongap=8 --compliantheight -d \"123456789012+12\" --embedfont --guarddescent=0 --guardwhitespace" + << "" << "" << "" << ""; + QTest::newRow("BARCODE_GRIDMATRIX") << false << 0.0f << "" << BARCODE_GRIDMATRIX << UNICODE_MODE // symbology-inputMode << "Your Data Here!" << "" // text-primary @@ -890,7 +900,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << true << false << true << 270 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 142 -d 'Your Data Here!' --quietzones --rotate=270 --scale=0.5 --secure=1 --vers=5" << "zint.exe -b 142 -d \"Your Data Here!\" --quietzones --rotate=270 --scale=0.5 --secure=1 --vers=5" @@ -904,7 +914,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 29 << false << false << false << WARN_DEFAULT << false // eci-debug + << 29 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 116 --eci=29 -d 'éβÿ啊\\e\"'\\''' --esc --mask=0 --secure=2 --vers=5" << "zint.exe -b 116 --eci=29 -d \"éβÿ啊\\e\\\"'\" --esc --mask=0 --secure=2 --vers=5" @@ -918,7 +928,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << true << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 102 -d '1234' --dmre --vers=8" << "zint.exe -b 102 -d \"1234\" --dmre --vers=8" @@ -932,7 +942,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << true << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 106 --binary --cols=4 -d 'TEXT' --height=3.5 --heightperrow --quietzones" " --rows=10 --scale=10 --secure=3 --structapp=1,2" @@ -948,13 +958,13 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 89 --compliantheight -d '9212320967145'" << "zint.exe -b 89 --compliantheight -d \"9212320967145\"" << "" << "" << "" << ""; - QTest::newRow("BARCODE_ITF14") << true << 0.0f << "" + QTest::newRow("BARCODE_ITF14 (border)") << true << 0.0f << "" << BARCODE_ITF14 << UNICODE_MODE // symbology-inputMode << "9212320967145" << "" // text-primary << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap @@ -962,7 +972,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 1 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 89 --border=1 --compliantheight -d '9212320967145'" << "zint.exe -b 89 --border=1 --compliantheight -d \"9212320967145\"" @@ -977,7 +987,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << true << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 57 -d '1Z00004951\\GUPSN\\G06X610\\G159\\G1234567\\G1/1\\G\\GY\\G1 MAIN ST\\GTOWN\\GNY\\R\\E'" " --esc --primary='152382802840001' --quietzones --scale=2.5 --scmvv=96" @@ -993,7 +1003,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 97 -d '1234' --fullmultibyte --mask=3 --secure=2 --vers=3" << "zint.exe -b 97 -d \"1234\" --fullmultibyte --mask=3 --secure=2 --vers=3" @@ -1007,7 +1017,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << true << false << true << 0 // showText-rotateAngle - << 0 << true << true << false << WARN_DEFAULT << false // eci-debug + << 0 << true << true << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 58 -d '(01)12' --fullmultibyte --gs1 --gs1parens --gs1nocheck --mask=0 --quietzones" " --secure=1 --vers=5" @@ -1023,7 +1033,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 180 // showText-rotateAngle - << 20 << false << false << false << WARN_DEFAULT << false // eci-debug + << 20 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 145 --eci=20 -d 'テ' --rotate=180 --vers=8" << "zint.exe -b 145 --eci=20 -d \"テ\" --rotate=180 --vers=8" @@ -1037,7 +1047,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 144 -d '(01)1' --gs1 --gs1parens --gs1nocheck --secure=6 --structapp='1,2,4' --vers=2" << "zint.exe -b 144 -d \"(01)1\" --gs1 --gs1parens --gs1nocheck --secure=6 --structapp=\"1,2,4\" --vers=2" @@ -1051,7 +1061,7 @@ private slots: << "" << "" << QColor(0xEF, 0x29, 0x29) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting << true << false << false << true << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_FAIL_ALL << false // eci-debug + << 0 << false << false << false << false << false << WARN_FAIL_ALL << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 136 --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5" " --noquietzones -o 'out.svg' --primary='12345670+1234' --small --werror" @@ -1073,13 +1083,13 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 73 --bold -d '12345678701234567' --height=20 --small --textgap=1.2 --vers=1" << "zint.exe -b 73 --bold -d \"12345678701234567\" --height=20 --small --textgap=1.2 --vers=1" << "" << "" << "" << ""; - QTest::newRow("BARCODE_VIN") << false << 2.0f << "" + QTest::newRow("BARCODE_VIN (notext)") << false << 2.0f << "" << BARCODE_VIN << UNICODE_MODE // symbology-inputMode << "12345678701234567" << "" // text-primary << 20.0f << -1 << 1 << 0 << 1.0f << 0.0f << false << 0.8f << 1.2f // height-textGap @@ -1087,7 +1097,7 @@ private slots: << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting << false << false << false << false << true << 0 // showText-rotateAngle - << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0 << false << false << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp << "zint -b 73 -d '12345678701234567' --height=20 --notext --vers=1" << "zint.exe -b 73 -d \"12345678701234567\" --height=20 --notext --vers=1" @@ -1141,6 +1151,8 @@ private slots: QFETCH(bool, gs1Parens); QFETCH(bool, gs1NoCheck); QFETCH(bool, readerInit); + QFETCH(bool, guardWhitespace); + QFETCH(bool, embedVectorFont); QFETCH(int, warnLevel); QFETCH(bool, debug); @@ -1203,6 +1215,8 @@ private slots: bc.setGS1Parens(gs1Parens); bc.setGS1NoCheck(gs1NoCheck); bc.setReaderInit(readerInit); + bc.setGuardWhitespace(guardWhitespace); + bc.setEmbedVectorFont(embedVectorFont); bc.setWarnLevel(warnLevel); bc.setDebug(debug); diff --git a/backend_tcl/zint.c b/backend_tcl/zint.c index 916f47de..b5a041b8 100644 --- a/backend_tcl/zint.c +++ b/backend_tcl/zint.c @@ -168,6 +168,8 @@ - Added -esc and -extraesc options 2023-02-10 GL - Added -textgap option +2023-08-11 GL +- Added -guardwhitespace option */ #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) @@ -515,6 +517,7 @@ static const char help_message[] = "zint tcl(stub,obj) dll\n" /* cli option --dump not supported */ /* cli option --ecinos not supported */ " -eci choice: ECI to use\n" + /* cli option --embedfont not supported (vector output only) */ " -esc bool: Process escape sequences in input data\n" " -extraesc bool: Process symbology-specific escape sequences (Code 128 only)\n" " -fast bool: use fast encodation (Data Matrix)\n" @@ -527,6 +530,7 @@ static const char help_message[] = "zint tcl(stub,obj) dll\n" " -gs1parens bool: for gs1, AIs enclosed in parentheses instead of square brackets\n" " -gssep bool: for gs1, use gs as separator instead fnc1 (Datamatrix only)\n" " -guarddescent double: Height of guard bar descent in modules (EAN/UPC only)\n" + " -guardwhitespace bool: add quiet zone indicators (EAN/UPC only)\n" " -height double: Symbol height in modules\n" " -heightperrow bool: treat height as per-row\n" /* cli option --input not supported */ @@ -553,7 +557,7 @@ static const char help_message[] = "zint tcl(stub,obj) dll\n" " -smalltext bool: tiny interpretation line font\n" " -square bool: force Data Matrix symbols to be square\n" " -structapp {index count ?id?}: set Structured Append info\n" - " -textgap double: gap between barcode and text\n" + " -textgap double: Gap between barcode and text\n" /* cli option --types not supported */ " -vers integer: Symbology option\n" /* cli option --version not supported */ @@ -788,7 +792,7 @@ static int Encode(Tcl_Interp *interp, int objc, "-addongap", "-barcode", "-bg", "-bind", "-bindtop", "-bold", "-border", "-box", "-cols", "-compliantheight", "-dmre", "-dotsize", "-dotty", "-eci", "-esc", "-extraesc", "-fast", "-fg", "-format", "-fullmultibyte", - "-gs1nocheck", "-gs1parens", "-gssep", "-guarddescent", + "-gs1nocheck", "-gs1parens", "-gssep", "-guarddescent", "-guardwhitespace", "-height", "-heightperrow", "-init", "-mask", "-mode", "-nobackground", "-noquietzones", "-notext", "-primary", "-quietzones", "-reverse", "-rotate", "-rows", "-scale", "-scalexdimdp", "-scmvv", "-secure", @@ -800,7 +804,7 @@ static int Encode(Tcl_Interp *interp, int objc, iAddonGap, iBarcode, iBG, iBind, iBindTop, iBold, iBorder, iBox, iCols, iCompliantHeight, iDMRE, iDotSize, iDotty, iECI, iEsc, iExtraEsc, iFast, iFG, iFormat, iFullMultiByte, - iGS1NoCheck, iGS1Parens, iGSSep, iGuardDescent, + iGS1NoCheck, iGS1Parens, iGSSep, iGuardDescent, iGuardWhitespace, iHeight, iHeightPerRow, iInit, iMask, iMode, iNoBackground, iNoQuietZones, iNoText, iPrimary, iQuietZones, iReverse, iRotate, iRows, iScale, iScaleXdimDp, iSCMvv, iSecure, @@ -836,6 +840,7 @@ static int Encode(Tcl_Interp *interp, int objc, case iGS1NoCheck: case iGS1Parens: case iGSSep: + case iGuardWhitespace: case iHeightPerRow: case iInit: case iNoBackground: @@ -1061,6 +1066,13 @@ static int Encode(Tcl_Interp *interp, int objc, my_symbol->eci = s_eci_number[ECIIndex]; } break; + case iGuardWhitespace: + if (intValue) { + my_symbol->output_options |= EANUPC_GUARD_WHITESPACE; + } else { + my_symbol->output_options &= ~EANUPC_GUARD_WHITESPACE; + } + break; case iHeightPerRow: if (intValue) { my_symbol->input_mode |= HEIGHTPERROW_MODE; diff --git a/docs/images/auspost.svg b/docs/images/auspost.svg index 24a0ab6f..7e1d48a5 100644 --- a/docs/images/auspost.svg +++ b/docs/images/auspost.svg @@ -1,49 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/ausredirect.svg b/docs/images/ausredirect.svg index a9744300..fb86989f 100644 --- a/docs/images/ausredirect.svg +++ b/docs/images/ausredirect.svg @@ -1,49 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/ausreply.svg b/docs/images/ausreply.svg index 1a27f620..13151b07 100644 --- a/docs/images/ausreply.svg +++ b/docs/images/ausreply.svg @@ -1,49 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/ausroute.svg b/docs/images/ausroute.svg index 8d1fc533..99f952ad 100644 --- a/docs/images/ausroute.svg +++ b/docs/images/ausroute.svg @@ -1,49 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/azrune.svg b/docs/images/azrune.svg index 19c50bad..f45bc7f7 100644 --- a/docs/images/azrune.svg +++ b/docs/images/azrune.svg @@ -1,32 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/aztec.svg b/docs/images/aztec.svg index b33cb74d..0b3c0d76 100644 --- a/docs/images/aztec.svg +++ b/docs/images/aztec.svg @@ -1,58 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/aztec_segs.svg b/docs/images/aztec_segs.svg index c8f35e0d..c9301ba0 100644 --- a/docs/images/aztec_segs.svg +++ b/docs/images/aztec_segs.svg @@ -1,125 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/bc412.svg b/docs/images/bc412.svg index cae5391e..f1084b8b 100644 --- a/docs/images/bc412.svg +++ b/docs/images/bc412.svg @@ -1,51 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AQQ45670 - - + + + Zint Generated Symbol + + + + + AQQ45670 + + diff --git a/docs/images/c25iata.svg b/docs/images/c25iata.svg index 9944ce41..de2b4e88 100644 --- a/docs/images/c25iata.svg +++ b/docs/images/c25iata.svg @@ -1,70 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9212320967 - - + + + Zint Generated Symbol + + + + + 9212320967 + + diff --git a/docs/images/c25ind.svg b/docs/images/c25ind.svg index 77899bf5..a9006f1a 100644 --- a/docs/images/c25ind.svg +++ b/docs/images/c25ind.svg @@ -1,72 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9212320967 - - + + + Zint Generated Symbol + + + + + 9212320967 + + diff --git a/docs/images/c25inter.svg b/docs/images/c25inter.svg index ded456b4..1629122b 100644 --- a/docs/images/c25inter.svg +++ b/docs/images/c25inter.svg @@ -1,45 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9212320967 - - + + + Zint Generated Symbol + + + + + 9212320967 + + diff --git a/docs/images/c25logic.svg b/docs/images/c25logic.svg index f9dc7843..12b9624f 100644 --- a/docs/images/c25logic.svg +++ b/docs/images/c25logic.svg @@ -1,50 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9212320967 - - + + + Zint Generated Symbol + + + + + 9212320967 + + diff --git a/docs/images/c25standard.svg b/docs/images/c25standard.svg index ea03c870..3f48f896 100644 --- a/docs/images/c25standard.svg +++ b/docs/images/c25standard.svg @@ -1,52 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9212320967 - - + + + Zint Generated Symbol + + + + + 9212320967 + + diff --git a/docs/images/cepnet.svg b/docs/images/cepnet.svg index c0309ead..05f91f1a 100644 --- a/docs/images/cepnet.svg +++ b/docs/images/cepnet.svg @@ -1,59 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/channel.svg b/docs/images/channel.svg index c4e45f5b..492610ca 100644 --- a/docs/images/channel.svg +++ b/docs/images/channel.svg @@ -1,28 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - 453678 - - + + + Zint Generated Symbol + + + + + 453678 + + diff --git a/docs/images/codabar.svg b/docs/images/codabar.svg index ec8f65d8..0fcd3f9c 100644 --- a/docs/images/codabar.svg +++ b/docs/images/codabar.svg @@ -1,44 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A37859B - - + + + Zint Generated Symbol + + + + + A37859B + + diff --git a/docs/images/codablockf.svg b/docs/images/codablockf.svg index b5ef6701..06b679d9 100644 --- a/docs/images/codablockf.svg +++ b/docs/images/codablockf.svg @@ -1,122 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/code11.svg b/docs/images/code11.svg index d345b175..634c95b5 100644 --- a/docs/images/code11.svg +++ b/docs/images/code11.svg @@ -1,58 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 921232096769 - - + + + Zint Generated Symbol + + + + + 921232096769 + + diff --git a/docs/images/code128.svg b/docs/images/code128.svg index f11b23f5..86b4b4d8 100644 --- a/docs/images/code128.svg +++ b/docs/images/code128.svg @@ -1,50 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 130170X178 - - + + + Zint Generated Symbol + + + + + 130170X178 + + diff --git a/docs/images/code128_box.svg b/docs/images/code128_box.svg index 19a075c8..d93a3b88 100644 --- a/docs/images/code128_box.svg +++ b/docs/images/code128_box.svg @@ -1,57 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This Text - - + + + Zint Generated Symbol + + + + + This Text + + diff --git a/docs/images/code128_green.svg b/docs/images/code128_green.svg index bbf71277..d5804e5d 100644 --- a/docs/images/code128_green.svg +++ b/docs/images/code128_green.svg @@ -1,53 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This Text - - + + + Zint Generated Symbol + + + + + This Text + + diff --git a/docs/images/code128_green_alpha.svg b/docs/images/code128_green_alpha.svg index 451e13e4..e447a7f0 100644 --- a/docs/images/code128_green_alpha.svg +++ b/docs/images/code128_green_alpha.svg @@ -1,53 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This Text - - + + + Zint Generated Symbol + + + + + This Text + + diff --git a/docs/images/code128_rotate90.svg b/docs/images/code128_rotate90.svg index c7752eea..ab1b2eab 100644 --- a/docs/images/code128_rotate90.svg +++ b/docs/images/code128_rotate90.svg @@ -1,53 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This Text - - + + + Zint Generated Symbol + + + + + This Text + + diff --git a/docs/images/code128_small_bold.svg b/docs/images/code128_small_bold.svg index b4b46301..e5d149e3 100644 --- a/docs/images/code128_small_bold.svg +++ b/docs/images/code128_small_bold.svg @@ -1,53 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This Text - - + + + Zint Generated Symbol + + + + + This Text + + diff --git a/docs/images/code128_stacked.svg b/docs/images/code128_stacked.svg index a29945db..ffdb7f9f 100644 --- a/docs/images/code128_stacked.svg +++ b/docs/images/code128_stacked.svg @@ -1,42 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - That - - + + + Zint Generated Symbol + + + + + That + + diff --git a/docs/images/code128_stacked_sep2.svg b/docs/images/code128_stacked_sep2.svg index 3677e774..509a1cab 100644 --- a/docs/images/code128_stacked_sep2.svg +++ b/docs/images/code128_stacked_sep2.svg @@ -1,57 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/code128_textgap.svg b/docs/images/code128_textgap.svg index 57ecc716..65186073 100644 --- a/docs/images/code128_textgap.svg +++ b/docs/images/code128_textgap.svg @@ -1,47 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ãccent - - + + + Zint Generated Symbol + + + + + Ãccent + + diff --git a/docs/images/code128ab.svg b/docs/images/code128ab.svg index b4fbbba6..47a1000d 100644 --- a/docs/images/code128ab.svg +++ b/docs/images/code128ab.svg @@ -1,56 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 130170X178 - - + + + Zint Generated Symbol + + + + + 130170X178 + + diff --git a/docs/images/code16k.svg b/docs/images/code16k.svg index fba74a78..2c5cbf1e 100644 --- a/docs/images/code16k.svg +++ b/docs/images/code16k.svg @@ -1,55 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/code32.svg b/docs/images/code32.svg index 789a547a..a6af049b 100644 --- a/docs/images/code32.svg +++ b/docs/images/code32.svg @@ -1,56 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A143523126 - - + + + Zint Generated Symbol + + + + + A143523126 + + diff --git a/docs/images/code39.svg b/docs/images/code39.svg index 662c4e77..a7ab549f 100644 --- a/docs/images/code39.svg +++ b/docs/images/code39.svg @@ -1,41 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *1AB* - - + + + Zint Generated Symbol + + + + + *1AB* + + diff --git a/docs/images/code49.svg b/docs/images/code49.svg index 625e2aa4..94aeb5d8 100644 --- a/docs/images/code49.svg +++ b/docs/images/code49.svg @@ -1,108 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/code93.svg b/docs/images/code93.svg index 41e2cfff..50c4bed4 100644 --- a/docs/images/code93.svg +++ b/docs/images/code93.svg @@ -1,38 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - C93 - - + + + Zint Generated Symbol + + + + + C93 + + diff --git a/docs/images/codeone.svg b/docs/images/codeone.svg index 10c43251..b2b54a7a 100644 --- a/docs/images/codeone.svg +++ b/docs/images/codeone.svg @@ -1,59 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/codeone_s_dotty.svg b/docs/images/codeone_s_dotty.svg index b2744573..bec3da68 100644 --- a/docs/images/codeone_s_dotty.svg +++ b/docs/images/codeone_s_dotty.svg @@ -1,139 +1,135 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/daft_rm4scc.svg b/docs/images/daft_rm4scc.svg index 08ae7809..4645990d 100644 --- a/docs/images/daft_rm4scc.svg +++ b/docs/images/daft_rm4scc.svg @@ -1,50 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/datamatrix_big5.svg b/docs/images/datamatrix_big5.svg index 31063c74..d24f457c 100644 --- a/docs/images/datamatrix_big5.svg +++ b/docs/images/datamatrix_big5.svg @@ -1,52 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/datamatrix_euro.svg b/docs/images/datamatrix_euro.svg index f6b10fb7..384162a3 100644 --- a/docs/images/datamatrix_euro.svg +++ b/docs/images/datamatrix_euro.svg @@ -1,52 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/datamatrix_structapp.svg b/docs/images/datamatrix_structapp.svg index 512dd6c3..48d5d5f2 100644 --- a/docs/images/datamatrix_structapp.svg +++ b/docs/images/datamatrix_structapp.svg @@ -1,76 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/dbar_exp.svg b/docs/images/dbar_exp.svg index 9bf8bf72..bbcdf308 100644 --- a/docs/images/dbar_exp.svg +++ b/docs/images/dbar_exp.svg @@ -1,60 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (01)98898765432106(3202)012345(15)991231 - - + + + Zint Generated Symbol + + + + + (01)98898765432106(3202)012345(15)991231 + + diff --git a/docs/images/dbar_expstk.svg b/docs/images/dbar_expstk.svg index 616f1c69..82a971ba 100644 --- a/docs/images/dbar_expstk.svg +++ b/docs/images/dbar_expstk.svg @@ -1,137 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/dbar_ltd.svg b/docs/images/dbar_ltd.svg index 64329f5b..58af585c 100644 --- a/docs/images/dbar_ltd.svg +++ b/docs/images/dbar_ltd.svg @@ -1,39 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (01)09501101530010 - - + + + Zint Generated Symbol + + + + + (01)09501101530010 + + diff --git a/docs/images/dbar_omn.svg b/docs/images/dbar_omn.svg index cd9ae514..69b19830 100644 --- a/docs/images/dbar_omn.svg +++ b/docs/images/dbar_omn.svg @@ -1,39 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (01)09501101530010 - - + + + Zint Generated Symbol + + + + + (01)09501101530010 + + diff --git a/docs/images/dbar_omnstk.svg b/docs/images/dbar_omnstk.svg index cf310577..f225217c 100644 --- a/docs/images/dbar_omnstk.svg +++ b/docs/images/dbar_omnstk.svg @@ -1,75 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/dbar_stk.svg b/docs/images/dbar_stk.svg index 27e97e49..890df255 100644 --- a/docs/images/dbar_stk.svg +++ b/docs/images/dbar_stk.svg @@ -1,53 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/dbar_truncated.svg b/docs/images/dbar_truncated.svg index f4328436..23b471b9 100644 --- a/docs/images/dbar_truncated.svg +++ b/docs/images/dbar_truncated.svg @@ -1,39 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (01)09501101530010 - - + + + Zint Generated Symbol + + + + + (01)09501101530010 + + diff --git a/docs/images/dotcode.svg b/docs/images/dotcode.svg index 8ce11fc1..1f4f5ca9 100644 --- a/docs/images/dotcode.svg +++ b/docs/images/dotcode.svg @@ -1,177 +1,173 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/dpd.svg b/docs/images/dpd.svg index 67a25365..9770e489 100644 --- a/docs/images/dpd.svg +++ b/docs/images/dpd.svg @@ -1,75 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0003 932 0621 9912 3456 78 101 040 9 - - + + + Zint Generated Symbol + + + + + 0003 932 0621 9912 3456 78 101 040 9 + + diff --git a/docs/images/dpident.svg b/docs/images/dpident.svg index ab1d233d..2ceef4ea 100644 --- a/docs/images/dpident.svg +++ b/docs/images/dpident.svg @@ -1,50 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 91.23 2.096.712 7 - - + + + Zint Generated Symbol + + + + + 91.23 2.096.712 7 + + diff --git a/docs/images/dpleit.svg b/docs/images/dpleit.svg index 87604033..d0e894c9 100644 --- a/docs/images/dpleit.svg +++ b/docs/images/dpleit.svg @@ -1,55 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 92123.209.671.456 - - + + + Zint Generated Symbol + + + + + 92123.209.671.456 + + diff --git a/docs/images/ean14.svg b/docs/images/ean14.svg index faf3f000..84389812 100644 --- a/docs/images/ean14.svg +++ b/docs/images/ean14.svg @@ -1,53 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (01)98898765432106 - - + + + Zint Generated Symbol + + + + + (01)98898765432106 + + diff --git a/docs/images/eanx13.svg b/docs/images/eanx13.svg index e210ef2f..d1263ffd 100644 --- a/docs/images/eanx13.svg +++ b/docs/images/eanx13.svg @@ -1,54 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4 - - - 512345 - - - 678906 - - + + + Zint Generated Symbol + + + + + 4 + + + 512345 + + + 678906 + + diff --git a/docs/images/eanx5.svg b/docs/images/eanx5.svg index a0d19308..2f13209b 100644 --- a/docs/images/eanx5.svg +++ b/docs/images/eanx5.svg @@ -1,32 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - 54321 - - + + + Zint Generated Symbol + + + + + 54321 + + diff --git a/docs/images/eanx8_5.svg b/docs/images/eanx8_5.svg index b91cb7c9..0ac9bfc7 100644 --- a/docs/images/eanx8_5.svg +++ b/docs/images/eanx8_5.svg @@ -1,62 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7432 - - - 3654 - - - 54321 - - + + + Zint Generated Symbol + + + + + 7432 + + + 3654 + + + 54321 + + diff --git a/docs/images/eanx8_gws.svg b/docs/images/eanx8_gws.svg new file mode 100644 index 00000000..d78722d6 --- /dev/null +++ b/docs/images/eanx8_gws.svg @@ -0,0 +1,21 @@ + + + + Zint Generated Symbol + + + + + < + + + 7432 + + + 3654 + + + > + + + diff --git a/docs/images/eanx_cc_a.svg b/docs/images/eanx_cc_a.svg index 1945d2a5..e2f02dd0 100644 --- a/docs/images/eanx_cc_a.svg +++ b/docs/images/eanx_cc_a.svg @@ -1,119 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 - - - 312345 - - - 678903 - - + + + Zint Generated Symbol + + + + + 3 + + + 312345 + + + 678903 + + diff --git a/docs/images/eanx_cc_b.svg b/docs/images/eanx_cc_b.svg index ce5060ef..2234369f 100644 --- a/docs/images/eanx_cc_b.svg +++ b/docs/images/eanx_cc_b.svg @@ -1,168 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 - - - 312345 - - - 678903 - - + + + Zint Generated Symbol + + + + + 3 + + + 312345 + + + 678903 + + diff --git a/docs/images/excode39.svg b/docs/images/excode39.svg index 25a7d8a2..1bbbdb0b 100644 --- a/docs/images/excode39.svg +++ b/docs/images/excode39.svg @@ -1,76 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 123.45fd - - + + + Zint Generated Symbol + + + + + 123.45fd + + diff --git a/docs/images/fim.svg b/docs/images/fim.svg index 999f41b2..46031cd7 100644 --- a/docs/images/fim.svg +++ b/docs/images/fim.svg @@ -1,18 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/flat.svg b/docs/images/flat.svg index 1953f8a8..8ee1d4e4 100644 --- a/docs/images/flat.svg +++ b/docs/images/flat.svg @@ -1,17 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/gridmatrix.svg b/docs/images/gridmatrix.svg index cae90115..17c0466a 100644 --- a/docs/images/gridmatrix.svg +++ b/docs/images/gridmatrix.svg @@ -1,498 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/gs1_128.svg b/docs/images/gs1_128.svg index 9009fbce..cd2c7785 100644 --- a/docs/images/gs1_128.svg +++ b/docs/images/gs1_128.svg @@ -1,80 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (01)98898765432106(3202)012345(15)991231 - - + + + Zint Generated Symbol + + + + + (01)98898765432106(3202)012345(15)991231 + + diff --git a/docs/images/gs1_128_cc_c.svg b/docs/images/gs1_128_cc_c.svg index 068a0588..94730295 100644 --- a/docs/images/gs1_128_cc_c.svg +++ b/docs/images/gs1_128_cc_c.svg @@ -1,207 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (01)03312345678903 - - + + + Zint Generated Symbol + + + + + (01)03312345678903 + + diff --git a/docs/images/gui_appearance.png b/docs/images/gui_appearance.png index a65caa5f..78b39da4 100644 Binary files a/docs/images/gui_appearance.png and b/docs/images/gui_appearance.png differ diff --git a/docs/images/gui_aztec.png b/docs/images/gui_aztec.png index 12b24819..07e6ef1f 100644 Binary files a/docs/images/gui_aztec.png and b/docs/images/gui_aztec.png differ diff --git a/docs/images/gui_cli_equivalent.png b/docs/images/gui_cli_equivalent.png index cfba5c79..cfe57909 100644 Binary files a/docs/images/gui_cli_equivalent.png and b/docs/images/gui_cli_equivalent.png differ diff --git a/docs/images/gui_composite.png b/docs/images/gui_composite.png index 51bc20dc..8570a793 100644 Binary files a/docs/images/gui_composite.png and b/docs/images/gui_composite.png differ diff --git a/docs/images/gui_data_dialog.png b/docs/images/gui_data_dialog.png index 0cff7f1d..b07e1b44 100644 Binary files a/docs/images/gui_data_dialog.png and b/docs/images/gui_data_dialog.png differ diff --git a/docs/images/gui_export.png b/docs/images/gui_export.png index c1159a98..b7623cfe 100644 Binary files a/docs/images/gui_export.png and b/docs/images/gui_export.png differ diff --git a/docs/images/gui_main.png b/docs/images/gui_main.png index c2e1b7da..97167ad6 100644 Binary files a/docs/images/gui_main.png and b/docs/images/gui_main.png differ diff --git a/docs/images/gui_menus.png b/docs/images/gui_menus.png index b0c2d81d..b51c1bd2 100644 Binary files a/docs/images/gui_menus.png and b/docs/images/gui_menus.png differ diff --git a/docs/images/gui_segs.png b/docs/images/gui_segs.png index 33800fe5..2c5e6569 100644 Binary files a/docs/images/gui_segs.png and b/docs/images/gui_segs.png differ diff --git a/docs/images/gui_sequence.png b/docs/images/gui_sequence.png index ad03b4dc..701af04c 100644 Binary files a/docs/images/gui_sequence.png and b/docs/images/gui_sequence.png differ diff --git a/docs/images/hanxin.svg b/docs/images/hanxin.svg index dfc5b22b..781fab18 100644 --- a/docs/images/hanxin.svg +++ b/docs/images/hanxin.svg @@ -1,105 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/hibc_128.svg b/docs/images/hibc_128.svg index dd2cc5aa..490faa25 100644 --- a/docs/images/hibc_128.svg +++ b/docs/images/hibc_128.svg @@ -1,71 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *+A123BJC5D6E71G* - - + + + Zint Generated Symbol + + + + + *+A123BJC5D6E71G* + + diff --git a/docs/images/hibc_39.svg b/docs/images/hibc_39.svg index 8779ba48..e1e670ce 100644 --- a/docs/images/hibc_39.svg +++ b/docs/images/hibc_39.svg @@ -1,76 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *+14352312J* - - + + + Zint Generated Symbol + + + + + *+14352312J* + + diff --git a/docs/images/hibc_dm.svg b/docs/images/hibc_dm.svg index ed82a6e9..64e68668 100644 --- a/docs/images/hibc_dm.svg +++ b/docs/images/hibc_dm.svg @@ -1,106 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/isbnx.svg b/docs/images/isbnx.svg index 2f4b42dd..6dd4ad49 100644 --- a/docs/images/isbnx.svg +++ b/docs/images/isbnx.svg @@ -1,54 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9 - - - 789295 - - - 055124 - - + + + Zint Generated Symbol + + + + + 9 + + + 789295 + + + 055124 + + diff --git a/docs/images/isbnx_gws.svg b/docs/images/isbnx_gws.svg new file mode 100644 index 00000000..1419b358 --- /dev/null +++ b/docs/images/isbnx_gws.svg @@ -0,0 +1,21 @@ + + + + Zint Generated Symbol + + + + + 9 + + + 789295 + + + 055124 + + + > + + + diff --git a/docs/images/itf14.svg b/docs/images/itf14.svg index 6bf9e21b..3b73e54b 100644 --- a/docs/images/itf14.svg +++ b/docs/images/itf14.svg @@ -1,59 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 92123209671459 - - + + + Zint Generated Symbol + + + + + 92123209671459 + + diff --git a/docs/images/itf14_border0.svg b/docs/images/itf14_border0.svg index 4f0f5a7b..3dbaf9cf 100644 --- a/docs/images/itf14_border0.svg +++ b/docs/images/itf14_border0.svg @@ -1,55 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 92123209671459 - - + + + Zint Generated Symbol + + + + + 92123209671459 + + diff --git a/docs/images/japanpost.svg b/docs/images/japanpost.svg index a8a412d0..fccc871f 100644 --- a/docs/images/japanpost.svg +++ b/docs/images/japanpost.svg @@ -1,79 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/kix.svg b/docs/images/kix.svg index 41dfd4f2..29d1afd3 100644 --- a/docs/images/kix.svg +++ b/docs/images/kix.svg @@ -1,56 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/koreapost.svg b/docs/images/koreapost.svg index 59ee108b..fcfbe48b 100644 --- a/docs/images/koreapost.svg +++ b/docs/images/koreapost.svg @@ -1,44 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9234570 - - + + + Zint Generated Symbol + + + + + 9234570 + + diff --git a/docs/images/logmars.svg b/docs/images/logmars.svg index 754f22ca..ba5c7466 100644 --- a/docs/images/logmars.svg +++ b/docs/images/logmars.svg @@ -1,86 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 12345/ABCDET - - + + + Zint Generated Symbol + + + + + 12345/ABCDET + + diff --git a/docs/images/mailmark_2d.svg b/docs/images/mailmark_2d.svg index 2d209255..cab296ca 100644 --- a/docs/images/mailmark_2d.svg +++ b/docs/images/mailmark_2d.svg @@ -1,204 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/mailmark_4s.svg b/docs/images/mailmark_4s.svg index 2afcdc54..fdf55d1f 100644 --- a/docs/images/mailmark_4s.svg +++ b/docs/images/mailmark_4s.svg @@ -1,78 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/maxicode.svg b/docs/images/maxicode.svg index eedef1d7..344fce47 100644 --- a/docs/images/maxicode.svg +++ b/docs/images/maxicode.svg @@ -1,451 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + diff --git a/docs/images/micropdf417.svg b/docs/images/micropdf417.svg index 3c5933d2..5870517a 100644 --- a/docs/images/micropdf417.svg +++ b/docs/images/micropdf417.svg @@ -1,80 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/microqr.svg b/docs/images/microqr.svg index a17851c9..3a384963 100644 --- a/docs/images/microqr.svg +++ b/docs/images/microqr.svg @@ -1,43 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/msi_plessey.svg b/docs/images/msi_plessey.svg index 72bc8b7e..64095e0c 100644 --- a/docs/images/msi_plessey.svg +++ b/docs/images/msi_plessey.svg @@ -1,43 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 650291 - - + + + Zint Generated Symbol + + + + + 650291 + + diff --git a/docs/images/nve18.svg b/docs/images/nve18.svg index 5252437b..6feed9b7 100644 --- a/docs/images/nve18.svg +++ b/docs/images/nve18.svg @@ -1,59 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (00)376123450000010039 - - + + + Zint Generated Symbol + + + + + (00)376123450000010039 + + diff --git a/docs/images/pdf417.svg b/docs/images/pdf417.svg index 918325af..70987e39 100644 --- a/docs/images/pdf417.svg +++ b/docs/images/pdf417.svg @@ -1,113 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/pdf417_heightperrow.svg b/docs/images/pdf417_heightperrow.svg index 717db517..fee8f4a8 100644 --- a/docs/images/pdf417_heightperrow.svg +++ b/docs/images/pdf417_heightperrow.svg @@ -1,140 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/pdf417comp.svg b/docs/images/pdf417comp.svg index e589a911..ee99aae6 100644 --- a/docs/images/pdf417comp.svg +++ b/docs/images/pdf417comp.svg @@ -1,87 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/pharma.svg b/docs/images/pharma.svg index de99bd68..7acd5a52 100644 --- a/docs/images/pharma.svg +++ b/docs/images/pharma.svg @@ -1,28 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/pharma_two.svg b/docs/images/pharma_two.svg index a6c0c701..a223645d 100644 --- a/docs/images/pharma_two.svg +++ b/docs/images/pharma_two.svg @@ -1,28 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/planet.svg b/docs/images/planet.svg index 3ea3367e..b254faa7 100644 --- a/docs/images/planet.svg +++ b/docs/images/planet.svg @@ -1,84 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/plessey.svg b/docs/images/plessey.svg index 01c351d1..5f3aaf97 100644 --- a/docs/images/plessey.svg +++ b/docs/images/plessey.svg @@ -1,45 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C64 - - + + + Zint Generated Symbol + + + + + C64 + + diff --git a/docs/images/postnet.svg b/docs/images/postnet.svg index 11792403..9664808e 100644 --- a/docs/images/postnet.svg +++ b/docs/images/postnet.svg @@ -1,74 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/pzn.svg b/docs/images/pzn.svg index 5be7acb3..3c833cc8 100644 --- a/docs/images/pzn.svg +++ b/docs/images/pzn.svg @@ -1,71 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PZN - 27580899 - - + + + Zint Generated Symbol + + + + + PZN - 27580899 + + diff --git a/docs/images/qrcode.svg b/docs/images/qrcode.svg index 4a87e54d..bfd8838c 100644 --- a/docs/images/qrcode.svg +++ b/docs/images/qrcode.svg @@ -1,83 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/qrcode_binary_utf8.svg b/docs/images/qrcode_binary_utf8.svg index 27b3088e..977f1496 100644 --- a/docs/images/qrcode_binary_utf8.svg +++ b/docs/images/qrcode_binary_utf8.svg @@ -1,93 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/qrcode_box.svg b/docs/images/qrcode_box.svg index 4bffce0c..f38a9332 100644 --- a/docs/images/qrcode_box.svg +++ b/docs/images/qrcode_box.svg @@ -1,97 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/rm4scc.svg b/docs/images/rm4scc.svg index e0060ec1..10f79796 100644 --- a/docs/images/rm4scc.svg +++ b/docs/images/rm4scc.svg @@ -1,50 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/rmqr.svg b/docs/images/rmqr.svg index cd27822e..70f80170 100644 --- a/docs/images/rmqr.svg +++ b/docs/images/rmqr.svg @@ -1,79 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/telepen.svg b/docs/images/telepen.svg index 4b44244e..0d250a10 100644 --- a/docs/images/telepen.svg +++ b/docs/images/telepen.svg @@ -1,48 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Z80 - - + + + Zint Generated Symbol + + + + + Z80 + + diff --git a/docs/images/telepen_num.svg b/docs/images/telepen_num.svg index 22e49947..8ff73643 100644 --- a/docs/images/telepen_num.svg +++ b/docs/images/telepen_num.svg @@ -1,50 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 466X33 - - + + + Zint Generated Symbol + + + + + 466X33 + + diff --git a/docs/images/ultra.svg b/docs/images/ultra.svg index 7756368a..5e42f8f4 100644 --- a/docs/images/ultra.svg +++ b/docs/images/ultra.svg @@ -1,282 +1,268 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/upca.svg b/docs/images/upca.svg index 82f2c888..c43751f1 100644 --- a/docs/images/upca.svg +++ b/docs/images/upca.svg @@ -1,58 +1,21 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 - - - 25272 - - - 70270 - - - 3 - - + + + Zint Generated Symbol + + + + + 7 + + + 25272 + + + 70270 + + + 3 + + diff --git a/docs/images/upca_5.svg b/docs/images/upca_5.svg index 5ad2411b..4bcdcef7 100644 --- a/docs/images/upca_5.svg +++ b/docs/images/upca_5.svg @@ -1,78 +1,24 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 - - - 25272 - - - 70270 - - - 3 - - - 12345 - - + + + Zint Generated Symbol + + + + + 7 + + + 25272 + + + 70270 + + + 3 + + + 12345 + + diff --git a/docs/images/upca_5_gws.svg b/docs/images/upca_5_gws.svg new file mode 100644 index 00000000..bd183bb6 --- /dev/null +++ b/docs/images/upca_5_gws.svg @@ -0,0 +1,27 @@ + + + + Zint Generated Symbol + + + + + 7 + + + 25272 + + + 70270 + + + 3 + + + 12345 + + + > + + + diff --git a/docs/images/upce.svg b/docs/images/upce.svg index 46a89233..8783241c 100644 --- a/docs/images/upce.svg +++ b/docs/images/upce.svg @@ -1,41 +1,18 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 123456 - - - 2 - - + + + Zint Generated Symbol + + + + + 1 + + + 123456 + + + 2 + + diff --git a/docs/images/upce_2_gws.svg b/docs/images/upce_2_gws.svg new file mode 100644 index 00000000..fa6a12c5 --- /dev/null +++ b/docs/images/upce_2_gws.svg @@ -0,0 +1,24 @@ + + + + Zint Generated Symbol + + + + + 1 + + + 123456 + + + 2 + + + 12 + + + > + + + diff --git a/docs/images/upnqr.svg b/docs/images/upnqr.svg index ebd28dd4..0c454062 100644 --- a/docs/images/upnqr.svg +++ b/docs/images/upnqr.svg @@ -1,1574 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/upu_s10.svg b/docs/images/upu_s10.svg index 8ff4d3bf..bc1693bd 100644 --- a/docs/images/upu_s10.svg +++ b/docs/images/upu_s10.svg @@ -1,59 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EE 876 543 216 CA - - + + + Zint Generated Symbol + + + + + EE 876 543 216 CA + + diff --git a/docs/images/usps_imail.svg b/docs/images/usps_imail.svg index f35e5e77..04927d13 100644 --- a/docs/images/usps_imail.svg +++ b/docs/images/usps_imail.svg @@ -1,77 +1,9 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Zint Generated Symbol + + + + diff --git a/docs/images/vin.svg b/docs/images/vin.svg index cb6b78aa..481e4d48 100644 --- a/docs/images/vin.svg +++ b/docs/images/vin.svg @@ -1,116 +1,12 @@ - - - Zint Generated Symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2FTPX28L0XCA15511 - - + + + Zint Generated Symbol + + + + + 2FTPX28L0XCA15511 + + diff --git a/docs/manual.pmd b/docs/manual.pmd index 7d816ae1..850a7c31 100644 --- a/docs/manual.pmd +++ b/docs/manual.pmd @@ -1,6 +1,6 @@ % Zint Barcode Generator and Zint Barcode Studio User Manual % Version 2.12.0.9 -% May 2023 +% June 2023 # 1. Introduction @@ -1243,6 +1243,8 @@ Nevertheless, for ECI Code 3, this is not usually required, as this is the default encoding for most barcodes, which is also active without any ECI information. +\clearpage + #### 4.10.2.1 Input Modes and ECI Example 1 The Euro sign U+20AC can be encoded in ISO/IEC 8859-15. The Euro sign has the @@ -1439,7 +1441,8 @@ zint -b AZTEC_CODE --eci=9 -d "Κείμενο" --seg1=7,"ТекÑÑ‚" --seg2=20," specifies 3 segments: segment 0 with ECI 9 (Greek), segment 1 with ECI 7 (Cyrillic), and segment 2 with ECI 20 (Shift JIS). Segments must be consecutive. -The symbology must be ECI-aware (see Table {@tbl:eci_aware_symbologies}). +Naturally the symbology must be ECI-aware (see Table +{@tbl:eci_aware_symbologies}). ![`zint -b AZTEC --eci=9 -d "Κείμενο" --seg1=7,"ТекÑÑ‚" --seg2=20,"文章"`](images/aztec_segs.svg) @@ -1618,9 +1621,9 @@ int ZBarcode_Encode_File_and_Print(struct zint_symbol *symbol, In these definitions `length` can be used to set the length of the input string. This allows the encoding of `NUL` (ASCII 0) characters in those -symbologies which allow this. A value of 0 will disable this usage and Zint -will encode data up to the first `NUL` character in the input string, which must -be present. +symbologies which allow this. A value of 0 (or less than 0) will disable this +usage and Zint will encode data up to the first `NUL` character in the input +string, which must be present. The `rotate_angle` value can be used to rotate the image when outputting. Valid values are 0, 90, 180 and 270. @@ -1743,8 +1746,7 @@ for (string = my_symbol->vector->strings; string; string = string->next) { string->text, string->length); } for (circle = my_symbol->vector->circles; circle; circle = circle->next) { - draw_circle(circle->x, circle->y, circle->diameter, - circle->width, circle->colour); + draw_circle(circle->x, circle->y, circle->diameter, circle->width); } ``` @@ -2105,6 +2107,12 @@ Value Effect `COMPLIANT_HEIGHT` Warn if height not compliant and use standard height (if any) as default. + +`EANUPC_GUARD_WHITESPACE` Add quiet zone indicators ("<" and/or ">") to HRT + whitespace (EAN/UPC). + +`EMBED_VECTOR_FONT` Embed font in vector output - currently available for + SVG output of EAN/UPC only. -------------------------------------------------------------------------------- Table: API `output_options` Values {#tbl:api_output_options tag="$ $"} @@ -2118,8 +2126,6 @@ Code]. [^11]: Codablock-F, Code 16K, Code 49, EAN-2 to EAN-13, ISBN, ITF-14, UPC-A and UPC-E have compliant quiet zones added by default. -\clearpage - ## 5.10 Setting the Input Mode The way in which the input data is encoded can be set using the `input_mode` @@ -2572,12 +2578,34 @@ If your input data already includes the check digit symbology `BARCODE_UPCA_CHK` (35) can be used which takes a 12-digit input and validates the check digit before encoding. +A quiet zone indicator can be added to the HRT by setting `--guardwhitespace` +(API `output_options |= EANUPC_GUARD_WHITESPACE`). For UPC, this is only +relevant when there is add-on: + +```bash +zint -b UPCA -d "72527270270+12345" --guardwhitespace +``` + +or using the API: + +```c +my_symbol->symbology = BARCODE_UPCA; +my_symbol->output_options |= EANUPC_GUARD_WHITESPACE; +error = ZBarcode_Encode_and_Print(my_symbol, "72527270270+12345", 0, 0); +``` + +![`zint -b UPCA --compliantheight -d "72527270270+12345" +--guardwhitespace`](images/upca_5_gws.svg) + You can adjust the gap between the main symbol and an add-on in multiples of the X-dimension by setting `--addongap` (API `option_2`) to a value between 9 (default) and 12. The height in X-dimensions that the guard bars descend below the main bars can be adjusted by setting `--guarddescent` (API `guard_descent`) to a value between 0 and 20 (default 5). +For SVG output, the `--embedfont` option (API `output_options |= +EMBED_VECTOR_FONT`) will embed the OCR-B font in the file for portability. + #### 6.1.3.2 UPC Version E ![`zint -b UPCE --compliantheight -d "1123456"`](images/upce.svg) @@ -2604,12 +2632,25 @@ If your input data already includes the check digit symbology `BARCODE_UPCE_CHK` (38) can be used which takes a 7 or 8-digit input and validates the check digit before encoding. +As with UPC-A, a quiet zone indicator can be added when there is an add-on by +setting `--guardwhitespace` (API `output_options |= EANUPC_GUARD_WHITESPACE`): + +```bash +zint -b UPCE -d "1123456+12" --guardwhitespace +``` + +![`zint -b UPCE --compliantheight -d "1123456+12" +--guardwhitespace`](images/upce_2_gws.svg) + You can adjust the gap between the main symbol and an add-on in multiples of the X-dimension by setting `--addongap` (API `option_2`) to a value between 7 (default) and 12. The height in X-dimensions that the guard bars descend below the main bars can be adjusted by setting `--guarddescent` (API `guard_descent`) to a value between 0 and 20 (default 5). +For SVG output, the `--embedfont` option (API `output_options |= +EMBED_VECTOR_FONT`) will embed the OCR-B font in the file for portability. + ### 6.1.4 EAN (European Article Number) (ISO 15420) #### 6.1.4.1 EAN-2, EAN-5, EAN-8 and EAN-13 @@ -2653,8 +2694,16 @@ If you are encoding an EAN-8 or EAN-13 symbol and your data already includes the check digit then you can use symbology `BARCODE_EANX_CHK` (14) which takes an 8 or 13-digit input and validates the check digit before encoding. -Options to adjust the add-on gap and the guard bar descent height are the same -as for [6.1.3.2 UPC Version E]. +Options to add quiet zone indicators, to adjust the add-on gap and the guard bar +descent height, and to embed the font are the same as for [6.1.3.2 UPC Version +E]. For instance: + +```bash +zint -b EANX_CHK -d "74323654" --guardwhitespace +``` + +![`zint -b EANX_CHK --compliantheight -d "74323654"` +--guardwhitespace](images/eanx8_gws.svg) #### 6.1.4.2 SBN, ISBN and ISBN-13 @@ -2663,9 +2712,16 @@ as for [6.1.3.2 UPC Version E]. EAN-13 symbols (also known as Bookland EAN-13) can also be produced from 9-digit SBN, 10-digit ISBN or 13-digit ISBN-13 data. The relevant check digit needs to be present in the input data and will be verified before the symbol is -generated. In addition EAN-2 and EAN-5 add-on symbols can be added using the + -character as with UPC symbols, and there are options to adjust the add-on gap -and the guard bar descent height - see [6.1.3.2 UPC Version E]. +generated. + +As with EAN-13, a quiet zone indicator can be added using `--guardwhitespace`: + +![`zint -b ISBNX --compliantheight -d "9789295055124" +--guardwhitespace`](images/isbnx_gws.svg) + +EAN-2 and EAN-5 add-on symbols can be added using the + character, and there are +options to adjust the add-on gap and the guard bar descent height and to embed +the font - see [6.1.3.2 UPC Version E]. ### 6.1.5 Plessey @@ -2895,9 +2951,9 @@ may be used to signal that AIs are encased in round brackets instead of square ones. Fixed length data should be entered at the appropriate length for correct -encoding. GS1-128 does not support extended ASCII characters. Check digits for -GTIN data AI (01) are not generated and need to be included in the input data. -The following is an example of a valid GS1-128 input: +encoding. GS1-128 does not support extended ASCII (ISO/IEC 8859-1) characters. +Check digits for GTIN data AI (01) are not generated and need to be included in +the input data. The following is an example of a valid GS1-128 input: ```bash zint -b 16 -d "[01]98898765432106[3202]012345[15]991231" @@ -3138,11 +3194,11 @@ demonstrated by the symbologies below. ![`zint -b CODABLOCKF -d "CODABLOCK F Symbology" --rows=3`](images/codablockf.svg) -This is a stacked symbology based on Code 128 which can encode extended ASCII -code set data up to a maximum length of 2725 characters. The width of the -Codablock-F symbol can be set using the `--cols` option (API `option_2`). The -height (number of rows) can be set using the `--rows` option (API `option_1`). -Zint does not currently support encoding of GS1 data in Codablock-F symbols. +This is a stacked symbology based on Code 128 which can encode Latin-1 data up +to a maximum length of 2725 characters. The width of the Codablock-F symbol can +be set using the `--cols` option (API `option_2`). The height (number of rows) +can be set using the `--rows` option (API `option_1`). Zint does not currently +support encoding of GS1 data in Codablock-F symbols. A separate symbology ID (`BARCODE_HIBC_BLOCKF`) can be used to encode Health Industry Barcode (HIBC) data which adds a leading `'+'` character and a @@ -3154,7 +3210,7 @@ modulo-49 check digit to the encoded data. Code 16K uses a Code 128 based system which can stack up to 16 rows in a block. This gives a maximum data capacity of 77 characters or 154 numerical digits and -includes two modulo-107 check digits. Code 16K also supports extended ASCII +includes two modulo-107 check digits. Code 16K also supports ISO/IEC 8859-1 character encoding in the same manner as Code 128. GS1 data encoding is also supported. The minimum number of rows to use can be set using the `--rows` option (API `option_1`), with values from 2 to 16. diff --git a/docs/manual.txt b/docs/manual.txt index 3feb1fc0..dd38bf0a 100644 --- a/docs/manual.txt +++ b/docs/manual.txt @@ -1,6 +1,6 @@ Zint Barcode Generator and Zint Barcode Studio User Manual Version 2.12.0.9 -May 2023 +June 2023 ******************************************************************************* * For reference the following is a text-only version of the Zint manual, * @@ -1497,7 +1497,7 @@ in effect constitute segment 0. For instance specifies 3 segments: segment 0 with ECI 9 (Greek), segment 1 with ECI 7 (Cyrillic), and segment 2 with ECI 20 (Shift JIS). Segments must be consecutive. -The symbology must be ECI-aware (see Table : ECI-Aware Symbologies). +Naturally the symbology must be ECI-aware (see Table : ECI-Aware Symbologies). [zint -b AZTEC --eci=9 -d "Κείμενο" --seg1=7,"ТекÑÑ‚" --seg2=20,"文章"] @@ -1661,8 +1661,9 @@ The functions for encoding and printing barcodes are defined as: In these definitions length can be used to set the length of the input string. This allows the encoding of NUL (ASCII 0) characters in those symbologies which -allow this. A value of 0 will disable this usage and Zint will encode data up to -the first NUL character in the input string, which must be present. +allow this. A value of 0 (or less than 0) will disable this usage and Zint will +encode data up to the first NUL character in the input string, which must be +present. The rotate_angle value can be used to rotate the image when outputting. Valid values are 0, 90, 180 and 270. @@ -1775,8 +1776,7 @@ routines available: string->text, string->length); } for (circle = my_symbol->vector->circles; circle; circle = circle->next) { - draw_circle(circle->x, circle->y, circle->diameter, - circle->width, circle->colour); + draw_circle(circle->x, circle->y, circle->diameter, circle->width); } 5.6 Setting Options @@ -2113,6 +2113,12 @@ together when adjusting this value: COMPLIANT_HEIGHT Warn if height not compliant and use standard height (if any) as default. + + EANUPC_GUARD_WHITESPACE Add quiet zone indicators (“<†and/or “>â€) to HRT + whitespace (EAN/UPC). + + EMBED_VECTOR_FONT Embed font in vector output - currently available + for SVG output of EAN/UPC only. ------------------------------------------------------------------------------- : Table  : API output_options Values @@ -2528,12 +2534,29 @@ If your input data already includes the check digit symbology BARCODE_UPCA_CHK (35) can be used which takes a 12-digit input and validates the check digit before encoding. +A quiet zone indicator can be added to the HRT by setting --guardwhitespace (API +output_options |= EANUPC_GUARD_WHITESPACE). For UPC, this is only relevant when +there is add-on: + + zint -b UPCA -d "72527270270+12345" --guardwhitespace + +or using the API: + + my_symbol->symbology = BARCODE_UPCA; + my_symbol->output_options |= EANUPC_GUARD_WHITESPACE; + error = ZBarcode_Encode_and_Print(my_symbol, "72527270270+12345", 0, 0); + +[zint -b UPCA --compliantheight -d "72527270270+12345" --guardwhitespace] + You can adjust the gap between the main symbol and an add-on in multiples of the X-dimension by setting --addongap (API option_2) to a value between 9 (default) and 12. The height in X-dimensions that the guard bars descend below the main bars can be adjusted by setting --guarddescent (API guard_descent) to a value between 0 and 20 (default 5). +For SVG output, the --embedfont option (API output_options |= EMBED_VECTOR_FONT) +will embed the OCR-B font in the file for portability. + 6.1.3.2 UPC Version E [zint -b UPCE --compliantheight -d "1123456"] @@ -2555,12 +2578,22 @@ If your input data already includes the check digit symbology BARCODE_UPCE_CHK (38) can be used which takes a 7 or 8-digit input and validates the check digit before encoding. +As with UPC-A, a quiet zone indicator can be added when there is an add-on by +setting --guardwhitespace (API output_options |= EANUPC_GUARD_WHITESPACE): + + zint -b UPCE -d "1123456+12" --guardwhitespace + +[zint -b UPCE --compliantheight -d "1123456+12" --guardwhitespace] + You can adjust the gap between the main symbol and an add-on in multiples of the X-dimension by setting --addongap (API option_2) to a value between 7 (default) and 12. The height in X-dimensions that the guard bars descend below the main bars can be adjusted by setting --guarddescent (API guard_descent) to a value between 0 and 20 (default 5). +For SVG output, the --embedfont option (API output_options |= EMBED_VECTOR_FONT) +will embed the OCR-B font in the file for portability. + 6.1.4 EAN (European Article Number) (ISO 15420) 6.1.4.1 EAN-2, EAN-5, EAN-8 and EAN-13 @@ -2598,8 +2631,13 @@ If you are encoding an EAN-8 or EAN-13 symbol and your data already includes the check digit then you can use symbology BARCODE_EANX_CHK (14) which takes an 8 or 13-digit input and validates the check digit before encoding. -Options to adjust the add-on gap and the guard bar descent height are the same -as for 6.1.3.2 UPC Version E. +Options to add quiet zone indicators, to adjust the add-on gap and the guard bar +descent height, and to embed the font are the same as for 6.1.3.2 UPC Version E. +For instance: + + zint -b EANX_CHK -d "74323654" --guardwhitespace + +[zint -b EANX_CHK --compliantheight -d "74323654" –guardwhitespace] 6.1.4.2 SBN, ISBN and ISBN-13 @@ -2608,9 +2646,15 @@ as for 6.1.3.2 UPC Version E. EAN-13 symbols (also known as Bookland EAN-13) can also be produced from 9-digit SBN, 10-digit ISBN or 13-digit ISBN-13 data. The relevant check digit needs to be present in the input data and will be verified before the symbol is -generated. In addition EAN-2 and EAN-5 add-on symbols can be added using the + -character as with UPC symbols, and there are options to adjust the add-on gap -and the guard bar descent height - see 6.1.3.2 UPC Version E. +generated. + +As with EAN-13, a quiet zone indicator can be added using --guardwhitespace: + +[zint -b ISBNX --compliantheight -d "9789295055124" --guardwhitespace] + +EAN-2 and EAN-5 add-on symbols can be added using the + character, and there are +options to adjust the add-on gap and the guard bar descent height and to embed +the font - see 6.1.3.2 UPC Version E. 6.1.5 Plessey @@ -2829,9 +2873,9 @@ round brackets, the option --gs1parens (API input_mode |= GS1PARENS_MODE) may be used to signal that AIs are encased in round brackets instead of square ones. Fixed length data should be entered at the appropriate length for correct -encoding. GS1-128 does not support extended ASCII characters. Check digits for -GTIN data AI (01) are not generated and need to be included in the input data. -The following is an example of a valid GS1-128 input: +encoding. GS1-128 does not support extended ASCII (ISO/IEC 8859-1) characters. +Check digits for GTIN data AI (01) are not generated and need to be included in +the input data. The following is an example of a valid GS1-128 input: zint -b 16 -d "[01]98898765432106[3202]012345[15]991231" @@ -3051,11 +3095,11 @@ demonstrated by the symbologies below. [zint -b CODABLOCKF -d "CODABLOCK F Symbology" --rows=3] -This is a stacked symbology based on Code 128 which can encode extended ASCII -code set data up to a maximum length of 2725 characters. The width of the -Codablock-F symbol can be set using the --cols option (API option_2). The height -(number of rows) can be set using the --rows option (API option_1). Zint does -not currently support encoding of GS1 data in Codablock-F symbols. +This is a stacked symbology based on Code 128 which can encode Latin-1 data up +to a maximum length of 2725 characters. The width of the Codablock-F symbol can +be set using the --cols option (API option_2). The height (number of rows) can +be set using the --rows option (API option_1). Zint does not currently support +encoding of GS1 data in Codablock-F symbols. A separate symbology ID (BARCODE_HIBC_BLOCKF) can be used to encode Health Industry Barcode (HIBC) data which adds a leading '+' character and a modulo-49 @@ -3067,7 +3111,7 @@ check digit to the encoded data. Code 16K uses a Code 128 based system which can stack up to 16 rows in a block. This gives a maximum data capacity of 77 characters or 154 numerical digits and -includes two modulo-107 check digits. Code 16K also supports extended ASCII +includes two modulo-107 check digits. Code 16K also supports ISO/IEC 8859-1 character encoding in the same manner as Code 128. GS1 data encoding is also supported. The minimum number of rows to use can be set using the --rows option (API option_1), with values from 2 to 16. @@ -4408,7 +4452,7 @@ defined. Annex B. Man Page ZINT(1) -% ZINT(1) Version 2.12.0.9 % % May 2023 +% ZINT(1) Version 2.12.0.9 % % June 2023 NAME @@ -4548,6 +4592,11 @@ OPTIONS Matrix, DotCode, Grid Matrix, Han Xin Code, MaxiCode, MicroPDF417, PDF417, QR Code, rMQR and Ultracode. +--embedfont + + For vector output, embed the font in the file for portability. Currently + only available for SVG output of EAN/UPC barcodes. + --esc Process escape characters in the input data. The escape sequences are: @@ -4627,6 +4676,11 @@ OPTIONS bars, where NUMBER is in multiples of the X-dimension. NUMBER may be floating-point. +--guardwhitespace + + For EAN/UPC symbols, add quiet zone indicators "<" and/or ">" to HRT where + applicable. + --height=NUMBER Set the height of the symbol in multiples of the X-dimension. NUMBER may be diff --git a/docs/zint.1 b/docs/zint.1 index 830e9509..b4e0c55f 100644 --- a/docs/zint.1 +++ b/docs/zint.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "ZINT" "1" "May 2023" "Version 2.12.0.9" "" +.TH "ZINT" "1" "June 2023" "Version 2.12.0.9" "" .hy .SH NAME .PP @@ -166,6 +166,10 @@ ECIs are supported by Aztec Code, Code One, Data Matrix, DotCode, Grid Matrix, Han Xin Code, MaxiCode, MicroPDF417, PDF417, QR Code, rMQR and Ultracode. .TP +\f[V]--embedfont\f[R] +For vector output, embed the font in the file for portability. +Currently only available for SVG output of EAN/UPC barcodes. +.TP \f[V]--esc\f[R] Process escape characters in the input data. The escape sequences are: @@ -248,6 +252,10 @@ For EAN/UPC symbols, set the height the guard bars descend below the main bars, where \f[I]NUMBER\f[R] is in multiples of the X-dimension. \f[I]NUMBER\f[R] may be floating-point. .TP +\f[V]--guardwhitespace\f[R] +For EAN/UPC symbols, add quiet zone indicators \f[V]\[dq]<\[dq]\f[R] +and/or \f[V]\[dq]>\[dq]\f[R] to HRT where applicable. +.TP \f[V]--height=NUMBER\f[R] Set the height of the symbol in multiples of the X-dimension. \f[I]NUMBER\f[R] may be floating-point. diff --git a/docs/zint.1.pmd b/docs/zint.1.pmd index 2d0b5ae3..f4120981 100644 --- a/docs/zint.1.pmd +++ b/docs/zint.1.pmd @@ -1,6 +1,6 @@ % ZINT(1) Version 2.12.0.9 % -% May 2023 +% June 2023 # NAME @@ -121,6 +121,11 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S supported by Aztec Code, Code One, Data Matrix, DotCode, Grid Matrix, Han Xin Code, MaxiCode, MicroPDF417, PDF417, QR Code, rMQR and Ultracode. +`--embedfont` + +: For vector output, embed the font in the file for portability. Currently only available for SVG output of EAN/UPC + barcodes. + `--esc` : Process escape characters in the input data. The escape sequences are: @@ -195,6 +200,10 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S : For EAN/UPC symbols, set the height the guard bars descend below the main bars, where *NUMBER* is in multiples of the X-dimension. *NUMBER* may be floating-point. +`--guardwhitespace` + +: For EAN/UPC symbols, add quiet zone indicators `"<"` and/or `">"` to HRT where applicable. + `--height=NUMBER` : Set the height of the symbol in multiples of the X-dimension. *NUMBER* may be floating-point. diff --git a/docs/zint_images.sh b/docs/zint_images.sh index 2e4020c2..898200e2 100755 --- a/docs/zint_images.sh +++ b/docs/zint_images.sh @@ -47,11 +47,15 @@ zint -b DPLEIT -d "9212320967145" --scale=$SCALE_LINEAR -o images/dpleit.svg zint -b DPIDENT -d "91232096712" --scale=$SCALE_LINEAR -o images/dpident.svg zint -b UPCA --compliantheight -d "72527270270" --scale=$SCALE_UPCEAN -o images/upca.svg zint -b UPCA --compliantheight -d "72527270270+12345" --scale=$SCALE_UPCEAN -o images/upca_5.svg +zint -b UPCA --compliantheight -d "72527270270+12345" --guardwhitespace --scale=$SCALE_UPCEAN -o images/upca_5_gws.svg zint -b UPCE --compliantheight -d "1123456" --scale=$SCALE_UPCEAN -o images/upce.svg +zint -b UPCE --compliantheight -d "1123456+12" --guardwhitespace --scale=$SCALE_UPCEAN -o images/upce_2_gws.svg zint -b EANX --compliantheight -d "4512345678906" --scale=$SCALE_UPCEAN -o images/eanx13.svg zint -b EANX --compliantheight -d "54321" --scale=$SCALE_UPCEAN -o images/eanx5.svg zint -b EANX --compliantheight -d "7432365+54321" --scale=$SCALE_UPCEAN -o images/eanx8_5.svg +zint -b EANX_CHK --compliantheight -d "74323654" --guardwhitespace --scale=$SCALE_UPCEAN -o images/eanx8_gws.svg zint -b ISBNX --compliantheight -d "9789295055124" --scale=$SCALE_UPCEAN -o images/isbnx.svg +zint -b ISBNX --compliantheight -d "9789295055124" --guardwhitespace --scale=$SCALE_UPCEAN -o images/isbnx_gws.svg zint -b PLESSEY -d "C64" --scale=$SCALE_LINEAR -o images/plessey.svg zint -b MSI_PLESSEY -d "6502" --vers=2 --scale=$SCALE_LINEAR -o images/msi_plessey.svg zint -b TELEPEN --compliantheight -d "Z80" --scale=$SCALE_LINEAR -o images/telepen.svg diff --git a/frontend/main.c b/frontend/main.c index bbf71ac8..7a24b567 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -145,17 +145,17 @@ static void usage(const int no_png) { printf("Encode input data in a barcode and save as BMP/EMF/EPS/GIF/PCX%s/SVG/TIF/TXT\n\n", no_png_type); fputs( " -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 EAN/UPC\n" + " --addongap=INTEGER Set add-on gap in multiples of X-dimension for EAN/UPC\n" " --batch Treat each line of input file as a separate data set\n" " --bg=COLOUR Specify a background colour (as RGB(A) or \"C,M,Y,K\")\n" " --binary Treat input as raw binary data\n", stdout); fputs( " --bind Add boundary bars\n" " --bindtop Add top boundary bar only\n" - " --bold Use bold text\n" - " --border=NUMBER Set width of border in multiples of X-dimension\n" + " --bold Use bold text (HRT)\n" + " --border=INTEGER Set width of border in multiples of X-dimension\n" " --box Add a box around the symbol\n", stdout); fputs( " --cmyk Use CMYK colour space in EPS/TIF symbols\n" - " --cols=NUMBER Set the number of data columns in symbol\n" + " --cols=INTEGER Set the number of data columns in symbol\n" " --compliantheight Warn if height not compliant, and use standard default\n" " -d, --data=DATA Set the symbol data content (segment 0)\n" " --direct Send output to stdout\n", stdout); @@ -164,11 +164,12 @@ static void usage(const int no_png) { " --dotty Use dots instead of squares for matrix symbols\n" " --dump Dump hexadecimal representation to stdout\n" " -e, --ecinos Display ECI (Extended Channel Interpretation) table\n", stdout); - fputs( " --eci=NUMBER Set the ECI code for the data (segment 0)\n" + fputs( " --eci=INTEGER Set the ECI code for the data (segment 0)\n" + " --embedfont Embed font in vector output (SVG EAN/UPC only)\n" " --esc Process escape sequences in input data\n" " --extraesc Process symbology-specific escape sequences (Code 128)\n" - " --fast Use faster encodation or other shortcuts if available\n" - " --fg=COLOUR Specify a foreground colour (as RGB(A) or \"C,M,Y,K\")\n", stdout); + " --fast Use faster encodation or other shortcuts if available\n", stdout); + fputs( " --fg=COLOUR Specify a foreground colour (as RGB(A) or \"C,M,Y,K\")\n", stdout); printf(" --filetype=TYPE Set output file type BMP/EMF/EPS/GIF/PCX%s/SVG/TIF/TXT\n", no_png_type); fputs( " --fullmultibyte Use multibyte for binary/Latin (QR/Han Xin/Grid Matrix)\n" " --gs1 Treat input as GS1 compatible data\n" @@ -176,38 +177,39 @@ static void usage(const int no_png) { " --gs1parens Process parentheses \"()\" as GS1 AI delimiters, not \"[]\"\n" " --gssep Use separator GS for GS1 (Data Matrix)\n", stdout); fputs( " --guarddescent=NUMBER Set height of guard bar descent in X-dims (EAN/UPC)\n" + " --guardwhitespace Add quiet zone indicators (\"<\"/\">\") to HRT (EAN/UPC)\n" " -h, --help Display help message\n" " --height=NUMBER Set height of symbol in multiples of X-dimension\n" - " --heightperrow Treat height as per-row\n" - " -i, --input=FILE Read input data from FILE\n", stdout); - fputs( " --init Create Reader Initialisation (Programming) symbol\n" - " --mask=NUMBER Set masking pattern to use (QR/Han Xin/DotCode)\n" + " --heightperrow Treat height as per-row\n", stdout); + fputs( " -i, --input=FILE Read input data from FILE\n" + " --init Create Reader Initialisation (Programming) symbol\n" + " --mask=INTEGER Set masking pattern to use (QR/Han Xin/DotCode)\n" " --mirror Use batch data to determine filename\n" - " --mode=NUMBER Set encoding mode (MaxiCode/Composite)\n", stdout); + " --mode=INTEGER Set encoding mode (MaxiCode/Composite)\n", stdout); printf(" --nobackground Remove background (EMF/EPS/GIF%s/SVG/TIF only)\n", no_png_type); fputs( " --noquietzones Disable default quiet zones\n" - " --notext Remove human readable text\n", stdout); + " --notext Remove human readable text (HRT)\n", stdout); printf(" -o, --output=FILE Send output to FILE. Default is out.%s\n", no_png_ext); fputs( " --primary=STRING Set primary message (MaxiCode/Composite)\n" " --quietzones Add compliant quiet zones\n" " -r, --reverse Reverse colours (white on black)\n" - " --rotate=NUMBER Rotate symbol by NUMBER degrees\n" - " --rows=NUMBER Set number of rows (Codablock-F/PDF417)\n", stdout); + " --rotate=INTEGER Rotate symbol by INTEGER (0, 90, 180, 270) degrees\n" + " --rows=INTEGER Set number of rows (Codablock-F/PDF417)\n", stdout); fputs( " --scale=NUMBER Adjust size of X-dimension\n" " --scalexdimdp=X[,R] Adjust size to X-dimension X at resolution R\n" - " --scmvv=NUMBER Prefix SCM with \"[)>\\R01\\Gvv\" (vv is NUMBER) (MaxiCode)\n" - " --secure=NUMBER Set error correction level (ECC)\n" + " --scmvv=INTEGER Prefix SCM with \"[)>\\R01\\Gvv\" (vv is INTEGER) (MaxiCode)\n" + " --secure=INTEGER Set error correction level (ECC)\n" " --segN=ECI,DATA Set the ECI & data content for segment N, where N 1 to 9\n", stdout); - fputs( " --separator=NUMBER Set height of row separator bars (stacked symbologies)\n" - " --small Use small text\n" + fputs( " --separator=INTEGER Set height of row separator bars (stacked symbologies)\n" + " --small Use small text (HRT)\n" " --square Force Data Matrix symbols to be square\n" " --structapp=I,C[,ID] Set Structured Append info (I index, C count)\n" " -t, --types Display table of barcode types\n", stdout); fputs( " --textgap=NUMBER Adjust gap between barcode and HRT in multiples of X-dim\n" - " --vers=NUMBER Set symbol version (size, check digits, other options)\n" + " --vers=INTEGER Set symbol version (size, check digits, other options)\n" " -v, --version Display Zint version\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", stdout); + " --vwhitesp=INTEGER Set height of vertical whitespace in multiples of X-dim\n" + " -w, --whitesp=INTEGER Set width of horizontal whitespace in multiples of X-dim\n", stdout); fputs( " --werror Convert all warnings into errors\n", stdout); } @@ -431,15 +433,31 @@ static int get_barcode_name(const char *barcode_name) { { BARCODE_DBAR_STK_CC, "databarstkcc" }, /* Synonym */ { BARCODE_DATAMATRIX, "datamatrix" }, { BARCODE_DBAR_EXP, "dbarexp" }, + { BARCODE_DBAR_EXP, "dbarexpanded" }, /* Synonym */ + { BARCODE_DBAR_EXP_CC, "dbarexpandedcc" }, /* Synonym */ + { BARCODE_DBAR_EXPSTK, "dbarexpandedstacked" }, /* Synonym */ + { BARCODE_DBAR_EXPSTK_CC, "dbarexpandedstackedcc" }, /* Synonym */ + { BARCODE_DBAR_EXPSTK, "dbarexpandedstk" }, /* Synonym */ + { BARCODE_DBAR_EXPSTK_CC, "dbarexpandedstkcc" }, /* Synonym */ { BARCODE_DBAR_EXP_CC, "dbarexpcc" }, { BARCODE_DBAR_EXPSTK, "dbarexpstk" }, { BARCODE_DBAR_EXPSTK_CC, "dbarexpstkcc" }, + { BARCODE_DBAR_LTD, "dbarlimited" }, /* Synonym */ + { BARCODE_DBAR_LTD_CC, "dbarlimitedcc" }, /* Synonym */ { BARCODE_DBAR_LTD, "dbarltd" }, { BARCODE_DBAR_LTD_CC, "dbarltdcc" }, { BARCODE_DBAR_OMN, "dbaromn" }, { BARCODE_DBAR_OMN_CC, "dbaromncc" }, + { BARCODE_DBAR_OMN, "dbaromni" }, /* Synonym */ + { BARCODE_DBAR_OMN_CC, "dbaromnicc" }, /* Synonym */ { BARCODE_DBAR_OMNSTK, "dbaromnstk" }, { BARCODE_DBAR_OMNSTK_CC, "dbaromnstkcc" }, + { BARCODE_DBAR_STK, "dbarstacked" }, /* Synonym */ + { BARCODE_DBAR_STK_CC, "dbarstackedcc" }, /* Synonym */ + { BARCODE_DBAR_OMNSTK, "dbarstackedomn" }, /* Synonym */ + { BARCODE_DBAR_OMNSTK_CC, "dbarstackedomncc" }, /* Synonym */ + { BARCODE_DBAR_OMNSTK, "dbarstackedomni" }, /* Synonym */ + { BARCODE_DBAR_OMNSTK_CC, "dbarstackedomnicc" }, /* Synonym */ { BARCODE_DBAR_STK, "dbarstk" }, { BARCODE_DBAR_STK_CC, "dbarstkcc" }, { BARCODE_DOTCODE, "dotcode" }, @@ -1411,8 +1429,8 @@ int main(int argc, char **argv) { enum options { OPT_ADDONGAP = 128, OPT_BATCH, OPT_BINARY, OPT_BG, OPT_BIND, OPT_BIND_TOP, OPT_BOLD, OPT_BORDER, OPT_BOX, OPT_CMYK, OPT_COLS, OPT_COMPLIANTHEIGHT, OPT_DIRECT, OPT_DMRE, OPT_DOTSIZE, OPT_DOTTY, OPT_DUMP, - OPT_ECI, OPT_ESC, OPT_EXTRAESC, OPT_FAST, OPT_FG, OPT_FILETYPE, OPT_FONTSIZE, OPT_FULLMULTIBYTE, - OPT_GS1, OPT_GS1NOCHECK, OPT_GS1PARENS, OPT_GSSEP, OPT_GUARDDESCENT, + OPT_ECI, OPT_EMBEDFONT, OPT_ESC, OPT_EXTRAESC, OPT_FAST, OPT_FG, OPT_FILETYPE, OPT_FULLMULTIBYTE, + OPT_GS1, OPT_GS1NOCHECK, OPT_GS1PARENS, OPT_GSSEP, OPT_GUARDDESCENT, OPT_GUARDWHITESPACE, OPT_HEIGHT, OPT_HEIGHTPERROW, OPT_INIT, OPT_MIRROR, OPT_MASK, OPT_MODE, OPT_NOBACKGROUND, OPT_NOQUIETZONES, OPT_NOTEXT, OPT_PRIMARY, OPT_QUIETZONES, OPT_ROTATE, OPT_ROWS, OPT_SCALE, OPT_SCALEXDIM, OPT_SCMVV, OPT_SECURE, @@ -1444,6 +1462,7 @@ int main(int argc, char **argv) { {"dump", 0, NULL, OPT_DUMP}, {"eci", 1, NULL, OPT_ECI}, {"ecinos", 0, NULL, 'e'}, + {"embedfont", 0, NULL, OPT_EMBEDFONT}, {"esc", 0, NULL, OPT_ESC}, {"extraesc", 0, NULL, OPT_EXTRAESC}, {"fast", 0, NULL, OPT_FAST}, @@ -1451,13 +1470,13 @@ int main(int argc, char **argv) { {"fgcolor", 1, 0, OPT_FG}, /* Synonym */ {"fgcolour", 1, 0, OPT_FG}, /* Synonym */ {"filetype", 1, NULL, OPT_FILETYPE}, - {"fontsize", 1, NULL, OPT_FONTSIZE}, {"fullmultibyte", 0, NULL, OPT_FULLMULTIBYTE}, {"gs1", 0, 0, OPT_GS1}, {"gs1nocheck", 0, NULL, OPT_GS1NOCHECK}, {"gs1parens", 0, NULL, OPT_GS1PARENS}, {"gssep", 0, NULL, OPT_GSSEP}, {"guarddescent", 1, NULL, OPT_GUARDDESCENT}, + {"guardwhitespace", 0, NULL, OPT_GUARDWHITESPACE}, {"height", 1, NULL, OPT_HEIGHT}, {"heightperrow", 0, NULL, OPT_HEIGHTPERROW}, {"help", 0, NULL, 'h'}, @@ -1621,6 +1640,9 @@ int main(int argc, char **argv) { warn_number = ZINT_WARN_INVALID_OPTION; } break; + case OPT_EMBEDFONT: + my_symbol->output_options |= EMBED_VECTOR_FONT; + break; case OPT_ESC: my_symbol->input_mode |= ESCAPE_MODE; break; @@ -1647,19 +1669,6 @@ int main(int argc, char **argv) { warn_number = ZINT_WARN_INVALID_OPTION; } break; - case OPT_FONTSIZE: - if (!validate_int(optarg, -1 /*len*/, &val)) { - fprintf(stderr, "Error 130: Invalid font size value (digits only)\n"); - return do_exit(ZINT_ERROR_INVALID_OPTION); - } - if (val <= 100) { /* `val` >= 0 always */ - my_symbol->fontsize = val; - } else { - fprintf(stderr, "Warning 126: Font size out of range (0 to 100), ignoring\n"); - fflush(stderr); - warn_number = ZINT_WARN_INVALID_OPTION; - } - break; case OPT_FULLMULTIBYTE: fullmultibyte = 1; break; @@ -1689,6 +1698,9 @@ int main(int argc, char **argv) { warn_number = ZINT_WARN_INVALID_OPTION; } break; + case OPT_GUARDWHITESPACE: + my_symbol->output_options |= EANUPC_GUARD_WHITESPACE; + break; case OPT_HEIGHT: if (!validate_float(optarg, &float_opt, errbuf)) { fprintf(stderr, "Error 183: Invalid symbol height floating point (%s)\n", errbuf); diff --git a/frontend/tests/test_args.c b/frontend/tests/test_args.c index d568d0e9..3c3fc100 100644 --- a/frontend/tests/test_args.c +++ b/frontend/tests/test_args.c @@ -150,33 +150,33 @@ static char *exec(const char *cmd, char *buf, int buf_size, int debug, int index static void arg_int(char *cmd, const char *opt, int val) { if (val != -1) { - sprintf(cmd + (int) strlen(cmd), "%s%s%d", strlen(cmd) ? " " : "", opt, val); + sprintf(cmd + strlen(cmd), "%s%s%d", strlen(cmd) ? " " : "", opt, val); } } static void arg_bool(char *cmd, const char *opt, int val) { if (val == 1) { - sprintf(cmd + (int) strlen(cmd), "%s%s", strlen(cmd) ? " " : "", opt); + sprintf(cmd + strlen(cmd), "%s%s", strlen(cmd) ? " " : "", opt); } } static void arg_double(char *cmd, const char *opt, double val) { if (val != -1) { - sprintf(cmd + (int) strlen(cmd), "%s%s%.8f", strlen(cmd) ? " " : "", opt, val); + sprintf(cmd + strlen(cmd), "%s%s%.8f", strlen(cmd) ? " " : "", opt, val); } } static void arg_data(char *cmd, const char *opt, const char *data) { if (data != NULL) { - sprintf(cmd + (int) strlen(cmd), "%s%s\"%s\"", strlen(cmd) ? " " : "", opt, data); + sprintf(cmd + strlen(cmd), "%s%s\"%s\"", strlen(cmd) ? " " : "", opt, data); } } static void arg_seg(char *cmd, const char *opt, const char *data, const int eci) { if (data != NULL) { - sprintf(cmd + (int) strlen(cmd), "%s%s%d,\"%s\"", strlen(cmd) ? " " : "", opt, eci, data); + sprintf(cmd + strlen(cmd), "%s%s%d,\"%s\"", strlen(cmd) ? " " : "", opt, eci, data); } else { - sprintf(cmd + (int) strlen(cmd), "%s%s%d", strlen(cmd) ? " " : "", opt, eci); + sprintf(cmd + strlen(cmd), "%s%s%d", strlen(cmd) ? " " : "", opt, eci); } } @@ -198,7 +198,7 @@ static int arg_input(char *cmd, const char *filename, const char *input) { } fclose(fp); } - sprintf(cmd + (int) strlen(cmd), "%s-i \"%s\"", strlen(cmd) ? " " : "", filename); + sprintf(cmd + strlen(cmd), "%s-i \"%s\"", strlen(cmd) ? " " : "", filename); return 1; } return 0; @@ -207,27 +207,27 @@ static int arg_input(char *cmd, const char *filename, const char *input) { static void arg_input_mode(char *cmd, int input_mode) { if (input_mode != -1) { if ((input_mode & 0x07) == DATA_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--binary", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--binary", strlen(cmd) ? " " : ""); } else if ((input_mode & 0x07) == GS1_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--gs1", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--gs1", strlen(cmd) ? " " : ""); } if (input_mode & ESCAPE_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--esc", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--esc", strlen(cmd) ? " " : ""); } if (input_mode & EXTRA_ESCAPE_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--extraesc", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--extraesc", strlen(cmd) ? " " : ""); } if (input_mode & FAST_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--fast", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--fast", strlen(cmd) ? " " : ""); } if (input_mode & GS1PARENS_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--gs1parens", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--gs1parens", strlen(cmd) ? " " : ""); } if (input_mode & GS1NOCHECK_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--gs1nocheck", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--gs1nocheck", strlen(cmd) ? " " : ""); } if (input_mode & HEIGHTPERROW_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--heightperrow", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--heightperrow", strlen(cmd) ? " " : ""); } } } @@ -235,43 +235,43 @@ static void arg_input_mode(char *cmd, int input_mode) { static void arg_output_options(char *cmd, int output_options) { if (output_options != -1) { if (output_options & BARCODE_BIND) { - sprintf(cmd + (int) strlen(cmd), "%s--bind", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--bind", strlen(cmd) ? " " : ""); } if (output_options & BARCODE_BIND_TOP) { - sprintf(cmd + (int) strlen(cmd), "%s--bindtop", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--bindtop", strlen(cmd) ? " " : ""); } if (output_options & BARCODE_BOX) { - sprintf(cmd + (int) strlen(cmd), "%s--box", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--box", strlen(cmd) ? " " : ""); } if (output_options & BARCODE_STDOUT) { - sprintf(cmd + (int) strlen(cmd), "%s--direct", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--direct", strlen(cmd) ? " " : ""); } if (output_options & READER_INIT) { - sprintf(cmd + (int) strlen(cmd), "%s--init", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--init", strlen(cmd) ? " " : ""); } if (output_options & SMALL_TEXT) { - sprintf(cmd + (int) strlen(cmd), "%s--small", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--small", strlen(cmd) ? " " : ""); } if (output_options & BOLD_TEXT) { - sprintf(cmd + (int) strlen(cmd), "%s--bold", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--bold", strlen(cmd) ? " " : ""); } if (output_options & CMYK_COLOUR) { - sprintf(cmd + (int) strlen(cmd), "%s--cmyk", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--cmyk", strlen(cmd) ? " " : ""); } if (output_options & BARCODE_DOTTY_MODE) { - sprintf(cmd + (int) strlen(cmd), "%s--dotty", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--dotty", strlen(cmd) ? " " : ""); } if (output_options & GS1_GS_SEPARATOR) { - sprintf(cmd + (int) strlen(cmd), "%s--gssep", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--gssep", strlen(cmd) ? " " : ""); } if (output_options & BARCODE_QUIET_ZONES) { - sprintf(cmd + (int) strlen(cmd), "%s--quietzones", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--quietzones", strlen(cmd) ? " " : ""); } if (output_options & BARCODE_NO_QUIET_ZONES) { - sprintf(cmd + (int) strlen(cmd), "%s--noquietzones", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--noquietzones", strlen(cmd) ? " " : ""); } if (output_options & COMPLIANT_HEIGHT) { - sprintf(cmd + (int) strlen(cmd), "%s--compliantheight", strlen(cmd) ? " " : ""); + sprintf(cmd + strlen(cmd), "%s--compliantheight", strlen(cmd) ? " " : ""); } } } @@ -575,10 +575,11 @@ static void test_input(const testCtx *const p_ctx) { arg_input(cmd, input_filename, data[i].input); arg_data(cmd, "-o ", data[i].outfile); - if (!data[i].expected) { - printf("++++ Following Error 778 expected, ignore\n"); - } else if (data[i].batch && data[i].mirror && data[i].outfile && data[i].outfile[0] && strcmp(data[i].outfile, TEST_MIRRORED_DIR_LONG) == 0) { - printf("++++ Following Warning 188 expected, ignore\n"); + if (!data[i].expected + || (data[i].batch && data[i].mirror && data[i].outfile && data[i].outfile[0] + && strcmp(data[i].outfile, TEST_MIRRORED_DIR_LONG) == 0)) { + printf("++++ Following %s expected, ignore: ", data[i].expected ? "warning" : "error"); + fflush(stdout); } assert_nonnull(exec(cmd, buf, sizeof(buf) - 1, debug, i, NULL), "i:%d exec(%s) NULL\n", i, cmd); @@ -754,7 +755,10 @@ static void test_batch_large(const testCtx *const p_ctx) { strcat(data_buf, "\n"); have_input = arg_input(cmd, input_filename, data_buf); - if (!data[i].expected) printf("++++ Following Error 541 expected, ignore\n"); + if (!data[i].expected) { + printf("++++ Following error expected, ignore: "); + fflush(stdout); + } assert_nonnull(exec(cmd, buf, sizeof(buf) - 1, debug, i, NULL), "i:%d exec(%s) NULL\n", i, cmd); if (data[i].expected) { assert_zero(testUtilRemove(data[i].expected), "i:%d testUtilRemove(%s) != 0 (%d: %s)\n", i, data[i].expected, errno, strerror(errno)); @@ -962,151 +966,159 @@ static void test_barcode_symbology(const testCtx *const p_ctx) { /* 55*/ { "CODE93", "1", NULL, 0, "BARCODE_CODE93 (25)," }, /* 56*/ { "flat", "1", NULL, 0, "BARCODE_FLAT (28)," }, /* 57*/ { "dbar omn", "1", NULL, 0, "BARCODE_DBAR_OMN (29)," }, - /* 58*/ { "rss14", "1", NULL, 0, "BARCODE_DBAR_OMN (29)," }, - /* 59*/ { "databar omn", "1", NULL, 0, "BARCODE_DBAR_OMN (29)," }, - /* 60*/ { "databar omni", "1", NULL, 0, "BARCODE_DBAR_OMN (29)," }, - /* 61*/ { "dbar ltd", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, - /* 62*/ { "rss ltd", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, - /* 63*/ { "databar ltd", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, - /* 64*/ { "databar limited", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, - /* 65*/ { "dbarexp", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, - /* 66*/ { "rss exp", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, - /* 67*/ { "databarexp", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, - /* 68*/ { "databarexpanded", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, - /* 69*/ { "telepen", "1", NULL, 0, "BARCODE_TELEPEN (32)," }, - /* 70*/ { "upc", "1", NULL, 1, "Error 119: Invalid barcode type 'upc'" }, - /* 71*/ { "upca", "1", NULL, 0, "BARCODE_UPCA (34)," }, - /* 72*/ { "upca_chk", "123456789012", NULL, 0, "BARCODE_UPCA_CHK (35)," }, - /* 73*/ { "upce", "1", NULL, 0, "BARCODE_UPCE (37)," }, - /* 74*/ { "upce chk", "12345670", NULL, 0, "BARCODE_UPCE_CHK (38)," }, - /* 75*/ { "POSTNET ", "12345678901", NULL, 0, "BARCODE_POSTNET (40)," }, - /* 76*/ { "msi", "1", NULL, 0, "BARCODE_MSI_PLESSEY (47)," }, - /* 77*/ { "MSI Plessey ", "1", NULL, 0, "BARCODE_MSI_PLESSEY (47)," }, - /* 78*/ { "fim ", "A", NULL, 0, "BARCODE_FIM (49)," }, - /* 79*/ { "LOGMARS", "123456", NULL, 0, "BARCODE_LOGMARS (50)," }, - /* 80*/ { " pharma", "123456", NULL, 0, "BARCODE_PHARMA (51)," }, - /* 81*/ { " pzn ", "1", NULL, 0, "BARCODE_PZN (52)," }, - /* 82*/ { "pharma two", "4", NULL, 0, "BARCODE_PHARMA_TWO (53)," }, - /* 83*/ { "cepnet", "12345678", NULL, 0, "BARCODE_CEPNET (54)," }, - /* 84*/ { "BARCODE_PDF417", "1", NULL, 0, "BARCODE_PDF417 (55)," }, - /* 85*/ { "pdf", "1", NULL, 1, "Error 119: Invalid barcode type 'pdf'" }, - /* 86*/ { "barcodepdf417comp", "1", NULL, 0, "BARCODE_PDF417COMP (56)," }, - /* 87*/ { "pdf417trunc", "1", NULL, 0, "BARCODE_PDF417COMP (56)," }, - /* 88*/ { "MaxiCode", "1", NULL, 0, "BARCODE_MAXICODE (57)," }, - /* 89*/ { "QR CODE", "1", NULL, 0, "BARCODE_QRCODE (58)," }, - /* 90*/ { "qr", "1", NULL, 0, "BARCODE_QRCODE (58)," }, /* Synonym */ - /* 91*/ { "Code 128 B", "1", NULL, 0, "BARCODE_CODE128AB (60)," }, - /* 92*/ { "Code 128 aB", "1", NULL, 0, "BARCODE_CODE128AB (60)," }, - /* 93*/ { "AUS POST", "12345678901234567890123", NULL, 0, "BARCODE_AUSPOST (63)," }, - /* 94*/ { "AusReply", "12345678", NULL, 0, "BARCODE_AUSREPLY (66)," }, - /* 95*/ { "AUSROUTE", "12345678", NULL, 0, "BARCODE_AUSROUTE (67)," }, - /* 96*/ { "AUS REDIRECT", "12345678", NULL, 0, "BARCODE_AUSREDIRECT (68)," }, - /* 97*/ { "isbnx", "123456789", NULL, 0, "BARCODE_ISBNX (69)," }, - /* 98*/ { "rm4scc", "1", NULL, 0, "BARCODE_RM4SCC (70)," }, - /* 99*/ { "DataMatrix", "1", NULL, 0, "BARCODE_DATAMATRIX (71)," }, - /*100*/ { "EAN14", "1", NULL, 0, "BARCODE_EAN14 (72)," }, - /*101*/ { "vin", "12345678701234567", NULL, 0, "BARCODE_VIN (73)" }, - /*102*/ { "CodaBlock-F", "1", NULL, 0, "BARCODE_CODABLOCKF (74)," }, - /*103*/ { "NVE18", "1", NULL, 0, "BARCODE_NVE18 (75)," }, - /*104*/ { "Japan Post", "1", NULL, 0, "BARCODE_JAPANPOST (76)," }, - /*105*/ { "Korea Post", "1", NULL, 0, "BARCODE_KOREAPOST (77)," }, - /*106*/ { "DBar Stk", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, - /*107*/ { "rss14stack", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, - /*108*/ { "DataBar Stk", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, - /*109*/ { "DataBar Stacked", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, - /*110*/ { "DBar Omn Stk", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, - /*111*/ { "RSS14STACK OMNI", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, - /*112*/ { "DataBar Omn Stk", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, - /*113*/ { "DataBar Stacked Omn", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, - /*114*/ { "DataBar Stacked Omni", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, - /*115*/ { "DBar Exp Stk", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, - /*116*/ { "rss_expstack", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, - /*117*/ { "DataBar Exp Stk", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, - /*118*/ { "DataBar Expanded Stk", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, - /*119*/ { "DataBar Expanded Stacked", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, - /*120*/ { "planet", "12345678901", NULL, 0, "BARCODE_PLANET (82)," }, - /*121*/ { "MicroPDF417", "1", NULL, 0, "BARCODE_MICROPDF417 (84)," }, - /*122*/ { "USPS IMail", "12345678901234567890", NULL, 0, "BARCODE_USPS_IMAIL (85)," }, - /*123*/ { "OneCode", "12345678901234567890", NULL, 0, "BARCODE_USPS_IMAIL (85)," }, - /*124*/ { "plessey", "1", NULL, 0, "BARCODE_PLESSEY (86)," }, - /*125*/ { "telepen num", "1", NULL, 0, "BARCODE_TELEPEN_NUM (87)," }, - /*126*/ { "ITF14", "1", NULL, 0, "BARCODE_ITF14 (89)," }, - /*127*/ { "KIX", "1", NULL, 0, "BARCODE_KIX (90)," }, - /*128*/ { "Aztec", "1", NULL, 0, "BARCODE_AZTEC (92)," }, - /*129*/ { "Aztec Code", "1", NULL, 0, "BARCODE_AZTEC (92)," }, /* Synonym */ - /*130*/ { "daft", "D", NULL, 0, "BARCODE_DAFT (93)," }, - /*131*/ { "DPD", "0123456789012345678901234567", NULL, 0, "BARCODE_DPD (96)," }, - /*132*/ { "Micro QR", "1", NULL, 0, "BARCODE_MICROQR (97)," }, - /*133*/ { "Micro QR Code", "1", NULL, 0, "BARCODE_MICROQR (97)," }, - /*134*/ { "hibc128", "1", NULL, 0, "BARCODE_HIBC_128 (98)," }, - /*135*/ { "hibccode128", "1", NULL, 0, "BARCODE_HIBC_128 (98)," }, /* Synonym */ - /*136*/ { "hibc39", "1", NULL, 0, "BARCODE_HIBC_39 (99)," }, - /*137*/ { "hibccode39", "1", NULL, 0, "BARCODE_HIBC_39 (99)," }, /* Synonym */ - /*138*/ { "hibcdatamatrix", "1", NULL, 0, "BARCODE_HIBC_DM (102)," }, /* Synonym */ - /*139*/ { "hibcdm", "1", NULL, 0, "BARCODE_HIBC_DM (102)," }, - /*140*/ { "HIBC qr", "1", NULL, 0, "BARCODE_HIBC_QR (104)," }, - /*141*/ { "HIBC QR Code", "1", NULL, 0, "BARCODE_HIBC_QR (104)," }, /* Synonym */ - /*142*/ { "HIBCPDF", "1", NULL, 0, "BARCODE_HIBC_PDF (106)," }, - /*143*/ { "HIBCPDF417", "1", NULL, 0, "BARCODE_HIBC_PDF (106)," }, /* Synonym */ - /*144*/ { "HIBCMICPDF", "1", NULL, 0, "BARCODE_HIBC_MICPDF (108)," }, - /*145*/ { "HIBC Micro PDF", "1", NULL, 0, "BARCODE_HIBC_MICPDF (108)," }, /* Synonym */ - /*146*/ { "HIBC Micro PDF417", "1", NULL, 0, "BARCODE_HIBC_MICPDF (108)," }, /* Synonym */ - /*147*/ { "HIBC BlockF", "1", NULL, 0, "BARCODE_HIBC_BLOCKF (110)," }, - /*148*/ { "HIBC CodaBlock-F", "1", NULL, 0, "BARCODE_HIBC_BLOCKF (110)," }, /* Synonym */ - /*149*/ { "HIBC Aztec", "1", NULL, 0, "BARCODE_HIBC_AZTEC (112)," }, - /*150*/ { "DotCode", "1", NULL, 0, "BARCODE_DOTCODE (115)," }, - /*151*/ { "Han Xin", "1", NULL, 0, "BARCODE_HANXIN (116)," }, - /*152*/ { "Mailmark", "01000000000000000AA00AA0A", NULL, 0, "BARCODE_MAILMARK_4S (121)," }, - /*153*/ { "Mailmark 4-state", "01000000000000000AA00AA0A", NULL, 0, "BARCODE_MAILMARK_4S (121)," }, - /*154*/ { "Mailmark 2D", "012100123412345678AB19XY1A 0", NULL, 0, "BARCODE_MAILMARK_2D (119)," }, - /*155*/ { "azrune", "1", NULL, 0, "BARCODE_AZRUNE (128)," }, - /*156*/ { "aztecrune", "1", NULL, 0, "BARCODE_AZRUNE (128)," }, /* Synonym */ - /*157*/ { "aztecrunes", "1", NULL, 0, "BARCODE_AZRUNE (128)," }, /* Synonym */ - /*158*/ { "code32", "1", NULL, 0, "BARCODE_CODE32 (129)," }, - /*159*/ { "eanx cc", "[20]01", "1234567890128", 0, "BARCODE_EANX_CC (130)," }, - /*160*/ { "eancc", "[20]01", "1234567890128", 0, "BARCODE_EANX_CC (130)," }, - /*161*/ { "GS1 128 CC", "[01]12345678901231", "[20]01", 0, "BARCODE_GS1_128_CC (131)," }, - /*162*/ { "EAN128 CC", "[01]12345678901231", "[20]01", 0, "BARCODE_GS1_128_CC (131)," }, - /*163*/ { "dbaromncc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, - /*164*/ { "rss14 cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, - /*165*/ { "databaromncc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, - /*166*/ { "databaromnicc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, - /*167*/ { "dbarltdcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, - /*168*/ { "rss ltd cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, - /*169*/ { "databarltdcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, - /*170*/ { "databarlimitedcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, - /*171*/ { "dbarexpcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXP_CC (134)," }, - /*172*/ { "rss exp cc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXP_CC (134)," }, - /*173*/ { "databarexpcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXP_CC (134)," }, - /*174*/ { "databar expanded cc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXP_CC (134)," }, - /*175*/ { "upcacc", "[20]01", "12345678901", 0, "BARCODE_UPCA_CC (135)," }, - /*176*/ { "upcecc", "[20]01", "1234567", 0, "BARCODE_UPCE_CC (136)," }, - /*177*/ { "dbar stk cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_STK_CC (137)," }, - /*178*/ { "rss14stackcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_STK_CC (137)," }, - /*179*/ { "databar stk cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_STK_CC (137)," }, - /*180*/ { "databar stacked cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_STK_CC (137)," }, - /*181*/ { "dbaromnstkcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, - /*182*/ { "BARCODE_RSS14_OMNI_CC", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, - /*183*/ { "databaromnstkcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, - /*184*/ { "databar stacked omncc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, - /*185*/ { "databar stacked omni cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, - /*186*/ { "dbarexpstkcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, - /*187*/ { "RSS EXPSTACK CC", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, - /*188*/ { "databarexpstkcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, - /*189*/ { "databar expanded stkcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, - /*190*/ { "databar expanded stacked cc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, - /*191*/ { "Channel", "1", NULL, 0, "BARCODE_CHANNEL (140)," }, - /*192*/ { "Channel Code", "1", NULL, 0, "BARCODE_CHANNEL (140)," }, - /*193*/ { "CodeOne", "1", NULL, 0, "BARCODE_CODEONE (141)," }, - /*194*/ { "Grid Matrix", "1", NULL, 0, "BARCODE_GRIDMATRIX (142)," }, - /*195*/ { "UPN QR", "1", NULL, 0, "BARCODE_UPNQR (143)," }, - /*196*/ { "UPN QR Code", "1", NULL, 0, "BARCODE_UPNQR (143)," }, /* Synonym */ - /*197*/ { "ultra", "1", NULL, 0, "BARCODE_ULTRA (144)," }, - /*198*/ { "ultracode", "1", NULL, 0, "BARCODE_ULTRA (144)," }, /* Synonym */ - /*199*/ { "rMQR", "1", NULL, 0, "BARCODE_RMQR (145)," }, - /*200*/ { "bc412", "1234567", NULL, 0, "BARCODE_BC412 (146)," }, - /*201*/ { "x", "1", NULL, 1, "Error 119: Invalid barcode type 'x'" }, - /*202*/ { "\177", "1", NULL, 1, "Error 119: Invalid barcode type '\177'" }, + /* 58*/ { "dbar omni", "1", NULL, 0, "BARCODE_DBAR_OMN (29)," }, + /* 59*/ { "rss14", "1", NULL, 0, "BARCODE_DBAR_OMN (29)," }, + /* 60*/ { "databar omn", "1", NULL, 0, "BARCODE_DBAR_OMN (29)," }, + /* 61*/ { "databar omni", "1", NULL, 0, "BARCODE_DBAR_OMN (29)," }, + /* 62*/ { "dbar ltd", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, + /* 63*/ { "dbar limited", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, + /* 64*/ { "rss ltd", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, + /* 65*/ { "databar ltd", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, + /* 66*/ { "databar limited", "1", NULL, 0, "BARCODE_DBAR_LTD (30)," }, + /* 67*/ { "dbarexp", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, + /* 68*/ { "dbarexpanded", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, + /* 69*/ { "rss exp", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, + /* 70*/ { "databarexp", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, + /* 71*/ { "databarexpanded", "[10]12", NULL, 0, "BARCODE_DBAR_EXP (31)," }, + /* 72*/ { "telepen", "1", NULL, 0, "BARCODE_TELEPEN (32)," }, + /* 73*/ { "upc", "1", NULL, 1, "Error 119: Invalid barcode type 'upc'" }, + /* 74*/ { "upca", "1", NULL, 0, "BARCODE_UPCA (34)," }, + /* 75*/ { "upca_chk", "123456789012", NULL, 0, "BARCODE_UPCA_CHK (35)," }, + /* 76*/ { "upce", "1", NULL, 0, "BARCODE_UPCE (37)," }, + /* 77*/ { "upce chk", "12345670", NULL, 0, "BARCODE_UPCE_CHK (38)," }, + /* 78*/ { "POSTNET ", "12345678901", NULL, 0, "BARCODE_POSTNET (40)," }, + /* 79*/ { "msi", "1", NULL, 0, "BARCODE_MSI_PLESSEY (47)," }, + /* 80*/ { "MSI Plessey ", "1", NULL, 0, "BARCODE_MSI_PLESSEY (47)," }, + /* 81*/ { "fim ", "A", NULL, 0, "BARCODE_FIM (49)," }, + /* 82*/ { "LOGMARS", "123456", NULL, 0, "BARCODE_LOGMARS (50)," }, + /* 83*/ { " pharma", "123456", NULL, 0, "BARCODE_PHARMA (51)," }, + /* 84*/ { " pzn ", "1", NULL, 0, "BARCODE_PZN (52)," }, + /* 85*/ { "pharma two", "4", NULL, 0, "BARCODE_PHARMA_TWO (53)," }, + /* 86*/ { "cepnet", "12345678", NULL, 0, "BARCODE_CEPNET (54)," }, + /* 87*/ { "BARCODE_PDF417", "1", NULL, 0, "BARCODE_PDF417 (55)," }, + /* 88*/ { "pdf", "1", NULL, 1, "Error 119: Invalid barcode type 'pdf'" }, + /* 89*/ { "barcodepdf417comp", "1", NULL, 0, "BARCODE_PDF417COMP (56)," }, + /* 90*/ { "pdf417trunc", "1", NULL, 0, "BARCODE_PDF417COMP (56)," }, + /* 91*/ { "MaxiCode", "1", NULL, 0, "BARCODE_MAXICODE (57)," }, + /* 92*/ { "QR CODE", "1", NULL, 0, "BARCODE_QRCODE (58)," }, + /* 93*/ { "qr", "1", NULL, 0, "BARCODE_QRCODE (58)," }, /* Synonym */ + /* 94*/ { "Code 128 B", "1", NULL, 0, "BARCODE_CODE128AB (60)," }, + /* 95*/ { "Code 128 aB", "1", NULL, 0, "BARCODE_CODE128AB (60)," }, + /* 96*/ { "AUS POST", "12345678901234567890123", NULL, 0, "BARCODE_AUSPOST (63)," }, + /* 97*/ { "AusReply", "12345678", NULL, 0, "BARCODE_AUSREPLY (66)," }, + /* 98*/ { "AUSROUTE", "12345678", NULL, 0, "BARCODE_AUSROUTE (67)," }, + /* 99*/ { "AUS REDIRECT", "12345678", NULL, 0, "BARCODE_AUSREDIRECT (68)," }, + /*100*/ { "isbnx", "123456789", NULL, 0, "BARCODE_ISBNX (69)," }, + /*101*/ { "rm4scc", "1", NULL, 0, "BARCODE_RM4SCC (70)," }, + /*102*/ { "DataMatrix", "1", NULL, 0, "BARCODE_DATAMATRIX (71)," }, + /*103*/ { "EAN14", "1", NULL, 0, "BARCODE_EAN14 (72)," }, + /*104*/ { "vin", "12345678701234567", NULL, 0, "BARCODE_VIN (73)" }, + /*105*/ { "CodaBlock-F", "1", NULL, 0, "BARCODE_CODABLOCKF (74)," }, + /*106*/ { "NVE18", "1", NULL, 0, "BARCODE_NVE18 (75)," }, + /*107*/ { "Japan Post", "1", NULL, 0, "BARCODE_JAPANPOST (76)," }, + /*108*/ { "Korea Post", "1", NULL, 0, "BARCODE_KOREAPOST (77)," }, + /*109*/ { "DBar Stk", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, + /*110*/ { "DBar Stacked", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, + /*111*/ { "rss14stack", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, + /*112*/ { "DataBar Stk", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, + /*113*/ { "DataBar Stacked", "1", NULL, 0, "BARCODE_DBAR_STK (79)," }, + /*114*/ { "DBar Omn Stk", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, + /*115*/ { "DBar Stacked Omni", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, + /*116*/ { "RSS14STACK OMNI", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, + /*117*/ { "DataBar Omn Stk", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, + /*118*/ { "DataBar Stacked Omn", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, + /*119*/ { "DataBar Stacked Omni", "1", NULL, 0, "BARCODE_DBAR_OMNSTK (80)," }, + /*120*/ { "DBar Exp Stk", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, + /*121*/ { "DBar Expanded Stacked", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, + /*122*/ { "rss_expstack", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, + /*123*/ { "DataBar Exp Stk", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, + /*124*/ { "DataBar Expanded Stk", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, + /*125*/ { "DataBar Expanded Stacked", "[20]01", NULL, 0, "BARCODE_DBAR_EXPSTK (81)," }, + /*126*/ { "planet", "12345678901", NULL, 0, "BARCODE_PLANET (82)," }, + /*127*/ { "MicroPDF417", "1", NULL, 0, "BARCODE_MICROPDF417 (84)," }, + /*128*/ { "USPS IMail", "12345678901234567890", NULL, 0, "BARCODE_USPS_IMAIL (85)," }, + /*129*/ { "OneCode", "12345678901234567890", NULL, 0, "BARCODE_USPS_IMAIL (85)," }, + /*130*/ { "plessey", "1", NULL, 0, "BARCODE_PLESSEY (86)," }, + /*131*/ { "telepen num", "1", NULL, 0, "BARCODE_TELEPEN_NUM (87)," }, + /*132*/ { "ITF14", "1", NULL, 0, "BARCODE_ITF14 (89)," }, + /*133*/ { "KIX", "1", NULL, 0, "BARCODE_KIX (90)," }, + /*134*/ { "Aztec", "1", NULL, 0, "BARCODE_AZTEC (92)," }, + /*135*/ { "Aztec Code", "1", NULL, 0, "BARCODE_AZTEC (92)," }, /* Synonym */ + /*136*/ { "daft", "D", NULL, 0, "BARCODE_DAFT (93)," }, + /*137*/ { "DPD", "0123456789012345678901234567", NULL, 0, "BARCODE_DPD (96)," }, + /*138*/ { "Micro QR", "1", NULL, 0, "BARCODE_MICROQR (97)," }, + /*139*/ { "Micro QR Code", "1", NULL, 0, "BARCODE_MICROQR (97)," }, + /*140*/ { "hibc128", "1", NULL, 0, "BARCODE_HIBC_128 (98)," }, + /*141*/ { "hibccode128", "1", NULL, 0, "BARCODE_HIBC_128 (98)," }, /* Synonym */ + /*142*/ { "hibc39", "1", NULL, 0, "BARCODE_HIBC_39 (99)," }, + /*143*/ { "hibccode39", "1", NULL, 0, "BARCODE_HIBC_39 (99)," }, /* Synonym */ + /*144*/ { "hibcdatamatrix", "1", NULL, 0, "BARCODE_HIBC_DM (102)," }, /* Synonym */ + /*145*/ { "hibcdm", "1", NULL, 0, "BARCODE_HIBC_DM (102)," }, + /*146*/ { "HIBC qr", "1", NULL, 0, "BARCODE_HIBC_QR (104)," }, + /*147*/ { "HIBC QR Code", "1", NULL, 0, "BARCODE_HIBC_QR (104)," }, /* Synonym */ + /*148*/ { "HIBCPDF", "1", NULL, 0, "BARCODE_HIBC_PDF (106)," }, + /*149*/ { "HIBCPDF417", "1", NULL, 0, "BARCODE_HIBC_PDF (106)," }, /* Synonym */ + /*150*/ { "HIBCMICPDF", "1", NULL, 0, "BARCODE_HIBC_MICPDF (108)," }, + /*151*/ { "HIBC Micro PDF", "1", NULL, 0, "BARCODE_HIBC_MICPDF (108)," }, /* Synonym */ + /*152*/ { "HIBC Micro PDF417", "1", NULL, 0, "BARCODE_HIBC_MICPDF (108)," }, /* Synonym */ + /*153*/ { "HIBC BlockF", "1", NULL, 0, "BARCODE_HIBC_BLOCKF (110)," }, + /*154*/ { "HIBC CodaBlock-F", "1", NULL, 0, "BARCODE_HIBC_BLOCKF (110)," }, /* Synonym */ + /*155*/ { "HIBC Aztec", "1", NULL, 0, "BARCODE_HIBC_AZTEC (112)," }, + /*156*/ { "DotCode", "1", NULL, 0, "BARCODE_DOTCODE (115)," }, + /*157*/ { "Han Xin", "1", NULL, 0, "BARCODE_HANXIN (116)," }, + /*158*/ { "Mailmark", "01000000000000000AA00AA0A", NULL, 0, "BARCODE_MAILMARK_4S (121)," }, + /*159*/ { "Mailmark 4-state", "01000000000000000AA00AA0A", NULL, 0, "BARCODE_MAILMARK_4S (121)," }, + /*160*/ { "Mailmark 2D", "012100123412345678AB19XY1A 0", NULL, 0, "BARCODE_MAILMARK_2D (119)," }, + /*161*/ { "azrune", "1", NULL, 0, "BARCODE_AZRUNE (128)," }, + /*162*/ { "aztecrune", "1", NULL, 0, "BARCODE_AZRUNE (128)," }, /* Synonym */ + /*163*/ { "aztecrunes", "1", NULL, 0, "BARCODE_AZRUNE (128)," }, /* Synonym */ + /*164*/ { "code32", "1", NULL, 0, "BARCODE_CODE32 (129)," }, + /*165*/ { "eanx cc", "[20]01", "1234567890128", 0, "BARCODE_EANX_CC (130)," }, + /*166*/ { "eancc", "[20]01", "1234567890128", 0, "BARCODE_EANX_CC (130)," }, + /*167*/ { "GS1 128 CC", "[01]12345678901231", "[20]01", 0, "BARCODE_GS1_128_CC (131)," }, + /*168*/ { "EAN128 CC", "[01]12345678901231", "[20]01", 0, "BARCODE_GS1_128_CC (131)," }, + /*169*/ { "dbaromncc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, + /*170*/ { "dbaromnicc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, + /*171*/ { "rss14 cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, + /*172*/ { "databaromncc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, + /*173*/ { "databaromnicc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMN_CC (132)," }, + /*174*/ { "dbarltdcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, + /*175*/ { "dbarlimitedcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, + /*176*/ { "rss ltd cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, + /*177*/ { "databarltdcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, + /*178*/ { "databarlimitedcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_LTD_CC (133)," }, + /*179*/ { "dbarexpcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXP_CC (134)," }, + /*180*/ { "rss exp cc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXP_CC (134)," }, + /*181*/ { "databarexpcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXP_CC (134)," }, + /*182*/ { "databar expanded cc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXP_CC (134)," }, + /*183*/ { "upcacc", "[20]01", "12345678901", 0, "BARCODE_UPCA_CC (135)," }, + /*184*/ { "upcecc", "[20]01", "1234567", 0, "BARCODE_UPCE_CC (136)," }, + /*185*/ { "dbar stk cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_STK_CC (137)," }, + /*186*/ { "rss14stackcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_STK_CC (137)," }, + /*187*/ { "databar stk cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_STK_CC (137)," }, + /*188*/ { "databar stacked cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_STK_CC (137)," }, + /*189*/ { "dbaromnstkcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, + /*190*/ { "BARCODE_RSS14_OMNI_CC", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, + /*191*/ { "databaromnstkcc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, + /*192*/ { "databar stacked omncc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, + /*193*/ { "databar stacked omni cc", "[20]01", "1234567890123", 0, "BARCODE_DBAR_OMNSTK_CC (138)," }, + /*194*/ { "dbarexpstkcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, + /*195*/ { "RSS EXPSTACK CC", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, + /*196*/ { "databarexpstkcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, + /*197*/ { "databar expanded stkcc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, + /*198*/ { "databar expanded stacked cc", "[20]01", "[01]12345678901231", 0, "BARCODE_DBAR_EXPSTK_CC (139)," }, + /*199*/ { "Channel", "1", NULL, 0, "BARCODE_CHANNEL (140)," }, + /*200*/ { "Channel Code", "1", NULL, 0, "BARCODE_CHANNEL (140)," }, + /*201*/ { "CodeOne", "1", NULL, 0, "BARCODE_CODEONE (141)," }, + /*202*/ { "Grid Matrix", "1", NULL, 0, "BARCODE_GRIDMATRIX (142)," }, + /*203*/ { "UPN QR", "1", NULL, 0, "BARCODE_UPNQR (143)," }, + /*204*/ { "UPN QR Code", "1", NULL, 0, "BARCODE_UPNQR (143)," }, /* Synonym */ + /*205*/ { "ultra", "1", NULL, 0, "BARCODE_ULTRA (144)," }, + /*206*/ { "ultracode", "1", NULL, 0, "BARCODE_ULTRA (144)," }, /* Synonym */ + /*207*/ { "rMQR", "1", NULL, 0, "BARCODE_RMQR (145)," }, + /*208*/ { "bc412", "1234567", NULL, 0, "BARCODE_BC412 (146)," }, + /*209*/ { "x", "1", NULL, 1, "Error 119: Invalid barcode type 'x'" }, + /*210*/ { "\177", "1", NULL, 1, "Error 119: Invalid barcode type '\177'" }, }; int data_size = ARRAY_SIZE(data); int i; @@ -1169,8 +1181,8 @@ static void test_other_opts(const testCtx *const p_ctx) { /* 11*/ { BARCODE_CODE128, "1", -1, " --fgcolor=", "111111", "", 0 }, /* 12*/ { BARCODE_CODE128, "1", -1, " --fgcolour=", "111111", "", 0 }, /* 13*/ { BARCODE_CODE128, "1", -1, " --compliantheight", "", "", 0 }, - /* 14*/ { BARCODE_CODE128, "1", -1, " --fontsize=", "10", "", 0 }, - /* 15*/ { BARCODE_CODE128, "1", -1, " --fontsize=", "101", "Warning 126: Font size out of range (0 to 100), ignoring", 0 }, + /* 14*/ { BARCODE_EANX, "123456", -1, " --guardwhitespace", "", "", 0 }, + /* 15*/ { BARCODE_EANX, "123456", -1, " --embedfont", "", "", 0 }, /* 16*/ { BARCODE_CODE128, "1", -1, " --nobackground", "", "", 0 }, /* 17*/ { BARCODE_CODE128, "1", -1, " --noquietzones", "", "", 0 }, /* 18*/ { BARCODE_CODE128, "1", -1, " --notext", "", "", 0 }, @@ -1260,6 +1272,56 @@ static void test_other_opts(const testCtx *const p_ctx) { testFinish(); } +static void test_combos(const testCtx *const p_ctx) { + int debug = p_ctx->debug; + + struct item { + int b; + char *data; + char *opts; + + char *expected; + char *outfilename; + int strstr_cmp; + }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { -1, "1", " --direct -o direct.gif", "Warning 193: Output file given, ignoring '--direct' option", "direct.gif", 0 }, + }; + int data_size = ARRAY_SIZE(data); + int i; + + char cmd[4096]; + char buf[8192]; + + testStart("test_combos"); + + for (i = 0; i < data_size; i++) { + + if (testContinue(p_ctx, i)) continue; + + strcpy(cmd, "zint"); + + arg_int(cmd, "-b ", data[i].b); + arg_data(cmd, "-d ", data[i].data); + strcat(cmd, data[i].opts); + + strcat(cmd, " 2>&1"); + + assert_nonnull(exec(cmd, buf, sizeof(buf) - 1, debug, i, NULL), "i:%d exec(%s) NULL\n", i, cmd); + if (data[i].strstr_cmp) { + assert_nonnull(strstr(buf, data[i].expected), "i:%d strstr buf (%s) != expected (%s) (%s)\n", i, buf, data[i].expected, cmd); + } else { + assert_zero(strcmp(buf, data[i].expected), "i:%d strcmp buf (%s) != expected (%s) (%s)\n", i, buf, data[i].expected, cmd); + } + if (data[i].outfilename != NULL) { + assert_zero(remove(data[i].outfilename), "i:%d remove(%s) != 0 (%d: %s)\n", i, data[i].outfilename, errno, strerror(errno)); + } + } + + testFinish(); +} + static void test_exit_status(const testCtx *const p_ctx) { int debug = p_ctx->debug; @@ -1333,6 +1395,7 @@ int main(int argc, char *argv[]) { { "test_checks", test_checks }, { "test_barcode_symbology", test_barcode_symbology }, { "test_other_opts", test_other_opts }, + { "test_combos", test_combos }, { "test_exit_status", test_exit_status }, }; diff --git a/frontend_qt/barcodeitem.cpp b/frontend_qt/barcodeitem.cpp index 441ae7a7..e8956e1e 100644 --- a/frontend_qt/barcodeitem.cpp +++ b/frontend_qt/barcodeitem.cpp @@ -1,7 +1,7 @@ /*************************************************************************** * Copyright (C) 2008 by BogDan Vatra * * bogdan@licentia.eu * - * Copyright (C) 2009-2021 by Robin Stuart * + * Copyright (C) 2009-2023 by Robin Stuart * * * * 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 * @@ -35,6 +35,10 @@ void BarcodeItem::setSize(int width, int height) { h = height; } +void BarcodeItem::setColor(const QColor& color) { + m_color = color; +} + QRectF BarcodeItem::boundingRect() const { return QRectF(0, 0, w, h); @@ -42,5 +46,9 @@ QRectF BarcodeItem::boundingRect() const void BarcodeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) { - bc.render(*painter, boundingRect()); + QRectF painterRect = boundingRect(); + if (m_color.isValid()) { + painter->fillRect(painterRect, m_color); + } + bc.render(*painter, painterRect); } diff --git a/frontend_qt/barcodeitem.h b/frontend_qt/barcodeitem.h index 939e8bff..b5d78927 100644 --- a/frontend_qt/barcodeitem.h +++ b/frontend_qt/barcodeitem.h @@ -1,7 +1,7 @@ /*************************************************************************** * Copyright (C) 2008 by BogDan Vatra * * bogdan@licentia.eu * - * Copyright (C) 2009-2021 by Robin Stuart * + * Copyright (C) 2009-2023 by Robin Stuart * * * * 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 * @@ -33,11 +33,13 @@ public: ~BarcodeItem(); void setSize(int width, int height); + void setColor(const QColor& color); /* Set colour of bounding rect */ QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); private: int w, h; + QColor m_color; public: mutable Zint::QZint bc; diff --git a/frontend_qt/grpUPCA.ui b/frontend_qt/grpUPCA.ui index 4fde6117..384e0416 100644 --- a/frontend_qt/grpUPCA.ui +++ b/frontend_qt/grpUPCA.ui @@ -168,6 +168,34 @@ to default 5X + + + + Guard Whitespace + + + false + + + Add quiet zone indicators ("<", ">") to Human Readable Text (HRT) +(ignored if disabled) + + + + + + + Embed Font (SVG only) + + + false + + + Embed OCR-B font in SVG output +(ignored if disabled) + + + diff --git a/frontend_qt/grpUPCEAN.ui b/frontend_qt/grpUPCEAN.ui index 57011e09..6b8e97d1 100644 --- a/frontend_qt/grpUPCEAN.ui +++ b/frontend_qt/grpUPCEAN.ui @@ -178,6 +178,34 @@ to default 5X + + + + Guard Whitespace + + + false + + + Add quiet zone indicators ("<", ">") to Human Readable Text (HRT) +(ignored if disabled) + + + + + + + Embed Font (SVG only) + + + false + + + Embed OCR-B font in SVG output +(ignored if disabled) + + + diff --git a/frontend_qt/mainwindow.cpp b/frontend_qt/mainwindow.cpp index d75bce81..ea2ed86d 100644 --- a/frontend_qt/mainwindow.cpp +++ b/frontend_qt/mainwindow.cpp @@ -231,7 +231,7 @@ void MainWindow::mac_hack_statusBars(QWidget *win, const char* name) #endif MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags fl) - : QWidget(parent, fl), m_optionWidget(nullptr), m_symbology(0), + : QWidget(parent, fl), m_previewBgColor(0xF4, 0xF4, 0xF4), m_optionWidget(nullptr), m_symbology(0), m_menu(nullptr), m_lblHeightPerRow(nullptr), m_spnHeightPerRow(nullptr), m_btnHeightPerRowDisable(nullptr), m_btnHeightPerRowDefault(nullptr), @@ -310,6 +310,9 @@ MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags fl) load_settings(settings); + // Set background of preview - allows whitespace and quiet zones to be more easily seen + m_bc.setColor(m_previewBgColor); + QIcon clearIcon(QSL(":res/delete.svg")); btnClearData->setIcon(clearIcon); btnClearDataSeg1->setIcon(clearIcon); @@ -334,6 +337,7 @@ MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags fl) connect(spnTextGap, SIGNAL(valueChanged( double )), SLOT(update_preview())); connect(btnClearTextGap, SIGNAL(clicked( bool )), SLOT(clear_text_gap())); connect(txtData, SIGNAL(textChanged( const QString& )), SLOT(data_ui_set())); + connect(txtData, SIGNAL(textChanged( const QString& )), SLOT(upcae_no_quiet_zones_ui_set())); connect(txtData, SIGNAL(textChanged( const QString& )), SLOT(update_preview())); connect(txtDataSeg1, SIGNAL(textChanged( const QString& )), SLOT(data_ui_set())); connect(txtDataSeg1, SIGNAL(textChanged( const QString& )), SLOT(update_preview())); @@ -446,6 +450,9 @@ MainWindow::~MainWindow() settings.setValue(QSL("studio/symbology"), bstyle->currentIndex()); settings.setValue(QSL("studio/ink/text"), m_fgstr); settings.setValue(QSL("studio/paper/text"), m_bgstr); + if (m_previewBgColor.isValid()) { + settings.setValue(QSL("studio/preview_bg_color"), m_previewBgColor.name()); + } settings.setValue(QSL("studio/data"), txtData->text()); /* Seg data not saved so don't restore */ settings.setValue(QSL("studio/composite_text"), txtComposite->toPlainText()); @@ -511,6 +518,11 @@ void MainWindow::load_settings(QSettings &settings) m_bgstr = bgDefault; } + m_previewBgColor = QColor(settings.value(QSL("studio/preview_bg_color"), QSL("#F4F4F4")).toString()); + if (!m_previewBgColor.isValid()) { + m_previewBgColor = QColor(0xF4, 0xF4, 0xF4); + } + txtData->setText(settings.value(QSL("studio/data"), initialData).toString()); /* Don't save seg data */ txtComposite->setText(settings.value(QSL("studio/composite_text"), initialData).toString()); @@ -820,6 +832,19 @@ void MainWindow::help() QDesktopServices::openUrl(QSL("https://zint.org.uk/manual")); // TODO: manual.md } +void MainWindow::preview_bg() +{ + QColorDialog color_dialog(nullptr /*parent*/); + color_dialog.setWindowTitle(tr("Set preview background colour")); + color_dialog.setOptions(QColorDialog::DontUseNativeDialog); + color_dialog.setCurrentColor(m_previewBgColor); + if (color_dialog.exec() && color_dialog.selectedColor().isValid()) { + m_previewBgColor = color_dialog.selectedColor(); + m_bc.setColor(m_previewBgColor); + update_preview(); + } +} + QLineEdit *MainWindow::get_seg_textbox(int seg_no) { static QLineEdit *textboxes[4] = { @@ -1150,6 +1175,8 @@ void MainWindow::HRTShow_ui_set() lblTextGap->setEnabled(enabled); spnTextGap->setEnabled(enabled); text_gap_ui_set(); + upcean_no_quiet_zones_ui_set(); + upcae_no_quiet_zones_ui_set(); } void MainWindow::text_gap_ui_set() @@ -1186,6 +1213,61 @@ void MainWindow::codeone_ui_set() } } +void MainWindow::upcean_no_quiet_zones_ui_set() +{ + int symbology = bstyle_items[bstyle->currentIndex()].symbology; + if (!m_bc.bc.isExtendable(symbology) || symbology == BARCODE_UPCA || symbology == BARCODE_UPCA_CHK + || symbology == BARCODE_UPCA_CC) + return; + + bool showHRT = chkHRTShow->isEnabled() && chkHRTShow->isChecked(); + QCheckBox *noQZs, *guardWS, *embedFont; + noQZs = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANNoQuietZones")) : nullptr; + guardWS = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANGuardWhitespace")) : nullptr; + embedFont = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANEmbedVectorFont")) : nullptr; + + if (noQZs && guardWS) { + guardWS->setEnabled(!noQZs->isChecked() && showHRT); + } + if (embedFont) { + embedFont->setEnabled(showHRT); + } +} + +void MainWindow::upcae_no_quiet_zones_ui_set() +{ + const int symbology = bstyle_items[bstyle->currentIndex()].symbology; + const bool is_upca = symbology == BARCODE_UPCA || symbology == BARCODE_UPCA_CHK || symbology == BARCODE_UPCA_CC; + const bool is_upce = symbology == BARCODE_UPCE || symbology == BARCODE_UPCE_CHK || symbology == BARCODE_UPCE_CC; + if (!is_upca && !is_upce) + return; + + bool showHRT = chkHRTShow->isEnabled() && chkHRTShow->isChecked(); + QCheckBox *noQZs, *guardWS, *embedFont; + if (is_upca) { + noQZs = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCANoQuietZones")) : nullptr; + guardWS = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCAGuardWhitespace")) : nullptr; + embedFont = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCAEmbedVectorFont")) : nullptr; + } else { + noQZs = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANNoQuietZones")) : nullptr; + guardWS = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANGuardWhitespace")) : nullptr; + embedFont = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANEmbedVectorFont")) : nullptr; + } + + if (noQZs && guardWS) { + if (have_addon()) { + noQZs->setEnabled(true); + guardWS->setEnabled(!noQZs->isChecked() && showHRT); + } else { + noQZs->setEnabled(false); + guardWS->setEnabled(false); + } + } + if (embedFont) { + embedFont->setEnabled(showHRT); + } +} + void MainWindow::structapp_ui_set() { int symbology = bstyle_items[bstyle->currentIndex()].symbology; @@ -1523,6 +1605,12 @@ void MainWindow::height_per_row_default() } } +bool MainWindow::have_addon() +{ + const QRegularExpression addonRE(QSL("^[0-9X]+[+][0-9]+$")); + return txtData->text().contains(addonRE); +} + void MainWindow::guard_default_upcean() { guard_default(QSL("spnUPCEANGuardDescent")); @@ -1560,6 +1648,8 @@ void MainWindow::view_context_menu(const QPoint &pos) menu.addAction(m_openCLIAct); menu.addSeparator(); menu.addAction(m_saveAsAct); + menu.addSeparator(); + menu.addAction(m_previewBgColorAct); menu.exec(get_context_menu_pos(pos, view)); } @@ -2161,6 +2251,7 @@ void MainWindow::change_options() m_optionWidget = uiload.load(&file); file.close(); load_sub_settings(settings, symbology); + upcae_no_quiet_zones_ui_set(); tabMain->insertTab(1, m_optionWidget, tr("UPC-&A")); combobox_item_enabled(cmbFontSetting, 1, false); // Disable bold options combobox_item_enabled(cmbFontSetting, 3, false); @@ -2170,7 +2261,10 @@ void MainWindow::change_options() connect(get_widget(QSL("cmbUPCAAddonGap")), SIGNAL(currentIndexChanged( int )), SLOT(update_preview())); connect(get_widget(QSL("spnUPCAGuardDescent")), SIGNAL(valueChanged( double )), SLOT(update_preview())); connect(get_widget(QSL("btnUPCAGuardDefault")), SIGNAL(clicked( bool )), SLOT(guard_default_upca())); + connect(get_widget(QSL("chkUPCANoQuietZones")), SIGNAL(toggled( bool )), SLOT(upcae_no_quiet_zones_ui_set())); connect(get_widget(QSL("chkUPCANoQuietZones")), SIGNAL(toggled( bool )), SLOT(update_preview())); + connect(get_widget(QSL("chkUPCAGuardWhitespace")), SIGNAL(toggled( bool )), SLOT(update_preview())); + connect(get_widget(QSL("chkUPCAEmbedVectorFont")), SIGNAL(toggled( bool )), SLOT(update_preview())); } else if (symbology == BARCODE_EANX || symbology == BARCODE_EANX_CHK || symbology == BARCODE_EANX_CC || symbology == BARCODE_UPCE || symbology == BARCODE_UPCE_CHK || symbology == BARCODE_UPCE_CC @@ -2181,12 +2275,17 @@ void MainWindow::change_options() m_optionWidget = uiload.load(&file); file.close(); load_sub_settings(settings, symbology); - if (symbology == BARCODE_UPCE || symbology == BARCODE_UPCE_CHK || symbology == BARCODE_UPCE_CC) { + const bool is_upce = symbology == BARCODE_UPCE || symbology == BARCODE_UPCE_CHK + || symbology == BARCODE_UPCE_CC; + if (is_upce) { tabMain->insertTab(1, m_optionWidget, tr("UPC-&E")); + upcae_no_quiet_zones_ui_set(); } else if (symbology == BARCODE_ISBNX) { tabMain->insertTab(1, m_optionWidget, tr("ISBN")); + upcean_no_quiet_zones_ui_set(); } else { tabMain->insertTab(1, m_optionWidget, tr("&EAN")); + upcean_no_quiet_zones_ui_set(); } combobox_item_enabled(cmbFontSetting, 1, false); // Disable bold options combobox_item_enabled(cmbFontSetting, 3, false); @@ -2196,7 +2295,16 @@ void MainWindow::change_options() connect(get_widget(QSL("cmbUPCEANAddonGap")), SIGNAL(currentIndexChanged( int )), SLOT(update_preview())); connect(get_widget(QSL("spnUPCEANGuardDescent")), SIGNAL(valueChanged( double )), SLOT(update_preview())); connect(get_widget(QSL("btnUPCEANGuardDefault")), SIGNAL(clicked( bool )), SLOT(guard_default_upcean())); + if (is_upce) { + connect(get_widget(QSL("chkUPCEANNoQuietZones")), SIGNAL(toggled( bool )), + SLOT(upcae_no_quiet_zones_ui_set())); + } else { + connect(get_widget(QSL("chkUPCEANNoQuietZones")), SIGNAL(toggled( bool )), + SLOT(upcean_no_quiet_zones_ui_set())); + } connect(get_widget(QSL("chkUPCEANNoQuietZones")), SIGNAL(toggled( bool )), SLOT(update_preview())); + connect(get_widget(QSL("chkUPCEANGuardWhitespace")), SIGNAL(toggled( bool )), SLOT(update_preview())); + connect(get_widget(QSL("chkUPCEANEmbedVectorFont")), SIGNAL(toggled( bool )), SLOT(update_preview())); } else if (symbology == BARCODE_VIN) { QFile file(QSL(":/grpVIN.ui")); @@ -2432,8 +2540,7 @@ bool MainWindow::upcean_addon_gap(const QString &comboBoxName, const QString &la QComboBox *comboBox = m_optionWidget->findChild(comboBoxName); QLabel *label = m_optionWidget->findChild(labelName); - const QRegularExpression addonRE(QSL("^[0-9X]+[+][0-9]+$")); - bool enabled = txtData->text().contains(addonRE); + bool enabled = have_addon(); if (comboBox) { comboBox->setEnabled(enabled); } @@ -2591,6 +2698,8 @@ void MainWindow::update_preview() } m_bc.bc.setGSSep(false); m_bc.bc.setNoQuietZones(false); + m_bc.bc.setGuardWhitespace(false); + m_bc.bc.setEmbedVectorFont(false); m_bc.bc.setDotSize(0.4f / 0.5f); m_bc.bc.setGuardDescent(5.0f); m_bc.bc.clearStructApp(); @@ -2622,6 +2731,11 @@ void MainWindow::update_preview() } if (get_chk_val(QSL("chkUPCEANNoQuietZones"))) { m_bc.bc.setNoQuietZones(true); + } else if (get_chk_val(QSL("chkUPCEANGuardWhitespace"))) { + m_bc.bc.setGuardWhitespace(true); + } + if (get_chk_val(QSL("chkUPCEANEmbedVectorFont"))) { + m_bc.bc.setEmbedVectorFont(true); } break; @@ -2632,6 +2746,11 @@ void MainWindow::update_preview() QSL("btnUPCEANGuardDefault")); if (get_chk_val(QSL("chkUPCEANNoQuietZones"))) { m_bc.bc.setNoQuietZones(true); + } else if (get_chk_val(QSL("chkUPCEANGuardWhitespace"))) { + m_bc.bc.setGuardWhitespace(true); + } + if (get_chk_val(QSL("chkUPCEANEmbedVectorFont"))) { + m_bc.bc.setEmbedVectorFont(true); } break; @@ -2641,6 +2760,11 @@ void MainWindow::update_preview() upcean_guard_descent(QSL("spnUPCAGuardDescent"), QSL("lblUPCAGuardDescent"), QSL("btnUPCAGuardDefault")); if (get_chk_val(QSL("chkUPCANoQuietZones"))) { m_bc.bc.setNoQuietZones(true); + } else if (get_chk_val(QSL("chkUPCAGuardWhitespace"))) { + m_bc.bc.setGuardWhitespace(true); + } + if (get_chk_val(QSL("chkUPCAEmbedVectorFont"))) { + m_bc.bc.setEmbedVectorFont(true); } break; @@ -2651,6 +2775,11 @@ void MainWindow::update_preview() QSL("btnUPCEANGuardDefault")); if (get_chk_val(QSL("chkUPCEANNoQuietZones"))) { m_bc.bc.setNoQuietZones(true); + } else if (get_chk_val(QSL("chkUPCEANGuardWhitespace"))) { + m_bc.bc.setGuardWhitespace(true); + } + if (get_chk_val(QSL("chkUPCEANEmbedVectorFont"))) { + m_bc.bc.setEmbedVectorFont(true); } break; @@ -3227,6 +3356,7 @@ void MainWindow::createActions() QIcon zapIcon(QSL(":res/zap.svg")); QIcon aboutIcon(QSL(":res/zint-qt.ico")); QIcon helpIcon(QIcon::fromTheme(QSL("help-contents"), QIcon(QSL(":res/help-circle.svg")))); + QIcon previewBgIcon(QSL(":res/monitor-bg.svg")); QIcon quitIcon(QIcon::fromTheme(QSL("window-close"), QIcon(QSL(":res/x.svg")))); btnMenu->setIcon(menuIcon); @@ -3299,6 +3429,10 @@ void MainWindow::createActions() m_helpAct->setShortcut(QKeySequence::HelpContents); connect(m_helpAct, SIGNAL(triggered()), this, SLOT(help())); + m_previewBgColorAct = new QAction(previewBgIcon, tr("Set preview bac&kground..."), this); + m_previewBgColorAct->setStatusTip(tr("Set preview background colour")); + connect(m_previewBgColorAct, SIGNAL(triggered()), this, SLOT(preview_bg())); + m_aboutAct = new QAction(aboutIcon, tr("&About..."), this); m_aboutAct->setStatusTip(tr("About Zint Barcode Studio")); connect(m_aboutAct, SIGNAL(triggered()), this, SLOT(about())); @@ -4282,6 +4416,9 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) settings.setValue(QSL("studio/bc/upca/guard_descent"), QString::number(get_dspn_val(QSL("spnUPCAGuardDescent")), 'f', 3 /*precision*/)); settings.setValue(QSL("studio/bc/upca/chk_no_quiet_zones"), get_chk_val(QSL("chkUPCANoQuietZones"))); + settings.setValue(QSL("studio/bc/upca/chk_guard_whitespace"), get_chk_val(QSL("chkUPCAGuardWhitespace"))); + settings.setValue(QSL("studio/bc/upca/chk_embed_vector_font"), + get_chk_val(QSL("chkUPCAEmbedVectorFont"))); break; case BARCODE_EANX: @@ -4291,6 +4428,10 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) settings.setValue(QSL("studio/bc/eanx/guard_descent"), QString::number(get_dspn_val(QSL("spnUPCEANGuardDescent")), 'f', 3 /*precision*/)); settings.setValue(QSL("studio/bc/eanx/chk_no_quiet_zones"), get_chk_val(QSL("chkUPCEANNoQuietZones"))); + settings.setValue(QSL("studio/bc/eanx/chk_guard_whitespace"), + get_chk_val(QSL("chkUPCEANGuardWhitespace"))); + settings.setValue(QSL("studio/bc/eanx/chk_embed_vector_font"), + get_chk_val(QSL("chkUPCEANEmbedVectorFont"))); break; case BARCODE_UPCE: @@ -4300,6 +4441,10 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) settings.setValue(QSL("studio/bc/upce/guard_descent"), QString::number(get_dspn_val(QSL("spnUPCEANGuardDescent")), 'f', 3 /*precision*/)); settings.setValue(QSL("studio/bc/upce/chk_no_quiet_zones"), get_chk_val(QSL("chkUPCEANNoQuietZones"))); + settings.setValue(QSL("studio/bc/upce/chk_guard_whitespace"), + get_chk_val(QSL("chkUPCEANGuardWhitespace"))); + settings.setValue(QSL("studio/bc/upce/chk_embed_vector_font"), + get_chk_val(QSL("chkUPCEANEmbedVectorFont"))); break; case BARCODE_ISBNX: @@ -4307,6 +4452,10 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) settings.setValue(QSL("studio/bc/isnbx/guard_descent"), QString::number(get_dspn_val(QSL("spnUPCEANGuardDescent")), 'f', 3 /*precision*/)); settings.setValue(QSL("studio/bc/isnbx/chk_no_quiet_zones"), get_chk_val(QSL("chkUPCEANNoQuietZones"))); + settings.setValue(QSL("studio/bc/isnbx/chk_guard_whitespace"), + get_chk_val(QSL("chkUPCEANGuardWhitespace"))); + settings.setValue(QSL("studio/bc/isnbx/chk_embed_vector_font"), + get_chk_val(QSL("chkUPCEANEmbedVectorFont"))); break; case BARCODE_VIN: @@ -4709,6 +4858,9 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) set_cmb_from_setting(settings, QSL("studio/bc/upca/addongap"), QSL("cmbUPCAAddonGap")); set_dspn_from_setting(settings, QSL("studio/bc/upca/guard_descent"), QSL("spnUPCAGuardDescent"), 5.0f); set_chk_from_setting(settings, QSL("studio/bc/upca/chk_no_quiet_zones"), QSL("chkUPCANoQuietZones")); + set_chk_from_setting(settings, QSL("studio/bc/upca/chk_guard_whitespace"), QSL("chkUPCAGuardWhitespace")); + set_chk_from_setting(settings, QSL("studio/bc/upca/chk_embed_vector_font"), + QSL("chkUPCAEmbedVectorFont")); break; case BARCODE_EANX: @@ -4717,6 +4869,10 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) set_cmb_from_setting(settings, QSL("studio/bc/eanx/addongap"), QSL("cmbUPCEANAddonGap")); set_dspn_from_setting(settings, QSL("studio/bc/eanx/guard_descent"), QSL("spnUPCEANGuardDescent"), 5.0f); set_chk_from_setting(settings, QSL("studio/bc/eanx/chk_no_quiet_zones"), QSL("chkUPCEANNoQuietZones")); + set_chk_from_setting(settings, QSL("studio/bc/eanx/chk_guard_whitespace"), + QSL("chkUPCEANGuardWhitespace")); + set_chk_from_setting(settings, QSL("studio/bc/eanx/chk_embed_vector_font"), + QSL("chkUPCEANEmbedVectorFont")); break; case BARCODE_UPCE: @@ -4725,12 +4881,20 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) set_cmb_from_setting(settings, QSL("studio/bc/upce/addongap"), QSL("cmbUPCEANAddonGap")); set_dspn_from_setting(settings, QSL("studio/bc/upce/guard_descent"), QSL("spnUPCEANGuardDescent"), 5.0f); set_chk_from_setting(settings, QSL("studio/bc/upce/chk_no_quiet_zones"), QSL("chkUPCEANNoQuietZones")); + set_chk_from_setting(settings, QSL("studio/bc/upce/chk_guard_whitespace"), + QSL("chkUPCEANGuardWhitespace")); + set_chk_from_setting(settings, QSL("studio/bc/upce/chk_embed_vector_font"), + QSL("chkUPCEANEmbedVectorFont")); break; case BARCODE_ISBNX: set_cmb_from_setting(settings, QSL("studio/bc/isbnx/addongap"), QSL("cmbUPCEANAddonGap")); set_dspn_from_setting(settings, QSL("studio/bc/isbnx/guard_descent"), QSL("spnUPCEANGuardDescent"), 5.0f); set_chk_from_setting(settings, QSL("studio/bc/isbnx/chk_no_quiet_zones"), QSL("chkUPCEANNoQuietZones")); + set_chk_from_setting(settings, QSL("studio/bc/isbnx/chk_guard_whitespace"), + QSL("chkUPCEANGuardWhitespace")); + set_chk_from_setting(settings, QSL("studio/bc/isbnx/chk_embed_vector_font"), + QSL("chkUPCEANEmbedVectorFont")); break; case BARCODE_VIN: diff --git a/frontend_qt/mainwindow.h b/frontend_qt/mainwindow.h index af5c70f0..7e3e029c 100644 --- a/frontend_qt/mainwindow.h +++ b/frontend_qt/mainwindow.h @@ -72,6 +72,8 @@ public slots: void text_gap_ui_set(); void dotty_ui_set(); void codeone_ui_set(); + void upcean_no_quiet_zones_ui_set(); + void upcae_no_quiet_zones_ui_set(); void structapp_ui_set(); void text_gap_zero(); void clear_text_gap(); @@ -85,6 +87,7 @@ public slots: void factory_reset(); void about(); void help(); + void preview_bg(); void quit_now(); void menu(); @@ -147,6 +150,7 @@ protected: bool enabled = true); void guard_default(const QString &spnBoxName); double get_height_per_row_default(); + bool have_addon(); void set_gs1_mode(bool gs1_mode); void set_smaller_font(const QString &labelName); @@ -206,6 +210,7 @@ private: QString m_fgstr, m_bgstr; QByteArray m_fgcolor_geometry, m_bgcolor_geometry; BarcodeItem m_bc; + QColor m_previewBgColor; QWidget *m_optionWidget; QGraphicsScene *scene; int m_symbology; @@ -229,6 +234,7 @@ private: QAction *m_copyTIFAct; QAction *m_openCLIAct; QAction *m_saveAsAct; + QAction *m_previewBgColorAct; QAction *m_factoryResetAct; QAction *m_aboutAct; QAction *m_helpAct; diff --git a/frontend_qt/res/monitor-bg.svg b/frontend_qt/res/monitor-bg.svg new file mode 100644 index 00000000..b8ad7e61 --- /dev/null +++ b/frontend_qt/res/monitor-bg.svg @@ -0,0 +1 @@ + diff --git a/frontend_qt/resources.qrc b/frontend_qt/resources.qrc index 2c0bc2e5..a3b3f970 100644 --- a/frontend_qt/resources.qrc +++ b/frontend_qt/resources.qrc @@ -43,6 +43,7 @@ res/download.svg res/help-circle.svg res/menu.svg + res/monitor-bg.svg res/scaling.svg res/shuffle.svg res/white-eye.svg diff --git a/win32/libzint.vcxproj b/win32/libzint.vcxproj index ec1e61ce..6229bde9 100644 --- a/win32/libzint.vcxproj +++ b/win32/libzint.vcxproj @@ -183,7 +183,7 @@ - + diff --git a/win32/vs2008/libzint.vcproj b/win32/vs2008/libzint.vcproj index c2a01580..ee0e5295 100644 --- a/win32/vs2008/libzint.vcproj +++ b/win32/vs2008/libzint.vcproj @@ -518,7 +518,7 @@ > - + diff --git a/win32/vs2015/vsx/libzintMD.vcxproj b/win32/vs2015/vsx/libzintMD.vcxproj index a57d0ee6..1d25e872 100644 --- a/win32/vs2015/vsx/libzintMD.vcxproj +++ b/win32/vs2015/vsx/libzintMD.vcxproj @@ -131,7 +131,7 @@ - + diff --git a/win32/vs2019/libzint.vcxproj b/win32/vs2019/libzint.vcxproj index 851d15ab..b39bdc04 100644 --- a/win32/vs2019/libzint.vcxproj +++ b/win32/vs2019/libzint.vcxproj @@ -183,7 +183,7 @@ - + diff --git a/zint-qt.desktop b/zint-qt.desktop index cd0010e9..cd5081ee 100644 --- a/zint-qt.desktop +++ b/zint-qt.desktop @@ -8,5 +8,5 @@ Exec=zint-qt Icon=zint-qt Terminal=false Type=Application -Categories=Utility; +Categories=Graphics;2DGraphics; Keywords=barcode;studio;