From 6f7cdd660c6b43c399345dfa779ccabda1b25083 Mon Sep 17 00:00:00 2001 From: gitlost Date: Sun, 15 Jan 2023 00:22:43 +0000 Subject: [PATCH] - Add special symbology-specific escape sequences (Code 128 only) for manual Code Set switching via `input_mode` flag `EXTRA_ESCAPE_MODE` (CLI `--extraesc`) (ticket #204) - GUI: disable "Reset" colour if default; add "Unset" to Printing Scale dialog (allows unsetting of X-dim/resolution settings without having to zap) - library: guard against out-of-bounds rows (negative) - test suite: fix some clang-tidy warnings; slight coverage improvements --- ChangeLog | 5 + backend/code128.c | 151 ++++++++++++------ backend/code128.h | 21 ++- backend/code16k.c | 4 +- backend/library.c | 25 ++- backend/libzint.rc | 2 +- backend/tests/test_code128.c | 205 +++++++++++++++---------- backend/tests/test_common.c | 4 +- backend/tests/test_gb18030.c | 10 +- backend/tests/test_gb2312.c | 13 +- backend/tests/test_library.c | 8 +- backend/tests/test_pdf417.c | 8 +- backend/tests/test_sjis.c | 10 +- backend/tests/testcommon.c | 83 +++++++--- backend/zint.h | 6 +- backend_qt/qzint.cpp | 3 +- backend_qt/tests/test_qzint.cpp | 15 +- backend_tcl/zint.c | 27 +++- docs/images/gui_set_printing_scale.png | Bin 119220 -> 123905 bytes docs/manual.pmd | 66 ++++++-- docs/manual.txt | 65 ++++++-- docs/zint.1 | 11 +- docs/zint.1.pmd | 9 +- frontend/main.c | 9 +- frontend/tests/test_args.c | 75 ++++----- frontend_qt/extScale.ui | 14 ++ frontend_qt/grpC128.ui | 19 ++- frontend_qt/mainwindow.cpp | 31 ++-- frontend_qt/scalewindow.cpp | 28 +++- frontend_qt/scalewindow.h | 7 +- 30 files changed, 649 insertions(+), 285 deletions(-) diff --git a/ChangeLog b/ChangeLog index 39b15ec6..68c920b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,11 @@ Changes - BMP/EMF/EPS/GIF/PCX/PNG/SVG/TIF/TXT: check for errors on writing to output file (ticket #275) - manual/man page: document octal escape; Code 128 subset/mode -> Code Set +- Add special symbology-specific escape sequences (Code 128 only) for manual + Code Set switching via `input_mode` flag `EXTRA_ESCAPE_MODE` (CLI --extraesc) + (ticket #204) +- GUI: disable "Reset" colour if default; add "Unset" to Printing Scale dialog + (allows unsetting of X-dim/resolution settings without having to zap) Bugs ---- diff --git a/backend/code128.c b/backend/code128.c index 422a77df..0b27c229 100644 --- a/backend/code128.c +++ b/backend/code128.c @@ -1,7 +1,7 @@ /* code128.c - Handles Code 128 and derivatives */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Bugfixes thanks to Christian Sakowski and BogDan Vatra Redistribution and use in source and binary forms, with or without @@ -97,14 +97,14 @@ INTERNAL int c128_parunmodd(const unsigned char llyth) { } /** - * bring together same type blocks + * Bring together same type blocks */ -static void c128_grwp(int list[2][C128_MAX], int *indexliste) { +static void c128_grwp(int list[2][C128_MAX], int *p_indexliste) { /* bring together same type blocks */ - if (*(indexliste) > 1) { + if (*p_indexliste > 1) { int i = 1; - while (i < *(indexliste)) { + while (i < *p_indexliste) { if (list[1][i - 1] == list[1][i]) { int j; /* bring together */ @@ -112,12 +112,12 @@ static void c128_grwp(int list[2][C128_MAX], int *indexliste) { j = i + 1; /* decrease the list */ - while (j < *(indexliste)) { + while (j < *p_indexliste) { list[0][j - 1] = list[0][j]; list[1][j - 1] = list[1][j]; j++; } - *(indexliste) = *(indexliste) - 1; + *p_indexliste = *p_indexliste - 1; i--; } i++; @@ -128,10 +128,11 @@ static void c128_grwp(int list[2][C128_MAX], int *indexliste) { /** * Implements rules from ISO 15417 Annex E */ -INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { +INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *p_indexliste, const char *manual_set) { int i, last, next; + const int indexliste = *p_indexliste; - for (i = 0; i < *(indexliste); i++) { + for (i = 0; i < indexliste; i++) { int current = list[1][i]; /* Either C128_ABORC, C128_AORB, C128_SHIFTA or C128_SHIFTB */ int length = list[0][i]; if (i != 0) { @@ -139,7 +140,7 @@ INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { } else { last = 0; } - if (i != *(indexliste) - 1) { + if (i != indexliste - 1) { next = list[1][i + 1]; } else { next = 0; @@ -147,7 +148,10 @@ INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { if (i == 0) { /* first block */ if (current == C128_ABORC) { - if ((*(indexliste) == 1) && (length == 2)) { + if (manual_set && manual_set[i]) { + list[1][i] = manual_set[i]; + current = manual_set[i]; + } else if ((indexliste == 1) && (length == 2)) { /* Rule 1a */ list[1][i] = C128_LATCHC; current = C128_LATCHC; @@ -160,7 +164,9 @@ INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { } } if (current == C128_AORB) { - if (next == C128_SHIFTA) { + if (manual_set && (manual_set[i] == 'A' || manual_set[i] == 'B')) { + list[1][i] = manual_set[i]; + } else if (next == C128_SHIFTA) { /* Rule 1c */ list[1][i] = C128_LATCHA; } else { @@ -170,14 +176,17 @@ INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { } else if (current == C128_SHIFTA) { /* Rule 1c */ list[1][i] = C128_LATCHA; - } else if (current == C128_SHIFTB) { /* Unless C128_LATCHC set above, can only be C128_SHIFTB */ + } else if (current == C128_SHIFTB) { /* Unless C128_LATCHX set above, can only be C128_SHIFTB */ /* Rule 1d */ list[1][i] = C128_LATCHB; } } else { if (current == C128_ABORC) { - if (length >= 4) { - /* Rule 3 */ + if (manual_set && manual_set[i]) { + list[1][i] = manual_set[i]; + current = manual_set[i]; + } else if (length >= 4) { + /* Rule 3 - note Rule 3b (odd C blocks) dealt with later */ list[1][i] = C128_LATCHC; current = C128_LATCHC; } else { @@ -185,7 +194,9 @@ INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { } } if (current == C128_AORB) { - if (last == C128_LATCHA || last == C128_SHIFTB) { /* Maintain state */ + if (manual_set && (manual_set[i] == 'A' || manual_set[i] == 'B')) { + list[1][i] = manual_set[i]; + } else if (last == C128_LATCHA || last == C128_SHIFTB) { /* Maintain state */ list[1][i] = C128_LATCHA; } else if (last == C128_LATCHB || last == C128_SHIFTA) { /* Maintain state */ list[1][i] = C128_LATCHB; @@ -195,7 +206,9 @@ INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { list[1][i] = C128_LATCHB; } } else if (current == C128_SHIFTA) { - if (length > 1) { + if (manual_set && manual_set[i] == 'A') { + list[1][i] = C128_LATCHA; + } else if (length > 1) { /* Rule 4 */ list[1][i] = C128_LATCHA; } else if (last == C128_LATCHA || last == C128_SHIFTB) { /* Maintain state */ @@ -203,8 +216,10 @@ INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { } else if (last == C128_LATCHC) { list[1][i] = C128_LATCHA; } - } else if (current == C128_SHIFTB) { /* Unless C128_LATCHC set above, can only be C128_SHIFTB */ - if (length > 1) { + } else if (current == C128_SHIFTB) { /* Unless C128_LATCHX set above, can only be C128_SHIFTB */ + if (manual_set && manual_set[i] == 'B') { + list[1][i] = C128_LATCHB; + } else if (length > 1) { /* Rule 5 */ list[1][i] = C128_LATCHB; } else if (last == C128_LATCHB || last == C128_SHIFTA) { /* Maintain state */ @@ -216,7 +231,7 @@ INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste) { } /* Rule 2 is implemented elsewhere, Rule 6 is implied */ } - c128_grwp(list, indexliste); + c128_grwp(list, p_indexliste); } /** @@ -273,25 +288,13 @@ INTERNAL void c128_set_c(const unsigned char source_a, const unsigned char sourc /* Put set data into set[]. If source given (GS1_MODE) then resolves odd C blocks */ INTERNAL void c128_put_in_set(int list[2][C128_MAX], const int indexliste, char set[C128_MAX], - unsigned char *source) { + const unsigned char *source) { int read = 0; int i, j; for (i = 0; i < indexliste; i++) { for (j = 0; j < list[0][i]; j++) { - switch (list[1][i]) { - case C128_SHIFTA: set[read] = 'a'; - break; - case C128_LATCHA: set[read] = 'A'; - break; - case C128_SHIFTB: set[read] = 'b'; - break; - case C128_LATCHB: set[read] = 'B'; - break; - case C128_LATCHC: set[read] = 'C'; - break; - } - read++; + set[read++] = list[1][i]; } } if (source) { @@ -380,6 +383,9 @@ INTERNAL int c128_hrt_cpy_iso8859_1_test(struct zint_symbol *symbol, const unsig 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; int error_number = 0, indexchaine, indexliste, f_state = 0; + unsigned char src_buf[C128_MAX + 1]; + unsigned char *src = source; + char manual_set[C128_MAX] = {0}; int list[2][C128_MAX] = {{0}}; char set[C128_MAX] = {0}, fset[C128_MAX], mode, last_set, current_set = ' '; int glyph_count = 0; /* Codeword estimate times 2 */ @@ -396,9 +402,47 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len return ZINT_ERROR_TOO_LONG; } + /* Detect special Code Set escapes for Code 128 in extra escape mode only */ + if ((symbol->input_mode & EXTRA_ESCAPE_MODE) && symbol->symbology == BARCODE_CODE128) { + char manual_ch = '\0'; + j = 0; + for (i = 0; i < length; i++) { + if (source[i] == '\\' && i + 2 < length && source[i + 1] == '^' + && ((source[i + 2] >= 'A' && source[i + 2] <= 'C') || source[i + 2] == '^')) { + if (source[i + 2] != '^') { + i += 2; + manual_ch = source[i]; + } else { /* Escape sequence '\^^' */ + manual_set[j] = manual_ch; + src_buf[j++] = source[i++]; + manual_set[j] = manual_ch; + src_buf[j++] = source[i++]; + /* Drop second '^' */ + } + } else { + manual_set[j] = manual_ch; + src_buf[j++] = source[i]; + } + } + if (j != length) { + length = j; + if (length == 0) { + strcpy(symbol->errtxt, "842: No input data"); + return ZINT_ERROR_INVALID_DATA; + } + src = src_buf; + src[length] = '\0'; + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("MSet: "); + for (i = 0; i < length; i++) printf("%c", manual_set[i] ? manual_set[i] : '.'); + printf("\n"); + } + } + } + /* Detect extended ASCII characters */ for (i = 0; i < length; i++) { - fset[i] = source[i] >= 128 ? 'f' : ' '; + fset[i] = src[i] >= 128 ? 'f' : ' '; } /* Decide when to latch to extended mode - Annex E note 3 */ @@ -447,8 +491,10 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len indexliste = 0; indexchaine = 0; - mode = c128_parunmodd(source[indexchaine]); - if ((symbol->symbology == BARCODE_CODE128AB) && (mode == C128_ABORC)) { + mode = c128_parunmodd(src[indexchaine]); + if (mode == C128_ABORC + && (symbol->symbology == BARCODE_CODE128AB + || (manual_set[indexchaine] == 'A' || manual_set[indexchaine] == 'B'))) { mode = C128_AORB; } @@ -460,15 +506,28 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len if (indexchaine == length) { break; } - mode = c128_parunmodd(source[indexchaine]); - if ((symbol->symbology == BARCODE_CODE128AB) && (mode == C128_ABORC)) { + mode = c128_parunmodd(src[indexchaine]); + if (mode == C128_ABORC + && (symbol->symbology == BARCODE_CODE128AB + || (manual_set[indexchaine] == 'A' || manual_set[indexchaine] == 'B'))) { mode = C128_AORB; } + if (manual_set[indexchaine] != manual_set[indexchaine - 1]) { + break; + } } indexliste++; } while (indexchaine < length); - c128_dxsmooth(list, &indexliste); + if (src == src_buf) { + /* Need to re-index `manual_set` to have sames indexes as `list` blocks for `c128_dxsmooth()` */ + j = 0; + for (i = 1; i < indexliste; i++) { + j += list[0][i - 1]; + manual_set[i] = manual_set[j]; + } + } + c128_dxsmooth(list, &indexliste, src == src_buf ? manual_set : NULL); /* Resolve odd length C128_LATCHC blocks */ if ((list[1][0] == C128_LATCHC) && (list[0][0] & 1)) { @@ -495,7 +554,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len c128_put_in_set(list, indexliste, set, NULL /*source*/); if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Data: %.*s (%d)\n", length, source, length); + printf("Data: %.*s (%d)\n", length, src, length); printf(" Set: %.*s\n", length, set); printf("FSet: %.*s\n", length, fset); } @@ -668,14 +727,14 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len switch (set[read]) { /* Encode data characters */ case 'a': - case 'A': c128_set_a(source[read], values, &bar_characters); + case 'A': c128_set_a(src[read], values, &bar_characters); read++; break; case 'b': - case 'B': (void) c128_set_b(source[read], values, &bar_characters); + case 'B': (void) c128_set_b(src[read], values, &bar_characters); read++; break; - case 'C': c128_set_c(source[read], source[read + 1], values, &bar_characters); + case 'C': c128_set_c(src[read], src[read + 1], values, &bar_characters); read += 2; break; } @@ -720,7 +779,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, source, length); + c128_hrt_cpy_iso8859_1(symbol, src, length); return error_number; } @@ -782,7 +841,7 @@ INTERNAL int gs1_128_cc(struct zint_symbol *symbol, unsigned char source[], int indexliste++; } while (indexchaine < reduced_length); - c128_dxsmooth(list, &indexliste); + c128_dxsmooth(list, &indexliste, NULL /*manual_set*/); /* Put set data into set[], resolving odd C blocks */ c128_put_in_set(list, indexliste, set, reduced); diff --git a/backend/code128.h b/backend/code128.h index 1d9f1474..aebcfe54 100644 --- a/backend/code128.h +++ b/backend/code128.h @@ -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 @@ -38,24 +38,23 @@ extern "C" { #define C128_MAX 160 -#define C128_SHIFTA 90 -#define C128_LATCHA 91 -#define C128_SHIFTB 92 -#define C128_LATCHB 93 -#define C128_SHIFTC 94 -#define C128_LATCHC 95 -#define C128_AORB 96 -#define C128_ABORC 97 +#define C128_LATCHA 'A' +#define C128_LATCHB 'B' +#define C128_LATCHC 'C' +#define C128_SHIFTA 'a' +#define C128_SHIFTB 'b' +#define C128_ABORC '9' +#define C128_AORB 'Z' INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int length); INTERNAL int c128_parunmodd(const unsigned char llyth); -INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste); +INTERNAL void c128_dxsmooth(int list[2][C128_MAX], int *indexliste, const char *manual_set); INTERNAL void c128_set_a(const unsigned char source, int values[], int *bar_chars); INTERNAL int c128_set_b(const unsigned char source, int values[], int *bar_chars); INTERNAL void c128_set_c(const unsigned char source_a, const unsigned char source_b, int values[], int *bar_chars); INTERNAL void c128_put_in_set(int list[2][C128_MAX], const int indexliste, char set[C128_MAX], - unsigned char *source); + const unsigned char *source); INTERNAL_DATA_EXTERN const char C128Table[107][6]; diff --git a/backend/code16k.c b/backend/code16k.c index 20db5426..97157a69 100644 --- a/backend/code16k.c +++ b/backend/code16k.c @@ -1,7 +1,7 @@ /* code16k.c - Handles Code 16k stacked 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 @@ -108,7 +108,7 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len indexliste++; } while (indexchaine < length); - c128_dxsmooth(list, &indexliste); + c128_dxsmooth(list, &indexliste, NULL /*manual_set*/); /* Put set data into set[], resolving odd C blocks */ c128_put_in_set(list, indexliste, set, source); diff --git a/backend/library.c b/backend/library.c index 30e6cea8..ad7759a8 100644 --- a/backend/library.c +++ b/backend/library.c @@ -1,7 +1,7 @@ /* library.c - external functions of libzint */ /* 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 @@ -296,7 +296,7 @@ static int dump_plot(struct zint_symbol *symbol) { } if (ferror(f)) { - sprintf(symbol->errtxt, "790: Incomplete write to output (%d: %.30s)", errno, strerror(errno)); + sprintf(symbol->errtxt, "795: Incomplete write to output (%d: %.30s)", errno, strerror(errno)); if (!output_to_stdout) { (void) fclose(f); } @@ -305,7 +305,7 @@ static int dump_plot(struct zint_symbol *symbol) { if (output_to_stdout) { if (fflush(f) != 0) { - sprintf(symbol->errtxt, "791: Incomplete flush to output (%d: %.30s)", errno, strerror(errno)); + sprintf(symbol->errtxt, "796: Incomplete flush to output (%d: %.30s)", errno, strerror(errno)); return ZINT_ERROR_FILE_WRITE; } } else { @@ -710,6 +710,7 @@ static int escape_char_process(struct zint_symbol *symbol, unsigned char *input_ int i; unsigned long unicode; unsigned char *escaped_string = (unsigned char *) z_alloca(length + 1); + const int extra_escape_mode = (symbol->input_mode & EXTRA_ESCAPE_MODE) && symbol->symbology == BARCODE_CODE128; in_posn = 0; out_posn = 0; @@ -726,6 +727,19 @@ static int escape_char_process(struct zint_symbol *symbol, unsigned char *input_ case '0': escaped_string[out_posn] = 0x00; /* Null */ in_posn += 2; break; + case '^': /* CODE128 specific */ + if (!extra_escape_mode) { + strcpy(symbol->errtxt, "798: Escape '\\^' only valid for Code 128 in extra escape mode"); + return ZINT_ERROR_INVALID_DATA; + } + /* Pass thru unaltered */ + escaped_string[out_posn++] = '\\'; + escaped_string[out_posn] = '^'; + in_posn += 2; + if (in_posn < length) { /* Note allowing '\\^' on its own at end */ + escaped_string[++out_posn] = input_string[in_posn++]; + } + break; case 'E': escaped_string[out_posn] = 0x04; /* End of Transmission */ in_posn += 2; break; @@ -1095,6 +1109,9 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[ if (symbol->rows >= 200) { /* Check for stacking too many symbols */ return error_tag(symbol, ZINT_ERROR_TOO_LONG, "770: Too many stacked symbols"); } + if (symbol->rows < 0) { /* Silently defend against out-of-bounds access */ + symbol->rows = 0; + } if ((symbol->input_mode & 0x07) == GS1_MODE && !gs1_compliant(symbol->symbology)) { return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "220: Selected symbology does not support GS1 mode"); @@ -1441,7 +1458,7 @@ int ZBarcode_Encode_File(struct zint_symbol *symbol, const char *filename) { /* Get file length */ if (fseek(file, 0, SEEK_END) != 0) { - sprintf(symbol->errtxt, "792: Unable to seek input file (%d: %.30s)", errno, strerror(errno)); + sprintf(symbol->errtxt, "797: Unable to seek input file (%d: %.30s)", errno, strerror(errno)); (void) fclose(file); return error_tag(symbol, ZINT_ERROR_INVALID_DATA, NULL); } diff --git a/backend/libzint.rc b/backend/libzint.rc index 08832592..0ff6135d 100644 --- a/backend/libzint.rc +++ b/backend/libzint.rc @@ -30,7 +30,7 @@ BEGIN VALUE "FileDescription", "libzint barcode library\0" VALUE "FileVersion", VER_FILEVERSION_STR VALUE "InternalName", "zint.dll\0" - VALUE "LegalCopyright", "Copyright 2022 Robin Stuart & BogDan Vatra\0" + VALUE "LegalCopyright", "Copyright 2023 Robin Stuart & BogDan Vatra\0" VALUE "OriginalFilename", "zint.dll\0" VALUE "ProductName", "libzint\0" VALUE "ProductVersion", VER_FILEVERSION_STR diff --git a/backend/tests/test_code128.c b/backend/tests/test_code128.c index e6bc5455..08978e91 100644 --- a/backend/tests/test_code128.c +++ b/backend/tests/test_code128.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 @@ -356,52 +356,82 @@ static void test_input(const testCtx *const p_ctx) { /* 0*/ { UNICODE_MODE, "\302\200", -1, ZINT_ERROR_INVALID_DATA, 0, 1, "Error 204: Invalid character in input data (ISO/IEC 8859-1 only)", "PAD not in ISO 8859-1" }, /* 1*/ { DATA_MODE, "\200", -1, 0, 57, 1, "(5) 103 101 64 23 106", "PAD ok using binary" }, /* 2*/ { UNICODE_MODE, "AIM1234", -1, 0, 101, 1, "(9) 104 33 41 45 99 12 34 87 106", "Example from Annex A.1, check char value 87" }, - /* 3*/ { GS1_MODE, "[90]12", -1, ZINT_ERROR_INVALID_OPTION, 0, 1, "Error 220: Selected symbology does not support GS1 mode", "" }, - /* 4*/ { UNICODE_MODE, "1", -1, 0, 46, 1, "(4) 104 17 18 106", "StartB 1" }, - /* 5*/ { UNICODE_MODE, "12", -1, 0, 46, 1, "(4) 105 12 14 106", "StartC 12" }, - /* 6*/ { UNICODE_MODE, "123", -1, 0, 68, 1, "(6) 104 17 18 19 8 106", "StartB 1 2 3" }, - /* 7*/ { UNICODE_MODE, "1234", -1, 0, 57, 1, "(5) 105 12 34 82 106", "StartC 12 34" }, - /* 8*/ { UNICODE_MODE, "12345", -1, 0, 79, 1, "(7) 105 12 34 100 21 54 106", "StartC 12 34 CodeB 5" }, - /* 9*/ { UNICODE_MODE, "\037", -1, 0, 46, 1, "(4) 103 95 95 106", "StartA US" }, - /* 10*/ { UNICODE_MODE, "1\037", -1, 0, 57, 1, "(5) 103 17 95 1 106", "StartA 1 US" }, - /* 11*/ { UNICODE_MODE, "12\037", -1, 0, 68, 1, "(6) 103 17 18 95 29 106", "StartA 1 2 US" }, - /* 12*/ { UNICODE_MODE, "a\037a", -1, 0, 79, 1, "(7) 104 65 98 95 65 86 106", "StartB a Shift US a" }, - /* 13*/ { UNICODE_MODE, "1234\037a", -1, 0, 101, 0, "(9) 105 12 34 101 95 98 65 100 106", "StartC 12 34 CodeA US Shift a; BWIPP different encodation" }, - /* 14*/ { UNICODE_MODE, "\037AAa\037", -1, 0, 101, 1, "(9) 103 95 33 33 98 65 95 2 106", "StartA US A A Shift a US" }, - /* 15*/ { UNICODE_MODE, "\037AAaa\037", -1, 0, 123, 0, "(11) 103 95 33 33 100 65 65 98 95 40 106", "StartA US A A CodeB a a Shift US; BWIPP different encodation" }, - /* 16*/ { UNICODE_MODE, "AAAa12345aAA", -1, 0, 167, 1, "(15) 104 33 33 33 65 17 99 23 45 100 65 33 33 54 106", "StartB A (3) a 1 CodeC 23 45 CodeB a A A" }, - /* 17*/ { UNICODE_MODE, "a\037Aa\037\037a\037aa\037a", -1, 0, 222, 1, "(20) 104 65 98 95 33 65 101 95 95 98 65 95 100 65 65 98 95 65 96 106", "StartB a Shift US A a CodeA US US Shift a US CodeB a a Shift US a" }, - /* 18*/ { UNICODE_MODE, "\000\037ß", 4, 0, 79, 1, "(7) 103 64 95 101 63 88 106", "StartA NUL US FNC4 ß" }, - /* 19*/ { UNICODE_MODE, "\000\037é", 4, 0, 90, 0, "(8) 103 64 95 101 98 73 78 106", "StartA NUL US FNC4 Shift é; BWIPP different encodation" }, - /* 20*/ { UNICODE_MODE, "\000\037éa", 5, 0, 101, 0, "(9) 103 64 95 100 100 73 65 61 106", "StartA NUL US LatchB FNC4 é a; BWIPP different encodation" }, - /* 21*/ { UNICODE_MODE, "abß", -1, 0, 79, 1, "(7) 104 65 66 100 63 29 106", "StartB a b FNC4 ß" }, - /* 22*/ { DATA_MODE, "\141\142\237", -1, 0, 90, 0, "(8) 104 65 66 100 98 95 26 106", "StartB a b FNC4 Shift APC; BWIPP different encodation" }, - /* 23*/ { DATA_MODE, "\141\142\237\037", -1, 0, 101, 0, "(9) 104 65 66 101 101 95 95 96 106", "StartB a b LatchA FNC4 APC US; BWIPP different encodation" }, - /* 24*/ { UNICODE_MODE, "ééé", -1, 0, 90, 1, "(8) 104 100 100 73 73 73 44 106", "StartB LatchFNC4 é é é" }, - /* 25*/ { UNICODE_MODE, "aééééb", -1, 0, 145, 1, "(13) 104 65 100 73 100 73 100 73 100 73 66 49 106", "StartB a FNC4 é (4) b" }, - /* 26*/ { UNICODE_MODE, "aéééééb", -1, 0, 145, 1, "(13) 104 65 100 100 73 73 73 73 73 100 66 93 106", "StartB a Latch é (5) Shift b" }, - /* 27*/ { UNICODE_MODE, "aééééébc", -1, 0, 167, 1, "(15) 104 65 100 100 73 73 73 73 73 100 66 100 67 40 106", "StartB a Latch é (5) Shift b Shift c" }, - /* 28*/ { UNICODE_MODE, "aééééébcd", -1, 0, 178, 1, "(16) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 66 106", "StartB a Latch é (5) Unlatch b c d" }, - /* 29*/ { UNICODE_MODE, "aééééébcde", -1, 0, 189, 1, "(17) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 2 106", "StartB a Latch é (5) Unlatch b c d e" }, - /* 30*/ { UNICODE_MODE, "aééééébcdeé", -1, 0, 211, 0, "(19) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 95 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é; BWIPP different encodation" }, - /* 31*/ { UNICODE_MODE, "aééééébcdeéé", -1, 0, 233, 0, "(21) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 100 73 19 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é (2); BWIPP different encodation" }, - /* 32*/ { UNICODE_MODE, "aééééébcdeééé", -1, 0, 244, 1, "(22) 104 65 100 100 73 73 73 73 73 100 66 100 67 100 68 100 69 73 73 73 83 106", "StartB a Latch é (5) Shift b Shift c Shift d Shift e é (3)" }, - /* 33*/ { UNICODE_MODE, "aééééébcdefééé", -1, 0, 255, 1, "(23) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 70 100 100 73 73 73 67 106", "StartB a Latch é (5) Unlatch b c d e f Latch é (3)" }, - /* 34*/ { DATA_MODE, "\200\200\200\200\200\101\060\060\060\060\101\200", -1, 0, 222, 1, "(20) 103 101 101 64 64 64 64 64 101 101 33 99 0 0 101 33 101 64 73 106", "StartA Latch PAD (4) Unlatch A CodeC 00 00 CodeA A FNC4 PAD" }, - /* 35*/ { UNICODE_MODE, "ÁÁÁÁÁÁ99999999999999", -1, 0, 211, 0, "(19) 104 100 100 33 33 33 33 33 33 99 99 99 99 99 99 99 99 63 106", "Okapi code128/extended-mode-exit-before-code-set-c.png (chose different solution); BWIPP different encodation" }, - /* 36*/ { UNICODE_MODE, "ÁÁÁÁÁÁ99999999999999Á", -1, 0, 233, 0, "(21) 104 100 100 33 33 33 33 33 33 99 99 99 99 99 99 99 99 100 33 91 106", "Above with trailing non-shifted (as still latched) extended; BWIPP different encodation" }, - /* 37*/ { DATA_MODE | ESCAPE_MODE, "@g(\302\302\302\302\3025555\302\302\302\302\302\302\302\302", -1, 0, 277, 0, "(25) 104 32 71 8 100 100 34 34 34 34 34 99 55 55 100 34 34 34 34 34 34 34 34 25 106", "Okapi code128/extended-mode-with-short-embedded-code-set-c.png (chose different solution); BWIPP different encodation" }, - /* 38*/ { DATA_MODE | ESCAPE_MODE, "@g(\302\302\302\302\302555555\302\302\302\302\302\302\302", -1, 0, 277, 0, "(25) 104 32 71 8 100 100 34 34 34 34 34 99 55 55 55 100 34 34 34 34 34 34 34 76 106", "Above with extra 55 instead of \xC2; BWIPP different encodation" }, - /* 39*/ { UNICODE_MODE, "ÁÁèÁÁFç7Z", -1, 0, 189, 0, "(17) 104 100 100 33 33 72 33 33 100 38 71 100 100 23 58 95 106", "Okapi code128/extended-mode-shift.png; BWIPP different encodation" }, - /* 40*/ { UNICODE_MODE, "m\nm\nm", -1, 0, 112, 1, "(10) 104 77 98 74 77 98 74 77 11 106", "Okapi code128/code-set-b-a-b-a-b.png" }, - /* 41*/ { UNICODE_MODE, "c\naDEF", -1, 0, 112, 1, "(10) 104 67 98 74 65 36 37 38 75 106", "Okapi bug-36-1.png" }, - /* 42*/ { UNICODE_MODE, "\na\nDEF", -1, 0, 112, 1, "(10) 103 74 98 65 74 36 37 38 90 106", "Okapi bug-36-2.png" }, - /* 43*/ { UNICODE_MODE, "ÿ\012àa\0121\012àAà", -1, 0, 222, 0, "(20) 104 100 95 98 74 100 64 65 98 74 17 98 74 100 64 33 100 64 61 106", "BWIPP different encodation, ShA instead of CodeA" }, - /* 44*/ { UNICODE_MODE, "ÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 387, 0, "(35) 104 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100 64", "BWIPP different encodation, CodeA instead of ShA, shorter" }, - /* 45*/ { UNICODE_MODE, "yÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 398, 0, "(36) 104 89 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100", "BWIPP different encodation, CodeA instead of ShA, shorter" }, - /* 46*/ { UNICODE_MODE, "ÿy1234\012àa\0121\0127890àAàDà\012à", -1, 0, 398, 0, "(36) 104 100 95 89 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100", "BWIPP different encodation, CodeA instead of ShA, shorter" }, - /* 47*/ { UNICODE_MODE, "ÿÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 409, 0, "(37) 104 100 95 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33", "BWIPP different encodation, CodeA instead of ShA, shorter" }, - /* 48*/ { UNICODE_MODE, "ÿ12345678\012à12345678abcdef\0121\01223456\012\0127890àAàBCDEFà\012\012à", -1, 0, 684, 0, "(62) 104 100 95 99 12 34 56 78 101 74 101 98 64 99 12 34 56 78 100 65 66 67 68 69 70 98 74", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 3*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^B12345\\^C6789", -1, 0, 123, 0, "(11) 104 17 18 19 20 21 99 67 89 11 106", "Ticket #204 ZPL example; BWIPP no manual mode" }, + /* 4*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^B12345\\^D6789", -1, 0, 167, 0, "(15) 104 17 18 19 20 21 60 62 36 22 23 24 25 1 106", "Unrecognized extra escape ignored; BWIPP no manual mode" }, + /* 5*/ { UNICODE_MODE | ESCAPE_MODE | EXTRA_ESCAPE_MODE, "\\^B12345\\^D6789", -1, 0, 167, 0, "(15) 104 17 18 19 20 21 60 62 36 22 23 24 25 1 106", "Unrecognized extra escape ignored; BWIPP no manual mode" }, + /* 6*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^A\\^B\\^C", -1, ZINT_ERROR_INVALID_DATA, 0, 1, "Error 842: No input data", "" }, + /* 7*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^A\\^^B\\^C", -1, 0, 68, 0, "(6) 103 60 62 34 80 106", "BWIPP no manual mode" }, + /* 8*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^A\\^B\\^^C", -1, 0, 68, 1, "(6) 104 60 62 35 84 106", "" }, + /* 9*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^^A\\^B\\^^C", -1, 0, 101, 1, "(9) 104 60 62 33 60 62 35 14 106", "" }, + /* 10*/ { UNICODE_MODE | ESCAPE_MODE | EXTRA_ESCAPE_MODE, "\\^^A\\^B\\^^C", -1, 0, 101, 1, "(9) 104 60 62 33 60 62 35 14 106", "" }, + /* 11*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^^A", -1, 0, 68, 1, "(6) 104 60 62 33 78 106", "" }, + /* 12*/ { GS1_MODE, "[90]12", -1, ZINT_ERROR_INVALID_OPTION, 0, 1, "Error 220: Selected symbology does not support GS1 mode", "" }, + /* 13*/ { UNICODE_MODE, "1", -1, 0, 46, 1, "(4) 104 17 18 106", "StartB 1" }, + /* 14*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^A1", -1, 0, 46, 0, "(4) 103 17 17 106", "StartA 1; BWIPP no manual mode" }, + /* 15*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^C1", -1, 0, 46, 1, "(4) 104 17 18 106", "StartB 1 (manual C ignored as odd); BWIPP no manual mode" }, + /* 16*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "1\\^A", -1, 0, 46, 1, "(4) 104 17 18 106", "StartB 1 (escape at end ignored); BWIPP no manual mode" }, + /* 17*/ { UNICODE_MODE, "12", -1, 0, 46, 1, "(4) 105 12 14 106", "StartC 12" }, + /* 18*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^C12", -1, 0, 46, 1, "(4) 105 12 14 106", "StartC 12" }, + /* 19*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^B12", -1, 0, 57, 0, "(5) 104 17 18 54 106", "StartB 1 2; BWIPP no manual mode" }, + /* 20*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^A12", -1, 0, 57, 0, "(5) 103 17 18 53 106", "StartA 1 2; BWIPP no manual mode" }, + /* 21*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^A1\\^B2", -1, 0, 68, 0, "(6) 103 17 100 18 65 106", "StartA 1 CodeB 2; BWIPP no manual mode" }, + /* 22*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^B1\\^A2", -1, 0, 68, 0, "(6) 104 17 101 18 68 106", "StartB 1 CodeA 2; BWIPP no manual mode" }, + /* 23*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^A1\\^C2", -1, 0, 57, 0, "(5) 103 17 18 53 106", "StartA 1 2 (manual C ignored as odd); BWIPP no manual mode" }, + /* 24*/ { UNICODE_MODE, "123", -1, 0, 68, 1, "(6) 104 17 18 19 8 106", "StartB 1 2 3" }, + /* 25*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^A123", -1, 0, 68, 0, "(6) 103 17 18 19 7 106", "StartA 1 2 3; BWIPP no manual mode" }, + /* 26*/ { UNICODE_MODE, "1234", -1, 0, 57, 1, "(5) 105 12 34 82 106", "StartC 12 34" }, + /* 27*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^B1234", -1, 0, 79, 0, "(7) 104 17 18 19 20 88 106", "StartB 1 2 3 4; BWIPP no manual mode" }, + /* 28*/ { UNICODE_MODE, "12345", -1, 0, 79, 1, "(7) 105 12 34 100 21 54 106", "StartC 12 34 CodeB 5" }, + /* 29*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "1234\\^A5", -1, 0, 79, 0, "(7) 105 12 34 101 21 57 106", "StartC 12 34 CodeA 5; BWIPP no manual mode" }, + /* 30*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^B1\\^C2345", -1, 0, 79, 0, "(7) 104 17 99 23 45 53 106", "StartB 1 CodeC 23 45; BWIPP no manual mode" }, + /* 31*/ { UNICODE_MODE, "\037", -1, 0, 46, 1, "(4) 103 95 95 106", "StartA US" }, + /* 32*/ { UNICODE_MODE, "1\037", -1, 0, 57, 1, "(5) 103 17 95 1 106", "StartA 1 US" }, + /* 33*/ { UNICODE_MODE, "12\037", -1, 0, 68, 1, "(6) 103 17 18 95 29 106", "StartA 1 2 US" }, + /* 34*/ { UNICODE_MODE, "a\037a", -1, 0, 79, 1, "(7) 104 65 98 95 65 86 106", "StartB a Shift US a" }, + /* 35*/ { UNICODE_MODE, "1234\037a", -1, 0, 101, 0, "(9) 105 12 34 101 95 98 65 100 106", "StartC 12 34 CodeA US Shift a; BWIPP different encodation" }, + /* 36*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "1234\037\\^Ba", -1, 0, 101, 1, "(9) 105 12 34 101 95 100 65 7 106", "StartC 12 34 CodeA US CodeB a" }, + /* 37*/ { UNICODE_MODE, "\037AAa\037", -1, 0, 101, 1, "(9) 103 95 33 33 98 65 95 2 106", "StartA US A A Shift a US" }, + /* 38*/ { UNICODE_MODE, "\037AAaa\037", -1, 0, 123, 0, "(11) 103 95 33 33 100 65 65 98 95 40 106", "StartA US A A CodeB a a Shift US; BWIPP different encodation" }, + /* 39*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\037AAaa\\^A\037", -1, 0, 123, 1, "(11) 103 95 33 33 100 65 65 101 95 61 106", "StartA US A A CodeB a a CodeA US" }, + /* 40*/ { UNICODE_MODE, "AAAa12345aAA", -1, 0, 167, 1, "(15) 104 33 33 33 65 17 99 23 45 100 65 33 33 54 106", "StartB A (3) a 1 CodeC 23 45 CodeB a A A" }, + /* 41*/ { UNICODE_MODE, "a\037Aa\037\037a\037aa\037a", -1, 0, 222, 1, "(20) 104 65 98 95 33 65 101 95 95 98 65 95 100 65 65 98 95 65 96 106", "StartB a Shift US A a CodeA US US Shift a US CodeB a a Shift US a" }, + /* 42*/ { UNICODE_MODE, "\000\037ß", 4, 0, 79, 1, "(7) 103 64 95 101 63 88 106", "StartA NUL US FNC4 ß" }, + /* 43*/ { UNICODE_MODE, "\000\037é", 4, 0, 90, 0, "(8) 103 64 95 101 98 73 78 106", "StartA NUL US FNC4 Shift é; BWIPP different encodation (CodeB instead of Shift)" }, + /* 44*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\000\037\\^Bé", 7, 0, 90, 0, "(8) 103 64 95 100 100 73 83 106", "StartA NUL US CodeB FNC4 é; BWIPP different encodation (FNC4 before CodeB)" }, + /* 45*/ { UNICODE_MODE, "\000\037éa", 5, 0, 101, 0, "(9) 103 64 95 100 100 73 65 61 106", "StartA NUL US CodeB FNC4 é a; BWIPP different encodation (FNC4 before CodeB)" }, + /* 46*/ { UNICODE_MODE, "abß", -1, 0, 79, 1, "(7) 104 65 66 100 63 29 106", "StartB a b FNC4 ß" }, + /* 47*/ { DATA_MODE, "\141\142\237", -1, 0, 90, 0, "(8) 104 65 66 100 98 95 26 106", "StartB a b FNC4 Shift APC; BWIPP different encodation" }, + /* 48*/ { DATA_MODE, "\141\142\237\037", -1, 0, 101, 0, "(9) 104 65 66 101 101 95 95 96 106", "StartB a b CodeA FNC4 APC US; BWIPP different encodation" }, + /* 49*/ { UNICODE_MODE, "ééé", -1, 0, 90, 1, "(8) 104 100 100 73 73 73 44 106", "StartB LatchFNC4 é é é" }, + /* 50*/ { UNICODE_MODE, "aééééb", -1, 0, 145, 1, "(13) 104 65 100 73 100 73 100 73 100 73 66 49 106", "StartB a FNC4 é (4) b" }, + /* 51*/ { UNICODE_MODE, "aéééééb", -1, 0, 145, 1, "(13) 104 65 100 100 73 73 73 73 73 100 66 93 106", "StartB a Latch é (5) Shift b" }, + /* 52*/ { UNICODE_MODE, "aééééébc", -1, 0, 167, 1, "(15) 104 65 100 100 73 73 73 73 73 100 66 100 67 40 106", "StartB a Latch é (5) Shift b Shift c" }, + /* 53*/ { UNICODE_MODE, "aééééébcd", -1, 0, 178, 1, "(16) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 66 106", "StartB a Latch é (5) Unlatch b c d" }, + /* 54*/ { UNICODE_MODE, "aééééébcde", -1, 0, 189, 1, "(17) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 2 106", "StartB a Latch é (5) Unlatch b c d e" }, + /* 55*/ { UNICODE_MODE, "aééééébcdeé", -1, 0, 211, 0, "(19) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 95 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é; BWIPP different encodation" }, + /* 56*/ { UNICODE_MODE, "aééééébcdeéé", -1, 0, 233, 0, "(21) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 100 73 100 73 19 106", "StartB a Latch é (5) Unlatch b c d e FNC4 é (2); BWIPP different encodation" }, + /* 57*/ { UNICODE_MODE, "aééééébcdeééé", -1, 0, 244, 1, "(22) 104 65 100 100 73 73 73 73 73 100 66 100 67 100 68 100 69 73 73 73 83 106", "StartB a Latch é (5) Shift b Shift c Shift d Shift e é (3)" }, + /* 58*/ { UNICODE_MODE, "aééééébcdefééé", -1, 0, 255, 1, "(23) 104 65 100 100 73 73 73 73 73 100 100 66 67 68 69 70 100 100 73 73 73 67 106", "StartB a Latch é (5) Unlatch b c d e f Latch é (3)" }, + /* 59*/ { DATA_MODE, "\200\200\200\200\200\101\060\060\060\060\101\200", -1, 0, 222, 1, "(20) 103 101 101 64 64 64 64 64 101 101 33 99 0 0 101 33 101 64 73 106", "StartA Latch PAD (4) Unlatch A CodeC 00 00 CodeA A FNC4 PAD" }, + /* 60*/ { UNICODE_MODE, "ÁÁÁÁÁÁ99999999999999", -1, 0, 211, 0, "(19) 104 100 100 33 33 33 33 33 33 99 99 99 99 99 99 99 99 63 106", "Okapi code128/extended-mode-exit-before-code-set-c.png (chose different solution); BWIPP different encodation" }, + /* 61*/ { UNICODE_MODE, "ÁÁÁÁÁÁ99999999999999Á", -1, 0, 233, 0, "(21) 104 100 100 33 33 33 33 33 33 99 99 99 99 99 99 99 99 100 33 91 106", "Above with trailing non-shifted (as still latched) extended; BWIPP different encodation" }, + /* 62*/ { DATA_MODE | EXTRA_ESCAPE_MODE, "@g(\302\302\302\302\3025555\302\302\302\302\302\302\302\302", -1, 0, 277, 0, "(25) 104 32 71 8 100 100 34 34 34 34 34 99 55 55 100 34 34 34 34 34 34 34 34 25 106", "Okapi code128/extended-mode-with-short-embedded-code-set-c.png (chose different solution); BWIPP different encodation" }, + /* 63*/ { DATA_MODE | EXTRA_ESCAPE_MODE, "@g(\302\302\302\302\302555555\302\302\302\302\302\302\302", -1, 0, 277, 0, "(25) 104 32 71 8 100 100 34 34 34 34 34 99 55 55 55 100 34 34 34 34 34 34 34 76 106", "Above with extra 55 instead of \xC2; BWIPP different encodation" }, + /* 64*/ { UNICODE_MODE, "ÁÁèÁÁFç7Z", -1, 0, 189, 0, "(17) 104 100 100 33 33 72 33 33 100 38 71 100 100 23 58 95 106", "Okapi code128/extended-mode-shift.png; BWIPP different encodation" }, + /* 65*/ { UNICODE_MODE, "m\nm\nm", -1, 0, 112, 1, "(10) 104 77 98 74 77 98 74 77 11 106", "Okapi code128/code-set-b-a-b-a-b.png" }, + /* 66*/ { UNICODE_MODE, "c\naDEF", -1, 0, 112, 1, "(10) 104 67 98 74 65 36 37 38 75 106", "Okapi bug-36-1.png" }, + /* 67*/ { UNICODE_MODE, "\na\nDEF", -1, 0, 112, 1, "(10) 103 74 98 65 74 36 37 38 90 106", "Okapi bug-36-2.png" }, + /* 68*/ { UNICODE_MODE, "ÿ\012àa\0121\012àAà", -1, 0, 222, 0, "(20) 104 100 95 98 74 100 64 65 98 74 17 98 74 100 64 33 100 64 61 106", "BWIPP different encodation, ShA instead of CodeA" }, + /* 69*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "ÿ\012àa\\^A\0121\012\\^BàAà", -1, 0, 222, 0, "(20) 104 100 95 98 74 100 64 65 101 74 17 74 100 100 64 33 100 64 30 106", "BWIPP different encodation, FNC4 before CodeB" }, + /* 70*/ { UNICODE_MODE, "ÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 387, 0, "(35) 104 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100 64", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 71*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "ÿ1234\012à\\^Aa\0121\012\\^C7890\\^BàAàDà\012à", -1, 0, 376, 0, "(34) 104 100 95 99 12 34 101 74 101 98 64 98 65 74 17 74 99 78 90 100 100 64 33 100 64 36", "BWIPP different encodation, FNC4 before CodeB, same width" }, + /* 72*/ { UNICODE_MODE, "yÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 398, 0, "(36) 104 89 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 73*/ { UNICODE_MODE, "ÿy1234\012àa\0121\0127890àAàDà\012à", -1, 0, 398, 0, "(36) 104 100 95 89 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33 100", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 74*/ { UNICODE_MODE, "ÿÿ1234\012àa\0121\0127890àAàDà\012à", -1, 0, 409, 0, "(37) 104 100 95 100 95 99 12 34 101 74 100 100 64 65 98 74 17 98 74 99 78 90 100 100 64 33", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 75*/ { UNICODE_MODE, "ÿ12345678\012à12345678abcdef\0121\01223456\012\0127890àAàBCDEFà\012\012à", -1, 0, 684, 0, "(62) 104 100 95 99 12 34 56 78 101 74 101 98 64 99 12 34 56 78 100 65 66 67 68 69 70 98 74", "BWIPP different encodation, CodeA instead of ShA, shorter" }, + /* 76*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^B\\^A12\\^C34\\^A\\^B5\\^C67\\^A\\^B\\^CA\\^B\\^A", -1, 0, 145, 0, "(13) 103 17 18 99 34 100 21 99 67 100 33 69 106", "BWIPP no manual mode" }, + /* 77*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "\\^C1234ABC12\012", -1, 0, 145, 0, "(13) 105 12 34 100 33 34 35 99 12 101 74 36 106", "StartC 12 34 CodeB A B C CodeC 12 CodeA LF; BWIPP no manual mode" }, + /* 78*/ { UNICODE_MODE | EXTRA_ESCAPE_MODE, "A\\^", -1, 0, 68, 1, "(6) 104 33 60 62 31 106", "StartC 12 34 CodeB A B C CodeC 12 CodeA LF; BWIPP no manual mode" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -428,14 +458,14 @@ static void test_input(const testCtx *const p_ctx) { length = testUtilSetSymbol(symbol, BARCODE_CODE128, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, -1, -1, -1 /*output_options*/, data[i].data, data[i].length, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); - assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); if (p_ctx->generate) { printf(" /*%3d*/ { %s, \"%s\", %d, %s, %d, %d, \"%s\", \"%s\" },\n", i, testUtilInputModeName(data[i].input_mode), testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length, - testUtilErrorName(data[i].ret), symbol->width, data[i].bwipp_cmp, symbol->errtxt, data[i].comment); + testUtilErrorName(ret), symbol->width, data[i].bwipp_cmp, symbol->errtxt, data[i].comment); } else { - assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); + assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0 (width %d)\n", i, symbol->errtxt, data[i].expected, symbol->width); if (ret < ZINT_ERROR) { assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); @@ -667,43 +697,46 @@ static void test_dpd_input(const testCtx *const p_ctx) { struct item { int option_2; + int output_options; char *data; int ret; int expected_width; + float expected_height; char *expected; char *comment; }; struct item data[] = { - /* 0*/ { -1, "12345678901234567890123456", ZINT_ERROR_TOO_LONG, -1, "Error 349: DPD input wrong length (27 or 28 characters required)", "" }, - /* 1*/ { 1, "12345678901234567890123456", ZINT_ERROR_TOO_LONG, -1, "Error 830: DPD relabel input wrong length (27 characters required)", "" }, - /* 2*/ { -1, "123456789012345678901234567", 0, 211, "(19) 104 5 17 99 23 45 67 89 1 23 45 67 89 1 23 45 67 51 106", "27 chars ok now, ident tag prefixed" }, - /* 3*/ { -1, "%123456789012345678901234567", 0, 211, "(19) 104 5 17 99 23 45 67 89 1 23 45 67 89 1 23 45 67 51 106", "" }, - /* 4*/ { 1, "123456789012345678901234567", 0, 200, "(18) 105 12 34 56 78 90 12 34 56 78 90 12 34 56 100 23 102 106", "27 chars also ok (and necessary) for relabel" }, - /* 5*/ { -1, "12345678901234567890123456789", ZINT_ERROR_TOO_LONG, -1, "Error 349: DPD input wrong length (27 or 28 characters required)", "" }, - /* 6*/ { 1, "1234567890123456789012345678", ZINT_ERROR_TOO_LONG, -1, "Error 830: DPD relabel input wrong length (27 characters required)", "" }, - /* 7*/ { -1, "123456789012345678901234567,", ZINT_ERROR_INVALID_DATA, -1, "Error 299: Invalid character in data (alphanumerics only after first character)", "Alphanumerics only in body" }, - /* 8*/ { -1, "12345678901234567890123456,", ZINT_ERROR_INVALID_DATA, -1, "Error 300: Invalid character in data (alphanumerics only)", "Alphanumerics only in body" }, - /* 9*/ { -1, ",234567890123456789012345678", 0, 211, "(19) 104 12 18 99 34 56 78 90 12 34 56 78 90 12 34 56 78 64 106", "Non-alphanumeric DPD ident tag (Barcode ID) allowed" }, - /* 10*/ { -1, "\037234567890123456789012345678", ZINT_ERROR_INVALID_DATA, -1, "Error 343: Invalid DPD identification tag (first character), ASCII values 32 to 127 only", "Control char as DPD ident tag" }, - /* 11*/ { -1, "é234567890123456789012345678", ZINT_ERROR_INVALID_DATA, -1, "Error 343: Invalid DPD identification tag (first character), ASCII values 32 to 127 only", "Extended ASCII as DPD ident tag" }, - /* 12*/ { -1, "12345678901234567890123456A", ZINT_WARN_NONCOMPLIANT, 222, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, - /* 13*/ { -1, "%12345678901234567890123456A", ZINT_WARN_NONCOMPLIANT, 222, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, - /* 14*/ { 1, "12345678901234567890123456A", ZINT_WARN_NONCOMPLIANT, 200, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, - /* 15*/ { -1, "123456789012345678901234A67", ZINT_WARN_NONCOMPLIANT, 233, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, - /* 16*/ { -1, "%123456789012345678901234A67", ZINT_WARN_NONCOMPLIANT, 233, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, - /* 17*/ { 1, "123456789012345678901234A67", ZINT_WARN_NONCOMPLIANT, 211, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, - /* 18*/ { -1, "12345678901234567890123A567", ZINT_WARN_NONCOMPLIANT, 244, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, - /* 19*/ { -1, "%12345678901234567890123A567", ZINT_WARN_NONCOMPLIANT, 244, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, - /* 20*/ { 1, "12345678901234567890123A567", ZINT_WARN_NONCOMPLIANT, 222, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, - /* 21*/ { -1, "123456789012345678901A34567", ZINT_WARN_NONCOMPLIANT, 244, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, - /* 22*/ { -1, "%123456789012345678901A34567", ZINT_WARN_NONCOMPLIANT, 244, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, - /* 23*/ { 1, "123456789012345678901A34567", ZINT_WARN_NONCOMPLIANT, 222, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, - /* 24*/ { -1, "12345678901234567890A234567", ZINT_WARN_NONCOMPLIANT, 233, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, - /* 25*/ { -1, "%12345678901234567890A234567", ZINT_WARN_NONCOMPLIANT, 233, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, - /* 26*/ { 1, "12345678901234567890A234567", ZINT_WARN_NONCOMPLIANT, 211, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, - /* 27*/ { -1, "12345678901A345678901234567", ZINT_WARN_NONCOMPLIANT, 244, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, - /* 28*/ { -1, "%12345678901A345678901234567", ZINT_WARN_NONCOMPLIANT, 244, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, - /* 29*/ { 1, "12345678901A345678901234567", ZINT_WARN_NONCOMPLIANT, 222, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, + /* 0*/ { -1, -1, "12345678901234567890123456", ZINT_ERROR_TOO_LONG, -1, 0, "Error 349: DPD input wrong length (27 or 28 characters required)", "" }, + /* 1*/ { 1, -1, "12345678901234567890123456", ZINT_ERROR_TOO_LONG, -1, 0, "Error 830: DPD relabel input wrong length (27 characters required)", "" }, + /* 2*/ { -1, -1, "123456789012345678901234567", 0, 211, 50, "(19) 104 5 17 99 23 45 67 89 1 23 45 67 89 1 23 45 67 51 106", "27 chars ok now, ident tag prefixed" }, + /* 3*/ { -1, -1, "%123456789012345678901234567", 0, 211, 50, "(19) 104 5 17 99 23 45 67 89 1 23 45 67 89 1 23 45 67 51 106", "" }, + /* 4*/ { 1, -1, "123456789012345678901234567", 0, 200, 25, "(18) 105 12 34 56 78 90 12 34 56 78 90 12 34 56 100 23 102 106", "27 chars also ok (and necessary) for relabel" }, + /* 5*/ { -1, -1, "12345678901234567890123456789", ZINT_ERROR_TOO_LONG, -1, 0, "Error 349: DPD input wrong length (27 or 28 characters required)", "" }, + /* 6*/ { 1, -1, "1234567890123456789012345678", ZINT_ERROR_TOO_LONG, -1, 0, "Error 830: DPD relabel input wrong length (27 characters required)", "" }, + /* 7*/ { -1, -1, "123456789012345678901234567,", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 299: Invalid character in data (alphanumerics only after first character)", "Alphanumerics only in body" }, + /* 8*/ { -1, -1, "12345678901234567890123456,", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 300: Invalid character in data (alphanumerics only)", "Alphanumerics only in body" }, + /* 9*/ { -1, -1, ",234567890123456789012345678", 0, 211, 50, "(19) 104 12 18 99 34 56 78 90 12 34 56 78 90 12 34 56 78 64 106", "Non-alphanumeric DPD ident tag (Barcode ID) allowed" }, + /* 10*/ { -1, -1, "\037234567890123456789012345678", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 343: Invalid DPD identification tag (first character), ASCII values 32 to 127 only", "Control char as DPD ident tag" }, + /* 11*/ { -1, -1, "é234567890123456789012345678", ZINT_ERROR_INVALID_DATA, -1, 0, "Error 343: Invalid DPD identification tag (first character), ASCII values 32 to 127 only", "Extended ASCII as DPD ident tag" }, + /* 12*/ { -1, -1, "12345678901234567890123456A", ZINT_WARN_NONCOMPLIANT, 222, 50, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, + /* 13*/ { -1, -1, "%12345678901234567890123456A", ZINT_WARN_NONCOMPLIANT, 222, 50, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, + /* 14*/ { 1, -1, "12345678901234567890123456A", ZINT_WARN_NONCOMPLIANT, 200, 25, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, + /* 15*/ { -1, -1, "123456789012345678901234A67", ZINT_WARN_NONCOMPLIANT, 233, 50, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, + /* 16*/ { -1, -1, "%123456789012345678901234A67", ZINT_WARN_NONCOMPLIANT, 233, 50, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, + /* 17*/ { 1, -1, "123456789012345678901234A67", ZINT_WARN_NONCOMPLIANT, 211, 25, "Warning 831: Destination Country Code (last 3 characters) should be numeric", "" }, + /* 18*/ { -1, -1, "12345678901234567890123A567", ZINT_WARN_NONCOMPLIANT, 244, 50, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, + /* 19*/ { -1, -1, "%12345678901234567890123A567", ZINT_WARN_NONCOMPLIANT, 244, 50, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, + /* 20*/ { 1, -1, "12345678901234567890123A567", ZINT_WARN_NONCOMPLIANT, 222, 25, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, + /* 21*/ { -1, -1, "123456789012345678901A34567", ZINT_WARN_NONCOMPLIANT, 244, 50, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, + /* 22*/ { -1, -1, "%123456789012345678901A34567", ZINT_WARN_NONCOMPLIANT, 244, 50, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, + /* 23*/ { 1, -1, "123456789012345678901A34567", ZINT_WARN_NONCOMPLIANT, 222, 25, "Warning 832: Service Code (characters 6-4 from end) should be numeric", "" }, + /* 24*/ { -1, -1, "12345678901234567890A234567", ZINT_WARN_NONCOMPLIANT, 233, 50, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, + /* 25*/ { -1, -1, "%12345678901234567890A234567", ZINT_WARN_NONCOMPLIANT, 233, 50, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, + /* 26*/ { 1, -1, "12345678901234567890A234567", ZINT_WARN_NONCOMPLIANT, 211, 25, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, + /* 27*/ { -1, -1, "12345678901A345678901234567", ZINT_WARN_NONCOMPLIANT, 244, 50, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, + /* 28*/ { -1, -1, "%12345678901A345678901234567", ZINT_WARN_NONCOMPLIANT, 244, 50, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, + /* 29*/ { 1, -1, "12345678901A345678901234567", ZINT_WARN_NONCOMPLIANT, 222, 25, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, + /* 30*/ { 1, COMPLIANT_HEIGHT, "12345678901A345678901234567", ZINT_WARN_NONCOMPLIANT, 222, 33.333332, "Warning 833: Last 10 characters of Tracking Number (characters 16-7 from end) should be numeric", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -722,18 +755,20 @@ static void test_dpd_input(const testCtx *const p_ctx) { symbol->debug = ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ - length = testUtilSetSymbol(symbol, BARCODE_DPD, UNICODE_MODE, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, -1 /*output_options*/, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, BARCODE_DPD, UNICODE_MODE, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); if (p_ctx->generate) { - printf(" /*%3d*/ { %d, \"%s\", %s, %d, \"%s\", \"%s\" },\n", - i, data[i].option_2, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), - testUtilErrorName(data[i].ret), symbol->width, symbol->errtxt, data[i].comment); + printf(" /*%3d*/ { %d, %s, \"%s\", %s, %d, %.8g, \"%s\", \"%s\" },\n", + i, data[i].option_2, testUtilOutputOptionsName(data[i].output_options), + testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), + testUtilErrorName(data[i].ret), symbol->width, symbol->height, symbol->errtxt, data[i].comment); } else { if (ret < ZINT_ERROR) { assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); + assert_equal(symbol->height, data[i].expected_height, "i:%d symbol->height %.8g != %.8g (%s)\n", i, symbol->height, data[i].expected_height, data[i].data); } assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); } @@ -773,6 +808,8 @@ static void test_upu_s10_input(const testCtx *const p_ctx) { /* 15*/ { "JB123456785AB", ZINT_WARN_NONCOMPLIANT, 156, "Warning 839: Invalid Service Indicator (first character should not be any of \"JKSTW\")", "" }, /* 16*/ { "FB123456785AB", ZINT_WARN_NONCOMPLIANT, 156, "Warning 840: Non-standard Service Indicator (first 2 characters)", "" }, /* 17*/ { "AB123456785AB", ZINT_WARN_NONCOMPLIANT, 156, "Warning 841: Country code (last two characters) is not ISO 3166-1", "" }, + /* 18*/ { "AB123100000IE", 0, 156, "", "Check digit 10 -> 0" }, + /* 19*/ { "AB000000005IE", 0, 156, "", "Check digit 11 -> 5" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_common.c b/backend/tests/test_common.c index f7b47277..e5c2e43d 100644 --- a/backend/tests/test_common.c +++ b/backend/tests/test_common.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 @@ -381,6 +381,8 @@ static void test_set_height(const testCtx *const p_ctx) { testFinish(); } +INTERNAL void debug_test_codeword_dump_int(struct zint_symbol *symbol, const int *codewords, const int length); + static void test_debug_test_codeword_dump_int(const testCtx *const p_ctx) { int debug = p_ctx->debug; diff --git a/backend/tests/test_gb18030.c b/backend/tests/test_gb18030.c index 8ddb642b..ab96cf93 100644 --- a/backend/tests/test_gb18030.c +++ b/backend/tests/test_gb18030.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 @@ -554,7 +554,10 @@ static void test_perf(const testCtx *const p_ctx) { int i, length, ret; struct zint_symbol symbol = {0}; - int ret_length, ret_length2; + int ret_length; +#ifdef TEST_JUST_SAY_GNO + int ret_length2; +#endif unsigned int ddata[8192]; unsigned char dest[8192]; int ret2 = 0; @@ -585,13 +588,14 @@ static void test_perf(const testCtx *const p_ctx) { diff = diff_gno = diff_eci = 0; for (j = 0; j < TEST_PERF_ITERATIONS; j++) { - ret_length = ret_length2 = length; + ret_length = length; start = clock(); ret = gb18030_utf8(&symbol, (unsigned char *) data[i].data, &ret_length, ddata); diff += clock() - start; #ifdef TEST_JUST_SAY_GNO + ret_length2 = length; start = clock(); ret2 = gb18030_utf8_wctomb(&symbol, (unsigned char *) data[i].data, &ret_length2, ddata2); diff_gno += clock() - start; diff --git a/backend/tests/test_gb2312.c b/backend/tests/test_gb2312.c index 6bd41200..e79b1a6a 100644 --- a/backend/tests/test_gb2312.c +++ b/backend/tests/test_gb2312.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 @@ -392,7 +392,10 @@ static void test_perf(const testCtx *const p_ctx) { int i, length, ret; struct zint_symbol symbol = {0}; - int ret_length, ret_length2; + int ret_length; +#ifdef TEST_JUST_SAY_GNO + int ret_length2; +#endif unsigned int ddata[8192]; unsigned char dest[8192]; int ret2 = 0; @@ -424,25 +427,27 @@ static void test_perf(const testCtx *const p_ctx) { diff = diff_gno = diff_eci = diff_eci_gno = 0; for (j = 0; j < TEST_PERF_ITERATIONS; j++) { - ret_length = ret_length2 = length; + ret_length = length; start = clock(); ret = gb2312_utf8(&symbol, (unsigned char *) data[i].data, &ret_length, ddata); diff += clock() - start; #ifdef TEST_JUST_SAY_GNO + ret_length2 = length; start = clock(); ret2 = gb2312_utf8_wctomb(&symbol, (unsigned char *) data[i].data, &ret_length2, ddata2); diff_gno += clock() - start; #endif - ret_length = ret_length2 = length; + ret_length = length; start = clock(); (void)utf8_to_eci(29, (unsigned char *) data[i].data, dest, &ret_length); diff_eci += clock() - start; #ifdef TEST_JUST_SAY_GNO + ret_length2 = length; start = clock(); (void)utf8_to_eci_wctomb(29, (unsigned char *) data[i].data, dest2, &ret_length2); diff_eci_gno += clock() - start; diff --git a/backend/tests/test_library.c b/backend/tests/test_library.c index 58a4bb71..f99e1edd 100644 --- a/backend/tests/test_library.c +++ b/backend/tests/test_library.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 @@ -547,7 +547,11 @@ static void test_escape_char_process(const testCtx *const p_ctx) { /* 73*/ { BARCODE_DATAMATRIX, UNICODE_MODE, 34, "\\U10FFFF", "", 0, 16, "F1 23 01 01 01 01 01 01 EB 80 EB 80 F6 F1 5D 2A D1 0A BF BC B8 22 65 0C", 0, "" }, /* 74*/ { BARCODE_DATAMATRIX, UNICODE_MODE, 35, "\\U10FFFF", "", 0, 16, "F1 24 01 01 01 01 EB 80 EB 80 01 01 7F 58 28 41 7F 63 0E EB A7 D8 D0 1F", 0, "" }, /* 75*/ { BARCODE_GS1_128_CC, GS1_MODE, -1, "[20]10", "[10]A", 0, 99, "(7) 105 102 20 10 100 59 106", 0, "" }, - /* 76*/ { BARCODE_GS1_128_CC, GS1_MODE | ESCAPE_MODE, -1, "[2\\x30]1\\d048", "[\\x310]\\x41", 0, 99, "(7) 105 102 20 10 100 59 106", 1, "" }, + /* 76*/ { BARCODE_GS1_128_CC, GS1_MODE, -1, "[2\\x30]1\\d048", "[\\x310]\\x41", 0, 99, "(7) 105 102 20 10 100 59 106", 1, "" }, + /* 77*/ { BARCODE_DATAMATRIX, DATA_MODE, -1, "\\^A1", "", ZINT_ERROR_INVALID_DATA, 0, "Error 798: Escape '\\^' only valid for Code 128 in extra escape mode", 0, "" }, + /* 78*/ { BARCODE_CODE128, DATA_MODE | EXTRA_ESCAPE_MODE, -1, "\\^A1", "", 0, 46, "(4) 103 17 17 106", 0, "" }, + /* 79*/ { BARCODE_CODE128, EXTRA_ESCAPE_MODE, -1, "\\^", "", 0, 57, "(5) 104 60 62 82 106", 0, "Partial special escape '\\^' at end allowed" }, + /* 80*/ { BARCODE_CODE128, EXTRA_ESCAPE_MODE, -1, "\\^D1", "", 0, 79, "(7) 104 60 62 36 17 52 106", 0, "Unknown special escapes passed straight thu" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_pdf417.c b/backend/tests/test_pdf417.c index 0996246c..83441c37 100644 --- a/backend/tests/test_pdf417.c +++ b/backend/tests/test_pdf417.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 @@ -424,7 +424,7 @@ static void test_input(const testCtx *const p_ctx) { int data_size = ARRAY_SIZE(data); int i, length, ret; struct zint_symbol *symbol; - int last_fast_num_cwds; + int last_fast_num_cwds = 0; /* Keep clang-tidy happy */ char escaped[1024]; char cmp_buf[32768]; @@ -3925,7 +3925,7 @@ static void test_encode(const testCtx *const p_ctx) { int data_size = ARRAY_SIZE(data); int i, length, ret; struct zint_symbol *symbol; - int last_fast_num_cwds; + int last_fast_num_cwds = 0; /* Keep clang-tidy happy */ char escaped[1024]; char cmp_buf[32768]; @@ -4663,7 +4663,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; - int last_fast_num_cwds; + int last_fast_num_cwds = 0; /* Keep clang-tidy happy */ char escaped[1024]; char cmp_buf[32768]; diff --git a/backend/tests/test_sjis.c b/backend/tests/test_sjis.c index 947bbe5b..c94830ad 100644 --- a/backend/tests/test_sjis.c +++ b/backend/tests/test_sjis.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 @@ -401,7 +401,10 @@ static void test_perf(const testCtx *const p_ctx) { int i, length, ret; struct zint_symbol symbol = {0}; - int ret_length, ret_length2; + int ret_length; +#ifdef TEST_JUST_SAY_GNO + int ret_length2; +#endif unsigned int ddata[8192]; int ret2 = 0; #ifdef TEST_JUST_SAY_GNO @@ -431,13 +434,14 @@ static void test_perf(const testCtx *const p_ctx) { diff = diff_gno = 0; for (j = 0; j < TEST_PERF_ITERATIONS; j++) { - ret_length = ret_length2 = length; + ret_length = length; start = clock(); ret = sjis_utf8(&symbol, (unsigned char *) data[i].data, &ret_length, ddata); diff += clock() - start; #ifdef TEST_JUST_SAY_GNO + ret_length2 = length; start = clock(); ret2 = sjis_utf8_wctomb(&symbol, (unsigned char *) data[i].data, &ret_length2, ddata2); diff_gno += clock() - start; diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index dc18b9ea..3288841a 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.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 @@ -453,6 +453,7 @@ const char *testUtilInputModeName(int input_mode) { { "GS1NOCHECK_MODE", GS1NOCHECK_MODE, 0x0020 }, { "HEIGHTPERROW_MODE", HEIGHTPERROW_MODE, 0x0040 }, { "FAST_MODE", FAST_MODE, 0x0080 }, + { "EXTRA_ESCAPE_MODE", EXTRA_ESCAPE_MODE, 0x0100 }, }; static const int data_size = ARRAY_SIZE(data); int set, i; @@ -2308,14 +2309,31 @@ static char *testUtilBwippEscape(char *bwipp_data, int bwipp_data_size, const ch /*case 'x': val = 0; TODO: implement break; */ case '\\': val = '\\'; break; /*case 'u': val = 0; TODO: implement break; */ + case '^': val = -1; break; /* Code 128 special escapes */ default: fprintf(stderr, "testUtilBwippEscape: unknown escape %c\n", *d); return NULL; break; } - if (b + 4 >= be) { - fprintf(stderr, "testUtilBwippEscape: loop bwipp_data buffer full (%d)\n", bwipp_data_size); - return NULL; + if (val >= 0) { + if (b + 4 >= be) { + fprintf(stderr, "testUtilBwippEscape: loop bwipp_data buffer full (%d)\n", bwipp_data_size); + return NULL; + } + sprintf(b, "^%03d", val); + b += 4; + } else { + if (d + 1 < de && *(d + 1) >= 'A' && *(d + 1) <= 'C') { + d++; + } else { + if (b + 8 >= be) { + fprintf(stderr, "testUtilBwippEscape: loop bwipp_data buffer full (%d)\n", bwipp_data_size); + return NULL; + } + sprintf(b, "^%03d^%03d", '\\', *d); + b += 8; + if (*d == '^') { + d++; + } + } } - sprintf(b, "^%03d", val); - b += 4; d++; *parse = 1; } else { @@ -2565,8 +2583,8 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int /* sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%sdontlint", strlen(bwipp_opts_buf) ? " " : ""); */ } } else { - if (testUtilBwippEscape(bwipp_data, bwipp_data_size, data, data_len, symbol->input_mode & ESCAPE_MODE, - eci, &parse, &parsefnc) == NULL) { + if (testUtilBwippEscape(bwipp_data, bwipp_data_size, data, data_len, + symbol->input_mode & (ESCAPE_MODE | EXTRA_ESCAPE_MODE), eci, &parse, &parsefnc) == NULL) { return -1; } if (parse) { @@ -2832,7 +2850,7 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int strlen(bwipp_opts_buf) ? " " : "", mode); bwipp_opts = bwipp_opts_buf; } - if (primary_len) { + if (primary_len >= 6) { /* Keep gcc happy */ char prefix_buf[30]; int prefix_len; int postcode_len = primary_len - 6; @@ -3669,7 +3687,8 @@ int testUtilZXingCPPCmp(struct zint_symbol *symbol, char *msg, char *cmp_buf, in const int is_dbar_exp = symbology == BARCODE_DBAR_EXP || symbology == BARCODE_DBAR_EXPSTK; const int gs1 = (symbol->input_mode & 0x07) == GS1_MODE || is_dbar_exp; - const int is_escaped = symbol->input_mode & ESCAPE_MODE; + const int is_extra_escaped = (symbol->input_mode & EXTRA_ESCAPE_MODE) && symbol->symbology == BARCODE_CODE128; + const int is_escaped = (symbol->input_mode & ESCAPE_MODE) || is_extra_escaped; const int is_hibc = symbology >= BARCODE_HIBC_128 && symbology <= BARCODE_HIBC_AZTEC; const int have_c25checkdigit = symbol->option_2 == 1 || symbol->option_2 == 2; const int have_c25inter = (symbology == BARCODE_C25INTER && ((expected_len & 1) || have_c25checkdigit)) @@ -3677,13 +3696,14 @@ int testUtilZXingCPPCmp(struct zint_symbol *symbol, char *msg, char *cmp_buf, in || symbology == BARCODE_DPIDENT; const int is_upcean = is_extendable(symbology); const int need_dpd_prefix = (symbology == BARCODE_DPD && expected_len == 27 && symbol->option_2 != 1); + const int is_vin_international = symbology == BARCODE_VIN && (symbol->option_2 & 1); char *reduced = gs1 ? (char *) z_alloca(expected_len + 1) : NULL; char *escaped = is_escaped ? (char *) z_alloca(expected_len + 1) : NULL; char *hibc = is_hibc ? (char *) z_alloca(expected_len + 2 + 1) : NULL; char *maxi = symbology == BARCODE_MAXICODE && primary ? (char *) z_alloca(expected_len + strlen(primary) + 6 + 9 + 1) : NULL; - char *vin = symbology == BARCODE_VIN && (symbol->option_2 & 1) ? (char *) z_alloca(expected_len + 1 + 1) : NULL; + char *vin = is_vin_international ? (char *) z_alloca(expected_len + 1 + 1) : NULL; char *c25inter = have_c25inter ? (char *) z_alloca(expected_len + 13 + 1 + 1) : NULL; char *upcean = is_upcean ? (char *) z_alloca(expected_len + 1 + 1) : NULL; char *ean14_nve18 = symbology == BARCODE_EAN14 || symbology == BARCODE_NVE18 @@ -3704,10 +3724,31 @@ int testUtilZXingCPPCmp(struct zint_symbol *symbol, char *msg, char *cmp_buf, in if (is_escaped) { memcpy(escaped, expected, expected_len); - ret = escape_char_process_test(symbol, (unsigned char *) escaped, &expected_len); - if (ret != 0) { - sprintf(msg, "escape_char_process %d != 0", ret); - return 3; + if (symbol->input_mode & ESCAPE_MODE) { + ret = escape_char_process_test(symbol, (unsigned char *) escaped, &expected_len); + if (ret != 0) { + sprintf(msg, "escape_char_process %d != 0", ret); + return 3; + } + } + if (is_extra_escaped) { + /* Remove any Code 128 special escapes */ + int j = 0; + for (i = 0; i < expected_len; i++) { + if (escaped[i] == '\\' && i + 2 < expected_len && escaped[i + 1] == '^' + && ((escaped[i + 2] >= 'A' && escaped[i + 2] <= 'C') || escaped[i + 2] == '^')) { + if (escaped[i + 2] != '^') { + i += 2; + } else { + escaped[j++] = escaped[i++]; + escaped[j++] = escaped[i++]; + } + } else { + escaped[j++] = escaped[i]; + } + } + expected_len = j; + escaped[expected_len] = '\0'; } expected = escaped; } @@ -3778,13 +3819,11 @@ int testUtilZXingCPPCmp(struct zint_symbol *symbol, char *msg, char *cmp_buf, in if (symbol->option_2 == 1 || symbol->option_2 == 2) { cmp_len--; /* Too messy to calc the check digit so ignore */ } - } else if (symbology == BARCODE_VIN) { - if (symbol->option_2 & 1) { - vin[0] = 'I'; - memcpy(vin + 1, expected, expected_len); - vin[++expected_len] = '\0'; - expected = vin; - } + } else if (is_vin_international) { + vin[0] = 'I'; + memcpy(vin + 1, expected, expected_len); + vin[++expected_len] = '\0'; + expected = vin; } else if (have_c25inter) { if (symbology == BARCODE_C25INTER) { if ((expected_len & 1) || have_c25checkdigit) { diff --git a/backend/zint.h b/backend/zint.h index 43b23670..7cf55fbe 100644 --- a/backend/zint.h +++ b/backend/zint.h @@ -1,7 +1,7 @@ /* zint.h - definitions for libzint */ /* 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 @@ -61,7 +61,7 @@ extern "C" { float x, y; /* Top with x relative to halign (i.e. centre, left, right) */ float fsize; /* Font size */ float width; /* Suggested string width, may be 0 if none recommended */ - int length; /* Number of characters */ + 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) */ unsigned char *text; /* UTF-8, NUL-terminated */ @@ -303,6 +303,8 @@ extern "C" { #define HEIGHTPERROW_MODE 0x0040 /* Interpret `height` as per-row rather than as overall height */ #define FAST_MODE 0x0080 /* Use faster if less optimal encodation or other shortcuts if available */ /* Note: affects DATAMATRIX, MICROPDF417, PDF417, QRCODE & UPNQR only */ +#define EXTRA_ESCAPE_MODE 0x0100 /* Process special symbology-specific escape sequences */ + /* Note: currently Code 128 only */ /* Data Matrix specific options (`symbol->option_3`) */ #define DM_SQUARE 100 /* Only consider square versions on automatic symbol size selection */ diff --git a/backend_qt/qzint.cpp b/backend_qt/qzint.cpp index 382dea3c..86303556 100644 --- a/backend_qt/qzint.cpp +++ b/backend_qt/qzint.cpp @@ -1,7 +1,7 @@ /*************************************************************************** * Copyright (C) 2008 by BogDan Vatra * * bogdan@licentia.eu * - * Copyright (C) 2010-2022 Robin Stuart * + * Copyright (C) 2010-2023 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 * @@ -1163,6 +1163,7 @@ namespace Zint { } arg_bool(cmd, "--esc", inputMode() & ESCAPE_MODE); + arg_bool(cmd, "--extraesc", inputMode() & EXTRA_ESCAPE_MODE); arg_bool(cmd, "--fast", inputMode() & FAST_MODE); if (fgColor() != Qt::black) { diff --git a/backend_qt/tests/test_qzint.cpp b/backend_qt/tests/test_qzint.cpp index ea69837d..a3184c33 100644 --- a/backend_qt/tests/test_qzint.cpp +++ b/backend_qt/tests/test_qzint.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2021-2022 by Robin Stuart * + * Copyright (C) 2021-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 * @@ -608,6 +608,19 @@ private slots: " --rotate=90 --verbose --vers=7" << "" << "" << "" << ""; + QTest::newRow("BARCODE_CODE128") << false << 0.0f << "" + << BARCODE_CODE128 << (UNICODE_MODE | EXTRA_ESCAPE_MODE) // symbology-inputMode + << "1234\\^A56" << "" // text-primary + << 0.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor + << false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting + << false << false << true << false << true << 0 // showText-rotateAngle + << 0 << 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" + << "" << "" << "" << ""; + QTest::newRow("BARCODE_GS1_128_CC") << false << 0.0f << "" << BARCODE_GS1_128_CC << UNICODE_MODE // symbology-inputMode << "[01]12345678901231[15]121212" << "[11]901222[99]ABCDE" // text-primary diff --git a/backend_tcl/zint.c b/backend_tcl/zint.c index 5b52a7ae..494d1fc3 100644 --- a/backend_tcl/zint.c +++ b/backend_tcl/zint.c @@ -1,7 +1,7 @@ /* zint_tcl.c TCL binding for zint */ /* zint - the open source tcl binding to the zint barcode library - Copyright (C) 2014-2022 Harald Oehlmann + Copyright (C) 2014-2023 Harald Oehlmann Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -164,6 +164,8 @@ *** Potential incompatibility *** 2022-12-09 GL - Added UPU_S10 +2023-01-15 GL +- Added -esc and -extraesc options */ #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) @@ -511,7 +513,8 @@ 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 --esc not supported */ + " -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" " -fg color: set foreground color as 6 or 8 hex rrggbbaa\n" /* replaces cli options --binary and --gs1 */ @@ -781,7 +784,7 @@ static int Encode(Tcl_Interp *interp, int objc, static const char *optionList[] = { "-addongap", "-barcode", "-bg", "-bind", "-bindtop", "-bold", "-border", "-box", "-cols", "-compliantheight", "-dmre", "-dotsize", "-dotty", - "-eci", "-fast", "-fg", "-format", "-fullmultibyte", + "-eci", "-esc", "-extraesc", "-fast", "-fg", "-format", "-fullmultibyte", "-gs1nocheck", "-gs1parens", "-gssep", "-guarddescent", "-height", "-heightperrow", "-init", "-mask", "-mode", "-nobackground", "-noquietzones", "-notext", "-primary", "-quietzones", @@ -793,7 +796,7 @@ static int Encode(Tcl_Interp *interp, int objc, enum iOption { iAddonGap, iBarcode, iBG, iBind, iBindTop, iBold, iBorder, iBox, iCols, iCompliantHeight, iDMRE, iDotSize, iDotty, - iECI, iFast, iFG, iFormat, iFullMultiByte, + iECI, iEsc, iExtraEsc, iFast, iFG, iFormat, iFullMultiByte, iGS1NoCheck, iGS1Parens, iGSSep, iGuardDescent, iHeight, iHeightPerRow, iInit, iMask, iMode, iNoBackground, iNoQuietZones, iNoText, iPrimary, iQuietZones, @@ -824,6 +827,8 @@ static int Encode(Tcl_Interp *interp, int objc, case iCompliantHeight: case iDMRE: case iDotty: + case iEsc: + case iExtraEsc: case iFast: case iGS1NoCheck: case iGS1Parens: @@ -997,6 +1002,20 @@ static int Encode(Tcl_Interp *interp, int objc, my_symbol->output_options &= ~BARCODE_DOTTY_MODE; } break; + case iEsc: + if (intValue) { + my_symbol->input_mode |= ESCAPE_MODE; + } else { + my_symbol->input_mode &= ~ESCAPE_MODE; + } + break; + case iExtraEsc: + if (intValue) { + my_symbol->input_mode |= EXTRA_ESCAPE_MODE; + } else { + my_symbol->input_mode &= ~EXTRA_ESCAPE_MODE; + } + break; case iFast: if (intValue) { my_symbol->input_mode |= FAST_MODE; diff --git a/docs/images/gui_set_printing_scale.png b/docs/images/gui_set_printing_scale.png index 6a3bbe19014b5edce731f08cb765502746418807..6bac06a6b794c394c2b2b894577ebf658fed74b8 100644 GIT binary patch literal 123905 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≦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 z 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 diff --git a/docs/manual.pmd b/docs/manual.pmd index 7d87103f..10347360 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 -% December 2022 +% January 2023 # 1. Introduction @@ -81,6 +81,8 @@ GS1 data 'chunks' of data, each of which starts with an Application Identifier (AI). The AI identifies what type of information is being encoded. +\clearpage + Reader Initialisation (Programming) : Some symbologies allow a special character to be included which can be @@ -516,6 +518,9 @@ Table: {#tbl:escape_sequences tag=": Escape Sequences"} codeset from U+0000 to U+D7FF and U+E000 to U+FFFF (i.e. excluding surrogates). Not to be confused with the Windows Bitmap file format BMP! +(Special escape sequences are available for Code 128 only to manually switch +Code Sets - see [6.1.10.1 Standard Code 128 (ISO 15417)] for details.) + Input data can be read directly from file using the `-i` or `--input` switch as shown below. The input file is assumed to be UTF-8 formatted unless an alternative mode is selected. This command replaces the use of the `-d` switch. @@ -1501,9 +1506,9 @@ you wish. ## 5.1 Creating and Deleting Symbols The symbols manipulated by Zint are held in a `zint_symbol` structure defined in -`"zint.h"`. These symbols are created with the `ZBarcode_Create()` function and -deleted using the `ZBarcode_Delete()` function. For example the following code -creates and then deletes a symbol: +`"zint.h"`. These symbol structures are created with the `ZBarcode_Create()` +function and deleted using the `ZBarcode_Delete()` function. For example the +following code creates and then deletes a symbol: ```c #include @@ -2110,6 +2115,10 @@ Value Effect `FAST_MODE` Use faster if less optimal encodation or other shortcuts if available (affects `DATAMATRIX`, `MICROPDF417`, `PDF417`, `QRCODE` and `UPNQR` only). + +`EXTRA_ESCAPE_MODE` Process special symbology-specific escape sequences + (`CODE128` only). + -------------------------------------------------------------------------------- Table: API `input_mode` Values {#tbl:api_input_mode tag="$ $"} @@ -2118,8 +2127,8 @@ The default mode is `DATA_MODE`. (Note that this differs from the default for the CLI and GUI, which is `UNICODE_MODE`.) `DATA_MODE`, `UNICODE_MODE` and `GS1_MODE` are mutually exclusive, whereas -`ESCAPE_MODE`, `GS1PARENS_MODE`, `GS1NOCHECK_MODE`, `HEIGHTPERROW_MODE` and -`FAST_MODE` are optional. So, for example, you can set +`ESCAPE_MODE`, `GS1PARENS_MODE`, `GS1NOCHECK_MODE`, `HEIGHTPERROW_MODE`, +`FAST_MODE` and `EXTRA_ESCAPE_MODE` are optional. So, for example, you can set ```c my_symbol->input_mode = UNICODE_MODE | ESCAPE_MODE; @@ -2139,8 +2148,10 @@ my_symbol->input_mode = DATA_MODE | GS1_MODE; is not valid. -Permissible escape sequences are listed in Table {@tbl:escape_sequences}. An -example of `GS1PARENS_MODE` usage is given in section [6.1.10.3 GS1-128]. +Permissible escape sequences (`ESCAPE_MODE`) are listed in Table +{@tbl:escape_sequences}, and the special Code 128-only `EXTRA_ESCAPE_MODE` +escape sequences are given in [6.1.10.1 Standard Code 128 (ISO 15417)]. +An example of `GS1PARENS_MODE` usage is given in section [6.1.10.3 GS1-128]. `GS1NOCHECK_MODE` is for use with legacy systems that have data that does not conform to the current GS1 standard. Printable ASCII input is still checked for, @@ -2151,6 +2162,10 @@ For `HEIGHTPERROW_MODE`, see `--heightperrow` in section [4.4 Adjusting Height]. The `height` variable should be set to the desired per-row value on input (it will be set to the overall height on output). +`FAST_MODE` causes a less optimal encodation scheme to be used for Data Matrix, +MicroPDF417 and PDF417. For QR Code and UPNQR, it affects Zint's automatic mask +selection - see [6.6.3 QR Code (ISO 18004)] for details. + ## 5.11 Multiple Segments For input data requiring multiple ECIs, the following functions may be used: @@ -2243,7 +2258,7 @@ my_symbol->dpmm = 600.0f / 25.4f; /* 600 dpi */ my_symbol->scale = ZBarcode_Scale_From_XdimDp( my_symbol->symbology, ZBarcode_Default_Xdim(my_symbol->symbology), - my_symbol->dpmm, "PNG"); /* 7.5 */ + my_symbol->dpmm, "PNG"); /* Returns 7.5 */ ``` The third function `ZBarcode_XdimDP_From_Scale()` is the "reverse" of @@ -2488,7 +2503,6 @@ Identcode is based on Interleaved Code 2 of 5 and is used by Deutsche Post for identification purposes. Identcode requires an 11-digit numerical input to which Zint adds a check digit. - \clearpage ### 6.1.3 UPC (Universal Product Code) (ISO 15420) @@ -2784,8 +2798,28 @@ pharmaceuticals. The symbology is able to encode whole numbers between 3 and One of the most ubiquitous one-dimensional barcode symbologies, Code 128 was developed in 1981 by Computer Identics. This symbology supports full ASCII text and uses a three-Code Set system to compress the data into a smaller symbol. -Zint automatically switches between Code Sets A, B and C and adds a modulo-103 -check digit. +Zint automatically switches between Code Sets A, B and C (but see the special +escapes below) and adds a modulo-103 check digit. + +Manual switching of Code Sets is possible using the `--extraesc` option (API +`input_mode |= EXTRA_ESCAPE_MODE`) and the Code 128-specific escapes `\^A`, +`\^B`, `\^C`. For instance the following will force switching to Code Set B for +the data `"5678"` (normally Code Set C would be used throughout): + +```bash +zint -b CODE128 -d "1234\^B5678" --extraesc +``` + +The manually selected Code Set will apply until the next Code Set escape +sequence, with the exception that data that cannot be represented in that Code +Set will be switched as appropriate. If the data contains a special code +sequence, it can be escaped by doubling the caret (`^`). For instance + +```bash +zint -b CODE128 -d "\^AABC\^^BDEF" --extraesc +``` + +will encode the data `"ABC\^BDEF"` in Code Set A. Code 128 is the default barcode symbology used by Zint. In addition Zint supports the encoding of ISO/IEC 8859-1 (non-English) characters in Code 128 @@ -2800,6 +2834,9 @@ It is sometimes advantageous to stop Code 128 from using Code Set C which compresses numerical data. The `BARCODE_CODE128AB`[^10] variant (symbology 60) suppresses Code Set C in favour of Code Sets A and B. +Note that the special escapes to manually switch Code Sets mentioned above are +not available for this variant (nor for any other). + [^10]: `BARCODE_CODE128AB` previously used the name `BARCODE_CODE128B`, which is still recognised. @@ -2895,6 +2932,8 @@ A DPD Code can be marked as a "relabel" by specifying `--vers=1` (API `option_2 = 1`), which omits the identification tag and prints the barcode at half height. In this case, an input of 27 alphanumeric characters is required. +\clearpage + #### 6.1.10.8 UPU S10 ![`zint -b UPU_S10 --compliantheight -d "EE876543216CA"`](images/upu_s10.svg) @@ -3006,7 +3045,6 @@ input must be alphanumeric, excluding the letter `O`, and must be from 7 to 18 characters in length. A single check character is added by Zint, appearing in the 2nd character position. Lowercase input is automatically made uppercase. - \clearpage ## 6.2 Stacked Symbologies @@ -4267,7 +4305,7 @@ maximum of 90 digits and does not include a check digit. ## 7.1 License -Zint, libzint and Zint Barcode Studio are Copyright © 2022 Robin Stuart. All +Zint, libzint and Zint Barcode Studio are Copyright © 2023 Robin Stuart. All historical versions are distributed under the GNU General Public License version 3 or later. Versions 2.5 and later are released under a dual license: the encoding library is released under the BSD (3 clause) license whereas the diff --git a/docs/manual.txt b/docs/manual.txt index c22c74cb..e302b6b4 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 -December 2022 +January 2023 ******************************************************************************* * For reference the following is a text-only version of the Zint manual, * @@ -665,6 +665,9 @@ sequences are shown in the table below. : Table : Escape Sequences: +(Special escape sequences are available for Code 128 only to manually switch +Code Sets - see 6.1.10.1 Standard Code 128 (ISO 15417) for details.) + Input data can be read directly from file using the -i or --input switch as shown below. The input file is assumed to be UTF-8 formatted unless an alternative mode is selected. This command replaces the use of the -d switch. @@ -1559,9 +1562,9 @@ wish. 5.1 Creating and Deleting Symbols The symbols manipulated by Zint are held in a zint_symbol structure defined in -"zint.h". These symbols are created with the ZBarcode_Create() function and -deleted using the ZBarcode_Delete() function. For example the following code -creates and then deletes a symbol: +"zint.h". These symbol structures are created with the ZBarcode_Create() +function and deleted using the ZBarcode_Delete() function. For example the +following code creates and then deletes a symbol: #include #include @@ -2116,6 +2119,9 @@ property. Valid values are shown in the table below. FAST_MODE Use faster if less optimal encodation or other shortcuts if available (affects DATAMATRIX, MICROPDF417, PDF417, QRCODE and UPNQR only). + + EXTRA_ESCAPE_MODE Process special symbology-specific escape sequences + (CODE128 only). ------------------------------------------------------------------------------- : Table  : API input_mode Values @@ -2124,8 +2130,8 @@ The default mode is DATA_MODE. (Note that this differs from the default for the CLI and GUI, which is UNICODE_MODE.) DATA_MODE, UNICODE_MODE and GS1_MODE are mutually exclusive, whereas -ESCAPE_MODE, GS1PARENS_MODE, GS1NOCHECK_MODE, HEIGHTPERROW_MODE and FAST_MODE -are optional. So, for example, you can set +ESCAPE_MODE, GS1PARENS_MODE, GS1NOCHECK_MODE, HEIGHTPERROW_MODE, FAST_MODE and +EXTRA_ESCAPE_MODE are optional. So, for example, you can set my_symbol->input_mode = UNICODE_MODE | ESCAPE_MODE; @@ -2139,8 +2145,10 @@ whereas is not valid. -Permissible escape sequences are listed in Table : Escape Sequences. An example -of GS1PARENS_MODE usage is given in section 6.1.10.3 GS1-128. +Permissible escape sequences (ESCAPE_MODE) are listed in Table +: Escape Sequences, and the special Code 128-only EXTRA_ESCAPE_MODE escape +sequences are given in 6.1.10.1 Standard Code 128 (ISO 15417). An example of +GS1PARENS_MODE usage is given in section 6.1.10.3 GS1-128. GS1NOCHECK_MODE is for use with legacy systems that have data that does not conform to the current GS1 standard. Printable ASCII input is still checked for, @@ -2151,6 +2159,10 @@ For HEIGHTPERROW_MODE, see --heightperrow in section 4.4 Adjusting Height. The height variable should be set to the desired per-row value on input (it will be set to the overall height on output). +FAST_MODE causes a less optimal encodation scheme to be used for Data Matrix, +MicroPDF417 and PDF417. For QR Code and UPNQR, it affects Zint’s automatic mask +selection - see 6.6.3 QR Code (ISO 18004) for details. + 5.11 Multiple Segments For input data requiring multiple ECIs, the following functions may be used: @@ -2234,7 +2246,7 @@ For example: my_symbol->scale = ZBarcode_Scale_From_XdimDp( my_symbol->symbology, ZBarcode_Default_Xdim(my_symbol->symbology), - my_symbol->dpmm, "PNG"); /* 7.5 */ + my_symbol->dpmm, "PNG"); /* Returns 7.5 */ The third function ZBarcode_XdimDP_From_Scale() is the “reverse” of ZBarcode_Scale_From_XdimDp(), returning the X-dimension (in mm) or the dot @@ -2736,8 +2748,24 @@ pharmaceuticals. The symbology is able to encode whole numbers between 3 and One of the most ubiquitous one-dimensional barcode symbologies, Code 128 was developed in 1981 by Computer Identics. This symbology supports full ASCII text and uses a three-Code Set system to compress the data into a smaller symbol. -Zint automatically switches between Code Sets A, B and C and adds a modulo-103 -check digit. +Zint automatically switches between Code Sets A, B and C (but see the special +escapes below) and adds a modulo-103 check digit. + +Manual switching of Code Sets is possible using the --extraesc option (API +input_mode |= EXTRA_ESCAPE_MODE) and the Code 128-specific escapes \^A, \^B, +\^C. For instance the following will force switching to Code Set B for the data +"5678" (normally Code Set C would be used throughout): + + zint -b CODE128 -d "1234\^B5678" --extraesc + +The manually selected Code Set will apply until the next Code Set escape +sequence, with the exception that data that cannot be represented in that Code +Set will be switched as appropriate. If the data contains a special code +sequence, it can be escaped by doubling the caret (^). For instance + + zint -b CODE128 -d "\^AABC\^^BDEF" --extraesc + +will encode the data "ABC\^BDEF" in Code Set A. Code 128 is the default barcode symbology used by Zint. In addition Zint supports the encoding of ISO/IEC 8859-1 (non-English) characters in Code 128 @@ -2752,6 +2780,9 @@ It is sometimes advantageous to stop Code 128 from using Code Set C which compresses numerical data. The BARCODE_CODE128AB[10] variant (symbology 60) suppresses Code Set C in favour of Code Sets A and B. +Note that the special escapes to manually switch Code Sets mentioned above are +not available for this variant (nor for any other). + 6.1.10.3 GS1-128 [zint -b GS1_128 --compliantheight -d "[01]98898765432106[3202]012345[15]991231"] @@ -4138,7 +4169,7 @@ maximum of 90 digits and does not include a check digit. 7.1 License -Zint, libzint and Zint Barcode Studio are Copyright © 2022 Robin Stuart. All +Zint, libzint and Zint Barcode Studio are Copyright © 2023 Robin Stuart. All historical versions are distributed under the GNU General Public License version 3 or later. Versions 2.5 and later are released under a dual license: the encoding library is released under the BSD (3 clause) license whereas the GUI, @@ -4346,7 +4377,7 @@ defined. Annex B. Man Page ZINT(1) -% ZINT(1) Version 2.12.0.9 % % December 2022 +% ZINT(1) Version 2.12.0.9 % % January 2023 NAME @@ -4514,6 +4545,12 @@ OPTIONS \UNNNNNN (U+NNNNNN) Any 21-bit Unicode character where NNNNNN is hexadecimal +--extraesc + + Process the special escape sequences \^A, \^B and \^C that allow manual + switching of Code Sets (Code 128 only). The sequence \^^ can be used to + encode data that contains special escape sequences. + --fast Use faster if less optimal encodation or other shortcuts (affects Data @@ -4892,7 +4929,7 @@ AIM ITS/04-023 (2022) COPYRIGHT -Copyright © 2022 Robin Stuart. Released under GNU GPL 3.0 or later. +Copyright © 2023 Robin Stuart. Released under GNU GPL 3.0 or later. AUTHOR diff --git a/docs/zint.1 b/docs/zint.1 index 21e16ddc..534b4231 100644 --- a/docs/zint.1 +++ b/docs/zint.1 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "ZINT" "1" "December 2022" "Version 2.12.0.9" "" +.TH "ZINT" "1" "January 2023" "Version 2.12.0.9" "" .hy .SH NAME .PP @@ -199,6 +199,13 @@ The escape sequences are: .fi .RE .TP +\f[V]--extraesc\f[R] +Process the special escape sequences \f[V]\[rs]\[ha]A\f[R], +\f[V]\[rs]\[ha]B\f[R] and \f[V]\[rs]\[ha]C\f[R] that allow manual +switching of Code Sets (Code 128 only). +The sequence \f[V]\[rs]\[ha]\[ha]\f[R] can be used to encode data that +contains special escape sequences. +.TP \f[V]--fast\f[R] Use faster if less optimal encodation or other shortcuts (affects Data Matrix, MicroPDF417, PDF417, QRCODE & UPNQR only). @@ -627,7 +634,7 @@ ISO/IEC 16390:2007, ISO/IEC 16023:2000, ISO/IEC 24728:2006, ISO/IEC (2022) .SH COPYRIGHT .PP -Copyright \[co] 2022 Robin Stuart. +Copyright \[co] 2023 Robin Stuart. Released under GNU GPL 3.0 or later. .SH AUTHOR .PP diff --git a/docs/zint.1.pmd b/docs/zint.1.pmd index 7dca801b..680d44f4 100644 --- a/docs/zint.1.pmd +++ b/docs/zint.1.pmd @@ -1,6 +1,6 @@ % ZINT(1) Version 2.12.0.9 % -% December 2022 +% January 2023 # NAME @@ -148,6 +148,11 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S \UNNNNNN (U+NNNNNN) Any 21-bit Unicode character where NNNNNN is hexadecimal +`--extraesc` + +: Process the special escape sequences `\^A`, `\^B` and `\^C` that allow manual switching of Code Sets (Code 128 + only). The sequence `\^^` can be used to encode data that contains special escape sequences. + `--fast` : Use faster if less optimal encodation or other shortcuts (affects Data Matrix, MicroPDF417, PDF417, QRCODE & UPNQR @@ -506,7 +511,7 @@ ISO/IEC 18004:2015, ISO/IEC 23941:2022, AIM ITS/04-023 (2022) # COPYRIGHT -Copyright © 2022 Robin Stuart. Released under GNU GPL 3.0 or later. +Copyright © 2023 Robin Stuart. Released under GNU GPL 3.0 or later. # AUTHOR diff --git a/frontend/main.c b/frontend/main.c index 95bdf17f..46941b22 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -164,7 +164,8 @@ static void usage(int no_png) { " --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" - " --esc Process escape characters in input data\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 (in hex RGB/RGBA)\n", stdout); printf(" --filetype=TYPE Set output file type BMP/EMF/EPS/GIF/PCX%s/SVG/TIF/TXT\n", no_png_type); @@ -1184,7 +1185,7 @@ 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_FAST, OPT_FG, OPT_FILETYPE, OPT_FONTSIZE, OPT_FULLMULTIBYTE, + 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_HEIGHT, OPT_HEIGHTPERROW, OPT_INIT, OPT_MIRROR, OPT_MASK, OPT_MODE, OPT_NOBACKGROUND, OPT_NOQUIETZONES, OPT_NOTEXT, OPT_PRIMARY, OPT_QUIETZONES, @@ -1217,6 +1218,7 @@ int main(int argc, char **argv) { {"eci", 1, NULL, OPT_ECI}, {"ecinos", 0, NULL, 'e'}, {"esc", 0, NULL, OPT_ESC}, + {"extraesc", 0, NULL, OPT_EXTRAESC}, {"fast", 0, NULL, OPT_FAST}, {"fg", 1, 0, OPT_FG}, {"filetype", 1, NULL, OPT_FILETYPE}, @@ -1392,6 +1394,9 @@ int main(int argc, char **argv) { case OPT_ESC: my_symbol->input_mode |= ESCAPE_MODE; break; + case OPT_EXTRAESC: + my_symbol->input_mode |= EXTRA_ESCAPE_MODE; + break; case OPT_FAST: my_symbol->input_mode |= FAST_MODE; break; diff --git a/frontend/tests/test_args.c b/frontend/tests/test_args.c index 5e4f1049..5f4ab1dc 100644 --- a/frontend/tests/test_args.c +++ b/frontend/tests/test_args.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 @@ -214,6 +214,9 @@ static void arg_input_mode(char *cmd, int input_mode) { if (input_mode & ESCAPE_MODE) { sprintf(cmd + (int) strlen(cmd), "%s--esc", strlen(cmd) ? " " : ""); } + if (input_mode & EXTRA_ESCAPE_MODE) { + sprintf(cmd + (int) strlen(cmd), "%s--extraesc", strlen(cmd) ? " " : ""); + } if (input_mode & FAST_MODE) { sprintf(cmd + (int) strlen(cmd), "%s--fast", strlen(cmd) ? " " : ""); } @@ -310,40 +313,42 @@ static void test_dump_args(const testCtx *const p_ctx) { /* 5*/ { BARCODE_CODE128, NULL, NULL, "123\n45\n", "7\n",-1, -1, 1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "Warning 144: Processing first input file 'test_dump_args1.txt' only\nD2 13 9B 39 65 C8 C9 8E B\nD3 97 62 3B 63 AC" }, /* 6*/ { BARCODE_CODE128, "\t", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 90 D2 1A 63 AC" }, /* 7*/ { BARCODE_CODE128, "\\t", NULL, NULL, NULL, ESCAPE_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 90 D2 1A 63 AC" }, - /* 8*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, BARCODE_BIND | BARCODE_BOX | BARCODE_BIND_TOP | SMALL_TEXT | BOLD_TEXT | CMYK_COLOUR, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D2 13 9B 39 65 C8 C9 8E B" }, - /* 9*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, BARCODE_DOTTY_MODE, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "Error 224: Selected symbology cannot be rendered as dots" }, - /* 10*/ { BARCODE_CODABLOCKF, "ABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 97 BA 86 51 88 B1 11 AC 46 D8 C7 58\nD0 97 BB 12 46 88 C5 1A 3C 55 CC C7 58" }, - /* 11*/ { BARCODE_CODABLOCKF, "ABCDEF", NULL, NULL, NULL, -1, -1, 0, 10, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 97 BA 86 51 88 B1 11 AC 44 68 BC 98 EB\nD0 97 BB 12 46 2B BD 7B A3 47 8A 8D 18 EB" }, - /* 12*/ { BARCODE_CODABLOCKF, "ABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, 3, -1, 0, -1, "D0 97 BA 58 51 88 B1 11 AC 46 36 C7 58\nD0 97 BB 12 46 88 C5 77 AF 74 62 C7 58\nD0 97 BA CE 5D EB DD 1A 3C 56 88 C7 58" }, - /* 13*/ { BARCODE_CODE11, NULL, NULL, "123", NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "B2 D6 96 CA B5 6D 64" }, - /* 14*/ { BARCODE_CODE11, NULL, NULL, "123", NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, 1, "B2 D6 96 CA B5 64" }, - /* 15*/ { BARCODE_CODE11, "123", NULL, "456", NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, 2, "B2 D6 96 CA B2\nB2 B6 DA 9A B2" }, - /* 16*/ { BARCODE_CODE11, "123", "456", "789", "012", -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, 2, "B2 D6 96 CA B2\nB2 B6 DA 9A B2\nB2 A6 D2 D5 64\nB2 AD AD 2D 64" }, - /* 17*/ { BARCODE_PDF417, "123", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, 0, 0, -1, "FF 54 7A BC 3A 9C 1D 5C 0F E8 A4\nFF 54 7E AE 3C 11 5F AB 8F E8 A4\nFF 54 6A F8 29 9F 1D 5F 8F E8 A4\nFF 54 57 9E 37 BA 1A F7 CF E8 A4\nFF 54 75 CC 36 F0 5D 73 0F E8 A4" }, - /* 18*/ { BARCODE_DATAMATRIX, "ABC", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA 8\nB3 4\n8F 0\nB2 C\nA6 0\nBA C\nD6 0\nEB 4\nE2 8\nFF C" }, - /* 19*/ { BARCODE_DATAMATRIX, "ABC", NULL, NULL, NULL, -1, READER_INIT, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A\nAC 7\n8A 4\nA0 3\nC2 2\nB5 1\n82 2\nBA 7\n8C C\nA0 5\n86 A\nFF F" }, - /* 20*/ { BARCODE_DATAMATRIX, "ABCDEFGH", NULL, NULL, NULL, FAST_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nA6 8C\nB2 F0\n98 B4\nB9 A8\nB8 CC\nF0 78\nA0 3C\n99 70\n85 1C\nDA B0\nE5 94\nA7 50\nFF FC" }, - /* 21*/ { BARCODE_DATAMATRIX, "ABCDEFGH", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\n80 04\n82 60\nC5 24\n98 A8\nA3 9C\nCB B8\nAF DC\n86 58\nF6 44\nAC 18\n90 54\nCF 30\nFF FC" }, - /* 22*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJK", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA AA AA AA\n80 09 F9 BD\n82 4A E2 58\nC5 CD C9 A5\nD8 5C A5 FC\nE0 35 88 69\nCC FC B3 E6\nFF FF FF FF" }, - /* 23*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJK", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 1, -1, "AA AA\n80 25\n82 24\nC5 5D\n98 90\nA4 C7\nC8 A6\nB9 E9\n8E 02\nDE 91\nCD 6C\nA0 BB\n85 80\n98 2D\nE4 CA\nFF FF" }, - /* 24*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA AA A8\nBA 5A 44\n8B 4D 28\nBF 77 64\n97 85 50\nBA D8 AC\nCD ED B8\nD4 B5 2C\nD1 A8 00\n81 FB 2C\nE4 75 78\n96 E8 2C\nF3 75 78\nEE 1D 04\nCA BA 98\nB1 8F B4\nA0 4F 00\nE4 A7 74\nF1 D3 90\nEF E1 BC\n91 10 38\nFF FF FC" }, - /* 25*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 1, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA AA AA AA AA AA AA AA\nBA 03 BA 7D E5 31 B0 0D\n8B 6A 93 B6 E0 0A B8 3C\nBF 1D EA A7 EB ED A1 FB\n96 66 86 B6 C9 AE 92 40\nBF 65 E7 95 BC B7 FA E3\nCC 7C 90 CC D1 24 AB 5A\nFF FF FF FF FF FF FF FF" }, - /* 26*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 1, -1, 0, -1, -1, NULL, -1, -1, 1, -1, "AA AA A8\nBA 5A 44\n8B 4D 28\nBF 77 64\n97 85 50\nBA D8 AC\nCD ED B8\nD4 B5 2C\nD1 A8 00\n81 FB 2C\nE4 75 78\n96 E8 2C\nF3 75 78\nEE 1D 04\nCA BA 98\nB1 8F B4\nA0 4F 00\nE4 A7 74\nF1 D3 90\nEF E1 BC\n91 10 38\nFF FF FC" }, - /* 27*/ { BARCODE_DATAMATRIX, "[91]12[92]34", NULL, NULL, NULL, GS1_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nFA 9C\nBC 00\nD7 84\nED E0\nA4 E4\nA7 40\n9D 3C\nBF 50\nFA 24\nB1 68\nE5 04\n92 70\nFF FC" }, - /* 28*/ { BARCODE_DATAMATRIX, "[91]12[92]34", NULL, NULL, NULL, GS1_MODE, GS1_GS_SEPARATOR, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nF9 DC\nBF 20\nD6 C4\nED 10\nA0 0C\nA7 C0\n96 5C\nBA 70\nBB A4\nE2 18\nDD 14\n9C 40\nFF FC" }, - /* 29*/ { BARCODE_DATAMATRIX, "[9\\x31]12[92]34", NULL, NULL, NULL, GS1_MODE | ESCAPE_MODE, GS1_GS_SEPARATOR, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nF9 DC\nBF 20\nD6 C4\nED 10\nA0 0C\nA7 C0\n96 5C\nBA 70\nBB A4\nE2 18\nDD 14\n9C 40\nFF FC" }, - /* 30*/ { BARCODE_DATAMATRIX, "(9\\x31)12(92)34", NULL, NULL, NULL, GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, GS1_GS_SEPARATOR, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nF9 DC\nBF 20\nD6 C4\nED 10\nA0 0C\nA7 C0\n96 5C\nBA 70\nBB A4\nE2 18\nDD 14\n9C 40\nFF FC" }, - /* 31*/ { BARCODE_EANX_CC, "[91]12", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, "12345678+12", -1, -1, 0, -1, "DB BC D3 9C 44 E9 D2 2C 19 E7 A2 D8 A0 00 00 00\nDB 31 1C 9C C7 29 92 47 D9 E9 40 C8 A0 00 00 00\nDA 3B EB 10 AF 09 9A 18 9D 7D 82 E8 A0 00 00 00\n10 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00\n20 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00\n10 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00\n14 68 D1 A6 49 BD 55 C9 D4 22 48 B9 40 59 94 98" }, - /* 32*/ { BARCODE_EANX_CC, "[91]12", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, 2, "12345678+12", -1, -1, 0, -1, "D3 A3 E9 DB F5 C9 DB 43 D9 CB 98 D2 20 00 00 00\nD3 25 0F 11 E4 49 D3 51 F1 AC FC D6 20 00 00 00\nD1 33 48 19 39 E9 93 18 49 D8 98 D7 20 00 00 00\nD1 A6 FC DA 1C 49 9B C5 05 E2 84 D7 A0 00 00 00\n10 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00\n20 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00\n10 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00\n14 68 D1 A6 49 BD 55 C9 D4 22 48 B9 40 59 94 98" }, - /* 33*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, 1, 0, -1, "Warning 760: Converted to Shift JIS but no ECI specified\nFE 2B F8\n82 AA 08\nBA B2 E8\nBA 0A E8\nBA FA E8\n82 E2 08\nFE AB F8\n00 80 00\nD3 3B B0\n60 95 68\n7A B3 A0\n1D 0F 98\nAA D7 30\n00 E6 A8\nFE DA D0\n82 42 20\nBA 0E 38\nBA C7 18\nBA 17 68\n82 B9 40\nFE C5 28" }, - /* 34*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, 0, 26, 0, -1, -1, NULL, -1, 1, 0, -1, "FE 5B F8\n82 72 08\nBA DA E8\nBA 52 E8\nBA 2A E8\n82 0A 08\nFE AB F8\n00 D8 00\nEF F6 20\nB5 C2 28\n36 28 88\nFD 42 10\n62 2A C8\n00 95 70\nFE B7 38\n82 FD D8\nBA 97 00\nBA 43 60\nBA C8 C8\n82 C3 68\nFE EA F8" }, - /* 35*/ { BARCODE_QRCODE, "\223\137", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, 1, 0, -1, "FE 2B F8\n82 0A 08\nBA A2 E8\nBA 0A E8\nBA 5A E8\n82 72 08\nFE AB F8\n00 A0 00\nEF AE 20\n75 B5 20\n82 F7 58\nF4 9D C8\n5E 17 28\n00 C2 20\nFE 88 80\n82 82 38\nBA EA A8\nBA 55 50\nBA D7 68\n82 BD D0\nFE B7 78" }, - /* 36*/ { BARCODE_QRCODE, "\223\137", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 1, -1, -1, NULL, -1, 1, 0, -1, "FE 2B F8\n82 AA 08\nBA B2 E8\nBA 0A E8\nBA FA E8\n82 E2 08\nFE AB F8\n00 80 00\nD3 3B B0\n60 95 68\n7A B3 A0\n1D 0F 98\nAA D7 30\n00 E6 A8\nFE DA D0\n82 42 20\nBA 0E 38\nBA C7 18\nBA 17 68\n82 B9 40\nFE C5 28" }, - /* 37*/ { BARCODE_QRCODE, "\\x93\\x5F", NULL, NULL, NULL, DATA_MODE | ESCAPE_MODE, -1, 0, -1, 0, -1, 1, -1, -1, NULL, -1, 1, 0, -1, "FE 2B F8\n82 AA 08\nBA B2 E8\nBA 0A E8\nBA FA E8\n82 E2 08\nFE AB F8\n00 80 00\nD3 3B B0\n60 95 68\n7A B3 A0\n1D 0F 98\nAA D7 30\n00 E6 A8\nFE DA D0\n82 42 20\nBA 0E 38\nBA C7 18\nBA 17 68\n82 B9 40\nFE C5 28" }, - /* 38*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, 2, -1, NULL, -1, 1, 0, -1, "Warning 760: Converted to Shift JIS but no ECI specified\nFE 4B F8\n82 92 08\nBA 42 E8\nBA 92 E8\nBA 3A E8\n82 EA 08\nFE AB F8\n00 38 00\nFB CD 50\nA5 89 18\n0B 74 B8\nFC 81 A0\n92 34 B8\n00 DE 48\nFE AB 10\n82 5E 50\nBA C9 20\nBA C9 20\nBA F4 E0\n82 81 A0\nFE B4 E8" }, - /* 39*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 1, -1, -1, NULL, -1, -1, 0, -1, "FE 8A FE\n80 28 02\nBE E8 FA\nA0 94 0A\nAE 3E EA\nAE D2 EA\nAE 74 EA\n00 AA 00\n15 B4 80\n0B 48 74\nA2 4A A4\nB5 56 2C\nA8 5A A8\n9F 18 50\n02 07 50\n00 A6 00\nFE 20 EA\n02 C2 EA\nFA C4 EA\n0A 42 0A\nEA 52 FA\nEA 24 02\nEA AA FE" }, - /* 40*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 1, 3, -1, NULL, -1, -1, 0, -1, "FE 16 FE\n80 E2 02\nBE C2 FA\nA0 A0 0A\nAE F6 EA\nAE 98 EA\nAE BA EA\n00 E0 00\n15 83 80\n44 7E AE\n92 9C 78\n25 BF 08\n47 4B 8C\n0D F9 74\n03 E7 50\n00 3A 00\nFE C2 EA\n02 22 EA\nFA DA EA\n0A 22 0A\nEA B2 FA\nEA 9A 02\nEA E8 FE" }, - /* 41*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 1, 4, -1, NULL, -1, -1, 0, -1, "FE 8A FE\n80 28 02\nBE E8 FA\nA0 94 0A\nAE 3E EA\nAE D2 EA\nAE 74 EA\n00 AA 00\n15 B4 80\n0B 48 74\nA2 4A A4\nB5 56 2C\nA8 5A A8\n9F 18 50\n02 07 50\n00 A6 00\nFE 20 EA\n02 C2 EA\nFA C4 EA\n0A 42 0A\nEA 52 FA\nEA 24 02\nEA AA FE" }, + /* 8*/ { BARCODE_CODE128, "\\^Ab\011", NULL, NULL, NULL, EXTRA_ESCAPE_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D2 12 1B AF 43 4C A1 8E B" }, + /* 9*/ { BARCODE_CODE128, "\\^Ab\\t", NULL, NULL, NULL, ESCAPE_MODE | EXTRA_ESCAPE_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D2 12 1B AF 43 4C A1 8E B" }, + /* 10*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, BARCODE_BIND | BARCODE_BOX | BARCODE_BIND_TOP | SMALL_TEXT | BOLD_TEXT | CMYK_COLOUR, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D2 13 9B 39 65 C8 C9 8E B" }, + /* 11*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, BARCODE_DOTTY_MODE, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "Error 224: Selected symbology cannot be rendered as dots" }, + /* 12*/ { BARCODE_CODABLOCKF, "ABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 97 BA 86 51 88 B1 11 AC 46 D8 C7 58\nD0 97 BB 12 46 88 C5 1A 3C 55 CC C7 58" }, + /* 13*/ { BARCODE_CODABLOCKF, "ABCDEF", NULL, NULL, NULL, -1, -1, 0, 10, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 97 BA 86 51 88 B1 11 AC 44 68 BC 98 EB\nD0 97 BB 12 46 2B BD 7B A3 47 8A 8D 18 EB" }, + /* 14*/ { BARCODE_CODABLOCKF, "ABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, 3, -1, 0, -1, "D0 97 BA 58 51 88 B1 11 AC 46 36 C7 58\nD0 97 BB 12 46 88 C5 77 AF 74 62 C7 58\nD0 97 BA CE 5D EB DD 1A 3C 56 88 C7 58" }, + /* 15*/ { BARCODE_CODE11, NULL, NULL, "123", NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "B2 D6 96 CA B5 6D 64" }, + /* 16*/ { BARCODE_CODE11, NULL, NULL, "123", NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, 1, "B2 D6 96 CA B5 64" }, + /* 17*/ { BARCODE_CODE11, "123", NULL, "456", NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, 2, "B2 D6 96 CA B2\nB2 B6 DA 9A B2" }, + /* 18*/ { BARCODE_CODE11, "123", "456", "789", "012", -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, 2, "B2 D6 96 CA B2\nB2 B6 DA 9A B2\nB2 A6 D2 D5 64\nB2 AD AD 2D 64" }, + /* 19*/ { BARCODE_PDF417, "123", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, 0, 0, -1, "FF 54 7A BC 3A 9C 1D 5C 0F E8 A4\nFF 54 7E AE 3C 11 5F AB 8F E8 A4\nFF 54 6A F8 29 9F 1D 5F 8F E8 A4\nFF 54 57 9E 37 BA 1A F7 CF E8 A4\nFF 54 75 CC 36 F0 5D 73 0F E8 A4" }, + /* 20*/ { BARCODE_DATAMATRIX, "ABC", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA 8\nB3 4\n8F 0\nB2 C\nA6 0\nBA C\nD6 0\nEB 4\nE2 8\nFF C" }, + /* 21*/ { BARCODE_DATAMATRIX, "ABC", NULL, NULL, NULL, -1, READER_INIT, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A\nAC 7\n8A 4\nA0 3\nC2 2\nB5 1\n82 2\nBA 7\n8C C\nA0 5\n86 A\nFF F" }, + /* 22*/ { BARCODE_DATAMATRIX, "ABCDEFGH", NULL, NULL, NULL, FAST_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nA6 8C\nB2 F0\n98 B4\nB9 A8\nB8 CC\nF0 78\nA0 3C\n99 70\n85 1C\nDA B0\nE5 94\nA7 50\nFF FC" }, + /* 23*/ { BARCODE_DATAMATRIX, "ABCDEFGH", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\n80 04\n82 60\nC5 24\n98 A8\nA3 9C\nCB B8\nAF DC\n86 58\nF6 44\nAC 18\n90 54\nCF 30\nFF FC" }, + /* 24*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJK", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA AA AA AA\n80 09 F9 BD\n82 4A E2 58\nC5 CD C9 A5\nD8 5C A5 FC\nE0 35 88 69\nCC FC B3 E6\nFF FF FF FF" }, + /* 25*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJK", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 1, -1, "AA AA\n80 25\n82 24\nC5 5D\n98 90\nA4 C7\nC8 A6\nB9 E9\n8E 02\nDE 91\nCD 6C\nA0 BB\n85 80\n98 2D\nE4 CA\nFF FF" }, + /* 26*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA AA A8\nBA 5A 44\n8B 4D 28\nBF 77 64\n97 85 50\nBA D8 AC\nCD ED B8\nD4 B5 2C\nD1 A8 00\n81 FB 2C\nE4 75 78\n96 E8 2C\nF3 75 78\nEE 1D 04\nCA BA 98\nB1 8F B4\nA0 4F 00\nE4 A7 74\nF1 D3 90\nEF E1 BC\n91 10 38\nFF FF FC" }, + /* 27*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 1, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA AA AA AA AA AA AA AA\nBA 03 BA 7D E5 31 B0 0D\n8B 6A 93 B6 E0 0A B8 3C\nBF 1D EA A7 EB ED A1 FB\n96 66 86 B6 C9 AE 92 40\nBF 65 E7 95 BC B7 FA E3\nCC 7C 90 CC D1 24 AB 5A\nFF FF FF FF FF FF FF FF" }, + /* 28*/ { BARCODE_DATAMATRIX, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", NULL, NULL, NULL, -1, -1, 0, -1, 1, -1, 0, -1, -1, NULL, -1, -1, 1, -1, "AA AA A8\nBA 5A 44\n8B 4D 28\nBF 77 64\n97 85 50\nBA D8 AC\nCD ED B8\nD4 B5 2C\nD1 A8 00\n81 FB 2C\nE4 75 78\n96 E8 2C\nF3 75 78\nEE 1D 04\nCA BA 98\nB1 8F B4\nA0 4F 00\nE4 A7 74\nF1 D3 90\nEF E1 BC\n91 10 38\nFF FF FC" }, + /* 29*/ { BARCODE_DATAMATRIX, "[91]12[92]34", NULL, NULL, NULL, GS1_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nFA 9C\nBC 00\nD7 84\nED E0\nA4 E4\nA7 40\n9D 3C\nBF 50\nFA 24\nB1 68\nE5 04\n92 70\nFF FC" }, + /* 30*/ { BARCODE_DATAMATRIX, "[91]12[92]34", NULL, NULL, NULL, GS1_MODE, GS1_GS_SEPARATOR, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nF9 DC\nBF 20\nD6 C4\nED 10\nA0 0C\nA7 C0\n96 5C\nBA 70\nBB A4\nE2 18\nDD 14\n9C 40\nFF FC" }, + /* 31*/ { BARCODE_DATAMATRIX, "[9\\x31]12[92]34", NULL, NULL, NULL, GS1_MODE | ESCAPE_MODE, GS1_GS_SEPARATOR, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nF9 DC\nBF 20\nD6 C4\nED 10\nA0 0C\nA7 C0\n96 5C\nBA 70\nBB A4\nE2 18\nDD 14\n9C 40\nFF FC" }, + /* 32*/ { BARCODE_DATAMATRIX, "(9\\x31)12(92)34", NULL, NULL, NULL, GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, GS1_GS_SEPARATOR, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A8\nF9 DC\nBF 20\nD6 C4\nED 10\nA0 0C\nA7 C0\n96 5C\nBA 70\nBB A4\nE2 18\nDD 14\n9C 40\nFF FC" }, + /* 33*/ { BARCODE_EANX_CC, "[91]12", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, "12345678+12", -1, -1, 0, -1, "DB BC D3 9C 44 E9 D2 2C 19 E7 A2 D8 A0 00 00 00\nDB 31 1C 9C C7 29 92 47 D9 E9 40 C8 A0 00 00 00\nDA 3B EB 10 AF 09 9A 18 9D 7D 82 E8 A0 00 00 00\n10 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00\n20 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00\n10 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00\n14 68 D1 A6 49 BD 55 C9 D4 22 48 B9 40 59 94 98" }, + /* 34*/ { BARCODE_EANX_CC, "[91]12", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, 2, "12345678+12", -1, -1, 0, -1, "D3 A3 E9 DB F5 C9 DB 43 D9 CB 98 D2 20 00 00 00\nD3 25 0F 11 E4 49 D3 51 F1 AC FC D6 20 00 00 00\nD1 33 48 19 39 E9 93 18 49 D8 98 D7 20 00 00 00\nD1 A6 FC DA 1C 49 9B C5 05 E2 84 D7 A0 00 00 00\n10 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00\n20 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00\n10 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00\n14 68 D1 A6 49 BD 55 C9 D4 22 48 B9 40 59 94 98" }, + /* 35*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, 1, 0, -1, "Warning 760: Converted to Shift JIS but no ECI specified\nFE 2B F8\n82 AA 08\nBA B2 E8\nBA 0A E8\nBA FA E8\n82 E2 08\nFE AB F8\n00 80 00\nD3 3B B0\n60 95 68\n7A B3 A0\n1D 0F 98\nAA D7 30\n00 E6 A8\nFE DA D0\n82 42 20\nBA 0E 38\nBA C7 18\nBA 17 68\n82 B9 40\nFE C5 28" }, + /* 36*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, 0, 26, 0, -1, -1, NULL, -1, 1, 0, -1, "FE 5B F8\n82 72 08\nBA DA E8\nBA 52 E8\nBA 2A E8\n82 0A 08\nFE AB F8\n00 D8 00\nEF F6 20\nB5 C2 28\n36 28 88\nFD 42 10\n62 2A C8\n00 95 70\nFE B7 38\n82 FD D8\nBA 97 00\nBA 43 60\nBA C8 C8\n82 C3 68\nFE EA F8" }, + /* 37*/ { BARCODE_QRCODE, "\223\137", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, 1, 0, -1, "FE 2B F8\n82 0A 08\nBA A2 E8\nBA 0A E8\nBA 5A E8\n82 72 08\nFE AB F8\n00 A0 00\nEF AE 20\n75 B5 20\n82 F7 58\nF4 9D C8\n5E 17 28\n00 C2 20\nFE 88 80\n82 82 38\nBA EA A8\nBA 55 50\nBA D7 68\n82 BD D0\nFE B7 78" }, + /* 38*/ { BARCODE_QRCODE, "\223\137", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 1, -1, -1, NULL, -1, 1, 0, -1, "FE 2B F8\n82 AA 08\nBA B2 E8\nBA 0A E8\nBA FA E8\n82 E2 08\nFE AB F8\n00 80 00\nD3 3B B0\n60 95 68\n7A B3 A0\n1D 0F 98\nAA D7 30\n00 E6 A8\nFE DA D0\n82 42 20\nBA 0E 38\nBA C7 18\nBA 17 68\n82 B9 40\nFE C5 28" }, + /* 39*/ { BARCODE_QRCODE, "\\x93\\x5F", NULL, NULL, NULL, DATA_MODE | ESCAPE_MODE, -1, 0, -1, 0, -1, 1, -1, -1, NULL, -1, 1, 0, -1, "FE 2B F8\n82 AA 08\nBA B2 E8\nBA 0A E8\nBA FA E8\n82 E2 08\nFE AB F8\n00 80 00\nD3 3B B0\n60 95 68\n7A B3 A0\n1D 0F 98\nAA D7 30\n00 E6 A8\nFE DA D0\n82 42 20\nBA 0E 38\nBA C7 18\nBA 17 68\n82 B9 40\nFE C5 28" }, + /* 40*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, 2, -1, NULL, -1, 1, 0, -1, "Warning 760: Converted to Shift JIS but no ECI specified\nFE 4B F8\n82 92 08\nBA 42 E8\nBA 92 E8\nBA 3A E8\n82 EA 08\nFE AB F8\n00 38 00\nFB CD 50\nA5 89 18\n0B 74 B8\nFC 81 A0\n92 34 B8\n00 DE 48\nFE AB 10\n82 5E 50\nBA C9 20\nBA C9 20\nBA F4 E0\n82 81 A0\nFE B4 E8" }, + /* 41*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 1, -1, -1, NULL, -1, -1, 0, -1, "FE 8A FE\n80 28 02\nBE E8 FA\nA0 94 0A\nAE 3E EA\nAE D2 EA\nAE 74 EA\n00 AA 00\n15 B4 80\n0B 48 74\nA2 4A A4\nB5 56 2C\nA8 5A A8\n9F 18 50\n02 07 50\n00 A6 00\nFE 20 EA\n02 C2 EA\nFA C4 EA\n0A 42 0A\nEA 52 FA\nEA 24 02\nEA AA FE" }, + /* 42*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 1, 3, -1, NULL, -1, -1, 0, -1, "FE 16 FE\n80 E2 02\nBE C2 FA\nA0 A0 0A\nAE F6 EA\nAE 98 EA\nAE BA EA\n00 E0 00\n15 83 80\n44 7E AE\n92 9C 78\n25 BF 08\n47 4B 8C\n0D F9 74\n03 E7 50\n00 3A 00\nFE C2 EA\n02 22 EA\nFA DA EA\n0A 22 0A\nEA B2 FA\nEA 9A 02\nEA E8 FE" }, + /* 43*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, 0, -1, 1, 4, -1, NULL, -1, -1, 0, -1, "FE 8A FE\n80 28 02\nBE E8 FA\nA0 94 0A\nAE 3E EA\nAE D2 EA\nAE 74 EA\n00 AA 00\n15 B4 80\n0B 48 74\nA2 4A A4\nB5 56 2C\nA8 5A A8\n9F 18 50\n02 07 50\n00 A6 00\nFE 20 EA\n02 C2 EA\nFA C4 EA\n0A 42 0A\nEA 52 FA\nEA 24 02\nEA AA FE" }, }; int data_size = ARRAY_SIZE(data); int i; diff --git a/frontend_qt/extScale.ui b/frontend_qt/extScale.ui index efb1804b..c6dc8bcf 100644 --- a/frontend_qt/extScale.ui +++ b/frontend_qt/extScale.ui @@ -302,6 +302,20 @@ + + + + false + + + &Unset + + + Reset the scale to the original value and +mark the settings as unset + + + diff --git a/frontend_qt/grpC128.ui b/frontend_qt/grpC128.ui index 896d8f4e..f5974ab2 100644 --- a/frontend_qt/grpC128.ui +++ b/frontend_qt/grpC128.ui @@ -37,15 +37,26 @@ - Subset &C Suppression + Code Set &C Suppression - Do not use Subset C mode + Do not use Code Set C (numeric compression) - + + + + &Manual Code Sets (Extra Escape Mode) + + + Process special escape sequences "\^A", "\^B" and +"\^C" allowing manual Code Set selection + + + + GS&1-128 @@ -56,7 +67,7 @@ formatted with Application Identifiers (AIs) - + H&IBC diff --git a/frontend_qt/mainwindow.cpp b/frontend_qt/mainwindow.cpp index 760c8b0c..d65a99c8 100644 --- a/frontend_qt/mainwindow.cpp +++ b/frontend_qt/mainwindow.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (C) 2008 by BogDan Vatra * - * Copyright (C) 2009-2022 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 * @@ -59,6 +59,9 @@ static const QKeySequence factoryResetSeq(Qt::SHIFT | Qt::CTRL | Qt::Key_R); static const QRegularExpression colorRE(QSL("^[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$")); +static const QColor fgcolorDefault(0, 0, 0, 0xff); +static const QColor bgcolorDefault(0xff, 0xff, 0xff, 0xff); + struct bstyle_item { const QString text; int symbology; @@ -561,8 +564,8 @@ bool MainWindow::eventFilter(QObject *watched, QEvent *event) void MainWindow::reset_colours() { - m_fgcolor.setRgb(0, 0, 0, 0xff); - m_bgcolor.setRgb(0xff, 0xff, 0xff, 0xff); + m_fgcolor = fgcolorDefault; + m_bgcolor = bgcolorDefault; setColorTxtBtn(m_fgcolor, txt_fgcolor, fgcolor); setColorTxtBtn(m_bgcolor, txt_bgcolor, bgcolor); update_preview(); @@ -733,7 +736,7 @@ void MainWindow::about() "

A free barcode generator

" "
" - "

Copyright © 2006-2022 Robin Stuart and others.
" + "

Copyright © 2006-2023 Robin Stuart and others.
" "Qt backend by BogDan Vatra.
" "Released under GNU GPL 3.0 or later.

" "

Qt version %2

" @@ -972,7 +975,7 @@ void MainWindow::open_scale_dialog() { double originalScale = spnScale->value(); QString originalSizeMsg = lblSizeMsg->text(); - ScaleWindow dlg(&m_bc, &m_xdimdpVars); + ScaleWindow dlg(&m_bc, &m_xdimdpVars, originalScale); m_scaleWindow = &dlg; connect(&dlg, SIGNAL(scaleChanged(double)), this, SLOT(on_scaleChanged(double))); (void) dlg.exec(); @@ -1558,6 +1561,7 @@ void MainWindow::change_options() connect(get_widget(QSL("radC128EAN")), SIGNAL(toggled( bool )), SLOT(composite_ean_check())); connect(get_widget(QSL("radC128EAN")), SIGNAL(toggled( bool )), SLOT(update_preview())); connect(get_widget(QSL("radC128HIBC")), SIGNAL(toggled( bool )), SLOT(update_preview())); + connect(get_widget(QSL("radC128ExtraEsc")), SIGNAL(toggled( bool )), SLOT(update_preview())); } else if (symbology == BARCODE_PDF417) { QFile file(QSL(":/grpPDF417.ui")); @@ -2502,6 +2506,7 @@ void MainWindow::update_preview() m_bc.bc.setText(txtData->text()); } } + btnReset->setEnabled(m_fgcolor != fgcolorDefault || m_bgcolor != bgcolorDefault); m_bc.bc.setOption1(-1); m_bc.bc.setOption2(0); m_bc.bc.setOption3(0); @@ -2524,14 +2529,18 @@ void MainWindow::update_preview() switch (symbology) { case BARCODE_CODE128: - if (get_rad_val(QSL("radC128CSup"))) + if (get_rad_val(QSL("radC128CSup"))) { m_bc.bc.setSymbol(BARCODE_CODE128AB); - else if (get_rad_val(QSL("radC128EAN"))) + } else if (get_rad_val(QSL("radC128EAN"))) { m_bc.bc.setSymbol(chkComposite->isChecked() ? BARCODE_GS1_128_CC : BARCODE_GS1_128); - else if (get_rad_val(QSL("radC128HIBC"))) + } else if (get_rad_val(QSL("radC128HIBC"))) { m_bc.bc.setSymbol(BARCODE_HIBC_128); - else + } else if (get_rad_val(QSL("radC128ExtraEsc"))) { m_bc.bc.setSymbol(BARCODE_CODE128); + m_bc.bc.setInputMode(m_bc.bc.inputMode() | EXTRA_ESCAPE_MODE); + } else { + m_bc.bc.setSymbol(BARCODE_CODE128); + } break; case BARCODE_EANX: @@ -3927,7 +3936,7 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) case BARCODE_HIBC_128: settings.setValue(QSL("studio/bc/code128/encoding_mode"), get_rad_grp_index( QStringList() << QSL("radC128Stand") << QSL("radC128EAN") << QSL("radC128CSup") - << QSL("radC128HIBC"))); + << QSL("radC128HIBC") << QSL("radC128ExtraEsc"))); break; case BARCODE_PDF417: @@ -4334,7 +4343,7 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) case BARCODE_HIBC_128: set_rad_from_setting(settings, QSL("studio/bc/code128/encoding_mode"), QStringList() << QSL("radC128Stand") << QSL("radC128EAN") << QSL("radC128CSup") - << QSL("radC128HIBC")); + << QSL("radC128HIBC") << QSL("radC128ExtraEsc")); break; case BARCODE_PDF417: diff --git a/frontend_qt/scalewindow.cpp b/frontend_qt/scalewindow.cpp index 178cd2e2..179e4e59 100644 --- a/frontend_qt/scalewindow.cpp +++ b/frontend_qt/scalewindow.cpp @@ -1,6 +1,6 @@ /* Zint Barcode Generator - the open source barcode generator - Copyright (C) 2022 Robin Stuart + Copyright (C) 2022-2023 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 @@ -44,8 +44,8 @@ static int resolution_standard(int inch, int val) return 0; } -ScaleWindow::ScaleWindow(BarcodeItem *bc, Zint::QZintXdimDpVars *vars) - : m_bc(bc), Valid(false), m_vars(*vars) +ScaleWindow::ScaleWindow(BarcodeItem *bc, Zint::QZintXdimDpVars *vars, double originalScale) + : m_bc(bc), Valid(false), m_vars(*vars), m_originalScale(originalScale), m_unset(false) { setupUi(this); @@ -90,11 +90,15 @@ ScaleWindow::ScaleWindow(BarcodeItem *bc, Zint::QZintXdimDpVars *vars) size_msg_ui_set(); QIcon closeIcon(QIcon::fromTheme(QSL("window-close"), QIcon(QSL(":res/x.svg")))); + QIcon unsetIcon(QSL(":res/delete.svg")); QIcon okIcon(QIcon(QSL(":res/check.svg"))); btnCancel->setIcon(closeIcon); + btnScaleUnset->setIcon(unsetIcon); + btnScaleUnset->setEnabled(m_vars.set); btnOK->setIcon(okIcon); connect(btnCancel, SIGNAL(clicked( bool )), SLOT(close())); + connect(btnScaleUnset, SIGNAL( clicked( bool )), SLOT(unset_scale())); connect(btnOK, SIGNAL(clicked( bool )), SLOT(okay())); connect(spnXdim, SIGNAL(valueChanged( double )), SLOT(update_scale())); connect(cmbXdimUnits, SIGNAL(currentIndexChanged( int )), SLOT(x_dim_units_change())); @@ -143,11 +147,25 @@ void ScaleWindow::size_msg_ui_set() } } +void ScaleWindow::unset_scale() +{ + m_vars.x_dim = m_bc->bc.getXdimDpFromScale(m_originalScale, get_dpmm(), getFileType()); + m_vars.set = 0; + + if (cmbXdimUnits->currentIndex() == 1) { // Inches + spnXdim->setValue(m_vars.x_dim / 25.4); + } else { + spnXdim->setValue(m_vars.x_dim); + } + m_unset = true; + btnScaleUnset->setEnabled(false); +} + void ScaleWindow::okay() { if (update_vars()) { Valid = true; - m_vars.set = 1; + m_vars.set = m_unset ? 0 : 1; } close(); } @@ -159,6 +177,8 @@ void ScaleWindow::update_scale() // Need up-to-date `vectorWidth()` and `vectorHeight()` to estimate size including borders, whitespace & text, // so tell main window to encode and it will update UI here via `size_msg_ui_set()` emit scaleChanged(scale); + m_unset = false; + btnScaleUnset->setEnabled(true); } } diff --git a/frontend_qt/scalewindow.h b/frontend_qt/scalewindow.h index 01833288..3453f9ef 100644 --- a/frontend_qt/scalewindow.h +++ b/frontend_qt/scalewindow.h @@ -1,6 +1,6 @@ /* Zint Barcode Generator - the open source barcode generator - Copyright (C) 2022 Robin Stuart + Copyright (C) 2022-2023 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 @@ -32,7 +32,7 @@ private: BarcodeItem *m_bc; public: - ScaleWindow(BarcodeItem *bc, struct Zint::QZintXdimDpVars *vars); + ScaleWindow(BarcodeItem *bc, struct Zint::QZintXdimDpVars *vars, double originalScale); ~ScaleWindow(); bool Valid; @@ -45,6 +45,7 @@ signals: public slots: void size_msg_ui_set(); private slots: + void unset_scale(); void okay(); void update_scale(); void x_dim_units_change(); @@ -57,6 +58,8 @@ private: float get_dpmm() const; const char *getFileType() const; double update_vars(); + double m_originalScale; + bool m_unset; }; /* vim: set ts=4 sw=4 et : */

Instruction manual is available at the project homepage:
" "
http://www.zint.org.uk.