From f9a493522f48ee713987a7e5b080d2174341782e Mon Sep 17 00:00:00 2001 From: gitlost Date: Mon, 30 Mar 2026 21:25:22 +0100 Subject: [PATCH] DATAMATRIX: add new options `DM_B256_START` and `DM_C40_START` to `options_3`, allowing forcing of Base 256 or C40 mode a la BWIPP for initial no. of characters specified in `option_1`, with 0 meaning all (CLI "--dmb256=" and "--dmc40=", GUI also (apart from MAILMARK_2D, which may be added later); export masks `DM_B256_C40_START_MASK` & `DM_SQUARE_DMRE_MASK` in "zint.h" ZBarcode_Encode_File: report filename (possibly truncated) in error message on failed open GUI: uniquify some accelerators and add some child widget getter helpers to "mainwindow.cpp" backend/DEVELOPER -> backend/README, with some expansion debian/copyright: a few more fixes BWIPP/pandoc: update to latest tests/fuzz: adjust for new DATAMATRIX options --- ChangeLog | 11 +- backend/DEVELOPER | 158 ---- backend/README | 243 ++++++ backend/dmatrix.c | 116 ++- backend/library.c | 9 +- backend/tests/CMakeLists.txt | 2 +- backend/tests/fuzz/fuzz.h | 2 +- backend/tests/test_dmatrix.c | 969 ++++++++++++++--------- backend/tests/test_library.c | 24 +- backend/tests/test_mailmark.c | 98 ++- backend/tests/testcommon.c | 30 +- backend/tests/tools/bwipp_dump.ps.tar.xz | Bin 157064 -> 159164 bytes backend/tif.c | 1 + backend/zint.h | 12 +- backend_qt/qzint.cpp | 12 +- backend_qt/tests/test_qzint.cpp | 28 +- backend_tcl/zint.c | 36 +- debian/copyright | 15 +- docs/manual.html | 16 + docs/manual.pmd | 6 + docs/manual.txt | 15 + docs/zint.1 | 12 +- docs/zint.1.pmd | 8 + frontend/main.c | 101 ++- frontend/tests/test_args.c | 96 ++- frontend_qt/grpAztec.ui | 4 +- frontend_qt/grpC128.ui | 2 +- frontend_qt/grpCodablockF.ui | 6 +- frontend_qt/grpDM.ui | 127 ++- frontend_qt/grpDotCode.ui | 2 +- frontend_qt/grpGrid.ui | 2 +- frontend_qt/grpHX.ui | 2 +- frontend_qt/grpMQR.ui | 2 +- frontend_qt/grpMicroPDF.ui | 8 +- frontend_qt/grpPDF417.ui | 10 +- frontend_qt/grpQR.ui | 6 +- frontend_qt/grpUPNQR.ui | 2 +- frontend_qt/grpUltra.ui | 6 +- frontend_qt/mainwindow.cpp | 411 ++++++---- frontend_qt/mainwindow.h | 16 +- 40 files changed, 1706 insertions(+), 920 deletions(-) delete mode 100644 backend/DEVELOPER create mode 100644 backend/README diff --git a/ChangeLog b/ChangeLog index 7f8a10e8..8e527230 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -Version 2.16.0.9 (dev) not released yet (2026-03-26) +Version 2.16.0.9 (dev) not released yet (2026-03-30) ==================================================== **Incompatible changes** @@ -9,6 +9,8 @@ Version 2.16.0.9 (dev) not released yet (2026-03-26) - New Qt Backend method `save_as_memfile()` to save file to memory - New Qt Backend methods `gs1Raw()` and `setGS1Raw()` for new `GS1RAW_MODE` option for processing GS1 input +- CLI now warns if both "--dmre" and "--square" are given (previously silently + ignored "--dmre") Changes ------- @@ -22,11 +24,14 @@ Changes - AZTEC: add improved encoding algorithm adapted from ZXing, props Frank Yellin and Rustam Abdullaev; previous algorithm available via "--fast" (input_mode |= FAST_MODE) -- AZTEC: add new option "--azfull" (option_3 = ZINT_AZTEC_FULL) to only +- AZTEC: add new option "--azfull" (`option_3 = ZINT_AZTEC_FULL`) to only consider Full symbols (not Compact ones) on automatic sizing - GS1: new `GS1RAW_MODE` (CLI "--gs1raw") and GS1 Syntax Engine "Unbracketed AI element strings" (caret) options for specifying GS1 input (ticket #350, props Mario Verbruggen) +- DATAMATRIX: new options "--dmb256=" (`option_3 = DM_B256_START`) & "--dmc40=" + (`option_3 = DM_C40_START`) to allow forcing of initial encodation for given + no. (`option_1`) of initial characters, with 0 meaning all Bugs ---- @@ -45,7 +50,7 @@ Bugs - raster/vector: allow for separator height being > twice row height (buffer overflow for raster, zero/negative height rects for vector) (ticket #353, props Simon Resch) -- raster/vector: fix BARCODE_BIND_TOP trumping BARCODE_BOX +- raster/vector: fix `BARCODE_BIND_TOP` trumping `BARCODE_BOX` - raster/vector: EAN/UPC: fix calculation of image/vector height to allow for heights smaller than `textoffset` when have add-on (buffer overflow for raster, outside vector height for vector) diff --git a/backend/DEVELOPER b/backend/DEVELOPER deleted file mode 100644 index 9e66e741..00000000 --- a/backend/DEVELOPER +++ /dev/null @@ -1,158 +0,0 @@ -2026-03-18 - -Here is a guide to which bit of source code does what. - -library.c: - API entry points - -2of5.c: - Code 2 of 5 Standard (Matrix) - Code 2 of 5 Industrial - Code 2 of 5 IATA - Code 2 of 5 Data Logic - -2of5inter.c: - Code 2 of 5 Interleaved - -2of5inter_based.c: - ITF-14 - Deutsche Post Leitcode - Deutsche Post Identcode - -auspost.c: - Australia Post Standard Customer - Australia Post Reply Paid - Australia Post Routing - Australia Post Redirection - -aztec.c: - Aztec Code - Compact Aztec Code - Aztec Runes - -bc412.c: - IBM BC412 (SEMI T1-95) - -channel.c: - Channel Code - -codabar.c: - Codabar - -codablock.c: - Codablock F - -code11.c: - Code 11 - -code128.c: - Code 128 - Code 128 (Suppress Code Set C) - GS1-128 (UCC/EAN-128) - -code128_based.c: - NVE-18 - EAN-14 - DPD Code - Universal Postal Union S10 - -code16k.c: - Code 16k - -code.c: - Code 39 - LOGMARS - Extended Code 39 (Code 39+) - Code 93 - VIN - -code1.c: - Code One - -code49.c: - Code 49 - -composite.c: - CC-A Composite Symbology - CC-B Composite Symbology - CC-C Composite Symbology - -dotcode.c: - Dot Code - -dmatrix.c: - Data Matrix (ECC 200) - Royal Mail 2D Mailmark (CMDM) - -dxfilmedge.c: - DX Film Edge Barcode - -gridmtx.c: - Grid Matrix - -hanxin.c: - Han Xin Code - -imail.c: - USPS Intelligent Mail (OneCode) - -maxicode.c: - UPS MaxiCode - -medical.c: - Pharmacode One-Track - Pharmacode Two-Track - Code 32 (Italian Pharmacode) - Pharmazentral Nummer (PZN) - -pdf417.c: - PDF417 - Compact PDF417 - MicroPDF417 - -plessey.c: - UK Plessey Code (bidirectional) - MSI Plessey - -postal.c: - POSTNET - PLANET - Brazilian CEPNet - Facing Identification Mark (FIM) - Royal Mail 4-State Country Code (RM4SCC) - Dutch Post KIX Code - DAFT Code - Flattermarken - Korean Post Barcode - Japanese Postal Code - -qr.c: - QR Code - Micro QR Code - UPNQR - Rectangular Micro QR Code (rMQR) - -rss.c: - GS1 DataBar Omnidirectional (RSS-14) - GS1 DataBar Truncated - GS1 DataBar Stacked (RSS-14 Stacked) - GS1 DataBar Stacked Omnidirectional (DataBar-14 Stacked Omnidirectional) - (RSS-14 Stacked Omnidirectional) - GS1 DataBar Limited (RSS Limited) - GS1 DataBar Expanded (RSS Expanded) - GS1 DataBar Expanded Stacked (RSS Expanded Stacked) - -telepen.c: - Telepen ASCII - Telepen Numeric - -upcean.c: - UPC-A - UPC-E - EAN-2 add-on - EAN-5 add-on - EAN-8 - EAN-13 - SBN (verification) - ISBN (verification) - ISBN-13 (verification) diff --git a/backend/README b/backend/README new file mode 100644 index 00000000..31bf0ad4 --- /dev/null +++ b/backend/README @@ -0,0 +1,243 @@ +% backend/README 2026-03-30 +% vim: set ts=4 sw=4 et : + +Here is a guide to which bit of source code does what. + +library.c: + API entry points + +zint.h: + main include + +zintconfig.h: + version defines + + +Barcodes +-------- + +2of5.c: + Code 2 of 5 Standard (Matrix) + Code 2 of 5 Industrial + Code 2 of 5 IATA + Code 2 of 5 Data Logic + +2of5inter.c: + Code 2 of 5 Interleaved + +2of5inter_based.c: + ITF-14 + Deutsche Post Leitcode + Deutsche Post Identcode + +auspost.c: + Australia Post Standard Customer + Australia Post Reply Paid + Australia Post Routing + Australia Post Redirection + +aztec.c: + Aztec Code + Compact Aztec Code + Aztec Runes + +bc412.c: + IBM BC412 (SEMI T1-95) + +channel.c: + Channel Code + +codabar.c: + Codabar + +codablock.c: + Codablock F + +code11.c: + Code 11 + +code128.c: + Code 128 + Code 128 (Suppress Code Set C) + GS1-128 (UCC/EAN-128) + +code128_based.c: + NVE-18 + EAN-14 + DPD Code + Universal Postal Union S10 + +code16k.c: + Code 16k + +code.c: + Code 39 + LOGMARS + Extended Code 39 (Code 39+) + Code 93 + VIN + +code1.c: + Code One + +code49.c: + Code 49 + +composite.c: + CC-A Composite Symbology + CC-B Composite Symbology + CC-C Composite Symbology + +dotcode.c: + Dot Code + +dmatrix.c: + Data Matrix (ECC 200) + Royal Mail 2D Mailmark (CMDM) + +dxfilmedge.c: + DX Film Edge Barcode + +gridmtx.c: + Grid Matrix + +hanxin.c: + Han Xin Code + +imail.c: + USPS Intelligent Mail (OneCode) + +maxicode.c: + UPS MaxiCode + +medical.c: + Pharmacode One-Track + Pharmacode Two-Track + Code 32 (Italian Pharmacode) + Pharmazentral Nummer (PZN) + +pdf417.c: + PDF417 + Compact PDF417 + MicroPDF417 + +plessey.c: + UK Plessey Code (bidirectional) + MSI Plessey + +postal.c: + POSTNET + PLANET + Brazilian CEPNet + Facing Identification Mark (FIM) + Royal Mail 4-State Country Code (RM4SCC) + Dutch Post KIX Code + DAFT Code + Flattermarken + Korean Post Barcode + Japanese Postal Code + +qr.c: + QR Code + Micro QR Code + UPNQR + Rectangular Micro QR Code (rMQR) + +rss.c: + GS1 DataBar Omnidirectional (RSS-14) + GS1 DataBar Truncated + GS1 DataBar Stacked (RSS-14 Stacked) + GS1 DataBar Stacked Omnidirectional (DataBar-14 Stacked Omnidirectional) + (RSS-14 Stacked Omnidirectional) + GS1 DataBar Limited (RSS Limited) + GS1 DataBar Expanded (RSS Expanded) + GS1 DataBar Expanded Stacked (RSS Expanded Stacked) + +telepen.c: + Telepen ASCII + Telepen Numeric + +upcean.c: + UPC-A + UPC-E + EAN-2 add-on + EAN-5 add-on + EAN-8 + EAN-13 + SBN (verification) + ISBN (verification) + ISBN-13 (verification) + + +Common +------ + +common.c: + general routines used by all + +eci.c: + ECI, tables in includes + big5.h, eci_sb.h, gb18030.h, gb2312.h, gbk.h, ksx1001.h, sjis.h + +filemem.c: + Memory file (BARCODE_MEMORY_FILE) + +general_field.c: + GS1 general field compaction (GS1 DataBar and composites) + +gs1.c: + GS1 parsing & verifying, includes + gs1_lint.h, iso3166.h, iso4217.h + +large.c: + 128-bit arithmetic + +reedsol.c: + Reed-Solomon + + +Output +------ + +bmp.c: + Windows Bitmap format (BMP) + +emf.c: + Enhanced Metafile Format (EMF) + +gif.c: + Graphics Interchange Format (GIF) + +output.c: + general output routines + +pcx.c: + ZSoft Paintbrush Format (PCX) + +ps.c: + Encapsulated PostScript Format (EPS) + +raster.c: + raster output, sets up bitmap arrays, includes + raster_font.h, zfiletypes.h + +svg.c: + Scalable Vector Graphic Format (SVG), includes + fonts/normal_woff2.h, fonts/upcean_woff2.h + +tif.c: + Tagged Image File Format (TIF) + +vector.c: + vector output, sets up vector linked lists, includes + zfiletypes.h + + +Windows-only +------------ + +dllversion.c: + DllGetVersion() + +libzint.rc: + resource script diff --git a/backend/dmatrix.c b/backend/dmatrix.c index 8ef9e255..5c74e893 100644 --- a/backend/dmatrix.c +++ b/backend/dmatrix.c @@ -580,8 +580,6 @@ static int dm_edi_buffer_xfer(int process_buffer[8], int process_p, unsigned cha return process_p; } -#define DM_DMRE_SQUARE_MASK 0x65 /* 101 */ - /* Get index of symbol size in codewords array `dm_matrixbytes`, as specified or else smallest containing `minimum` codewords */ static int dm_get_symbolsize(struct zint_symbol *symbol, const int minimum) { @@ -595,10 +593,11 @@ static int dm_get_symbolsize(struct zint_symbol *symbol, const int minimum) { } for (i = minimum >= 62 ? 23 : 0; minimum > dm_matrixbytes[i]; i++); - if ((symbol->option_3 & DM_DMRE_SQUARE_MASK) == DM_DMRE) { + /* `DM_DMRE` trumps `DM_SQUARE` */ + if ((symbol->option_3 & DM_SQUARE_DMRE_MASK) == DM_DMRE) { return i; } - if ((symbol->option_3 & DM_DMRE_SQUARE_MASK) == DM_SQUARE) { + if ((symbol->option_3 & DM_SQUARE_DMRE_MASK) == DM_SQUARE) { /* Skip rectangular symbols in square only mode */ for (; dm_matrixH[i] != dm_matrixW[i]; i++); return i; @@ -775,9 +774,9 @@ static int dm_getEndMode(struct zint_symbol *symbol, const unsigned char *source #endif /* Return number of C40/TEXT codewords needed to encode characters in full batches of 3 (or less if EOD). - The number of characters encoded is returned in `len` */ + The number of characters encoded is returned in `p_len` */ static int dm_getNumberOfC40Words(const unsigned char *source, const int length, const int from, const int mode, - int *len) { + int *p_len) { int thirdsCount = 0; int i; @@ -797,11 +796,11 @@ static int dm_getNumberOfC40Words(const unsigned char *source, const int length, remainder = thirdsCount % 3; if (remainder == 0 || (remainder == 2 && i + 1 == length)) { - *len = i - from + 1; + *p_len = i - from + 1; return ((thirdsCount + 2) / 3) * 2; } } - *len = 0; + *p_len = 0; return 0; } @@ -1248,8 +1247,7 @@ static int dm_minimalenc(struct zint_symbol *symbol, const unsigned char source[ /* Encode using algorithm based on ISO/IEC 21471:2020 Annex J (was ISO/IEC 21471:2006 Annex P) */ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], const int length, int *p_sp, unsigned char target[], int *p_tp, int process_buffer[8], int *p_process_p, int *p_b256_start, - int *p_current_mode, const int gs1, const int debug_print) { - const int mailmark = symbol->symbology == BARCODE_MAILMARK_2D; + int *p_current_mode, const int gs1, const int b256_end, const int c40_end, const int debug_print) { int sp = *p_sp; int tp = *p_tp; int process_p = *p_process_p; @@ -1260,21 +1258,17 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c /* step (a) */ int next_mode = DM_ASCII; - if (mailmark) { /* First 45 characters C40 */ - assert(length >= 45); + assert(b256_end <= length && c40_end <= length && (b256_end == 0 || c40_end == 0)); + if (b256_end) { + /* First characters in Base 256 */ + next_mode = DM_BASE256; + tp = dm_switch_mode(next_mode, target, tp, p_b256_start, debug_print); + current_mode = next_mode; + } else if (c40_end) { + /* First characters in C40 */ next_mode = DM_C40; tp = dm_switch_mode(next_mode, target, tp, p_b256_start, debug_print); - while (sp < 45) { - assert(dm_isc40(source[sp])); - process_buffer[process_p++] = dm_c40_value[source[sp]]; - - if (process_p >= 3) { - process_p = dm_ctx_buffer_xfer(process_buffer, process_p, target, &tp, debug_print); - } - sp++; - } current_mode = next_mode; - not_first = 1; } while (sp < length) { @@ -1322,7 +1316,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c } else if (current_mode == DM_C40 || current_mode == DM_TEXT) { next_mode = current_mode; - if (process_p == 0 && not_first) { + if (process_p == 0 && not_first && (sp >= c40_end)) { /* `c40_end` only set if `current_mode` DM_C40 */ next_mode = dm_look_ahead_test(source, length, sp, current_mode, process_p, gs1, debug_print); } @@ -1456,7 +1450,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c next_mode = DM_ASCII; } else { next_mode = DM_BASE256; - if (not_first) { + if (not_first && sp >= b256_end) { next_mode = dm_look_ahead_test(source, length, sp, current_mode, tp - (*p_b256_start + 1), gs1, debug_print); } @@ -1473,12 +1467,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c tp = dm_switch_mode(next_mode, target, tp, p_b256_start, debug_print); not_first = 0; } else { - if (gs1 == 2 && source[sp] == '\x1D') { - target[tp++] = 29; /* GS */ - } else { - target[tp++] = source[sp]; - } - sp++; + target[tp++] = source[sp++]; not_first = 1; if (debug_print) printf("B%02X ", target[tp - 1]); } @@ -1501,8 +1490,9 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c /* Encodes data using ASCII, C40, Text, X12, EDIFACT or Base 256 modes as appropriate Supports encoding FNC1 in supporting systems */ -static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], const int length, const int eci, - const int last_seg, const int gs1, unsigned char target[], int *p_tp) { +static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], const int length, + const int eci, const int last_seg, const int gs1, const int b256_end, const int c40_end, + unsigned char target[], int *p_tp) { int sp = 0; int tp = *p_tp; int current_mode = DM_ASCII; @@ -1531,9 +1521,9 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c } /* If FAST_MODE or MAILMARK_2D, do Annex J-based encodation */ - if ((symbol->input_mode & FAST_MODE) || symbol->symbology == BARCODE_MAILMARK_2D) { + if ((symbol->input_mode & FAST_MODE) || b256_end || c40_end) { error_number = dm_isoenc(symbol, source, length, &sp, target, &tp, process_buffer, &process_p, - &b256_start, ¤t_mode, gs1, debug_print); + &b256_start, ¤t_mode, gs1, b256_end, c40_end, debug_print); } else { /* Do default minimal encodation */ error_number = dm_minimalenc(symbol, source, length, last_seg, &sp, target, &tp, process_buffer, &process_p, &b256_start, ¤t_mode, gs1, debug_print); @@ -1681,8 +1671,9 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c #ifdef ZINT_TEST /* Wrapper for direct testing */ INTERNAL int zint_test_dm_encode(struct zint_symbol *symbol, const unsigned char source[], const int length, - const int eci, const int last_seg, const int gs1, unsigned char target[], int *p_tp) { - return dm_encode(symbol, source, length, eci, last_seg, gs1, target, p_tp); + const int eci, const int last_seg, const int gs1, const int b256_end, const int c40_end, + unsigned char target[], int *p_tp) { + return dm_encode(symbol, source, length, eci, last_seg, gs1, b256_end, c40_end, target, p_tp); } #endif @@ -1694,9 +1685,13 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co int i; int tp = 0; int in_macro = 0; + int tot_length = 0, b256_have_fnc1 = 0; const struct zint_seg *last_seg = &segs[seg_count - 1]; /* gs1 flag values: 0: no GS1, 1: GS1 with FNC1 serparator, 2: GS separator */ const int gs1 = (symbol->input_mode & 0x07) == GS1_MODE ? 1 + !!(symbol->output_options & GS1_GS_SEPARATOR) : 0; + const int mailmark = symbol->symbology == BARCODE_MAILMARK_2D; + const int have_c40 = (symbol->option_3 & DM_C40_START) && symbol->option_1 >= 0; + const int have_b256 = (symbol->option_3 & DM_B256_START) && symbol->option_1 >= 0; /* Raw text dealt with by `ZBarcode_Encode_Segs()`, except for `eci` feedback. Note not updating `eci` for GS1 mode as not converted */ const int content_segs = !gs1 && (symbol->output_options & BARCODE_CONTENT_SEGS); @@ -1803,7 +1798,10 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co } for (i = 0; i < seg_count; i++) { + const unsigned char *source; + int length; int src_inc = 0, len_dec = 0; + int b256_end = 0, c40_end = 0; if (in_macro) { if (i == 0) { src_inc = len_dec = 7; /* Skip over macro characters at beginning */ @@ -1812,14 +1810,54 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co len_dec += 2; /* Remove RS + EOT from end */ } } - if ((error_number = dm_encode(symbol, segs[i].source + src_inc, segs[i].length - len_dec, segs[i].eci, - i + 1 == seg_count, gs1, target, &tp))) { + source = segs[i].source + src_inc; + length = segs[i].length - len_dec; + + if (mailmark) { + assert(seg_count == 1); + assert(length >= 45); + c40_end = 45; /* Min */ + /* Allow specifying greater than 45 */ + if (have_c40 && (symbol->option_1 == 0 || symbol->option_1 > 45)) { + c40_end = symbol->option_1 > 0 && symbol->option_1 < length ? symbol->option_1 : length; + } + /* `DM_C40_START` trumps `DM_B256_START` */ + } else if (have_c40) { + if (symbol->option_1 == 0) { + c40_end = length; + } else if (symbol->option_1 < tot_length) { + c40_end = 0; + } else { + c40_end = symbol->option_1 - tot_length < length ? symbol->option_1 - tot_length : length; + } + } else if (have_b256) { + if (b256_have_fnc1) { + b256_end = 0; + } else { + if (symbol->option_1 == 0) { + b256_end = length; + } else if (symbol->option_1 < tot_length) { + b256_end = 0; + } else { + b256_end = symbol->option_1 - tot_length < length ? symbol->option_1 - tot_length : length; + } + if (gs1 == 1) { + /* Stop at first FNC1 */ + const int b256_len = b256_end; + for (b256_end = 0; b256_end < b256_len && source[b256_end] != '\x1D'; b256_end++); + b256_have_fnc1 = b256_end != b256_len; + } + } + } + if ((error_number = dm_encode(symbol, source, length, segs[i].eci, i + 1 == seg_count, gs1, b256_end, c40_end, + target, &tp))) { assert(error_number >= ZINT_ERROR); return error_number; } if (content_segs && segs[i].eci) { z_ct_set_seg_eci(symbol, i, segs[i].eci); } + tot_length += length; } *p_binlen = tp; @@ -1973,7 +2011,7 @@ static int dm_ecc200(struct zint_symbol *symbol, struct zint_seg segs[], const i INTERNAL int zint_datamatrix(struct zint_symbol *symbol, struct zint_seg segs[], const int seg_count) { - if (symbol->option_1 <= 1) { + if (symbol->option_1 <= 1 || (symbol->option_3 & DM_B256_C40_START_MASK)) { /* ECC 200 */ return dm_ecc200(symbol, segs, seg_count); } diff --git a/backend/library.c b/backend/library.c index b10b9426..40c9cf6f 100644 --- a/backend/library.c +++ b/backend/library.c @@ -1569,7 +1569,14 @@ int ZBarcode_Encode_File(struct zint_symbol *symbol, const char *filename) { file = fopen(filename, "rb"); #endif if (!file) { - ZEXT z_errtxtf(0, symbol, 229, "Unable to read input file (%1$d: %2$s)", errno, strerror(errno)); + const int len = (int) strlen(filename); + if (len > 40) { + ZEXT z_errtxtf(0, symbol, 233, "Unable to read input file \"%1$.10s...%2$.30s\" (%3$d: %4$s)", + filename, filename + (len - 30), errno, strerror(errno)); + } else { + ZEXT z_errtxtf(0, symbol, 229, "Unable to read input file \"%1$s\" (%2$d: %3$s)", + filename, errno, strerror(errno)); + } return error_tag(ZINT_ERROR_INVALID_DATA, symbol, -1, NULL); } file_opened = 1; diff --git a/backend/tests/CMakeLists.txt b/backend/tests/CMakeLists.txt index 41ee9af1..221ecf61 100644 --- a/backend/tests/CMakeLists.txt +++ b/backend/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2025 Robin Stuart +# Copyright (C) 2019-2026 Robin Stuart # Adapted from qrencode/tests/CMakeLists.txt # Copyright (C) 2006-2017 Kentaro Fukuchi # vim: set ts=4 sw=4 et : diff --git a/backend/tests/fuzz/fuzz.h b/backend/tests/fuzz/fuzz.h index bf8eb66b..3b5fc7ee 100644 --- a/backend/tests/fuzz/fuzz.h +++ b/backend/tests/fuzz/fuzz.h @@ -235,7 +235,7 @@ static const struct settings_item settings[] = { { 68, BARCODE_AUSREDIRECT, GDSET_F, 0, -1, 0, -1, 0, -1, 1, 8 }, { 69, BARCODE_ISBNX, ISBNX_ADDON_SANE_F, 0, -1, 0, -1, 0, -1, 9, 19 }, { 70, BARCODE_RM4SCC, KRSET_F, 0, -1, 0, -1, 0, -1, 1, 50 }, - { 71, BARCODE_DATAMATRIX, 0, 0, -1, 0, 48, 128, 128, 1, 3550 }, + { 71, BARCODE_DATAMATRIX, 0, 0, 20, 0, 48, 0, 238, 1, 3550 }, { 72, BARCODE_EAN14, NEON_F, 0, -1, 0, -1, 0, -1, 1, 13 }, { 73, BARCODE_VIN, ARSENIC_F, 0, -1, 0, -1, 0, -1, 17, 17 }, { 74, BARCODE_CODABLOCKF, 0, -1, 44, -1, 67, 4, 4, 1, 2725 }, diff --git a/backend/tests/test_dmatrix.c b/backend/tests/test_dmatrix.c index b9ea10fc..7c5ebdcd 100644 --- a/backend/tests/test_dmatrix.c +++ b/backend/tests/test_dmatrix.c @@ -616,98 +616,107 @@ static void test_options(const testCtx *const p_ctx) { /* 9*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "__________", 0, 8, 32, "", 26, 1, "10 data" }, /* 10*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "__________", 0, 8, 32, "", 26, 1, "" }, /* 11*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE | DM_ISO_144, -1, { 0, 0, "" }, "__________", 0, 8, 32, "", 26, 1, "" }, - /* 12*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "__________", 0, 16, 16, "", 4, 1, "" }, - /* 13*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE | DM_ISO_144, -1, { 0, 0, "" }, "__________", 0, 16, 16, "", 4, 1, "" }, - /* 14*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________", 0, 12, 26, "", 27, 1, "15 data" }, - /* 15*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________", 0, 12, 26, "", 27, 1, "" }, - /* 16*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________", 0, 18, 18, "", 5, 1, "" }, - /* 17*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "__________________", 0, 18, 18, "", 5, 1, "18 data" }, - /* 18*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "___________________", 0, 20, 20, "", 6, 1, "19 data" }, - /* 19*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_____________________", 0, 20, 20, "", 6, 1, "21 data" }, - /* 20*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________", 0, 22, 22, "", 7, 1, "23 data" }, - /* 21*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________", 0, 8, 64, "", 32, 1, "" }, - /* 22*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________", 0, 22, 22, "", 7, 1, "" }, - /* 23*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________________", 0, 16, 36, "", 29, 1, "31 data" }, - /* 24*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________________", 0, 16, 36, "", 29, 0, "BWIPP DMRE requires dimensions" }, - /* 25*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________________", 0, 24, 24, "", 8, 1, "" }, - /* 26*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_____________________________________", 0, 26, 26, "", 9, 1, "37 data" }, - /* 27*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_____________________________________", 0, 8, 96, "", 34, 1, "" }, - /* 28*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_____________________________________", 0, 26, 26, "", 9, 1, "" }, - /* 29*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________________________", 0, 26, 26, "", 9, 1, "39 data" }, - /* 30*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________________________", 0, 12, 64, "", 37, 1, "" }, - /* 31*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________________________", 0, 26, 26, "", 9, 1, "" }, - /* 32*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "___________________________________________", 0, 26, 26, "", 9, 1, "43 data" }, - /* 33*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "___________________________________________", 0, 12, 64, "", 37, 1, "" }, - /* 34*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "___________________________________________", 0, 26, 26, "", 9, 1, "" }, - /* 35*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "____________________________________________", 0, 26, 26, "", 9, 1, "44 data" }, - /* 36*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_____________________________________________", 0, 16, 48, "", 30, 1, "45 data" }, - /* 37*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_____________________________________________", 0, 16, 48, "", 30, 0, "BWIPP DMRE requires dimensions" }, - /* 38*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_____________________________________________", 0, 32, 32, "", 10, 1, "" }, - /* 39*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_________________________________________________", 0, 16, 48, "", 30, 1, "49 data" }, - /* 40*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_________________________________________________", 0, 16, 48, "", 30, 0, "BWIPP DMRE requires dimensions" }, - /* 41*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_________________________________________________", 0, 32, 32, "", 10, 1, "" }, - /* 42*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "__________________________________________________", 0, 32, 32, "", 10, 1, "50 data" }, - /* 43*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "__________________________________________________", 0, 20, 44, "", 41, 1, "" }, - /* 44*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "__________________________________________________", 0, 32, 32, "", 10, 1, "" }, - /* 45*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU", 0, 32, 32, "", 10, 0, "51 data; BWIPP different encodation" }, - /* 46*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU", 0, 20, 44, "", 41, 0, "BWIPP DMRE requires dimensions" }, - /* 47*/ { BARCODE_DATAMATRIX, -1, -1, -1, 9999, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU", 0, 32, 32, "", 10, 0, "Ignored; BWIPP different encodation" }, - /* 48*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_____________________________________________________________", 0, 32, 32, "", 10, 1, "61 data" }, - /* 49*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "______________________________________________________________", 0, 32, 32, "", 10, 1, "62 data" }, - /* 50*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________________________________________________", 0, 36, 36, "", 11, 1, "63 data" }, - /* 51*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________________________________________________", 0, 8, 144, "", 36, 1, "" }, - /* 52*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________________________________________________", 0, 36, 36, "", 11, 1, "" }, - /* 53*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "________________________________________________________________", 0, 36, 36, "", 11, 1, "64 data" }, - /* 54*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "________________________________________________________________", 0, 12, 88, "", 38, 1, "" }, - /* 55*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, - /* 56*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_________________________________________________________________", 0, 36, 36, "", 11, 1, "65 data" }, - /* 57*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_________________________________________________________________", 0, 26, 40, "", 46, 1, "" }, - /* 58*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, - /* 59*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "______________________________________________________________________", 0, 36, 36, "", 11, 1, "70 data" }, - /* 60*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "______________________________________________________________________", 0, 26, 40, "", 46, 1, "" }, - /* 61*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "______________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, - /* 62*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________________________________________________________", 0, 36, 36, "", 11, 1, "71 data" }, - /* 63*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________________________________________________________", 0, 22, 48, "", 43, 1, "" }, - /* 64*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, - /* 65*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "________________________________________________________________________________", 0, 36, 36, "", 11, 1, "80 data" }, - /* 66*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "________________________________________________________________________________", 0, 24, 48, "", 44, 1, "" }, - /* 67*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "________________________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, - /* 68*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "____________________________________________________________________________________", 0, 36, 36, "", 11, 1, "84 data" }, - /* 69*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "____________________________________________________________________________________", 0, 20, 64, "", 42, 1, "" }, - /* 70*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "____________________________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, - /* 71*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "__________________________________________________________________________________________", 0, 40, 40, "", 12, 1, "90 data" }, - /* 72*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "__________________________________________________________________________________________", 0, 26, 48, "", 47, 1, "" }, - /* 73*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "__________________________________________________________________________________________", 0, 40, 40, "", 12, 1, "" }, - /* 74*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "___________________________________________________________________________________________", 0, 40, 40, "", 12, 1, "91 data" }, - /* 75*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "___________________________________________________________________________________________", 0, 24, 64, "", 45, 1, "" }, - /* 76*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "___________________________________________________________________________________________", 0, 40, 40, "", 12, 1, "" }, - /* 77*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "______________________________________________________________________________________________________________________", 0, 44, 44, "", 13, 1, "118 data" }, - /* 78*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "______________________________________________________________________________________________________________________", 0, 26, 64, "", 48, 1, "118 data" }, - /* 79*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "______________________________________________________________________________________________________________________", 0, 44, 44, "", 13, 1, "118 data" }, - /* 80*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, -1, -1, -1, { 0, 0, "" }, "[90]12", 0, 10, 10, "", 1, 1, "" }, - /* 81*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(90)12", 0, 10, 10, "", 1, 1, "" }, - /* 82*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, -1, -1, -1, { 0, 0, "" }, "[90](", 0, 10, 10, "", 1, 1, "" }, - /* 83*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(90)(", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 253: Malformed AI in input (brackets don't match)", 0, 1, "" }, - /* 84*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(90)\\(", 0, 10, 10, "", 1, 1, "" }, /* Escaped parens now work without ESCAPE_MODE */ - /* 85*/ { BARCODE_DATAMATRIX, GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(90)\\(", 0, 10, 10, "", 1, 1, "" }, - /* 86*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 1, 2, "" }, "1", 0, 12, 12, "", 2, 1, "" }, - /* 87*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 16, 16, "" }, "1", 0, 12, 12, "", 2, 1, "" }, - /* 88*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 1, 1, "" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 720: Structured Append count '1' out of range (2 to 16)", 0, 1, "" }, - /* 89*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 1, 17, "" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 720: Structured Append count '17' out of range (2 to 16)", 0, 1, "" }, - /* 90*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 16, "" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 721: Structured Append index '0' out of range (1 to count 16)", 0, 1, "" }, - /* 91*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 17, 16, "" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 721: Structured Append index '17' out of range (1 to count 16)", 0, 1, "" }, - /* 92*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "1001" }, "1", 0, 12, 12, "", 2, 1, "" }, - /* 93*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "A" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 723: Invalid Structured Append ID (digits only)", 0, 1, "" }, - /* 94*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "0" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 724: Structured Append ID1 '000' and ID2 '000' out of range (001 to 254) (ID \"000000\")", 0, 1, "" }, - /* 95*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "1" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 725: Structured Append ID1 '000' out of range (001 to 254) (ID \"000001\")", 0, 1, "" }, - /* 96*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "1000" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 726: Structured Append ID2 '000' out of range (001 to 254) (ID \"001000\")", 0, 1, "" }, - /* 97*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "001255" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 726: Structured Append ID2 '255' out of range (001 to 254) (ID \"001255\")", 0, 1, "" }, - /* 98*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "255001" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 725: Structured Append ID1 '255' out of range (001 to 254) (ID \"255001\")", 0, 1, "" }, - /* 99*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "255255" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 724: Structured Append ID1 '255' and ID2 '255' out of range (001 to 254) (ID \"255255\")", 0, 1, "" }, - /*100*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "1234567" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 722: Structured Append ID length 7 too long (6 digit maximum)", 0, 1, "" }, - /*101*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, READER_INIT, { 2, 3, "1001" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 727: Cannot have Structured Append and Reader Initialisation at the same time", 0, 1, "" }, - /*102*/ { BARCODE_DATAMATRIX, ESCAPE_MODE, -1, -1, -1, -1, { 2, 3, "1001" }, "[)>\\R05\\GA\\R\\E", 0, 12, 26, "", 27, 1, "Macro05/06 ignored if have Structured Append TODO: error/warning " }, - /*103*/ { BARCODE_HIBC_DM, -1, -1, -1, -1, -1, { 0, 0, "" }, "1234,67", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 203: Invalid character at position 5 in input (alphanumerics, space and \"-.$/+%\" only)", 0, 1, "" }, + /* 12*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE | DM_ISO_144 | DM_B256_START, -1, { 0, 0, "" }, "__________", 0, 8, 32, "", 26, 1, "" }, + /* 13*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE | DM_ISO_144 | DM_C40_START, -1, { 0, 0, "" }, "__________", 0, 8, 32, "", 26, 1, "" }, + /* 14*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "__________", 0, 16, 16, "", 4, 1, "" }, + /* 15*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE | DM_ISO_144 | DM_B256_START, -1, { 0, 0, "" }, "__________", 0, 16, 16, "", 4, 1, "" }, + /* 16*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE | DM_ISO_144 | DM_C40_START, -1, { 0, 0, "" }, "__________", 0, 16, 16, "", 4, 1, "" }, + /* 17*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________", 0, 12, 26, "", 27, 1, "15 data" }, + /* 18*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________", 0, 12, 26, "", 27, 1, "" }, + /* 19*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________", 0, 18, 18, "", 5, 1, "" }, + /* 20*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE | DM_SQUARE, -1, { 0, 0, "" }, "_______________", 0, 12, 26, "", 27, 1, "DM_DMRE trumps DM_SQUARE" }, + /* 21*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "__________________", 0, 18, 18, "", 5, 1, "18 data" }, + /* 22*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "___________________", 0, 20, 20, "", 6, 1, "19 data" }, + /* 23*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_____________________", 0, 20, 20, "", 6, 1, "21 data" }, + /* 24*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________", 0, 22, 22, "", 7, 1, "23 data" }, + /* 25*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________", 0, 8, 64, "", 32, 1, "" }, + /* 26*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________", 0, 22, 22, "", 7, 1, "" }, + /* 27*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________________", 0, 16, 36, "", 29, 1, "31 data" }, + /* 28*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________________", 0, 16, 36, "", 29, 0, "BWIPP DMRE requires dimensions" }, + /* 29*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________________", 0, 24, 24, "", 8, 1, "" }, + /* 30*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_____________________________________", 0, 26, 26, "", 9, 1, "37 data" }, + /* 31*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_____________________________________", 0, 8, 96, "", 34, 1, "" }, + /* 32*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_____________________________________", 0, 26, 26, "", 9, 1, "" }, + /* 33*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________________________", 0, 26, 26, "", 9, 1, "39 data" }, + /* 34*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________________________", 0, 12, 64, "", 37, 1, "" }, + /* 35*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________________________", 0, 26, 26, "", 9, 1, "" }, + /* 36*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "___________________________________________", 0, 26, 26, "", 9, 1, "43 data" }, + /* 37*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "___________________________________________", 0, 12, 64, "", 37, 1, "" }, + /* 38*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "___________________________________________", 0, 26, 26, "", 9, 1, "" }, + /* 39*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "____________________________________________", 0, 26, 26, "", 9, 1, "44 data" }, + /* 40*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_____________________________________________", 0, 16, 48, "", 30, 1, "45 data" }, + /* 41*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_____________________________________________", 0, 16, 48, "", 30, 0, "BWIPP DMRE requires dimensions" }, + /* 42*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_____________________________________________", 0, 32, 32, "", 10, 1, "" }, + /* 43*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_________________________________________________", 0, 16, 48, "", 30, 1, "49 data" }, + /* 44*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_________________________________________________", 0, 16, 48, "", 30, 0, "BWIPP DMRE requires dimensions" }, + /* 45*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_________________________________________________", 0, 32, 32, "", 10, 1, "" }, + /* 46*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "__________________________________________________", 0, 32, 32, "", 10, 1, "50 data" }, + /* 47*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "__________________________________________________", 0, 20, 44, "", 41, 1, "" }, + /* 48*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "__________________________________________________", 0, 32, 32, "", 10, 1, "" }, + /* 49*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU", 0, 32, 32, "", 10, 0, "51 data; BWIPP different encodation" }, + /* 50*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU", 0, 20, 44, "", 41, 0, "BWIPP DMRE requires dimensions" }, + /* 51*/ { BARCODE_DATAMATRIX, -1, -1, -1, 9999, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU", 0, 32, 32, "", 10, 0, "Ignored; BWIPP different encodation" }, + /* 52*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_____________________________________________________________", 0, 32, 32, "", 10, 1, "61 data" }, + /* 53*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "______________________________________________________________", 0, 32, 32, "", 10, 1, "62 data" }, + /* 54*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________________________________________________", 0, 36, 36, "", 11, 1, "63 data" }, + /* 55*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________________________________________________", 0, 8, 144, "", 36, 1, "" }, + /* 56*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________________________________________________", 0, 36, 36, "", 11, 1, "" }, + /* 57*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "________________________________________________________________", 0, 36, 36, "", 11, 1, "64 data" }, + /* 58*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "________________________________________________________________", 0, 12, 88, "", 38, 1, "" }, + /* 59*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, + /* 60*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_________________________________________________________________", 0, 36, 36, "", 11, 1, "65 data" }, + /* 61*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_________________________________________________________________", 0, 26, 40, "", 46, 1, "" }, + /* 62*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, + /* 63*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "______________________________________________________________________", 0, 36, 36, "", 11, 1, "70 data" }, + /* 64*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "______________________________________________________________________", 0, 26, 40, "", 46, 1, "" }, + /* 65*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "______________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, + /* 66*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "_______________________________________________________________________", 0, 36, 36, "", 11, 1, "71 data" }, + /* 67*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "_______________________________________________________________________", 0, 22, 48, "", 43, 1, "" }, + /* 68*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "_______________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, + /* 69*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "________________________________________________________________________________", 0, 36, 36, "", 11, 1, "80 data" }, + /* 70*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "________________________________________________________________________________", 0, 24, 48, "", 44, 1, "" }, + /* 71*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "________________________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, + /* 72*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "____________________________________________________________________________________", 0, 36, 36, "", 11, 1, "84 data" }, + /* 73*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "____________________________________________________________________________________", 0, 20, 64, "", 42, 1, "" }, + /* 74*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "____________________________________________________________________________________", 0, 36, 36, "", 11, 1, "" }, + /* 75*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "__________________________________________________________________________________________", 0, 40, 40, "", 12, 1, "90 data" }, + /* 76*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "__________________________________________________________________________________________", 0, 26, 48, "", 47, 1, "" }, + /* 77*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "__________________________________________________________________________________________", 0, 40, 40, "", 12, 1, "" }, + /* 78*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "___________________________________________________________________________________________", 0, 40, 40, "", 12, 1, "91 data" }, + /* 79*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "___________________________________________________________________________________________", 0, 24, 64, "", 45, 1, "" }, + /* 80*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "___________________________________________________________________________________________", 0, 40, 40, "", 12, 1, "" }, + /* 81*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 0, "" }, "______________________________________________________________________________________________________________________", 0, 44, 44, "", 13, 1, "118 data" }, + /* 82*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "______________________________________________________________________________________________________________________", 0, 26, 64, "", 48, 1, "118 data" }, + /* 83*/ { BARCODE_DATAMATRIX, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "______________________________________________________________________________________________________________________", 0, 44, 44, "", 13, 1, "118 data" }, + /* 84*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, -1, -1, -1, { 0, 0, "" }, "[90]12", 0, 10, 10, "", 1, 1, "" }, + /* 85*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(90)12", 0, 10, 10, "", 1, 1, "" }, + /* 86*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, -1, -1, -1, { 0, 0, "" }, "[90](", 0, 10, 10, "", 1, 1, "" }, + /* 87*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(90)(", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 253: Malformed AI in input (brackets don't match)", 0, 1, "" }, + /* 88*/ { BARCODE_DATAMATRIX, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(90)\\(", 0, 10, 10, "", 1, 1, "" }, /* Escaped parens now work without ESCAPE_MODE */ + /* 89*/ { BARCODE_DATAMATRIX, GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(90)\\(", 0, 10, 10, "", 1, 1, "" }, + /* 90*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 1, 2, "" }, "1", 0, 12, 12, "", 2, 1, "" }, + /* 91*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 16, 16, "" }, "1", 0, 12, 12, "", 2, 1, "" }, + /* 92*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 1, 1, "" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 720: Structured Append count '1' out of range (2 to 16)", 0, 1, "" }, + /* 93*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 1, 17, "" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 720: Structured Append count '17' out of range (2 to 16)", 0, 1, "" }, + /* 94*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 0, 16, "" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 721: Structured Append index '0' out of range (1 to count 16)", 0, 1, "" }, + /* 95*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 17, 16, "" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 721: Structured Append index '17' out of range (1 to count 16)", 0, 1, "" }, + /* 96*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "1001" }, "1", 0, 12, 12, "", 2, 1, "" }, + /* 97*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "A" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 723: Invalid Structured Append ID (digits only)", 0, 1, "" }, + /* 98*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "0" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 724: Structured Append ID1 '000' and ID2 '000' out of range (001 to 254) (ID \"000000\")", 0, 1, "" }, + /* 99*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "1" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 725: Structured Append ID1 '000' out of range (001 to 254) (ID \"000001\")", 0, 1, "" }, + /*100*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "1000" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 726: Structured Append ID2 '000' out of range (001 to 254) (ID \"001000\")", 0, 1, "" }, + /*101*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "001255" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 726: Structured Append ID2 '255' out of range (001 to 254) (ID \"001255\")", 0, 1, "" }, + /*102*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "255001" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 725: Structured Append ID1 '255' out of range (001 to 254) (ID \"255001\")", 0, 1, "" }, + /*103*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "255255" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 724: Structured Append ID1 '255' and ID2 '255' out of range (001 to 254) (ID \"255255\")", 0, 1, "" }, + /*104*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, -1, { 2, 3, "1234567" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 722: Structured Append ID length 7 too long (6 digit maximum)", 0, 1, "" }, + /*105*/ { BARCODE_DATAMATRIX, -1, -1, -1, -1, READER_INIT, { 2, 3, "1001" }, "1", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 727: Cannot have Structured Append and Reader Initialisation at the same time", 0, 1, "" }, + /*106*/ { BARCODE_DATAMATRIX, ESCAPE_MODE, -1, -1, -1, -1, { 2, 3, "1001" }, "[)>\\R05\\GA\\R\\E", 0, 12, 26, "", 27, 1, "Macro05/06 ignored if have Structured Append TODO: error/warning " }, + /*107*/ { BARCODE_HIBC_DM, -1, -1, -1, -1, -1, { 0, 0, "" }, "1234,67", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 203: Invalid character at position 5 in input (alphanumerics, space and \"-.$/+%\" only)", 0, 1, "" }, + /*108*/ { BARCODE_HIBC_DM, -1, -1, -1, -1, -1, { 0, 0, "" }, "H123ABC01234567890", 0, 12, 26, "", 27, 1, "" }, + /*109*/ { BARCODE_HIBC_DM, -1, -1, -1, DM_DMRE, -1, { 0, 0, "" }, "H123ABC01234567890", 0, 12, 26, "", 27, 1, "" }, + /*110*/ { BARCODE_HIBC_DM, -1, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "H123ABC01234567890", 0, 18, 18, "", 5, 1, "" }, + /*111*/ { BARCODE_HIBC_DM, -1, 0, -1, DM_B256_START, -1, { 0, 0, "" }, "H123ABC01234567890", 0, 20, 20, "", 6, 0, "BWIPP: same as above" }, + /*112*/ { BARCODE_HIBC_DM, -1, 0, -1, DM_C40_START, -1, { 0, 0, "" }, "H123ABC01234567890", 0, 12, 26, "", 27, 1, "" }, }; const int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -747,7 +756,8 @@ static void test_options(const testCtx *const p_ctx) { i, symbol->rows, data[i].expected_rows, symbol->width, symbol->errtxt); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, symbol->errtxt); - if (do_bwipp && testUtilCanBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, debug)) { + if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, + debug)) { if (!data[i].bwipp_cmp) { if (debug & ZINT_DEBUG_TEST_PRINT) { printf("i:%d %s not BWIPP compatible (%s)\n", @@ -757,8 +767,8 @@ static void test_options(const testCtx *const p_ctx) { char modules_dump[144 * 144 + 1]; assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); - ret = testUtilBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, - cmp_buf, sizeof(cmp_buf), NULL); + ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, data[i].data, + length, NULL, cmp_buf, sizeof(cmp_buf), NULL); assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); @@ -926,7 +936,8 @@ static void test_reader_init(const testCtx *const p_ctx) { #define ZINT_TEST_ENCODING #ifdef ZINT_TEST_ENCODING INTERNAL int zint_test_dm_encode(struct zint_symbol *symbol, const unsigned char source[], const int length, - const int eci, const int last_seg, const int gs1, unsigned char target[], int *p_tp); + const int eci, const int last_seg, const int gs1, const int b256_end, const int c40_end, + unsigned char target[], int *p_tp); #endif static void test_input(const testCtx *const p_ctx) { @@ -935,6 +946,7 @@ static void test_input(const testCtx *const p_ctx) { struct item { int input_mode; int eci; + int option_1; int option_2; int option_3; int output_options; @@ -953,253 +965,290 @@ static void test_input(const testCtx *const p_ctx) { int expected_diff; /* Difference between default minimal encodation and ISO encodation (FAST_MODE) */ }; static const struct item data[] = { - /* 0*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "#208", 0 }, - /* 1*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "#208", 0 }, - /* 2*/ { UNICODE_MODE | FAST_MODE, 0, 5, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "", 0 }, - /* 3*/ { UNICODE_MODE, 0, 5, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "", 0 }, - /* 4*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY8", 0, 0, 18, 18, 0, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C E6 07 B7 82 5F D4 3D 08 EB 60 DA B1 82 72 50 A9 5B", "BWIPP different encodation (earlier change to C40)", 0 }, - /* 5*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY8", 0, 0, 18, 18, 0, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C 2B 42 E6 82 5F D4 3D 0A 34 D7 21 4E D2 8D C5 9C D7", "AAAAAAAAAAAAAAAAAAAAAACCCCCC; BWIPP different encodation", 0 }, - /* 6*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "", 0 }, - /* 7*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 0, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C F0 A8 11 D5 05 46 5F D2 56 81 76 3C D6 92 14 9F E2", "AAAAAAAAAAAAAAAAAAAAEEEEEEEAAA; BWIPP same as FAST_MODE", 0 }, - /* 8*/ { UNICODE_MODE | FAST_MODE, 0, 5, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", ZINT_ERROR_TOO_LONG, -1, 0, 0, 0, 1, "Error 522: Input too long for Version 5, requires 19 codewords (maximum 18)", "", 0 }, - /* 9*/ { UNICODE_MODE, 0, 5, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", ZINT_ERROR_TOO_LONG, -1, 0, 0, 0, 1, "Error 522: Input too long for Version 5, requires 19 codewords (maximum 18)", "", 0 }, - /* 10*/ { UNICODE_MODE | FAST_MODE, 0, 6, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "", 0 }, - /* 11*/ { UNICODE_MODE, 0, 6, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 0, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C F0 A8 11 D5 05 46 5F D2 56 81 76 3C D6 92 14 9F E2", "AAAAAAAAAAAAAAAAAAAAEEEEEEEAAA; BWIPP same as FAST_MODE", 0 }, - /* 12*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 1, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C E6 07 B7 82 5F D4 3D 1E 5F FE 81 1E 1B B0 FE E7 54", "", 0 }, - /* 13*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 0, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C F0 A8 11 D5 05 46 78 C1 50 5F 81 3B 50 EE DB AE A4", "AAAAAAAAAAAAAAAAAAAAEEEEEEEEEEE; BWIPP same as FAST_MODE", 0 }, - /* 14*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>", 0, 0, 14, 14, 1, 1, "EE 0C A9 0C A9 FE 3F 81 42 B2 11 A8 F9 0A EC C1 1E 41", "X12 symbols_left 3, process_p 1", 0 }, - /* 15*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>", 0, 0, 14, 14, 0, 1, "3F 2B 0E 3F 2B 0E 3F 81 37 3F 04 F9 CC 02 2D 70 E0 FF", "AAAAAAA; BWIPP same as FAST_MODE", 0 }, - /* 16*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>*", 0, 0, 14, 14, 1, 1, "EE 0C A9 0C A9 FE 3F 2B 3F 05 D2 10 1B 9A 55 2F 68 C5", "X12 symbols_left 3, process_p 2", 0 }, - /* 17*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>*", 0, 0, 14, 14, 0, 1, "3F 2B 0E 3F 2B 0E 3F 2B 4A 88 C7 41 2E 92 94 9E 96 7B", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /* 18*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>*\015", 0, 0, 14, 14, 1, 1, "EE 0C A9 0C A9 0C A9 FE 1F 30 3F EE 45 C1 1C D7 5F 7E", "X12 symbols_left 1, process_p 0", 0 }, - /* 19*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>*\015", 0, 0, 14, 14, 1, 1, "EE 0C A9 0C A9 0C A9 FE 1F 30 3F EE 45 C1 1C D7 5F 7E", "X12 symbols_left 1, process_p 0", 0 }, - /* 20*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEF", 0, 0, 12, 12, 1, 1, "E6 59 E9 6D 24 3D 15 EF AA 21 F9 59", "C40 symbols_left 0, process_p 0", 0 }, - /* 21*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEF", 0, 0, 12, 12, 1, 1, "E6 59 E9 6D 24 3D 15 EF AA 21 F9 59", "CCCCCC", 0 }, - /* 22*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 FE 48 81 8C 7E 09 5E 10 64 BC 5F 4C 91", "C40 symbols_left 3, process_p 1", 0 }, - /* 23*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 DF 81 AB 07 40 5C C8 C2 F5 59 B3 10", "EEEEEEE; BWIPP same as FAST_MODE", 0 }, - /* 24*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 FE 48 49 2E 31 00 73 3B 8F 4B 55 93 19", "C40 symbols_left 3, process_p 2", 0 }, - /* 25*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 81 D1 4D 5F 96 32 9F B2 A0 C7 8D", "EEEEEEEE; BWIPP same as FAST_MODE", 1 }, - /* 26*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 80 5F FE 01 DE 20 9F AA C2 FF 8F 08 97", "C40 symbols_left 1, process_p 0", 0 }, - /* 27*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 4A 34 B0 7A 27 3C 38 82 4C 30 21", "EEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 28*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH12", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 80 4E 33 B3 46 F3 D5 F5 C0 4F 12 F2 ED", "C40 symbols_left 1, process_p 1", 0 }, - /* 29*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH12", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 8E A7 6D C3 20 83 CE 1E A9 4F 39", "EEEEEEEEAA; BWIPP same as FAST_MODE", 0 }, - /* 30*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHé", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 4A BB DA FE E1 A4 57 73 2B 4E 06 10 FB EE 83", "C40 symbols_left 1, process_p 0", 0 }, - /* 31*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHé", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 1F EB 6A 80 70 2B 11 BD 91 6B 5F C9 AC 43", "AEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 32*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJ", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 80 5F 4B AD 47 09 12 FF 2F 95 CA 5B 4A", "C40 symbols_left 1, process_p 1", 0 }, - /* 33*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJ", 0, 0, 14, 14, 0, 1, "42 E6 60 52 73 8D 86 C8 67 A3 F9 29 73 9C 15 90 7E 16", "ACCCCCCCCC; BWIPP same as FAST_MODE", 0 }, - /* 34*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJK", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C D8 69 88 60 B9 33 B9 31 E6 BF CA", "C40 symbols_left 3, process_p 2", 0 }, - /* 35*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJK", 0, 0, 8, 32, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF B6 77 90 C2 39 AA 9B 61 7E F1 E3", "EEEEEEEEEEE; BWIPP same as FAST_MODE", 0 }, - /* 36*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEF\001G", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 00 3D FE 5D 5A F5 0A 8A 4E 1D 63 07 B9", "C40 symbols_left 1, process_p 0", 0 }, - /* 37*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEF\001G", 0, 0, 14, 14, 0, 1, "42 43 F0 0C 41 46 02 48 57 A1 80 C5 8F EC 72 33 0A 26", "AAEEEEAA; BWIPP same as FAST_MODE", 0 }, - /* 38*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG\001", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 02 FE 14 A3 27 63 01 2F B1 94 FE FA", "C40 symbols_left 1, process_p 0", 0 }, - /* 39*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG\001", 0, 0, 14, 14, 0, 1, "42 43 44 F0 10 51 87 02 50 0C 22 23 7E A3 2B DC 8A 62", "AAAEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 40*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG\001H", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 02 49 C2 E6 DD 06 89 51 BA 8E 9D 1F", "C40 symbols_left 1, process_p 1", 0 }, - /* 41*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG\001H", 0, 0, 14, 14, 0, 1, "42 E6 60 52 73 8D 00 3E 66 13 C0 89 73 A8 53 20 F7 6F", "ACCCCCCCC; BWIPP same as FAST_MODE", 0 }, - /* 42*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 81 BD 6D F3 94 FF 82 A6 BF BB F1 4F", "C40 symbols_left 1, process_p 1, backtracks", 0 }, - /* 43*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 02 37 8F B4 A6 27 9E FA CF 1E 02", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, - /* 44*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH\001", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 81 FB 93 AE 8B 1C 90 DF FE EB C5 A0 2A 6A 4F", "C40 symbols_left 1, process_p 1, backtracks", 0 }, - /* 45*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH\001", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 02 37 8F B4 A6 27 9E FA CF 1E 02", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, - /* 46*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001I", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 4A E1 0D DD BC 56 E4 66 52 E6 AE 02", "C40 symbols_left 3, process_p 2, backtracks", 0 }, - /* 47*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001I", 0, 0, 8, 32, 0, 1, "42 43 44 45 F0 14 61 C8 02 4A 5F 21 C6 61 E1 7B 1C 13 FF 0D BA", "AAAAEEEEAA; BWIPP same as FAST_MODE", 0 }, - /* 48*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH\001I", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 81 93 51 DF C0 0C D3 F9 72 13 17 52 5B 7E", "C40 symbols_left 5, process_p 2, backtracks", 0 }, - /* 49*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH\001I", 0, 0, 16, 16, 0, 1, "42 F0 08 31 05 18 72 1F 02 4A 81 93 FD 86 6C AF 6E C6 7C 99 74 21 C4 EF", "AEEEEEEEAA; BWIPP same as FAST_MODE", 0 }, - /* 50*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI\001", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 02 81 47 6C 3E 49 D3 FA 46 47 53 6E E5", "Switches to ASC for last char", 0 }, - /* 51*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI\001", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 09 02 81 FA 72 8B 50 63 F2 BD D9 2E 1D CD", "AEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 52*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHI\001", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 02 81 FB 93 33 E3 4F F7 2D 08 8A BF 64 C3 B0 26", "Switches to ASC for last char", 0 }, - /* 53*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHI\001", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 02 81 FB 93 33 E3 4F F7 2D 08 8A BF 64 C3 B0 26", "CCCCCCCCCA", 0 }, - /* 54*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001I\001", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 02 81 BD 5D C0 B9 09 25 87 3A 09 23 9D C0", "C40 symbols_left 1, process_p 1, backtracks 2", 0 }, - /* 55*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001I\001", 0, 0, 8, 32, 0, 1, "42 E6 60 52 73 8D 83 42 89 82 5F 2E 1D 6C 18 BB 25 C3 BF 7F E1", "ACCCCCCCCCC; BWIPP same as FAST_MODE", 1 }, - /* 56*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEF+G", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 07 E5 FE 6B 35 71 7F 3D 57 59 46 F7 B9", "C40 symbols_left 1, process_p 0", 0 }, - /* 57*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEF+G", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 6A C7 81 28 87 C6 C4 D6 50 53 DE 8D 80", "EEEEEEEE; BWIPP same as FAST_MODE", 1 }, - /* 58*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG+", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 33 FE 33 F5 97 60 73 48 13 2E E5 74", "C40 symbols_left 1, process_p 0", 0 }, - /* 59*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG+", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 EB 81 E8 04 8F 69 BD F5 01 28 03 0A", "EEEEEEEE; BWIPP same as FAST_MODE", 1 }, - /* 60*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG+H", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 33 49 E5 B0 6D 05 FB 36 18 34 86 91", "C40 symbols_left 1, process_p 1", 0 }, - /* 61*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFG+H", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 EB 49 4A 4B 86 44 96 1E F6 22 DC 82", "EEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 62*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH+", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 02 BD 40 CF 3B 06 C2 DF 36 E0 48", "C40 symbols_left 1, process_p 1, backtracks", 0 }, - /* 63*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH+", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 2C 1F DD 3B 4F 62 48 0E 16 F9 5D", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, - /* 64*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH+", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 FB 93 F6 78 B5 69 0B 83 C6 32 62 1A D2 FF", "C40 symbols_left 1, process_p 1, backtracks", 0 }, - /* 65*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH+", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 2C 1F DD 3B 4F 62 48 0E 16 F9 5D", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, - /* 66*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH+I", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 5E DD 6E E7 92 60 02 32 6B BF 05", "C40 symbols_left 3, process_p 2, backtracks", 0 }, - /* 67*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH+I", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 2B 4A 81 E2 22 C5 B6 9C AB 0E F1 63 E5 EE", "AEEEEEEEEA; BWIPP same as FAST_MODE", 1 }, - /* 68*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH+I", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 81 93 09 2C 69 F5 07 84 5F E4 D5 62 E3 CE", "C40 symbols_left 5, process_p 2, backtracks", 0 }, - /* 69*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH+I", 0, 0, 16, 16, 0, 1, "42 43 F0 0C 41 46 1C 8A C9 7C 81 93 A8 91 6E F7 89 AB E8 A5 8E CA F0 34", "AAEEEEEEEE; BWIPP same as FAST_MODE", 0 }, - /* 70*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI+", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 F8 BC 8D 12 17 7E 22 27 DE 7F E2", "C40 symbols_left 3, process_p 2, backtracks", 0 }, - /* 71*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI+", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 09 2C 81 45 A2 38 0B A7 76 D9 B9 A3 0C CA", "AEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 72*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHI+", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 FB 93 6B 10 E6 0E F9 75 A7 48 A6 F3 08 96", "Switches to ASC for last char", 0 }, - /* 73*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHI+", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 FB 93 6B 10 E6 0E F9 75 A7 48 A6 F3 08 96", "CCCCCCCCCA", 0 }, - /* 74*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFjG", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 0E 25 FE DA 14 D7 15 47 69 9D 4A 54 6D", "C40 symbols_left 1, process_p 0", 0 }, - /* 75*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFjG", 0, 0, 14, 14, 0, 1, "42 43 F0 0C 41 46 6B 48 77 B6 92 A1 DC 92 42 54 39 84", "AAEEEEAA; BWIPP same as FAST_MODE", 0 }, - /* 76*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGj", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 5B FE B5 F3 24 0A 99 26 D6 CC A8 40", "C40 symbols_left 1, process_p 0", 0 }, - /* 77*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGj", 0, 0, 14, 14, 0, 1, "42 43 44 F0 10 51 87 6B 0D 41 FF FD 91 82 0B 8F CB AA", "AAAEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 78*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGjH", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 5B 49 63 B6 DE 6F 11 58 DD D6 CB A5", "C40 symbols_left 1, process_p 1", 0 }, - /* 79*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGjH", 0, 0, 14, 14, 0, 1, "42 E6 60 52 73 8D 0E 26 0E F4 AD 89 C6 72 8A 26 34 65", "ACCCCCCCC; BWIPP same as FAST_MODE", 0 }, - /* 80*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHj", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 ED 78 CB 9F 52 EE 52 88 91 67 96", "C40 symbols_left 1, process_p 1, backtracks", 0 }, - /* 81*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHj", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 6B 6A C2 69 78 C8 BF DA 9C 5F CA", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, - /* 82*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHj", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 FB 93 BF 72 03 35 09 37 98 FF 39 A7 E3 6D", "C40 symbols_left 1, process_p 1, backtracks", 0 }, - /* 83*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHj", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 6B 6A C2 69 78 C8 BF DA 9C 5F CA", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, - /* 84*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHjI", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A B1 18 E5 B7 FB 88 92 65 CC 38 DB", "C40 symbols_left 3, process_p 2, backtracks", 0 }, - /* 85*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHjI", 0, 0, 8, 32, 0, 1, "42 43 44 45 F0 14 61 C8 6B 4A 0F 34 FE 6A 4C 17 E8 24 D5 9B 63", "AAAAEEEEAA; BWIPP same as FAST_MODE", 0 }, - /* 86*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHjI", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A 81 93 40 26 DF A9 05 30 01 29 8E DF D2 5C", "C40 symbols_left 5, process_p 2, backtracks", 0 }, - /* 87*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHjI", 0, 0, 16, 16, 0, 1, "42 F0 08 31 05 18 72 1F 6B 4A 81 93 EC 7F 73 0A B8 0F 0F A3 ED AC 4D CD", "AEEEEEEEAA; BWIPP same as FAST_MODE", 0 }, - /* 88*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIj", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 6B 81 17 79 06 42 7E 96 B2 70 79 F8 3C", "Switches to ASC for last char", 0 }, - /* 89*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIj", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 09 6B 81 AA 67 B3 5B CE 9E 49 EE 04 8B 14", "AEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 90*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJÊ", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 4B EB 4B 81 DD D9 F9 C9 C5 38 F3 4B DB 80 92 A7", "Switches to ASC for last 2 chars", 0 }, - /* 91*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJÊ", 0, 0, 8, 32, 0, 1, "42 E6 60 52 73 8D 86 C8 0B 08 72 65 72 59 41 70 1B CE 76 D7 1F", "ACCCCCCCCCC; BWIPP same as FAST_MODE", 0 }, - /* 92*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKÊ", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C EB 4B 15 17 46 06 70 F3 15 74 45 26 72 2D", "C40 symbols_left 3, process_p 2, backtracks", 0 }, - /* 93*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKÊ", 0, 0, 16, 16, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF EB 4B A1 42 E9 2A A8 3B 79 8B E9 40 E9 58", "EEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 94*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKª", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F 93 82 BB B2 FE 11 5C 60 32 A6 DE FC 7B 30 F1 03 56", "C40 symbols_left 1, process_p 0", 0 }, - /* 95*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKª", 0, 0, 16, 16, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF EB 2B 02 D1 85 74 F7 92 3F 2E 1F 07 A3 BE", "EEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 96*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKê", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F 93 82 BB DB FE 78 43 69 3C C2 FE F5 2E 1B 4F B6 04", "C40 symbols_left 1, process_p 0", 0 }, - /* 97*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKê", 0, 0, 16, 16, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF EB 6B C0 33 CD FB 9D 5C A0 E8 BB 7D 34 E1", "EEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /* 98*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 1, 1, "E8 8C E6 59 E9 6D 24 80 4A A9 8D FE 42 43 64 81 83 B4 8F 6B 95 F6 CE A6 3C 5C 77 86 08 50", "C40 symbols_left 3, process_p 1, backtracks", 0 }, - /* 99*/ { GS1_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 0, 1, "E8 8C 42 F0 08 31 05 18 72 1F E8 8C 42 43 64 81 12 DE 1C 0E B2 93 B3 C5 3C 58 A8 4A 83 4C", "AAAEEEEEEEAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*100*/ { GS1_MODE | FAST_MODE, 0, -1, -1, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 1, 1, "E8 8C E6 59 E9 6D 24 80 49 B6 0D FE 42 43 64 81 79 E4 20 33 76 5C C7 23 E6 C5 FA 4C FF 88", "C40 symbols_left 3, process_p 1, backtracks", 0 }, - /*101*/ { GS1_MODE, 0, -1, -1, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 0, 1, "E8 8C 42 F0 08 31 05 18 72 1F 1E 8C 42 43 64 81 4E 3D 4C 86 78 D4 97 78 85 01 48 D5 B9 29", "AAAEEEEEEEAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*102*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdef", 0, 0, 12, 12, 1, 1, "EF 59 E9 6D 24 E2 CC D9 B4 55 E2 6A", "TEX symbols_left 0, process_p 0", 0 }, - /*103*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdef", 0, 0, 12, 12, 1, 1, "EF 59 E9 6D 24 E2 CC D9 B4 55 E2 6A", "TTTTTT", 0 }, - /*104*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefg", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 FE 68 81 A9 65 CD 3A A2 E9 E0 B7 E1 E5", "TEX symbols_left 3, process_p 1", 0 }, - /*105*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefg", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 68 81 4A 9E 59 19 83 14 93 AD 5E 19", "AAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*106*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgh", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 FE 68 69 68 36 28 3C 85 5A E9 D4 49 9A", "TEX symbols_left 3, process_p 2", 0 }, - /*107*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgh", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 68 69 8B CD BC 1F A4 A7 9A CE F6 66", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*108*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghi", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 80 5F FE DA BF FA 16 71 15 22 4D E3 F3", "TEX symbols_left 1, process_p 0", 0 }, - /*109*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghi", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 80 5F FE DA BF FA 16 71 15 22 4D E3 F3", "TTTTTTTTT", 0 }, - /*110*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdef\001g", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 00 3D FE 86 3B 2F 83 51 99 C0 A1 EC DD", "TEX symbols_left 1, process_p 0", 0 }, - /*111*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdef\001g", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 02 68 51 87 9F 1D E9 36 3E B2 5F 4F", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*112*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefg\001", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 7D 02 FE CF C2 FD EA DA F8 6C 56 15 9E", "TEX symbols_left 1, process_p 0", 0 }, - /*113*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefg\001", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 68 02 AC 5C B2 29 96 15 DB C2 87 96", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*114*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefg\001h", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 7D 02 69 7A 9B EB A4 5E DE 99 25 01 8C", "TEX symbols_left 1, process_p 1", 0 }, - /*115*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefg\001h", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 00 3E DC 69 2C DB 8D 1B C4 DF 8C 9A", "ATTTTTTTT; BWIPP same as FAST_MODE", 0 }, - /*116*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 81 EB 84 25 32 6E 1B 5A FB 1D 25 4A", "TEX symbols_left 1, process_p 1, backtracks", 0 }, - /*117*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 83 42 A7 27 45 DE 64 B7 93 23 AF 04", "ATTTTTTTT; BWIPP same as FAST_MODE", 1 }, - /*118*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefgh\001", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 81 FB 93 93 FD 1E 3B BA 1D 16 4D 59 41 EC B9", "TEX symbols_left 1, process_p 1, backtracks", 0 }, - /*119*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefgh\001", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 83 42 A7 27 45 DE 64 B7 93 23 AF 04", "ATTTTTTTT; BWIPP same as FAST_MODE", 1 }, - /*120*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001i", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 31 35 48 9B 93 6E 15 BB 02 9D F4", "TEX symbols_left 3, process_p 2, backtracks", 0 }, - /*121*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001i", 0, 0, 8, 32, 0, 1, "62 63 64 65 66 67 68 69 02 6A D2 78 3E D1 EC CE 72 33 20 0E F2", "AAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*122*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefgh\001i", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 81 93 DE D7 EC 9B 7D 72 9C 68 B8 6E CF 31", "TEX symbols_left 3, process_p 2, backtracks", 0 }, - /*123*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefgh\001i", 0, 0, 16, 16, 0, 1, "62 63 64 65 66 67 68 69 02 6A 81 93 45 9D 38 FC 6B CA 1C 9B DF 3F C8 30", "AAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*124*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghi\001", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 80 5F FE 02 81 4D AB 30 86 CD D1 9D F3 15 F5 B1", "Switches to ASC for last char", 0 }, - /*125*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghi\001", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 80 5F FE 02 81 4D AB 30 86 CD D1 9D F3 15 F5 B1", "TTTTTTTTTA", 0 }, - /*126*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001i\001", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 02 81 32 55 EC 2E A7 AE 69 41 A6 1F 09 8F", "TEX symbols_left 1, process_p 1, backtracks 2", 0 }, - /*127*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001i\001", 0, 0, 8, 32, 0, 1, "62 EF 60 52 73 8D 83 42 89 82 80 A6 CC 72 8E 8C C5 75 D3 0D C2", "ATTTTTTTTTT; BWIPP same as FAST_MODE", 1 }, - /*128*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefJg", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 0E 25 FE 01 75 0D 9C 9C BE 40 88 BF 09", "TEX symbols_left 1, process_p 0", 0 }, - /*129*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefJg", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 4B 68 8F EA 93 94 D3 12 8F FF 2A FD", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*130*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgJ", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 7D 5B FE 6E 92 FE 83 42 F1 0B 0E 43 24", "TEX symbols_left 1, process_p 0", 0 }, - /*131*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgJ", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 68 4B 92 0D 83 DC 75 6C 05 F8 B1 A9", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*132*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgJh", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 7D 5B 69 DB CB E8 CD C6 D7 FE 7D 57 36", "TEX symbols_left 1, process_p 1", 0 }, - /*133*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefgJh", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 0E 26 B4 8E 41 DB 38 C1 1D D9 4F 90", "ATTTTTTTT; BWIPP same as FAST_MODE", 0 }, - /*134*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghJ", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 15 8A 35 57 7F 33 B3 48 01 E0 BD", "TEX symbols_left 1, process_p 1, backtracks", 0 }, - /*135*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghJ", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 83 9B 9F 08 C5 04 B1 AF BD 32 C5 7D", "ATTTTTTTT; BWIPP same as FAST_MODE", 1 }, - /*136*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefghJ", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 FB 93 5B D4 D2 8B EE 85 F2 3E 3F 8E E5 04", "TEX symbols_left 1, process_p 1, backtracks", 0 }, - /*137*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefghJ", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 83 9B 9F 08 C5 04 B1 AF BD 32 C5 7D", "ATTTTTTTT; BWIPP same as FAST_MODE", 1 }, - /*138*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghJi", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A CF 3B 58 FE 82 46 FC 08 1E 58 03", "TEX symbols_left 3, process_p 2, backtracks", 0 }, - /*139*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghJi", 0, 0, 8, 32, 0, 1, "62 63 64 65 66 67 68 69 4B 6A 2C 76 2E B4 FD E6 9B 80 3C CB 05", "AAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*140*/ { UNICODE_MODE | FAST_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefghJi", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A 81 93 16 FE 20 2B 29 EA 78 1B DE A1 C6 8C", "TEX symbols_left 3, process_p 2, backtracks", 0 }, - /*141*/ { UNICODE_MODE, 0, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefghJi", 0, 0, 16, 16, 0, 1, "62 63 64 65 66 67 68 69 4B 6A 81 93 8D B4 F4 4C 3F 52 F8 E8 B9 F0 C1 8D", "AAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*142*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghiJ", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 80 5F FE 4B 81 B3 A5 20 E3 DC F9 74 40 09 30 46", "Switches to ASC for last char", 0 }, - /*143*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghiJ", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 80 5F FE 4B 81 B3 A5 20 E3 DC F9 74 40 09 30 46", "TTTTTTTTTA", 0 }, - /*144*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghijkÊ", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 80 5F 93 82 BB DB FE 3E C8 EC 73 58 A7 42 46 10 49 25 99", "TEX symbols_left 1, process_p 0", 0 }, - /*145*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghijkÊ", 0, 0, 16, 16, 0, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 4B 38 32 3E 60 A3 93 26 A6 E7 35 73 96", "TTTTTTTTTAAA; BWIPP same as FAST_MODE", 0 }, - /*146*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghijkª", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 80 5F 93 82 BB B2 FE 57 D7 E5 7D 3C 87 4B 13 3B F7 90 CB", "TEX symbols_left 1, process_p 0", 0 }, - /*147*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghijkª", 0, 0, 16, 16, 0, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 2B 9B A1 52 3E FC 3A 60 03 11 72 39 70", "TTTTTTTTTAAA; BWIPP same as FAST_MODE", 0 }, - /*148*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghijkê", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 6B 59 43 1A B1 96 F4 FF C5 B5 08 AE 2F", "TEX symbols_left 3, process_p 2, backtracks", 0 }, - /*149*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "abcdefghijkê", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 6B 59 43 1A B1 96 F4 FF C5 B5 08 AE 2F", "TEX symbols_left 3, process_p 2, backtracks", 0 }, - /*150*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 1, 1, "E8 8C EF 59 E9 6D 24 80 4A A9 8D FE 62 63 44 81 88 DC 73 33 70 A1 83 EA 50 CB 4E 17 90 DB", "TEX symbols left 3, process_p 1, backtracks", 0 }, - /*151*/ { GS1_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 0, 1, "E8 8C 62 63 64 65 66 67 68 69 E8 8C 62 63 44 81 43 79 B0 35 F6 1E AB 24 19 85 40 E7 B2 49", "AAAAAAAAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*152*/ { GS1_MODE | FAST_MODE, 0, -1, -1, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 1, 1, "E8 8C EF 59 E9 6D 24 80 49 B6 0D FE 62 63 44 81 72 8C DC 6B 93 0B 8A 6F 8A 52 C3 DD 67 03", "TEX symbols left 3, process_p 1, backtracks", 0 }, - /*153*/ { GS1_MODE, 0, -1, -1, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 0, 1, "E8 8C 62 63 64 65 66 67 68 69 1E 8C 62 63 44 81 1F 9A E0 BD 3C 59 8F 99 A0 DC A0 78 88 2C", "AAAAAAAAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*154*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>", 0, 0, 12, 12, 1, 1, "EE 00 2B 00 2B 83 3B 0A CE 32 36 65", "X12 symbols_left 0, process_p 0", 0 }, - /*155*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>", 0, 0, 12, 12, 1, 1, "EE 00 2B 00 2B 83 3B 0A CE 32 36 65", "X12 symbols_left 0, process_p 0", 0 }, - /*156*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B FE 0E 81 C0 6C BF 37 F6 D6 48 71 E2 38", "Switches to ASC for last char", 0 }, - /*157*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015", 0, 0, 14, 14, 0, 1, "0E 2B 3F 0E 2B 3F 0E 81 33 CC F8 AA 23 B8 F3 40 BC DB", "AAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*158*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B FE 0E 2B BD DB 7C 8F 14 46 F1 9F 94 BC", "Switches to ASC for last 2 chars", 0 }, - /*159*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*", 0, 0, 14, 14, 0, 1, "0E 2B 3F 0E 2B 3F 0E 2B 4E 7B 3B 12 C1 28 4A AE CA 5F", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*160*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B 00 2B FE BF 81 70 74 1C 65 10 0C 06 38", "X12 symbols_left 1, process_p 0, ASC unlatch at end", 0 }, - /*161*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B 00 2B FE BF 81 70 74 1C 65 10 0C 06 38", "X12 symbols_left 1, process_p 0, ASC unlatch at end", 0 }, - /*162*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B 00 2B 0E 1C DB D8 26 3E EC CF 9C C3 4A", "X12 symbols_left 1, process_p 1, ASC no latch at end", 0 }, - /*163*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015", 0, 0, 14, 14, 0, 1, "0E EE 06 91 06 91 06 91 71 69 39 1E 01 32 D5 57 81 8E", "AXXXXXXXXX; BWIPP same as FAST_MODE", 0 }, - /*164*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015*", 0, 0, 8, 32, 1, 1, "EE 00 2B 00 2B 00 2B FE 0E 2B 65 37 5F 2F F3 96 BE 9A 03 55 68", "X12 symbols_left 3, process_p 2, ASC last 2 chars", 0 }, - /*165*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015*", 0, 0, 8, 32, 0, 1, "0E 2B EE 0C 82 0C 82 0C 82 FE E7 2D 83 16 AA 07 19 34 F4 F8 7B", "AAXXXXXXXXX; BWIPP same as FAST_MODE", 0 }, - /*166*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015*>", 0, 0, 8, 32, 1, 1, "EE 00 2B 00 2B 00 2B 00 2B FE 6E 95 3A 10 58 4E 96 06 79 09 94", "X12 symbols_left 1, process_p 0, ASC unlatch at end", 0 }, - /*167*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015*>", 0, 0, 8, 32, 1, 1, "EE 00 2B 00 2B 00 2B 00 2B FE 6E 95 3A 10 58 4E 96 06 79 09 94", "X12 symbols_left 1, process_p 0, ASC unlatch at end", 0 }, - /*168*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C", 0, 0, 14, 14, 1, 1, "F0 00 1C 5E 0B 2F C3 81 2D 71 45 13 9B FF A1 B0 0B E2", "EDIFACT symbols_left 1, process_p 0", 0 }, - /*169*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C", 0, 0, 14, 14, 1, 1, "F0 00 1C 5E 0B 2F C3 81 2D 71 45 13 9B FF A1 B0 0B E2", "EDIFACT symbols_left 1, process_p 0", 0 }, - /*170*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3", 0, 0, 14, 14, 1, 1, "F0 00 1C 5E 0B 2F C3 34 81 E8 6C 9E CE 12 CB F5 58 3F", "EDIFACT symbols_left 1, process_p 1", 0 }, - /*171*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3", 0, 0, 14, 14, 1, 1, "F0 00 1C 5E 0B 2F C3 34 81 E8 6C 9E CE 12 CB F5 58 3F", "EEEEEEEEA", 0 }, - /*172*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B7 C0 33 C6 81 E1 63 6E 5E B4 27 30 C9", "EDIFACT symbols_left 3, process_p 2", 0 }, - /*173*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+", 0, 0, 8, 32, 0, 1, "41 F0 07 17 82 CB F0 F3 2C 81 38 6D 00 EB 77 36 F8 D8 99 B4 1C", "AEEEEEEEEA; BWIPP same as FAST_MODE", 1 }, - /*174*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 1F 4D E1 79 04 2B BC 05 6C 38 73 39", "EDIFACT symbols_left 3, process_p 3", 0 }, - /*175*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 1F 4D E1 79 04 2B BC 05 6C 38 73 39", "EEEEEEEEEEE", 0 }, - /*176*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 F4 EC B3 DC 03 A3 1F B5 86 C3 F7", "EDIFACT symbols_left 0, process_p 0", 0 }, - /*177*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 F4 EC B3 DC 03 A3 1F B5 86 C3 F7", "EDIFACT symbols_left 0, process_p 0", 0 }, - /*178*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4=", 0, 0, 16, 16, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 81 42 96 43 6E 92 0D A9 B1 65 3C CF 9B", "EDIFACT symbols_left 2, process_p 1", 0 }, - /*179*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4=", 0, 0, 16, 16, 0, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 81 42 96 43 6E 92 0D A9 B1 65 3C CF 9B", "EEEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /*180*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4=E", 0, 0, 16, 16, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 46 AD 8C F2 D8 5D AF F3 65 08 1F E3 A5", "EDIFACT symbols_left 2, process_p 2", 0 }, - /*181*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4=E", 0, 0, 16, 16, 0, 1, "41 F0 07 17 82 CB F0 F3 AC 4D 3D 46 16 18 75 8F 52 46 7B 18 F6 68 F1 43", "AEEEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /*182*/ { DATA_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\377\376", 0, 0, 12, 12, 1, 899, "EB 80 EB 7F 81 6F A8 0F 21 6F 5F 88", "FN4 A7F FN4 A7E, 1 pad", 0 }, - /*183*/ { DATA_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\377\376", 0, 0, 12, 12, 1, 899, "EB 80 EB 7F 81 6F A8 0F 21 6F 5F 88", "FN4 A7F FN4 A7E, 1 pad", 0 }, - /*184*/ { DATA_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\377\376\375", 0, 0, 12, 12, 1, 899, "E7 2C C0 55 E9 67 45 8A D2 7E A9 23", "BAS BFF BFE BFD, no padding", 0 }, - /*185*/ { DATA_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\377\376\375", 0, 0, 12, 12, 1, 899, "E7 2C C0 55 E9 67 45 8A D2 7E A9 23", "BAS BFF BFE BFD, no padding", 0 }, - /*186*/ { DATA_MODE | FAST_MODE, 3, -1, -1, -1, { 0, 0, "" }, "\101\102\103\104\300\105\310", 0, 3, 16, 16, 0, 899, "F1 04 42 43 E7 87 5B F1 03 1D 36 81 2C E3 87 24 2D FD 69 9C 87 FA 8A 73", "ECI 4 ASC A41 A42 BAS B43 B44 BC0 B45 BC8; BWIPP different encodation (uses only B256, same no. of codewords)", 0 }, - /*187*/ { DATA_MODE, 3, -1, -1, -1, { 0, 0, "" }, "\101\102\103\104\300\105\310", 0, 3, 16, 16, 0, 899, "F1 04 42 43 44 45 EB 41 46 EB 49 81 6E 28 91 70 A5 CC E6 32 B6 3F 15 1C", "ECI 4 ASC A41 A42 BAS B43 B44 BC0 B45 BC8; BWIPP different encodation (uses only B256, same no. of codewords)", 0 }, - /*188*/ { UNICODE_MODE | FAST_MODE, 26, -1, -1, -1, { 0, 0, "" }, "ABCDÀEÈ", 0, 26, 12, 26, 1, 1, "F1 1B E7 60 2D C4 5B F1 06 58 B3 C7 21 81 57 ED 3D C0 12 2E 6C 80 58 CC 2C 05 0D 31 FC 2D", "ECI 27 BAS B41 B42 B43 B44 BC3 B80 B45 BC3 B88", 0 }, - /*189*/ { UNICODE_MODE, 26, -1, -1, -1, { 0, 0, "" }, "ABCDÀEÈ", 0, 26, 12, 26, 0, 1, "F1 1B 42 43 44 45 E7 B2 06 58 B3 C7 21 81 57 ED A8 34 CC 27 DA F6 B0 4D B7 FC AF 96 56 57", "AAAABBBBB; BWIPP same as FAST_MODE", 0 }, - /*190*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "β", ZINT_WARN_USES_ECI, 9, 12, 12, 1, 1, "Warning F1 0A EB 63 81 41 56 DA C0 3D 2D CC", "ECI 10 FN4 A62", 0 }, - /*191*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "β", ZINT_WARN_USES_ECI, 9, 12, 12, 1, 1, "Warning F1 0A EB 63 81 41 56 DA C0 3D 2D CC", "ECI 10 FN4 A62", 0 }, - /*192*/ { UNICODE_MODE | FAST_MODE, 127, -1, -1, -1, { 0, 0, "" }, "A", 0, 127, 12, 12, 1, 1, "F1 80 01 42 81 14 A2 86 07 F5 27 30", "ECI 128 A41", 0 }, - /*193*/ { UNICODE_MODE, 127, -1, -1, -1, { 0, 0, "" }, "A", 0, 127, 12, 12, 1, 1, "F1 80 01 42 81 14 A2 86 07 F5 27 30", "ECI 128 A41", 0 }, - /*194*/ { UNICODE_MODE | FAST_MODE, 16382, -1, -1, -1, { 0, 0, "" }, "A", 0, 16382, 12, 12, 1, 1, "F1 BF FE 42 81 29 57 AA A0 92 B2 45", "ECI 16383 A41", 0 }, - /*195*/ { UNICODE_MODE, 16382, -1, -1, -1, { 0, 0, "" }, "A", 0, 16382, 12, 12, 1, 1, "F1 BF FE 42 81 29 57 AA A0 92 B2 45", "ECI 16383 A41", 0 }, - /*196*/ { UNICODE_MODE | FAST_MODE, 810899, -1, -1, -1, { 0, 0, "" }, "A", 0, 810899, 12, 12, 1, 1, "F1 CC 51 05 42 BB A5 A7 8A C6 6E 0F", "ECI 810900 A41", 0 }, - /*197*/ { UNICODE_MODE, 810899, -1, -1, -1, { 0, 0, "" }, "A", 0, 810899, 12, 12, 1, 1, "F1 CC 51 05 42 BB A5 A7 8A C6 6E 0F", "ECI 810900 A41", 0 }, - /*198*/ { UNICODE_MODE | ESCAPE_MODE | FAST_MODE, -1, -1, -1, -1, { 0, 0, "" }, "[)>\\R05\\GA\\R\\E", 0, 0, 10, 10, 1, 1, "EC 42 81 5D 17 49 F6 B6", "Macro05 A41", 0 }, - /*199*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, -1, { 0, 0, "" }, "[)>\\R05\\GA\\R\\E", 0, 0, 10, 10, 1, 1, "EC 42 81 5D 17 49 F6 B6", "Macro05 A41", 0 }, - /*200*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKLM*", 0, 0, 16, 16, 1, 1, "EE 59 E9 6D 24 80 5F 93 9A FE 4E 2B 09 FF 50 A2 83 BE 32 E1 2F 17 1E F3", "C40 == X12, p_r_6_2_1 true", 0 }, - /*201*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKLM*", 0, 0, 16, 16, 0, 1, "42 F0 08 31 05 18 72 09 28 B3 0D 2B 63 64 96 E4 6C CE D3 47 9A 5F E8 70", "AEEEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, - /*202*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015\015\015\015\015\015\015\015\015a\015\015\015\015\015\015\015", 0, 0, 12, 26, 1, 1, "EE 00 01 00 01 00 01 FE 62 EE 00 01 00 01 FE 0E B5 9A 73 85 83 20 23 2C E0 EC EC BF 71 E0", "a not X12 encodable", 0 }, - /*203*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\015\015\015\015\015\015\015\015\015a\015\015\015\015\015\015\015", 0, 0, 12, 26, 0, 1, "EE 00 01 00 01 00 01 FE 62 0E 0E 0E 0E 0E 0E 0E F3 21 61 11 C7 BA 48 DE 65 86 FE 7E A2 F5", "XXXXXXXXXAAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*204*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, ".........a.......", 0, 0, 18, 18, 0, 1, "(32) F0 BA EB AE BA EB AE B9 F0 62 2F 2F 2F 2F 2F 2F 2F 81 78 BE 1F 90 B8 89 73 66 DC BD", "a not EDIFACT encodable; BWIPP different encodation (switches to ASCII one dot before)", 0 }, - /*205*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, ".........a.......", 0, 0, 18, 18, 0, 1, "(32) 2F 2F F0 BA EB AE BA EB 9F 62 F0 BA EB AE BA EB 9F 81 F4 71 C0 AF 4F 8C 04 D9 F3 E3", "AAEEEEEEEAEEEEEEE; BWIPP different encodation", 0 }, - /*206*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[90]........[91]....", 0, 0, 12, 26, 1, 1, "E8 DC 2F 2F 2F 2F 2F 2F 2F 2F E8 DD 2F 2F 2F 2F C6 CC 13 68 0D 9D A9 A5 B8 D5 5A F3 7B 18", "Can't use GS1 EDIFACT if contains FNC1/GS", 0 }, - /*207*/ { GS1_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[90]........[91]....", 0, 0, 12, 26, 0, 1, "E8 DC 2F F0 BA EB AE BA EB 9F E8 DD 2F 2F 2F 2F FE B0 C3 BC 8E AA AC CF 01 84 72 DF 59 6A", "AAAEEEEEEEAAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*208*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[90]........", 0, 0, 8, 32, 1, 1, "E8 DC F0 BA EB AE BA EB AE 81 B1 C0 AB DA A5 92 AF E2 05 DE 56", "Can use GS1 EDIFACT if no FNC1/GS", 0 }, - /*209*/ { GS1_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[90]........", 0, 0, 8, 32, 1, 1, "E8 DC F0 BA EB AE BA EB AE 81 B1 C0 AB DA A5 92 AF E2 05 DE 56", "Can use GS1 EDIFACT if no FNC1/GS", 0 }, - /*210*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[90]ABCDEFGH[91]ABCD", 0, 0, 12, 26, 1, 1, "E8 DC E6 59 E9 6D 24 80 4A AA CE 59 E9 FE 45 81 6A 05 49 36 67 C8 00 DE 35 29 C5 9A 17 EA", "GS1 C40 ok", 0 }, - /*211*/ { GS1_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[90]ABCDEFGH[91]ABCD", 0, 0, 12, 26, 0, 1, "E8 DC 42 E6 60 52 73 8D 83 84 52 17 60 52 FE 81 25 A6 B1 A9 6D 2E 30 9E A7 F7 F8 99 55 11", "AAACCCCCCCCCCCCCC; BWIPP same as FAST_MODE", 0 }, - /*212*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[90]ABCD", 0, 0, 14, 14, 1, 1, "E8 DC 42 43 44 45 81 38 98 32 8C 23 4D 87 5A 95 04 A7", "Final ASC unlatch", 0 }, - /*213*/ { GS1_MODE, 0, -1, -1, -1, { 0, 0, "" }, "[90]ABCD", 0, 0, 14, 14, 1, 1, "E8 DC 42 43 44 45 81 38 98 32 8C 23 4D 87 5A 95 04 A7", "AAAAAA", 0 }, - /*214*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>......", 0, 0, 12, 26, 0, 1, "EE 0C A9 0C A9 FE 3F 2F 2F 2F 2F 2F 2F 81 57 ED 0F 29 C7 9D 5D 64 61 94 14 CD A8 DF 65 8D", "X12 then ASC; BWIPP switches to ASCII earlier", 1 }, - /*215*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>......", 0, 0, 12, 26, 0, 1, "3F 2B 0E 3F 2B 0E F0 FA EB AE BA EB 9F 81 57 ED E8 73 07 E0 2D 09 CD 94 36 26 E4 EB 34 6E", "AAAAAAEEEEEEE; BWIPP different encodation", 0 }, - /*216*/ { UNICODE_MODE | FAST_MODE, 0, 4, -1, -1, { 0, 0, "" }, "ABCDEFGH", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 81 65 FB 93 F7 A4 EA B0 37 00 4F 4C 8A 99 0B 69", "", 0 }, - /*217*/ { UNICODE_MODE, 0, 4, -1, -1, { 0, 0, "" }, "ABCDEFGH", 0, 0, 16, 16, 0, 1, "F0 04 20 C4 14 61 C8 7C 81 65 FB 93 D7 12 24 0A 2D B8 CF C8 33 D8 87 D1", "EEEEEEEE; BWIPP same as FAST_MODE", 0 }, - /*218*/ { UNICODE_MODE | FAST_MODE, 0, 26, -1, -1, { 0, 0, "" }, "@@@@@@@@@_", 0, 0, 8, 32, 0, 1, "F0 00 00 00 00 00 1F 41 41 60 63 50 E0 FE 8B 46 16 38 FE 58 AD", "BWIPP switches to ASCII later", 0 }, - /*219*/ { UNICODE_MODE, 0, 26, -1, -1, { 0, 0, "" }, "@@@@@@@@@_", 0, 0, 8, 32, 0, 1, "41 F0 00 00 00 00 00 00 60 81 39 60 6A 49 C1 4A CD 3A 69 51 E0", "AEEEEEEEEA; BWIPP different encodation", 1 }, - /*220*/ { UNICODE_MODE | FAST_MODE, 0, 4, -1, -1, { 0, 0, "" }, "@@@@@@@@@_", 0, 0, 16, 16, 0, 1, "F0 00 00 00 00 00 1F 41 41 60 81 93 F9 B0 1A A1 B9 6C D3 01 38 CD 51 75", "BWIPP switches to ASCII later", 0 }, - /*221*/ { UNICODE_MODE, 0, 4, -1, -1, { 0, 0, "" }, "@@@@@@@@@_", 0, 0, 16, 16, 0, 1, "41 41 F0 00 00 00 00 00 1F 60 81 93 F3 2C 45 BF 89 58 D4 46 51 57 01 F3", "AAEEEEEEEA; BWIPP different encodation", 0 }, - /*222*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 0, 0, 26, 26, 1, 1, "(72) F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", "", 0 }, - /*223*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 0, 0, 26, 26, 1, 1, "(72) F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", 0 }, - /*224*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJK", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C D8 69 88 60 B9 33 B9 31 E6 BF CA", "", 0 }, - /*225*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJK", 0, 0, 8, 32, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF B6 77 90 C2 39 AA 9B 61 7E F1 E3", "EEEEEEEEEEE; BWIPP same as FAST_MODE", 0 }, - /*226*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\001AAAAA", 0, 0, 14, 14, 1, 1, "02 42 42 42 42 42 81 38 80 00 99 9E F5 8F 04 71 FB 4E", "", 0 }, - /*227*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\001AAAAA", 0, 0, 14, 14, 0, 1, "02 42 42 42 42 42 81 38 80 00 99 9E F5 8F 04 71 FB 4E", "AAAAAA; BWIPP same as FAST_MODE", 0 }, - /*228*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\001AAAAAA", 0, 0, 14, 14, 1, 1, "02 E6 59 BF 59 BF FE 81 EC 06 F3 00 0B 1F AA CB FC EB", "", 0 }, - /*229*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\001AAAAAA", 0, 0, 14, 14, 0, 1, "02 42 F0 04 10 41 42 81 9C E9 2B 19 D3 07 3C 11 0E 63", "AAEEEEA; BWIPP same as FAST_MODE", 0 }, - /*230*/ { DATA_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\200\076\076\076\076\076\076\076", 0, 0, 8, 32, 0, 899, "E7 2D 41 EE 0C D3 0C D3 FE 3F 81 93 1A AE 50 D6 E0 FB 18 EA 2E", "BAS X12; BWIPP different encodation", 0 }, - /*231*/ { DATA_MODE, 0, -1, -1, -1, { 0, 0, "" }, "\200\076\076\076\076\076\076\076", 0, 0, 14, 14, 0, 899, "EB 01 3F EE 0C D3 0C D3 C3 98 B8 7F 21 0C 23 45 A9 27", "AAXXXXXX; BWIPP different encodation", 2 }, - /*232*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, ".....12", 0, 0, 14, 14, 1, 1, "2F 2F 2F 2F 2F 8E 81 38 18 5E 9A 70 18 19 D0 35 7E 82", "ASC", 0 }, - /*233*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, ".....12", 0, 0, 14, 14, 0, 1, "2F 2F 2F 2F 2F 8E 81 38 18 5E 9A 70 18 19 D0 35 7E 82", "AAAAAAA; BWIPP same as FAST_MODE", 0 }, - /*234*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "aaaaaa", 0, 0, 12, 12, 1, 1, "EF 59 BF 59 BF 1B 98 38 0A E1 70 F9", "ASC", 0 }, - /*235*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "aaaaaa", 0, 0, 12, 12, 1, 1, "EF 59 BF 59 BF 1B 98 38 0A E1 70 F9", "TTTTTT", 0 }, - /*236*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "AAAAAAAAAAAAAA12a", 0, 0, 12, 26, 1, 1, "E6 59 BF 59 BF 59 BF 59 BF 59 B6 25 D2 FE 81 ED 63 5A 30 1D C5 77 70 66 93 2B 6A 40 23 22", "", 0 }, - /*237*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "AAAAAAAAAAAAAA12a", 0, 0, 12, 26, 0, 1, "E6 59 BF 59 BF 59 BF 59 BF FE 42 42 8E 62 81 ED 19 C5 3F C8 AC F1 E9 F5 68 75 AA 6C 14 72", "CCCCCCCCCCCCAAAAA; BWIPP same as FAST_MODE", 0 }, - /*238*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "1234ééé12", 0, 0, 8, 32, 0, 1, "8E A4 E7 59 D5 6B EB 6A 8E 81 22 4D 35 A9 CA 58 B3 1B 33 B7 DD", "N12 N34 BAS BE9 BE9 ASC FN4 A69 N12; BWIPP same as non-FAST_MODE", 0 }, - /*239*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "1234ééé12", 0, 0, 14, 14, 1, 1, "8E A4 E7 5A D5 6B 01 8E 1C 5C 58 A7 11 8D DD A8 D6 B9", "", 1 }, - /*240*/ { UNICODE_MODE, 0, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C 1\013*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 32 0C EE 08 9B 64 7E 57 B8 0F 04 21 72 FE 81 68 FE", "Okapi datamatrix/ascii-within-x12.png", 1 }, - /*241*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C 1\013*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 32 0C EE 08 9B 64 7E 57 B8 0F 04 21 72 FE 81 68 FE", "Okapi datamatrix/ascii-within-x12.png, process_p 2", 1 }, - /*242*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C \0131*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 0C EE 1F 78 0F 04 21 72 5E 21 13 97 FE 2B 81 68 FE", "process_p 1", 1 }, - /*243*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C\013 1*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 0C EE 13 8A 5E 21 13 97 08 9B 64 7E FE 42 2B 81 68 FE", "process_p 0", 1 }, - /*244*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C 1*\013B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 13 8A FE 0C EE 5E 21 13 97 08 9B 64 7E FE 42 2B 81 68 FE", "process_p 0", 1 }, - /*245*/ { GS1_MODE, 0, -1, -1, -1, { 1, 2, "" }, "[20]01", 0, 0, 14, 14, 1, 1, "E9 0F 01 01 E8 96 83 81 DE 06 E8 61 E2 B5 19 CE A3 F8", "", 0 }, - /*246*/ { GS1_MODE, 3, -1, -1, -1, { 1, 2, "123234" }, "[20]01", 0, 3, 8, 32, 1, 1, "E9 0F 7B EA E8 F1 04 96 83 81 47 4D F5 6F E8 62 DA 1C 06 7F 03", "", 0 }, + /* 0*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "#208", 0 }, + /* 1*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "#208", 0 }, + /* 2*/ { UNICODE_MODE | FAST_MODE, 0, -1, 5, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "", 0 }, + /* 3*/ { UNICODE_MODE, 0, -1, 5, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "", 0 }, + /* 4*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY8", 0, 0, 18, 18, 0, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C E6 07 B7 82 5F D4 3D 08 EB 60 DA B1 82 72 50 A9 5B", "BWIPP different encodation (earlier change to C40)", 0 }, + /* 5*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY8", 0, 0, 18, 18, 0, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C 2B 42 E6 82 5F D4 3D 0A 34 D7 21 4E D2 8D C5 9C D7", "AAAAAAAAAAAAAAAAAAAAAACCCCCC; BWIPP different encodation", 0 }, + /* 6*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "", 0 }, + /* 7*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 0, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C F0 A8 11 D5 05 46 5F D2 56 81 76 3C D6 92 14 9F E2", "AAAAAAAAAAAAAAAAAAAAEEEEEEEAAA; BWIPP same as FAST_MODE", 0 }, + /* 8*/ { UNICODE_MODE | FAST_MODE, 0, -1, 5, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", ZINT_ERROR_TOO_LONG, -1, 0, 0, 0, 1, "Error 522: Input too long for Version 5, requires 19 codewords (maximum 18)", "", 0 }, + /* 9*/ { UNICODE_MODE, 0, -1, 5, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", ZINT_ERROR_TOO_LONG, -1, 0, 0, 0, 1, "Error 522: Input too long for Version 5, requires 19 codewords (maximum 18)", "", 0 }, + /* 10*/ { UNICODE_MODE | FAST_MODE, 0, -1, 6, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "", 0 }, + /* 11*/ { UNICODE_MODE, 0, -1, 6, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 0, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C F0 A8 11 D5 05 46 5F D2 56 81 76 3C D6 92 14 9F E2", "AAAAAAAAAAAAAAAAAAAAEEEEEEEAAA; BWIPP same as FAST_MODE", 0 }, + /* 12*/ { UNICODE_MODE, 0, 1, -1, DM_B256_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 0, 1, "(40) E7 2D F1 B0 BE 8C BD 97 A0 8C 82 82 6C EE 08 85 D6 D2 EF 65 FE 56 CC CC CA 0C FD 5D", "BWIPP same as FAST_MODE", 0 }, + /* 13*/ { UNICODE_MODE, 0, 3, -1, DM_B256_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 0, 1, "(40) E7 2F F1 8B 22 BE 8C BD 97 A0 8C 82 82 6C EE 08 85 D6 D2 EF 65 56 A5 AD 8A E1 AC 69", "BWIPP same as FAST_MODE", 0 }, + /* 14*/ { UNICODE_MODE, 0, 29, -1, DM_B256_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 16, 36, 0, 1, "(56) E7 49 F1 8B 22 B8 48 DE 73 0D A7 36 CA 62 F4 8B 1F B5 4B E0 76 46 9B 48 E3 87 08 B1", "BWIPP same as FAST_MODE", 0 }, + /* 15*/ { UNICODE_MODE, 0, 0, -1, DM_B256_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 16, 36, 0, 1, "(56) E7 2C F1 8B 22 B8 48 DE 73 0D A7 36 CA 62 F4 8B 1F B5 4B E0 76 46 9B 48 E3 87 08 B1", "BWIPP same as FAST_MODE", 0 }, + /* 16*/ { UNICODE_MODE, 0, 30, -1, DM_B256_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 16, 36, 0, 1, "(56) E7 2C F1 8B 22 B8 48 DE 73 0D A7 36 CA 62 F4 8B 1F B5 4B E0 76 46 9B 48 E3 87 08 B1", "BWIPP same as FAST_MODE", 0 }, + /* 17*/ { UNICODE_MODE, 0, 31, -1, DM_B256_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 16, 36, 0, 1, "(56) E7 2C F1 8B 22 B8 48 DE 73 0D A7 36 CA 62 F4 8B 1F B5 4B E0 76 46 9B 48 E3 87 08 B1", "BWIPP same as FAST_MODE", 0 }, + /* 18*/ { UNICODE_MODE, 0, 1, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, 1, "(40) E6 1A 4B FE BE 8C BD 97 A0 8C 82 82 6C EE 08 85 D6 D2 EF 65 FE 56 6F 18 C8 1B 99 43", "", 0 }, + /* 19*/ { UNICODE_MODE, 0, 3, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, 1, "(40) E6 1A 4B FE BE 8C BD 97 A0 8C 82 82 6C EE 08 85 D6 D2 EF 65 FE 56 6F 18 C8 1B 99 43", "", 0 }, + /* 20*/ { UNICODE_MODE, 0, 6, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, 1, "(40) E6 1A 4B 3F 26 FE 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 56 E1 13 F9 E9 4D 64", "", 0 }, + /* 21*/ { UNICODE_MODE, 0, 9, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, 1, "(40) E6 1A 4B 3F 26 1A 76 FE 97 A0 8C 82 82 6C EE 08 85 D6 D2 EF 65 56 25 D7 67 1E AD 05", "", 0 }, + /* 22*/ { UNICODE_MODE, 0, 10, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 22, 22, 1, 1, "(50) E6 1A 4B 3F 26 1A 76 26 50 19 CD 19 A5 19 5C 07 B7 82 5F D4 3D FE 31 56 81 D1 68 FE", "", 0 }, + /* 23*/ { UNICODE_MODE, 0, 27, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 22, 22, 1, 1, "(50) E6 1A 4B 3F 26 1A 76 26 50 19 CD 19 A5 19 5C 07 B7 82 5F D4 3D FE 31 56 81 D1 68 FE", "", 0 }, + /* 24*/ { UNICODE_MODE, 0, 0, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 22, 22, 1, 1, "(50) E6 1A 4B 3F 26 1A 76 26 50 19 CD 19 A5 19 5C 07 B7 82 5F D4 3D FE 31 56 81 D1 68 FE", "", 0 }, + /* 25*/ { UNICODE_MODE, 0, 30, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 22, 22, 1, 1, "(50) E6 1A 4B 3F 26 1A 76 26 50 19 CD 19 A5 19 5C 07 B7 82 5F D4 3D FE 31 56 81 D1 68 FE", "", 0 }, + /* 26*/ { UNICODE_MODE, 0, 31, -1, DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 22, 22, 1, 1, "(50) E6 1A 4B 3F 26 1A 76 26 50 19 CD 19 A5 19 5C 07 B7 82 5F D4 3D FE 31 56 81 D1 68 FE", "", 0 }, + /* 27*/ { UNICODE_MODE, 0, 0, -1, DM_B256_START | DM_C40_START, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80U", 0, 0, 22, 22, 1, 1, "(50) E6 1A 4B 3F 26 1A 76 26 50 19 CD 19 A5 19 5C 07 B7 82 5F D4 3D FE 31 56 81 D1 68 FE", "C40 start trumps B256 start", 0 }, + /* 28*/ { UNICODE_MODE, 0, 1, -1, DM_C40_START, -1, { 0, 0, "" }, "1", 0, 0, 10, 10, 1, 1, "E6 FE 32 84 95 06 20 EC", "C40 ASC 1 - i.e. needless but harmless switch as would pad anyway", 0 }, + /* 29*/ { UNICODE_MODE, 0, 1, -1, DM_C40_START, -1, { 0, 0, "" }, "A", 0, 0, 10, 10, 1, 1, "E6 FE 42 16 CF 8C 48 27", "C40 ASC A - i.e. ditto above", 0 }, + /* 30*/ { UNICODE_MODE, 0, 1, -1, DM_C40_START, -1, { 0, 0, "" }, "a", 0, 0, 10, 10, 1, 1, "E6 0C A9 81 78 3C 60 20", "C40 Sh3 a Sh1", 0 }, + /* 31*/ { UNICODE_MODE, 0, 2, -1, DM_C40_START, -1, { 0, 0, "" }, "12", 0, 0, 10, 10, 1, 1, "E6 20 31 E2 63 9B C4 4A", "", 0 }, + /* 32*/ { UNICODE_MODE, 0, 3, -1, DM_C40_START, -1, { 0, 0, "" }, "123", 0, 0, 10, 10, 1, 1, "E6 20 38 01 03 EC 59 4D", "", 0 }, + /* 33*/ { UNICODE_MODE, 0, 4, -1, DM_C40_START, -1, { 0, 0, "" }, "1234", 0, 0, 12, 12, 1, 1, "E6 20 38 FE 35 B2 60 25 54 19 F3 0A", "", 0 }, + /* 34*/ { UNICODE_MODE, 0, 5, -1, DM_C40_START, -1, { 0, 0, "" }, "12345", 0, 0, 12, 12, 1, 1, "E6 20 38 33 69 50 2C E7 4D 9A AD BF", "", 0 }, + /* 35*/ { UNICODE_MODE, 0, 8, -1, DM_C40_START, -1, { 0, 0, "" }, "12345678", 0, 0, 14, 14, 1, 1, "E6 20 38 33 73 FE D0 81 69 FC B4 98 19 E7 0D 8C 52 32", "", 0 }, + /* 36*/ { UNICODE_MODE, 0, 1, -1, DM_B256_START, -1, { 0, 0, "" }, "1", 0, 0, 10, 10, 0, 1, "E7 2C F2 EF 99 0D 00 76", "BAS Cnt(1,0) 1; BWIPP no Base 256 start", 0 }, + /* 37*/ { UNICODE_MODE, 0, 2, -1, DM_B256_START, -1, { 0, 0, "" }, "12", 0, 0, 12, 12, 0, 1, "E7 2E F2 89 81 D4 3A F2 79 63 4E 08", "BAS Cnt(2,2) 1 2 PAD; BWIPP no Base 256 start", 0 }, + /* 38*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 1, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C E6 07 B7 82 5F D4 3D 1E 5F FE 81 1E 1B B0 FE E7 54", "", 0 }, + /* 39*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 0, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C F0 A8 11 D5 05 46 78 C1 50 5F 81 3B 50 EE DB AE A4", "AAAAAAAAAAAAAAAAAAAAEEEEEEEEEEE; BWIPP same as FAST_MODE", 0 }, + /* 40*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 0, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C F0 A8 11 D5 05 46 78 C1 50 5F 81 3B 50 EE DB AE A4", "AAAAAAAAAAAAAAAAAAAAEEEEEEEEEEE; BWIPP same as FAST_MODE", 0 }, + /* 41*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 0, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C F0 A8 11 D5 05 46 78 C1 50 5F 81 3B 50 EE DB AE A4", "AAAAAAAAAAAAAAAAAAAAEEEEEEEEEEE; BWIPP same as FAST_MODE", 0 }, + /* 42*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>", 0, 0, 14, 14, 1, 1, "EE 0C A9 0C A9 FE 3F 81 42 B2 11 A8 F9 0A EC C1 1E 41", "X12 symbols_left 3, process_p 1", 0 }, + /* 43*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>", 0, 0, 14, 14, 0, 1, "3F 2B 0E 3F 2B 0E 3F 81 37 3F 04 F9 CC 02 2D 70 E0 FF", "AAAAAAA; BWIPP same as FAST_MODE", 0 }, + /* 44*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>*", 0, 0, 14, 14, 1, 1, "EE 0C A9 0C A9 FE 3F 2B 3F 05 D2 10 1B 9A 55 2F 68 C5", "X12 symbols_left 3, process_p 2", 0 }, + /* 45*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>*", 0, 0, 14, 14, 0, 1, "3F 2B 0E 3F 2B 0E 3F 2B 4A 88 C7 41 2E 92 94 9E 96 7B", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /* 46*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>*\015", 0, 0, 14, 14, 1, 1, "EE 0C A9 0C A9 0C A9 FE 1F 30 3F EE 45 C1 1C D7 5F 7E", "X12 symbols_left 1, process_p 0", 0 }, + /* 47*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>*\015", 0, 0, 14, 14, 1, 1, "EE 0C A9 0C A9 0C A9 FE 1F 30 3F EE 45 C1 1C D7 5F 7E", "X12 symbols_left 1, process_p 0", 0 }, + /* 48*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEF", 0, 0, 12, 12, 1, 1, "E6 59 E9 6D 24 3D 15 EF AA 21 F9 59", "C40 symbols_left 0, process_p 0", 0 }, + /* 49*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEF", 0, 0, 12, 12, 1, 1, "E6 59 E9 6D 24 3D 15 EF AA 21 F9 59", "CCCCCC", 0 }, + /* 50*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 FE 48 81 8C 7E 09 5E 10 64 BC 5F 4C 91", "C40 symbols_left 3, process_p 1", 0 }, + /* 51*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 DF 81 AB 07 40 5C C8 C2 F5 59 B3 10", "EEEEEEE; BWIPP same as FAST_MODE", 0 }, + /* 52*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 FE 48 49 2E 31 00 73 3B 8F 4B 55 93 19", "C40 symbols_left 3, process_p 2", 0 }, + /* 53*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 81 D1 4D 5F 96 32 9F B2 A0 C7 8D", "EEEEEEEE; BWIPP same as FAST_MODE", 1 }, + /* 54*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 80 5F FE 01 DE 20 9F AA C2 FF 8F 08 97", "C40 symbols_left 1, process_p 0", 0 }, + /* 55*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 4A 34 B0 7A 27 3C 38 82 4C 30 21", "EEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /* 56*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH12", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 80 4E 33 B3 46 F3 D5 F5 C0 4F 12 F2 ED", "C40 symbols_left 1, process_p 1", 0 }, + /* 57*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH12", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 8E A7 6D C3 20 83 CE 1E A9 4F 39", "EEEEEEEEAA; BWIPP same as FAST_MODE", 0 }, + /* 58*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHé", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 4A BB DA FE E1 A4 57 73 2B 4E 06 10 FB EE 83", "C40 symbols_left 1, process_p 0", 0 }, + /* 59*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHé", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 1F EB 6A 80 70 2B 11 BD 91 6B 5F C9 AC 43", "AEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /* 60*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJ", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 80 5F 4B AD 47 09 12 FF 2F 95 CA 5B 4A", "C40 symbols_left 1, process_p 1", 0 }, + /* 61*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJ", 0, 0, 14, 14, 0, 1, "42 E6 60 52 73 8D 86 C8 67 A3 F9 29 73 9C 15 90 7E 16", "ACCCCCCCCC; BWIPP same as FAST_MODE", 0 }, + /* 62*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJK", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C D8 69 88 60 B9 33 B9 31 E6 BF CA", "C40 symbols_left 3, process_p 2", 0 }, + /* 63*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJK", 0, 0, 8, 32, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF B6 77 90 C2 39 AA 9B 61 7E F1 E3", "EEEEEEEEEEE; BWIPP same as FAST_MODE", 0 }, + /* 64*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEF\001G", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 00 3D FE 5D 5A F5 0A 8A 4E 1D 63 07 B9", "C40 symbols_left 1, process_p 0", 0 }, + /* 65*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEF\001G", 0, 0, 14, 14, 0, 1, "42 43 F0 0C 41 46 02 48 57 A1 80 C5 8F EC 72 33 0A 26", "AAEEEEAA; BWIPP same as FAST_MODE", 0 }, + /* 66*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG\001", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 02 FE 14 A3 27 63 01 2F B1 94 FE FA", "C40 symbols_left 1, process_p 0", 0 }, + /* 67*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG\001", 0, 0, 14, 14, 0, 1, "42 43 44 F0 10 51 87 02 50 0C 22 23 7E A3 2B DC 8A 62", "AAAEEEEA; BWIPP same as FAST_MODE", 0 }, + /* 68*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG\001H", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 02 49 C2 E6 DD 06 89 51 BA 8E 9D 1F", "C40 symbols_left 1, process_p 1", 0 }, + /* 69*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG\001H", 0, 0, 14, 14, 0, 1, "42 E6 60 52 73 8D 00 3E 66 13 C0 89 73 A8 53 20 F7 6F", "ACCCCCCCC; BWIPP same as FAST_MODE", 0 }, + /* 70*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 81 BD 6D F3 94 FF 82 A6 BF BB F1 4F", "C40 symbols_left 1, process_p 1, backtracks", 0 }, + /* 71*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 02 37 8F B4 A6 27 9E FA CF 1E 02", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, + /* 72*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH\001", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 81 FB 93 AE 8B 1C 90 DF FE EB C5 A0 2A 6A 4F", "C40 symbols_left 1, process_p 1, backtracks", 0 }, + /* 73*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH\001", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 02 37 8F B4 A6 27 9E FA CF 1E 02", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, + /* 74*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001I", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 4A E1 0D DD BC 56 E4 66 52 E6 AE 02", "C40 symbols_left 3, process_p 2, backtracks", 0 }, + /* 75*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001I", 0, 0, 8, 32, 0, 1, "42 43 44 45 F0 14 61 C8 02 4A 5F 21 C6 61 E1 7B 1C 13 FF 0D BA", "AAAAEEEEAA; BWIPP same as FAST_MODE", 0 }, + /* 76*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH\001I", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 81 93 51 DF C0 0C D3 F9 72 13 17 52 5B 7E", "C40 symbols_left 5, process_p 2, backtracks", 0 }, + /* 77*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH\001I", 0, 0, 16, 16, 0, 1, "42 F0 08 31 05 18 72 1F 02 4A 81 93 FD 86 6C AF 6E C6 7C 99 74 21 C4 EF", "AEEEEEEEAA; BWIPP same as FAST_MODE", 0 }, + /* 78*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI\001", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 02 81 47 6C 3E 49 D3 FA 46 47 53 6E E5", "Switches to ASC for last char", 0 }, + /* 79*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI\001", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 09 02 81 FA 72 8B 50 63 F2 BD D9 2E 1D CD", "AEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /* 80*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHI\001", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 02 81 FB 93 33 E3 4F F7 2D 08 8A BF 64 C3 B0 26", "Switches to ASC for last char", 0 }, + /* 81*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHI\001", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 02 81 FB 93 33 E3 4F F7 2D 08 8A BF 64 C3 B0 26", "CCCCCCCCCA", 0 }, + /* 82*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001I\001", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 02 81 BD 5D C0 B9 09 25 87 3A 09 23 9D C0", "C40 symbols_left 1, process_p 1, backtracks 2", 0 }, + /* 83*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\001I\001", 0, 0, 8, 32, 0, 1, "42 E6 60 52 73 8D 83 42 89 82 5F 2E 1D 6C 18 BB 25 C3 BF 7F E1", "ACCCCCCCCCC; BWIPP same as FAST_MODE", 1 }, + /* 84*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEF+G", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 07 E5 FE 6B 35 71 7F 3D 57 59 46 F7 B9", "C40 symbols_left 1, process_p 0", 0 }, + /* 85*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEF+G", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 6A C7 81 28 87 C6 C4 D6 50 53 DE 8D 80", "EEEEEEEE; BWIPP same as FAST_MODE", 1 }, + /* 86*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG+", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 33 FE 33 F5 97 60 73 48 13 2E E5 74", "C40 symbols_left 1, process_p 0", 0 }, + /* 87*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG+", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 EB 81 E8 04 8F 69 BD F5 01 28 03 0A", "EEEEEEEE; BWIPP same as FAST_MODE", 1 }, + /* 88*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG+H", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 33 49 E5 B0 6D 05 FB 36 18 34 86 91", "C40 symbols_left 1, process_p 1", 0 }, + /* 89*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFG+H", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 EB 49 4A 4B 86 44 96 1E F6 22 DC 82", "EEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /* 90*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH+", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 02 BD 40 CF 3B 06 C2 DF 36 E0 48", "C40 symbols_left 1, process_p 1, backtracks", 0 }, + /* 91*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH+", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 2C 1F DD 3B 4F 62 48 0E 16 F9 5D", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, + /* 92*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH+", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 FB 93 F6 78 B5 69 0B 83 C6 32 62 1A D2 FF", "C40 symbols_left 1, process_p 1, backtracks", 0 }, + /* 93*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH+", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 2C 1F DD 3B 4F 62 48 0E 16 F9 5D", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, + /* 94*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH+I", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 5E DD 6E E7 92 60 02 32 6B BF 05", "C40 symbols_left 3, process_p 2, backtracks", 0 }, + /* 95*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH+I", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 2B 4A 81 E2 22 C5 B6 9C AB 0E F1 63 E5 EE", "AEEEEEEEEA; BWIPP same as FAST_MODE", 1 }, + /* 96*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH+I", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 81 93 09 2C 69 F5 07 84 5F E4 D5 62 E3 CE", "C40 symbols_left 5, process_p 2, backtracks", 0 }, + /* 97*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGH+I", 0, 0, 16, 16, 0, 1, "42 43 F0 0C 41 46 1C 8A C9 7C 81 93 A8 91 6E F7 89 AB E8 A5 8E CA F0 34", "AAEEEEEEEE; BWIPP same as FAST_MODE", 0 }, + /* 98*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI+", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 F8 BC 8D 12 17 7E 22 27 DE 7F E2", "C40 symbols_left 3, process_p 2, backtracks", 0 }, + /* 99*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHI+", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 09 2C 81 45 A2 38 0B A7 76 D9 B9 A3 0C CA", "AEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /*100*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHI+", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 FB 93 6B 10 E6 0E F9 75 A7 48 A6 F3 08 96", "Switches to ASC for last char", 0 }, + /*101*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHI+", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 FB 93 6B 10 E6 0E F9 75 A7 48 A6 F3 08 96", "CCCCCCCCCA", 0 }, + /*102*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFjG", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 0E 25 FE DA 14 D7 15 47 69 9D 4A 54 6D", "C40 symbols_left 1, process_p 0", 0 }, + /*103*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFjG", 0, 0, 14, 14, 0, 1, "42 43 F0 0C 41 46 6B 48 77 B6 92 A1 DC 92 42 54 39 84", "AAEEEEAA; BWIPP same as FAST_MODE", 0 }, + /*104*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGj", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 5B FE B5 F3 24 0A 99 26 D6 CC A8 40", "C40 symbols_left 1, process_p 0", 0 }, + /*105*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGj", 0, 0, 14, 14, 0, 1, "42 43 44 F0 10 51 87 6B 0D 41 FF FD 91 82 0B 8F CB AA", "AAAEEEEA; BWIPP same as FAST_MODE", 0 }, + /*106*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGjH", 0, 0, 14, 14, 1, 1, "E6 59 E9 6D 24 7D 5B 49 63 B6 DE 6F 11 58 DD D6 CB A5", "C40 symbols_left 1, process_p 1", 0 }, + /*107*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGjH", 0, 0, 14, 14, 0, 1, "42 E6 60 52 73 8D 0E 26 0E F4 AD 89 C6 72 8A 26 34 65", "ACCCCCCCC; BWIPP same as FAST_MODE", 0 }, + /*108*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHj", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 ED 78 CB 9F 52 EE 52 88 91 67 96", "C40 symbols_left 1, process_p 1, backtracks", 0 }, + /*109*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHj", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 6B 6A C2 69 78 C8 BF DA 9C 5F CA", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, + /*110*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHj", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 FB 93 BF 72 03 35 09 37 98 FF 39 A7 E3 6D", "C40 symbols_left 1, process_p 1, backtracks", 0 }, + /*111*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHj", 0, 0, 14, 14, 0, 1, "F0 04 20 C4 14 61 C8 6B 6A C2 69 78 C8 BF DA 9C 5F CA", "EEEEEEEEA; BWIPP same as FAST_MODE", 1 }, + /*112*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHjI", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A B1 18 E5 B7 FB 88 92 65 CC 38 DB", "C40 symbols_left 3, process_p 2, backtracks", 0 }, + /*113*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHjI", 0, 0, 8, 32, 0, 1, "42 43 44 45 F0 14 61 C8 6B 4A 0F 34 FE 6A 4C 17 E8 24 D5 9B 63", "AAAAEEEEAA; BWIPP same as FAST_MODE", 0 }, + /*114*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHjI", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A 81 93 40 26 DF A9 05 30 01 29 8E DF D2 5C", "C40 symbols_left 5, process_p 2, backtracks", 0 }, + /*115*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "ABCDEFGHjI", 0, 0, 16, 16, 0, 1, "42 F0 08 31 05 18 72 1F 6B 4A 81 93 EC 7F 73 0A B8 0F 0F A3 ED AC 4D CD", "AEEEEEEEAA; BWIPP same as FAST_MODE", 0 }, + /*116*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIj", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 6B 81 17 79 06 42 7E 96 B2 70 79 F8 3C", "Switches to ASC for last char", 0 }, + /*117*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIj", 0, 0, 8, 32, 0, 1, "42 F0 08 31 05 18 72 09 6B 81 AA 67 B3 5B CE 9E 49 EE 04 8B 14", "AEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /*118*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJÊ", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 4B EB 4B 81 DD D9 F9 C9 C5 38 F3 4B DB 80 92 A7", "Switches to ASC for last 2 chars", 0 }, + /*119*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJÊ", 0, 0, 8, 32, 0, 1, "42 E6 60 52 73 8D 86 C8 0B 08 72 65 72 59 41 70 1B CE 76 D7 1F", "ACCCCCCCCCC; BWIPP same as FAST_MODE", 0 }, + /*120*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKÊ", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C EB 4B 15 17 46 06 70 F3 15 74 45 26 72 2D", "C40 symbols_left 3, process_p 2, backtracks", 0 }, + /*121*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKÊ", 0, 0, 16, 16, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF EB 4B A1 42 E9 2A A8 3B 79 8B E9 40 E9 58", "EEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /*122*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKª", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F 93 82 BB B2 FE 11 5C 60 32 A6 DE FC 7B 30 F1 03 56", "C40 symbols_left 1, process_p 0", 0 }, + /*123*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKª", 0, 0, 16, 16, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF EB 2B 02 D1 85 74 F7 92 3F 2E 1F 07 A3 BE", "EEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /*124*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKê", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F 93 82 BB DB FE 78 43 69 3C C2 FE F5 2E 1B 4F B6 04", "C40 symbols_left 1, process_p 0", 0 }, + /*125*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKê", 0, 0, 16, 16, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF EB 6B C0 33 CD FB 9D 5C A0 E8 BB 7D 34 E1", "EEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /*126*/ { UNICODE_MODE, 0, 0, -1, DM_C40_START, -1, { 0, 0, "" }, "ABCDEFGHIJKê", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 80 5F 93 82 BB DB FE 78 43 69 3C C2 FE F5 2E 1B 4F B6 04", "", 0 }, + /*127*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 1, 1, "E8 8C E6 59 E9 6D 24 80 4A A9 8D FE 42 43 64 81 83 B4 8F 6B 95 F6 CE A6 3C 5C 77 86 08 50", "C40 symbols_left 3, process_p 1, backtracks", 0 }, + /*128*/ { GS1_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 0, 1, "E8 8C 42 F0 08 31 05 18 72 1F E8 8C 42 43 64 81 12 DE 1C 0E B2 93 B3 C5 3C 58 A8 4A 83 4C", "AAAEEEEEEEAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*129*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 1, 1, "E8 8C E6 59 E9 6D 24 80 49 B6 0D FE 42 43 64 81 79 E4 20 33 76 5C C7 23 E6 C5 FA 4C FF 88", "C40 symbols_left 3, process_p 1, backtracks", 0 }, + /*130*/ { GS1_MODE, 0, -1, -1, -1, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 0, 1, "E8 8C 42 F0 08 31 05 18 72 1F 1E 8C 42 43 64 81 4E 3D 4C 86 78 D4 97 78 85 01 48 D5 B9 29", "AAAEEEEEEEAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*131*/ { GS1_MODE, 0, 0, -1, DM_B256_START, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 18, 18, 0, 1, "(32) E8 E7 CB 88 1C C3 5A F0 87 1D B4 4B E1 E8 8C 42 43 64 F0 71 A0 FD AE D0 B7 BE F7 68", "Binary up to 1st FNC1 (10th char, before 2nd '[10]'); BWIPP see above", 0 }, + /*132*/ { GS1_MODE, 0, 10, -1, DM_B256_START, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 18, 18, 0, 1, "(32) E8 E7 CB 88 1C C3 5A F0 87 1D B4 4B E1 E8 8C 42 43 64 F0 71 A0 FD AE D0 B7 BE F7 68", "Same as above; BWIPP see above", 0 }, + /*133*/ { GS1_MODE, 0, 9, -1, DM_B256_START, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 18, 18, 0, 1, "(32) E8 E7 CA 88 1C C3 5A F0 87 1D B4 4B 49 E8 8C 42 43 64 D1 1A E3 AC D2 10 FD 2C 6C 1F", "BWIPP see above", 0 }, + /*134*/ { GS1_MODE, 0, 2, -1, DM_B256_START, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 18, 18, 0, 1, "(32) E8 E7 C3 88 1C E6 59 E9 6D 24 80 4A A9 8D FE 42 43 64 E5 F0 A5 1C C6 33 38 83 FD 4A", "BWIPP see above", 0 }, + /*135*/ { GS1_MODE, 0, 0, -1, DM_B256_START, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 20, 20, 0, 1, "(40) E8 E7 D1 88 1C C3 5A F0 87 1D B4 4B E1 4C F5 8A 30 C7 7E 81 DF 76 EC 40 D3 C2 9D 8B", "All binary using GS1 separator; BWIPP see above", 0 }, + /*136*/ { GS1_MODE, 0, 0, -1, DM_C40_START, -1, { 0, 0, "" }, "[10]ABCDEFGH[10]ABc", 0, 0, 12, 26, 1, 1, "E8 E6 1F EF 60 52 73 8D 83 84 1F EF 5E 14 FE 81 12 E9 EF DD A5 AB 8A 6A B8 05 2E FF E8 F7", "", 0 }, + /*137*/ { GS1_MODE, 0, 0, -1, DM_C40_START, -1, { 0, 0, "" }, "[400]123[420]1", 0, 0, 8, 32, 1, 1, "E8 E6 32 A5 20 38 0A 81 26 26 1A 2B 21 AF 7C BF 8E 22 CB 3D E2", "", 0 }, + /*138*/ { GS1_MODE, 0, 4, -1, DM_C40_START, -1, { 0, 0, "" }, "[400]123[420]1", 0, 0, 8, 32, 1, 1, "E8 E6 32 A5 20 38 FE E8 AC 83 38 F8 74 A8 0D 3E 51 1D 36 E1 28", "", 0 }, + /*139*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdef", 0, 0, 12, 12, 1, 1, "EF 59 E9 6D 24 E2 CC D9 B4 55 E2 6A", "TEX symbols_left 0, process_p 0", 0 }, + /*140*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdef", 0, 0, 12, 12, 1, 1, "EF 59 E9 6D 24 E2 CC D9 B4 55 E2 6A", "TTTTTT", 0 }, + /*141*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefg", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 FE 68 81 A9 65 CD 3A A2 E9 E0 B7 E1 E5", "TEX symbols_left 3, process_p 1", 0 }, + /*142*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefg", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 68 81 4A 9E 59 19 83 14 93 AD 5E 19", "AAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*143*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 FE 68 69 68 36 28 3C 85 5A E9 D4 49 9A", "TEX symbols_left 3, process_p 2", 0 }, + /*144*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 68 69 8B CD BC 1F A4 A7 9A CE F6 66", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*145*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghi", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 80 5F FE DA BF FA 16 71 15 22 4D E3 F3", "TEX symbols_left 1, process_p 0", 0 }, + /*146*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghi", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 80 5F FE DA BF FA 16 71 15 22 4D E3 F3", "TTTTTTTTT", 0 }, + /*147*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdef\001g", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 00 3D FE 86 3B 2F 83 51 99 C0 A1 EC DD", "TEX symbols_left 1, process_p 0", 0 }, + /*148*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdef\001g", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 02 68 51 87 9F 1D E9 36 3E B2 5F 4F", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*149*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefg\001", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 7D 02 FE CF C2 FD EA DA F8 6C 56 15 9E", "TEX symbols_left 1, process_p 0", 0 }, + /*150*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefg\001", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 68 02 AC 5C B2 29 96 15 DB C2 87 96", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*151*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefg\001h", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 7D 02 69 7A 9B EB A4 5E DE 99 25 01 8C", "TEX symbols_left 1, process_p 1", 0 }, + /*152*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefg\001h", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 00 3E DC 69 2C DB 8D 1B C4 DF 8C 9A", "ATTTTTTTT; BWIPP same as FAST_MODE", 0 }, + /*153*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 81 EB 84 25 32 6E 1B 5A FB 1D 25 4A", "TEX symbols_left 1, process_p 1, backtracks", 0 }, + /*154*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 83 42 A7 27 45 DE 64 B7 93 23 AF 04", "ATTTTTTTT; BWIPP same as FAST_MODE", 1 }, + /*155*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefgh\001", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 81 FB 93 93 FD 1E 3B BA 1D 16 4D 59 41 EC B9", "TEX symbols_left 1, process_p 1, backtracks", 0 }, + /*156*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefgh\001", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 83 42 A7 27 45 DE 64 B7 93 23 AF 04", "ATTTTTTTT; BWIPP same as FAST_MODE", 1 }, + /*157*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001i", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 31 35 48 9B 93 6E 15 BB 02 9D F4", "TEX symbols_left 3, process_p 2, backtracks", 0 }, + /*158*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001i", 0, 0, 8, 32, 0, 1, "62 63 64 65 66 67 68 69 02 6A D2 78 3E D1 EC CE 72 33 20 0E F2", "AAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*159*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefgh\001i", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 81 93 DE D7 EC 9B 7D 72 9C 68 B8 6E CF 31", "TEX symbols_left 3, process_p 2, backtracks", 0 }, + /*160*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefgh\001i", 0, 0, 16, 16, 0, 1, "62 63 64 65 66 67 68 69 02 6A 81 93 45 9D 38 FC 6B CA 1C 9B DF 3F C8 30", "AAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*161*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghi\001", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 80 5F FE 02 81 4D AB 30 86 CD D1 9D F3 15 F5 B1", "Switches to ASC for last char", 0 }, + /*162*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghi\001", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 80 5F FE 02 81 4D AB 30 86 CD D1 9D F3 15 F5 B1", "TTTTTTTTTA", 0 }, + /*163*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001i\001", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 02 81 32 55 EC 2E A7 AE 69 41 A6 1F 09 8F", "TEX symbols_left 1, process_p 1, backtracks 2", 0 }, + /*164*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh\001i\001", 0, 0, 8, 32, 0, 1, "62 EF 60 52 73 8D 83 42 89 82 80 A6 CC 72 8E 8C C5 75 D3 0D C2", "ATTTTTTTTTT; BWIPP same as FAST_MODE", 1 }, + /*165*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefJg", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 0E 25 FE 01 75 0D 9C 9C BE 40 88 BF 09", "TEX symbols_left 1, process_p 0", 0 }, + /*166*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefJg", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 4B 68 8F EA 93 94 D3 12 8F FF 2A FD", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*167*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgJ", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 7D 5B FE 6E 92 FE 83 42 F1 0B 0E 43 24", "TEX symbols_left 1, process_p 0", 0 }, + /*168*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgJ", 0, 0, 14, 14, 0, 1, "62 63 64 65 66 67 68 4B 92 0D 83 DC 75 6C 05 F8 B1 A9", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*169*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgJh", 0, 0, 14, 14, 1, 1, "EF 59 E9 6D 24 7D 5B 69 DB CB E8 CD C6 D7 FE 7D 57 36", "TEX symbols_left 1, process_p 1", 0 }, + /*170*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgJh", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 0E 26 B4 8E 41 DB 38 C1 1D D9 4F 90", "ATTTTTTTT; BWIPP same as FAST_MODE", 0 }, + /*171*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghJ", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 15 8A 35 57 7F 33 B3 48 01 E0 BD", "TEX symbols_left 1, process_p 1, backtracks", 0 }, + /*172*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghJ", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 83 9B 9F 08 C5 04 B1 AF BD 32 C5 7D", "ATTTTTTTT; BWIPP same as FAST_MODE", 1 }, + /*173*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefghJ", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 FB 93 5B D4 D2 8B EE 85 F2 3E 3F 8E E5 04", "TEX symbols_left 1, process_p 1, backtracks", 0 }, + /*174*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefghJ", 0, 0, 14, 14, 0, 1, "62 EF 60 52 73 8D 83 9B 9F 08 C5 04 B1 AF BD 32 C5 7D", "ATTTTTTTT; BWIPP same as FAST_MODE", 1 }, + /*175*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghJi", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A CF 3B 58 FE 82 46 FC 08 1E 58 03", "TEX symbols_left 3, process_p 2, backtracks", 0 }, + /*176*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghJi", 0, 0, 8, 32, 0, 1, "62 63 64 65 66 67 68 69 4B 6A 2C 76 2E B4 FD E6 9B 80 3C CB 05", "AAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*177*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefghJi", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A 81 93 16 FE 20 2B 29 EA 78 1B DE A1 C6 8C", "TEX symbols_left 3, process_p 2, backtracks", 0 }, + /*178*/ { UNICODE_MODE, 0, -1, -1, DM_SQUARE, -1, { 0, 0, "" }, "abcdefghJi", 0, 0, 16, 16, 0, 1, "62 63 64 65 66 67 68 69 4B 6A 81 93 8D B4 F4 4C 3F 52 F8 E8 B9 F0 C1 8D", "AAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*179*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghiJ", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 80 5F FE 4B 81 B3 A5 20 E3 DC F9 74 40 09 30 46", "Switches to ASC for last char", 0 }, + /*180*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghiJ", 0, 0, 8, 32, 1, 1, "EF 59 E9 6D 24 80 5F FE 4B 81 B3 A5 20 E3 DC F9 74 40 09 30 46", "TTTTTTTTTA", 0 }, + /*181*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghijkÊ", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 80 5F 93 82 BB DB FE 3E C8 EC 73 58 A7 42 46 10 49 25 99", "TEX symbols_left 1, process_p 0", 0 }, + /*182*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghijkÊ", 0, 0, 16, 16, 0, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 4B 38 32 3E 60 A3 93 26 A6 E7 35 73 96", "TTTTTTTTTAAA; BWIPP same as FAST_MODE", 0 }, + /*183*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghijkª", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 80 5F 93 82 BB B2 FE 57 D7 E5 7D 3C 87 4B 13 3B F7 90 CB", "TEX symbols_left 1, process_p 0", 0 }, + /*184*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghijkª", 0, 0, 16, 16, 0, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 2B 9B A1 52 3E FC 3A 60 03 11 72 39 70", "TTTTTTTTTAAA; BWIPP same as FAST_MODE", 0 }, + /*185*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghijkê", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 6B 59 43 1A B1 96 F4 FF C5 B5 08 AE 2F", "TEX symbols_left 3, process_p 2, backtracks", 0 }, + /*186*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "abcdefghijkê", 0, 0, 16, 16, 1, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 6B 59 43 1A B1 96 F4 FF C5 B5 08 AE 2F", "TEX symbols_left 3, process_p 2, backtracks", 0 }, + /*187*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 1, 1, "E8 8C EF 59 E9 6D 24 80 4A A9 8D FE 62 63 44 81 88 DC 73 33 70 A1 83 EA 50 CB 4E 17 90 DB", "TEX symbols left 3, process_p 1, backtracks", 0 }, + /*188*/ { GS1_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 0, 1, "E8 8C 62 63 64 65 66 67 68 69 E8 8C 62 63 44 81 43 79 B0 35 F6 1E AB 24 19 85 40 E7 B2 49", "AAAAAAAAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*189*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 1, 1, "E8 8C EF 59 E9 6D 24 80 49 B6 0D FE 62 63 44 81 72 8C DC 6B 93 0B 8A 6F 8A 52 C3 DD 67 03", "TEX symbols left 3, process_p 1, backtracks", 0 }, + /*190*/ { GS1_MODE, 0, -1, -1, -1, GS1_GS_SEPARATOR, { 0, 0, "" }, "[10]abcdefgh[10]abC", 0, 0, 12, 26, 0, 1, "E8 8C 62 63 64 65 66 67 68 69 1E 8C 62 63 44 81 1F 9A E0 BD 3C 59 8F 99 A0 DC A0 78 88 2C", "AAAAAAAAAAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*191*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>", 0, 0, 12, 12, 1, 1, "EE 00 2B 00 2B 83 3B 0A CE 32 36 65", "X12 symbols_left 0, process_p 0", 0 }, + /*192*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>", 0, 0, 12, 12, 1, 1, "EE 00 2B 00 2B 83 3B 0A CE 32 36 65", "X12 symbols_left 0, process_p 0", 0 }, + /*193*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B FE 0E 81 C0 6C BF 37 F6 D6 48 71 E2 38", "Switches to ASC for last char", 0 }, + /*194*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015", 0, 0, 14, 14, 0, 1, "0E 2B 3F 0E 2B 3F 0E 81 33 CC F8 AA 23 B8 F3 40 BC DB", "AAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*195*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B FE 0E 2B BD DB 7C 8F 14 46 F1 9F 94 BC", "Switches to ASC for last 2 chars", 0 }, + /*196*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*", 0, 0, 14, 14, 0, 1, "0E 2B 3F 0E 2B 3F 0E 2B 4E 7B 3B 12 C1 28 4A AE CA 5F", "AAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*197*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B 00 2B FE BF 81 70 74 1C 65 10 0C 06 38", "X12 symbols_left 1, process_p 0, ASC unlatch at end", 0 }, + /*198*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B 00 2B FE BF 81 70 74 1C 65 10 0C 06 38", "X12 symbols_left 1, process_p 0, ASC unlatch at end", 0 }, + /*199*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015", 0, 0, 14, 14, 1, 1, "EE 00 2B 00 2B 00 2B 0E 1C DB D8 26 3E EC CF 9C C3 4A", "X12 symbols_left 1, process_p 1, ASC no latch at end", 0 }, + /*200*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015", 0, 0, 14, 14, 0, 1, "0E EE 06 91 06 91 06 91 71 69 39 1E 01 32 D5 57 81 8E", "AXXXXXXXXX; BWIPP same as FAST_MODE", 0 }, + /*201*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015*", 0, 0, 8, 32, 1, 1, "EE 00 2B 00 2B 00 2B FE 0E 2B 65 37 5F 2F F3 96 BE 9A 03 55 68", "X12 symbols_left 3, process_p 2, ASC last 2 chars", 0 }, + /*202*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015*", 0, 0, 8, 32, 0, 1, "0E 2B EE 0C 82 0C 82 0C 82 FE E7 2D 83 16 AA 07 19 34 F4 F8 7B", "AAXXXXXXXXX; BWIPP same as FAST_MODE", 0 }, + /*203*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015*>", 0, 0, 8, 32, 1, 1, "EE 00 2B 00 2B 00 2B 00 2B FE 6E 95 3A 10 58 4E 96 06 79 09 94", "X12 symbols_left 1, process_p 0, ASC unlatch at end", 0 }, + /*204*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015*>\015*>\015*>\015*>", 0, 0, 8, 32, 1, 1, "EE 00 2B 00 2B 00 2B 00 2B FE 6E 95 3A 10 58 4E 96 06 79 09 94", "X12 symbols_left 1, process_p 0, ASC unlatch at end", 0 }, + /*205*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C", 0, 0, 14, 14, 1, 1, "F0 00 1C 5E 0B 2F C3 81 2D 71 45 13 9B FF A1 B0 0B E2", "EDIFACT symbols_left 1, process_p 0", 0 }, + /*206*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C", 0, 0, 14, 14, 1, 1, "F0 00 1C 5E 0B 2F C3 81 2D 71 45 13 9B FF A1 B0 0B E2", "EDIFACT symbols_left 1, process_p 0", 0 }, + /*207*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3", 0, 0, 14, 14, 1, 1, "F0 00 1C 5E 0B 2F C3 34 81 E8 6C 9E CE 12 CB F5 58 3F", "EDIFACT symbols_left 1, process_p 1", 0 }, + /*208*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3", 0, 0, 14, 14, 1, 1, "F0 00 1C 5E 0B 2F C3 34 81 E8 6C 9E CE 12 CB F5 58 3F", "EEEEEEEEA", 0 }, + /*209*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B7 C0 33 C6 81 E1 63 6E 5E B4 27 30 C9", "EDIFACT symbols_left 3, process_p 2", 0 }, + /*210*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+", 0, 0, 8, 32, 0, 1, "41 F0 07 17 82 CB F0 F3 2C 81 38 6D 00 EB 77 36 F8 D8 99 B4 1C", "AEEEEEEEEA; BWIPP same as FAST_MODE", 1 }, + /*211*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 1F 4D E1 79 04 2B BC 05 6C 38 73 39", "EDIFACT symbols_left 3, process_p 3", 0 }, + /*212*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 1F 4D E1 79 04 2B BC 05 6C 38 73 39", "EEEEEEEEEEE", 0 }, + /*213*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 F4 EC B3 DC 03 A3 1F B5 86 C3 F7", "EDIFACT symbols_left 0, process_p 0", 0 }, + /*214*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4", 0, 0, 8, 32, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 F4 EC B3 DC 03 A3 1F B5 86 C3 F7", "EDIFACT symbols_left 0, process_p 0", 0 }, + /*215*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4=", 0, 0, 16, 16, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 81 42 96 43 6E 92 0D A9 B1 65 3C CF 9B", "EDIFACT symbols_left 2, process_p 1", 0 }, + /*216*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4=", 0, 0, 16, 16, 0, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 81 42 96 43 6E 92 0D A9 B1 65 3C CF 9B", "EEEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /*217*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4=E", 0, 0, 16, 16, 1, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 46 AD 8C F2 D8 5D AF F3 65 08 1F E3 A5", "EDIFACT symbols_left 2, process_p 2", 0 }, + /*218*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@A1^B2?C3+D4=E", 0, 0, 16, 16, 0, 1, "41 F0 07 17 82 CB F0 F3 AC 4D 3D 46 16 18 75 8F 52 46 7B 18 F6 68 F1 43", "AEEEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /*219*/ { DATA_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\377\376", 0, 0, 12, 12, 1, 899, "EB 80 EB 7F 81 6F A8 0F 21 6F 5F 88", "FN4 A7F FN4 A7E, 1 pad", 0 }, + /*220*/ { DATA_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\377\376", 0, 0, 12, 12, 1, 899, "EB 80 EB 7F 81 6F A8 0F 21 6F 5F 88", "FN4 A7F FN4 A7E, 1 pad", 0 }, + /*221*/ { DATA_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\377\376\375", 0, 0, 12, 12, 1, 899, "E7 2C C0 55 E9 67 45 8A D2 7E A9 23", "BAS BFF BFE BFD, no padding", 0 }, + /*222*/ { DATA_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\377\376\375", 0, 0, 12, 12, 1, 899, "E7 2C C0 55 E9 67 45 8A D2 7E A9 23", "BAS BFF BFE BFD, no padding", 0 }, + /*223*/ { DATA_MODE | FAST_MODE, 3, -1, -1, -1, -1, { 0, 0, "" }, "\101\102\103\104\300\105\310", 0, 3, 16, 16, 0, 899, "F1 04 42 43 E7 87 5B F1 03 1D 36 81 2C E3 87 24 2D FD 69 9C 87 FA 8A 73", "ECI 4 ASC A41 A42 BAS B43 B44 BC0 B45 BC8; BWIPP different encodation (uses only B256, same no. of codewords)", 0 }, + /*224*/ { DATA_MODE, 3, -1, -1, -1, -1, { 0, 0, "" }, "\101\102\103\104\300\105\310", 0, 3, 16, 16, 0, 899, "F1 04 42 43 44 45 EB 41 46 EB 49 81 6E 28 91 70 A5 CC E6 32 B6 3F 15 1C", "ECI 4 ASC A41 A42 BAS B43 B44 BC0 B45 BC8; BWIPP different encodation (uses only B256, same no. of codewords)", 0 }, + /*225*/ { UNICODE_MODE | FAST_MODE, 26, -1, -1, -1, -1, { 0, 0, "" }, "ABCDÀEÈ", 0, 26, 12, 26, 1, 1, "F1 1B E7 60 2D C4 5B F1 06 58 B3 C7 21 81 57 ED 3D C0 12 2E 6C 80 58 CC 2C 05 0D 31 FC 2D", "ECI 27 BAS B41 B42 B43 B44 BC3 B80 B45 BC3 B88", 0 }, + /*226*/ { UNICODE_MODE, 26, -1, -1, -1, -1, { 0, 0, "" }, "ABCDÀEÈ", 0, 26, 12, 26, 0, 1, "F1 1B 42 43 44 45 E7 B2 06 58 B3 C7 21 81 57 ED A8 34 CC 27 DA F6 B0 4D B7 FC AF 96 56 57", "AAAABBBBB; BWIPP same as FAST_MODE", 0 }, + /*227*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "β", ZINT_WARN_USES_ECI, 9, 12, 12, 1, 1, "Warning F1 0A EB 63 81 41 56 DA C0 3D 2D CC", "ECI 10 FN4 A62", 0 }, + /*228*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "β", ZINT_WARN_USES_ECI, 9, 12, 12, 1, 1, "Warning F1 0A EB 63 81 41 56 DA C0 3D 2D CC", "ECI 10 FN4 A62", 0 }, + /*229*/ { UNICODE_MODE | FAST_MODE, 127, -1, -1, -1, -1, { 0, 0, "" }, "A", 0, 127, 12, 12, 1, 1, "F1 80 01 42 81 14 A2 86 07 F5 27 30", "ECI 128 A41", 0 }, + /*230*/ { UNICODE_MODE, 127, -1, -1, -1, -1, { 0, 0, "" }, "A", 0, 127, 12, 12, 1, 1, "F1 80 01 42 81 14 A2 86 07 F5 27 30", "ECI 128 A41", 0 }, + /*231*/ { UNICODE_MODE | FAST_MODE, 16382, -1, -1, -1, -1, { 0, 0, "" }, "A", 0, 16382, 12, 12, 1, 1, "F1 BF FE 42 81 29 57 AA A0 92 B2 45", "ECI 16383 A41", 0 }, + /*232*/ { UNICODE_MODE, 16382, -1, -1, -1, -1, { 0, 0, "" }, "A", 0, 16382, 12, 12, 1, 1, "F1 BF FE 42 81 29 57 AA A0 92 B2 45", "ECI 16383 A41", 0 }, + /*233*/ { UNICODE_MODE | FAST_MODE, 810899, -1, -1, -1, -1, { 0, 0, "" }, "A", 0, 810899, 12, 12, 1, 1, "F1 CC 51 05 42 BB A5 A7 8A C6 6E 0F", "ECI 810900 A41", 0 }, + /*234*/ { UNICODE_MODE, 810899, -1, -1, -1, -1, { 0, 0, "" }, "A", 0, 810899, 12, 12, 1, 1, "F1 CC 51 05 42 BB A5 A7 8A C6 6E 0F", "ECI 810900 A41", 0 }, + /*235*/ { UNICODE_MODE | ESCAPE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[)>\\R05\\GA\\R\\E", 0, 0, 10, 10, 1, 1, "EC 42 81 5D 17 49 F6 B6", "Macro05 A41", 0 }, + /*236*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[)>\\R05\\GA\\R\\E", 0, 0, 10, 10, 1, 1, "EC 42 81 5D 17 49 F6 B6", "Macro05 A41", 0 }, + /*237*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKLM*", 0, 0, 16, 16, 1, 1, "EE 59 E9 6D 24 80 5F 93 9A FE 4E 2B 09 FF 50 A2 83 BE 32 E1 2F 17 1E F3", "C40 == X12, p_r_6_2_1 true", 0 }, + /*238*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJKLM*", 0, 0, 16, 16, 0, 1, "42 F0 08 31 05 18 72 09 28 B3 0D 2B 63 64 96 E4 6C CE D3 47 9A 5F E8 70", "AEEEEEEEEEEEEA; BWIPP same as FAST_MODE", 0 }, + /*239*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015\015\015\015\015\015\015\015\015a\015\015\015\015\015\015\015", 0, 0, 12, 26, 1, 1, "EE 00 01 00 01 00 01 FE 62 EE 00 01 00 01 FE 0E B5 9A 73 85 83 20 23 2C E0 EC EC BF 71 E0", "a not X12 encodable", 0 }, + /*240*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\015\015\015\015\015\015\015\015\015a\015\015\015\015\015\015\015", 0, 0, 12, 26, 0, 1, "EE 00 01 00 01 00 01 FE 62 0E 0E 0E 0E 0E 0E 0E F3 21 61 11 C7 BA 48 DE 65 86 FE 7E A2 F5", "XXXXXXXXXAAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*241*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ".........a.......", 0, 0, 18, 18, 0, 1, "(32) F0 BA EB AE BA EB AE B9 F0 62 2F 2F 2F 2F 2F 2F 2F 81 78 BE 1F 90 B8 89 73 66 DC BD", "a not EDIFACT encodable; BWIPP different encodation (switches to ASCII one dot before)", 0 }, + /*242*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ".........a.......", 0, 0, 18, 18, 0, 1, "(32) 2F 2F F0 BA EB AE BA EB 9F 62 F0 BA EB AE BA EB 9F 81 F4 71 C0 AF 4F 8C 04 D9 F3 E3", "AAEEEEEEEAEEEEEEE; BWIPP different encodation", 0 }, + /*243*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[90]........[91]....", 0, 0, 12, 26, 1, 1, "E8 DC 2F 2F 2F 2F 2F 2F 2F 2F E8 DD 2F 2F 2F 2F C6 CC 13 68 0D 9D A9 A5 B8 D5 5A F3 7B 18", "Can't use GS1 EDIFACT if contains FNC1/GS", 0 }, + /*244*/ { GS1_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[90]........[91]....", 0, 0, 12, 26, 0, 1, "E8 DC 2F F0 BA EB AE BA EB 9F E8 DD 2F 2F 2F 2F FE B0 C3 BC 8E AA AC CF 01 84 72 DF 59 6A", "AAAEEEEEEEAAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*245*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[90]........", 0, 0, 8, 32, 1, 1, "E8 DC F0 BA EB AE BA EB AE 81 B1 C0 AB DA A5 92 AF E2 05 DE 56", "Can use GS1 EDIFACT if no FNC1/GS", 0 }, + /*246*/ { GS1_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[90]........", 0, 0, 8, 32, 1, 1, "E8 DC F0 BA EB AE BA EB AE 81 B1 C0 AB DA A5 92 AF E2 05 DE 56", "Can use GS1 EDIFACT if no FNC1/GS", 0 }, + /*247*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[90]ABCDEFGH[91]ABCD", 0, 0, 12, 26, 1, 1, "E8 DC E6 59 E9 6D 24 80 4A AA CE 59 E9 FE 45 81 6A 05 49 36 67 C8 00 DE 35 29 C5 9A 17 EA", "GS1 C40 ok", 0 }, + /*248*/ { GS1_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[90]ABCDEFGH[91]ABCD", 0, 0, 12, 26, 0, 1, "E8 DC 42 E6 60 52 73 8D 83 84 52 17 60 52 FE 81 25 A6 B1 A9 6D 2E 30 9E A7 F7 F8 99 55 11", "AAACCCCCCCCCCCCCC; BWIPP same as FAST_MODE", 0 }, + /*249*/ { GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[90]ABCD", 0, 0, 14, 14, 1, 1, "E8 DC 42 43 44 45 81 38 98 32 8C 23 4D 87 5A 95 04 A7", "Final ASC unlatch", 0 }, + /*250*/ { GS1_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[90]ABCD", 0, 0, 14, 14, 1, 1, "E8 DC 42 43 44 45 81 38 98 32 8C 23 4D 87 5A 95 04 A7", "AAAAAA", 0 }, + /*251*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>......", 0, 0, 12, 26, 0, 1, "EE 0C A9 0C A9 FE 3F 2F 2F 2F 2F 2F 2F 81 57 ED 0F 29 C7 9D 5D 64 61 94 14 CD A8 DF 65 8D", "X12 then ASC; BWIPP switches to ASCII earlier", 1 }, + /*252*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ">*\015>*\015>......", 0, 0, 12, 26, 0, 1, "3F 2B 0E 3F 2B 0E F0 FA EB AE BA EB 9F 81 57 ED E8 73 07 E0 2D 09 CD 94 36 26 E4 EB 34 6E", "AAAAAAEEEEEEE; BWIPP different encodation", 0 }, + /*253*/ { UNICODE_MODE | FAST_MODE, 0, -1, 4, -1, -1, { 0, 0, "" }, "ABCDEFGH", 0, 0, 16, 16, 1, 1, "E6 59 E9 6D 24 FE 48 49 81 65 FB 93 F7 A4 EA B0 37 00 4F 4C 8A 99 0B 69", "", 0 }, + /*254*/ { UNICODE_MODE, 0, -1, 4, -1, -1, { 0, 0, "" }, "ABCDEFGH", 0, 0, 16, 16, 0, 1, "F0 04 20 C4 14 61 C8 7C 81 65 FB 93 D7 12 24 0A 2D B8 CF C8 33 D8 87 D1", "EEEEEEEE; BWIPP same as FAST_MODE", 0 }, + /*255*/ { UNICODE_MODE | FAST_MODE, 0, -1, 26, -1, -1, { 0, 0, "" }, "@@@@@@@@@_", 0, 0, 8, 32, 0, 1, "F0 00 00 00 00 00 1F 41 41 60 63 50 E0 FE 8B 46 16 38 FE 58 AD", "BWIPP switches to ASCII later", 0 }, + /*256*/ { UNICODE_MODE, 0, -1, 26, -1, -1, { 0, 0, "" }, "@@@@@@@@@_", 0, 0, 8, 32, 0, 1, "41 F0 00 00 00 00 00 00 60 81 39 60 6A 49 C1 4A CD 3A 69 51 E0", "AEEEEEEEEA; BWIPP different encodation", 1 }, + /*257*/ { UNICODE_MODE | FAST_MODE, 0, -1, 4, -1, -1, { 0, 0, "" }, "@@@@@@@@@_", 0, 0, 16, 16, 0, 1, "F0 00 00 00 00 00 1F 41 41 60 81 93 F9 B0 1A A1 B9 6C D3 01 38 CD 51 75", "BWIPP switches to ASCII later", 0 }, + /*258*/ { UNICODE_MODE, 0, -1, 4, -1, -1, { 0, 0, "" }, "@@@@@@@@@_", 0, 0, 16, 16, 0, 1, "41 41 F0 00 00 00 00 00 1F 60 81 93 F3 2C 45 BF 89 58 D4 46 51 57 01 F3", "AAEEEEEEEA; BWIPP different encodation", 0 }, + /*259*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 0, 0, 26, 26, 1, 1, "(72) F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", "", 0 }, + /*260*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 0, 0, 26, 26, 1, 1, "(72) F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", 0 }, + /*261*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJK", 0, 0, 8, 32, 1, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C D8 69 88 60 B9 33 B9 31 E6 BF CA", "", 0 }, + /*262*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGHIJK", 0, 0, 8, 32, 0, 1, "F0 04 20 C4 14 61 C8 24 A2 DF B6 77 90 C2 39 AA 9B 61 7E F1 E3", "EEEEEEEEEEE; BWIPP same as FAST_MODE", 0 }, + /*263*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\001AAAAA", 0, 0, 14, 14, 1, 1, "02 42 42 42 42 42 81 38 80 00 99 9E F5 8F 04 71 FB 4E", "", 0 }, + /*264*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\001AAAAA", 0, 0, 14, 14, 0, 1, "02 42 42 42 42 42 81 38 80 00 99 9E F5 8F 04 71 FB 4E", "AAAAAA; BWIPP same as FAST_MODE", 0 }, + /*265*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\001AAAAAA", 0, 0, 14, 14, 1, 1, "02 E6 59 BF 59 BF FE 81 EC 06 F3 00 0B 1F AA CB FC EB", "", 0 }, + /*266*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\001AAAAAA", 0, 0, 14, 14, 0, 1, "02 42 F0 04 10 41 42 81 9C E9 2B 19 D3 07 3C 11 0E 63", "AAEEEEA; BWIPP same as FAST_MODE", 0 }, + /*267*/ { DATA_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\200\076\076\076\076\076\076\076", 0, 0, 8, 32, 0, 899, "E7 2D 41 EE 0C D3 0C D3 FE 3F 81 93 1A AE 50 D6 E0 FB 18 EA 2E", "BAS X12; BWIPP different encodation", 0 }, + /*268*/ { DATA_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "\200\076\076\076\076\076\076\076", 0, 0, 14, 14, 0, 899, "EB 01 3F EE 0C D3 0C D3 C3 98 B8 7F 21 0C 23 45 A9 27", "AAXXXXXX; BWIPP different encodation", 2 }, + /*269*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ".....12", 0, 0, 14, 14, 1, 1, "2F 2F 2F 2F 2F 8E 81 38 18 5E 9A 70 18 19 D0 35 7E 82", "ASC", 0 }, + /*270*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, ".....12", 0, 0, 14, 14, 0, 1, "2F 2F 2F 2F 2F 8E 81 38 18 5E 9A 70 18 19 D0 35 7E 82", "AAAAAAA; BWIPP same as FAST_MODE", 0 }, + /*271*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "aaaaaa", 0, 0, 12, 12, 1, 1, "EF 59 BF 59 BF 1B 98 38 0A E1 70 F9", "ASC", 0 }, + /*272*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "aaaaaa", 0, 0, 12, 12, 1, 1, "EF 59 BF 59 BF 1B 98 38 0A E1 70 F9", "TTTTTT", 0 }, + /*273*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "AAAAAAAAAAAAAA12a", 0, 0, 12, 26, 1, 1, "E6 59 BF 59 BF 59 BF 59 BF 59 B6 25 D2 FE 81 ED 63 5A 30 1D C5 77 70 66 93 2B 6A 40 23 22", "", 0 }, + /*274*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "AAAAAAAAAAAAAA12a", 0, 0, 12, 26, 0, 1, "E6 59 BF 59 BF 59 BF 59 BF FE 42 42 8E 62 81 ED 19 C5 3F C8 AC F1 E9 F5 68 75 AA 6C 14 72", "CCCCCCCCCCCCAAAAA; BWIPP same as FAST_MODE", 0 }, + /*275*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "1234ééé12", 0, 0, 8, 32, 0, 1, "8E A4 E7 59 D5 6B EB 6A 8E 81 22 4D 35 A9 CA 58 B3 1B 33 B7 DD", "N12 N34 BAS BE9 BE9 ASC FN4 A69 N12; BWIPP same as non-FAST_MODE", 0 }, + /*276*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "1234ééé12", 0, 0, 14, 14, 1, 1, "8E A4 E7 5A D5 6B 01 8E 1C 5C 58 A7 11 8D DD A8 D6 B9", "", 1 }, + /*277*/ { UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C 1\013*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 32 0C EE 08 9B 64 7E 57 B8 0F 04 21 72 FE 81 68 FE", "Okapi datamatrix/ascii-within-x12.png", 1 }, + /*278*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C 1\013*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 32 0C EE 08 9B 64 7E 57 B8 0F 04 21 72 FE 81 68 FE", "Okapi datamatrix/ascii-within-x12.png, process_p 2", 1 }, + /*279*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C \0131*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 21 0C EE 1F 78 0F 04 21 72 5E 21 13 97 FE 2B 81 68 FE", "process_p 1", 1 }, + /*280*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C\013 1*B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 FE 0C EE 13 8A 5E 21 13 97 08 9B 64 7E FE 42 2B 81 68 FE", "process_p 0", 1 }, + /*281*/ { UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "A*B>C 1A*B>C 1*\013B>C 1A*B>C 1A*", 0, 0, 22, 22, 1, 1, "(50) EE 57 B8 0F 04 21 72 5E 21 13 8A FE 0C EE 5E 21 13 97 08 9B 64 7E FE 42 2B 81 68 FE", "process_p 0", 1 }, + /*282*/ { GS1_MODE, 0, -1, -1, -1, -1, { 1, 2, "" }, "[20]01", 0, 0, 14, 14, 1, 1, "E9 0F 01 01 E8 96 83 81 DE 06 E8 61 E2 B5 19 CE A3 F8", "", 0 }, + /*283*/ { GS1_MODE, 3, -1, -1, -1, -1, { 1, 2, "123234" }, "[20]01", 0, 3, 8, 32, 1, 1, "E9 0F 7B EA E8 F1 04 96 83 81 47 4D F5 6F E8 62 DA 1C 06 7F 03", "", 0 }, }; const int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -1225,7 +1274,7 @@ static void test_input(const testCtx *const p_ctx) { symbol->debug = ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_DATAMATRIX, data[i].input_mode, data[i].eci, - -1 /*option_1*/, data[i].option_2, data[i].option_3, data[i].output_options, + data[i].option_1, data[i].option_2, data[i].option_3, data[i].output_options, data[i].data, -1, debug); if (data[i].structapp.count) { symbol->structapp = data[i].structapp; @@ -1236,8 +1285,9 @@ static void test_input(const testCtx *const p_ctx) { i, ret, data[i].ret, symbol->errtxt); if (p_ctx->generate) { - printf(" /*%3d*/ { %s, %d, %d, %s, %s, { %d, %d, \"%s\" }, \"%s\", %s, %d, %d, %d, %d, %d, \"%s\", \"%s\", %d },\n", - i, testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_2, + printf(" /*%3d*/ { %s, %d, %d, %d, %s, %s, { %d, %d, \"%s\" }, \"%s\"," + " %s, %d, %d, %d, %d, %d, \"%s\", \"%s\", %d },\n", + i, testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_1, data[i].option_2, testUtilOption3Name(BARCODE_DATAMATRIX, data[i].option_3), testUtilOutputOptionsName(data[i].output_options), data[i].structapp.index, data[i].structapp.count, data[i].structapp.id, @@ -1248,8 +1298,8 @@ static void test_input(const testCtx *const p_ctx) { if (ret < ZINT_ERROR) { assert_equal(symbol->eci, data[i].expected_eci, "i:%d eci %d != %d\n", i, symbol->eci, data[i].expected_eci); - assert_equal(symbol->rows, data[i].expected_rows, "i:%d rows %d != %d\n", - i, symbol->rows, data[i].expected_rows); + assert_equal(symbol->rows, data[i].expected_rows, "i:%d rows %d != %d (width %d)\n", + i, symbol->rows, data[i].expected_rows, symbol->width); assert_equal(symbol->width, data[i].expected_width, "i:%d width %d != %d\n", i, symbol->width, data[i].expected_width); } @@ -1257,7 +1307,8 @@ static void test_input(const testCtx *const p_ctx) { i, symbol->errtxt, data[i].expected); if (ret < ZINT_ERROR) { - if (do_bwipp && testUtilCanBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, debug)) { + if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, + debug)) { if (!data[i].bwipp_cmp) { if (debug & ZINT_DEBUG_TEST_PRINT) { printf("i:%d %s not BWIPP compatible (%s)\n", @@ -1267,8 +1318,8 @@ static void test_input(const testCtx *const p_ctx) { char modules_dump[144 * 144 + 1]; assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); - ret = testUtilBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, data[i].data, length, - NULL, cmp_buf, sizeof(cmp_buf), NULL); + ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, + data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); @@ -1330,7 +1381,8 @@ static void test_input(const testCtx *const p_ctx) { symbol->option_2 = data[i].option_2 != -1 ? data[i].option_2 : 0; /* Restore option_2 */ gs1 = (symbol->input_mode & 0x07) != GS1_MODE ? 0 : (symbol->output_options & GS1_GS_SEPARATOR) ? 2 : 1; - ret = zint_test_dm_encode(symbol, text, length, symbol->eci, last_seg, gs1, binary[0], &binlen); + ret = zint_test_dm_encode(symbol, text, length, symbol->eci, last_seg, gs1, + 0 /*b256_end*/, 0 /*c40_end*/, binary[0], &binlen); assert_zero(ret, "i:%d dm_encode() FAST_MODE ret %d != 0 (%s)\n", i, ret, symbol->errtxt); binlens[0] = binlen; @@ -1340,7 +1392,8 @@ static void test_input(const testCtx *const p_ctx) { gs1 = (symbol->input_mode & 0x07) != GS1_MODE ? 0 : (symbol->output_options & GS1_GS_SEPARATOR) ? 2 : 1; symbol->option_2 = data[i].option_2 != -1 ? data[i].option_2 : 0; /* Restore option_2 */ - ret = zint_test_dm_encode(symbol, text, length, symbol->eci, last_seg, gs1, binary[1], &binlen); + ret = zint_test_dm_encode(symbol, text, length, symbol->eci, last_seg, gs1, + 0 /*b256_end*/, 0 /*c40_end*/, binary[1], &binlen); assert_zero(ret, "i:%d dm_encode() minimal ret %d != 0 (%s)\n", i, ret, symbol->errtxt); binlens[1] = binlen; @@ -5917,7 +5970,7 @@ static void test_encode(const testCtx *const p_ctx) { gs1 = (symbol->input_mode & 0x07) != GS1_MODE ? 0 : (symbol->output_options & GS1_GS_SEPARATOR) ? 2 : 1; ret = zint_test_dm_encode(symbol, ZCUCP(data[i].data), length, symbol->eci, last_seg, gs1, - binary[0], &binlen); + 0 /*b256_end*/, 0 /*c40_end*/, binary[0], &binlen); assert_zero(ret, "i:%d dm_encode() FAST_MODE ret %d != 0 (%s)\n", i, ret, symbol->errtxt); binlens[0] = binlen; @@ -5927,7 +5980,7 @@ static void test_encode(const testCtx *const p_ctx) { gs1 = (symbol->input_mode & 0x07) != GS1_MODE ? 0 : (symbol->output_options & GS1_GS_SEPARATOR) ? 2 : 1; ret = zint_test_dm_encode(symbol, ZCUCP(data[i].data), length, symbol->eci, last_seg, gs1, - binary[1], &binlen); + 0 /*b256_end*/, 0 /*c40_end*/, binary[1], &binlen); assert_zero(ret, "i:%d dm_encode() minimal ret %d != 0 (%s)\n", i, ret, symbol->errtxt); binlens[1] = binlen; @@ -5955,6 +6008,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { int symbology; int input_mode; int output_options; + int option_1; int option_2; int option_3; struct zint_structapp structapp; @@ -5968,7 +6022,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { const char *expected; }; static const struct item data[] = { - /* 0*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 7 }, { TU(""), 0, 0 } }, 0, 14, 14, 1, "ISO 16022:2006 11.6 example", + /* 0*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 7 }, { TU(""), 0, 0 } }, 0, 14, 14, 1, "ISO 16022:2006 11.6 example", "10101010101010" "10000100111111" "11101100000000" @@ -5984,7 +6038,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "10011111100000" "11111111111111" }, - /* 1*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 14, 14, 1, "ISO 16022:2006 11.6 example auto-ECI", + /* 1*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("¶"), -1, 0 }, { TU("Ж"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 14, 14, 1, "ISO 16022:2006 11.6 example auto-ECI", "10101010101010" "10000100111111" "11101100000000" @@ -6000,7 +6054,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "10011111100000" "11111111111111" }, - /* 2*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("Ж"), -1, 7 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, 0, 14, 14, 1, "ISO 16022:2006 11.6 example auto-ECI inverted", + /* 2*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("Ж"), -1, 7 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, 0, 14, 14, 1, "ISO 16022:2006 11.6 example auto-ECI inverted", "10101010101010" "10001111001101" "10011111110110" @@ -6016,7 +6070,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "10011001010000" "11111111111111" }, - /* 3*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("Ж"), -1, 0 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 14, 14, 1, "ISO 16022:2006 11.6 example inverted auto-ECI", + /* 3*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("Ж"), -1, 0 }, { TU("¶"), -1, 0 }, { TU(""), 0, 0 } }, ZINT_WARN_USES_ECI, 14, 14, 1, "ISO 16022:2006 11.6 example inverted auto-ECI", "10101010101010" "10001111001101" "10011111110110" @@ -6032,7 +6086,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "10011001010000" "11111111111111" }, - /* 4*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("product:Google Pixel 4a - 128 GB of Storage - Black;price:$439.97"), -1, 3 }, { TU("品名:Google 谷歌 Pixel 4a -128 GB的存储空间-黑色;零售价:¥3149.79"), -1, 29 }, { TU("Produkt:Google Pixel 4a - 128 GB Speicher - Schwarz;Preis:444,90 €"), -1, 17 } }, 0, 52, 52, 0, "AIM ITS/04-023:2022 Annex A example **NOT SAME** example corrupt??; BWIPP different encodation", + /* 4*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("product:Google Pixel 4a - 128 GB of Storage - Black;price:$439.97"), -1, 3 }, { TU("品名:Google 谷歌 Pixel 4a -128 GB的存储空间-黑色;零售价:¥3149.79"), -1, 29 }, { TU("Produkt:Google Pixel 4a - 128 GB Speicher - Schwarz;Preis:444,90 €"), -1, 17 } }, 0, 52, 52, 0, "AIM ITS/04-023:2022 Annex A example **NOT SAME** example corrupt??; BWIPP different encodation", "1010101010101010101010101010101010101010101010101010" "1001111110000011100010110111011001110111111001111011" "1000000101110101100111011011101110011001111001000100" @@ -6086,7 +6140,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "1101011000011011100011100010001001010110110010101110" "1111111111111111111111111111111111111111111111111111" }, - /* 5*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("price:$439.97"), -1, 3 }, { TU("零售价:¥3149.79"), -1, 29 }, { TU("Preis:444,90 €"), -1, 17 } }, 0, 16, 48, 1, "AIM ITS/04-023:2022 Annex A example price only", + /* 5*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("price:$439.97"), -1, 3 }, { TU("零售价:¥3149.79"), -1, 29 }, { TU("Preis:444,90 €"), -1, 17 } }, 0, 16, 48, 1, "AIM ITS/04-023:2022 Annex A example price only", "101010101010101010101010101010101010101010101010" "100001110110010111001111101001001000110101101111" "100001011100111101001110111101110011001101011100" @@ -6104,7 +6158,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "110011100111011000101110100011101100000110010010" "111111111111111111111111111111111111111111111111" }, - /* 6*/ { BARCODE_DATAMATRIX, DATA_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("\266"), 1, 0 }, { TU("\266"), 1, 7 }, { TU("\266"), 1, 0 } }, 0, 8, 32, 1, "Standard example + extra seg, data mode", + /* 6*/ { BARCODE_DATAMATRIX, DATA_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("\266"), 1, 0 }, { TU("\266"), 1, 7 }, { TU("\266"), 1, 0 } }, 0, 8, 32, 1, "Standard example + extra seg, data mode", "10101010101010101010101010101010" "10000100100011111101000010000011" "11101100000000101110100001010100" @@ -6114,7 +6168,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "11111110000111001100101011000000" "11111111111111111111111111111111" }, - /* 7*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 1, 2, "001001" }, { { TU("A"), -1, 3 }, { TU("B"), -1, 4 }, { TU("C"), -1, 5 } }, 0, 12, 26, 1, "", + /* 7*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 1, 2, "001001" }, { { TU("A"), -1, 3 }, { TU("B"), -1, 4 }, { TU("C"), -1, 5 } }, 0, 12, 26, 1, "", "10101010101010101010101010" "10000100011110000011000101" "10011100111010100100011000" @@ -6128,7 +6182,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "10000011000001110111011000" "11111111111111111111111111" }, - /* 8*/ { BARCODE_DATAMATRIX, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("ABCDEFGHIJ"), -1, 3 }, { TU("KL"), -1, 4 }, { TU("MN"), -1, 5 } }, 0, 20, 20, 1, "", + /* 8*/ { BARCODE_DATAMATRIX, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("ABCDEFGHIJ"), -1, 3 }, { TU("KL"), -1, 4 }, { TU("MN"), -1, 5 } }, 0, 20, 20, 1, "", "10101010101010101010" "10011001100100001111" "10001100100011101110" @@ -6150,7 +6204,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "11000101100101000010" "11111111111111111111" }, - /* 9*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("ABCDEFGHIJ"), -1, 3 }, { TU("KL"), -1, 4 }, { TU("MN"), -1, 5 } }, 0, 20, 20, 0, "BWIPP same as FAST_MODE", + /* 9*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("ABCDEFGHIJ"), -1, 3 }, { TU("KL"), -1, 4 }, { TU("MN"), -1, 5 } }, 0, 20, 20, 0, "BWIPP same as FAST_MODE", "10101010101010101010" "10001010000100001111" "10000111000011101110" @@ -6172,7 +6226,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "10001111100101101010" "11111111111111111111" }, - /* 10*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("AB"), -1, 3 }, { TU("CD"), -1, 4 }, { TU("EF"), -1, 5 } }, 0, 16, 16, 1, "", + /* 10*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("AB"), -1, 3 }, { TU("CD"), -1, 4 }, { TU("EF"), -1, 5 } }, 0, 16, 16, 1, "", "1010101010101010" "1000100001000101" "1000110110110010" @@ -6190,7 +6244,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "1000000001011010" "1111111111111111" }, - /* 11*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("ABC"), -1, 3 }, { TU("DEF"), -1, 4 }, { TU("GHI"), -1, 5 } }, 0, 12, 26, 0, "BWIPP different encodation (1st seg C40)", + /* 11*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("ABC"), -1, 3 }, { TU("DEF"), -1, 4 }, { TU("GHI"), -1, 5 } }, 0, 12, 26, 0, "BWIPP different encodation (1st seg C40)", "10101010101010101010101010" "10001000011110001111000011" "10000101111001000011010000" @@ -6204,7 +6258,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "10000100100001011001101100" "11111111111111111111111111" }, - /* 12*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("ABCDEF"), -1, 3 }, { TU("GHIJKL"), -1, 4 }, { TU("MNOPQR"), -1, 5 } }, 0, 22, 22, 1, "", + /* 12*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("ABCDEF"), -1, 3 }, { TU("GHIJKL"), -1, 4 }, { TU("MNOPQR"), -1, 5 } }, 0, 22, 22, 1, "", "1010101010101010101010" "1001100110101101111101" "1000110010111101010100" @@ -6228,7 +6282,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "1000000100010110101000" "1111111111111111111111" }, - /* 13*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("abcdef"), -1, 3 }, { TU("\015*>\015*>"), -1, 4 }, { TU("ghijkl"), -1, 5 } }, 0, 22, 22, 0, "BWIPP different encodation", + /* 13*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("abcdef"), -1, 3 }, { TU("\015*>\015*>"), -1, 4 }, { TU("ghijkl"), -1, 5 } }, 0, 22, 22, 0, "BWIPP different encodation", "1010101010101010101010" "1001110110000010100111" "1000110011011101100100" @@ -6252,7 +6306,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "1100010101011000000000" "1111111111111111111111" }, - /* 14*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, { 0, 0, "" }, { { TU("abcdefg"), -1, 3 }, { TU("\015*>\015*>\015*"), -1, 4 }, { TU("hijklm"), -1, 5 } }, 0, 22, 22, 0, "BWIPP different encodation", + /* 14*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, { { TU("abcdefg"), -1, 3 }, { TU("\015*>\015*>\015*"), -1, 4 }, { TU("hijklm"), -1, 5 } }, 0, 22, 22, 0, "BWIPP different encodation", "1010101010101010101010" "1000101010011000110001" "1000011111011010010010" @@ -6276,6 +6330,150 @@ static void test_encode_segs(const testCtx *const p_ctx) { "1100011100111001010010" "1111111111111111111111" }, + /* 15*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, 0, -1, DM_C40_START, { 0, 0, "" }, { { TU("price:$439.97"), -1, 3 }, { TU("零售价:¥3149.79"), -1, 29 }, { TU("Preis:444,90 €"), -1, 17 } }, 0, 36, 36, 0, "AIM ITS/04-023:2022 Annex A example price only; BWIPP C40 only up to 1st ECI (which must be in ASCII, so makes sense)", + "101010101010101010101010101010101010" + "100110001111010011110010001000011101" + "100000111000010100111111010001010110" + "110000000001010101101111010000000111" + "100101100001011110101001010001010110" + "111100111001000011100010010000000001" + "110001111110000110100011111111010110" + "111000001110000111111010000011100101" + "110011111100000000100001111010010000" + "111111110101110011100011111011011011" + "111100001010110100100100110011001000" + "101101100000110101110110000100110001" + "111111000000010100101100110111110000" + "101000011100110011111011000010001101" + "101100101110011000100110101100000000" + "101110110001110111100110011010001001" + "110110001111001010101111011101111000" + "111111111111111111111111111111111111" + "101010101010101010101010101010101010" + "100011000001100001101001001000100111" + "100111110010100010110011101111001010" + "101000011010111111101111000000110111" + "110000011001011000110101100000100110" + "111000000101000101101111001101111111" + "100001111101011010100101001101111110" + "101110101011011011101110011110100101" + "110111010000110010111110111110111110" + "101110111001110011110101110010000111" + "101000111001101000101111001010011010" + "110001001001110001110101001011010001" + "111011111011011100111111110111100000" + "101011100111100011110001110100010001" + "111010111111000110110100011011001100" + "100110101000010111111101001011000001" + "100100001101011100100111000101000010" + "111111111111111111111111111111111111" + }, + /* 16*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, 21, -1, DM_C40_START, { 0, 0, "" }, { { TU("price:$439.97"), -1, 3 }, { TU("零售价:¥3149.79"), -1, 29 }, { TU("Preis:444,90 €"), -1, 17 } }, 0, 36, 36, 0, "AIM ITS/04-023:2022 Annex A example price only; BWIPP C40 only up to 1st ECI", + "101010101010101010101010101010101010" + "100110001111010011110010001001001001" + "100000111000010100111111010101110010" + "110000000001010101101111000101101111" + "100101100001011110101001011000011110" + "111100111001000011100011010110011001" + "110001111110000110100011011010100010" + "111000001110000111111001100000111001" + "110011111100000000100111110011011100" + "111111110101110011101011001011000111" + "111100001010110100111001001110101000" + "101101100000110011110010000101100001" + "111111000000010100111100010111111000" + "101000011100101011101101000011100101" + "101100101110010010101100100010011000" + "101110110000111001101110010001010001" + "110110001111100010110111101011010000" + "111111111111111111111111111111111111" + "101010101010101010101010101010101010" + "100011000010111001101001011110010001" + "100111110010101010110001001001001010" + "101000000001111111101110111001001111" + "111100001001011000110100100001111110" + "111111101001000101100001110011110111" + "101101101101011000100110011010000110" + "110110011011011011100001110001110001" + "100010010000111010100001110011011000" + "100001111001111111100111100010111011" + "110100111001100110111010011100101110" + "111101001001111111100111100110011001" + "111011111000110010110000010101000110" + "101011100101110111110011010110011011" + "111010111011001000100111010111100100" + "100110100100010011100101000111100101" + "100100001001011110101111000000110010" + "111111111111111111111111111111111111" + }, + /* 17*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, 0, -1, DM_B256_START, { 0, 0, "" }, { { TU("price:$439.97"), -1, 3 }, { TU("零售价:¥3149.79"), -1, 29 }, { TU("Preis:444,90 €"), -1, 17 } }, 0, 32, 32, 0, "AIM ITS/04-023:2022 Annex A example price only; BWIPP no Base 256 start", + "10101010101010101010101010101010" + "10011110011000111101110101001101" + "10000110000110001101001011100010" + "11000110010001011011001001000101" + "10111001110001101010010101011100" + "11110100001000011001000000100101" + "10100010111101001111001010011110" + "10000010110101011001110100101111" + "10101000001010101100000000110110" + "11001001110101111101100100011001" + "11011111001000001010011111000110" + "10001001011101011100001111111001" + "10011111001101001101000110000100" + "10010110101000011110100110000001" + "10110101001111001110000000011110" + "11111111111111111111111111111111" + "10101010101010101010101010101010" + "11101110000100011001100100100001" + "10011011011011001001010010010010" + "11111101111100011011011100110001" + "10101001111111001111101001000110" + "10010100100100111000111101111001" + "10000111010011101101111110100010" + "10011111001000011011001111011101" + "10011010100000001101010111100010" + "11001110110111011110101010000011" + "10100000011101001100100011110010" + "11000100001011111000000101101101" + "11100001010111001100000010100110" + "10010111111111011011001110111011" + "10100101000101001101110111110010" + "11111111111111111111111111111111" + }, + /* 18*/ { BARCODE_DATAMATRIX, UNICODE_MODE, -1, 29, -1, DM_B256_START, { 0, 0, "" }, { { TU("price:$439.97"), -1, 3 }, { TU("零售价:¥3149.79"), -1, 29 }, { TU("Preis:444,90 €"), -1, 17 } }, 0, 32, 32, 0, "AIM ITS/04-023:2022 Annex A example price only; BWIPP no Base 256 start", + "10101010101010101010101010101010" + "10011110011000111101110101001011" + "10000110000110001101001011100010" + "11000110010001011011001001000111" + "10111001110001101010010101011100" + "11110100001000011001000000100101" + "10100010111101001111001010011110" + "10000010110101011001101100101111" + "10101000001010101100011100110110" + "11001001110101111101110000001001" + "11011111001000001011000111000010" + "10001001011101011011011111100001" + "10011111000101001001101011011100" + "10010110100101011111100010011101" + "10110101010010001011001111100000" + "11111111111111111111111111111111" + "10101010101010101010101010101010" + "11101110110000011100010110110001" + "10011001011100001100111111001010" + "11111110011101011001000110000001" + "10100111010110001010100110000110" + "10011010001101111111011010101001" + "10010101001011101111000010100010" + "10110110010000111110111110010001" + "10100011011111101110111000110000" + "11100100111010011101001011010011" + "11110110001000101111100011010010" + "10010110011010011011011100111101" + "11101010000001001100001010111100" + "11011101111100011010000110101111" + "11011111000111101101110011110000" + "11111111111111111111111111111111" + }, }; const int data_size = ARRAY_SIZE(data); int i, j, seg_count, ret; @@ -6299,7 +6497,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { assert_nonnull(symbol, "Symbol not created\n"); testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, - -1 /*option_1*/, data[i].option_2, data[i].option_3, data[i].output_options, + data[i].option_1, data[i].option_2, data[i].option_3, data[i].output_options, NULL, 0, debug); if (data[i].structapp.count) { symbol->structapp = data[i].structapp; @@ -6313,13 +6511,17 @@ static void test_encode_segs(const testCtx *const p_ctx) { if (p_ctx->generate) { char escaped1[4096]; char escaped2[4096]; - int length = data[i].segs[0].length == -1 ? (int) z_ustrlen(data[i].segs[0].source) : data[i].segs[0].length; - int length1 = data[i].segs[1].length == -1 ? (int) z_ustrlen(data[i].segs[1].source) : data[i].segs[1].length; - int length2 = data[i].segs[2].length == -1 ? (int) z_ustrlen(data[i].segs[2].source) : data[i].segs[2].length; - printf(" /*%3d*/ { %s, %s, %s, %d, %s, { %d, %d, \"%s\" }, { { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d } }, %s, %d, %d, %d, \"%s\",\n", + int length = data[i].segs[0].length == -1 ? (int) z_ustrlen(data[i].segs[0].source) + : data[i].segs[0].length; + int length1 = data[i].segs[1].length == -1 ? (int) z_ustrlen(data[i].segs[1].source) + : data[i].segs[1].length; + int length2 = data[i].segs[2].length == -1 ? (int) z_ustrlen(data[i].segs[2].source) + : data[i].segs[2].length; + printf(" /*%3d*/ { %s, %s, %s, %d, %d, %s, { %d, %d, \"%s\" }, { { TU(\"%s\"), %d, %d }," + " { TU(\"%s\"), %d, %d }, { TU(\"%s\"), %d, %d } }, %s, %d, %d, %d, \"%s\",\n", i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), testUtilOutputOptionsName(data[i].output_options), - data[i].option_2, testUtilOption3Name(data[i].symbology, data[i].option_3), + data[i].option_1, data[i].option_2, testUtilOption3Name(data[i].symbology, data[i].option_3), data[i].structapp.index, data[i].structapp.count, data[i].structapp.id, testUtilEscape((const char *) data[i].segs[0].source, length, escaped, sizeof(escaped)), data[i].segs[0].length, data[i].segs[0].eci, @@ -6342,15 +6544,16 @@ static void test_encode_segs(const testCtx *const p_ctx) { ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row); assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d\n", i, ret, width, row); - if (do_bwipp && testUtilCanBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, debug)) { + if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, + debug)) { if (!data[i].bwipp_cmp) { if (debug & ZINT_DEBUG_TEST_PRINT) { printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); } } else { - ret = testUtilBwippSegs(i, symbol, -1, data[i].option_2, data[i].option_3, data[i].segs, - seg_count, NULL, cmp_buf, sizeof(cmp_buf)); + ret = testUtilBwippSegs(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, + data[i].segs, seg_count, NULL, cmp_buf, sizeof(cmp_buf)); assert_zero(ret, "i:%d %s testUtilBwippSegs ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); @@ -7639,8 +7842,8 @@ static void test_minimalenc(const testCtx *const p_ctx) { binlen = 0; symbol->input_mode |= FAST_MODE; gs1 = (symbol->input_mode & 0x07) != GS1_MODE ? 0 : (symbol->output_options & GS1_GS_SEPARATOR) ? 2 : 1; - ret = zint_test_dm_encode(symbol, ZCUCP(data[i].data), length, symbol->eci, last_seg, gs1, binary[0], - &binlen); + ret = zint_test_dm_encode(symbol, ZCUCP(data[i].data), length, symbol->eci, last_seg, gs1, + 0 /*b256_end*/, 0 /*c40_end*/, binary[0], &binlen); assert_equal(ret, data[i].ret, "i:%d dm_encode() FAST_MODE ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); @@ -7649,8 +7852,8 @@ static void test_minimalenc(const testCtx *const p_ctx) { binlen = 0; symbol->input_mode &= ~FAST_MODE; gs1 = (symbol->input_mode & 0x07) != GS1_MODE ? 0 : (symbol->output_options & GS1_GS_SEPARATOR) ? 2 : 1; - ret = zint_test_dm_encode(symbol, ZCUCP(data[i].data), length, symbol->eci, last_seg, gs1, binary[1], - &binlen); + ret = zint_test_dm_encode(symbol, ZCUCP(data[i].data), length, symbol->eci, last_seg, gs1, + 0 /*b256_end*/, 0 /*c40_end*/, binary[1], &binlen); assert_equal(ret, data[i].ret, "i:%d dm_encode() minimal ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); diff --git a/backend/tests/test_library.c b/backend/tests/test_library.c index 0daf8936..11540ffd 100644 --- a/backend/tests/test_library.c +++ b/backend/tests/test_library.c @@ -1524,9 +1524,12 @@ static void test_encode_file_directory(const testCtx *const p_ctx) { static void test_encode_file(const testCtx *const p_ctx) { int ret; struct zint_symbol *symbol = NULL; - const char *data = "1"; - const char *filename = "test_encode_file_in.txt"; - const char *outfile = "test_encode_file_out.gif"; + const char data[] = "1"; + const char filename[] = "test_encode_file_in.txt"; + const char outfile[] = "test_encode_file_out.gif"; + const char long_filename[] = "test_encode_file_in_1234567890123456789012345678901234567890.txt"; + const char long_filename_errtxt[] + = "Error 233: Unable to read input file \"test_encod...56789012345678901234567890.txt\" ("; FILE *fp; (void)p_ctx; @@ -1580,6 +1583,19 @@ static void test_encode_file(const testCtx *const p_ctx) { ZBarcode_Delete(symbol); } + { + symbol = ZBarcode_Create(); + assert_nonnull(symbol, "Symbol not created\n"); + + strcpy(symbol->outfile, outfile); + ret = ZBarcode_Encode_File_and_Buffer_Vector(symbol, long_filename, 0); + assert_nonzero(ret, "ret %d == 0 (%s)\n", ret, symbol->errtxt); + assert_zero(strncmp(symbol->errtxt, long_filename_errtxt, sizeof(long_filename_errtxt) - 1), + "strncmp(%s, %s) != 0\n", symbol->errtxt, long_filename_errtxt); + + ZBarcode_Delete(symbol); + } + ret = testUtilRemove(filename); assert_zero(ret, "testUtilRemove(%s) != 0 (%d: %s)\n", filename, errno, strerror(errno)); @@ -1632,7 +1648,7 @@ static void test_bad_args(const testCtx *const p_ctx) { "Error 200: Input segments NULL", "Error 239: Filename NULL", "Error 778: No input data", - "Error 229: Unable to read input file (", /* Excluding OS-dependent `errno` stuff */ + "Error 229: Unable to read input file \"", /* Excluding filename and OS-dependent `errno` stuff */ "Error 771: Too many input segments (maximum 256)", "Error 205: No input data", "Error 777: Input too long", diff --git a/backend/tests/test_mailmark.c b/backend/tests/test_mailmark.c index 2160fd09..68e256c8 100644 --- a/backend/tests/test_mailmark.c +++ b/backend/tests/test_mailmark.c @@ -463,7 +463,9 @@ static void test_2d_encode(const testCtx *const p_ctx) { int debug = p_ctx->debug; struct item { + int option_1; int option_2; + int option_3; const char *data; int ret; @@ -478,7 +480,7 @@ static void test_2d_encode(const testCtx *const p_ctx) { /* Mailmark Barcode Definition Document 15th Feb 2021 (MBDD) https://www.royalmailtechnical.com/rmt_docs/User_Guides_2021/Mailmark_Barcode_definition_document_20210215.pdf */ static const struct item data[] = { - /* 0*/ { 8, "JGB 01Z999999900000001EC1A1AA1A0SN35TQ ", 0, 24, 24, 1, "MMRLLL Section 2.4 Code Type Format 7 figure **NOT SAME**, figure switches from C40 to ASC to C40 to ASC contrary to spec", + /* 0*/ { -1, 8, -1, "JGB 01Z999999900000001EC1A1AA1A0SN35TQ ", 0, 24, 24, 1, "MMRLLL Section 2.4 Code Type Format 7 figure **NOT SAME**, figure switches from C40 to ASC to C40 to ASC contrary to spec", "101010101010101010101010" "110000010100011001100001" "101001011100001011111010" @@ -504,7 +506,7 @@ static void test_2d_encode(const testCtx *const p_ctx) { "100111100000101110001010" "111111111111111111111111" }, - /* 1*/ { 10, "JGB 01Z999999900000001EC1A1AA1A0SN35TQ ", 0, 32, 32, 1, "MMRLLL Section 2.4 Code Type Format 9 figure **NOT SAME**, figure switches as above", + /* 1*/ { -1, 10, -1, "JGB 01Z999999900000001EC1A1AA1A0SN35TQ ", 0, 32, 32, 1, "MMRLLL Section 2.4 Code Type Format 9 figure **NOT SAME**, figure switches as above", "10101010101010101010101010101010" "11000001010001111001100100101111" "10100101110000101011110000000000" @@ -538,7 +540,7 @@ static void test_2d_encode(const testCtx *const p_ctx) { "11001101100011101011101000001000" "11111111111111111111111111111111" }, - /* 2*/ { 30, "JGB 01Z999999900000001EC1A1AA1A0SN35TQ ", 0, 16, 48, 1, "MMRLLL Section 2.4 Code Type Format 29 figure **NOT SAME**, figure switches as above", + /* 2*/ { -1, 30, -1, "JGB 01Z999999900000001EC1A1AA1A0SN35TQ ", 0, 16, 48, 1, "MMRLLL Section 2.4 Code Type Format 29 figure **NOT SAME**, figure switches as above", "101010101010101010101010101010101010101010101010" "110000010100011001101111111101100101100100011101" "101001011100001011100010100100011001100010101100" @@ -556,7 +558,7 @@ static void test_2d_encode(const testCtx *const p_ctx) { "101101100011101110101010100001111111001010100010" "111111111111111111111111111111111111111111111111" }, - /* 3*/ { 30, "JGB 012100123412345678AB19XY1A 0 REFERENCE 12300AB", 0, 16, 48, 1, "MBDD Table 4 example", + /* 3*/ { -1, 30, -1, "JGB 012100123412345678AB19XY1A 0 REFERENCE 12300AB", 0, 16, 48, 1, "MBDD Table 4 example", "101010101010101010101010101010101010101010101010" "110000010100010110001111111011100000001001111111" "101001011100011001110010100100010100110011111100" @@ -574,7 +576,7 @@ static void test_2d_encode(const testCtx *const p_ctx) { "101111100001111111101010100010111101100101001100" "111111111111111111111111111111111111111111111111" }, - /* 4*/ { 10, "JGB 012100123412345678AB19XY1A 0 www.xyz.com", 0, 32, 32, 1, "MBDD Table 5 (& BWIPP) example", + /* 4*/ { -1, 10, -1, "JGB 012100123412345678AB19XY1A 0 www.xyz.com", 0, 32, 32, 1, "MBDD Table 5 (& BWIPP) example", "10101010101010101010101010101010" "11000001010001011111111110001111" "10100101110001101001111111000000" @@ -608,7 +610,7 @@ static void test_2d_encode(const testCtx *const p_ctx) { "11000011100001101111110101011100" "11111111111111111111111111111111" }, - /* 5*/ { 10, "JGB 010100000700009001B707RH1A 0SN35XX ABCDEFGHIJ1234567890ABCDEFGHIJ1234567890A", 0, 32, 32, 1, "TEC-IT example, same", + /* 5*/ { -1, 10, -1, "JGB 010100000700009001B707RH1A 0SN35XX ABCDEFGHIJ1234567890ABCDEFGHIJ1234567890A", 0, 32, 32, 1, "TEC-IT example, same", "10101010101010101010101010101010" "11000001010001111000100110110001" "10100101110000101010110010100000" @@ -642,7 +644,75 @@ static void test_2d_encode(const testCtx *const p_ctx) { "10111101100000001010110001010110" "11111111111111111111111111111111" }, - /* 6*/ { 10, "JGB 010100000700009001B707RH1A 0SN35XX é", 0, 32, 32, 1, "", + /* 6*/ { -1, 10, -1, "JGB 010100000700009001B707RH1A 0SN35XX é", 0, 32, 32, 1, "", + "10101010101010101010101010101010" + "11000001010001111001101100001111" + "10100101110000101011111110000000" + "10101000010110011001101011000101" + "10001100111000101111000111011110" + "10011100011000011100101000100101" + "11001111001000101010010010011110" + "10100101011000111100001100101111" + "10101111010111101100111100110100" + "11001001100100111001110000010111" + "11001000001001001101001111011110" + "11010000001111111011011101101101" + "11001000010000101001101010011010" + "11010111000101011111111101111111" + "10111101100011101110001100110100" + "11111111111111111111111111111111" + "10101010101010101010101010101010" + "11011101100000011000000001110001" + "11110000111100101000011000101010" + "11001011110010011000011101110001" + "11011111000101001011100101011100" + "10010101101100011100010000011101" + "10011001101011101110100111101000" + "11101010110010111001111100100101" + "10011011111101001000101111110100" + "10011101010101111111111000111101" + "11100001010010101011001010000000" + "10011010101011111000011010001001" + "11101001100100001101010001011000" + "10001001100100011011110101100101" + "11001011100001001010111101010100" + "11111111111111111111111111111111" + }, + /* 7*/ { 0, 10, DM_C40_START, "JGB 010100000700009001B707RH1A 0SN35XX é", 0, 32, 32, 0, "BWIPP fixes c40headerlength at 45", + "10101010101010101010101010101010" + "11000001010001111000000111101111" + "10100101110000101010011111000000" + "10101000010110011000111011000101" + "10001100111000101111000111011110" + "10011100011000011100101000100101" + "11001111001000101010010010011110" + "10100101011000111100001100101111" + "10101111010111101100111100110100" + "11001001100100111001110000010111" + "11001000001001001101000111010010" + "11010000001111111011011111100001" + "11001000010000101001010110001010" + "11010111000101011111111010110011" + "10111101100011101111010010010000" + "11111111111111111111111111111111" + "10101010101010101010101010101010" + "11011101100000011011100000000001" + "11110000111100001001011110110010" + "11001011110010011010101001010001" + "11011111000110001011101010011000" + "10010101101100011010001110010101" + "10011001101111101011100011110000" + "11101010110000011011000010101101" + "10011011011100101100100000010110" + "10011101010111111011000011110101" + "11100001000100101110110101110000" + "10011000100011011101111110110001" + "11100100110001001010010111001100" + "10001001110001011010101100000001" + "11000001100010101010110110001100" + "11111111111111111111111111111111" + }, + /* 8*/ { 40, 10, DM_C40_START, "JGB 010100000700009001B707RH1A 0SN35XX é", 0, 32, 32, 1, "", "10101010101010101010101010101010" "11000001010001111001101100001111" "10100101110000101011111110000000" @@ -699,7 +769,7 @@ static void test_2d_encode(const testCtx *const p_ctx) { assert_nonnull(symbol, "Symbol not created\n"); length = testUtilSetSymbol(symbol, BARCODE_MAILMARK_2D, -1 /*input_mode*/, -1 /*eci*/, - -1 /*option_1*/, data[i].option_2, -1 /*option_3*/, -1 /*output_options*/, + data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); ret = ZBarcode_Encode(symbol, TCU(data[i].data), length); @@ -707,8 +777,9 @@ static void test_2d_encode(const testCtx *const p_ctx) { i, ret, data[i].ret, symbol->errtxt); if (p_ctx->generate) { - printf(" /*%3d*/ { %d, \"%s\", %s, %d, %d, %d, \"%s\",\n", - i, data[i].option_2, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), + printf(" /*%3d*/ { %d, %d, %s, \"%s\", %s, %d, %d, %d, \"%s\",\n", + i, data[i].option_1, data[i].option_2, testUtilOption3Name(symbol->symbology, data[i].option_3), + testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment); testUtilModulesPrint(symbol, " ", "\n"); printf(" },\n"); @@ -725,15 +796,16 @@ static void test_2d_encode(const testCtx *const p_ctx) { assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data); - if (do_bwipp && testUtilCanBwipp(i, symbol, -1, data[i].option_2, -1, debug)) { + if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, + debug)) { if (!data[i].bwipp_cmp) { if (debug & ZINT_DEBUG_TEST_PRINT) { printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment); } } else { - ret = testUtilBwipp(i, symbol, -1, data[i].option_2, -1, data[i].data, length, NULL, cmp_buf, - sizeof(cmp_buf), NULL); + ret = testUtilBwipp(i, symbol, data[i].option_1, data[i].option_2, data[i].option_3, + data[i].data, length, NULL, cmp_buf, sizeof(cmp_buf), NULL); assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index 8ef2989e..5ca19e09 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -624,20 +624,27 @@ const char *testUtilOption3Name(int symbology, int option_3) { } else { name = (option_3 & 0xFF) ? "-1" : "0"; } - } else if (symbology == BARCODE_DATAMATRIX || symbology == BARCODE_HIBC_DM) { + } else if (symbology == BARCODE_DATAMATRIX || symbology == BARCODE_HIBC_DM || symbology == BARCODE_MAILMARK_2D) { if (option_3 > 0) { - if ((option_3 & 0x7F) == DM_SQUARE) { + /* Note only catering for commonly used combinations here */ + if ((option_3 & DM_SQUARE_DMRE_MASK) == DM_SQUARE) { if ((option_3 & DM_ISO_144) == DM_ISO_144) { name = "DM_SQUARE | DM_ISO_144"; } else { name = "DM_SQUARE"; } - } else if ((option_3 & 0x7F) == DM_DMRE) { + } else if ((option_3 & DM_SQUARE_DMRE_MASK) == DM_DMRE) { if ((option_3 & DM_ISO_144) == DM_ISO_144) { name = "DM_DMRE | DM_ISO_144"; } else { name = "DM_DMRE"; } + } else if ((option_3 & DM_B256_C40_START_MASK) == DM_B256_C40_START_MASK) { + name = "DM_B256_START | DM_C40_START"; + } else if ((option_3 & DM_B256_C40_START_MASK) == DM_B256_START) { + name = "DM_B256_START"; + } else if ((option_3 & DM_B256_C40_START_MASK) == DM_C40_START) { + name = "DM_C40_START"; } else if ((option_3 & DM_ISO_144) == DM_ISO_144) { name = "DM_ISO_144"; } else { @@ -2380,7 +2387,7 @@ static const char *testUtilBwippName(int index, const struct zint_symbol *symbol { "", BARCODE_AUSREDIRECT, 68, 0, 0, 0, 0, 0, }, { "isbn", BARCODE_ISBNX, 69, 0, 1, 0, 0, 1 /*gs1_cvt*/, }, { "royalmail", BARCODE_RM4SCC, 70, 0, 0, 0, 0, 0, }, - { "datamatrix", BARCODE_DATAMATRIX, 71, 0, 1, 1, 1, 0, }, + { "datamatrix", BARCODE_DATAMATRIX, 71, 1, 1, 1, 1, 0, }, { "ean14", BARCODE_EAN14, 72, 0, 0, 1 /*GS1CARET*/, 0, 1 /*gs1_cvt*/, }, { "code39", BARCODE_VIN, 73, 0, 0, 0, 0, 0, }, { "codablockf", BARCODE_CODABLOCKF, 74, 1, 1, 0, 10 /*linear_row_height*/, 0, }, @@ -2411,7 +2418,7 @@ static const char *testUtilBwippName(int index, const struct zint_symbol *symbol { "hibccode39", BARCODE_HIBC_39, 99, 0, 0, 0, 0, 0, }, { "", -1, 100, 0, 0, 0, 0, 0, }, { "", -1, 101, 0, 0, 0, 0, 0, }, - { "hibcdatamatrix", BARCODE_HIBC_DM, 102, 0, 1, 1, 0, 0, }, + { "hibcdatamatrix", BARCODE_HIBC_DM, 102, 1, 1, 1, 0, 0, }, { "", -1, 103, 0, 0, 0, 0, 0, }, { "hibcqrcode", BARCODE_HIBC_QR, 104, 1, 1, 1, 0, 0, }, { "", -1, 105, 0, 0, 0, 0, 0, }, @@ -2428,7 +2435,7 @@ static const char *testUtilBwippName(int index, const struct zint_symbol *symbol { "hanxin", BARCODE_HANXIN, 116, 0, 0, 0, 0, 0, }, { "", -1, 117, 0, 0, 0, 0, 0, }, { "", -1, 118, 0, 0, 0, 0, 0, }, - { "mailmark", BARCODE_MAILMARK_2D, 119, 0, 1, 0, 0, 0, }, + { "mailmark", BARCODE_MAILMARK_2D, 119, 1, 1, 1, 0, 0, }, { "code128", BARCODE_UPU_S10, 120, 0, 0, 0, 0, 0, }, { "", BARCODE_MAILMARK_4S, 121, 0, 0, 0, 0, 0, }, /* Note BWIPP mailmark is BARCODE_MAILMARK_2D above */ { "", -1, 122, 0, 0, 0, 0, 0, }, @@ -3446,8 +3453,9 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int added_dmre = 1; } } - if ((option_3 & 0x7F) != DM_SQUARE && symbol->width != symbol->height) { - if ((option_3 & 0x7F) == DM_DMRE && !added_dmre) { + if ((option_3 == -1 || (option_3 & DM_SQUARE_DMRE_MASK) != DM_SQUARE) + && symbol->width != symbol->height) { + if (option_3 != -1 && (option_3 & DM_SQUARE_DMRE_MASK) == DM_DMRE && !added_dmre) { sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%sdmre", strlen(bwipp_opts_buf) ? " " : ""); /*added_dmre = 1; */ } @@ -3455,6 +3463,12 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int strlen(bwipp_opts_buf) ? " " : ""); bwipp_opts = bwipp_opts_buf; } + if (option_3 != -1 && option_1 >= 0 && + ((option_3 & DM_B256_C40_START_MASK) == DM_C40_START + || (option_3 & DM_B256_C40_START_MASK) == DM_B256_C40_START_MASK)) { /* DM_C40_START trumps */ + sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%sc40headerlength=%d", + strlen(bwipp_opts_buf) ? " " : "", option_1 ? option_1 : 9999); + } if (option_3 != -1) { bwipp_opts = bwipp_opts_buf; } diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index c34e45ddb56a794e14d87c232726c850f03f18f9..b6821a7ddc779571e673aab3819111de8824ce1e 100644 GIT binary patch literal 159164 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 literal 157064 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 z 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 b00H9434p*-vMt`}vBYQl0ssI200dcD0YAcH diff --git a/backend/tif.c b/backend/tif.c index 4e49a27c..3d4cfc47 100644 --- a/backend/tif.c +++ b/backend/tif.c @@ -103,6 +103,7 @@ static int tif_lzw_putCode(struct filemem *fmp, const int code, const int bitsPe "manuscript in public domain" according to "Encyclopedia of Graphics File Formats" (2nd edition, 1996) by James D. Murray and William vanRyper, Chapter 9 "Data Compression", p.178 */ +/* Copyright (C) 1988 Bob Montgomery */ static int tif_lzw_compress(struct filemem *fmp, const unsigned char *bp, const unsigned int blen) { short suffixes[TIF_LZW_TABLE_SIZE] = {0}; /* "shade[]" in Montgomery diagram */ /* A child is made up of a parent (or prefix) code plus a suffix byte diff --git a/backend/zint.h b/backend/zint.h index 30f3f790..936ae4a6 100644 --- a/backend/zint.h +++ b/backend/zint.h @@ -332,9 +332,15 @@ extern "C" { #define ZINT_AZTEC_FULL 128 /* Only consider Full versions on automatic symbol size selection */ /* Data Matrix specific options (`symbol->option_3`) */ -#define DM_SQUARE 100 /* Only consider square versions on automatic symbol size selection */ -#define DM_DMRE 101 /* Consider DMRE versions on automatic symbol size selection */ -#define DM_ISO_144 128 /* Use ISO instead of "de facto" format for 144x144 (i.e. don't skew ECC) */ +/* OR-able, but only one of DM_BASE_256_START/DM_C40_START, and only one of DM_SQUARE/DM_DMRE */ +#define DM_B256_START 0x02 /* Use Base 256 encodation initially, length given in `option_1` (0 = all) */ +#define DM_C40_START 0x08 /* Use C40 encodation initially, length given in `option_1` (0 = all) */ +#define DM_SQUARE 0x64 /* Only consider square versions on automatic symbol size selection */ +#define DM_DMRE 0x65 /* Consider DMRE versions on automatic symbol size selection */ +#define DM_ISO_144 0x80 /* Use ISO instead of "de facto" format for 144x144 (i.e. don't skew ECC) */ +/* Masks for testing the exclusive pairs above */ +#define DM_B256_C40_START_MASK 0x0A /* DM_B256_START or DM_C40_START */ +#define DM_SQUARE_DMRE_MASK 0x65 /* DM_SQUARE or DM_DMRE */ /* QR, Han Xin, Grid Matrix specific options (`symbol->option_3`) */ #define ZINT_FULL_MULTIBYTE 200 /* Enable Kanji/Hanzi compression for Latin-1 & binary data */ diff --git a/backend_qt/qzint.cpp b/backend_qt/qzint.cpp index 7e9da102..d6f5593b 100644 --- a/backend_qt/qzint.cpp +++ b/backend_qt/qzint.cpp @@ -1380,8 +1380,16 @@ namespace Zint { } if (m_symbol == BARCODE_DATAMATRIX || m_symbol == BARCODE_HIBC_DM) { + if (option3() & DM_B256_C40_START_MASK) { + arg_int(cmd, option3() & DM_B256_START ? "--dmb256=" : "--dmc40=", option1(), true /*allowZero*/); + } arg_bool(cmd, "--dmiso144", (option3() & DM_ISO_144) == DM_ISO_144); - arg_bool(cmd, "--dmre", (option3() & 0x7F) == DM_DMRE); + arg_bool(cmd, "--dmre", (option3() & DM_SQUARE_DMRE_MASK) == DM_DMRE); + } else if (m_symbol == BARCODE_MAILMARK_2D) { + /* Accessing C40_START for MAILMARK_2D not currently in GUI but may be added later */ + if ((option3() & DM_B256_C40_START_MASK) == DM_C40_START) { + arg_int(cmd, "--dmc40=", option1(), true /*allowZero*/); + } } if ((m_symbol == BARCODE_DOTCODE || (isDotty() && dotty())) && dotSize() != 0.8f) { @@ -1494,7 +1502,7 @@ namespace Zint { arg_bool(cmd, "--small", !notext && (fontSetting() & SMALL_TEXT)); if (m_symbol == BARCODE_DATAMATRIX || m_symbol == BARCODE_HIBC_DM) { - arg_bool(cmd, "--square", (option3() & 0x7F) == DM_SQUARE); + arg_bool(cmd, "--square", (option3() & DM_SQUARE_DMRE_MASK) == DM_SQUARE); } if (supportsStructApp()) { diff --git a/backend_qt/tests/test_qzint.cpp b/backend_qt/tests/test_qzint.cpp index 8071af15..07126466 100644 --- a/backend_qt/tests/test_qzint.cpp +++ b/backend_qt/tests/test_qzint.cpp @@ -1010,7 +1010,7 @@ private slots: QTest::newRow("BARCODE_DATAMATRIX (GS1Raw + GS1SyntaxEngine)") << true << 0.0f << "" << BARCODE_DATAMATRIX << (GS1_MODE | ESCAPE_MODE) // symbology-inputMode << "010952012345678810BATCH4\\G2107" << "" // text-primary - << 0.0f << -1 << 0 << DM_SQUARE << 1.0f // height-scale + << 0.0f << 2 << 0 << (DM_B256_START | DM_SQUARE) << 1.0f // height-scale << 0.0f << false << 0.7f << 1.0f // dpmm-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk @@ -1019,14 +1019,14 @@ private slots: << 0 << false << false << true << true // eci-gs1SyntaxEngine << false << false << false << WARN_DEFAULT << false // readerInit-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp - << "zint -b 71 -d '010952012345678810BATCH4\\G2107' --esc --gs1raw --gs1strict --gssep --square" - << "zint.exe -b 71 -d \"010952012345678810BATCH4\\G2107\" --esc --gs1raw --gs1strict --gssep --square" + << "zint -b 71 -d '010952012345678810BATCH4\\G2107' --dmb256=2 --esc --gs1raw --gs1strict --gssep --square" + << "zint.exe -b 71 -d \"010952012345678810BATCH4\\G2107\" --dmb256=2 --esc --gs1raw --gs1strict --gssep --square" << "" << "" << "" << ""; QTest::newRow("BARCODE_DATAMATRIX") << false << 0.0f << "" << BARCODE_DATAMATRIX << (DATA_MODE | ESCAPE_MODE | FAST_MODE) // symbology-inputMode << "ABCDEFGH\\x01I" << "" // text-primary - << 0.0f << -1 << 0 << DM_ISO_144 << 1.0f // height-scale + << 0.0f << 0 << 0 << (DM_C40_START | DM_ISO_144) << 1.0f // height-scale << 0.0f << false << 0.7f << 1.0f // dpmm-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk @@ -1035,8 +1035,24 @@ private slots: << 0 << false << false << false << false // eci-gs1SyntaxEngine << false << false << false << WARN_DEFAULT << false // readerInit-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp - << "zint -b 71 --binary -d 'ABCDEFGH\\x01I' --dmiso144 --esc --fast" - << "zint.exe -b 71 --binary -d \"ABCDEFGH\\x01I\" --dmiso144 --esc --fast" + << "zint -b 71 --binary -d 'ABCDEFGH\\x01I' --dmc40=0 --dmiso144 --esc --fast" + << "zint.exe -b 71 --binary -d \"ABCDEFGH\\x01I\" --dmc40=0 --dmiso144 --esc --fast" + << "" << "" << "" << ""; + + QTest::newRow("BARCODE_MAILMARK_2D") << false << 0.0f << "" + << BARCODE_DATAMATRIX << UNICODE_MODE // symbology-inputMode + << "JGB 012100123412345678AB19XY1A 0 www.xyz.com" << "" // text-primary + << 0.0f << 0 << 0 << DM_C40_START << 1.0f // height-scale + << 0.0f << false << 0.7f << 1.0f // dpmm-textGap + << 5.0f << 0 << 0 << "" // guardDescent-structAppID + << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk + << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting + << true << false << false << false << true << 90 // showText-rotateAngle + << 0 << false << false << false << false // eci-gs1SyntaxEngine + << false << false << false << WARN_DEFAULT << false // readerInit-debug + << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp + << "zint -b 71 -d 'JGB 012100123412345678AB19XY1A 0 www.xyz.com' --dmc40=0 --rotate=90" + << "zint.exe -b 71 -d \"JGB 012100123412345678AB19XY1A 0 www.xyz.com\" --dmc40=0 --rotate=90" << "" << "" << "" << ""; QTest::newRow("BARCODE_DBAR_EXPSTK_CC") << false << 40.8f << "" diff --git a/backend_tcl/zint.c b/backend_tcl/zint.c index 00d4ff0f..6421f2b8 100644 --- a/backend_tcl/zint.c +++ b/backend_tcl/zint.c @@ -191,6 +191,8 @@ - Fiddled with some help capitalization. 2026-02-25 GL - Added -gs1raw switch. +2026-03-30 GL +- Added -dmb256 & -dmc40 switches. */ #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) @@ -564,6 +566,8 @@ static const char help_message[] = "zint tcl(stub,obj) dll\n" " -cols integer: Codablock F, DotCode, PDF417: number of columns\n" " -compliantheight bool: warn if height not compliant, and use standard default\n" /* cli option --data is standard parameter */ + " -dmb256 integer: start Data Matrix in Base 256 mode for given length (0 means all)\n" + " -dmc40 integer: start Data Matrix in C40 mode for given length (0 means all)\n" " -dmiso144 bool: use ISO format for 144x144 Data Matrix symbols\n" " -dmre bool: allow Data Matrix Rectangular Extended\n" " -dotsize number: radius ratio of dots from 0.01 to 1.0\n" @@ -911,7 +915,8 @@ static int Encode(Tcl_Interp *interp, int objc, static const char *optionList[] = { "-addongap", "-azfull", "-barcode", "-bg", "-bind", "-bindtop", "-bold", "-border", "-box", - "-cols", "-compliantheight", "-dmiso144", "-dmre", "-dotsize", "-dotty", + "-cols", "-compliantheight", + "-dmb256", "-dmc40", "-dmiso144", "-dmre", "-dotsize", "-dotty", "-eci", "-esc", "-extraesc", "-fast", "-fg", "-format", "-fullmultibyte", "-gs1nocheck", "-gs1parens", "-gs1raw", "-gs1strict", "-gssep", "-guarddescent", @@ -925,7 +930,8 @@ static int Encode(Tcl_Interp *interp, int objc, enum iOption { iAddonGap, iAzFull, iBarcode, iBG, iBind, iBindTop, iBold, iBorder, iBox, - iCols, iCompliantHeight, iDMISO144, iDMRE, iDotSize, iDotty, + iCols, iCompliantHeight, + iDMB256, iDMC40, iDMISO144, iDMRE, iDotSize, iDotty, iECI, iEsc, iExtraEsc, iFast, iFG, iFormat, iFullMultiByte, iGS1NoCheck, iGS1Parens, iGS1Raw, iGS1Strict, iGSSep, iGuardDescent, @@ -1012,6 +1018,8 @@ static int Encode(Tcl_Interp *interp, int objc, case iAddonGap: case iBorder: case iCols: + case iDMB256: + case iDMC40: case iMask: case iMode: case iRotate: @@ -1293,12 +1301,12 @@ static int Encode(Tcl_Interp *interp, int objc, case iSquare: /* DM_SQUARE overwrites DM_DMRE */ if (intValue) - my_symbol->option_3 = DM_SQUARE | (my_symbol->option_3 & ~0x7F); + my_symbol->option_3 = DM_SQUARE | (my_symbol->option_3 & ~DM_SQUARE_DMRE_MASK); break; case iDMRE: /* DM_DMRE overwrites DM_SQUARE */ if (intValue) - my_symbol->option_3 = DM_DMRE | (my_symbol->option_3 & ~0x7F); + my_symbol->option_3 = DM_DMRE | (my_symbol->option_3 & ~DM_SQUARE_DMRE_MASK); break; case iDMISO144: if (intValue) @@ -1367,6 +1375,26 @@ static int Encode(Tcl_Interp *interp, int objc, my_symbol->border_width = intValue; } break; + case iDMB256: + if (intValue < 0) { + Tcl_SetObjResult(interp, + Tcl_NewStringObj("Data Matrix Base 256 mode length out of range", -1)); + fError = 1; + } else { + my_symbol->option_1 = intValue; + my_symbol->option_3 = DM_B256_START | (my_symbol->option_3 & ~DM_B256_C40_START_MASK); + } + break; + case iDMC40: + if (intValue < 0) { + Tcl_SetObjResult(interp, + Tcl_NewStringObj("Data Matrix C40 mode length out of range", -1)); + fError = 1; + } else { + my_symbol->option_1 = intValue; + my_symbol->option_3 = DM_C40_START | (my_symbol->option_3 & ~DM_B256_C40_START_MASK); + } + break; case iGuardDescent: if ((float)doubleValue < 0.0f || (float)doubleValue > 50.0f) { Tcl_SetObjResult(interp, diff --git a/debian/copyright b/debian/copyright index 601e519e..17ac0f0a 100644 --- a/debian/copyright +++ b/debian/copyright @@ -13,11 +13,12 @@ License: GPL-3.0-or-later Files: backend/* Copyright: - Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2007-2026 Robin Stuart Copyright (C) 2014-2026 Harald Oehlmann Copyright (C) Cliff Hones 2004 Copyright (c) 2004 Adrian Kennard, Andrews & Arnold Ltd Copyright (c) 2015, Harald Kuhr + Copyright (C) 1988 Bob Montgomery Copyright (C) 2024-2025 Antoine Merino Copyright (c) 2006 Stefan Schmidt Copyright (C) 2016 Zoe Stuart @@ -66,14 +67,14 @@ Files: backend/ksx1001.h backend/sjis.h Copyright: - Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2009-2026 Robin Stuart Copyright © 1991-2023 Unicode, Inc. License: BSD-3-Clause and Unicode-3.0 Files: backend/channel.c Copyright: - Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2008-2026 Robin Stuart Copyright © AIM 1997 Copyright (c) 2004-2026 Terry Burton License: BSD-3-Clause and MIT and AIM @@ -84,7 +85,7 @@ Files: backend/hanxin.c backend/qr.* Copyright: - Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2008-2026 Robin Stuart Copyright (c) 2004-2026 Terry Burton Copyright (c) 2008-2009 Bjoern Hoehrmann Copyright (c) Project Nayuki @@ -95,7 +96,7 @@ Files: backend/rss.c backend/tools/gen_pwr928_table.php Copyright: - Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2008-2026 Robin Stuart Copyright (c) 2004-2026 Terry Burton Copyright (C) 2006 BSI License: BSD-3-Clause and MIT and BSI @@ -103,14 +104,14 @@ License: BSD-3-Clause and MIT and BSI Files: backend/pcx.c Copyright: - Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2009-2026 Robin Stuart Copyright 1999-2013 ImageMagick Studio LLC License: BSD-3-Clause and ImageMagick Files: backend/pdf417.c Copyright: - Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2008-2026 Robin Stuart Copyright (C) 2004 (Grandzebu). License: BSD-3-Clause and GPL-2.0-or-later diff --git a/docs/manual.html b/docs/manual.html index f381fe03..26283968 100644 --- a/docs/manual.html +++ b/docs/manual.html @@ -6504,6 +6504,12 @@ ISO/IEC standard placement, use option --dmiso144 (API option_3 |= DM_ISO_144).

For a faster but less optimal encodation, the --fast option (API input_mode |= FAST_MODE) may be used.

+

The encodation mode of initial input characters may be forced using +the --dmb256 (API option_3 |= DM_B256_START) +and --dmc40 (API option_3 |= DM_C40_START) +options. Both take an integer (API option_1) which +specifies how many initial characters to encode in the respective mode, +with 0 meaning all.

Data Matrix supports Structured Append of up to 16 symbols and a numeric ID (file identifications), which can be set by using the --structapp option (see 4.17 @@ -9249,6 +9255,16 @@ anything.

pipe or a file. Use --filetype to specify output format.

+
--dmb256=INTEGER
+
+

For Data Matrix symbols, encode the first INTEGER input +characters in Base 256 mode. 0 means all input.

+
+
--dmc40=INTEGER
+
+

For Data Matrix symbols, encode the first INTEGER input +characters in C40 mode. 0 means all input.

+
--dmiso144

For Data Matrix symbols, use the standard ISO/IEC codeword placement diff --git a/docs/manual.pmd b/docs/manual.pmd index d592329a..225c3a3b 100644 --- a/docs/manual.pmd +++ b/docs/manual.pmd @@ -4345,6 +4345,12 @@ placement, use option `--dmiso144` (API `option_3 |= DM_ISO_144`). For a faster but less optimal encodation, the `--fast` option (API `input_mode |= FAST_MODE`) may be used. +The encodation mode of initial input characters may be forced using the +`--dmb256` (API `option_3 |= DM_B256_START`) and `--dmc40` (API `option_3 |= +DM_C40_START`) options. Both take an integer (API `option_1`) which specifies +how many initial characters to encode in the respective mode, with `0` meaning +all. + Data Matrix supports Structured Append of up to 16 symbols and a numeric ID (file identifications), which can be set by using the `--structapp` option (see [4.17 Structured Append]) (API `structapp`). The ID consists of 2 numbers `ID1` diff --git a/docs/manual.txt b/docs/manual.txt index b2e18b19..79f9e7c0 100644 --- a/docs/manual.txt +++ b/docs/manual.txt @@ -4143,6 +4143,11 @@ placement, use option --dmiso144 (API option_3 |= DM_ISO_144). For a faster but less optimal encodation, the --fast option (API input_mode |= FAST_MODE) may be used. +The encodation mode of initial input characters may be forced using the --dmb256 +(API option_3 |= DM_B256_START) and --dmc40 (API option_3 |= DM_C40_START) +options. Both take an integer (API option_1) which specifies how many initial +characters to encode in the respective mode, with 0 meaning all. + Data Matrix supports Structured Append of up to 16 symbols and a numeric ID (file identifications), which can be set by using the --structapp option (see 4.17 Structured Append) (API structapp). The ID consists of 2 numbers ID1 and @@ -5321,6 +5326,16 @@ OPTIONS Send output to stdout, which in most cases should be re-directed to a pipe or a file. Use --filetype to specify output format. +--dmb256=INTEGER + + For Data Matrix symbols, encode the first INTEGER input characters in Base + 256 mode. 0 means all input. + +--dmc40=INTEGER + + For Data Matrix symbols, encode the first INTEGER input characters in C40 + mode. 0 means all input. + --dmiso144 For Data Matrix symbols, use the standard ISO/IEC codeword placement for 144 diff --git a/docs/zint.1 b/docs/zint.1 index 208296d1..52295228 100644 --- a/docs/zint.1 +++ b/docs/zint.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 3.9 +.\" Automatically generated by Pandoc 3.9.0.2 .\" .TH "ZINT" "1" "March 2026" "Version 2.16.0.9" .SH NAME @@ -124,6 +124,16 @@ Send output to stdout, which in most cases should be re\-directed to a pipe or a file. Use \f[CR]\-\-filetype\f[R] to specify output format. .TP +\f[CR]\-\-dmb256=INTEGER\f[R] +For Data Matrix symbols, encode the first \f[I]INTEGER\f[R] input +characters in Base 256 mode. +0 means all input. +.TP +\f[CR]\-\-dmc40=INTEGER\f[R] +For Data Matrix symbols, encode the first \f[I]INTEGER\f[R] input +characters in C40 mode. +0 means all input. +.TP \f[CR]\-\-dmiso144\f[R] For Data Matrix symbols, use the standard ISO/IEC codeword placement for 144 x 144 (\f[CR]\-\-vers=24\f[R]) sized symbols, instead of the default diff --git a/docs/zint.1.pmd b/docs/zint.1.pmd index ce1c884a..f0329eae 100644 --- a/docs/zint.1.pmd +++ b/docs/zint.1.pmd @@ -113,6 +113,14 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S : Send output to stdout, which in most cases should be re-directed to a pipe or a file. Use `--filetype` to specify output format. +`--dmb256=INTEGER` + +: For Data Matrix symbols, encode the first *INTEGER* input characters in Base 256 mode. 0 means all input. + +`--dmc40=INTEGER` + +: For Data Matrix symbols, encode the first *INTEGER* input characters in C40 mode. 0 means all input. + `--dmiso144` : For Data Matrix symbols, use the standard ISO/IEC codeword placement for 144 x 144 (`--vers=24`) sized symbols, diff --git a/frontend/main.c b/frontend/main.c index fe36f91d..7d5bd520 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -184,16 +184,18 @@ static void usage(const int no_png, const int have_gs1syntaxengine) { " --compliantheight Warn if height not compliant, and use standard default\n" " -d, --data=DATA Set the symbol data content (segment 0)\n", stdout); fputs( " --direct Send output to stdout\n" + " --dmb256=INTEGER Start Data Matrix in Base 256 for given length (0 all)\n" + " --dmc40=INTERGER Start Data Matrix in C40 mode for given length (0 all)\n" " --dmiso144 Use ISO format for 144x144 Data Matrix symbols\n" - " --dmre Allow Data Matrix Rectangular Extended\n" - " --dotsize=NUMBER Set radius of dots in dotty mode\n" - " --dotty Use dots instead of squares for matrix symbols\n", stdout); - fputs( " --dump Dump hexadecimal representation to stdout\n" + " --dmre Allow Data Matrix Rectangular Extended\n", stdout); + fputs( " --dotsize=NUMBER Set radius of dots in dotty mode\n" + " --dotty Use dots instead of squares for matrix symbols\n" + " --dump Dump hexadecimal representation to stdout\n" " -e, --ecinos Display ECI (Extended Channel Interpretation) table\n" - " --eci=INTEGER Set the ECI code for the data (segment 0)\n" - " --embedfont Embed font in vector output (SVG only)\n" - " --esc Process escape sequences in input data\n", stdout); - fputs( " --extraesc Process symbology-specific escape sequences (Code 128)\n" + " --eci=INTEGER Set the ECI code for the data (segment 0)\n", stdout); + fputs( " --embedfont Embed font in vector output (SVG only)\n" + " --esc Process escape sequences in input data\n" + " --extraesc Process symbology-specific escape sequences (Code 128)\n" " --fast Use faster encodation or other shortcuts if available\n" " --fg=COLOUR Specify a foreground colour (as RGB(A) or \"C,M,Y,K\")\n", stdout); printf(" --filetype=TYPE Set output file type BMP/EMF/EPS/GIF/PCX%s/SVG/TIF/TXT\n", no_png_type); @@ -205,17 +207,17 @@ static void usage(const int no_png, const int have_gs1syntaxengine) { if (have_gs1syntaxengine) { fputs( " --gs1strict Use GS1 Syntax Engine to strictly validate GS1 data\n", stdout); } - fputs( " --gssep Use separator GS for GS1 (Data Matrix)\n", stdout); - fputs( " --guarddescent=NUMBER Set height of guard bar descent in X-dims (EAN/UPC)\n" + fputs( " --gssep Use separator GS for GS1 (Data Matrix)\n" + " --guarddescent=NUMBER Set height of guard bar descent in X-dims (EAN/UPC)\n" " --guardwhitespace Add quiet zone indicators (\"<\"/\">\") to HRT (EAN/UPC)\n" " -h, --help Display help message\n" - " --height=NUMBER Set height of symbol in multiples of X-dimension\n" - " --heightperrow Treat height as per-row\n", stdout); - fputs( " -i, --input=FILE Read input data from FILE\n" + " --height=NUMBER Set height of symbol in multiples of X-dimension\n", stdout); + fputs( " --heightperrow Treat height as per-row\n" + " -i, --input=FILE Read input data from FILE\n" " --init Create Reader Initialisation (Programming) symbol\n" " --mask=INTEGER Set masking pattern to use (QR/Han Xin/DotCode)\n" - " --mirror Use batch data to determine filename\n" - " --mode=INTEGER Set encoding mode (MaxiCode/Composite)\n", stdout); + " --mirror Use batch data to determine filename\n", stdout); + fputs( " --mode=INTEGER Set encoding mode (MaxiCode/Composite)\n", stdout); printf(" --nobackground Remove background (EMF/EPS/GIF%s/SVG/TIF only)\n", no_png_type); fputs( " --noquietzones Disable default quiet zones\n" " --notext Remove human readable text (HRT)\n", stdout); @@ -1138,7 +1140,7 @@ static int batch_process(struct zint_symbol *const symbol, const char *const fil } /* Skip escape characters */ - if ((buffer[i] == '\\') && (symbol->input_mode & ESCAPE_MODE)) { + if (buffer[i] == '\\' && (symbol->input_mode & ESCAPE_MODE)) { i++; if (buffer[i] == 'x') { i += 2; @@ -1183,9 +1185,9 @@ static int batch_process(struct zint_symbol *const symbol, const char *const fil break; } character = (unsigned char) intChar; - } while ((!feof(file)) && (character != '\n')); + } while (!feof(file) && character != '\n'); } - } while ((!feof(file)) && (line_count < 2000000000)); + } while (!feof(file) && line_count < 2000000000); if (character != '\n') { fprintf(stderr, "Warning 104: No newline at end of input file, last line **IGNORED**\n"); @@ -1548,7 +1550,7 @@ int main(int argc, char **argv) { OPT_ADDONGAP = 128, OPT_AZFULL, 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_DMISO144, OPT_DMRE, OPT_DOTSIZE, OPT_DOTTY, OPT_DUMP, + OPT_DIRECT, OPT_DMISO144, OPT_DMRE, OPT_DMB256, OPT_DMC40, OPT_DOTSIZE, OPT_DOTTY, OPT_DUMP, OPT_ECI, OPT_EMBEDFONT, OPT_ESC, OPT_EXTRAESC, OPT_FAST, OPT_FG, OPT_FILETYPE, OPT_FULLMULTIBYTE, OPT_GS1, OPT_GS1NOCHECK, OPT_GS1PARENS, OPT_GS1RAW, OPT_GS1STRICT /*GS1SYNTAXENGINE_MODE*/, OPT_GSSEP, OPT_GUARDDESCENT, OPT_GUARDWHITESPACE, @@ -1581,6 +1583,8 @@ int main(int argc, char **argv) { {"compliantheight", 0, NULL, OPT_COMPLIANTHEIGHT}, {"data", 1, NULL, 'd'}, {"direct", 0, NULL, OPT_DIRECT}, + {"dmb256", 1, NULL, OPT_DMB256}, + {"dmc40", 1, NULL, OPT_DMC40}, {"dmiso144", 0, NULL, OPT_DMISO144}, {"dmre", 0, NULL, OPT_DMRE}, {"dotsize", 1, NULL, OPT_DOTSIZE}, @@ -1721,7 +1725,7 @@ int main(int argc, char **argv) { fprintf(stderr, "Error 131: Invalid columns value (digits only)\n"); return do_exit(ZINT_ERROR_INVALID_OPTION); } - if ((val >= 1) && (val <= 200)) { + if (val >= 1 && val <= 200) { my_symbol->option_2 = val; } else { fprintf(stderr, "Warning 111: Number of columns '%d' out of range (1 to 200), **IGNORED**\n", @@ -1736,13 +1740,46 @@ int main(int argc, char **argv) { case OPT_DIRECT: my_symbol->output_options |= BARCODE_STDOUT; break; + case OPT_DMB256: + if (!validate_int(optarg, -1 /*len*/, &val)) { + fprintf(stderr, "Error 158: Invalid Data Matrix Base 256 mode length value (digits only)\n"); + return do_exit(ZINT_ERROR_INVALID_OPTION); + } + /* C40 overrides Base 256 */ + if ((my_symbol->option_3 & DM_B256_C40_START_MASK) == DM_C40_START) { + fprintf(stderr, "Warning 159: '--dmc40' already set, '--dmb256' **IGNORED**\n"); + fflush(stderr); + warn_number = ZINT_WARN_INVALID_OPTION; + } else { + my_symbol->option_1 = val; + my_symbol->option_3 = DM_B256_START | (my_symbol->option_3 & ~DM_B256_C40_START_MASK); + } + break; + case OPT_DMC40: + if (!validate_int(optarg, -1 /*len*/, &val)) { + fprintf(stderr, "Error 160: Invalid Data Matrix C40 mode length value (digits only)\n"); + return do_exit(ZINT_ERROR_INVALID_OPTION); + } + /* C40 overwrites Base 256 */ + if ((my_symbol->option_3 & DM_B256_C40_START_MASK) == DM_B256_START) { + fprintf(stderr, "Warning 161: previous '--dmb256' overwritten by '--dmc40'\n"); + fflush(stderr); + warn_number = ZINT_WARN_INVALID_OPTION; + } + my_symbol->option_1 = val; + my_symbol->option_3 = DM_C40_START | (my_symbol->option_3 & ~DM_B256_C40_START_MASK); + break; case OPT_DMISO144: my_symbol->option_3 |= DM_ISO_144; break; case OPT_DMRE: - /* Square overwrites DMRE */ - if ((my_symbol->option_3 & 0x7F) != DM_SQUARE) { - my_symbol->option_3 = DM_DMRE | (my_symbol->option_3 & ~0x7F); + /* Square overrides DMRE */ + if ((my_symbol->option_3 & DM_SQUARE_DMRE_MASK) != DM_SQUARE) { + my_symbol->option_3 = DM_DMRE | (my_symbol->option_3 & ~DM_SQUARE_DMRE_MASK); + } else { + fprintf(stderr, "Warning 156: '--square' already set, '--dmre' **IGNORED**\n"); + fflush(stderr); + warn_number = ZINT_WARN_INVALID_OPTION; } break; case OPT_DOTSIZE: @@ -1948,7 +1985,7 @@ int main(int argc, char **argv) { fprintf(stderr, "Error 132: Invalid rows value (digits only)\n"); return do_exit(ZINT_ERROR_INVALID_OPTION); } - if ((val >= 1) && (val <= 90)) { + if (val >= 1 && val <= 90) { rows = val; } else { fprintf(stderr, "Warning 112: Number of rows '%d' out of range (1 to 90), **IGNORED**\n", val); @@ -2062,7 +2099,13 @@ int main(int argc, char **argv) { my_symbol->output_options |= SMALL_TEXT; break; case OPT_SQUARE: - my_symbol->option_3 = DM_SQUARE | (my_symbol->option_3 & ~0x7F); + /* Square overwrites DMRE */ + if ((my_symbol->option_3 & DM_SQUARE_DMRE_MASK) == DM_DMRE) { + fprintf(stderr, "Warning 157: previous '--dmre' overwritten by '--square'\n"); + fflush(stderr); + warn_number = ZINT_WARN_INVALID_OPTION; + } + my_symbol->option_3 = DM_SQUARE | (my_symbol->option_3 & ~DM_SQUARE_DMRE_MASK); break; case OPT_STRUCTAPP: memset(&my_symbol->structapp, 0, sizeof(my_symbol->structapp)); @@ -2101,7 +2144,7 @@ int main(int argc, char **argv) { fprintf(stderr, "Error 133: Invalid version value (digits only)\n"); return do_exit(ZINT_ERROR_INVALID_OPTION); } - if ((val >= 1) && (val <= 999)) { + if (val >= 1 && val <= 999) { my_symbol->option_2 = val; } else { fprintf(stderr, "Warning 113: Version value '%d' out of range (1 to 999), **IGNORED**\n", val); @@ -2411,9 +2454,9 @@ int main(int argc, char **argv) { if (error_number < ZINT_ERROR) { error_number = ret; } - if (error_number >= ZINT_ERROR) { - break; - } + } + if (error_number >= ZINT_ERROR) { + break; } } if (error_number < ZINT_ERROR) { diff --git a/frontend/tests/test_args.c b/frontend/tests/test_args.c index 9f1583be..33b87b26 100644 --- a/frontend/tests/test_args.c +++ b/frontend/tests/test_args.c @@ -295,6 +295,8 @@ static void test_dump_args(const testCtx *const p_ctx) { int output_options; int batch; int cols; + int dmb256; + int dmc40; int dmre; int eci; int fullmultibyte; @@ -310,50 +312,54 @@ static void test_dump_args(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { -1, "123", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B" }, - /* 1*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B" }, - /* 2*/ { BARCODE_CODE128, "123", "456", NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B\nD3 97 62 F7 67 49 19 8E B" }, - /* 3*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, -1, 1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "Warning 141: Can't use batch mode if data given, **IGNORED**\nD3 96 72 F7 65 C9 61 8E B" }, - /* 4*/ { BARCODE_CODE128, NULL, NULL, "123\n45\n", NULL, -1, -1, 1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B\nD3 97 62 3B 63 AC" }, - /* 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: First input file 'test_dump_args1.txt' only processed, subsequent input files **IGNORED**\nD3 96 72 F7 65 C9 61 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, "\\^Ab\011", NULL, NULL, NULL, EXTRA_ESCAPE_MODE, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 9E 8A 43 43 48 D1 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, "D0 9E 8A 43 43 48 D1 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, "D3 96 72 F7 65 C9 61 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" }, + /* 0*/ { -1, "123", NULL, NULL, NULL, -1, -1, 0, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B" }, + /* 1*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, -1, 0, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B" }, + /* 2*/ { BARCODE_CODE128, "123", "456", NULL, NULL, -1, -1, 0, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B\nD3 97 62 F7 67 49 19 8E B" }, + /* 3*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, -1, 1, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "Warning 141: Can't use batch mode if data given, **IGNORED**\nD3 96 72 F7 65 C9 61 8E B" }, + /* 4*/ { BARCODE_CODE128, NULL, NULL, "123\n45\n", NULL, -1, -1, 1, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B\nD3 97 62 3B 63 AC" }, + /* 5*/ { BARCODE_CODE128, NULL, NULL, "123\n45\n", "7\n", -1, -1, 1, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "Warning 144: First input file 'test_dump_args1.txt' only processed, subsequent input files **IGNORED**\nD3 96 72 F7 65 C9 61 8E B\nD3 97 62 3B 63 AC" }, + /* 6*/ { BARCODE_CODE128, "\t", NULL, NULL, NULL, -1, -1, 0, -1, -1, -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, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 90 D2 1A 63 AC" }, + /* 8*/ { BARCODE_CODE128, "\\^Ab\011", NULL, NULL, NULL, EXTRA_ESCAPE_MODE, -1, 0, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 9E 8A 43 43 48 D1 8E B" }, + /* 9*/ { BARCODE_CODE128, "\\^Ab\\t", NULL, NULL, NULL, ESCAPE_MODE | EXTRA_ESCAPE_MODE, -1, 0, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D0 9E 8A 43 43 48 D1 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, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "D3 96 72 F7 65 C9 61 8E B" }, + /* 11*/ { BARCODE_CODE128, "123", NULL, NULL, NULL, -1, BARCODE_DOTTY_MODE, 0, -1, -1, -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, -1, -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, -1, -1, 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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, -1, -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, 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, 1, -1, 0, -1, -1, NULL, -1, -1, 1, -1, "Warning 157: previous '--dmre' overwritten by '--square'\nAA 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, -1, -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, -1, -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, -1, -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, -1, -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_DATAMATRIX, "abc", NULL, NULL, NULL, -1, -1, 0, -1, -1, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA 8\nB3 C\nC6 0\nBA C\nBD 0\nB4 C\nDC 0\nEB C\nD1 8\nFF C" }, + /* 34*/ { BARCODE_DATAMATRIX, "abc", NULL, NULL, NULL, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A\n8B F\nD4 C\nC2 7\n9E C\nCF 3\n8E 8\nBB F\n86 2\n95 D\nCB A\nFF F" }, + /* 35*/ { BARCODE_DATAMATRIX, "abc", NULL, NULL, NULL, -1, -1, 0, -1, -1, 1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "AA A\n8C F\n9E 4\nC5 7\nA9 6\n9F F\n97 0\nFA 9\nAA C\nDD D\nD2 2\nFF F" }, + /* 36*/ { BARCODE_DATAMATRIX, "abc", NULL, NULL, NULL, -1, -1, 0, -1, 0, 1, 0, -1, 0, -1, -1, NULL, -1, -1, 0, -1, "Warning 161: previous '--dmb256' overwritten by '--dmc40'\nAA A\n8C F\n9E 4\nC5 7\nA9 6\n9F F\n97 0\nFA 9\nAA C\nDD D\nD2 2\nFF F" }, + /* 37*/ { BARCODE_EANX_CC, "[91]12", NULL, NULL, NULL, -1, -1, 0, -1, -1, -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" }, + /* 38*/ { BARCODE_EANX_CC, "[91]12", NULL, NULL, NULL, -1, -1, 0, -1, -1, -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" }, + /* 39*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, -1, -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" }, + /* 40*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, -1, -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" }, + /* 41*/ { BARCODE_QRCODE, "\223\137", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, -1, -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" }, + /* 42*/ { BARCODE_QRCODE, "\223\137", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, -1, -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" }, + /* 43*/ { BARCODE_QRCODE, "\\x93\\x5F", NULL, NULL, NULL, DATA_MODE | ESCAPE_MODE, -1, 0, -1, -1, -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" }, + /* 44*/ { BARCODE_QRCODE, "点", NULL, NULL, NULL, -1, -1, 0, -1, -1, -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" }, + /* 45*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, -1, -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" }, + /* 46*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, -1, -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" }, + /* 47*/ { BARCODE_HANXIN, "é", NULL, NULL, NULL, DATA_MODE, -1, 0, -1, -1, -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; @@ -386,6 +392,8 @@ static void test_dump_args(const testCtx *const p_ctx) { arg_output_options(cmd, data[i].output_options); arg_bool(cmd, "--batch", data[i].batch); arg_int(cmd, "--cols=", data[i].cols); + arg_int(cmd, "--dmb256=", data[i].dmb256); + arg_int(cmd, "--dmc40=", data[i].dmc40); arg_bool(cmd, "--dmre", data[i].dmre); arg_int(cmd, "--eci=", data[i].eci); arg_bool(cmd, "--fullmultibyte", data[i].fullmultibyte); diff --git a/frontend_qt/grpAztec.ui b/frontend_qt/grpAztec.ui index 80f902f9..f47c915d 100644 --- a/frontend_qt/grpAztec.ui +++ b/frontend_qt/grpAztec.ui @@ -359,7 +359,7 @@ formatted with Application Identifiers (AIs) - H&IBC + &HIBC Process data as a Health Industry Barcode (HIBC) @@ -741,7 +741,7 @@ Maximum length 32 and cannot contain spaces (ignored if disabled) - I&D: + &ID: Qt::AlignLeft|Qt::AlignLeading|Qt::AlignVCenter diff --git a/frontend_qt/grpC128.ui b/frontend_qt/grpC128.ui index e30741b5..5ec56dd9 100644 --- a/frontend_qt/grpC128.ui +++ b/frontend_qt/grpC128.ui @@ -71,7 +71,7 @@ formatted with Application Identifiers (AIs) - H&IBC + &HIBC Process data as a Health Industry Barcode (HIBC) diff --git a/frontend_qt/grpCodablockF.ui b/frontend_qt/grpCodablockF.ui index e5e60ca6..12591d84 100644 --- a/frontend_qt/grpCodablockF.ui +++ b/frontend_qt/grpCodablockF.ui @@ -348,7 +348,7 @@ - Number of Ro&ws: + Nu&mber of Rows: Set number of rows @@ -605,7 +605,7 @@ the Appearance tab is not checked (ignored if disabled) - Row &Height: + Ro&w Height: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter @@ -777,7 +777,7 @@ separating rows - H&IBC + &HIBC Process data as a Health Industry Barcode (HIBC) diff --git a/frontend_qt/grpDM.ui b/frontend_qt/grpDM.ui index caad40d2..ccf691ff 100644 --- a/frontend_qt/grpDM.ui +++ b/frontend_qt/grpDM.ui @@ -23,7 +23,7 @@ - + Si&ze: @@ -31,12 +31,12 @@ Set height and width (H x W) of symbol - cmbDM200Size + cmbDMSize - + Set height and width (H x W) of symbol @@ -341,19 +341,19 @@ versions on automatic symbol size selection - + Encoding Mode How to process data - + QLayout::SetMinimumSize - + S&tandard @@ -366,7 +366,7 @@ versions on automatic symbol size selection - + GS&1 Data @@ -377,9 +377,9 @@ formatted with Application Identifiers (AIs) - + - H&IBC + &HIBC Process data as a Health Industry Barcode (HIBC) @@ -393,19 +393,104 @@ the data with a slash "/" - - - Use separator GS &for GS1 - - - Use Group Separator (ASCII 0x1D) to separate GS1 AIs + + + + + Use separator &GS for GS1 + + + Use Group Separator (ASCII 0x1D) to separate GS1 AIs instead of the preferred FNC1 (ignored if disabled) - - - false - - + + + false + + + + + + + + + Start &Mode: + + + Mode to start encodation in + + + cmbDMStartMode + + + + + + + Select mode to start encodation in + + + + Disabled + + + + + Base 256 + + + + + C40 + + + + + + + + false + + + Le&ngth: + + + Number of initial characters +to encode in Start Mode +(ignored if disabled) + + + spnDMStartModeLength + + + + + + + false + + + Number of initial characters +to encode in Start Mode +(ignored if disabled) + + + 0 + + + 3116 + + + 0 + + + All + + + + + + @@ -715,7 +800,7 @@ Value of each ID ranges from 1 to 254 (ignored if disabled) - I&D: + &ID: Qt::AlignLeft|Qt::AlignLeading|Qt::AlignVCenter diff --git a/frontend_qt/grpDotCode.ui b/frontend_qt/grpDotCode.ui index 0b54bf36..4eafc2b9 100644 --- a/frontend_qt/grpDotCode.ui +++ b/frontend_qt/grpDotCode.ui @@ -1056,7 +1056,7 @@ - &Mask: + Mas&k: Manually specify which mask to use. diff --git a/frontend_qt/grpGrid.ui b/frontend_qt/grpGrid.ui index 8744f6e7..32500016 100644 --- a/frontend_qt/grpGrid.ui +++ b/frontend_qt/grpGrid.ui @@ -485,7 +485,7 @@ Value ranges from 0 to 255 (ignored if disabled) - I&D: + &ID: Qt::AlignLeft|Qt::AlignLeading|Qt::AlignVCenter diff --git a/frontend_qt/grpHX.ui b/frontend_qt/grpHX.ui index aa5dd058..403d904a 100644 --- a/frontend_qt/grpHX.ui +++ b/frontend_qt/grpHX.ui @@ -520,7 +520,7 @@ error correction codewords - &Mask: + Mas&k: Manually specify which mask to use diff --git a/frontend_qt/grpMQR.ui b/frontend_qt/grpMQR.ui index ce1ecc16..bf63f682 100644 --- a/frontend_qt/grpMQR.ui +++ b/frontend_qt/grpMQR.ui @@ -111,7 +111,7 @@ error correction codewords - &Mask: + Mas&k: Manually specify which mask to use diff --git a/frontend_qt/grpMicroPDF.ui b/frontend_qt/grpMicroPDF.ui index ca1acef3..45611457 100644 --- a/frontend_qt/grpMicroPDF.ui +++ b/frontend_qt/grpMicroPDF.ui @@ -82,7 +82,7 @@ the Appearance tab is not checked (ignored if disabled) - Row &Height: + Ro&w Height: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter @@ -170,7 +170,7 @@ tab will be re-enabled) Set height per row to default value - De&fault + Def&ault @@ -238,7 +238,7 @@ tab will be re-enabled) - H&IBC + &HIBC Process data as a Health Industry Barcode (HIBC) @@ -375,7 +375,7 @@ Numbers only, in triplets, maximum length 30 (10 triplets) (ignored if disabled) - I&D: + &ID: Qt::AlignLeft|Qt::AlignLeading|Qt::AlignVCenter diff --git a/frontend_qt/grpPDF417.ui b/frontend_qt/grpPDF417.ui index 0fffe986..b4b62a51 100644 --- a/frontend_qt/grpPDF417.ui +++ b/frontend_qt/grpPDF417.ui @@ -207,7 +207,7 @@ be set to more than this depending on data - Number of Ro&ws: + Nu&mber of Rows: Set number of rows - may be set to more than @@ -689,7 +689,7 @@ the Appearance tab is not checked (ignored if disabled) - Row &Height: + Ro&w Height: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter @@ -777,7 +777,7 @@ tab will be re-enabled) Set height per row to default value - De&fault + Def&ault @@ -898,7 +898,7 @@ tab will be re-enabled) - H&IBC + &HIBC Process data as a Health Industry Barcode (HIBC) @@ -1060,7 +1060,7 @@ Maximum length 30 (10 triplets) (ignored if disabled) - I&D: + &ID: Qt::AlignLeft|Qt::AlignLeading|Qt::AlignVCenter diff --git a/frontend_qt/grpQR.ui b/frontend_qt/grpQR.ui index 88c28fdb..b0b587d4 100644 --- a/frontend_qt/grpQR.ui +++ b/frontend_qt/grpQR.ui @@ -300,7 +300,7 @@ error correction codewords - &Mask: + Mas&k: Manually specify which mask to use @@ -403,7 +403,7 @@ formatted with Application Identifiers (AIs) - H&IBC + &HIBC Process data as a Health Industry Barcode (HIBC) @@ -724,7 +724,7 @@ Value ranges from 0 to 255 (ignored if disabled) - I&D: + &ID: Qt::AlignLeft|Qt::AlignLeading|Qt::AlignVCenter diff --git a/frontend_qt/grpUPNQR.ui b/frontend_qt/grpUPNQR.ui index 259becb7..731854d6 100644 --- a/frontend_qt/grpUPNQR.ui +++ b/frontend_qt/grpUPNQR.ui @@ -62,7 +62,7 @@ - &Mask: + Mas&k: Manually specify which mask to use diff --git a/frontend_qt/grpUltra.ui b/frontend_qt/grpUltra.ui index 8eaa714e..e92c6098 100644 --- a/frontend_qt/grpUltra.ui +++ b/frontend_qt/grpUltra.ui @@ -52,7 +52,7 @@ based on data - E&rror Correction Level: + Error &Correction Level: Set percentage of capacity to use for @@ -110,7 +110,7 @@ error correction codewords - Rev&ision: + &Revision: Set revision to use on output @@ -378,7 +378,7 @@ Value ranges from 1 to 80088 (ignored if disabled) - I&D: + &ID: Qt::AlignLeft|Qt::AlignLeading|Qt::AlignVCenter diff --git a/frontend_qt/mainwindow.cpp b/frontend_qt/mainwindow.cpp index ed357e86..aa4f5997 100644 --- a/frontend_qt/mainwindow.cpp +++ b/frontend_qt/mainwindow.cpp @@ -1222,7 +1222,7 @@ void MainWindow::codeone_ui_set() if (symbology != BARCODE_CODEONE) return; - QGroupBox *groupBox = m_optionWidget->findChild(QSL("groupBoxC1StructApp")); + QGroupBox *groupBox = get_groupBox(QSL("groupBoxC1StructApp")); if (groupBox) { bool enabled = get_cmb_index(QSL("cmbC1Size")) != 9; // Not Version S groupBox->setEnabled(enabled); @@ -1238,8 +1238,8 @@ void MainWindow::upcean_no_quiet_zones_ui_set() bool showHRT = chkHRTShow->isEnabled() && chkHRTShow->isChecked(); QCheckBox *noQZs, *guardWS; - noQZs = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANNoQuietZones")) : nullptr; - guardWS = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANGuardWhitespace")) : nullptr; + noQZs = get_chk(QSL("chkUPCEANNoQuietZones")); + guardWS = get_chk(QSL("chkUPCEANGuardWhitespace")); if (noQZs && guardWS) { guardWS->setEnabled(!noQZs->isChecked() && showHRT); @@ -1257,11 +1257,11 @@ void MainWindow::upcae_no_quiet_zones_ui_set() bool showHRT = chkHRTShow->isEnabled() && chkHRTShow->isChecked(); QCheckBox *noQZs, *guardWS; if (is_upca) { - noQZs = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCANoQuietZones")) : nullptr; - guardWS = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCAGuardWhitespace")) : nullptr; + noQZs = get_chk(QSL("chkUPCANoQuietZones")); + guardWS = get_chk(QSL("chkUPCAGuardWhitespace")); } else { - noQZs = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANNoQuietZones")) : nullptr; - guardWS = m_optionWidget ? m_optionWidget->findChild(QSL("chkUPCEANGuardWhitespace")) : nullptr; + noQZs = get_chk(QSL("chkUPCEANNoQuietZones")); + guardWS = get_chk(QSL("chkUPCEANGuardWhitespace")); } if (noQZs && guardWS) { @@ -1283,8 +1283,8 @@ void MainWindow::eanaddon_no_quiet_zones_ui_set() bool showHRT = chkHRTShow->isEnabled() && chkHRTShow->isChecked(); QCheckBox *noQZs, *guardWS; - noQZs = m_optionWidget ? m_optionWidget->findChild(QSL("chkEANAddOnNoQuietZones")) : nullptr; - guardWS = m_optionWidget ? m_optionWidget->findChild(QSL("chkEANAddOnGuardWhitespace")) : nullptr; + noQZs = get_chk(QSL("chkEANAddOnNoQuietZones")); + guardWS = get_chk(QSL("chkEANAddOnGuardWhitespace")); if (noQZs && guardWS) { guardWS->setEnabled(!noQZs->isChecked() && showHRT); @@ -1307,6 +1307,18 @@ void MainWindow::aztec_ecc_index_changed() update_preview(); } +void MainWindow::dm_startmode_ui_set() +{ + const int idx = get_cmb_index(QSL("cmbDMStartMode")); + QLabel *lbl = get_lbl(QSL("lblDMStartModeLength")); + QSpinBox *spn = get_spn(QSL("spnDMStartModeLength")); + if (lbl && spn) { + lbl->setEnabled(idx != 0); + spn->setEnabled(idx != 0); + } + update_preview(); +} + void MainWindow::structapp_ui_set() { int symbology = bstyle_items[bstyle->currentIndex()].symbology; @@ -1321,7 +1333,7 @@ void MainWindow::structapp_ui_set() widgetID = get_widget(QSL("txt") + name + QSL("StructAppID")); } else if (symbology == BARCODE_CODEONE) { name = QSL("C1"); - QSpinBox *spnCount = m_optionWidget->findChild(QSL("spn") + name + QSL("StructAppCount")); + QSpinBox *spnCount = get_spn(QSL("spn") + name + QSL("StructAppCount")); enabled = spnCount ? spnCount->value() > 1 : false; widgetCount = spnCount; widgetIndex = get_widget(QSL("spn") + name + QSL("StructAppIndex")); @@ -1335,7 +1347,7 @@ void MainWindow::structapp_ui_set() name = QSL("Maxi"); } else if (symbology == BARCODE_PDF417 || symbology == BARCODE_MICROPDF417) { name = symbology == BARCODE_PDF417 ? QSL("PDF") : QSL("MPDF"); - QSpinBox *spnCount = m_optionWidget->findChild(QSL("spn") + name + QSL("StructAppCount")); + QSpinBox *spnCount = get_spn(QSL("spn") + name + QSL("StructAppCount")); enabled = spnCount ? spnCount->value() > 1 : false; widgetCount = spnCount; widgetIndex = get_widget(QSL("spn") + name + QSL("StructAppIndex")); @@ -1351,9 +1363,9 @@ void MainWindow::structapp_ui_set() widgetID = get_widget(QSL("spn") + name + QSL("StructAppID")); } if (!name.isEmpty()) { - QLabel *lblIndex = m_optionWidget->findChild(QSL("lbl") + name + QSL("StructAppIndex")); + QLabel *lblIndex = get_lbl(QSL("lbl") + name + QSL("StructAppIndex")); if (!widgetCount) { - QComboBox *cmbCount = m_optionWidget->findChild(QSL("cmb") + name + QSL("StructAppCount")); + QComboBox *cmbCount = get_cmb(QSL("cmb") + name + QSL("StructAppCount")); enabled = cmbCount ? cmbCount->currentIndex() != 0 : false; widgetCount = cmbCount; } @@ -1363,7 +1375,7 @@ void MainWindow::structapp_ui_set() if (lblIndex && widgetCount && widgetIndex) { lblIndex->setEnabled(enabled); widgetIndex->setEnabled(enabled); - QLabel *lblID = m_optionWidget->findChild(QSL("lbl") + name + QSL("StructAppID")); + QLabel *lblID = get_lbl(QSL("lbl") + name + QSL("StructAppID")); if (lblID) { lblID->setEnabled(enabled); if (lblID2) { @@ -1768,12 +1780,12 @@ void MainWindow::change_options() connect(get_widget(QSL("cmbPDFECC")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); connect(get_widget(QSL("cmbPDFCols")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); connect(get_widget(QSL("cmbPDFRows")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - m_lblHeightPerRow = m_optionWidget->findChild(QSL("lblPDFHeightPerRow")); - m_spnHeightPerRow = m_optionWidget->findChild(QSL("spnPDFHeightPerRow")); + m_lblHeightPerRow = get_lbl(QSL("lblPDFHeightPerRow")); + m_spnHeightPerRow = get_dspn(QSL("spnPDFHeightPerRow")); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(autoheight_ui_set())); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(update_preview())); - m_btnHeightPerRowDisable = m_optionWidget->findChild(QSL("btnPDFHeightPerRowDisable")); - m_btnHeightPerRowDefault = m_optionWidget->findChild(QSL("btnPDFHeightPerRowDefault")); + m_btnHeightPerRowDisable = get_btn(QSL("btnPDFHeightPerRowDisable")); + m_btnHeightPerRowDefault = get_btn(QSL("btnPDFHeightPerRowDefault")); connect(m_btnHeightPerRowDisable, SIGNAL(clicked(bool)), SLOT(height_per_row_disable())); connect(m_btnHeightPerRowDefault, SIGNAL(clicked(bool)), SLOT(height_per_row_default())); connect(get_widget(QSL("radPDFTruncated")), SIGNAL(toggled(bool)), SLOT(update_preview())); @@ -1795,12 +1807,12 @@ void MainWindow::change_options() structapp_ui_set(); tabMain->insertTab(1, m_optionWidget, tr("Micro PDF41&7")); connect(get_widget(QSL("cmbMPDFCols")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - m_lblHeightPerRow = m_optionWidget->findChild(QSL("lblMPDFHeightPerRow")); - m_spnHeightPerRow = m_optionWidget->findChild(QSL("spnMPDFHeightPerRow")); + m_lblHeightPerRow = get_lbl(QSL("lblMPDFHeightPerRow")); + m_spnHeightPerRow = get_dspn(QSL("spnMPDFHeightPerRow")); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(autoheight_ui_set())); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(update_preview())); - m_btnHeightPerRowDisable = m_optionWidget->findChild(QSL("btnMPDFHeightPerRowDisable")); - m_btnHeightPerRowDefault = m_optionWidget->findChild(QSL("btnMPDFHeightPerRowDefault")); + m_btnHeightPerRowDisable = get_btn(QSL("btnMPDFHeightPerRowDisable")); + m_btnHeightPerRowDefault = get_btn(QSL("btnMPDFHeightPerRowDefault")); connect(m_btnHeightPerRowDisable, SIGNAL(clicked(bool)), SLOT(height_per_row_disable())); connect(m_btnHeightPerRowDefault, SIGNAL(clicked(bool)), SLOT(height_per_row_default())); connect(get_widget(QSL("radMPDFStand")), SIGNAL(toggled(bool)), SLOT(update_preview())); @@ -1904,11 +1916,11 @@ void MainWindow::change_options() connect(get_widget(QSL("radC39Stand")), SIGNAL(toggled(bool)), SLOT(update_preview())); connect(get_widget(QSL("radC39Check")), SIGNAL(toggled(bool)), SLOT(update_preview())); connect(get_widget(QSL("radC39CheckHide")), SIGNAL(toggled(bool)), SLOT(update_preview())); - QRadioButton *radC39HIBC = m_optionWidget->findChild(QSL("radC39HIBC")); + QRadioButton *radC39HIBC = get_rad(QSL("radC39HIBC")); if (symbology == BARCODE_EXCODE39 || symbology == BARCODE_LOGMARS) { if (radC39HIBC->isChecked()) { radC39HIBC->setChecked(false); - m_optionWidget->findChild(QSL("radC39Stand"))->setChecked(true); + get_rad(QSL("radC39Stand"))->setChecked(true); } radC39HIBC->setEnabled(false); radC39HIBC->hide(); @@ -1928,12 +1940,12 @@ void MainWindow::change_options() tabMain->insertTab(1, m_optionWidget, tr("Cod&e 16K")); btype->setItemText(0, tr("Default (bind)")); connect(get_widget(QSL("cmbC16kRows")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - m_lblHeightPerRow = m_optionWidget->findChild(QSL("lblC16kHeightPerRow")); - m_spnHeightPerRow = m_optionWidget->findChild(QSL("spnC16kHeightPerRow")); + m_lblHeightPerRow = get_lbl(QSL("lblC16kHeightPerRow")); + m_spnHeightPerRow = get_dspn(QSL("spnC16kHeightPerRow")); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(autoheight_ui_set())); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(update_preview())); - m_btnHeightPerRowDisable = m_optionWidget->findChild(QSL("btnC16kHeightPerRowDisable")); - m_btnHeightPerRowDefault = m_optionWidget->findChild(QSL("btnC16kHeightPerRowDefault")); + m_btnHeightPerRowDisable = get_btn(QSL("btnC16kHeightPerRowDisable")); + m_btnHeightPerRowDefault = get_btn(QSL("btnC16kHeightPerRowDefault")); connect(m_btnHeightPerRowDisable, SIGNAL(clicked(bool)), SLOT(height_per_row_disable())); connect(m_btnHeightPerRowDefault, SIGNAL(clicked(bool)), SLOT(height_per_row_default())); connect(get_widget(QSL("cmbC16kRowSepHeight")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); @@ -1964,12 +1976,12 @@ void MainWindow::change_options() btype->setItemText(0, tr("Default (bind)")); connect(get_widget(QSL("cmbCbfWidth")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); connect(get_widget(QSL("cmbCbfHeight")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - m_lblHeightPerRow = m_optionWidget->findChild(QSL("lblCbfHeightPerRow")); - m_spnHeightPerRow = m_optionWidget->findChild(QSL("spnCbfHeightPerRow")); + m_lblHeightPerRow = get_lbl(QSL("lblCbfHeightPerRow")); + m_spnHeightPerRow = get_dspn(QSL("spnCbfHeightPerRow")); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(autoheight_ui_set())); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(update_preview())); - m_btnHeightPerRowDisable = m_optionWidget->findChild(QSL("btnCbfHeightPerRowDisable")); - m_btnHeightPerRowDefault = m_optionWidget->findChild(QSL("btnCbfHeightPerRowDefault")); + m_btnHeightPerRowDisable = get_btn(QSL("btnCbfHeightPerRowDisable")); + m_btnHeightPerRowDefault = get_btn(QSL("btnCbfHeightPerRowDefault")); connect(m_btnHeightPerRowDisable, SIGNAL(clicked(bool)), SLOT(height_per_row_disable())); connect(m_btnHeightPerRowDefault, SIGNAL(clicked(bool)), SLOT(height_per_row_default())); connect(get_widget(QSL("cmbCbfRowSepHeight")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); @@ -2006,27 +2018,31 @@ void MainWindow::change_options() } else if (symbology == BARCODE_DATAMATRIX) { QFile file(QSL(":/grpDM.ui")); - if (!file.open(QIODevice::ReadOnly)) - return; - m_optionWidget = uiload.load(&file); - file.close(); - load_sub_settings(settings, symbology); - structapp_ui_set(); - tabMain->insertTab(1, m_optionWidget, tr("D&ata Matrix")); - connect(get_widget(QSL("radDM200Stand")), SIGNAL(toggled(bool)), SLOT(update_preview())); - connect(get_widget(QSL("radDM200GS1")), SIGNAL(toggled(bool)), SLOT(update_preview())); - connect(get_widget(QSL("radDM200HIBC")), SIGNAL(toggled(bool)), SLOT(update_preview())); - connect(get_widget(QSL("cmbDM200Size")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - connect(get_widget(QSL("chkDMRectangle")), SIGNAL(toggled(bool)), SLOT(update_preview())); - connect(get_widget(QSL("chkDMRE")), SIGNAL(toggled(bool)), SLOT(update_preview())); - connect(get_widget(QSL("chkDMGSSep")), SIGNAL(toggled(bool)), SLOT(update_preview())); - connect(get_widget(QSL("chkDMISO144")), SIGNAL(toggled(bool)), SLOT(update_preview())); - connect(get_widget(QSL("chkDMFast")), SIGNAL(toggled(bool)), SLOT(update_preview())); - connect(get_widget(QSL("cmbDMStructAppCount")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - connect(get_widget(QSL("cmbDMStructAppCount")), SIGNAL(currentIndexChanged(int)), SLOT(structapp_ui_set())); - connect(get_widget(QSL("cmbDMStructAppIndex")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - connect(get_widget(QSL("spnDMStructAppID")), SIGNAL(valueChanged(int)), SLOT(update_preview())); - connect(get_widget(QSL("spnDMStructAppID2")), SIGNAL(valueChanged(int)), SLOT(update_preview())); + if (file.open(QIODevice::ReadOnly)) { + m_optionWidget = uiload.load(&file); + file.close(); + load_sub_settings(settings, symbology); + structapp_ui_set(); + dm_startmode_ui_set(); + tabMain->insertTab(1, m_optionWidget, tr("D&ata Matrix")); + connect(get_widget(QSL("radDMStand")), SIGNAL(toggled(bool)), SLOT(update_preview())); + connect(get_widget(QSL("radDMGS1")), SIGNAL(toggled(bool)), SLOT(update_preview())); + connect(get_widget(QSL("radDMHIBC")), SIGNAL(toggled(bool)), SLOT(update_preview())); + connect(get_widget(QSL("cmbDMSize")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); + connect(get_widget(QSL("chkDMRectangle")), SIGNAL(toggled(bool)), SLOT(update_preview())); + connect(get_widget(QSL("chkDMRE")), SIGNAL(toggled(bool)), SLOT(update_preview())); + connect(get_widget(QSL("chkDMGSSep")), SIGNAL(toggled(bool)), SLOT(update_preview())); + connect(get_widget(QSL("cmbDMStartMode")), SIGNAL(currentIndexChanged(int)), SLOT(dm_startmode_ui_set())); + connect(get_widget(QSL("spnDMStartModeLength")), SIGNAL(valueChanged(int)), SLOT(dm_startmode_ui_set())); + connect(get_widget(QSL("chkDMISO144")), SIGNAL(toggled(bool)), SLOT(update_preview())); + connect(get_widget(QSL("chkDMFast")), SIGNAL(toggled(bool)), SLOT(update_preview())); + connect(get_widget(QSL("cmbDMStructAppCount")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); + connect(get_widget(QSL("cmbDMStructAppCount")), SIGNAL(currentIndexChanged(int)), + SLOT(structapp_ui_set())); + connect(get_widget(QSL("cmbDMStructAppIndex")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); + connect(get_widget(QSL("spnDMStructAppID")), SIGNAL(valueChanged(int)), SLOT(update_preview())); + connect(get_widget(QSL("spnDMStructAppID2")), SIGNAL(valueChanged(int)), SLOT(update_preview())); + } } else if (symbology == BARCODE_MAILMARK_2D) { QFile file(QSL(":/grpMailmark2D.ui")); @@ -2215,12 +2231,12 @@ void MainWindow::change_options() tabMain->insertTab(1, m_optionWidget, tr("Cod&e 49")); btype->setItemText(0, tr("Default (bind)")); connect(get_widget(QSL("cmbC49Rows")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - m_lblHeightPerRow = m_optionWidget->findChild(QSL("lblC49HeightPerRow")); - m_spnHeightPerRow = m_optionWidget->findChild(QSL("spnC49HeightPerRow")); + m_lblHeightPerRow = get_lbl(QSL("lblC49HeightPerRow")); + m_spnHeightPerRow = get_dspn(QSL("spnC49HeightPerRow")); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(autoheight_ui_set())); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(update_preview())); - m_btnHeightPerRowDisable = m_optionWidget->findChild(QSL("btnC49HeightPerRowDisable")); - m_btnHeightPerRowDefault = m_optionWidget->findChild(QSL("btnC49HeightPerRowDefault")); + m_btnHeightPerRowDisable = get_btn(QSL("btnC49HeightPerRowDisable")); + m_btnHeightPerRowDefault = get_btn(QSL("btnC49HeightPerRowDefault")); connect(m_btnHeightPerRowDisable, SIGNAL(clicked(bool)), SLOT(height_per_row_disable())); connect(m_btnHeightPerRowDefault, SIGNAL(clicked(bool)), SLOT(height_per_row_default())); connect(get_widget(QSL("cmbC49RowSepHeight")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); @@ -2250,12 +2266,12 @@ void MainWindow::change_options() connect(get_widget(QSL("radDBESRows")), SIGNAL(toggled(bool)), SLOT(update_preview())); connect(get_widget(QSL("cmbDBESCols")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); connect(get_widget(QSL("cmbDBESRows")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); - m_lblHeightPerRow = m_optionWidget->findChild(QSL("lblDBESHeightPerRow")); - m_spnHeightPerRow = m_optionWidget->findChild(QSL("spnDBESHeightPerRow")); + m_lblHeightPerRow = get_lbl(QSL("lblDBESHeightPerRow")); + m_spnHeightPerRow = get_dspn(QSL("spnDBESHeightPerRow")); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(autoheight_ui_set())); connect(m_spnHeightPerRow, SIGNAL(valueChanged(double)), SLOT(update_preview())); - m_btnHeightPerRowDisable = m_optionWidget->findChild(QSL("btnDBESHeightPerRowDisable")); - m_btnHeightPerRowDefault = m_optionWidget->findChild(QSL("btnDBESHeightPerRowDefault")); + m_btnHeightPerRowDisable = get_btn(QSL("btnDBESHeightPerRowDisable")); + m_btnHeightPerRowDefault = get_btn(QSL("btnDBESHeightPerRowDefault")); connect(m_btnHeightPerRowDisable, SIGNAL(clicked(bool)), SLOT(height_per_row_disable())); connect(m_btnHeightPerRowDefault, SIGNAL(clicked(bool)), SLOT(height_per_row_default())); @@ -2533,7 +2549,7 @@ void MainWindow::composite_ui_set() if (enabled) { if (bstyle_items[bstyle->currentIndex()].symbology == BARCODE_CODE128) { - QRadioButton *radioButton = m_optionWidget->findChild(QSL("radC128EAN")); + QRadioButton *radioButton = get_rad(QSL("radC128EAN")); if (radioButton) { radioButton->setChecked(true); } @@ -2545,7 +2561,7 @@ void MainWindow::composite_ean_check() { if (bstyle_items[bstyle->currentIndex()].symbology != BARCODE_CODE128) return; - QRadioButton *radioButton = m_optionWidget->findChild(QSL("radC128EAN")); + QRadioButton *radioButton = get_rad(QSL("radC128EAN")); if (radioButton && !radioButton->isChecked()) chkComposite->setChecked(false); } @@ -2554,28 +2570,28 @@ void MainWindow::maxi_scm_ui_set() { if (bstyle_items[bstyle->currentIndex()].symbology != BARCODE_MAXICODE) return; - QCheckBox *chkMaxiSCMVV = m_optionWidget ? m_optionWidget->findChild(QSL("chkMaxiSCMVV")) : nullptr; + QCheckBox *chkMaxiSCMVV = get_chk(QSL("chkMaxiSCMVV")); if (!chkMaxiSCMVV) return; bool isMode2or3 = get_cmb_index(QSL("cmbMaxiMode")) == 0; - m_optionWidget->findChild(QSL("lblMaxiSCMPostcode"))->setEnabled(isMode2or3); - m_optionWidget->findChild(QSL("txtMaxiSCMPostcode"))->setEnabled(isMode2or3); - m_optionWidget->findChild(QSL("lblMaxiSCMCountry"))->setEnabled(isMode2or3); - m_optionWidget->findChild(QSL("spnMaxiSCMCountry"))->setEnabled(isMode2or3); - m_optionWidget->findChild(QSL("lblMaxiSCMService"))->setEnabled(isMode2or3); - m_optionWidget->findChild(QSL("spnMaxiSCMService"))->setEnabled(isMode2or3); + get_lbl(QSL("lblMaxiSCMPostcode"))->setEnabled(isMode2or3); + get_txt(QSL("txtMaxiSCMPostcode"))->setEnabled(isMode2or3); + get_lbl(QSL("lblMaxiSCMCountry"))->setEnabled(isMode2or3); + get_spn(QSL("spnMaxiSCMCountry"))->setEnabled(isMode2or3); + get_lbl(QSL("lblMaxiSCMService"))->setEnabled(isMode2or3); + get_spn(QSL("spnMaxiSCMService"))->setEnabled(isMode2or3); chkMaxiSCMVV->setEnabled(isMode2or3); - m_optionWidget->findChild(QSL("lblMaxiSCMVV"))->setEnabled(isMode2or3 && chkMaxiSCMVV->isChecked()); - m_optionWidget->findChild(QSL("spnMaxiSCMVV"))->setEnabled(isMode2or3 && chkMaxiSCMVV->isChecked()); + get_lbl(QSL("lblMaxiSCMVV"))->setEnabled(isMode2or3 && chkMaxiSCMVV->isChecked()); + get_spn(QSL("spnMaxiSCMVV"))->setEnabled(isMode2or3 && chkMaxiSCMVV->isChecked()); } void MainWindow::msi_plessey_ui_set() { if (bstyle_items[bstyle->currentIndex()].symbology != BARCODE_MSI_PLESSEY) return; - QCheckBox *checkBox = m_optionWidget ? m_optionWidget->findChild(QSL("chkMSICheckText")) : nullptr; + QCheckBox *checkBox = get_chk(QSL("chkMSICheckText")); if (checkBox) { checkBox->setEnabled(get_cmb_index(QSL("cmbMSICheck")) > 0); } @@ -2595,8 +2611,8 @@ void MainWindow::combobox_item_enabled(QComboBox *comboBox, int index, bool enab bool MainWindow::upcean_addon_gap(const QString &comboBoxName, const QString &labelName, int base) { - QComboBox *comboBox = m_optionWidget->findChild(comboBoxName); - QLabel *label = m_optionWidget->findChild(labelName); + QComboBox *comboBox = get_cmb(comboBoxName); + QLabel *label = get_lbl(labelName); bool enabled = have_addon(); if (comboBox) { @@ -2617,9 +2633,9 @@ bool MainWindow::upcean_addon_gap(const QString &comboBoxName, const QString &la void MainWindow::upcean_guard_descent(const QString &spnBoxName, const QString &labelName, const QString &btnDefaultName, bool enabled) { - QDoubleSpinBox *spnBox = m_optionWidget->findChild(spnBoxName); - QLabel *label = m_optionWidget->findChild(labelName); - QPushButton *btnDefault = m_optionWidget->findChild(btnDefaultName); + QDoubleSpinBox *spnBox = get_dspn(spnBoxName); + QLabel *label = get_lbl(labelName); + QPushButton *btnDefault = get_btn(btnDefaultName); if (spnBox) { spnBox->setEnabled(enabled); @@ -2644,7 +2660,7 @@ void MainWindow::upcean_guard_descent(const QString &spnBoxName, const QString & void MainWindow::guard_default(const QString &spnBoxName) { - QDoubleSpinBox *spnBox = m_optionWidget->findChild(spnBoxName); + QDoubleSpinBox *spnBox = get_dspn(spnBoxName); if (spnBox && spnBox->value() != 5.0) { spnBox->setValue(5.0); update_preview(); @@ -2653,8 +2669,8 @@ void MainWindow::guard_default(const QString &spnBoxName) void MainWindow::daft_ui_set() { - QDoubleSpinBox *spnBox = m_optionWidget->findChild(QSL("spnDAFTTrackerRatio")); - QPushButton *btnDefault = m_optionWidget->findChild(QSL("btnDAFTTrackerDefault")); + QDoubleSpinBox *spnBox = get_dspn(QSL("spnDAFTTrackerRatio")); + QPushButton *btnDefault = get_btn(QSL("btnDAFTTrackerDefault")); if (spnBox && spnBox->value() == 25.0) { if (btnDefault) { QWidget *focus = QApplication::focusWidget(); @@ -2670,7 +2686,7 @@ void MainWindow::daft_ui_set() void MainWindow::daft_tracker_default() { - QDoubleSpinBox *spnBox = m_optionWidget->findChild(QSL("spnDAFTTrackerRatio")); + QDoubleSpinBox *spnBox = get_dspn(QSL("spnDAFTTrackerRatio")); if (spnBox && spnBox->value() != 25.0) { spnBox->setValue(25.0); update_preview(); @@ -2689,7 +2705,7 @@ void MainWindow::set_gs1_mode(bool gs1_mode) void MainWindow::set_smaller_font(const QString &labelName) { - QLabel *label = m_optionWidget ? m_optionWidget->findChild(labelName) : nullptr; + QLabel *label = get_lbl(labelName); if (label) { const QFont &appFont = QApplication::font(); qreal pointSize = appFont.pointSizeF(); @@ -2942,11 +2958,11 @@ void MainWindow::update_preview() if (get_rad_val(QSL("radAztecSize"))) { m_bc.bc.setOption2(get_cmb_index(QSL("cmbAztecSize")) + 1); - m_optionWidget->findChild(QSL("chkAztecFull"))->setEnabled(false); + get_chk(QSL("chkAztecFull"))->setEnabled(false); m_bc.bc.setOption3(0); } else { - m_optionWidget->findChild(QSL("chkAztecFull"))->setEnabled(true); - if (m_optionWidget->findChild(QSL("chkAztecFull"))->isChecked()) { + get_chk(QSL("chkAztecFull"))->setEnabled(true); + if (get_chk(QSL("chkAztecFull"))->isChecked()) { m_bc.bc.setOption3(ZINT_AZTEC_FULL); } } @@ -3080,13 +3096,13 @@ void MainWindow::update_preview() break; case BARCODE_DATAMATRIX: - if (get_rad_val(QSL("radDM200HIBC"))) + if (get_rad_val(QSL("radDMHIBC"))) m_bc.bc.setSymbol(BARCODE_HIBC_DM); else m_bc.bc.setSymbol(BARCODE_DATAMATRIX); - checkBox = m_optionWidget->findChild(QSL("chkDMGSSep")); - if (get_rad_val(QSL("radDM200GS1"))) { + checkBox = get_chk(QSL("chkDMGSSep")); + if (get_rad_val(QSL("radDMGS1"))) { set_gs1_mode(true); checkBox->setEnabled(true); if (checkBox->isChecked()) { @@ -3097,29 +3113,38 @@ void MainWindow::update_preview() checkBox->setEnabled(false); } - m_bc.bc.setOption2(get_cmb_index(QSL("cmbDM200Size"))); + m_bc.bc.setOption2(get_cmb_index(QSL("cmbDMSize"))); - if (get_cmb_index(QSL("cmbDM200Size")) == 0) { + if (get_cmb_index(QSL("cmbDMSize")) == 0) { // Suppressing rectangles or allowing DMRE only makes sense if in automatic size mode - m_optionWidget->findChild(QSL("lblDMAutoSize"))->setEnabled(true); - m_optionWidget->findChild(QSL("chkDMRectangle"))->setEnabled(true); - if (m_optionWidget->findChild(QSL("chkDMRectangle"))->isChecked()) { + get_lbl(QSL("lblDMAutoSize"))->setEnabled(true); + get_chk(QSL("chkDMRectangle"))->setEnabled(true); + if (get_chk(QSL("chkDMRectangle"))->isChecked()) { m_bc.bc.setOption3(DM_SQUARE); - m_optionWidget->findChild(QSL("chkDMRE"))->setEnabled(false); + get_chk(QSL("chkDMRE"))->setEnabled(false); } else { - m_optionWidget->findChild(QSL("chkDMRE"))->setEnabled(true); - if (m_optionWidget->findChild(QSL("chkDMRE"))->isChecked()) + get_chk(QSL("chkDMRE"))->setEnabled(true); + if (get_chk(QSL("chkDMRE"))->isChecked()) m_bc.bc.setOption3(DM_DMRE); else m_bc.bc.setOption3(0); } } else { - m_optionWidget->findChild(QSL("lblDMAutoSize"))->setEnabled(false); - m_optionWidget->findChild(QSL("chkDMRectangle"))->setEnabled(false); - m_optionWidget->findChild(QSL("chkDMRE"))->setEnabled(false); + get_lbl(QSL("lblDMAutoSize"))->setEnabled(false); + get_chk(QSL("chkDMRectangle"))->setEnabled(false); + get_chk(QSL("chkDMRE"))->setEnabled(false); m_bc.bc.setOption3(0); } + item_val = get_cmb_index(QSL("cmbDMStartMode")); + if (item_val) { + m_bc.bc.setOption1(get_spn_val(QSL("spnDMStartModeLength"))); + m_bc.bc.setOption3(m_bc.bc.option3() | (item_val == 1 ? DM_B256_START : DM_C40_START)); + } else { + m_bc.bc.setOption1(-1); + m_bc.bc.setOption3(m_bc.bc.option3() & ~(DM_B256_START | DM_C40_START)); + } + if (get_chk_val(QSL("chkDMISO144"))) { m_bc.bc.setOption3(m_bc.bc.option3() | DM_ISO_144); } @@ -3146,14 +3171,14 @@ void MainWindow::update_preview() if (!item_val) { // Suppressing rectangles only makes sense if in automatic size mode - m_optionWidget->findChild(QSL("lblMailmark2DAutoSize"))->setEnabled(true); - m_optionWidget->findChild(QSL("chkMailmark2DRectangle"))->setEnabled(true); - if (m_optionWidget->findChild(QSL("chkMailmark2DRectangle"))->isChecked()) { + get_lbl(QSL("lblMailmark2DAutoSize"))->setEnabled(true); + get_chk(QSL("chkMailmark2DRectangle"))->setEnabled(true); + if (get_chk(QSL("chkMailmark2DRectangle"))->isChecked()) { m_bc.bc.setOption3(DM_SQUARE); } } else { - m_optionWidget->findChild(QSL("lblMailmark2DAutoSize"))->setEnabled(false); - m_optionWidget->findChild(QSL("chkMailmark2DRectangle"))->setEnabled(false); + get_lbl(QSL("lblMailmark2DAutoSize"))->setEnabled(false); + get_chk(QSL("chkMailmark2DRectangle"))->setEnabled(false); m_bc.bc.setOption3(0); } @@ -3272,7 +3297,7 @@ void MainWindow::update_preview() m_bc.bc.setPrimaryMessage(QString::asprintf("%s%03d%03d", get_txt_val(QSL("txtMaxiSCMPostcode")).toUtf8().constData(), get_spn_val(QSL("spnMaxiSCMCountry")), get_spn_val(QSL("spnMaxiSCMService")))); - QCheckBox *chkMaxiSCMVV = m_optionWidget->findChild(QSL("chkMaxiSCMVV")); + QCheckBox *chkMaxiSCMVV = get_chk(QSL("chkMaxiSCMVV")); if (chkMaxiSCMVV && chkMaxiSCMVV->isEnabled() && chkMaxiSCMVV->isChecked()) { m_bc.bc.setOption2(get_spn_val(QSL("spnMaxiSCMVV")) + 1); } @@ -3301,9 +3326,9 @@ void MainWindow::update_preview() eci_not_set = false; cmbECI->setEnabled(false); lblECI->setEnabled(false); - m_optionWidget->findChild(QSL("radC1GS1"))->setEnabled(false); + get_rad(QSL("radC1GS1"))->setEnabled(false); } else { - m_optionWidget->findChild(QSL("radC1GS1"))->setEnabled(true); + get_rad(QSL("radC1GS1"))->setEnabled(true); set_gs1_mode(get_rad_val(QSL("radC1GS1"))); } if (get_cmb_index(QSL("cmbC1Size")) != 9 && (item_val = get_spn_val(QSL("spnC1StructAppCount"))) > 1) { @@ -3697,7 +3722,7 @@ void MainWindow::automatic_info_set() } if (symbology == BARCODE_AZTEC || symbology == BARCODE_HIBC_AZTEC) { - if ((txt = m_optionWidget->findChild(QSL("txtAztecAutoInfo")))) { + if ((txt = get_txt(QSL("txtAztecAutoInfo")))) { if (!isError) { const int z = m_bc.bc.encodedOption2(); const int ecc = m_bc.bc.encodedOption1() >> 8; // Percentage @@ -3731,7 +3756,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_CHANNEL) { - if ((cmb = m_optionWidget->findChild(QSL("cmbChannel")))) { + if ((cmb = get_cmb(QSL("cmbChannel")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 3 && opt <= 8) { cmb->setItemText(0, QSL("Automatic %1").arg(opt)); } else { @@ -3740,14 +3765,14 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_CODABLOCKF || symbology == BARCODE_HIBC_BLOCKF) { - if ((cmb = m_optionWidget->findChild(QSL("cmbCbfWidth")))) { + if ((cmb = get_cmb(QSL("cmbCbfWidth")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 9 && opt <= 67) { cmb->setItemText(0, QSL("Automatic %1 (%2 data)").arg(opt).arg(opt - 5)); } else { cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbCbfHeight")))) { + if ((cmb = get_cmb(QSL("cmbCbfHeight")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) >= 1 && opt <= 44) { cmb->setItemText(0, QSL("Automatic %1").arg(opt)); } else { @@ -3756,7 +3781,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_CODE16K) { - if ((cmb = m_optionWidget->findChild(QSL("cmbC16kRows")))) { + if ((cmb = get_cmb(QSL("cmbC16kRows")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) >= 2 && opt <= 16) { cmb->setItemText(0, QSL("Automatic %1").arg(opt)); } else { @@ -3765,7 +3790,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_CODE49) { - if ((cmb = m_optionWidget->findChild(QSL("cmbC49Rows")))) { + if ((cmb = get_cmb(QSL("cmbC49Rows")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) >= 2 && opt <= 8) { cmb->setItemText(0, QSL("Automatic %1").arg(opt)); } else { @@ -3774,7 +3799,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_CODEONE) { - if ((cmb = m_optionWidget->findChild(QSL("cmbC1Size")))) { + if ((cmb = get_cmb(QSL("cmbC1Size")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 8) { const int r = m_bc.bc.encodedRows(); const int w = m_bc.bc.encodedWidth(); @@ -3788,7 +3813,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_DATAMATRIX || symbology == BARCODE_HIBC_DM) { - if ((cmb = m_optionWidget->findChild(QSL("cmbDM200Size")))) { + if ((cmb = get_cmb(QSL("cmbDMSize")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 48) { const int r = m_bc.bc.encodedRows(); const int w = m_bc.bc.encodedWidth(); @@ -3803,7 +3828,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_DBAR_EXPSTK) { - if ((cmb = m_optionWidget->findChild(QSL("cmbDBESCols")))) { + if ((cmb = get_cmb(QSL("cmbDBESCols")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 11) { cmb->setItemText(0, QSL("Automatic %1 (%2 segments)").arg(opt).arg(opt * 2)); } else { @@ -3812,7 +3837,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_MAILMARK_2D) { - if ((cmb = m_optionWidget->findChild(QSL("cmbMailmark2DSize")))) { + if ((cmb = get_cmb(QSL("cmbMailmark2DSize")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) && (opt == 8 || opt == 10 || opt == 30)) { const int r = m_bc.bc.encodedRows(); @@ -3824,21 +3849,21 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_DOTCODE) { - if ((cmb = m_optionWidget->findChild(QSL("cmbDotCols")))) { + if ((cmb = get_cmb(QSL("cmbDotCols")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 5 && opt <= 200) { cmb->setItemText(0, QSL("Automatic %1").arg(opt)); } else { cmb->setItemText(0, QSL("Automatic")); } } - if ((lbl = m_optionWidget->findChild(QSL("lblDotSizeMsg")))) { + if ((lbl = get_lbl(QSL("lblDotSizeMsg")))) { if (!isError) { lbl->setText(QSL("%1x%2 (HxW)").arg(m_bc.bc.encodedRows()).arg(m_bc.bc.encodedWidth())); } else { lbl->setText(QSEmpty); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbDotMask")))) { + if ((cmb = get_cmb(QSL("cmbDotMask")))) { if (!isError && cmb->currentIndex() == 0 && (opt = (m_bc.bc.encodedOption3() >> 8)) >= 1 && opt <= 8) { QString mask = QString::number((opt - 1) & 0x3); if (opt > 4) { @@ -3851,7 +3876,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_GRIDMATRIX) { - if ((cmb = m_optionWidget->findChild(QSL("cmbGridSize")))) { + if ((cmb = get_cmb(QSL("cmbGridSize")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 13) { const int r = m_bc.bc.encodedRows(); cmb->setItemText(0, QSL("Automatic %1 x %2 (Version %3)").arg(r).arg(r).arg(opt)); @@ -3859,7 +3884,7 @@ void MainWindow::automatic_info_set() cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbGridECC")))) { + if ((cmb = get_cmb(QSL("cmbGridECC")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) >= 1 && opt <= 5) { cmb->setItemText(0, QSL("Automatic ~%1%").arg(opt * 10)); } else { @@ -3868,7 +3893,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_HANXIN) { - if ((cmb = m_optionWidget->findChild(QSL("cmbHXSize")))) { + if ((cmb = get_cmb(QSL("cmbHXSize")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 84) { const int r = m_bc.bc.encodedRows(); cmb->setItemText(0, QSL("Automatic %1 x %2 (Version %3)").arg(r).arg(r).arg(opt)); @@ -3876,7 +3901,7 @@ void MainWindow::automatic_info_set() cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbHXECC")))) { + if ((cmb = get_cmb(QSL("cmbHXECC")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) >= 1 && opt <= 4) { static const char *eccPercents[4] = { "~8%", "~15%", "~23%", "~30%" }; cmb->setItemText(0, QSL("Automatic %1 (Level L%2)").arg(eccPercents[opt - 1]).arg(opt)); @@ -3884,7 +3909,7 @@ void MainWindow::automatic_info_set() cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbHXMask")))) { + if ((cmb = get_cmb(QSL("cmbHXMask")))) { if (!isError && cmb->currentIndex() == 0 && (opt = (m_bc.bc.encodedOption3() >> 8)) >= 1 && opt <= 4) { cmb->setItemText(0, QSL("Automatic %1").arg(opt - 1)); } else { @@ -3893,14 +3918,14 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_MICROPDF417 || symbology == BARCODE_HIBC_MICPDF) { - if ((cmb = m_optionWidget->findChild(QSL("cmbMPDFCols")))) { + if ((cmb = get_cmb(QSL("cmbMPDFCols")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 4) { cmb->setItemText(0, QSL("Automatic %1").arg(opt)); } else { cmb->setItemText(0, QSL("Automatic")); } } - if ((lbl = m_optionWidget->findChild(QSL("lblMPDFECCMsg")))) { + if ((lbl = get_lbl(QSL("lblMPDFECCMsg")))) { if (!isError && (opt = (m_bc.bc.encodedOption1() >> 8)) >= 0 && opt <= 99) { lbl->setText(QSL("%1%").arg(opt)); } else { @@ -3909,7 +3934,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_MICROQR) { - if ((cmb = m_optionWidget->findChild(QSL("cmbMQRSize")))) { + if ((cmb = get_cmb(QSL("cmbMQRSize")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 4) { const int r = m_bc.bc.encodedRows(); cmb->setItemText(0, QSL("Automatic %1 x %2 (M%3)").arg(r).arg(r).arg(opt)); @@ -3917,14 +3942,14 @@ void MainWindow::automatic_info_set() cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbMQRECC")))) { + if ((cmb = get_cmb(QSL("cmbMQRECC")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) >= 1 && opt <= 3) { cmb->setItemText(0, QSL("Automatic %1 (Level %2)").arg(qrECCPercents[opt - 1]).arg(qrECCs[opt - 1])); } else { cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbMQRMask")))) { + if ((cmb = get_cmb(QSL("cmbMQRMask")))) { if (!isError && cmb->currentIndex() == 0 && (opt = (m_bc.bc.encodedOption3() >> 8)) >= 1 && opt <= 4) { cmb->setItemText(0, QSL("Automatic %1").arg(opt - 1)); } else { @@ -3933,21 +3958,21 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_PDF417 || symbology == BARCODE_PDF417COMP || symbology == BARCODE_HIBC_PDF) { - if ((cmb = m_optionWidget->findChild(QSL("cmbPDFCols")))) { + if ((cmb = get_cmb(QSL("cmbPDFCols")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 30) { cmb->setItemText(0, QSL("Automatic %1").arg(opt)); } else { cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbPDFRows")))) { + if ((cmb = get_cmb(QSL("cmbPDFRows")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedRows()) >= 3 && opt <= 90) { cmb->setItemText(0, QSL("Automatic %1").arg(opt)); } else { cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbPDFECC")))) { + if ((cmb = get_cmb(QSL("cmbPDFECC")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) >= 0 && opt <= 8) { cmb->setItemText(0, QSL("Automatic %1 (%2 words)").arg(opt).arg(2 << opt)); } else { @@ -3956,7 +3981,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_QRCODE || symbology == BARCODE_HIBC_QR) { - if ((cmb = m_optionWidget->findChild(QSL("cmbQRSize")))) { + if ((cmb = get_cmb(QSL("cmbQRSize")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 40) { const int r = m_bc.bc.encodedRows(); cmb->setItemText(0, QSL("Automatic %1 x %2 (Version %3)").arg(r).arg(r).arg(opt)); @@ -3964,14 +3989,14 @@ void MainWindow::automatic_info_set() cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbQRECC")))) { + if ((cmb = get_cmb(QSL("cmbQRECC")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) >= 1 && opt <= 4) { cmb->setItemText(0, QSL("Automatic %1 (Level %2)").arg(qrECCPercents[opt - 1]).arg(qrECCs[opt - 1])); } else { cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbQRMask")))) { + if ((cmb = get_cmb(QSL("cmbQRMask")))) { if (!isError && cmb->currentIndex() == 0 && (opt = (m_bc.bc.encodedOption3() >> 8)) >= 1 && opt <= 8) { cmb->setItemText(0, QSL("Automatic %1").arg(opt - 1)); } else { @@ -3980,7 +4005,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_RMQR) { - if ((cmb = m_optionWidget->findChild(QSL("cmbRMQRSize")))) { + if ((cmb = get_cmb(QSL("cmbRMQRSize")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption2()) >= 1 && opt <= 38) { const int r = m_bc.bc.encodedRows(); const int w = m_bc.bc.encodedWidth(); @@ -3989,7 +4014,7 @@ void MainWindow::automatic_info_set() cmb->setItemText(0, QSL("Automatic")); } } - if ((cmb = m_optionWidget->findChild(QSL("cmbRMQRECC")))) { + if ((cmb = get_cmb(QSL("cmbRMQRECC")))) { if (!isError && cmb->currentIndex() == 0 && (opt = m_bc.bc.encodedOption1()) && (opt == 2 || opt == 4)) { cmb->setItemText(0, QSL("Automatic %1 (Level %2)").arg(qrECCPercents[opt - 1]).arg(qrECCs[opt - 1])); } else { @@ -3998,7 +4023,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_ULTRA) { - if ((txt = m_optionWidget->findChild(QSL("txtUltraAutoInfo")))) { + if ((txt = get_txt(QSL("txtUltraAutoInfo")))) { if (!isError) { static const QString eccStrs[6] = { "Error Detection Only", "Approx 5%", "Approx 9%", "Approx 17%", "Approx 25%", "Approx 33%" @@ -4021,7 +4046,7 @@ void MainWindow::automatic_info_set() } } else if (symbology == BARCODE_UPNQR) { - if ((cmb = m_optionWidget->findChild(QSL("cmbUPNQRMask")))) { + if ((cmb = get_cmb(QSL("cmbUPNQRMask")))) { if (!isError && cmb->currentIndex() == 0 && (opt = (m_bc.bc.encodedOption3() >> 8)) >= 1 && opt <= 8) { cmb->setItemText(0, QSL("Automatic %1").arg(opt - 1)); } else { @@ -4050,6 +4075,60 @@ QWidget *MainWindow::get_widget(const QString &name) return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; } +/* Shorthand to find pushbutton child */ +QPushButton *MainWindow::get_btn(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + +/* Shorthand to find checkbox child */ +QCheckBox *MainWindow::get_chk(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + +/* Shorthand to find combobox child */ +QComboBox *MainWindow::get_cmb(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + +/* Shorthand to find doublespinbox child */ +QDoubleSpinBox *MainWindow::get_dspn(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + +/* Shorthand to find groupbox child */ +QGroupBox *MainWindow::get_groupBox(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + +/* Shorthand to find label child */ +QLabel *MainWindow::get_lbl(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + +/* Shorthand to find radiobutton child */ +QRadioButton *MainWindow::get_rad(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + +/* Shorthand to find spinbox child */ +QSpinBox *MainWindow::get_spn(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + +/* Shorthand to find spinbox child */ +QLineEdit *MainWindow::get_txt(const QString &name) +{ + return m_optionWidget ? m_optionWidget->findChild(name) : nullptr; +} + /* Return settings subsection name for a symbol */ QString MainWindow::get_setting_name(int symbology) { @@ -4124,7 +4203,7 @@ int MainWindow::get_rad_grp_index(const QStringList &names) if (m_optionWidget) { QRadioButton *radioButton; for (int index = 0; index < names.size(); index++) { - radioButton = m_optionWidget->findChild(names[index]); + radioButton = get_rad(names[index]); if (radioButton && radioButton->isChecked()) { return index; } @@ -4141,9 +4220,9 @@ void MainWindow::set_rad_from_setting(QSettings &settings, const QString &settin int index = settings.value(setting, default_val).toInt(); QRadioButton *radioButton; if (index >= 0 && index < names.size()) { - radioButton = m_optionWidget->findChild(names[index]); + radioButton = get_rad(names[index]); } else { - radioButton = m_optionWidget->findChild(names[0]); + radioButton = get_rad(names[0]); } if (radioButton) { radioButton->setChecked(true); @@ -4154,21 +4233,21 @@ void MainWindow::set_rad_from_setting(QSettings &settings, const QString &settin /* Helper to see if radio button checked, checking for NULL and whether enabled */ bool MainWindow::get_rad_val(const QString &name) { - QRadioButton *radioButton = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QRadioButton *radioButton = get_rad(name); return radioButton && radioButton->isEnabled() && radioButton->isChecked(); } /* Helper to return index of selected item in combobox, checking for NULL */ int MainWindow::get_cmb_index(const QString &name) { - QComboBox *comboBox = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QComboBox *comboBox = get_cmb(name); return comboBox ? comboBox->currentIndex() : 0; } /* Helper to set item in combobox from index in settings, checking for NULL */ void MainWindow::set_cmb_index(const QString &name, const int index) { - QComboBox *comboBox = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QComboBox *comboBox = get_cmb(name); if (comboBox) { comboBox->setCurrentIndex(index); } @@ -4178,7 +4257,7 @@ void MainWindow::set_cmb_index(const QString &name, const int index) void MainWindow::set_cmb_from_setting(QSettings &settings, const QString &setting, const QString &name, int default_val) { - QComboBox *comboBox = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QComboBox *comboBox = get_cmb(name); if (comboBox) { comboBox->setCurrentIndex(settings.value(setting, default_val).toInt()); } @@ -4187,7 +4266,7 @@ void MainWindow::set_cmb_from_setting(QSettings &settings, const QString &settin /* Helper to return if checkbox checked, checking for NULL */ int MainWindow::get_chk_val(const QString &name) { - QCheckBox *checkBox = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QCheckBox *checkBox = get_chk(name); return checkBox && checkBox->isChecked() ? 1 : 0; } @@ -4195,7 +4274,7 @@ int MainWindow::get_chk_val(const QString &name) void MainWindow::set_chk_from_setting(QSettings &settings, const QString &setting, const QString &name, int default_val) { - QCheckBox *checkBox = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QCheckBox *checkBox = get_chk(name); if (checkBox) { checkBox->setChecked(settings.value(setting, default_val).toInt() ? true : false); } @@ -4204,7 +4283,7 @@ void MainWindow::set_chk_from_setting(QSettings &settings, const QString &settin /* Helper to return value of double spinner, checking for NULL */ double MainWindow::get_dspn_val(const QString &name) { - QDoubleSpinBox *spinBox = m_optionWidget->findChild(name); + QDoubleSpinBox *spinBox = get_dspn(name); return spinBox ? spinBox->value() : 0.0; } @@ -4212,7 +4291,7 @@ double MainWindow::get_dspn_val(const QString &name) void MainWindow::set_dspn_from_setting(QSettings &settings, const QString &setting, const QString &name, float default_val) { - QDoubleSpinBox *spinBox = m_optionWidget->findChild(name); + QDoubleSpinBox *spinBox = get_dspn(name); if (spinBox) { spinBox->setValue(settings.value(setting, default_val).toFloat()); } @@ -4221,7 +4300,7 @@ void MainWindow::set_dspn_from_setting(QSettings &settings, const QString &setti /* Helper to return text of line edit, checking for NULL */ QString MainWindow::get_txt_val(const QString &name) { - QLineEdit *lineEdit = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QLineEdit *lineEdit = get_txt(name); return lineEdit ? lineEdit->text() : QSEmpty; } @@ -4229,7 +4308,7 @@ QString MainWindow::get_txt_val(const QString &name) void MainWindow::set_txt_from_setting(QSettings &settings, const QString &setting, const QString &name, const QString &default_val) { - QLineEdit *lineEdit = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QLineEdit *lineEdit = get_txt(name); if (lineEdit) { lineEdit->setText(settings.value(setting, default_val).toString()); } @@ -4238,7 +4317,7 @@ void MainWindow::set_txt_from_setting(QSettings &settings, const QString &settin /* Helper to return value of spin box, checking for NULL */ int MainWindow::get_spn_val(const QString &name) { - QSpinBox *spinBox = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QSpinBox *spinBox = get_spn(name); return spinBox ? spinBox->value() : 0; } @@ -4246,7 +4325,7 @@ int MainWindow::get_spn_val(const QString &name) void MainWindow::set_spn_from_setting(QSettings &settings, const QString &setting, const QString &name, int default_val) { - QSpinBox *spinBox = m_optionWidget ? m_optionWidget->findChild(name) : nullptr; + QSpinBox *spinBox = get_spn(name); if (spinBox) { spinBox->setValue(settings.value(setting, default_val).toInt()); } @@ -4465,12 +4544,14 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) case BARCODE_DATAMATRIX: case BARCODE_HIBC_DM: - settings.setValue(QSL("studio/bc/datamatrix/size"), get_cmb_index(QSL("cmbDM200Size"))); + settings.setValue(QSL("studio/bc/datamatrix/size"), get_cmb_index(QSL("cmbDMSize"))); settings.setValue(QSL("studio/bc/datamatrix/encoding_mode"), get_rad_grp_index( - QStringList() << QSL("radDM200Stand") << QSL("radDM200GS1") << QSL("radDM200HIBC"))); + QStringList() << QSL("radDMStand") << QSL("radDMGS1") << QSL("radDMHIBC"))); settings.setValue(QSL("studio/bc/datamatrix/chk_suppress_rect"), get_chk_val(QSL("chkDMRectangle"))); settings.setValue(QSL("studio/bc/datamatrix/chk_allow_dmre"), get_chk_val(QSL("chkDMRE"))); settings.setValue(QSL("studio/bc/datamatrix/chk_gs_sep"), get_chk_val(QSL("chkDMGSSep"))); + settings.setValue(QSL("studio/bc/datamatrix/startmode"), get_cmb_index(QSL("cmbDMStartMode"))); + settings.setValue(QSL("studio/bc/datamatrix/startmodelength"), get_spn_val(QSL("spnDMStartModeLength"))); settings.setValue(QSL("studio/bc/datamatrix/iso_144"), get_chk_val(QSL("chkDMISO144"))); settings.setValue(QSL("studio/bc/datamatrix/chk_fast"), get_chk_val(QSL("chkDMFast"))); settings.setValue(QSL("studio/bc/datamatrix/structapp_count"), get_cmb_index(QSL("cmbDMStructAppCount"))); @@ -4499,7 +4580,7 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) settings.setValue(QSL("studio/bc/qrcode/ecc"), get_cmb_index(QSL("cmbQRECC"))); settings.setValue(QSL("studio/bc/qrcode/mask"), get_cmb_index(QSL("cmbQRMask"))); settings.setValue(QSL("studio/bc/qrcode/encoding_mode"), get_rad_grp_index( - QStringList() << QSL("radDM200Stand") << QSL("radQRGS1") << QSL("radQRHIBC"))); + QStringList() << QSL("radQRStand") << QSL("radQRGS1") << QSL("radQRHIBC"))); settings.setValue(QSL("studio/bc/qrcode/chk_full_multibyte"), get_chk_val(QSL("chkQRFullMultibyte"))); settings.setValue(QSL("studio/bc/qrcode/chk_fast_mode"), get_chk_val(QSL("chkQRFast"))); settings.setValue(QSL("studio/bc/qrcode/structapp_count"), get_cmb_index(QSL("cmbQRStructAppCount"))); @@ -4516,7 +4597,7 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) settings.setValue(QSL("studio/bc/rmqr/size"), get_cmb_index(QSL("cmbRMQRSize"))); settings.setValue(QSL("studio/bc/rmqr/ecc"), get_cmb_index(QSL("cmbRMQRECC"))); settings.setValue(QSL("studio/bc/rmqr/encoding_mode"), get_rad_grp_index( - QStringList() << QSL("radQRStand") << QSL("radRMQRGS1"))); + QStringList() << QSL("radRMQRStand") << QSL("radRMQRGS1"))); settings.setValue(QSL("studio/bc/rmqr/chk_full_multibyte"), get_chk_val(QSL("chkRMQRFullMultibyte"))); break; @@ -4941,12 +5022,14 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) case BARCODE_DATAMATRIX: case BARCODE_HIBC_DM: - set_cmb_from_setting(settings, QSL("studio/bc/datamatrix/size"), QSL("cmbDM200Size")); + set_cmb_from_setting(settings, QSL("studio/bc/datamatrix/size"), QSL("cmbDMSize")); set_rad_from_setting(settings, QSL("studio/bc/datamatrix/encoding_mode"), - QStringList() << QSL("radDM200Stand") << QSL("radDM200GS1") << QSL("radDM200HIBC")); + QStringList() << QSL("radDMStand") << QSL("radDMGS1") << QSL("radDMHIBC")); set_chk_from_setting(settings, QSL("studio/bc/datamatrix/chk_suppress_rect"), QSL("chkDMRectangle")); set_chk_from_setting(settings, QSL("studio/bc/datamatrix/chk_allow_dmre"), QSL("chkDMRE")); set_chk_from_setting(settings, QSL("studio/bc/datamatrix/chk_gs_sep"), QSL("chkDMGSSep")); + set_cmb_from_setting(settings, QSL("studio/bc/datamatrix/startmode"), QSL("cmbDMStartMode")); + set_spn_from_setting(settings, QSL("studio/bc/datamatrix/startmodelength"), QSL("spnDMStartModeLength"), 0); set_chk_from_setting(settings, QSL("studio/bc/datamatrix/iso_144"), QSL("chkDMISO144")); set_chk_from_setting(settings, QSL("studio/bc/datamatrix/chk_fast"), QSL("chkDMFast")); set_cmb_from_setting(settings, QSL("studio/bc/datamatrix/structapp_count"), QSL("cmbDMStructAppCount")); @@ -4975,7 +5058,7 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) set_cmb_from_setting(settings, QSL("studio/bc/qrcode/ecc"), QSL("cmbQRECC")); set_cmb_from_setting(settings, QSL("studio/bc/qrcode/mask"), QSL("cmbQRMask")); set_rad_from_setting(settings, QSL("studio/bc/qrcode/encoding_mode"), - QStringList() << QSL("radDM200Stand") << QSL("radQRGS1") << QSL("radQRHIBC")); + QStringList() << QSL("radQRStand") << QSL("radQRGS1") << QSL("radQRHIBC")); set_chk_from_setting(settings, QSL("studio/bc/qrcode/chk_full_multibyte"), QSL("chkQRFullMultibyte")); set_chk_from_setting(settings, QSL("studio/bc/qrcode/chk_fast_mode"), QSL("chkQRFast")); set_cmb_from_setting(settings, QSL("studio/bc/qrcode/structapp_count"), QSL("cmbQRStructAppCount")); @@ -4992,7 +5075,7 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) set_cmb_from_setting(settings, QSL("studio/bc/rmqr/size"), QSL("cmbRMQRSize")); set_cmb_from_setting(settings, QSL("studio/bc/rmqr/ecc"), QSL("cmbRMQRECC")); set_rad_from_setting(settings, QSL("studio/bc/rmqr/encoding_mode"), - QStringList() << QSL("radQRStand") << QSL("radRMQRGS1")); + QStringList() << QSL("radRMQRStand") << QSL("radRMQRGS1")); set_chk_from_setting(settings, QSL("studio/bc/rmqr/chk_full_multibyte"), QSL("chkRMQRFullMultibyte")); break; diff --git a/frontend_qt/mainwindow.h b/frontend_qt/mainwindow.h index 56d49fab..1d708b77 100644 --- a/frontend_qt/mainwindow.h +++ b/frontend_qt/mainwindow.h @@ -24,10 +24,11 @@ #include #include -class QLabel; -class QShortcut; class QDoubleSpinBox; class QPushButton; +class QRadioButton; +class QShortcut; +class QSpinBox; class QToolButton; #include "ui_mainWindow.h" @@ -77,6 +78,7 @@ public slots: void eanaddon_no_quiet_zones_ui_set(); void aztec_size_index_changed(); void aztec_ecc_index_changed(); + void dm_startmode_ui_set(); void structapp_ui_set(); void clear_text_gap(); void on_encoded(); @@ -177,6 +179,16 @@ protected: QWidget *get_widget(const QString &name); + QPushButton *get_btn(const QString &name); + QCheckBox *get_chk(const QString &name); + QComboBox *get_cmb(const QString &name); + QGroupBox *get_groupBox(const QString &name); + QLabel *get_lbl(const QString &name); + QRadioButton *get_rad(const QString &name); + QDoubleSpinBox *get_dspn(const QString &name); + QSpinBox *get_spn(const QString &name); + QLineEdit *get_txt(const QString &name); + static QString get_setting_name(int symbology); int get_rad_grp_index(const QStringList &names);