From c0ec67f99e7a4e41ec7498ccdc64d6ab96f92c1a Mon Sep 17 00:00:00 2001 From: gitlost Date: Sun, 7 Aug 2022 22:43:49 +0100 Subject: [PATCH] - vector: ensure separators don't overlap with other rectangles so that they render correctly when have RGBA alpha channel - GUI: update_preview() after Data Dialog return to ensure preview in sync - GUI: add automatic info feedback to "Automatic" combo item of size/row/height comboboxes - backend_qt: always call getMaxRectsRightBottom() for render fudge; use ZBarcode_Clear() instead of ZBarcode_Delete() after 1st call - update BWIPP to latest & add some MICROQR tests to exercise optimize change --- ChangeLog | 9 + backend/raster.c | 7 +- backend/tests/data/svg/codablockf_3rows.svg | 103 +- .../svg/codablockf_comph_sep2_fgbgalpha.svg | 120 ++ backend/tests/data/svg/codablockf_hvwsp2.svg | 103 +- .../tests/data/svg/codablockf_hvwsp2_box2.svg | 103 +- .../tests/data/svg/code49_comph_fgalpha.svg | 51 + backend/tests/test_qr.c | 1715 ++++++++++++----- backend/tests/test_svg.c | 119 +- backend/tests/test_vector.c | 12 +- .../tests/tools/bwipp_dump-barcode.ps.diff | 72 +- backend/tests/tools/bwipp_dump.ps.tar.xz | Bin 129136 -> 129012 bytes backend/vector.c | 45 +- backend_qt/qzint.cpp | 156 +- frontend_qt/grpAztec.ui | 10 + frontend_qt/grpUltra.ui | 10 + frontend_qt/mainwindow.cpp | 283 ++- frontend_qt/mainwindow.h | 6 +- 18 files changed, 2115 insertions(+), 809 deletions(-) create mode 100644 backend/tests/data/svg/codablockf_comph_sep2_fgbgalpha.svg create mode 100644 backend/tests/data/svg/code49_comph_fgalpha.svg diff --git a/ChangeLog b/ChangeLog index 5a835e02..3b1b8c07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,10 @@ Version 2.11.0.9 (dev) not released yet ======================================= +**Incompatible changes** +------------------------ + - None yet + Changes ------- - GUI: sequence export dialog: add Postfix field for filename (#252) @@ -22,6 +26,8 @@ Changes - Add new symbology BC412 (SEMI T1-95) - backend: use alloca() (z_alloca()) for both Unix and Windows - GS1: new AI 4309 with latlong checker, new currency code 925 +- GUI: add automatic info feedback to "Automatic" combo item of size/row/height + comboboxes Bugs ---- @@ -34,6 +40,9 @@ Bugs - GUI: sequence window: fix initial clear button status - GUI: NO_PNG: allow for Qt not parsing #if's in slots - frontend: batch mode: fix default "~~~~~" output (github issue #65) +- vector: ensure separators don't overlap with other rectangles so that + they render correctly when have RGBA alpha channel +- GUI: update_preview() after Data Dialog return to ensure preview in sync Version 2.11.0 (2022-05-24) diff --git a/backend/raster.c b/backend/raster.c index 2bd0cdbc..d5e00f60 100644 --- a/backend/raster.c +++ b/backend/raster.c @@ -666,6 +666,7 @@ static void draw_bind_box(const struct zint_symbol *symbol, unsigned char *pixel const int xoffset_si, const int yoffset_si, const int symbol_height_si, const int dot_overspill_si, const int image_width, const int image_height, const int si) { if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) { + const int is_codablockf = symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF; const int horz_outside = is_fixed_ratio(symbol->symbology); const int bwidth_si = symbol->border_width * si; int ybind_top = yoffset_si - bwidth_si; @@ -675,8 +676,7 @@ static void draw_bind_box(const struct zint_symbol *symbol, unsigned char *pixel ybind_bot = image_height - bwidth_si; } /* Horizontal boundary bars */ - if ((symbol->output_options & BARCODE_BOX) - || (symbol->symbology != BARCODE_CODABLOCKF && symbol->symbology != BARCODE_HIBC_BLOCKF)) { + if ((symbol->output_options & BARCODE_BOX) || !is_codablockf) { /* Box or not CodaBlockF */ draw_bar(pixelbuf, 0, image_width, ybind_top, bwidth_si, image_width, image_height, DEFAULT_INK); draw_bar(pixelbuf, 0, image_width, ybind_bot, bwidth_si, image_width, image_height, DEFAULT_INK); @@ -928,6 +928,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl int text_height; /* Font pixel size (so whole integers) */ float text_gap; /* Gap between barcode and text */ float guard_descent; + const int is_codablockf = symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF; int textflags = 0; int xoffset_si, yoffset_si, roffset_si, boffset_si; @@ -1266,7 +1267,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl } sep_height_si = (int) (sep_height * si); sep_yoffset_si = yoffset_si + row_heights_si[0] - sep_height_si / 2; - if (symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF) { + if (is_codablockf) { /* Avoid 11-module start and 13-module stop chars */ sep_xoffset_si += 11 * si; sep_width_si -= (11 + 13) * si; diff --git a/backend/tests/data/svg/codablockf_3rows.svg b/backend/tests/data/svg/codablockf_3rows.svg index ece7188d..ca1cfea5 100644 --- a/backend/tests/data/svg/codablockf_3rows.svg +++ b/backend/tests/data/svg/codablockf_3rows.svg @@ -11,50 +11,73 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/codablockf_comph_sep2_fgbgalpha.svg b/backend/tests/data/svg/codablockf_comph_sep2_fgbgalpha.svg new file mode 100644 index 00000000..db3c5206 --- /dev/null +++ b/backend/tests/data/svg/codablockf_comph_sep2_fgbgalpha.svg @@ -0,0 +1,120 @@ + + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/codablockf_hvwsp2.svg b/backend/tests/data/svg/codablockf_hvwsp2.svg index ee39ad1f..9fd729d4 100644 --- a/backend/tests/data/svg/codablockf_hvwsp2.svg +++ b/backend/tests/data/svg/codablockf_hvwsp2.svg @@ -11,50 +11,73 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/codablockf_hvwsp2_box2.svg b/backend/tests/data/svg/codablockf_hvwsp2_box2.svg index 1c0606a8..ccb234d3 100644 --- a/backend/tests/data/svg/codablockf_hvwsp2_box2.svg +++ b/backend/tests/data/svg/codablockf_hvwsp2_box2.svg @@ -11,50 +11,73 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/code49_comph_fgalpha.svg b/backend/tests/data/svg/code49_comph_fgalpha.svg new file mode 100644 index 00000000..cf7a9d82 --- /dev/null +++ b/backend/tests/data/svg/code49_comph_fgalpha.svg @@ -0,0 +1,51 @@ + + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/test_qr.c b/backend/tests/test_qr.c index 9e041897..a993905d 100644 --- a/backend/tests/test_qr.c +++ b/backend/tests/test_qr.c @@ -43,51 +43,51 @@ static void test_qr_options(int index, int debug) { int expected_size; int compare_previous; }; - // 貫 U+8CAB kanji, in Shift JIS 0x8AD1 (\212\321), UTF-8 E8B2AB - // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) + /* 貫 U+8CAB kanji, in Shift JIS 0x8AD1 (\212\321), UTF-8 E8B2AB */ + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { -1, -1, { 0, 0, "" }, "12345", 0, 0, 21, -1 }, // ECC auto-set to 1 (L), version auto-set to 1 - /* 1*/ { 5, -1, { 0, 0, "" }, "12345", 0, 0, 21, 0 }, // ECC > 4 ignored - /* 2*/ { -1, 41, { 0, 0, "" }, "12345", 0, 0, 21, 0 }, // Version > 40 ignored - /* 3*/ { -1, 2, { 0, 0, "" }, "12345", 0, 0, 25, -1 }, // ECC auto-set to 4 (Q), version 2 - /* 4*/ { 4, 2, { 0, 0, "" }, "12345", 0, 0, 25, 0 }, // ECC 4 (Q), version 2 - /* 5*/ { 1, 2, { 0, 0, "" }, "12345", 0, 0, 25, 1 }, // ECC 1 (L), version 2 - /* 6*/ { -1, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, -1 }, // ECC auto-set to 1 (L), version auto-set to 1 - /* 7*/ { 1, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, 0 }, // Version auto-set to 1 - /* 8*/ { -1, 1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, 0 }, // ECC auto-set to 1 (L) + /* 0*/ { -1, -1, { 0, 0, "" }, "12345", 0, 0, 21, -1 }, /* ECC auto-set to 1 (L), version auto-set to 1 */ + /* 1*/ { 5, -1, { 0, 0, "" }, "12345", 0, 0, 21, 0 }, /* ECC > 4 ignored */ + /* 2*/ { -1, 41, { 0, 0, "" }, "12345", 0, 0, 21, 0 }, /* Version > 40 ignored */ + /* 3*/ { -1, 2, { 0, 0, "" }, "12345", 0, 0, 25, -1 }, /* ECC auto-set to 4 (Q), version 2 */ + /* 4*/ { 4, 2, { 0, 0, "" }, "12345", 0, 0, 25, 0 }, /* ECC 4 (Q), version 2 */ + /* 5*/ { 1, 2, { 0, 0, "" }, "12345", 0, 0, 25, 1 }, /* ECC 1 (L), version 2 */ + /* 6*/ { -1, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, -1 }, /* ECC auto-set to 1 (L), version auto-set to 1 */ + /* 7*/ { 1, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, 0 }, /* Version auto-set to 1 */ + /* 8*/ { -1, 1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, 0 }, /* ECC auto-set to 1 (L) */ /* 9*/ { 1, 1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 21, 0 }, - /* 10*/ { 2, 1, { 0, 0, "" }, "貫やぐ識禁", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, // ECC 2 (M), version 1 - /* 11*/ { 2, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 25, -1 }, // Version auto-set to 2 + /* 10*/ { 2, 1, { 0, 0, "" }, "貫やぐ識禁", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, /* ECC 2 (M), version 1 */ + /* 11*/ { 2, -1, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 25, -1 }, /* Version auto-set to 2 */ /* 12*/ { 2, 2, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 25, 0 }, /* 13*/ { 1, 2, { 0, 0, "" }, "貫やぐ識禁", 0, 0, 25, 1 }, - /* 14*/ { -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 29, -1 }, // ECC auto-set to 1 (L), version auto-set to 3 + /* 14*/ { -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 29, -1 }, /* ECC auto-set to 1 (L), version auto-set to 3 */ /* 15*/ { 1, 3, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 29, 0 }, - /* 16*/ { 2, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 33, -1 }, // ECC 2 (M), version auto-set to 4 + /* 16*/ { 2, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 33, -1 }, /* ECC 2 (M), version auto-set to 4 */ /* 17*/ { 2, 4, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 33, 0 }, - /* 18*/ { 3, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 37, -1 }, // ECC 3 (Q), version auto-set to 5 + /* 18*/ { 3, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 37, -1 }, /* ECC 3 (Q), version auto-set to 5 */ /* 19*/ { 3, 5, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 37, 0 }, - /* 20*/ { 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 41, -1 }, // ECC 4 (H), version auto-set to 6 + /* 20*/ { 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 41, -1 }, /* ECC 4 (H), version auto-set to 6 */ /* 21*/ { 4, 6, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", 0, 0, 41, 0 }, - /* 22*/ { -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 69, -1 }, // ECC auto-set to 1, version auto-set to 13 + /* 22*/ { -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 69, -1 }, /* ECC auto-set to 1, version auto-set to 13 */ /* 23*/ { 1, 13, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 69, 0 }, - /* 24*/ { 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 101, -1 }, // ECC 4, version auto-set to 21 + /* 24*/ { 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 101, -1 }, /* ECC 4, version auto-set to 21 */ /* 25*/ { 4, 21, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。", 0, 0, 101, 0 }, - /* 26*/ { -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 105, -1 }, // ECC auto-set to 1, version auto-set to 22 + /* 26*/ { -1, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 105, -1 }, /* ECC auto-set to 1, version auto-set to 22 */ /* 27*/ { 1, 22, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 105, 0 }, - /* 28*/ { 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 153, 1 }, // ECC 4, version auto-set 34 + /* 28*/ { 4, -1, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 153, 1 }, /* ECC 4, version auto-set 34 */ /* 29*/ { 4, 34, { 0, 0, "" }, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", 0, 0, 153, 0 }, - /* 30*/ { 4, -1, { 0, 0, "" }, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0, 0, 177, -1 }, // 1852 alphanumerics max for ECC 4 (H) - /* 31*/ { 1, -1, { 0, 0, "" }, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0, 0, 177, -1 }, // 4296 alphanumerics max for ECC 1 (L) - /* 32*/ { 4, -1, { 0, 0, "" }, "貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫", 0, -1, 0, -1 }, // 424 Kanji, ECC 4 (Q), version 1 - /* 33*/ { 4, -1, { 0, 0, "" }, "貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, // 425 Kanji, ECC 4 (Q), version 1 + /* 30*/ { 4, -1, { 0, 0, "" }, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0, 0, 177, -1 }, /* 1852 alphanumerics max for ECC 4 (H) */ + /* 31*/ { 1, -1, { 0, 0, "" }, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0, 0, 177, -1 }, /* 4296 alphanumerics max for ECC 1 (L) */ + /* 32*/ { 4, -1, { 0, 0, "" }, "貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫", 0, -1, 0, -1 }, /* 424 Kanji, ECC 4 (Q), version 1 */ + /* 33*/ { 4, -1, { 0, 0, "" }, "貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫貫", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, /* 425 Kanji, ECC 4 (Q), version 1 */ /* 34*/ { 4, 1, { 0, 0, "" }, "12345678901234567", 0, 0, 21, -1 }, /* 35*/ { 4, 1, { 1, 2, "" }, "12345678901234567", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, /* 36*/ { 4, 1, { 1, 2, "" }, "123456789012", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, /* 37*/ { 4, 1, { 1, 2, "" }, "12345678901", 0, 0, 21, -1 }, /* 38*/ { 4, 1, { 3, 16, "123" }, "12345678901", 0, 0, 21, -1 }, - /* 39*/ { 4, 1, { 3, 17, "123" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, // Bad Structured Append count - /* 40*/ { 4, 1, { 3, 2, "123" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, // Bad Structured Append index - /* 41*/ { 4, 1, { 1, 2, "256" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, // Bad Structured Append ID + /* 39*/ { 4, 1, { 3, 17, "123" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, /* Bad Structured Append count */ + /* 40*/ { 4, 1, { 3, 2, "123" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, /* Bad Structured Append index */ + /* 41*/ { 4, 1, { 1, 2, "256" }, "12345678901", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, /* Bad Structured Append ID */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -146,20 +146,20 @@ static void test_qr_input(int index, int generate, int debug) { int zxingcpp_cmp; char *comment; }; - // é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 - // β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 - // ก U+0E01 in ISO 8859-11 Thai (but not other ISO 8859 or Win page), not in Shift JIS, UTF-8 E0B881 - // Ж U+0416 in ISO 8859-5 Cyrillic (but not other ISO 8859), Win 1251, in Shift JIS 0x8447, UTF-8 D096 - // ກ U+0E81 Lao not in any ISO 8859 (or Win page) or Shift JIS, UTF-8 E0BA81 - // ¥ U+00A5 in ISO 8859-1 0xA5 (\245), in Shift JIS single-byte 0x5C (\134) (backslash); 0xA5 same codepoint as single-byte half-width katakana ・ (U+FF65) in Shift JIS (below), UTF-8 C2A5 - // ・ U+FF65 half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xA5 (\245), UTF-8 EFBDA5 - // ¿ U+00BF in ISO 8859-1 0xBF (\277), not in Shift JIS; 0xBF same codepoint as single-byte half-width katakana ソ (U+FF7F) in Shift JIS (below), UTF-8 C2BF - // ソ U+FF7F half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xBF (\277), UTF-8 EFBDBF - // ‾ U+203E overline, not in ISO/Win, in Shift JIS single-byte 0x7E (\176) (tilde), UTF-8 E280BE - // 点 U+70B9 kanji, in Shift JIS 0x935F (\223\137), UTF-8 E782B9 - // 茗 U+8317 kanji, in Shift JIS 0xE4AA (\344\252), UTF-8 E88C97 - // テ U+30C6 katakana, in Shift JIS 0x8365 (\203\145), UTF-8 E38386 - // Á U+00C1, UTF-8 C381; ȁ U+0201, UTF-8 C881; Ȃ U+0202, UTF-8 C882; ¢ U+00A2, UTF-8 C2A2; á U+00E1, UTF-8 C3A1 + /* é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 */ + /* β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 */ + /* ก U+0E01 in ISO 8859-11 Thai (but not other ISO 8859 or Win page), not in Shift JIS, UTF-8 E0B881 */ + /* Ж U+0416 in ISO 8859-5 Cyrillic (but not other ISO 8859), Win 1251, in Shift JIS 0x8447, UTF-8 D096 */ + /* ກ U+0E81 Lao not in any ISO 8859 (or Win page) or Shift JIS, UTF-8 E0BA81 */ + /* ¥ U+00A5 in ISO 8859-1 0xA5 (\245), in Shift JIS single-byte 0x5C (\134) (backslash); 0xA5 same codepoint as single-byte half-width katakana ・ (U+FF65) in Shift JIS (below), UTF-8 C2A5 */ + /* ・ U+FF65 half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xA5 (\245), UTF-8 EFBDA5 */ + /* ¿ U+00BF in ISO 8859-1 0xBF (\277), not in Shift JIS; 0xBF same codepoint as single-byte half-width katakana ソ (U+FF7F) in Shift JIS (below), UTF-8 C2BF */ + /* ソ U+FF7F half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xBF (\277), UTF-8 EFBDBF */ + /* ‾ U+203E overline, not in ISO/Win, in Shift JIS single-byte 0x7E (\176) (tilde), UTF-8 E280BE */ + /* 点 U+70B9 kanji, in Shift JIS 0x935F (\223\137), UTF-8 E782B9 */ + /* 茗 U+8317 kanji, in Shift JIS 0xE4AA (\344\252), UTF-8 E88C97 */ + /* テ U+30C6 katakana, in Shift JIS 0x8365 (\203\145), UTF-8 E38386 */ + /* Á U+00C1, UTF-8 C381; ȁ U+0201, UTF-8 C881; Ȃ U+0202, UTF-8 C882; ¢ U+00A2, UTF-8 C2A2; á U+00E1, UTF-8 C3A1 */ struct item data[] = { /* 0*/ { UNICODE_MODE, 0, 4, 6 << 8, "é", 0, 0, "40 1E 90 EC 11 EC 11 EC 11", 1, 1, "B1 (ISO 8859-1)" }, /* 1*/ { UNICODE_MODE, 3, 4, -1, "é", 0, 3, "70 34 01 E9 00 EC 11 EC 11", 1, 1, "ECI-3 B1 (ISO 8859-1)" }, @@ -315,8 +315,8 @@ static void test_qr_input(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_qr_input"); @@ -328,7 +328,7 @@ static void test_qr_input(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_QRCODE, data[i].input_mode, data[i].eci, data[i].option_1, -1, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); @@ -420,7 +420,7 @@ static void test_qr_gs1(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ testStart("test_qr_gs1"); @@ -432,7 +432,7 @@ static void test_qr_gs1(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_QRCODE, data[i].input_mode, -1 /*eci*/, data[i].option_1, -1, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); @@ -473,7 +473,7 @@ static void test_qr_optimize(int index, int generate, int debug) { struct item { int input_mode; int option_1; - int option_3; // OR-ed with ZINT_FULL_MULTIBYTE + int option_3; /* OR-ed with ZINT_FULL_MULTIBYTE */ char *data; int ret; char *expected; @@ -497,7 +497,7 @@ static void test_qr_optimize(int index, int generate, int debug) { /* 13*/ { UNICODE_MODE, 1, -1, "Golden ratio φ = 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374......", ZINT_WARN_NONCOMPLIANT, "Warning (80) 41 44 76 F6 C6 46 56 E2 07 26 17 46 96 F2 08 3D 32 03 D2 03 12 E1 19 26 A0 87 DC BB", 1, "B20 N100 A6 (nayuki.io - alpha/numeric/byte)" }, /* 14*/ { UNICODE_MODE, 1, -1, "こんにちwa、世界! αβγδ", ZINT_WARN_NONCOMPLIANT, "Warning (34) 41 B8 2B 18 2F 18 2C 98 2B F7 76 18 14 19 0A 28 A4 58 14 92 08 3B F8 3C 08 3C 18 3C", 1, "B27 (nayuki.io - kanji/european **NOT SAME** K4 B2 K4 A1 K4, less bits as nayuki (1.5.0) miscounting byte-mode input as UTF-8)" }, /* 15*/ { UNICODE_MODE, 1, 2 << 8, "こんにちテwa、世界! αβγδ", ZINT_WARN_NONCOMPLIANT, "Warning (34) 80 50 98 85 C4 29 21 3F 0D 2A 09 BB B0 C0 A0 C8 51 45 22 C0 A4 90 41 DF C1 E0 41 E0", 1, "K5 B19 (nayuki.io - kanji/european + extra leading kanji **NOT SAME** K5 B2 K4 A1 K4, same reason as above)" }, - /* 16*/ { UNICODE_MODE, 1, 8 << 8, "67128177921547861663com.acme35584af52fa3-88d0-093b-6c14-b37ddafb59c528908608sg.com.dash.www0530329356521790265903SG.COM.NETS46968696003522G33250183309051017567088693441243693268766948304B2AE13344004SG.SGQR209710339366720B439682.63667470805057501195235502733744600368027857918629797829126902859SG8236HELLO FOO2517Singapore3272B815", 0, "(232) 10 52 9F 46 70 B3 5D DE 9A 1F A1 7B 1B 7B 69 73 0B 1B 6B 29 99 A9 A9 C1 A3 0B 31 A9", 0, "N20 B47 N9 B15 N22 A11 N14 A1 N47 A19 N15 A8 N65 A20 B8 A8 (nayuki.io - SGQR alpha/numeric/byte); BWIPP different encodation (B13 N3 at end instead of B8 A8)" }, + /* 16*/ { UNICODE_MODE, 1, 8 << 8, "67128177921547861663com.acme35584af52fa3-88d0-093b-6c14-b37ddafb59c528908608sg.com.dash.www0530329356521790265903SG.COM.NETS46968696003522G33250183309051017567088693441243693268766948304B2AE13344004SG.SGQR209710339366720B439682.63667470805057501195235502733744600368027857918629797829126902859SG8236HELLO FOO2517Singapore3272B815", 0, "(232) 10 52 9F 46 70 B3 5D DE 9A 1F A1 7B 1B 7B 69 73 0B 1B 6B 29 99 A9 A9 C1 A3 0B 31 A9", 1, "N20 B47 N9 B15 N22 A11 N14 A1 N47 A19 N15 A8 N65 A20 B8 A8 (nayuki.io - SGQR alpha/numeric/byte)" }, /* 17*/ { UNICODE_MODE, 4, 1 << 8, "纪", ZINT_WARN_USES_ECI, "Warning 71 A4 03 E7 BA AA 00 EC 11", 1, "ECI-26 B3 (UTF-8 E7BAAA, U+7EAA, not in Shift JIS)" }, /* 18*/ { DATA_MODE, 4, 1 << 8, "纪", 0, "40 3E 7B AA A0 EC 11 EC 11", 1, "B3 (UTF-8 or Shift JIS, note ambiguous as 0xE7BA 0xAA happens to be valid Shift JIS 郤ェ as well)" }, /* 19*/ { UNICODE_MODE, 4, 1 << 8, "郤ェ", ZINT_WARN_NONCOMPLIANT, "Warning 40 3E 7B AA A0 EC 11 EC 11", 1, "B3 (Shift JIS or UTF-8 E7BAAA 纪, see above)" }, @@ -508,7 +508,7 @@ static void test_qr_optimize(int index, int generate, int debug) { /* 24*/ { UNICODE_MODE, 3, -1, "AB1234567890123A", 0, "20 11 CD 10 34 7B 72 31 50 30 C8 02 50", 1, "A2 N13 A1" }, /* 25*/ { UNICODE_MODE, 3, 2 << 8, "テaABCD1", ZINT_WARN_NONCOMPLIANT, "Warning 40 88 36 56 14 14 24 34 43 10 EC 11 EC", 1, "B8" }, /* 26*/ { UNICODE_MODE, 3, -1, "テaABCDE1", ZINT_WARN_NONCOMPLIANT, "Warning 40 38 36 56 12 03 1C D4 52 9D C0 EC 11", 0, "B3 A6; BWIPP different encodation (B9)" }, - /* 27*/ { UNICODE_MODE, 2, -1, "テéaABCDE1", ZINT_WARN_USES_ECI, "Warning 71 A4 06 E3 83 86 C3 A9 61 20 31 CD 45 29 DC 00", 0, "B6 A6; BWIPP different encodation (B12)" }, + /* 27*/ { UNICODE_MODE, 2, -1, "テéaABCDE1", ZINT_WARN_USES_ECI, "Warning 71 A4 06 E3 83 86 C3 A9 61 20 31 CD 45 29 DC 00", 1, "B6 A6" }, /* 28*/ { UNICODE_MODE, 2, -1, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁", ZINT_WARN_NONCOMPLIANT, "Warning (44) 80 83 A8 85 88 25 CA 2F 40 B0 53 C2 44 98 41 00 4A 02 0E A8 F8 F5 0D 30 4C 35 A1 CC", 0, "K8 N1 K8 B3; BWIPP different encodation (K8 N1 K8 N1 K1)" }, /* 29*/ { UNICODE_MODE, 1, -1, "貫やぐ識禁ぱい再2間変字全ノレ没無8裁花ほゃ過法ひなご札17能つーびれ投覧マ勝動エヨ額界よみ作皇ナヲニ打題ヌルヲ掲布益フが。入35能ト権話しこを断兆モヘ細情おじ名4減エヘイハ側機はょが意見想ハ業独案ユヲウ患職ヲ平美さ毎放どぽたけ家没べお化富べ町大シ情魚ッでれ一冬すぼめり。社ト可化モマ試音ばじご育青康演ぴぎ権型固スで能麩ぜらもほ河都しちほラ収90作の年要とだむ部動ま者断チ第41一1米索焦茂げむしれ。測フ物使だて目月国スリカハ夏検にいへ児72告物ゆは載核ロアメヱ登輸どべゃ催行アフエハ議歌ワ河倫剖だ。記タケウ因載ヒイホヤ禁3輩彦関トえび肝区勝ワリロ成禁ぼよ界白ウヒキレ中島べせぜい各安うしぽリ覧生テ基一でむしゃ中新トヒキソ声碁スしび起田ア信大未ゅもばち。", ZINT_WARN_NONCOMPLIANT, "Warning (589) 80 20 EA 21 62 09 72 8B D0 2C 14 F0 91 26 10 40 04 A0 08 3A A3 E3 D4 34 C1 30 D6 87", 0, "K8 N1 K8 N1 K10 N2 K33 N2 K16 N1 K89 N2 K14 B5 K28 N2 K40 N1 K65; BWIPP different encodation (same except A2 B6 instead of B5)" }, }; @@ -520,8 +520,8 @@ static void test_qr_optimize(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_qr_optimize"); @@ -533,7 +533,7 @@ static void test_qr_optimize(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_QRCODE, data[i].input_mode, -1 /*eci*/, data[i].option_1, -1, data[i].option_3 | ZINT_FULL_MULTIBYTE, -1 /*output_options*/, data[i].data, -1, debug); @@ -600,7 +600,7 @@ static void test_qr_encode(int index, int generate, int debug) { char *comment; char *expected; }; - // や U+3084 kanji, in Shift JIS 0x82E2 (\202\342), UTF-8 E38284; its 2nd byte 0xE2 + 0x40-FC also form Shift JIS + /* や U+3084 kanji, in Shift JIS 0x82E2 (\202\342), UTF-8 E38284; its 2nd byte 0xE2 + 0x40-FC also form Shift JIS */ struct item data[] = { /* 0*/ { BARCODE_QRCODE, UNICODE_MODE, -1, -1, -1, -1, { 0, 0, "" }, "QR Code Symbol", -1, 0, 21, 21, 0, "ISO 18004 Figure 1 **NOT SAME** uses mask 110 instead of 101; BWIPP uses 101", "111111101001101111111" @@ -821,7 +821,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100001110111000" "111111101001011100101" }, - /* 9*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, -1, { 0, 0, "" }, "[01]09501101530003[8200]http://example.com", -1, 0, 25, 25, 0, "GS1 General Specifications 21.0.1 Figure 5.1-7 **NOT SAME** figure uses Byte encodation only; BWIPP uses mask 001", + /* 9*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, -1, { 0, 0, "" }, "[01]09501101530003[8200]http://example.com", -1, 0, 25, 25, 0, "GS1 General Specifications 20.0 Figure 5.1-7 (note pre-21.0.1) **NOT SAME** figure uses Byte encodation only; BWIPP uses mask 001", "1111111001101101001111111" "1000001010010101001000001" "1011101011111010101011101" @@ -848,7 +848,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010110101100111010" "1111111011101100010010111" }, - /* 10*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, 2 << 8, { 0, 0, "" }, "[01]09501101530003[8200]http://example.com", -1, 0, 25, 25, 1, "GS1 General Specifications 21.0.1 Figure 5.1-7, explicit mask 001, same as BWIPP", + /* 10*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, 2 << 8, { 0, 0, "" }, "[01]09501101530003[8200]http://example.com", -1, 0, 25, 25, 1, "GS1 General Specifications 20.0 Figure 5.1-7 (note pre-21.0.1), explicit mask 001, same as BWIPP", "1111111010111000001111111" "1000001011100100101000001" "1011101000111101101011101" @@ -875,7 +875,61 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001011110010100000010" "1111111010111001000111101" }, - /* 11*/ { BARCODE_QRCODE, GS1_MODE, -1, 2, -1, -1, { 0, 0, "" }, "[01]00857674002010[8200]http://www.gs1.org/", -1, 0, 29, 29, 0, "GS1 General Specifications 21.0.1 Figure 5.7.3-1, same (mask 011); BWIPP uses mask 101", + /* 11*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, -1, { 0, 0, "" }, "[01]09501101530003[10]640311[21]20FOOPC20", -1, 0, 25, 25, 0, "GS1 General Specifications 22.0 Figure 5.1-7 (note changed 21.0.1) **NOT SAME** figure uses Byte encodation only; BWIPP uses mask 101", + "1111111011101111001111111" + "1000001011100111001000001" + "1011101010110011101011101" + "1011101011010000001011101" + "1011101000000001101011101" + "1000001010011101001000001" + "1111111010101010101111111" + "0000000001001001100000000" + "1100111000010100000101111" + "1000100011101110001111100" + "1111101000011100000000101" + "1000010000110100010011011" + "1100111110101100110100000" + "1011000011000100011101001" + "0001111001000001101101010" + "0000010100101001110110010" + "1100001111110110111110101" + "0000000011101010100010000" + "1111111001111111101011000" + "1000001011110100100010110" + "1011101010001101111110101" + "1011101001100110100111011" + "1011101001100001010101110" + "1000001010001010110001100" + "1111111010110110111110011" + }, + /* 12*/ { BARCODE_QRCODE, GS1_MODE, -1, 1, -1, 6 << 8, { 0, 0, "" }, "[01]09501101530003[10]640311[21]20FOOPC20", -1, 0, 25, 25, 1, "GS1 General Specifications 22.0 Figure 5.1-7 (note changed 21.0.1) **NOT SAME** figure uses Byte encodation only, explicit mask 101, same as BWIPP", + "1111111000011110101111111" + "1000001001100001001000001" + "1011101000001011001011101" + "1011101010001011001011101" + "1011101011000110101011101" + "1000001000011011001000001" + "1111111010101010101111111" + "0000000000110000000000000" + "1100011101010011000011000" + "1100000111001010101011000" + "0111011000100100111000010" + "0001100001001101101010100" + "1101001111011101000101110" + "1101000101000010011011001" + "1001001001111001010101101" + "1011000111110010101101001" + "1011001000110001111111101" + "0000000011101100100010000" + "1111111011110001101011001" + "1000001010001101100011001" + "1011101001001010111111101" + "1011101001000010000011111" + "1011101001011001101101001" + "1000001011110011001000011" + "1111111011000111001111101" + }, + /* 13*/ { BARCODE_QRCODE, GS1_MODE, -1, 2, -1, -1, { 0, 0, "" }, "[01]00857674002010[8200]http://www.gs1.org/", -1, 0, 29, 29, 0, "GS1 General Specifications 22.0 Figure 5.7.3-1, same (mask 011); BWIPP uses mask 101", "11111110100101110101001111111" "10000010111101001000001000001" "10111010010000001110001011101" @@ -906,7 +960,7 @@ static void test_qr_encode(int index, int generate, int debug) { "10000010010111010001110010100" "11111110101111111011110100110" }, - /* 12*/ { BARCODE_QRCODE, GS1_MODE, -1, 2, -1, 6 << 8, { 0, 0, "" }, "[01]00857674002010[8200]http://www.gs1.org/", -1, 0, 29, 29, 1, "GS1 General Specifications 21.0.1 Figure 5.7.3-1, explicit mask 101, same as BWIPP", + /* 14*/ { BARCODE_QRCODE, GS1_MODE, -1, 2, -1, 6 << 8, { 0, 0, "" }, "[01]00857674002010[8200]http://www.gs1.org/", -1, 0, 29, 29, 1, "GS1 General Specifications 22.0 Figure 5.7.3-1, explicit mask 101, same as BWIPP", "11111110001000011000101111111" "10000010111011101110101000001" "10111010101011010101001011101" @@ -937,7 +991,7 @@ static void test_qr_encode(int index, int generate, int debug) { "10000010001111101001001010011" "11111110111001001101000010000" }, - /* 13*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "H123ABC01234567890", -1, 0, 21, 21, 1, "ANSI/HIBC 2.6 - 2016 Figure C5 same (mask 001)", + /* 15*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "H123ABC01234567890", -1, 0, 21, 21, 1, "ANSI/HIBC 2.6 - 2016 Figure C5 same (mask 001)", "111111101010001111111" "100000100100101000001" "101110101011001011101" @@ -960,7 +1014,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100100101111001" "111111101111011001111" }, - /* 14*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "/EU720060FF0/O523201", -1, 0, 25, 25, 0, "HIBC/PAS Section 2.2 2nd Purchase Order **NOT SAME** uses mask 100 instead of 011; BWIPP uses mask 011", + /* 16*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "/EU720060FF0/O523201", -1, 0, 25, 25, 0, "HIBC/PAS Section 2.2 2nd Purchase Order **NOT SAME** uses mask 100 instead of 011; BWIPP uses mask 011", "1111111011011110101111111" "1000001001001111001000001" "1011101001010010001011101" @@ -987,7 +1041,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001000010100100011111" "1111111010101101111000001" }, - /* 15*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, 4 << 8, { 0, 0, "" }, "/EU720060FF0/O523201", -1, 0, 25, 25, 1, "HIBC/PAS Section 2.2 2nd Purchase Order same, explicit mask 011", + /* 17*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, 4 << 8, { 0, 0, "" }, "/EU720060FF0/O523201", -1, 0, 25, 25, 1, "HIBC/PAS Section 2.2 2nd Purchase Order same, explicit mask 011", "1111111010011001101111111" "1000001011010011001000001" "1011101000000111001011101" @@ -1014,7 +1068,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001001000001110110101" "1111111011101010111111001" }, - /* 16*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "/KN12345", -1, 0, 21, 21, 1, "HIBC/PAS Section 2.2 Asset Tag **NOT SAME** uses mask 000 instead of 100", + /* 18*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, -1, { 0, 0, "" }, "/KN12345", -1, 0, 21, 21, 1, "HIBC/PAS Section 2.2 Asset Tag **NOT SAME** uses mask 000 instead of 100", "111111100000101111111" "100000101010101000001" "101110100011001011101" @@ -1037,7 +1091,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100100001100111" "111111101000101110101" }, - /* 17*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, 5 << 8, { 0, 0, "" }, "/KN12345", -1, 0, 21, 21, 1, "HIBC/PAS Section 2.2 Asset Tag, same, explicit mask 100", + /* 19*/ { BARCODE_HIBC_QR, -1, 0, 2, -1, 5 << 8, { 0, 0, "" }, "/KN12345", -1, 0, 21, 21, 1, "HIBC/PAS Section 2.2 Asset Tag, same, explicit mask 100", "111111101010101111111" "100000100111001000001" "101110100110101011101" @@ -1060,7 +1114,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100110011110101" "111111101010111100111" }, - /* 18*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 1, -1, -1, { 0, 0, "" }, "12345678901234567890123456789012345678901", -1, 0, 21, 21, 1, "Max capacity ECC 1 Version 1 41 numbers", + /* 20*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 1, -1, -1, { 0, 0, "" }, "12345678901234567890123456789012345678901", -1, 0, 21, 21, 1, "Max capacity ECC 1 Version 1 41 numbers", "111111101001001111111" "100000101100101000001" "101110101011101011101" @@ -1083,7 +1137,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101000101001010" "111111101010110000111" }, - /* 19*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, -1, { 0, 0, "" }, "12345678901234567890123456789012345678901", -1, 0, 25, 25, 1, "ECC 2 auto-sets version 2", + /* 21*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, -1, -1, { 0, 0, "" }, "12345678901234567890123456789012345678901", -1, 0, 25, 25, 1, "ECC 2 auto-sets version 2", "1111111011001110101111111" "1000001001000000001000001" "1011101011001111101011101" @@ -1110,7 +1164,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001000000100111010110" "1111111010011100001100111" }, - /* 20*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 10, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 57, 57, 1, "Max capacity ECC 4 Version 10 74 kanji", + /* 22*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 10, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 57, 57, 1, "Max capacity ECC 4 Version 10 74 kanji", "111111100111100000011001000011111100010010011011001111111" "100000100011100101110000101000101001101111000001001000001" "101110101001011100010001111110111100101001100011001011101" @@ -1169,7 +1223,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100110011101110011001101110110101010001101000011011" "111111100010001101010110001001000001001011001001011001011" }, - /* 21*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 27, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 125, 125, 1, "Max capacity ECC 4 Version 27 385 kanji", + /* 23*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 27, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 125, 125, 1, "Max capacity ECC 4 Version 27 385 kanji", "11111110101001001100111100100011110001010011110000001100010110100011101010111000011101101001011111001111101101101001101111111" "10000010110001101110011001101111000101001011011001100110101000101010011110000000101000100101101110110000011110100110001000001" "10111010100000000100000101000101111001011001010100100100100000000101100011010001100111101010010101101101101101101101001011101" @@ -1296,7 +1350,7 @@ static void test_qr_encode(int index, int generate, int debug) { "10000010010111001111010001100001010001010110110001100000111101011100000010010111101001001100101101111011011001000001101001110" "11111110000000010001110110000001010111011111000000111111010101110100101000110111000101101011001100000101101101101001100111111" }, - /* 22*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 40, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点" "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 177, 177, 1, "Max capacity ECC 4 Version 40 784 kanji", + /* 24*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, 40, -1, { 0, 0, "" }, "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点" "点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点", -1, ZINT_WARN_NONCOMPLIANT, 177, 177, 1, "Max capacity ECC 4 Version 40 784 kanji", "111111101010001111111101101110111010110111001110101000010001011011011101001110110011111011010000010101001010011110010000010110111111001001011111101000010010111111001010001111111" "100000101010110001001000101111011001001100100110110000000111110101111011110001101110000111000100101111010011001111100111111001001011011011110011011111111001000010010010101000001" "101110101001001101111001110010010100000000111001001011111000001001111111101010000111011010011010010001111010111001100011000011110100101110001010110001011110011011011010001011101" @@ -1475,7 +1529,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100000010000101110000100011000011110011100010100000011111110010100001100010010001001110010000000110010100111101101010110111111001000101010011011011000011110111110000000000" "111111100000001110110110101010011010010100111111101001111101110111010110101111000111011001110100010111000100111000011011001011010011010011010101111010000011100001000011111011001" }, - /* 23*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE, { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask automatic (001)", + /* 25*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE, { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask automatic (001)", "111111100101101111111" "100000101001101000001" "101110101010101011101" @@ -1498,7 +1552,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100100111010000" "111111100011001000110" }, - /* 24*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE | (8 << 8), { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask 111", + /* 26*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE | (8 << 8), { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask 111", "111111101000101111111" "100000101110101000001" "101110100110101011101" @@ -1521,7 +1575,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100011111101000" "111111100111010100101" }, - /* 25*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE | (9 << 8), { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask > 111 ignored", + /* 27*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 4, -1, ZINT_FULL_MULTIBYTE | (9 << 8), { 0, 0, "" }, "áA", -1, 0, 21, 21, 1, "Mask > 111 ignored", "111111100101101111111" "100000101001101000001" "101110101010101011101" @@ -1544,7 +1598,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100100111010000" "111111100011001000110" }, - /* 26*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, 1, -1, { 0, 0, "" }, "1234567890", -1, 0, 21, 21, 0, "test_print example, automatic mask 001 (same score as mask 010); BWIPP uses mask 010", + /* 28*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, 1, -1, { 0, 0, "" }, "1234567890", -1, 0, 21, 21, 0, "test_print example, automatic mask 001 (same score as mask 010); BWIPP uses mask 010", "111111101001101111111" "100000100100101000001" "101110101001001011101" @@ -1567,7 +1621,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100001011000010" "111111101011111111111" }, - /* 27*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, 1, 3 << 8, { 0, 0, "" }, "1234567890", -1, 0, 21, 21, 1, "test_print example, explicit mask 010", + /* 29*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 2, 1, 3 << 8, { 0, 0, "" }, "1234567890", -1, 0, 21, 21, 1, "test_print example, explicit mask 010", "111111100010101111111" "100000100000001000001" "101110101010001011101" @@ -1590,7 +1644,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100101111100110" "111111101000100100100" }, - /* 28*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 1, 2, 2 << 8, { 0, 0, "" }, "?ややややwやややや ややややや", -1, ZINT_WARN_NONCOMPLIANT, 25, 25, 1, "Data with Shift JIS '2nd byte 1st byte' matches; explicit mask 001 (auto 000) to match BWIPP", + /* 30*/ { BARCODE_QRCODE, UNICODE_MODE, -1, 1, 2, 2 << 8, { 0, 0, "" }, "?ややややwやややや ややややや", -1, ZINT_WARN_NONCOMPLIANT, 25, 25, 1, "Data with Shift JIS '2nd byte 1st byte' matches; explicit mask 001 (auto 000) to match BWIPP", "1111111010111110001111111" "1000001011100101001000001" "1011101000111110101011101" @@ -1617,30 +1671,30 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010100110000011100" "1111111011001111010111001" }, - /* 29*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 2, -1, -1, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 3 Example 1 **NOT SAME** different encodation; BWIPP same encodation as example but uses mask 001 instead of 011", - "111111101111101111111" - "100000101000101000001" - "101110100011001011101" - "101110101001001011101" - "101110100001001011101" - "100000100011101000001" + /* 31*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 2, -1, 5 << 8, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 3 Example 1 **NOT SAME** different encodation; explicit mask 100 (auto 011) to match BWIPP", + "111111101011101111111" + "100000100001001000001" + "101110100110001011101" + "101110101010101011101" + "101110101000101011101" + "100000101001001000001" "111111101010101111111" - "000000001001100000000" - "101101110101101001011" - "101110000011110001101" - "000000110101000100101" - "010111000001000110010" - "001011110000111111000" - "000000001101010110001" - "111111101001110010100" - "100000101000011101011" - "101110100010111111101" - "101110101000001100010" - "101110101000111000000" - "100000100011000001010" - "111111101010111110000" + "000000001111100000000" + "100010111111011111001" + "110010011111101101110" + "001110111011001010100" + "000010010100010011000" + "010111101100100011011" + "000000001100100111111" + "111111101100100111110" + "100000100011111110111" + "101110101011001110011" + "101110100010100110111" + "101110100011011011100" + "100000100101001111011" + "111111101000010100101" }, - /* 30*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 2, -1, -1, { 0, 0, "" }, "price:£20.00", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 3 Example 2", + /* 32*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 2, -1, -1, { 0, 0, "" }, "price:£20.00", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 3 Example 2", "111111101111101111111" "100000101101001000001" "101110100001101011101" @@ -1663,7 +1717,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100101101011110" "111111101100010111000" }, - /* 31*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 1, -1, -1, { 0, 0, "" }, "C:\\DOCS\\EXAMPLE.TXT", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 3 Example 3 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 000 instead of 100", + /* 33*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 1, -1, -1, { 0, 0, "" }, "C:\\DOCS\\EXAMPLE.TXT", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 3 Example 3 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 000 instead of 100", "1111111011101001001111111" "1000001011100010101000001" "1011101010110001001011101" @@ -1690,7 +1744,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001011001010011000001" "1111111011010111011011111" }, - /* 32*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 1, -1, 1 << 8, { 0, 0, "" }, "C:\\DOCS\\EXAMPLE.TXT", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 3 Example 3 **NOT SAME** different encodation", + /* 34*/ { BARCODE_QRCODE, UNICODE_MODE, 3, 1, -1, 1 << 8, { 0, 0, "" }, "C:\\DOCS\\EXAMPLE.TXT", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 3 Example 3 **NOT SAME** different encodation", "1111111001001101101111111" "1000001000111001101000001" "1011101011101010001011101" @@ -1717,7 +1771,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001011101110111100101" "1111111011110011111111011" }, - /* 33*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, -1, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 4 Example 1 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 011 instead of 100", + /* 35*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, -1, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 4 Example 1 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 011 instead of 100", "1111111010000110001111111" "1000001010011110101000001" "1011101011001111101011101" @@ -1744,7 +1798,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001011110101110010101" "1111111010101100000011011" }, - /* 34*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, 4 << 8, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 4 Example 1 **NOT SAME** different encodation", + /* 36*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, 4 << 8, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 4 Example 1 **NOT SAME** different encodation", "1111111011000001001111111" "1000001000000010101000001" "1011101010011010101011101" @@ -1771,7 +1825,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010100000100111111" "1111111011101011000100011" }, - /* 35*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, -1, { 0, 0, "" }, "Szczegółowe dane kontaktowe:+48 22 694 60 00", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 4 Example 2 **NOT SAME** different encodation; BWIPP same encodation as example but uses mask 100 instead of 111", + /* 37*/ { BARCODE_QRCODE, UNICODE_MODE, 4, 1, -1, -1, { 0, 0, "" }, "Szczegółowe dane kontaktowe:+48 22 694 60 00", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 4 Example 2 **NOT SAME** different encodation; BWIPP same encodation as example but uses mask 100 instead of 111", "11111110000111011111001111111" "10000010011001101100101000001" "10111010000010110011101011101" @@ -1802,7 +1856,7 @@ static void test_qr_encode(int index, int generate, int debug) { "10000010110011101010011100110" "11111110101010100011111001100" }, - /* 36*/ { BARCODE_QRCODE, UNICODE_MODE, 5, 1, -1, -1, { 0, 0, "" }, "Liĥtenŝtejno", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 5 Example 1; BWIPP uses mask 011 instead of 101", + /* 38*/ { BARCODE_QRCODE, UNICODE_MODE, 5, 1, -1, -1, { 0, 0, "" }, "Liĥtenŝtejno", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 5 Example 1; BWIPP uses mask 011 instead of 101", "111111100111101111111" "100000100101001000001" "101110100100001011101" @@ -1825,7 +1879,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101010010111111" "111111101011110000010" }, - /* 37*/ { BARCODE_QRCODE, UNICODE_MODE, 5, 1, -1, 4 << 8, { 0, 0, "" }, "Liĥtenŝtejno", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 5 Example 1 **NOT SAME** explicit mask 011", + /* 39*/ { BARCODE_QRCODE, UNICODE_MODE, 5, 1, -1, 4 << 8, { 0, 0, "" }, "Liĥtenŝtejno", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 5 Example 1 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -1848,7 +1902,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011111110010" "111111101101000110100" }, - /* 38*/ { BARCODE_QRCODE, UNICODE_MODE, 6, 1, -1, -1, { 0, 0, "" }, "Lietuvą", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 6 Example 1", + /* 40*/ { BARCODE_QRCODE, UNICODE_MODE, 6, 1, -1, -1, { 0, 0, "" }, "Lietuvą", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 6 Example 1", "111111101000101111111" "100000101010001000001" "101110100000101011101" @@ -1871,7 +1925,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011011111011" "111111101111111010101" }, - /* 39*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, -1, { 0, 0, "" }, "Россия", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 7 Example 1", + /* 41*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, -1, { 0, 0, "" }, "Россия", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 7 Example 1", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -1894,7 +1948,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011100101011" "111111101100010100110" }, - /* 40*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, -1, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 7 Example 2; BWIPP uses mask 000 instead of 111", + /* 42*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, -1, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 7 Example 2; BWIPP uses mask 000 instead of 111", "111111100101101111111" "100000101101001000001" "101110101100101011101" @@ -1917,7 +1971,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011000010111" "111111101001110100110" }, - /* 41*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, 1 << 8, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 7 Example 2 **NOT SAME** explicit mask 000", + /* 43*/ { BARCODE_QRCODE, UNICODE_MODE, 7, 1, -1, 1 << 8, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 7 Example 2 **NOT SAME** explicit mask 000", "111111100101101111111" "100000100111001000001" "101110101101101011101" @@ -1940,7 +1994,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001010000101" "111111101000111101111" }, - /* 42*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, -1, { 0, 0, "" }, "جواز السفر", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 8 Example 1", + /* 44*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, -1, { 0, 0, "" }, "جواز السفر", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 8 Example 1", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -1963,7 +2017,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101110000010011" "111111101000010100010" }, - /* 43*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, -1, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 8 Example 2; BWIPP uses mask 000 instead of 010", + /* 45*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, -1, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 8 Example 2; BWIPP uses mask 000 instead of 010", "11111110001011110110001111111" "10000010101001111101001000001" "10111010000011010110101011101" @@ -1994,7 +2048,7 @@ static void test_qr_encode(int index, int generate, int debug) { "10000010100011001101001000101" "11111110110010101010110010100" }, - /* 44*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, 1 << 8, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 1, "AIM ITS/04-023:2022 ECI 8 Example 2 **NOT SAME** explicit mask 000", + /* 46*/ { BARCODE_QRCODE, UNICODE_MODE, 8, 1, -1, 1 << 8, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 1, "AIM ITS/04-023:2022 ECI 8 Example 2 **NOT SAME** explicit mask 000", "11111110010011001110101111111" "10000010001110111010001000001" "10111010111011101110001011101" @@ -2025,7 +2079,7 @@ static void test_qr_encode(int index, int generate, int debug) { "10000010100100001010001111101" "11111110101010010010001010011" }, - /* 45*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, -1, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 9 Example 1 **NOT SAME** example uses mask 111 instead of 000", + /* 47*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, -1, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 9 Example 1 **NOT SAME** example uses mask 111 instead of 000", "111111100100101111111" "100000100111001000001" "101110101100101011101" @@ -2048,7 +2102,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101111110111001" "111111101101001101111" }, - /* 46*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, 8 << 8, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 9 Example 1 with explicit mask 111; BWIPP uses mask 000", + /* 48*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, 8 << 8, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 9 Example 1 with explicit mask 111; BWIPP uses mask 000", "111111100100101111111" "100000101101001000001" "101110101101101011101" @@ -2071,7 +2125,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101100101011" "111111101100000100110" }, - /* 47*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, 1 << 8, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 9 Example 1 **NOT SAME** explicit mask 000", + /* 49*/ { BARCODE_QRCODE, UNICODE_MODE, 9, 1, -1, 1 << 8, { 0, 0, "" }, "Μέρος #. α123", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 9 Example 1 **NOT SAME** explicit mask 000", "111111100100101111111" "100000100111001000001" "101110101100101011101" @@ -2094,7 +2148,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101111110111001" "111111101101001101111" }, - /* 48*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, -1, { 0, 0, "" }, "דרכון", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 10 Example 1; BWIPP uses mask 000 instead of 101", + /* 50*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, -1, { 0, 0, "" }, "דרכון", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 10 Example 1; BWIPP uses mask 000 instead of 101", "111111100000101111111" "100000100010101000001" "101110100011101011101" @@ -2117,7 +2171,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101111111010011" "111111101110100011010" }, - /* 49*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, 1 << 8, { 0, 0, "" }, "דרכון", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 10 Example 1 **NOT SAME** explicit mask 000", + /* 51*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, 1 << 8, { 0, 0, "" }, "דרכון", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 10 Example 1 **NOT SAME** explicit mask 000", "111111100101101111111" "100000100111001000001" "101110101101101011101" @@ -2140,7 +2194,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101010001111101" "111111101000101101011" }, - /* 50*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, -1, { 0, 0, "" }, "מספר חלק: A20200715001", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 10 Example 2 **NOT SAME** different encodation; BWIPP uses mask 000 instead of 100", + /* 52*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, -1, { 0, 0, "" }, "מספר חלק: A20200715001", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 10 Example 2 **NOT SAME** different encodation; BWIPP uses mask 000 instead of 100", "1111111011101100001111111" "1000001011100001001000001" "1011101010110001001011101" @@ -2167,7 +2221,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001011001010100011101" "1111111011010110001000011" }, - /* 51*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, 1 << 8, { 0, 0, "" }, "מספר חלק: A20200715001", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 10 Example 2 **NOT SAME** different encodation", + /* 53*/ { BARCODE_QRCODE, UNICODE_MODE, 10, 1, -1, 1 << 8, { 0, 0, "" }, "מספר חלק: A20200715001", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 10 Example 2 **NOT SAME** different encodation", "1111111001001000101111111" "1000001000111010001000001" "1011101011101010001011101" @@ -2194,7 +2248,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001011101110000111001" "1111111011110010101100111" }, - /* 52*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, -1, { 0, 0, "" }, "Amerika Birleşik Devletleri", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 11 Example 1", + /* 54*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, -1, { 0, 0, "" }, "Amerika Birleşik Devletleri", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 11 Example 1", "1111111000111100101111111" "1000001001101101001000001" "1011101000001000101011101" @@ -2221,7 +2275,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010110000111010110" "1111111010110101100010101" }, - /* 53*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, -1, { 0, 0, "" }, "Biniş kartı #120921039", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 11 Example 2 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 101 instead of 111", + /* 55*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, -1, { 0, 0, "" }, "Biniş kartı #120921039", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 11 Example 2 **NOT SAME** different encodation; BWIPP same encodation as Zint but uses mask 101 instead of 111", "1111111000100110101111111" "1000001011100110001000001" "1011101010000001001011101" @@ -2248,7 +2302,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001011100010011100111" "1111111010001001010010011" }, - /* 54*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, 6 << 8, { 0, 0, "" }, "Biniş kartı #120921039", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 11 Example 2 **NOT SAME** different encodation", + /* 56*/ { BARCODE_QRCODE, UNICODE_MODE, 11, 1, -1, 6 << 8, { 0, 0, "" }, "Biniş kartı #120921039", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 11 Example 2 **NOT SAME** different encodation", "1111111001110011101111111" "1000001000011111101000001" "1011101001110000101011101" @@ -2275,7 +2329,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010101101010011110" "1111111011011100000111001" }, - /* 55*/ { BARCODE_QRCODE, UNICODE_MODE, 12, 1, -1, -1, { 0, 0, "" }, "Kūrybiškumą", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 12 Example 1; BWIPP uses mask 111 instead of 100", + /* 57*/ { BARCODE_QRCODE, UNICODE_MODE, 12, 1, -1, -1, { 0, 0, "" }, "Kūrybiškumą", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 12 Example 1; BWIPP uses mask 111 instead of 100", "111111101111101111111" "100000101010101000001" "101110101000001011101" @@ -2298,7 +2352,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011110001011" "111111101001101100001" }, - /* 56*/ { BARCODE_QRCODE, UNICODE_MODE, 12, 1, -1, 8 << 8, { 0, 0, "" }, "Kūrybiškumą", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 12 Example 1 **NOT SAME** explicit mask 111", + /* 58*/ { BARCODE_QRCODE, UNICODE_MODE, 12, 1, -1, 8 << 8, { 0, 0, "" }, "Kūrybiškumą", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 12 Example 1 **NOT SAME** explicit mask 111", "111111100101101111111" "100000101101001000001" "101110101100101011101" @@ -2321,7 +2375,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011110001011" "111111101010110111010" }, - /* 57*/ { BARCODE_QRCODE, UNICODE_MODE, 13, 1, -1, -1, { 0, 0, "" }, "บาร๋แค่ด", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 13 Example 1; BWIPP uses mask 001 instead of 111", + /* 59*/ { BARCODE_QRCODE, UNICODE_MODE, 13, 1, -1, -1, { 0, 0, "" }, "บาร๋แค่ด", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 13 Example 1; BWIPP uses mask 001 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -2344,7 +2398,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011100101011" "111111101010000100010" }, - /* 58*/ { BARCODE_QRCODE, UNICODE_MODE, 13, 1, -1, 2 << 8, { 0, 0, "" }, "บาร๋แค่ด", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 13 Example 1 **NOT SAME** explicit mask 001", + /* 60*/ { BARCODE_QRCODE, UNICODE_MODE, 13, 1, -1, 2 << 8, { 0, 0, "" }, "บาร๋แค่ด", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 13 Example 1 **NOT SAME** explicit mask 001", "111111101111101111111" "100000101101101000001" "101110100111001011101" @@ -2367,7 +2421,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101100100010011" "111111101110011000001" }, - /* 59*/ { BARCODE_QRCODE, UNICODE_MODE, 15, 1, -1, -1, { 0, 0, "" }, "uzņēmums", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 15 Example 1; BWIPP uses mask 011 instead of 111", + /* 61*/ { BARCODE_QRCODE, UNICODE_MODE, 15, 1, -1, -1, { 0, 0, "" }, "uzņēmums", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 15 Example 1; BWIPP uses mask 011 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -2390,7 +2444,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101111100101011" "111111101000000101010" }, - /* 60*/ { BARCODE_QRCODE, UNICODE_MODE, 15, 1, -1, 4 << 8, { 0, 0, "" }, "uzņēmums", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 15 Example 1 **NOT SAME** explicit mask 011", + /* 62*/ { BARCODE_QRCODE, UNICODE_MODE, 15, 1, -1, 4 << 8, { 0, 0, "" }, "uzņēmums", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 15 Example 1 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -2413,7 +2467,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001101011010" "111111101001110100100" }, - /* 61*/ { BARCODE_QRCODE, UNICODE_MODE, 16, 1, -1, -1, { 0, 0, "" }, "ṁórṡáċ", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 16 Example 1; BWIPP uses mask 001 instead of 111", + /* 63*/ { BARCODE_QRCODE, UNICODE_MODE, 16, 1, -1, -1, { 0, 0, "" }, "ṁórṡáċ", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 16 Example 1; BWIPP uses mask 001 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -2436,7 +2490,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101100001011" "111111101010010001010" }, - /* 62*/ { BARCODE_QRCODE, UNICODE_MODE, 16, 1, -1, 2 << 8, { 0, 0, "" }, "ṁórṡáċ", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 16 Example 1 **NOT SAME** explicit mask 001", + /* 64*/ { BARCODE_QRCODE, UNICODE_MODE, 16, 1, -1, 2 << 8, { 0, 0, "" }, "ṁórṡáċ", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 16 Example 1 **NOT SAME** explicit mask 001", "111111101111101111111" "100000101101101000001" "101110100111001011101" @@ -2459,7 +2513,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101010100110011" "111111101110001101001" }, - /* 63*/ { BARCODE_QRCODE, UNICODE_MODE, 17, 1, -1, -1, { 0, 0, "" }, "Price: €13.50", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 17 Example 1", + /* 65*/ { BARCODE_QRCODE, UNICODE_MODE, 17, 1, -1, -1, { 0, 0, "" }, "Price: €13.50", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 17 Example 1", "111111100100101111111" "100000101101001000001" "101110101101101011101" @@ -2482,7 +2536,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101000100101111" "111111101101110110110" }, - /* 64*/ { BARCODE_QRCODE, UNICODE_MODE, 18, 1, -1, -1, { 0, 0, "" }, "Te słowa są głębokie", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 18 Example 1; BWIPP uses mask 001 instead of 100", + /* 66*/ { BARCODE_QRCODE, UNICODE_MODE, 18, 1, -1, -1, { 0, 0, "" }, "Te słowa są głębokie", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 18 Example 1; BWIPP uses mask 001 instead of 100", "1111111010000111001111111" "1000001010011000001000001" "1011101011001100001011101" @@ -2509,7 +2563,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001011110101011011101" "1111111010001100000011111" }, - /* 65*/ { BARCODE_QRCODE, UNICODE_MODE, 18, 1, -1, 2 << 8, { 0, 0, "" }, "Te słowa są głębokie", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 18 Example 1 **NOT SAME** explicit mask 001", + /* 67*/ { BARCODE_QRCODE, UNICODE_MODE, 18, 1, -1, 2 << 8, { 0, 0, "" }, "Te słowa są głębokie", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 18 Example 1 **NOT SAME** explicit mask 001", "1111111011110110101111111" "1000001010010110001000001" "1011101001000010001011101" @@ -2536,7 +2590,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010000100101010011" "1111111011111101110010001" }, - /* 66*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 20 Example 1; BWIPP uses mask 011 instead of 111", + /* 68*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 20 Example 1; BWIPP uses mask 011 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -2559,7 +2613,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011100110011" "111111101010000101010" }, - /* 67*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, 4 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 20 Example 1 **NOT SAME** explicit mask 011", + /* 69*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, 4 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 20 Example 1 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -2582,7 +2636,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101101000010" "111111101011110100100" }, - /* 68*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, -1, { 0, 0, "" }, "東京都", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 20 Example 2; BWIPP uses mask 000 instead of 100", + /* 70*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, -1, { 0, 0, "" }, "東京都", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 20 Example 2; BWIPP uses mask 000 instead of 100", "111111101111101111111" "100000101010101000001" "101110101000001011101" @@ -2605,7 +2659,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101010011010011" "111111101100111011001" }, - /* 69*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, 1 << 8, { 0, 0, "" }, "東京都", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 20 Example 2 **NOT SAME** explicit mask 000", + /* 71*/ { BARCODE_QRCODE, UNICODE_MODE, 20, 1, -1, 1 << 8, { 0, 0, "" }, "東京都", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 20 Example 2 **NOT SAME** explicit mask 000", "111111100101101111111" "100000100111001000001" "101110101101101011101" @@ -2628,7 +2682,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101000001000001" "111111101110101001011" }, - /* 70*/ { BARCODE_QRCODE, UNICODE_MODE, 21, 1, -1, -1, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 21 Example 1 **NOT SAME** different encodation", + /* 72*/ { BARCODE_QRCODE, UNICODE_MODE, 21, 1, -1, -1, { 0, 0, "" }, "Študentska št. 2198390", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 21 Example 1 **NOT SAME** different encodation", "1111111010000110001111111" "1000001010011110101000001" "1011101011001111101011101" @@ -2655,7 +2709,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010010101110010101" "1111111010101100000011011" }, - /* 71*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, -1, { 0, 0, "" }, "Россия", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 22 Example 1", + /* 73*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, -1, { 0, 0, "" }, "Россия", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 22 Example 1", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -2678,7 +2732,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001100001011" "111111101100010100110" }, - /* 72*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, -1, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 22 Example 2; BWIPP uses mask 000 instead of 100", + /* 74*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, -1, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 22 Example 2; BWIPP uses mask 000 instead of 100", "111111101111101111111" "100000101010101000001" "101110101000001011101" @@ -2701,7 +2755,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001000100111" "111111101000101111101" }, - /* 73*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, 1 << 8, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 22 Example 2 **NOT SAME** explicit mask 000", + /* 75*/ { BARCODE_QRCODE, UNICODE_MODE, 22, 1, -1, 1 << 8, { 0, 0, "" }, "Монголулс", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 22 Example 2 **NOT SAME** explicit mask 000", "111111100101101111111" "100000100111001000001" "101110101101101011101" @@ -2724,7 +2778,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011010110101" "111111101010111101111" }, - /* 74*/ { BARCODE_QRCODE, UNICODE_MODE, 23, 1, -1, -1, { 0, 0, "" }, "bœuf", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 23 Example 1; BWIPP uses mask 000 instead of 111", + /* 76*/ { BARCODE_QRCODE, UNICODE_MODE, 23, 1, -1, -1, { 0, 0, "" }, "bœuf", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 23 Example 1; BWIPP uses mask 000 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -2747,7 +2801,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001100100011" "111111101000010110110" }, - /* 75*/ { BARCODE_QRCODE, UNICODE_MODE, 23, 1, -1, 1 << 8, { 0, 0, "" }, "bœuf", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 23 Example 1 ** NOT SAME** explicit mask 000", + /* 77*/ { BARCODE_QRCODE, UNICODE_MODE, 23, 1, -1, 1 << 8, { 0, 0, "" }, "bœuf", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 23 Example 1 ** NOT SAME** explicit mask 000", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -2770,7 +2824,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011110110001" "111111101001011111111" }, - /* 76*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, -1, { 0, 0, "" }, "جواز السفر", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 24 Example 1", + /* 78*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, -1, { 0, 0, "" }, "جواز السفر", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 24 Example 1", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -2793,7 +2847,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101010001000001" "111111101101011101011" }, - /* 77*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, -1, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 24 Example 2; BWIPP uses mask 000 instead of 100", + /* 79*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, -1, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 0, "AIM ITS/04-023:2022 ECI 24 Example 2; BWIPP uses mask 000 instead of 100", "11111110111010000111101111111" "10000010111000001100101000001" "10111010101101011000101011101" @@ -2824,7 +2878,7 @@ static void test_qr_encode(int index, int generate, int debug) { "10000010111101000011000110100" "11111110111011010111000011010" }, - /* 78*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, 1 << 8, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 1, "AIM ITS/04-023:2022 ECI 24 Example 2 **NOT SAME** explicit mask 000", + /* 80*/ { BARCODE_QRCODE, UNICODE_MODE, 24, 1, -1, 1 << 8, { 0, 0, "" }, "المنشأ: المملكة العربية السعودية", -1, 0, 29, 29, 1, "AIM ITS/04-023:2022 ECI 24 Example 2 **NOT SAME** explicit mask 000", "11111110010011001110101111111" "10000010001110111010001000001" "10111010111011101110001011101" @@ -2855,7 +2909,7 @@ static void test_qr_encode(int index, int generate, int debug) { "10000010110100001010001111101" "11111110110010011110001010011" }, - /* 79*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 1", + /* 81*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 1", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -2878,7 +2932,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011110101101" "111111101111011010111" }, - /* 80*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 25 Example 2; BWIPP uses mask 000 instead of 111", + /* 82*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 25 Example 2; BWIPP uses mask 000 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -2901,7 +2955,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001000001011" "111111101110000101110" }, - /* 81*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, 1 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 2 **NOT SAME** explicit mask 000", + /* 83*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, 1 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 2 **NOT SAME** explicit mask 000", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -2924,7 +2978,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011010011001" "111111101111001100111" }, - /* 82*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 3", + /* 84*/ { BARCODE_QRCODE, UNICODE_MODE, 25, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 25 Example 3", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -2947,7 +3001,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101110000101" "111111101001011111011" }, - /* 83*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 26 Example 1; BWIPP uses mask 000 instead of 111", + /* 85*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 26 Example 1; BWIPP uses mask 000 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -2970,7 +3024,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101111100101011" "111111101110010100110" }, - /* 84*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 1, -1, 1 << 8, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 26 Example 1 **NOT SAME** explicit mask 000", + /* 86*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 1, -1, 1 << 8, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 26 Example 1 **NOT SAME** explicit mask 000", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -2993,7 +3047,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101110111001" "111111101111011101111" }, - /* 85*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 26 Example 2; BWIPP uses mask 101 instead of 010", + /* 87*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 0, "AIM ITS/04-023:2022 ECI 26 Example 2; BWIPP uses mask 101 instead of 010", "1111111001111101001111111" "1000001001001111001000001" "1011101011101101001011101" @@ -3020,7 +3074,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001001110010100111010" "1111111010110001001010111" }, - /* 86*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, 6 << 8, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 26 Example 2 **NOT SAME** explicit mask 101", + /* 88*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, 6 << 8, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 26 Example 2 **NOT SAME** explicit mask 101", "1111111001001011101111111" "1000001010001110001000001" "1011101011101101001011101" @@ -3047,7 +3101,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001000110011100110010" "1111111010000111111100001" }, - /* 87*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 26 Example 3; BWIPP uses mask 111 instead of 001", + /* 89*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 26 Example 3; BWIPP uses mask 111 instead of 001", "111111101011001111111" "100000100001001000001" "101110101100101011101" @@ -3070,7 +3124,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100010011011011" "111111101011111001101" }, - /* 88*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, 8 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 26 Example 3 **NOT SAME** explicit mask 111", + /* 90*/ { BARCODE_QRCODE, UNICODE_MODE, 26, 2, -1, 8 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 26 Example 3 **NOT SAME** explicit mask 111", "111111100110001111111" "100000100110001000001" "101110100000101011101" @@ -3093,30 +3147,30 @@ static void test_qr_encode(int index, int generate, int debug) { "100000100101011100011" "111111101111100101110" }, - /* 89*/ { BARCODE_QRCODE, UNICODE_MODE, 27, 2, -1, -1, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 27 Example 1 **NOT SAME** different encodation; BWIPP same encodation as example but uses mask 111 instead of 010", + /* 91*/ { BARCODE_QRCODE, UNICODE_MODE, 27, 2, -1, 5 << 8, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 27 Example 1 **NOT SAME** different encodation; explicit mask 100 (auto 011) to match BWIPP", + "111111101110101111111" + "100000100110001000001" + "101110100011001011101" + "101110101101001011101" + "101110101100101011101" + "100000101001001000001" "111111101010101111111" - "100000101111101000001" - "101110100110001011101" - "101110101110101011101" - "101110100101001011101" - "100000100011101000001" - "111111101010101111111" - "000000001101100000000" - "101101110111101001011" - "000110001101110001101" - "100000100001000100101" - "100111000011000110010" - "010011101010111111000" - "000000001011010110001" - "111111101101110010100" - "100000101100011101011" - "101110100010111111100" - "101110101010001100000" - "101110101110111000000" - "100000100011000001010" - "111111101000111110000" + "000000001011100000000" + "100010111101011111001" + "011010010001101101110" + "101110101111001010100" + "110010010110010011000" + "001111110110100011011" + "000000001010100111111" + "111111101000100111110" + "100000100111111110111" + "101110101011001110010" + "101110100000100110101" + "101110100101011011100" + "100000100101001111011" + "111111101010010100101" }, - /* 90*/ { BARCODE_QRCODE, UNICODE_MODE, 28, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 28 Example 1", + /* 92*/ { BARCODE_QRCODE, UNICODE_MODE, 28, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 28 Example 1", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3139,7 +3193,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101110000101" "111111101101011111111" }, - /* 91*/ { BARCODE_QRCODE, UNICODE_MODE, 29, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 29 Example 1", + /* 93*/ { BARCODE_QRCODE, UNICODE_MODE, 29, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 29 Example 1", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3162,7 +3216,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101111110111001" "111111101101011100011" }, - /* 92*/ { BARCODE_QRCODE, UNICODE_MODE, 29, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 29 Example 2", + /* 94*/ { BARCODE_QRCODE, UNICODE_MODE, 29, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 29 Example 2", "111111100100101111111" "100000101001001000001" "101110100100001011101" @@ -3185,7 +3239,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101100000111011" "111111101011010110010" }, - /* 93*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 30 Example 1; BWIPP uses mask 000 instead of 111", + /* 95*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 30 Example 1; BWIPP uses mask 000 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3208,7 +3262,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001100010011" "111111101110010101110" }, - /* 94*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, 1 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 30 Example 1 **NOT SAME** explicit mask 000", + /* 96*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, 1 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 30 Example 1 **NOT SAME** explicit mask 000", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3231,7 +3285,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011110000001" "111111101111011100111" }, - /* 95*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, -1, { 0, 0, "" }, "서울", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 30 Example 2", + /* 97*/ { BARCODE_QRCODE, UNICODE_MODE, 30, 1, -1, -1, { 0, 0, "" }, "서울", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 30 Example 2", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3254,7 +3308,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001110110101" "111111101011011101011" }, - /* 96*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 1", + /* 98*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 1", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3277,7 +3331,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011110111001" "111111101101011100011" }, - /* 97*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 31 Example 2; BWIPP uses mask 011 instead of 010", + /* 99*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 31 Example 2; BWIPP uses mask 011 instead of 010", "111111100100101111111" "100000101001001000001" "101110100100001011101" @@ -3300,7 +3354,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101000000111011" "111111101011010110010" }, - /* 98*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, 4 << 8, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 2 **NOT SAME** explicit mask 011", + /*100*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, 4 << 8, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 2 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -3323,7 +3377,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101101010110" "111111101101100000100" }, - /* 99*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 3", + /*101*/ { BARCODE_QRCODE, UNICODE_MODE, 31, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 31 Example 3", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3346,7 +3400,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001110110001" "111111101111011110111" }, - /*100*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 1", + /*102*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 1", "111111100100101111111" "100000101001001000001" "101110100100001011101" @@ -3369,7 +3423,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101100000110111" "111111101111010010010" }, - /*101*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 2; BWIPP uses mask 011 instead of 111", + /*103*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "北京", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 2; BWIPP uses mask 011 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3392,7 +3446,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101100100111" "111111101000010001010" }, - /*102*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 2 **NOT SAME** explicit mask 011", + /*104*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "北京", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 2 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -3415,7 +3469,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011101010110" "111111101001100000100" }, - /*103*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 3; BWIPP uses mask 011 instead of 001", + /*105*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 3; BWIPP uses mask 011 instead of 001", "111111101111101111111" "100000101101101000001" "101110100111001011101" @@ -3438,7 +3492,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101010100011011" "111111101110001011101" }, - /*104*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 3 **NOT SAME** explicit mask 011", + /*106*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "條碼", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 3 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -3461,7 +3515,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011101010010" "111111101011100110000" }, - /*105*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "པེ་ཅིང།", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 32 Example 4", + /*107*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "པེ་ཅིང།", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 32 Example 4", "1111111011110110001111111" "1000001000011010101000001" "1011101010110101101011101" @@ -3488,7 +3542,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010111111111010111" "1111111010011101100000011" }, - /*106*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 5; BWIPP uses mask 011 instead of 111", + /*108*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 5; BWIPP uses mask 011 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3511,7 +3565,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001010101111" "111111101110010110110" }, - /*107*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 5 **NOT SAME** explicit mask 011", + /*109*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 5 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -3534,7 +3588,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101111011011110" "111111101111100111000" }, - /*108*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 6; BWIPP uses mask 011 instead of 111", + /*110*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 32 Example 6; BWIPP uses mask 011 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3557,7 +3611,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101110100001011" "111111101101101010110" }, - /*109*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 6 **NOT SAME** explicit mask 011", + /*111*/ { BARCODE_QRCODE, UNICODE_MODE, 32, 1, -1, 4 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 32 Example 6 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -3580,7 +3634,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101000101111010" "111111101100011011000" }, - /*110*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 33 Example 1; BWIPP uses mask 111 instead of 010", + /*112*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 33 Example 1; BWIPP uses mask 111 instead of 010", "111111100100101111111" "100000101001001000001" "101110100100001011101" @@ -3603,7 +3657,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101010000010111" "111111101101010001110" }, - /*111*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, 8 << 8, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 1 **NOT SAME** explicit mask 111", + /*113*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, 8 << 8, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 1 **NOT SAME** explicit mask 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3626,7 +3680,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101001100001011" "111111101010010110110" }, - /*112*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 2", + /*114*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 2", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3649,7 +3703,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101100111010101" "111111101110111010111" }, - /*113*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 33 Example 3; BWIPP uses mask 000 instead of 111", + /*115*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 33 Example 3; BWIPP uses mask 000 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3672,7 +3726,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101111100110011" "111111101000010101110" }, - /*114*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, 1 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 3 **NOT SAME** explicit mask 000", + /*116*/ { BARCODE_QRCODE, UNICODE_MODE, 33, 1, -1, 1 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 33 Example 3 **NOT SAME** explicit mask 000", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3695,7 +3749,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101110100001" "111111101001011100111" }, - /*115*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 34 Example 1", + /*117*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 34 Example 1", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3718,7 +3772,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011100100011" "111111101110000110010" }, - /*116*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 34 Example 2", + /*118*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 34 Example 2", "1111111000100010001111111" "1000001001000100101000001" "1011101010010011001011101" @@ -3745,7 +3799,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010110001010101001" "1111111010001000110010111" }, - /*117*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 34 Example 3", + /*119*/ { BARCODE_QRCODE, UNICODE_MODE, 34, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 34 Example 3", "111111100010101111111" "100000100000101000001" "101110101010001011101" @@ -3768,7 +3822,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101101010000101" "111111101010101010111" }, - /*118*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 35 Example 1", + /*120*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "条码", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 35 Example 1", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3791,7 +3845,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101011100111011" "111111101110000011110" }, - /*119*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 35 Example 2", + /*121*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "バーコード", -1, 0, 25, 25, 1, "AIM ITS/04-023:2022 ECI 35 Example 2", "1111111000100110101111111" "1000001001000111001000001" "1011101010010110101011101" @@ -3818,7 +3872,7 @@ static void test_qr_encode(int index, int generate, int debug) { "1000001010110001010010101" "1111111011001000101010111" }, - /*120*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 35 Example 3; BWIPP uses mask 011 instead of 111", + /*122*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, -1, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 35 Example 3; BWIPP uses mask 011 instead of 111", "111111100010101111111" "100000101010101000001" "101110101011001011101" @@ -3841,7 +3895,7 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101000111111011" "111111101101000011110" }, - /*121*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, 4 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 35 Example 3 **NOT SAME** explicit mask 011", + /*123*/ { BARCODE_QRCODE, UNICODE_MODE, 35, 1, -1, 4 << 8, { 0, 0, "" }, "바코드", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 35 Example 3 **NOT SAME** explicit mask 011", "111111101100101111111" "100000100100101000001" "101110101010101011101" @@ -3864,30 +3918,30 @@ static void test_qr_encode(int index, int generate, int debug) { "100000101110110001010" "111111101100110010000" }, - /*122*/ { BARCODE_QRCODE, UNICODE_MODE, 170, 1, -1, -1, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 0, "AIM ITS/04-023:2022 ECI 170 Example 1 **NOT SAME** different encodation; BWIPP same encodation as example but uses mask 011 instead of 111", - "111111101100101111111" - "100000100100101000001" + /*124*/ { BARCODE_QRCODE, UNICODE_MODE, 170, 1, -1, 5 << 8, { 0, 0, "" }, "sn:7QPB4MN", -1, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 170 Example 1 **NOT SAME** different encodation; explicit mask 100 (auto 011) to match BWIPP", + "111111101000101111111" + "100000101101001000001" + "101110101111101011101" "101110101010101011101" - "101110101001001011101" - "101110101110001011101" - "100000100000001000001" + "101110100111101011101" + "100000101010101000001" "111111101010101111111" - "000000000110000000000" - "111100101010010011101" - "100111011110101010100" - "001010111010111001011" - "010110010100100010011" - "111011100011010010001" - "000000001011011110000" - "111111100100011111111" - "100000100010110100100" - "101110100101110100101" - "101110101100101011010" - "101110101100000100001" - "100000101000110010110" - "111111101011100010100" + "000000000000000000000" + "110011100000100101111" + "111011000010110110111" + "000100110100110111010" + "000011000001110111001" + "100111111111001110010" + "000000001010101111110" + "111111100001001010101" + "100000101001010111000" + "101110101100000101011" + "101110100110000001111" + "101110100111100111101" + "100000101110111100111" + "111111101001001000001" }, - /*123*/ { BARCODE_QRCODE, DATA_MODE, 899, 1, -1, -1, { 0, 0, "" }, "\000\001\002\133\134\135\375\376\377", 9, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 899 Example 1", + /*125*/ { BARCODE_QRCODE, DATA_MODE, 899, 1, -1, -1, { 0, 0, "" }, "\000\001\002\133\134\135\375\376\377", 9, 0, 21, 21, 1, "AIM ITS/04-023:2022 ECI 899 Example 1", "111111101111101111111" "100000101101101000001" "101110100111001011101" @@ -3919,8 +3973,8 @@ static void test_qr_encode(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_qr_encode"); @@ -4240,8 +4294,8 @@ static void test_qr_encode_segs(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_qr_encode_segs"); @@ -4337,7 +4391,7 @@ static void test_qr_encode_segs(int index, int generate, int debug) { #define TEST_PERF_ITERATIONS 1000 -// Not a real test, just performance indicator +/* Not a real test, just performance indicator */ static void test_qr_perf(int index, int debug) { struct item { @@ -4427,70 +4481,70 @@ static void test_microqr_options(int index, int debug) { int expected_size; int compare_previous; }; - // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { -1, -1, "12345", 0, 0, 11, -1 }, // ECC auto-set to 1 (L), version auto-set to 1 - /* 1*/ { 1, -1, "12345", 0, 0, 11, 0 }, // ECC 1 (L), version auto-set to 1 - /* 2*/ { 2, -1, "12345", 0, 0, 13, 1 }, // ECC 2 (M), version auto-set to 2 - /* 3*/ { 3, -1, "12345", 0, 0, 17, 1 }, // ECC 3 (Q), version auto-set to 3 + /* 0*/ { -1, -1, "12345", 0, 0, 11, -1 }, /* ECC auto-set to 1 (L), version auto-set to 1 */ + /* 1*/ { 1, -1, "12345", 0, 0, 11, 0 }, /* ECC 1 (L), version auto-set to 1 */ + /* 2*/ { 2, -1, "12345", 0, 0, 13, 1 }, /* ECC 2 (M), version auto-set to 2 */ + /* 3*/ { 3, -1, "12345", 0, 0, 17, 1 }, /* ECC 3 (Q), version auto-set to 3 */ /* 4*/ { 4, -1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, - /* 5*/ { -1, 1, "12345", 0, 0, 11, -1 }, // ECC auto-set to 1, version 1 - /* 6*/ { -1, 2, "12345", 0, 0, 13, 1 }, // ECC auto-set to 2, version 2 + /* 5*/ { -1, 1, "12345", 0, 0, 11, -1 }, /* ECC auto-set to 1, version 1 */ + /* 6*/ { -1, 2, "12345", 0, 0, 13, 1 }, /* ECC auto-set to 2, version 2 */ /* 7*/ { 2, 2, "12345", 0, 0, 13, 0 }, - /* 8*/ { -1, 3, "12345", 0, 0, 15, 1 }, // ECC auto-set to 2, version 3 + /* 8*/ { -1, 3, "12345", 0, 0, 15, 1 }, /* ECC auto-set to 2, version 3 */ /* 9*/ { 2, 3, "12345", 0, 0, 15, 0 }, /* 10*/ { 1, 3, "12345", 0, 0, 15, 1 }, - /* 11*/ { -1, 4, "12345", 0, 0, 17, 1 }, // ECC auto-set to 3, version 4 - /* 12*/ { 3, 4, "12345", 0, 0, 17, 0 }, // ECC auto-set to 3, version 4 + /* 11*/ { -1, 4, "12345", 0, 0, 17, 1 }, /* ECC auto-set to 3, version 4 */ + /* 12*/ { 3, 4, "12345", 0, 0, 17, 0 }, /* ECC auto-set to 3, version 4 */ /* 13*/ { 2, 4, "12345", 0, 0, 17, 1 }, - /* 14*/ { -1, 5, "12345", 0, 0, 11, -1 }, // Size > 4 ignored - /* 15*/ { 1, 5, "12345", 0, 0, 11, 0 }, // Ignored also if ECC given - /* 16*/ { 1, 1, "12345", 0, 0, 11, 0 }, // ECC 1, version 1 - /* 17*/ { 1, 2, "12345", 0, 0, 13, 1 }, // ECC 1, version 2 - /* 18*/ { 1, 3, "12345", 0, 0, 15, 1 }, // ECC 1, version 3 - /* 19*/ { 1, 4, "12345", 0, 0, 17, 1 }, // ECC 1, version 4 + /* 14*/ { -1, 5, "12345", 0, 0, 11, -1 }, /* Size > 4 ignored */ + /* 15*/ { 1, 5, "12345", 0, 0, 11, 0 }, /* Ignored also if ECC given */ + /* 16*/ { 1, 1, "12345", 0, 0, 11, 0 }, /* ECC 1, version 1 */ + /* 17*/ { 1, 2, "12345", 0, 0, 13, 1 }, /* ECC 1, version 2 */ + /* 18*/ { 1, 3, "12345", 0, 0, 15, 1 }, /* ECC 1, version 3 */ + /* 19*/ { 1, 4, "12345", 0, 0, 17, 1 }, /* ECC 1, version 4 */ /* 20*/ { 2, 1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, - /* 21*/ { 2, 2, "12345", 0, -1, 13, -1 }, // ECC 2, version 2 - /* 22*/ { 2, 3, "12345", 0, -1, 15, 1 }, // ECC 2, version 3 - /* 23*/ { 2, 4, "12345", 0, -1, 17, 1 }, // ECC 2, version 4 + /* 21*/ { 2, 2, "12345", 0, -1, 13, -1 }, /* ECC 2, version 2 */ + /* 22*/ { 2, 3, "12345", 0, -1, 15, 1 }, /* ECC 2, version 3 */ + /* 23*/ { 2, 4, "12345", 0, -1, 17, 1 }, /* ECC 2, version 4 */ /* 24*/ { 3, 1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, /* 25*/ { 3, 2, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, /* 26*/ { 3, 3, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, - /* 27*/ { 3, 4, "12345", 0, -1, 17, -1 }, // ECC 3, version 4 + /* 27*/ { 3, 4, "12345", 0, -1, 17, -1 }, /* ECC 3, version 4 */ /* 28*/ { 4, 4, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, -1 }, - /* 29*/ { 5, -1, "12345", 0, 0, 11, -1 }, // ECC > 4 ignored - /* 30*/ { 5, 1, "12345", 0, 0, 11, 0 }, // Ignored also if size given + /* 29*/ { 5, -1, "12345", 0, 0, 11, -1 }, /* ECC > 4 ignored */ + /* 30*/ { 5, 1, "12345", 0, 0, 11, 0 }, /* Ignored also if size given */ /* 31*/ { 1, 1, "123456", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, - /* 32*/ { 1, -1, "123456", 0, 0, 13, -1 }, // ECC 1 (L), version auto-set to 2 + /* 32*/ { 1, -1, "123456", 0, 0, 13, -1 }, /* ECC 1 (L), version auto-set to 2 */ /* 33*/ { 1, 2, "123456", 0, 0, 13, 0 }, /* 34*/ { 2, 2, "ABCDEF", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, - /* 35*/ { 1, -1, "ABCDEF", 0, 0, 13, -1 }, // ECC 1 (L), version auto-set to 2 + /* 35*/ { 1, -1, "ABCDEF", 0, 0, 13, -1 }, /* ECC 1 (L), version auto-set to 2 */ /* 36*/ { 1, 2, "ABCDEF", 0, 0, 13, 0 }, - /* 37*/ { 2, -1, "ABCDE", 0, 0, 13, -1 }, // ECC 2 (M), version auto-set to 2 - /* 38*/ { 2, 2, "ABCDE", 0, 0, 13, 0 }, // ECC 2 (M), version auto-set to 2 - /* 39*/ { 1, -1, "ABCDEABCDEABCD", 0, 0, 15, -1 }, // 14 alphanumerics, ECC 1, version auto-set to 3 + /* 37*/ { 2, -1, "ABCDE", 0, 0, 13, -1 }, /* ECC 2 (M), version auto-set to 2 */ + /* 38*/ { 2, 2, "ABCDE", 0, 0, 13, 0 }, /* ECC 2 (M), version auto-set to 2 */ + /* 39*/ { 1, -1, "ABCDEABCDEABCD", 0, 0, 15, -1 }, /* 14 alphanumerics, ECC 1, version auto-set to 3 */ /* 40*/ { 1, 3, "ABCDEABCDEABCD", 0, 0, 15, 0 }, /* 41*/ { 2, 3, "ABCDEABCDEABCD", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, - /* 42*/ { 2, 3, "ABCDEABCDEA", 0, 0, 15, -1 }, // 11 alphanumerics, ECC 2, version 3 - /* 43*/ { 1, -1, "ABCDEFGHIJABCDEFGHIJA", 0, 0, 17, -1 }, // 21 alphanumerics, ECC 1, version auto-set to 4 + /* 42*/ { 2, 3, "ABCDEABCDEA", 0, 0, 15, -1 }, /* 11 alphanumerics, ECC 2, version 3 */ + /* 43*/ { 1, -1, "ABCDEFGHIJABCDEFGHIJA", 0, 0, 17, -1 }, /* 21 alphanumerics, ECC 1, version auto-set to 4 */ /* 44*/ { 1, 4, "ABCDEFGHIJABCDEFGHIJA", 0, 0, 17, 0 }, /* 45*/ { 2, 4, "ABCDEFGHIJABCDEFGHIJA", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, - /* 46*/ { 2, 4, "ABCDEFGHIJABCDEFGH", 0, 0, 17, -1 }, // 18 alphanumerics, ECC 2, version 4 + /* 46*/ { 2, 4, "ABCDEFGHIJABCDEFGH", 0, 0, 17, -1 }, /* 18 alphanumerics, ECC 2, version 4 */ /* 47*/ { 3, 4, "ABCDEFGHIJABCDEFGH", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, - /* 48*/ { 3, 4, "ABCDEFGHIJABC", 0, 0, 17, -1 }, // 13 alphanumerics, ECC 3 (Q), version 4 - /* 49*/ { -1, -1, "123456789012345678901234567890123456", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, // 35 absolute max - /* 50*/ { -1, -1, "貫貫貫貫貫", 0, 0, 17, -1 }, // 5 Kanji max + /* 48*/ { 3, 4, "ABCDEFGHIJABC", 0, 0, 17, -1 }, /* 13 alphanumerics, ECC 3 (Q), version 4 */ + /* 49*/ { -1, -1, "123456789012345678901234567890123456", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, /* 35 absolute max */ + /* 50*/ { -1, -1, "貫貫貫貫貫", 0, 0, 17, -1 }, /* 5 Kanji max */ /* 51*/ { -1, -1, "貫貫貫貫貫貫", ZINT_ERROR_TOO_LONG, -1, 0, -1 }, - /* 52*/ { -1, 1, "A", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, // Numeric only + /* 52*/ { -1, 1, "A", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, /* Numeric only */ /* 53*/ { -1, 2, "A", 0, 0, 13, -1 }, /* 54*/ { -1, 2, " ", 0, 0, 13, -1 }, /* 55*/ { -1, 2, "$%*+", 0, 0, 13, -1 }, /* 56*/ { -1, 2, "-./:", 0, 0, 13, -1 }, - /* 57*/ { -1, 2, "a", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, // Uppercase only - /* 58*/ { -1, 2, "!", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, // Certain punctuation only - /* 59*/ { -1, 2, "#", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, // Certain punctuation only - /* 60*/ { -1, 2, ",", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, // Certain punctuation only - /* 61*/ { -1, 2, "@", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, // Certain punctuation only + /* 57*/ { -1, 2, "a", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, /* Uppercase only */ + /* 58*/ { -1, 2, "!", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, /* Certain punctuation only */ + /* 59*/ { -1, 2, "#", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, /* Certain punctuation only */ + /* 60*/ { -1, 2, ",", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, /* Certain punctuation only */ + /* 61*/ { -1, 2, "@", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, /* Certain punctuation only */ /* 62*/ { -1, 2, "\177", ZINT_ERROR_INVALID_DATA, -1, 0, -1 }, }; int data_size = ARRAY_SIZE(data); @@ -4544,19 +4598,19 @@ static void test_microqr_input(int index, int generate, int debug) { int zxingcpp_cmp; char *comment; }; - // é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 - // β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 - // ก U+0E01 in ISO 8859-11 Thai (but not other ISO 8859 or Win page), not in Shift JIS, UTF-8 E0B881 - // Ж U+0416 in ISO 8859-5 Cyrillic (but not other ISO 8859), Win 1251, in Shift JIS 0x8447 (\204\107), UTF-8 D096 - // ກ U+0E81 Lao not in any ISO 8859 (or Win page) or Shift JIS, UTF-8 E0BA81 - // ¥ U+00A5 in ISO 8859-1 0xA5 (\245), in Shift JIS single-byte 0x5C (\134) (backslash); 0xA5 same codepoint as single-byte half-width katakana ・ (U+FF65) in Shift JIS (below), UTF-8 C2A5 - // ・ U+FF65 half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xA5 (\245), UTF-8 EFBDA5 - // ¿ U+00BF in ISO 8859-1 0xBF (\277), not in Shift JIS; 0xBF same codepoint as single-byte half-width katakana ソ (U+FF7F) in Shift JIS (below), UTF-8 C2BF - // ソ U+FF7F half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xBF (\277), UTF-8 EFBDBF - // ‾ U+203E overline, not in ISO/Win, in Shift JIS single-byte 0x7E (\176) (tilde), UTF-8 E280BE - // 点 U+70B9 kanji, in Shift JIS 0x935F (\223\137), UTF-8 E782B9 - // 茗 U+8317 kanji, in Shift JIS 0xE4AA (\344\252), UTF-8 E88C97 - // Á U+00C1, UTF-8 C381; ȁ U+0201, UTF-8 C881; Ȃ U+0202, UTF-8 C882; ¢ U+00A2, UTF-8 C2A2; á U+00E1, UTF-8 C3A1 + /* é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 */ + /* β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 */ + /* ก U+0E01 in ISO 8859-11 Thai (but not other ISO 8859 or Win page), not in Shift JIS, UTF-8 E0B881 */ + /* Ж U+0416 in ISO 8859-5 Cyrillic (but not other ISO 8859), Win 1251, in Shift JIS 0x8447 (\204\107), UTF-8 D096 */ + /* ກ U+0E81 Lao not in any ISO 8859 (or Win page) or Shift JIS, UTF-8 E0BA81 */ + /* ¥ U+00A5 in ISO 8859-1 0xA5 (\245), in Shift JIS single-byte 0x5C (\134) (backslash); 0xA5 same codepoint as single-byte half-width katakana ・ (U+FF65) in Shift JIS (below), UTF-8 C2A5 */ + /* ・ U+FF65 half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xA5 (\245), UTF-8 EFBDA5 */ + /* ¿ U+00BF in ISO 8859-1 0xBF (\277), not in Shift JIS; 0xBF same codepoint as single-byte half-width katakana ソ (U+FF7F) in Shift JIS (below), UTF-8 C2BF */ + /* ソ U+FF7F half-width katakana, not in ISO/Win, in Shift JIS single-byte 0xBF (\277), UTF-8 EFBDBF */ + /* ‾ U+203E overline, not in ISO/Win, in Shift JIS single-byte 0x7E (\176) (tilde), UTF-8 E280BE */ + /* 点 U+70B9 kanji, in Shift JIS 0x935F (\223\137), UTF-8 E782B9 */ + /* 茗 U+8317 kanji, in Shift JIS 0xE4AA (\344\252), UTF-8 E88C97 */ + /* Á U+00C1, UTF-8 C381; ȁ U+0201, UTF-8 C881; Ȃ U+0202, UTF-8 C882; ¢ U+00A2, UTF-8 C2A2; á U+00E1, UTF-8 C3A1 */ struct item data[] = { /* 0*/ { UNICODE_MODE, 2, 1, "é", 0, "87 A4 00 EC 11 EC 11 EC 00", 1, 1, "B1 (ISO 8859-1)" }, /* 1*/ { DATA_MODE, 2, -1, "é", 0, "8B 0E A4 00 EC 11 EC 11 00", 1, 0, "B2 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, @@ -4594,7 +4648,7 @@ static void test_microqr_input(int index, int generate, int debug) { /* 33*/ { UNICODE_MODE, 2, -1, "¥点茗・", 0, "99 72 4D 7F 92 AA 94 00 00", 1, 0, "B6 (Shift JIS) (optimized from B1 K2 B1); ZXing-C++ doesn't map Shift JIS ASCII" }, /* 34*/ { DATA_MODE, 2, -1, "\134\223\137\344\252\245", 0, "99 72 4D 7F 92 AA 94 00 00", 1, 0, "B6 (Shift JIS) (optimized from B1 K2 B1); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, /* 35*/ { DATA_MODE, 2, -1, "¥点茗・", 0, "4B C2 A5 E7 82 B9 E8 8C 97 EF BD A5 00 00", 1, 0, "B11 (UTF-8); ZXing-C++ doesn't map Shift JIS ASCII" }, - /* 36*/ { DATA_MODE, 2, -1, "ÁȁȁȁȂ¢", 0, "4C C3 81 C8 81 C8 81 C8 81 C8 82 C2 A2 00", 0, 0, "B12 (UTF-8); BWIPP different encodation (B1 K5 B1); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, + /* 36*/ { DATA_MODE, 2, -1, "ÁȁȁȁȂ¢", 0, "4C C3 81 C8 81 C8 81 C8 81 C8 82 C2 A2 00", 1, 0, "B12 (UTF-8); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, /* 37*/ { DATA_MODE, 1, -1, "ÁȁȁȁȁȂ¢", 0, "4E C3 81 C8 81 C8 81 C8 81 C8 81 C8 82 C2 A2 00", 0, 0, "B14 (UTF-8); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below); ZXing-C++ test can't handle DATA_MODE for certain inputs" }, /* 38*/ { DATA_MODE, 1, ZINT_FULL_MULTIBYTE, "ÁȁȁȁȁȂ¢", 0, "41 C3 6C 08 80 44 02 20 11 00 88 0A 12 0D 10 00", 1, 1, "B1 K6 B1 (UTF-8) (full multibyte)" }, /* 39*/ { UNICODE_MODE, 2, -1, "áA", 0, "8B 85 04 00 EC 11 EC 11 00", 0, 1, "B2 (ISO 8859-1); BWIPP uses Kanji (ZINT_FULL_MULTIBYTE) mode, see below)" }, @@ -4608,8 +4662,8 @@ static void test_microqr_input(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_microqr_input"); @@ -4621,7 +4675,7 @@ static void test_microqr_input(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_MICROQR, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, -1, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); @@ -4675,7 +4729,7 @@ static void test_microqr_input(int index, int generate, int debug) { testFinish(); } -// Check MICROQR padding (4-bit final codeword for M1 and M3 in particular) +/* Check MICROQR padding (4-bit final codeword for M1 and M3 in particular) */ static void test_microqr_padding(int index, int generate, int debug) { struct item { @@ -4730,7 +4784,8 @@ static void test_microqr_padding(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_microqr_padding"); @@ -4747,7 +4802,7 @@ static void test_microqr_padding(int index, int generate, int debug) { if (data[i].option_1 != -1) { symbol->option_1 = data[i].option_1; } - symbol->debug = ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + symbol->debug = ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ symbol->debug |= debug; length = (int) strlen(data[i].data); @@ -4762,6 +4817,16 @@ static void test_microqr_padding(int index, int generate, int debug) { } else { assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected); + if (do_bwipp && testUtilCanBwipp(i, symbol, data[i].option_1, -1, -1, debug)) { + char modules_dump[17 * 17 + 1]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilBwipp(i, symbol, data[i].option_1, -1, -1, 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); + + ret = testUtilBwippCmp(symbol, cmp_msg, cmp_buf, modules_dump); + assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_buf, modules_dump); + } if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, data[i].data, length, debug)) { int cmp_len, ret_len; char modules_dump[17 * 17 + 1]; @@ -4817,8 +4882,8 @@ static void test_microqr_optimize(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_microqr_optimize"); @@ -4829,7 +4894,7 @@ static void test_microqr_optimize(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_MICROQR, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); @@ -5175,6 +5240,672 @@ static void test_microqr_encode(int index, int generate, int debug) { "00011110011010001" "11101010111111111" }, + /* 17*/ { UNICODE_MODE, 1, 2, -1, "1ABCDE", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001011100" + "1011101000101" + "1011101001101" + "1011101010111" + "1000001010100" + "1111111000001" + "0000000001011" + "1101000010011" + "0001000110001" + "1111101011010" + "0010101010111" + "1111101111110" + }, + /* 18*/ { UNICODE_MODE, 1, 2, -1, "ABCDE1", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001010111" + "1011101011110" + "1011101011010" + "1011101001100" + "1000001011101" + "1111111011000" + "0000000011000" + "1101101010110" + "0000100110001" + "1111011100101" + "0101110111101" + "1110011101110" + }, + /* 19*/ { UNICODE_MODE, 1, 2, -1, "12ABCD", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001001011" + "1011101010111" + "1011101010011" + "1011101010101" + "1000001001001" + "1111111011100" + "0000000000110" + "1101010111101" + "0001111001000" + "1011011110011" + "0010110100001" + "1110110110100" + }, + /* 20*/ { UNICODE_MODE, 1, 2, -1, "ABCD12", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001001001" + "1011101011110" + "1011101010000" + "1011101010110" + "1000001001001" + "1111111010010" + "0000000000110" + "1101010111110" + "0111000001111" + "1111100101111" + "0101111000101" + "1101101001100" + }, + /* 21*/ { UNICODE_MODE, 1, 2, -1, "123ABC", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001000011" + "1011101010001" + "1011101011001" + "1011101011101" + "1000001001111" + "1111111011101" + "0000000000011" + "1101010111100" + "0000111100000" + "1010000100110" + "0100000001110" + "1011111101011" + }, + /* 22*/ { UNICODE_MODE, 1, 2, -1, "1234ABC", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001010111" + "1011101011001" + "1011101011000" + "1011101001100" + "1000001010001" + "1111111010111" + "0000000010001" + "1101101010100" + "0011010001010" + "1100001001001" + "0100110000101" + "1111010110101" + }, + /* 23*/ { UNICODE_MODE, 1, 2, -1, "ABC1234", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001000010" + "1011101011111" + "1011101011001" + "1011101010001" + "1000001000101" + "1111111010010" + "0000000001010" + "1101010111110" + "0000011110111" + "1111000101111" + "0100100011111" + "1011111100110" + }, + /* 24*/ { UNICODE_MODE, 1, 2, -1, "12345AB", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001000101" + "1011101011101" + "1011101011111" + "1011101011010" + "1000001001001" + "1111111011001" + "0000000000111" + "1101010111100" + "0111110110000" + "1000101000010" + "0001111010101" + "1001001101111" + }, + /* 25*/ { UNICODE_MODE, 1, 2, -1, "123456AB", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001001000" + "1011101010101" + "1011101010001" + "1011101010100" + "1000001001101" + "1111111011101" + "0000000001111" + "1101010110100" + "0110000100000" + "1010001001011" + "0100011101011" + "1010110111111" + }, + /* 26*/ { UNICODE_MODE, 1, 2, -1, "AB123456", 0, 13, 13, 1, "M2-L numeric/alpha mix", + "1111111010101" + "1000001010000" + "1011101010011" + "1011101010111" + "1011101001011" + "1000001010101" + "1111111010100" + "0000000011000" + "1101101010110" + "0000111111101" + "1000100111101" + "0000010110101" + "1101001101000" + }, + /* 27*/ { UNICODE_MODE, 1, 3, -1, "ABCDEFGHIJKLM1", 0, 15, 15, 1, "M3-L numeric/alpha mix", + "111111101010101" + "100000101100010" + "101110100100101" + "101110100011011" + "101110100010111" + "100000100010110" + "111111101110000" + "000000000011101" + "111110010000010" + "001011101001111" + "101111001010100" + "000100011011011" + "100011100001100" + "000111010101111" + "110010111100110" + }, + /* 28*/ { UNICODE_MODE, 1, 3, -1, "1ABCDEFGHIJKLM", 0, 15, 15, 1, "M3-L numeric/alpha mix", + "111111101010101" + "100000101100011" + "101110100101101" + "101110100101101" + "101110100010000" + "100000100011101" + "111111101110000" + "000000000001111" + "111110010001001" + "011111100110100" + "101101010100111" + "001010011011111" + "111011111001100" + "001000000001111" + "101110101111110" + }, + /* 29*/ { UNICODE_MODE, 1, 3, -1, "1234567890123456789A", 0, 15, 15, 1, "M3-L numeric/alpha mix", + "111111101010101" + "100000100000110" + "101110100011111" + "101110100100110" + "101110101101010" + "100000101000111" + "111111101101110" + "000000001010010" + "111101100110100" + "011011010100111" + "110000001001111" + "000111010000101" + "111101000011001" + "000000100101101" + "101101100001111" + }, + /* 30*/ { UNICODE_MODE, 1, 3, -1, "A1234567890123456789", 0, 15, 15, 1, "M3-L numeric/alpha mix", + "111111101010101" + "100000101010001" + "101110101110111" + "101110101011111" + "101110101111111" + "100000100000110" + "111111100010010" + "000000001011101" + "111100110110111" + "010100110000010" + "111001111001101" + "010010001101100" + "110000111010101" + "000011011000111" + "111111101100010" + }, + /* 31*/ { UNICODE_MODE, 1, 3, -1, "ABCDEFGHIJKa", 0, 15, 15, 1, "M3-L alpha/byte mix", + "111111101010101" + "100000101110010" + "101110100000101" + "101110100101011" + "101110100000111" + "100000100010110" + "111111101000000" + "000000000111101" + "111110010010010" + "001001101001111" + "101100011010100" + "011010011111011" + "110101000001110" + "001011111101101" + "110111010100110" + }, + /* 32*/ { UNICODE_MODE, 1, 3, -1, "aABCDEFGHIJK", 0, 15, 15, 1, "M3-L alpha/byte mix", + "111111101010101" + "100000100000001" + "101110101110011" + "101110101000010" + "101110100111101" + "100000101001011" + "111111100101010" + "000000000111101" + "111111000011100" + "001111011001101" + "110110010001100" + "011111111111110" + "100011111111001" + "000000111010011" + "111010110000011" + }, + /* 33*/ { UNICODE_MODE, 1, 3, -1, "abcdefghA", 0, 15, 15, 1, "M3-L alpha/byte mix", + "111111101010101" + "100000100001011" + "101110101111111" + "101110101010011" + "101110100000100" + "100000101011100" + "111111100110110" + "000000000100001" + "111111000111100" + "000110011001101" + "111011111110100" + "011000110111010" + "101101110000101" + "000010001100010" + "100011000101111" + }, + /* 34*/ { UNICODE_MODE, 1, 3, -1, "Aabcdefgh", 0, 15, 15, 1, "M3-L alpha/byte mix", + "111111101010101" + "100000100000011" + "101110101111111" + "101110101010011" + "101110100101111" + "100000101000000" + "111111100100110" + "000000000100001" + "111111000001100" + "000001011110101" + "100011110110101" + "010001110111010" + "100101101100101" + "010001110101110" + "110101101101111" + }, + /* 35*/ { UNICODE_MODE, 1, 4, -1, "A1abcdefghijklm", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", + "11111110101010101" + "10000010110110110" + "10111010110001111" + "10111010000000100" + "10111010111010000" + "10000010111111011" + "11111110010101011" + "00000000101001111" + "10011101000110111" + "01101100111101111" + "10001101011010010" + "00010000110101001" + "10101100011011101" + "01001101110000111" + "10111111010111100" + "01101110010001101" + "11001111000011100" + }, + /* 36*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijklmA1", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", + "11111110101010101" + "10000010010100111" + "10111010110110111" + "10111010000111010" + "10111010000111110" + "10000010010000101" + "11111110010110111" + "00000000000111010" + "10010010010110110" + "01111101110110110" + "10001111011110111" + "00011011111111010" + "11110100110111010" + "00000001100010111" + "10100000000110100" + "01010111011111011" + "10111101110110010" + }, + /* 37*/ { UNICODE_MODE, 1, 4, -1, "1Aabcdefghijklm", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", + "11111110101010101" + "10000010110101010" + "10111010010101011" + "10111010101010001" + "10111010010011001" + "10000010110001010" + "11111110110101011" + "00000000001010000" + "10010111000010001" + "01101111110111010" + "11111100110011011" + "01010100011011011" + "10110000011011111" + "00001001110011011" + "11011000010011000" + "00101111011011000" + "10110011001010101" + }, + /* 38*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijklm1A", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", + "11111110101010101" + "10000010110111011" + "10111010010101011" + "10111010111011001" + "10111010011011101" + "10000010110011001" + "11111110110101011" + "00000000011011001" + "10010111001010101" + "00001101100101010" + "11100011000101011" + "00000010100011001" + "10110101101011001" + "01001000110001011" + "11100010011101000" + "01000101100011000" + "11110110101010001" + }, + /* 39*/ { UNICODE_MODE, 1, 4, -1, "A1Aabcdefghijkl", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", + "11111110101010101" + "10000010110001010" + "10111010010101011" + "10111010101010000" + "10111010001010101" + "10000010110111010" + "11111110110011011" + "00000000001010011" + "10010111010011011" + "01111011010011010" + "10001111010011011" + "01001000001010000" + "11110011000010001" + "00111010110101011" + "11111011010011000" + "01010100111011000" + "11100110011011101" + }, + /* 40*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijklA1A", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B15)", + "11111110101010101" + "10000010110111011" + "10111010010101011" + "10111010111011001" + "10111010011011101" + "10000010110011001" + "11111110111101011" + "00000000000011001" + "10010111001010101" + "00011011000101010" + "10110000000101011" + "01011011100011001" + "10010001101011001" + "01000010110001011" + "11101000111101000" + "01100100100011000" + "11100100101010001" + }, + /* 41*/ { UNICODE_MODE, 1, 4, -1, "A1A1abcdefghijk", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A4 B11)", + "11111110101010101" + "10000010101100010" + "10111010010001000" + "10111010100101100" + "10111010001100111" + "10000010101100111" + "11111110110101101" + "00000000010101001" + "10010111001100101" + "00100010001100100" + "11111001110011110" + "00001000001100111" + "10001101001100111" + "00110101101100100" + "10100100110111101" + "01011100011101101" + "11010100111100111" + }, + /* 42*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijkA1A1", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B11 A4)", + "11111110101010101" + "10000010100111011" + "10111010010101011" + "10111010110011001" + "10111010011011101" + "10000010100011001" + "11111110100101011" + "00000000001011001" + "10010111011010101" + "00110011010101010" + "10110000010101011" + "01011000010011001" + "11000101000011001" + "01011001100001011" + "11110100111101010" + "01111111011011000" + "11100111011010001" + }, + /* 43*/ { UNICODE_MODE, 1, 4, -1, "A1A1Aabcdefghij", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A5 B10)", + "11111110101010101" + "10000010110010100" + "10111010000011000" + "10111010110011000" + "10111010010011111" + "10000010101010111" + "11111110111011001" + "00000000010101001" + "10010111010011001" + "01011010001010000" + "11010110001010110" + "01100011010001011" + "10101101110011011" + "01010000101010010" + "10000101110011001" + "00111101000111001" + "11010001011111011" + }, + /* 44*/ { UNICODE_MODE, 1, 4, -1, "abcdefghijA1A1A", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B10 A5)", + "11111110101010101" + "10000010100101011" + "10111010000011011" + "10111010101011001" + "10111010011111101" + "10000010110011001" + "11111110110101011" + "00000000010011001" + "10010111000010101" + "01011111100101010" + "11001000011101011" + "00010001011011001" + "11010111011011001" + "01011111101001001" + "11101111110101010" + "01100100000011000" + "11101010011010001" + }, + /* 45*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1abcdefghi", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A6 B9)", + "11111110101010101" + "10000010100111100" + "10111010000111000" + "10111010100110000" + "10111010000100111" + "10000010101010111" + "11111110100111001" + "00000000010111001" + "10010111011111101" + "01001110100010100" + "11101000000110010" + "00010000110110011" + "11001001011101111" + "00111000101100101" + "11011101111110001" + "01101100100110001" + "10110010111110111" + }, + /* 46*/ { UNICODE_MODE, 1, 4, -1, "abcdefghiA1A1A1", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B9 A6)", + "11111110101010101" + "10000010110001011" + "10111010010101011" + "10111010110111001" + "10111010000111101" + "10000010100011001" + "11111110111011011" + "00000000011011001" + "10010111011110101" + "01111110011101010" + "10010001110101011" + "01011110000011001" + "11010110101011001" + "01111110101001010" + "10010000111101010" + "00001000100011000" + "11110110111010001" + }, + /* 47*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1Aabcdefghi", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A7 B9)", + "11111110101010101" + "10000010111011100" + "10111010011101000" + "10111010111000000" + "10111010011000111" + "10000010111000111" + "11111110111100101" + "00000000011001001" + "10010111010001101" + "01000011111010100" + "10110011001010110" + "01000011100000011" + "10110001111001011" + "00001011011001111" + "10000000001011101" + "01101000000000001" + "11010011110001011" + }, + /* 48*/ { UNICODE_MODE, 1, 4, -1, "abcdefghiA1A1A1A", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (B9 A7)", + "11111110101010101" + "10000010110001011" + "10111010010101011" + "10111010110111001" + "10111010000111101" + "10000010100111001" + "11111110111011011" + "00000000011011001" + "10010111011110101" + "01110111011101010" + "11000111110101011" + "00101011100011001" + "10101110101011001" + "00100100001001010" + "11001101101101010" + "00111010110011000" + "11000101111010001" + }, + /* 49*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1A1abcdefgh", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A8 B8)", + "11111110101010101" + "10000010110011100" + "10111010001011000" + "10111010110000000" + "10111010010010111" + "10000010110010111" + "11111110110010101" + "00000000010111101" + "10010111010111101" + "00111011110010000" + "11000000100010010" + "00010001010011011" + "11110110110111111" + "01101010001010100" + "10010101111011110" + "00110010100101001" + "11010101111111011" + }, + /* 50*/ { UNICODE_MODE, 1, 4, -1, "abcdefghA1A1A1A1", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A8 B8)", + "11111110101010101" + "10000010100111011" + "10111010011011011" + "10111010111011001" + "10111010011011101" + "10000010111001001" + "11111110110101011" + "00000000000111001" + "10010111001110101" + "01101000001001010" + "11110000001101011" + "01100101111011001" + "11001000111111001" + "00110000100001000" + "10001100000101010" + "00011001000011000" + "11101100111010001" + }, + /* 51*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1A1A1abcdefg", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A10 B7)", + "11111110101010101" + "10000010111011100" + "10111010011011000" + "10111010101000000" + "10111010011000111" + "10000010111000111" + "11111110111010101" + "00000000001001101" + "10010111010001101" + "01011011011010000" + "11000100111110010" + "01001100011000011" + "10101101111000011" + "01010010011010101" + "10001101111001110" + "00101010111001001" + "10000110110101011" + }, + /* 52*/ { UNICODE_MODE, 1, 4, -1, "abcdefgA1A1A1A1A1", 0, 17, 17, 0, "M4-L alpha/numeric/byte mix (B7 A10); BWIPP fails with Maximum length exceeded", + "11111110101010101" + "10000010111010111" + "10111010110101111" + "10111010001011100" + "10111010100110100" + "10000010100001000" + "11111110001011011" + "00000000111000101" + "10011101011110001" + "00000101001011111" + "10100001101100010" + "00010010101001000" + "11110111000111001" + "01011010101000111" + "10111011111001101" + "00001010111001101" + "11111111011111000" + }, + /* 53*/ { UNICODE_MODE, 1, 4, -1, "A1A1A1A1A1Aabcdef", 0, 17, 17, 1, "M4-L alpha/numeric/byte mix (A11 B6)", + "11111110101010101" + "10000010100111100" + "10111010001111000" + "10111010101100000" + "10111010000110111" + "10000010100110111" + "11111110110100101" + "00000000000001101" + "10010111000111101" + "01110100100110000" + "11101011110110010" + "00000111001110011" + "10010111000110011" + "00011001100010111" + "11110011100111110" + "01110100100101001" + "11000111011011011" + }, + /* 54*/ { UNICODE_MODE, 1, 4, -1, "abcdefA1A1A1A1A1A", 0, 17, 17, 0, "M4-L alpha/numeric/byte mix (A11 B6); BWIPP fails with Maximum length exceeded", + "11111110101010101" + "10000010101101011" + "10111010001111011" + "10111010111011001" + "10111010011001101" + "10000010100001001" + "11111110100001011" + "00000000000001001" + "10010111000110101" + "01111101001111010" + "10001010111011011" + "01110000110011001" + "11110111110011001" + "01101011110000001" + "11110110001101001" + "00001011000110100" + "11010110111110001" + }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -5184,8 +5915,8 @@ static void test_microqr_encode(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_microqr_encode"); @@ -5249,7 +5980,7 @@ static void test_microqr_encode(int index, int generate, int debug) { testFinish(); } -// Not a real test, just performance indicator +/* Not a real test, just performance indicator */ static void test_microqr_perf(int index, int debug) { struct item { @@ -5327,10 +6058,10 @@ static void test_upnqr_input(int index, int generate, int debug) { char *expected; char *comment; }; - // Ą U+0104 in ISO 8859-2 0xA1, in other ISO 8859 and Win 1250, UTF-8 C484 - // Ŕ U+0154 in ISO 8859-2 0xC0, in Win 1250 but not other ISO 8859 or Win page, UTF-8 C594 - // é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 - // β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 + /* Ą U+0104 in ISO 8859-2 0xA1, in other ISO 8859 and Win 1250, UTF-8 C484 */ + /* Ŕ U+0154 in ISO 8859-2 0xC0, in Win 1250 but not other ISO 8859 or Win page, UTF-8 C594 */ + /* é U+00E9 in ISO 8859-1 plus other ISO 8859 (but not in ISO 8859-7 or ISO 8859-11), Win 1250 plus other Win, not in Shift JIS, UTF-8 C3A9 */ + /* β U+03B2 in ISO 8859-7 Greek (but not other ISO 8859 or Win page), in Shift JIS 0x83C0, UTF-8 CEB2 */ struct item data[] = { /* 0*/ { UNICODE_MODE, "ĄŔ", 0, "(415) 70 44 00 02 A1 C0 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC", "ECI-4 B2 (ISO 8859-2)" }, /* 1*/ { UNICODE_MODE, "é", 0, "(415) 70 44 00 01 E9 00 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11 EC 11", "ECI-4 B1 (ISO 8859-2)" }, @@ -5355,7 +6086,7 @@ static void test_upnqr_input(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_UPNQR, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, -1, -1, -1 /*output_options*/, data[i].data, -1, debug); @@ -5395,7 +6126,7 @@ static void test_upnqr_encode(int index, int generate, int debug) { char *expected; }; - // https://www.upn-qr.si/uploads/files/Tehnicni standard UPN QR.pdf + /* https://www.upn-qr.si/uploads/files/Tehnicni standard UPN QR.pdf */ struct item data[] = { /* 0*/ { UNICODE_MODE, -1, -1, -1, "UPNQR\012\012\012\012\012Janez Novak\012Dunajska 1\0121000 Ljubljana\01200000008105\012\012\012COST\012Plačilo obveznosti 10/2016\012\012SI56051008010486080\012SI0598765432100\012Novo podjetje d.o.o.\012Lepa cesta 15\0123698 Loški Potok\012183\012 ", 0, 77, 77, "Example A", "11111110111111111100010011100010110001111000010010000011011111010000001111111" @@ -5802,9 +6533,9 @@ static void test_upnqr_encode(int index, int generate, int debug) { char cmp_msg[1024]; #if 0 /* Need to add "force binary mode" to BWIPP for this to work */ - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ #endif - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_upnqr_encode"); @@ -5883,8 +6614,8 @@ static void test_rmqr_large(int index, int debug) { int expected_rows; int expected_width; }; - // ISO/IEC 23941:2022 Table 6 - // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) + /* ISO/IEC 23941:2022 Table 6 */ + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { /* 0*/ { 2, 1, "1", 12, 0, 7, 43 }, /* 1*/ { 2, 1, "1", 13, ZINT_ERROR_TOO_LONG, -1, -1 }, @@ -5892,512 +6623,512 @@ static void test_rmqr_large(int index, int debug) { /* 3*/ { 2, 1, "A", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 4*/ { 2, 1, "\200", 5, 0, 7, 43 }, /* 5*/ { 2, 1, "\200", 6, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 6*/ { 2, 1, "\201", 6, 0, 7, 43 }, // 3 Shift JIS 0x8181 - /* 7*/ { 2, 1, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, // 4 Shift JIS 0x8181 + /* 6*/ { 2, 1, "\201", 6, 0, 7, 43 }, /* 3 Shift JIS 0x8181 */ + /* 7*/ { 2, 1, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 4 Shift JIS 0x8181 */ /* 8*/ { 4, 1, "1", 5, 0, 7, 43 }, /* 9*/ { 4, 1, "1", 6, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 10*/ { 4, 1, "A", 3, 0, 7, 43 }, /* 11*/ { 4, 1, "A", 4, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 12*/ { 4, 1, "\200", 2, 0, 7, 43 }, /* 13*/ { 4, 1, "\200", 3, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 14*/ { 4, 1, "\201", 2, 0, 7, 43 }, // 1 Shift JIS 0x8181 - /* 15*/ { 4, 1, "\201", 4, ZINT_ERROR_TOO_LONG, -1, -1 }, // 2 Shift JIS 0x8181 + /* 14*/ { 4, 1, "\201", 2, 0, 7, 43 }, /* 1 Shift JIS 0x8181 */ + /* 15*/ { 4, 1, "\201", 4, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 2 Shift JIS 0x8181 */ /* 16*/ { 2, 2, "1", 26, 0, 7, 59 }, /* 17*/ { 2, 2, "1", 27, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 18*/ { 2, 2, "A", 16, 0, 7, 59 }, /* 19*/ { 2, 2, "A", 17, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 20*/ { 2, 2, "\200", 11, 0, 7, 59 }, /* 21*/ { 2, 2, "\200", 12, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 22*/ { 2, 2, "\201", 12, 0, 7, 59 }, // 6 Shift JIS 0x8181 - /* 23*/ { 2, 2, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, // 7 Shift JIS 0x8181 + /* 22*/ { 2, 2, "\201", 12, 0, 7, 59 }, /* 6 Shift JIS 0x8181 */ + /* 23*/ { 2, 2, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 7 Shift JIS 0x8181 */ /* 24*/ { 4, 2, "1", 14, 0, 7, 59 }, /* 25*/ { 4, 2, "1", 15, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 26*/ { 4, 2, "A", 8, 0, 7, 59 }, /* 27*/ { 4, 2, "A", 9, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 28*/ { 4, 2, "\200", 6, 0, 7, 59 }, /* 29*/ { 4, 2, "\200", 7, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 30*/ { 4, 2, "\201", 6, 0, 7, 59 }, // 3 Shift JIS 0x8181 - /* 31*/ { 4, 2, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, // 4 Shift JIS 0x8181 + /* 30*/ { 4, 2, "\201", 6, 0, 7, 59 }, /* 3 Shift JIS 0x8181 */ + /* 31*/ { 4, 2, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 4 Shift JIS 0x8181 */ /* 32*/ { 2, 3, "1", 45, 0, 7, 77 }, /* 33*/ { 2, 3, "1", 46, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 34*/ { 2, 3, "A", 27, 0, 7, 77 }, /* 35*/ { 2, 3, "A", 28, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 36*/ { 2, 3, "\200", 19, 0, 7, 77 }, /* 37*/ { 2, 3, "\200", 20, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 38*/ { 2, 3, "\201", 22, 0, 7, 77 }, // 11 Shift JIS 0x8181 - /* 39*/ { 2, 3, "\201", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, // 12 Shift JIS 0x8181 + /* 38*/ { 2, 3, "\201", 22, 0, 7, 77 }, /* 11 Shift JIS 0x8181 */ + /* 39*/ { 2, 3, "\201", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 12 Shift JIS 0x8181 */ /* 40*/ { 4, 3, "1", 21, 0, 7, 77 }, /* 41*/ { 4, 3, "1", 22, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 42*/ { 4, 3, "A", 13, 0, 7, 77 }, /* 43*/ { 4, 3, "A", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 44*/ { 4, 3, "\200", 9, 0, 7, 77 }, /* 45*/ { 4, 3, "\200", 10, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 46*/ { 4, 3, "\201", 10, 0, 7, 77 }, // 5 Shift JIS 0x8181 - /* 47*/ { 4, 3, "\201", 12, ZINT_ERROR_TOO_LONG, -1, -1 }, // 6 Shift JIS 0x8181 + /* 46*/ { 4, 3, "\201", 10, 0, 7, 77 }, /* 5 Shift JIS 0x8181 */ + /* 47*/ { 4, 3, "\201", 12, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 6 Shift JIS 0x8181 */ /* 48*/ { 2, 4, "1", 64, 0, 7, 99 }, /* 49*/ { 2, 4, "1", 65, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 50*/ { 2, 4, "A", 39, 0, 7, 99 }, /* 51*/ { 2, 4, "A", 40, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 52*/ { 2, 4, "\200", 27, 0, 7, 99 }, /* 53*/ { 2, 4, "\200", 28, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 54*/ { 2, 4, "\201", 32, 0, 7, 99 }, // 16 Shift JIS 0x8181 - /* 55*/ { 2, 4, "\201", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, // 17 Shift JIS 0x8181 + /* 54*/ { 2, 4, "\201", 32, 0, 7, 99 }, /* 16 Shift JIS 0x8181 */ + /* 55*/ { 2, 4, "\201", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 17 Shift JIS 0x8181 */ /* 56*/ { 4, 4, "1", 30, 0, 7, 99 }, /* 57*/ { 4, 4, "1", 31, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 58*/ { 4, 4, "A", 18, 0, 7, 99 }, /* 59*/ { 4, 4, "A", 19, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 60*/ { 4, 4, "\200", 13, 0, 7, 99 }, /* 61*/ { 4, 4, "\200", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 62*/ { 4, 4, "\201", 16, 0, 7, 99 }, // 8 Shift JIS 0x8181 - /* 63*/ { 4, 4, "\201", 18, ZINT_ERROR_TOO_LONG, -1, -1 }, // 9 Shift JIS 0x8181 + /* 62*/ { 4, 4, "\201", 16, 0, 7, 99 }, /* 8 Shift JIS 0x8181 */ + /* 63*/ { 4, 4, "\201", 18, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 9 Shift JIS 0x8181 */ /* 64*/ { 2, 5, "1", 102, 0, 7, 139 }, /* 65*/ { 2, 5, "1", 103, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 66*/ { 2, 5, "A", 62, 0, 7, 139 }, /* 67*/ { 2, 5, "A", 63, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 68*/ { 2, 5, "\200", 42, 0, 7, 139 }, /* 69*/ { 2, 5, "\200", 43, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 70*/ { 2, 5, "\201", 52, 0, 7, 139 }, // 26 Shift JIS 0x8181 - /* 71*/ { 2, 5, "\201", 54, ZINT_ERROR_TOO_LONG, -1, -1 }, // 27 Shift JIS 0x8181 + /* 70*/ { 2, 5, "\201", 52, 0, 7, 139 }, /* 26 Shift JIS 0x8181 */ + /* 71*/ { 2, 5, "\201", 54, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 27 Shift JIS 0x8181 */ /* 72*/ { 4, 5, "1", 54, 0, 7, 139 }, /* 73*/ { 4, 5, "1", 55, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 74*/ { 4, 5, "A", 33, 0, 7, 139 }, /* 75*/ { 4, 5, "A", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 76*/ { 4, 5, "\200", 22, 0, 7, 139 }, /* 77*/ { 4, 5, "\200", 23, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 78*/ { 4, 5, "\201", 28, 0, 7, 139 }, // 14 Shift JIS 0x8181 - /* 79*/ { 4, 5, "\201", 30, ZINT_ERROR_TOO_LONG, -1, -1 }, // 15 Shift JIS 0x8181 + /* 78*/ { 4, 5, "\201", 28, 0, 7, 139 }, /* 14 Shift JIS 0x8181 */ + /* 79*/ { 4, 5, "\201", 30, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 15 Shift JIS 0x8181 */ /* 80*/ { 2, 6, "1", 26, 0, 9, 43 }, /* 81*/ { 2, 6, "1", 27, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 82*/ { 2, 6, "A", 16, 0, 9, 43 }, /* 83*/ { 2, 6, "A", 17, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 84*/ { 2, 6, "\200", 11, 0, 9, 43 }, /* 85*/ { 2, 6, "\200", 12, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 86*/ { 2, 6, "\201", 12, 0, 9, 43 }, // 6 Shift JIS 0x8181 - /* 87*/ { 2, 6, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, // 7 Shift JIS 0x8181 + /* 86*/ { 2, 6, "\201", 12, 0, 9, 43 }, /* 6 Shift JIS 0x8181 */ + /* 87*/ { 2, 6, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 7 Shift JIS 0x8181 */ /* 88*/ { 4, 6, "1", 14, 0, 9, 43 }, /* 89*/ { 4, 6, "1", 15, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 90*/ { 4, 6, "A", 8, 0, 9, 43 }, /* 91*/ { 4, 6, "A", 9, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 92*/ { 4, 6, "\200", 6, 0, 9, 43 }, /* 93*/ { 4, 6, "\200", 7, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 94*/ { 4, 6, "\201", 6, 0, 9, 43 }, // 3 Shift JIS 0x8181 - /* 95*/ { 4, 6, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, // 4 Shift JIS 0x8181 + /* 94*/ { 4, 6, "\201", 6, 0, 9, 43 }, /* 3 Shift JIS 0x8181 */ + /* 95*/ { 4, 6, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 4 Shift JIS 0x8181 */ /* 96*/ { 2, 7, "1", 47, 0, 9, 59 }, /* 97*/ { 2, 7, "1", 48, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 98*/ { 2, 7, "A", 29, 0, 9, 59 }, /* 99*/ { 2, 7, "A", 30, ZINT_ERROR_TOO_LONG, -1, -1 }, /*100*/ { 2, 7, "\200", 20, 0, 9, 59 }, /*101*/ { 2, 7, "\200", 21, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*102*/ { 2, 7, "\201", 24, 0, 9, 59 }, // 12 Shift JIS 0x8181 - /*103*/ { 2, 7, "\201", 26, ZINT_ERROR_TOO_LONG, -1, -1 }, // 13 Shift JIS 0x8181 + /*102*/ { 2, 7, "\201", 24, 0, 9, 59 }, /* 12 Shift JIS 0x8181 */ + /*103*/ { 2, 7, "\201", 26, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 13 Shift JIS 0x8181 */ /*104*/ { 4, 7, "1", 23, 0, 9, 59 }, /*105*/ { 4, 7, "1", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, /*106*/ { 4, 7, "A", 14, 0, 9, 59 }, /*107*/ { 4, 7, "A", 15, ZINT_ERROR_TOO_LONG, -1, -1 }, /*108*/ { 4, 7, "\200", 10, 0, 9, 59 }, /*109*/ { 4, 7, "\200", 11, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*110*/ { 4, 7, "\201", 12, 0, 9, 59 }, // 6 Shift JIS 0x8181 - /*111*/ { 4, 7, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, // 7 Shift JIS 0x8181 + /*110*/ { 4, 7, "\201", 12, 0, 9, 59 }, /* 6 Shift JIS 0x8181 */ + /*111*/ { 4, 7, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 7 Shift JIS 0x8181 */ /*112*/ { 2, 8, "1", 71, 0, 9, 77 }, /*113*/ { 2, 8, "1", 72, ZINT_ERROR_TOO_LONG, -1, -1 }, /*114*/ { 2, 8, "A", 43, 0, 9, 77 }, /*115*/ { 2, 8, "A", 44, ZINT_ERROR_TOO_LONG, -1, -1 }, /*116*/ { 2, 8, "\200", 30, 0, 9, 77 }, /*117*/ { 2, 8, "\200", 31, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*118*/ { 2, 8, "\201", 36, 0, 9, 77 }, // 18 Shift JIS 0x8181 - /*119*/ { 2, 8, "\201", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, // 19 Shift JIS 0x8181 + /*118*/ { 2, 8, "\201", 36, 0, 9, 77 }, /* 18 Shift JIS 0x8181 */ + /*119*/ { 2, 8, "\201", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 19 Shift JIS 0x8181 */ /*120*/ { 4, 8, "1", 37, 0, 9, 77 }, /*121*/ { 4, 8, "1", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, /*122*/ { 4, 8, "A", 23, 0, 9, 77 }, /*123*/ { 4, 8, "A", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, /*124*/ { 4, 8, "\200", 16, 0, 9, 77 }, /*125*/ { 4, 8, "\200", 17, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*126*/ { 4, 8, "\201", 18, 0, 9, 77 }, // 9 Shift JIS 0x8181 - /*127*/ { 4, 8, "\201", 20, ZINT_ERROR_TOO_LONG, -1, -1 }, // 10 Shift JIS 0x8181 + /*126*/ { 4, 8, "\201", 18, 0, 9, 77 }, /* 9 Shift JIS 0x8181 */ + /*127*/ { 4, 8, "\201", 20, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 10 Shift JIS 0x8181 */ /*128*/ { 2, 9, "1", 97, 0, 9, 99 }, /*129*/ { 2, 9, "1", 98, ZINT_ERROR_TOO_LONG, -1, -1 }, /*130*/ { 2, 9, "A", 59, 0, 9, 99 }, /*131*/ { 2, 9, "A", 60, ZINT_ERROR_TOO_LONG, -1, -1 }, /*132*/ { 2, 9, "\200", 40, 0, 9, 99 }, /*133*/ { 2, 9, "\200", 41, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*134*/ { 2, 9, "\201", 50, 0, 9, 99 }, // 25 Shift JIS 0x8181 - /*135*/ { 2, 9, "\201", 52, ZINT_ERROR_TOO_LONG, -1, -1 }, // 26 Shift JIS 0x8181 + /*134*/ { 2, 9, "\201", 50, 0, 9, 99 }, /* 25 Shift JIS 0x8181 */ + /*135*/ { 2, 9, "\201", 52, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 26 Shift JIS 0x8181 */ /*136*/ { 4, 9, "1", 49, 0, 9, 99 }, /*137*/ { 4, 9, "1", 50, ZINT_ERROR_TOO_LONG, -1, -1 }, /*138*/ { 4, 9, "A", 30, 0, 9, 99 }, /*139*/ { 4, 9, "A", 31, ZINT_ERROR_TOO_LONG, -1, -1 }, /*140*/ { 4, 9, "\200", 20, 0, 9, 99 }, /*141*/ { 4, 9, "\200", 21, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*142*/ { 4, 9, "\201", 24, 0, 9, 99 }, // 12 Shift JIS 0x8181 - /*143*/ { 4, 9, "\201", 26, ZINT_ERROR_TOO_LONG, -1, -1 }, // 13 Shift JIS 0x8181 + /*142*/ { 4, 9, "\201", 24, 0, 9, 99 }, /* 12 Shift JIS 0x8181 */ + /*143*/ { 4, 9, "\201", 26, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 13 Shift JIS 0x8181 */ /*144*/ { 2, 10, "1", 147, 0, 9, 139 }, /*145*/ { 2, 10, "1", 148, ZINT_ERROR_TOO_LONG, -1, -1 }, /*146*/ { 2, 10, "A", 89, 0, 9, 139 }, /*147*/ { 2, 10, "A", 90, ZINT_ERROR_TOO_LONG, -1, -1 }, /*148*/ { 2, 10, "\200", 61, 0, 9, 139 }, /*149*/ { 2, 10, "\200", 62, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*150*/ { 2, 10, "\201", 76, 0, 9, 139 }, // 36 Shift JIS 0x8181 - /*151*/ { 2, 10, "\201", 78, ZINT_ERROR_TOO_LONG, -1, -1 }, // 37 Shift JIS 0x8181 + /*150*/ { 2, 10, "\201", 76, 0, 9, 139 }, /* 36 Shift JIS 0x8181 */ + /*151*/ { 2, 10, "\201", 78, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 37 Shift JIS 0x8181 */ /*152*/ { 4, 10, "1", 75, 0, 9, 139 }, /*153*/ { 4, 10, "1", 76, ZINT_ERROR_TOO_LONG, -1, -1 }, /*154*/ { 4, 10, "A", 46, 0, 9, 139 }, /*155*/ { 4, 10, "A", 47, ZINT_ERROR_TOO_LONG, -1, -1 }, /*156*/ { 4, 10, "\200", 31, 0, 9, 139 }, /*157*/ { 4, 10, "\200", 32, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*158*/ { 4, 10, "\201", 38, 0, 9, 139 }, // 19 Shift JIS 0x8181 - /*159*/ { 4, 10, "\201", 40, ZINT_ERROR_TOO_LONG, -1, -1 }, // 20 Shift JIS 0x8181 + /*158*/ { 4, 10, "\201", 38, 0, 9, 139 }, /* 19 Shift JIS 0x8181 */ + /*159*/ { 4, 10, "\201", 40, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 20 Shift JIS 0x8181 */ /*160*/ { 2, 11, "1", 14, 0, 11, 27 }, /*161*/ { 2, 11, "1", 15, ZINT_ERROR_TOO_LONG, -1, -1 }, /*162*/ { 2, 11, "A", 8, 0, 11, 27 }, /*163*/ { 2, 11, "A", 9, ZINT_ERROR_TOO_LONG, -1, -1 }, /*164*/ { 2, 11, "\200", 6, 0, 11, 27 }, /*165*/ { 2, 11, "\200", 7, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*166*/ { 2, 11, "\201", 6, 0, 11, 27 }, // 3 Shift JIS 0x8181 - /*167*/ { 2, 11, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, // 4 Shift JIS 0x8181 + /*166*/ { 2, 11, "\201", 6, 0, 11, 27 }, /* 3 Shift JIS 0x8181 */ + /*167*/ { 2, 11, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 4 Shift JIS 0x8181 */ /*168*/ { 4, 11, "1", 9, 0, 11, 27 }, /*169*/ { 4, 11, "1", 10, ZINT_ERROR_TOO_LONG, -1, -1 }, /*170*/ { 4, 11, "A", 6, 0, 11, 27 }, /*171*/ { 4, 11, "A", 7, ZINT_ERROR_TOO_LONG, -1, -1 }, /*172*/ { 4, 11, "\200", 4, 0, 11, 27 }, /*173*/ { 4, 11, "\200", 5, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*174*/ { 4, 11, "\201", 4, 0, 11, 27 }, // 2 Shift JIS 0x8181 - /*175*/ { 4, 11, "\201", 6, ZINT_ERROR_TOO_LONG, -1, -1 }, // 3 Shift JIS 0x8181 + /*174*/ { 4, 11, "\201", 4, 0, 11, 27 }, /* 2 Shift JIS 0x8181 */ + /*175*/ { 4, 11, "\201", 6, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 3 Shift JIS 0x8181 */ /*176*/ { 2, 12, "1", 42, 0, 11, 43 }, /*177*/ { 2, 12, "1", 43, ZINT_ERROR_TOO_LONG, -1, -1 }, /*178*/ { 2, 12, "A", 26, 0, 11, 43 }, /*179*/ { 2, 12, "A", 27, ZINT_ERROR_TOO_LONG, -1, -1 }, /*180*/ { 2, 12, "\200", 18, 0, 11, 43 }, /*181*/ { 2, 12, "\200", 19, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*182*/ { 2, 12, "\201", 22, 0, 11, 43 }, // 11 Shift JIS 0x8181 - /*183*/ { 2, 12, "\201", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, // 12 Shift JIS 0x8181 + /*182*/ { 2, 12, "\201", 22, 0, 11, 43 }, /* 11 Shift JIS 0x8181 */ + /*183*/ { 2, 12, "\201", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 12 Shift JIS 0x8181 */ /*184*/ { 4, 12, "1", 23, 0, 11, 43 }, /*185*/ { 4, 12, "1", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, /*186*/ { 4, 12, "A", 14, 0, 11, 43 }, /*187*/ { 4, 12, "A", 15, ZINT_ERROR_TOO_LONG, -1, -1 }, /*188*/ { 4, 12, "\200", 10, 0, 11, 43 }, /*189*/ { 4, 12, "\200", 11, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*190*/ { 4, 12, "\201", 12, 0, 11, 43 }, // 6 Shift JIS 0x8181 - /*191*/ { 4, 12, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, // 7 Shift JIS 0x8181 + /*190*/ { 4, 12, "\201", 12, 0, 11, 43 }, /* 6 Shift JIS 0x8181 */ + /*191*/ { 4, 12, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 7 Shift JIS 0x8181 */ /*192*/ { 2, 13, "1", 71, 0, 11, 59 }, /*193*/ { 2, 13, "1", 72, ZINT_ERROR_TOO_LONG, -1, -1 }, /*194*/ { 2, 13, "A", 43, 0, 11, 59 }, /*195*/ { 2, 13, "A", 44, ZINT_ERROR_TOO_LONG, -1, -1 }, /*196*/ { 2, 13, "\200", 30, 0, 11, 59 }, /*197*/ { 2, 13, "\200", 31, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*198*/ { 2, 13, "\201", 36, 0, 11, 59 }, // 18 Shift JIS 0x8181 - /*199*/ { 2, 13, "\201", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, // 19 Shift JIS 0x8181 + /*198*/ { 2, 13, "\201", 36, 0, 11, 59 }, /* 18 Shift JIS 0x8181 */ + /*199*/ { 2, 13, "\201", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 19 Shift JIS 0x8181 */ /*200*/ { 4, 13, "1", 33, 0, 11, 59 }, /*201*/ { 4, 13, "1", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, /*202*/ { 4, 13, "A", 20, 0, 11, 59 }, /*203*/ { 4, 13, "A", 21, ZINT_ERROR_TOO_LONG, -1, -1 }, /*204*/ { 4, 13, "\200", 14, 0, 11, 59 }, /*205*/ { 4, 13, "\200", 15, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*206*/ { 4, 13, "\201", 16, 0, 11, 59 }, // 8 Shift JIS 0x8181 - /*207*/ { 4, 13, "\201", 18, ZINT_ERROR_TOO_LONG, -1, -1 }, // 9 Shift JIS 0x8181 + /*206*/ { 4, 13, "\201", 16, 0, 11, 59 }, /* 8 Shift JIS 0x8181 */ + /*207*/ { 4, 13, "\201", 18, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 9 Shift JIS 0x8181 */ /*208*/ { 2, 14, "1", 100, 0, 11, 77 }, /*209*/ { 2, 14, "1", 101, ZINT_ERROR_TOO_LONG, -1, -1 }, /*210*/ { 2, 14, "A", 60, 0, 11, 77 }, /*211*/ { 2, 14, "A", 61, ZINT_ERROR_TOO_LONG, -1, -1 }, /*212*/ { 2, 14, "\200", 41, 0, 11, 77 }, /*213*/ { 2, 14, "\200", 42, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*214*/ { 2, 14, "\201", 50, 0, 11, 77 }, // 25 Shift JIS 0x8181 - /*215*/ { 2, 14, "\201", 52, ZINT_ERROR_TOO_LONG, -1, -1 }, // 26 Shift JIS 0x8181 + /*214*/ { 2, 14, "\201", 50, 0, 11, 77 }, /* 25 Shift JIS 0x8181 */ + /*215*/ { 2, 14, "\201", 52, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 26 Shift JIS 0x8181 */ /*216*/ { 4, 14, "1", 52, 0, 11, 77 }, /*217*/ { 4, 14, "1", 53, ZINT_ERROR_TOO_LONG, -1, -1 }, /*218*/ { 4, 14, "A", 31, 0, 11, 77 }, /*219*/ { 4, 14, "A", 32, ZINT_ERROR_TOO_LONG, -1, -1 }, /*220*/ { 4, 14, "\200", 21, 0, 11, 77 }, /*221*/ { 4, 14, "\200", 22, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*222*/ { 4, 14, "\201", 26, 0, 11, 77 }, // 13 Shift JIS 0x8181 - /*223*/ { 4, 14, "\201", 28, ZINT_ERROR_TOO_LONG, -1, -1 }, // 14 Shift JIS 0x8181 + /*222*/ { 4, 14, "\201", 26, 0, 11, 77 }, /* 13 Shift JIS 0x8181 */ + /*223*/ { 4, 14, "\201", 28, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 14 Shift JIS 0x8181 */ /*224*/ { 2, 15, "1", 133, 0, 11, 99 }, /*225*/ { 2, 15, "1", 134, ZINT_ERROR_TOO_LONG, -1, -1 }, /*226*/ { 2, 15, "A", 81, 0, 11, 99 }, /*227*/ { 2, 15, "A", 82, ZINT_ERROR_TOO_LONG, -1, -1 }, /*228*/ { 2, 15, "\200", 55, 0, 11, 99 }, /*229*/ { 2, 15, "\200", 56, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*230*/ { 2, 15, "\201", 68, 0, 11, 99 }, // 34 Shift JIS 0x8181 - /*231*/ { 2, 15, "\201", 70, ZINT_ERROR_TOO_LONG, -1, -1 }, // 35 Shift JIS 0x8181 + /*230*/ { 2, 15, "\201", 68, 0, 11, 99 }, /* 34 Shift JIS 0x8181 */ + /*231*/ { 2, 15, "\201", 70, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 35 Shift JIS 0x8181 */ /*232*/ { 4, 15, "1", 66, 0, 11, 99 }, /*233*/ { 4, 15, "1", 67, ZINT_ERROR_TOO_LONG, -1, -1 }, /*234*/ { 4, 15, "A", 40, 0, 11, 99 }, /*235*/ { 4, 15, "A", 41, ZINT_ERROR_TOO_LONG, -1, -1 }, /*236*/ { 4, 15, "\200", 27, 0, 11, 99 }, /*237*/ { 4, 15, "\200", 28, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*238*/ { 4, 15, "\201", 34, 0, 11, 99 }, // 17 Shift JIS 0x8181 - /*239*/ { 4, 15, "\201", 36, ZINT_ERROR_TOO_LONG, -1, -1 }, // 18 Shift JIS 0x8181 + /*238*/ { 4, 15, "\201", 34, 0, 11, 99 }, /* 17 Shift JIS 0x8181 */ + /*239*/ { 4, 15, "\201", 36, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 18 Shift JIS 0x8181 */ /*240*/ { 2, 16, "1", 198, 0, 11, 139 }, /*241*/ { 2, 16, "1", 199, ZINT_ERROR_TOO_LONG, -1, -1 }, /*242*/ { 2, 16, "A", 120, 0, 11, 139 }, /*243*/ { 2, 16, "A", 121, ZINT_ERROR_TOO_LONG, -1, -1 }, /*244*/ { 2, 16, "\200", 82, 0, 11, 139 }, /*245*/ { 2, 16, "\200", 83, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*246*/ { 2, 16, "\201", 102, 0, 11, 139 }, // 51 Shift JIS 0x8181 - /*247*/ { 2, 16, "\201", 104, ZINT_ERROR_TOO_LONG, -1, -1 }, // 52 Shift JIS 0x8181 + /*246*/ { 2, 16, "\201", 102, 0, 11, 139 }, /* 51 Shift JIS 0x8181 */ + /*247*/ { 2, 16, "\201", 104, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 52 Shift JIS 0x8181 */ /*248*/ { 4, 16, "1", 97, 0, 11, 139 }, /*249*/ { 4, 16, "1", 98, ZINT_ERROR_TOO_LONG, -1, -1 }, /*250*/ { 4, 16, "A", 59, 0, 11, 139 }, /*251*/ { 4, 16, "A", 60, ZINT_ERROR_TOO_LONG, -1, -1 }, /*252*/ { 4, 16, "\200", 40, 0, 11, 139 }, /*253*/ { 4, 16, "\200", 41, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*254*/ { 4, 16, "\201", 50, 0, 11, 139 }, // 25 Shift JIS 0x8181 - /*255*/ { 4, 16, "\201", 52, ZINT_ERROR_TOO_LONG, -1, -1 }, // 26 Shift JIS 0x8181 + /*254*/ { 4, 16, "\201", 50, 0, 11, 139 }, /* 25 Shift JIS 0x8181 */ + /*255*/ { 4, 16, "\201", 52, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 26 Shift JIS 0x8181 */ /*256*/ { 2, 17, "1", 26, 0, 13, 27 }, /*257*/ { 2, 17, "1", 27, ZINT_ERROR_TOO_LONG, -1, -1 }, /*258*/ { 2, 17, "A", 16, 0, 13, 27 }, /*259*/ { 2, 17, "A", 17, ZINT_ERROR_TOO_LONG, -1, -1 }, /*260*/ { 2, 17, "\200", 11, 0, 13, 27 }, /*261*/ { 2, 17, "\200", 12, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*262*/ { 2, 17, "\201", 12, 0, 13, 27 }, // 6 Shift JIS 0x8181 - /*263*/ { 2, 17, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, // 7 Shift JIS 0x8181 + /*262*/ { 2, 17, "\201", 12, 0, 13, 27 }, /* 6 Shift JIS 0x8181 */ + /*263*/ { 2, 17, "\201", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 7 Shift JIS 0x8181 */ /*264*/ { 4, 17, "1", 14, 0, 13, 27 }, /*265*/ { 4, 17, "1", 15, ZINT_ERROR_TOO_LONG, -1, -1 }, /*266*/ { 4, 17, "A", 8, 0, 13, 27 }, /*267*/ { 4, 17, "A", 9, ZINT_ERROR_TOO_LONG, -1, -1 }, /*268*/ { 4, 17, "\200", 6, 0, 13, 27 }, /*269*/ { 4, 17, "\200", 7, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*270*/ { 4, 17, "\201", 6, 0, 13, 27 }, // 3 Shift JIS 0x8181 - /*271*/ { 4, 17, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, // 4 Shift JIS 0x8181 + /*270*/ { 4, 17, "\201", 6, 0, 13, 27 }, /* 3 Shift JIS 0x8181 */ + /*271*/ { 4, 17, "\201", 8, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 4 Shift JIS 0x8181 */ /*272*/ { 2, 18, "1", 62, 0, 13, 43 }, /*273*/ { 2, 18, "1", 63, ZINT_ERROR_TOO_LONG, -1, -1 }, /*274*/ { 2, 18, "A", 37, 0, 13, 43 }, /*275*/ { 2, 18, "A", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, /*276*/ { 2, 18, "\200", 26, 0, 13, 43 }, /*277*/ { 2, 18, "\200", 27, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*278*/ { 2, 18, "\201", 32, 0, 13, 43 }, // 16 Shift JIS 0x8181 - /*279*/ { 2, 18, "\201", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, // 17 Shift JIS 0x8181 + /*278*/ { 2, 18, "\201", 32, 0, 13, 43 }, /* 16 Shift JIS 0x8181 */ + /*279*/ { 2, 18, "\201", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 17 Shift JIS 0x8181 */ /*280*/ { 4, 18, "1", 28, 0, 13, 43 }, /*281*/ { 4, 18, "1", 29, ZINT_ERROR_TOO_LONG, -1, -1 }, /*282*/ { 4, 18, "A", 17, 0, 13, 43 }, /*283*/ { 4, 18, "A", 18, ZINT_ERROR_TOO_LONG, -1, -1 }, /*284*/ { 4, 18, "\200", 12, 0, 13, 43 }, /*285*/ { 4, 18, "\200", 13, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*286*/ { 4, 18, "\201", 14, 0, 13, 43 }, // 7 Shift JIS 0x8181 - /*287*/ { 4, 18, "\201", 16, ZINT_ERROR_TOO_LONG, -1, -1 }, // 8 Shift JIS 0x8181 + /*286*/ { 4, 18, "\201", 14, 0, 13, 43 }, /* 7 Shift JIS 0x8181 */ + /*287*/ { 4, 18, "\201", 16, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 8 Shift JIS 0x8181 */ /*288*/ { 2, 19, "1", 88, 0, 13, 59 }, /*289*/ { 2, 19, "1", 89, ZINT_ERROR_TOO_LONG, -1, -1 }, /*290*/ { 2, 19, "A", 53, 0, 13, 59 }, /*291*/ { 2, 19, "A", 54, ZINT_ERROR_TOO_LONG, -1, -1 }, /*292*/ { 2, 19, "\200", 36, 0, 13, 59 }, /*293*/ { 2, 19, "\200", 37, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*294*/ { 2, 19, "\201", 44, 0, 13, 59 }, // 22 Shift JIS 0x8181 - /*295*/ { 2, 19, "\201", 46, ZINT_ERROR_TOO_LONG, -1, -1 }, // 23 Shift JIS 0x8181 + /*294*/ { 2, 19, "\201", 44, 0, 13, 59 }, /* 22 Shift JIS 0x8181 */ + /*295*/ { 2, 19, "\201", 46, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 23 Shift JIS 0x8181 */ /*296*/ { 4, 19, "1", 45, 0, 13, 59 }, /*297*/ { 4, 19, "1", 46, ZINT_ERROR_TOO_LONG, -1, -1 }, /*298*/ { 4, 19, "A", 27, 0, 13, 59 }, /*299*/ { 4, 19, "A", 28, ZINT_ERROR_TOO_LONG, -1, -1 }, /*300*/ { 4, 19, "\200", 18, 0, 13, 59 }, /*301*/ { 4, 19, "\200", 19, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*302*/ { 4, 19, "\201", 22, 0, 13, 59 }, // 11 Shift JIS 0x8181 - /*303*/ { 4, 19, "\201", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, // 12 Shift JIS 0x8181 + /*302*/ { 4, 19, "\201", 22, 0, 13, 59 }, /* 11 Shift JIS 0x8181 */ + /*303*/ { 4, 19, "\201", 24, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 12 Shift JIS 0x8181 */ /*304*/ { 2, 20, "1", 124, 0, 13, 77 }, /*305*/ { 2, 20, "1", 125, ZINT_ERROR_TOO_LONG, -1, -1 }, /*306*/ { 2, 20, "A", 75, 0, 13, 77 }, /*307*/ { 2, 20, "A", 76, ZINT_ERROR_TOO_LONG, -1, -1 }, /*308*/ { 2, 20, "\200", 51, 0, 13, 77 }, /*309*/ { 2, 20, "\200", 52, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*310*/ { 2, 20, "\201", 62, 0, 13, 77 }, // 31 Shift JIS 0x8181 - /*311*/ { 2, 20, "\201", 64, ZINT_ERROR_TOO_LONG, -1, -1 }, // 32 Shift JIS 0x8181 + /*310*/ { 2, 20, "\201", 62, 0, 13, 77 }, /* 31 Shift JIS 0x8181 */ + /*311*/ { 2, 20, "\201", 64, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 32 Shift JIS 0x8181 */ /*312*/ { 4, 20, "1", 66, 0, 13, 77 }, /*313*/ { 4, 20, "1", 67, ZINT_ERROR_TOO_LONG, -1, -1 }, /*314*/ { 4, 20, "A", 40, 0, 13, 77 }, /*315*/ { 4, 20, "A", 41, ZINT_ERROR_TOO_LONG, -1, -1 }, /*316*/ { 4, 20, "\200", 27, 0, 13, 77 }, /*317*/ { 4, 20, "\200", 28, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*318*/ { 4, 20, "\201", 34, 0, 13, 77 }, // 17 Shift JIS 0x8181 - /*319*/ { 4, 20, "\201", 36, ZINT_ERROR_TOO_LONG, -1, -1 }, // 18 Shift JIS 0x8181 + /*318*/ { 4, 20, "\201", 34, 0, 13, 77 }, /* 17 Shift JIS 0x8181 */ + /*319*/ { 4, 20, "\201", 36, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 18 Shift JIS 0x8181 */ /*320*/ { 2, 21, "1", 171, 0, 13, 99 }, /*321*/ { 2, 21, "1", 172, ZINT_ERROR_TOO_LONG, -1, -1 }, /*322*/ { 2, 21, "A", 104, 0, 13, 99 }, /*323*/ { 2, 21, "A", 105, ZINT_ERROR_TOO_LONG, -1, -1 }, /*324*/ { 2, 21, "\200", 71, 0, 13, 99 }, /*325*/ { 2, 21, "\200", 72, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*326*/ { 2, 21, "\201", 88, 0, 13, 99 }, // 44 Shift JIS 0x8181 - /*327*/ { 2, 21, "\201", 90, ZINT_ERROR_TOO_LONG, -1, -1 }, // 45 Shift JIS 0x8181 + /*326*/ { 2, 21, "\201", 88, 0, 13, 99 }, /* 44 Shift JIS 0x8181 */ + /*327*/ { 2, 21, "\201", 90, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 45 Shift JIS 0x8181 */ /*328*/ { 4, 21, "1", 80, 0, 13, 99 }, /*329*/ { 4, 21, "1", 81, ZINT_ERROR_TOO_LONG, -1, -1 }, /*330*/ { 4, 21, "A", 49, 0, 13, 99 }, /*331*/ { 4, 21, "A", 50, ZINT_ERROR_TOO_LONG, -1, -1 }, /*332*/ { 4, 21, "\200", 33, 0, 13, 99 }, /*333*/ { 4, 21, "\200", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*334*/ { 4, 21, "\201", 40, 0, 13, 99 }, // 20 Shift JIS 0x8181 - /*335*/ { 4, 21, "\201", 42, ZINT_ERROR_TOO_LONG, -1, -1 }, // 21 Shift JIS 0x8181 + /*334*/ { 4, 21, "\201", 40, 0, 13, 99 }, /* 20 Shift JIS 0x8181 */ + /*335*/ { 4, 21, "\201", 42, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 21 Shift JIS 0x8181 */ /*336*/ { 2, 22, "1", 251, 0, 13, 139 }, /*337*/ { 2, 22, "1", 252, ZINT_ERROR_TOO_LONG, -1, -1 }, /*338*/ { 2, 22, "A", 152, 0, 13, 139 }, /*339*/ { 2, 22, "A", 153, ZINT_ERROR_TOO_LONG, -1, -1 }, /*340*/ { 2, 22, "\200", 104, 0, 13, 139 }, /*341*/ { 2, 22, "\200", 105, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*342*/ { 2, 22, "\201", 128, 0, 13, 139 }, // 64 Shift JIS 0x8181 - /*343*/ { 2, 22, "\201", 130, ZINT_ERROR_TOO_LONG, -1, -1 }, // 65 Shift JIS 0x8181 + /*342*/ { 2, 22, "\201", 128, 0, 13, 139 }, /* 64 Shift JIS 0x8181 */ + /*343*/ { 2, 22, "\201", 130, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 65 Shift JIS 0x8181 */ /*344*/ { 4, 22, "1", 126, 0, 13, 139 }, /*345*/ { 4, 22, "1", 127, ZINT_ERROR_TOO_LONG, -1, -1 }, /*346*/ { 4, 22, "A", 76, 0, 13, 139 }, /*347*/ { 4, 22, "A", 77, ZINT_ERROR_TOO_LONG, -1, -1 }, /*348*/ { 4, 22, "\200", 52, 0, 13, 139 }, /*349*/ { 4, 22, "\200", 53, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*350*/ { 4, 22, "\201", 64, 0, 13, 139 }, // 32 Shift JIS 0x8181 - /*351*/ { 4, 22, "\201", 66, ZINT_ERROR_TOO_LONG, -1, -1 }, // 33 Shift JIS 0x8181 + /*350*/ { 4, 22, "\201", 64, 0, 13, 139 }, /* 32 Shift JIS 0x8181 */ + /*351*/ { 4, 22, "\201", 66, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 33 Shift JIS 0x8181 */ /*352*/ { 2, 23, "1", 76, 0, 15, 43 }, /*353*/ { 2, 23, "1", 77, ZINT_ERROR_TOO_LONG, -1, -1 }, /*354*/ { 2, 23, "A", 46, 0, 15, 43 }, /*355*/ { 2, 23, "A", 47, ZINT_ERROR_TOO_LONG, -1, -1 }, /*356*/ { 2, 23, "\200", 31, 0, 15, 43 }, /*357*/ { 2, 23, "\200", 32, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*358*/ { 2, 23, "\201", 38, 0, 15, 43 }, // 19 Shift JIS 0x8181 - /*359*/ { 2, 23, "\201", 40, ZINT_ERROR_TOO_LONG, -1, -1 }, // 20 Shift JIS 0x8181 + /*358*/ { 2, 23, "\201", 38, 0, 15, 43 }, /* 19 Shift JIS 0x8181 */ + /*359*/ { 2, 23, "\201", 40, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 20 Shift JIS 0x8181 */ /*360*/ { 4, 23, "1", 33, 0, 15, 43 }, /*361*/ { 4, 23, "1", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, /*362*/ { 4, 23, "A", 20, 0, 15, 43 }, /*363*/ { 4, 23, "A", 21, ZINT_ERROR_TOO_LONG, -1, -1 }, /*364*/ { 4, 23, "\200", 13, 0, 15, 43 }, /*365*/ { 4, 23, "\200", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*366*/ { 4, 23, "\201", 16, 0, 15, 43 }, // 8 Shift JIS 0x8181 - /*367*/ { 4, 23, "\201", 18, ZINT_ERROR_TOO_LONG, -1, -1 }, // 9 Shift JIS 0x8181 + /*366*/ { 4, 23, "\201", 16, 0, 15, 43 }, /* 8 Shift JIS 0x8181 */ + /*367*/ { 4, 23, "\201", 18, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 9 Shift JIS 0x8181 */ /*368*/ { 2, 24, "1", 112, 0, 15, 59 }, /*369*/ { 2, 24, "1", 113, ZINT_ERROR_TOO_LONG, -1, -1 }, /*370*/ { 2, 24, "A", 68, 0, 15, 59 }, /*371*/ { 2, 24, "A", 69, ZINT_ERROR_TOO_LONG, -1, -1 }, /*372*/ { 2, 24, "\200", 46, 0, 15, 59 }, /*373*/ { 2, 24, "\200", 47, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*374*/ { 2, 24, "\201", 56, 0, 15, 59 }, // 28 Shift JIS 0x8181 - /*375*/ { 2, 24, "\201", 58, ZINT_ERROR_TOO_LONG, -1, -1 }, // 29 Shift JIS 0x8181 + /*374*/ { 2, 24, "\201", 56, 0, 15, 59 }, /* 28 Shift JIS 0x8181 */ + /*375*/ { 2, 24, "\201", 58, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 29 Shift JIS 0x8181 */ /*376*/ { 4, 24, "1", 59, 0, 15, 59 }, /*377*/ { 4, 24, "1", 60, ZINT_ERROR_TOO_LONG, -1, -1 }, /*378*/ { 4, 24, "A", 36, 0, 15, 59 }, /*379*/ { 4, 24, "A", 37, ZINT_ERROR_TOO_LONG, -1, -1 }, /*380*/ { 4, 24, "\200", 24, 0, 15, 59 }, /*381*/ { 4, 24, "\200", 25, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*382*/ { 4, 24, "\201", 30, 0, 15, 59 }, // 30 Shift JIS 0x8181 - /*383*/ { 4, 24, "\201", 32, ZINT_ERROR_TOO_LONG, -1, -1 }, // 31 Shift JIS 0x8181 + /*382*/ { 4, 24, "\201", 30, 0, 15, 59 }, /* 30 Shift JIS 0x8181 */ + /*383*/ { 4, 24, "\201", 32, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 31 Shift JIS 0x8181 */ /*384*/ { 2, 25, "1", 157, 0, 15, 77 }, /*385*/ { 2, 25, "1", 158, ZINT_ERROR_TOO_LONG, -1, -1 }, /*386*/ { 2, 25, "A", 95, 0, 15, 77 }, /*387*/ { 2, 25, "A", 96, ZINT_ERROR_TOO_LONG, -1, -1 }, /*388*/ { 2, 25, "\200", 65, 0, 15, 77 }, /*389*/ { 2, 25, "\200", 66, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*390*/ { 2, 25, "\201", 80, 0, 15, 77 }, // 40 Shift JIS 0x8181 - /*391*/ { 2, 25, "\201", 82, ZINT_ERROR_TOO_LONG, -1, -1 }, // 41 Shift JIS 0x8181 + /*390*/ { 2, 25, "\201", 80, 0, 15, 77 }, /* 40 Shift JIS 0x8181 */ + /*391*/ { 2, 25, "\201", 82, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 41 Shift JIS 0x8181 */ /*392*/ { 4, 25, "1", 71, 0, 15, 77 }, /*393*/ { 4, 25, "1", 72, ZINT_ERROR_TOO_LONG, -1, -1 }, /*394*/ { 4, 25, "A", 43, 0, 15, 77 }, /*395*/ { 4, 25, "A", 44, ZINT_ERROR_TOO_LONG, -1, -1 }, /*396*/ { 4, 25, "\200", 29, 0, 15, 77 }, /*397*/ { 4, 25, "\200", 30, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*398*/ { 4, 25, "\201", 36, 0, 15, 77 }, // 18 Shift JIS 0x8181 - /*399*/ { 4, 25, "\201", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, // 19 Shift JIS 0x8181 + /*398*/ { 4, 25, "\201", 36, 0, 15, 77 }, /* 18 Shift JIS 0x8181 */ + /*399*/ { 4, 25, "\201", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 19 Shift JIS 0x8181 */ /*400*/ { 2, 26, "1", 207, 0, 15, 99 }, /*401*/ { 2, 26, "1", 208, ZINT_ERROR_TOO_LONG, -1, -1 }, /*402*/ { 2, 26, "A", 126, 0, 15, 99 }, /*403*/ { 2, 26, "A", 127, ZINT_ERROR_TOO_LONG, -1, -1 }, /*404*/ { 2, 26, "\200", 86, 0, 15, 99 }, /*405*/ { 2, 26, "\200", 87, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*406*/ { 2, 26, "\201", 106, 0, 15, 99 }, // 53 Shift JIS 0x8181 - /*407*/ { 2, 26, "\201", 108, ZINT_ERROR_TOO_LONG, -1, -1 }, // 54 Shift JIS 0x8181 + /*406*/ { 2, 26, "\201", 106, 0, 15, 99 }, /* 53 Shift JIS 0x8181 */ + /*407*/ { 2, 26, "\201", 108, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 54 Shift JIS 0x8181 */ /*408*/ { 4, 26, "1", 111, 0, 15, 99 }, /*409*/ { 4, 26, "1", 112, ZINT_ERROR_TOO_LONG, -1, -1 }, /*410*/ { 4, 26, "A", 68, 0, 15, 99 }, /*411*/ { 4, 26, "A", 69, ZINT_ERROR_TOO_LONG, -1, -1 }, /*412*/ { 4, 26, "\200", 46, 0, 15, 99 }, /*413*/ { 4, 26, "\200", 47, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*414*/ { 4, 26, "\201", 56, 0, 15, 99 }, // 28 Shift JIS 0x8181 - /*415*/ { 4, 26, "\201", 58, ZINT_ERROR_TOO_LONG, -1, -1 }, // 29 Shift JIS 0x8181 + /*414*/ { 4, 26, "\201", 56, 0, 15, 99 }, /* 28 Shift JIS 0x8181 */ + /*415*/ { 4, 26, "\201", 58, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 29 Shift JIS 0x8181 */ /*416*/ { 2, 27, "1", 301, 0, 15, 139 }, /*417*/ { 2, 27, "1", 302, ZINT_ERROR_TOO_LONG, -1, -1 }, /*418*/ { 2, 27, "A", 182, 0, 15, 139 }, /*419*/ { 2, 27, "A", 183, ZINT_ERROR_TOO_LONG, -1, -1 }, /*420*/ { 2, 27, "\200", 125, 0, 15, 139 }, /*421*/ { 2, 27, "\200", 126, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*422*/ { 2, 27, "\201", 154, 0, 15, 139 }, // 77 Shift JIS 0x8181 - /*423*/ { 2, 27, "\201", 156, ZINT_ERROR_TOO_LONG, -1, -1 }, // 78 Shift JIS 0x8181 + /*422*/ { 2, 27, "\201", 154, 0, 15, 139 }, /* 77 Shift JIS 0x8181 */ + /*423*/ { 2, 27, "\201", 156, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 78 Shift JIS 0x8181 */ /*424*/ { 4, 27, "1", 162, 0, 15, 139 }, /*425*/ { 4, 27, "1", 163, ZINT_ERROR_TOO_LONG, -1, -1 }, /*426*/ { 4, 27, "A", 98, 0, 15, 139 }, /*427*/ { 4, 27, "A", 99, ZINT_ERROR_TOO_LONG, -1, -1 }, /*428*/ { 4, 27, "\200", 67, 0, 15, 139 }, /*429*/ { 4, 27, "\200", 68, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*430*/ { 4, 27, "\201", 82, 0, 15, 139 }, // 41 Shift JIS 0x8181 - /*431*/ { 4, 27, "\201", 84, ZINT_ERROR_TOO_LONG, -1, -1 }, // 42 Shift JIS 0x8181 + /*430*/ { 4, 27, "\201", 82, 0, 15, 139 }, /* 41 Shift JIS 0x8181 */ + /*431*/ { 4, 27, "\201", 84, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 42 Shift JIS 0x8181 */ /*432*/ { 2, 28, "1", 90, 0, 17, 43 }, /*433*/ { 2, 28, "1", 91, ZINT_ERROR_TOO_LONG, -1, -1 }, /*434*/ { 2, 28, "A", 55, 0, 17, 43 }, /*435*/ { 2, 28, "A", 56, ZINT_ERROR_TOO_LONG, -1, -1 }, /*436*/ { 2, 28, "\200", 37, 0, 17, 43 }, /*437*/ { 2, 28, "\200", 38, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*438*/ { 2, 28, "\201", 46, 0, 17, 43 }, // 23 Shift JIS 0x8181 - /*439*/ { 2, 28, "\201", 48, ZINT_ERROR_TOO_LONG, -1, -1 }, // 24 Shift JIS 0x8181 + /*438*/ { 2, 28, "\201", 46, 0, 17, 43 }, /* 23 Shift JIS 0x8181 */ + /*439*/ { 2, 28, "\201", 48, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 24 Shift JIS 0x8181 */ /*440*/ { 4, 28, "1", 47, 0, 17, 43 }, /*441*/ { 4, 28, "1", 48, ZINT_ERROR_TOO_LONG, -1, -1 }, /*442*/ { 4, 28, "A", 28, 0, 17, 43 }, /*443*/ { 4, 28, "A", 29, ZINT_ERROR_TOO_LONG, -1, -1 }, /*444*/ { 4, 28, "\200", 19, 0, 17, 43 }, /*445*/ { 4, 28, "\200", 20, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*446*/ { 4, 28, "\201", 24, 0, 17, 43 }, // 12 Shift JIS 0x8181 - /*447*/ { 4, 28, "\201", 26, ZINT_ERROR_TOO_LONG, -1, -1 }, // 13 Shift JIS 0x8181 + /*446*/ { 4, 28, "\201", 24, 0, 17, 43 }, /* 12 Shift JIS 0x8181 */ + /*447*/ { 4, 28, "\201", 26, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 13 Shift JIS 0x8181 */ /*448*/ { 2, 29, "1", 131, 0, 17, 59 }, /*449*/ { 2, 29, "1", 132, ZINT_ERROR_TOO_LONG, -1, -1 }, /*450*/ { 2, 29, "A", 79, 0, 17, 59 }, /*451*/ { 2, 29, "A", 80, ZINT_ERROR_TOO_LONG, -1, -1 }, /*452*/ { 2, 29, "\200", 54, 0, 17, 59 }, /*453*/ { 2, 29, "\200", 55, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*454*/ { 2, 29, "\201", 66, 0, 17, 59 }, // 33 Shift JIS 0x8181 - /*455*/ { 2, 29, "\201", 68, ZINT_ERROR_TOO_LONG, -1, -1 }, // 34 Shift JIS 0x8181 + /*454*/ { 2, 29, "\201", 66, 0, 17, 59 }, /* 33 Shift JIS 0x8181 */ + /*455*/ { 2, 29, "\201", 68, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 34 Shift JIS 0x8181 */ /*456*/ { 4, 29, "1", 63, 0, 17, 59 }, /*457*/ { 4, 29, "1", 64, ZINT_ERROR_TOO_LONG, -1, -1 }, /*458*/ { 4, 29, "A", 38, 0, 17, 59 }, /*459*/ { 4, 29, "A", 39, ZINT_ERROR_TOO_LONG, -1, -1 }, /*460*/ { 4, 29, "\200", 26, 0, 17, 59 }, /*461*/ { 4, 29, "\200", 27, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*462*/ { 4, 29, "\201", 32, 0, 17, 59 }, // 16 Shift JIS 0x8181 - /*463*/ { 4, 29, "\201", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, // 17 Shift JIS 0x8181 + /*462*/ { 4, 29, "\201", 32, 0, 17, 59 }, /* 16 Shift JIS 0x8181 */ + /*463*/ { 4, 29, "\201", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 17 Shift JIS 0x8181 */ /*464*/ { 2, 30, "1", 183, 0, 17, 77 }, /*465*/ { 2, 30, "1", 184, ZINT_ERROR_TOO_LONG, -1, -1 }, /*466*/ { 2, 30, "A", 111, 0, 17, 77 }, /*467*/ { 2, 30, "A", 112, ZINT_ERROR_TOO_LONG, -1, -1 }, /*468*/ { 2, 30, "\200", 76, 0, 17, 77 }, /*469*/ { 2, 30, "\200", 77, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*470*/ { 2, 30, "\201", 94, 0, 17, 77 }, // 47 Shift JIS 0x8181 - /*471*/ { 2, 30, "\201", 96, ZINT_ERROR_TOO_LONG, -1, -1 }, // 48 Shift JIS 0x8181 + /*470*/ { 2, 30, "\201", 94, 0, 17, 77 }, /* 47 Shift JIS 0x8181 */ + /*471*/ { 2, 30, "\201", 96, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 48 Shift JIS 0x8181 */ /*472*/ { 4, 30, "1", 87, 0, 17, 77 }, /*473*/ { 4, 30, "1", 88, ZINT_ERROR_TOO_LONG, -1, -1 }, /*474*/ { 4, 30, "A", 53, 0, 17, 77 }, /*475*/ { 4, 30, "A", 54, ZINT_ERROR_TOO_LONG, -1, -1 }, /*476*/ { 4, 30, "\200", 36, 0, 17, 77 }, /*477*/ { 4, 30, "\200", 37, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*478*/ { 4, 30, "\201", 44, 0, 17, 77 }, // 22 Shift JIS 0x8181 - /*479*/ { 4, 30, "\201", 46, ZINT_ERROR_TOO_LONG, -1, -1 }, // 23 Shift JIS 0x8181 + /*478*/ { 4, 30, "\201", 44, 0, 17, 77 }, /* 22 Shift JIS 0x8181 */ + /*479*/ { 4, 30, "\201", 46, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 23 Shift JIS 0x8181 */ /*480*/ { 2, 31, "1", 236, 0, 17, 99 }, /*481*/ { 2, 31, "1", 237, ZINT_ERROR_TOO_LONG, -1, -1 }, /*482*/ { 2, 31, "A", 143, 0, 17, 99 }, /*483*/ { 2, 31, "A", 144, ZINT_ERROR_TOO_LONG, -1, -1 }, /*484*/ { 2, 31, "\200", 98, 0, 17, 99 }, /*485*/ { 2, 31, "\200", 99, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*486*/ { 2, 31, "\201", 120, 0, 17, 99 }, // 60 Shift JIS 0x8181 - /*487*/ { 2, 31, "\201", 122, ZINT_ERROR_TOO_LONG, -1, -1 }, // 61 Shift JIS 0x8181 + /*486*/ { 2, 31, "\201", 120, 0, 17, 99 }, /* 60 Shift JIS 0x8181 */ + /*487*/ { 2, 31, "\201", 122, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 61 Shift JIS 0x8181 */ /*488*/ { 4, 31, "1", 131, 0, 17, 99 }, /*489*/ { 4, 31, "1", 132, ZINT_ERROR_TOO_LONG, -1, -1 }, /*490*/ { 4, 31, "A", 79, 0, 17, 99 }, /*491*/ { 4, 31, "A", 80, ZINT_ERROR_TOO_LONG, -1, -1 }, /*492*/ { 4, 31, "\200", 54, 0, 17, 99 }, /*493*/ { 4, 31, "\200", 55, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*494*/ { 4, 31, "\201", 66, 0, 17, 99 }, // 33 Shift JIS 0x8181 - /*495*/ { 4, 31, "\201", 68, ZINT_ERROR_TOO_LONG, -1, -1 }, // 34 Shift JIS 0x8181 + /*494*/ { 4, 31, "\201", 66, 0, 17, 99 }, /* 33 Shift JIS 0x8181 */ + /*495*/ { 4, 31, "\201", 68, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 34 Shift JIS 0x8181 */ /*496*/ { 2, 32, "1", 361, 0, 17, 139 }, /*497*/ { 2, 32, "1", 362, ZINT_ERROR_TOO_LONG, -1, -1 }, /*498*/ { 2, 32, "A", 219, 0, 17, 139 }, /*499*/ { 2, 32, "A", 220, ZINT_ERROR_TOO_LONG, -1, -1 }, /*500*/ { 2, 32, "\200", 150, 0, 17, 139 }, /*501*/ { 2, 32, "\200", 151, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*502*/ { 2, 32, "\201", 184, 0, 17, 139 }, // 92 Shift JIS 0x8181 - /*503*/ { 2, 32, "\201", 186, ZINT_ERROR_TOO_LONG, -1, -1 }, // 93 Shift JIS 0x8181 + /*502*/ { 2, 32, "\201", 184, 0, 17, 139 }, /* 92 Shift JIS 0x8181 */ + /*503*/ { 2, 32, "\201", 186, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 93 Shift JIS 0x8181 */ /*504*/ { 4, 32, "1", 178, 0, 17, 139 }, /*505*/ { 4, 32, "1", 179, ZINT_ERROR_TOO_LONG, -1, -1 }, /*506*/ { 4, 32, "A", 108, 0, 17, 139 }, /*507*/ { 4, 32, "A", 109, ZINT_ERROR_TOO_LONG, -1, -1 }, /*508*/ { 4, 32, "\200", 74, 0, 17, 139 }, /*509*/ { 4, 32, "\200", 75, ZINT_ERROR_TOO_LONG, -1, -1 }, - /*510*/ { 4, 32, "\201", 92, 0, 17, 139 }, // 46 Shift JIS 0x8181 - /*511*/ { 4, 32, "\201", 94, ZINT_ERROR_TOO_LONG, -1, -1 }, // 47 Shift JIS 0x8181 + /*510*/ { 4, 32, "\201", 92, 0, 17, 139 }, /* 46 Shift JIS 0x8181 */ + /*511*/ { 4, 32, "\201", 94, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 47 Shift JIS 0x8181 */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -6453,77 +7184,77 @@ static void test_rmqr_options(int index, int debug) { int expected_rows; int expected_width; }; - // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { -1, -1, "12345", 0, 0, 11, 27 }, // ECC auto-set to H, version auto-set to 11 (R11x27) + /* 0*/ { -1, -1, "12345", 0, 0, 11, 27 }, /* ECC auto-set to H, version auto-set to 11 (R11x27) */ /* 1*/ { 4, 11, "12345", 0, 0, 11, 27 }, - /* 2*/ { 1, -1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, 0 }, // ECC L not available - /* 3*/ { 3, -1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, 0 }, // ECC Q not available - /* 4*/ { 4, 11, "123456789", 0, 0, 11, 27 }, // Max capacity ECC H, version 11, 9 numbers + /* 2*/ { 1, -1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, 0 }, /* ECC L not available */ + /* 3*/ { 3, -1, "12345", ZINT_ERROR_INVALID_OPTION, -1, 0, 0 }, /* ECC Q not available */ + /* 4*/ { 4, 11, "123456789", 0, 0, 11, 27 }, /* Max capacity ECC H, version 11, 9 numbers */ /* 5*/ { 4, 11, "1234567890", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 6*/ { 2, 11, "12345678901234", 0, 0, 11, 27 }, // Max capacity ECC M, version 11, 14 numbers + /* 6*/ { 2, 11, "12345678901234", 0, 0, 11, 27 }, /* Max capacity ECC M, version 11, 14 numbers */ /* 7*/ { 2, 11, "123456789012345", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 8*/ { 4, 11, "ABCDEF", 0, 0, 11, 27 }, // Max capacity ECC H, version 11, 6 letters + /* 8*/ { 4, 11, "ABCDEF", 0, 0, 11, 27 }, /* Max capacity ECC H, version 11, 6 letters */ /* 9*/ { 4, 11, "ABCDEFG", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 10*/ { 2, 11, "ABCDEFGH", 0, 0, 11, 27 }, // Max capacity ECC M, version 11, 8 letters + /* 10*/ { 2, 11, "ABCDEFGH", 0, 0, 11, 27 }, /* Max capacity ECC M, version 11, 8 letters */ /* 11*/ { 2, 11, "ABCDEFGHI", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 12*/ { 4, 11, "\177\177\177\177", 0, 0, 11, 27 }, // Max capacity ECC H, version 11, 4 bytes + /* 12*/ { 4, 11, "\177\177\177\177", 0, 0, 11, 27 }, /* Max capacity ECC H, version 11, 4 bytes */ /* 13*/ { 4, 11, "\177\177\177\177\177", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 14*/ { 2, 11, "\177\177\177\177\177\177", 0, 0, 11, 27 }, // Max capacity ECC M, version 11, 6 bytes + /* 14*/ { 2, 11, "\177\177\177\177\177\177", 0, 0, 11, 27 }, /* Max capacity ECC M, version 11, 6 bytes */ /* 15*/ { 2, 11, "\177\177\177\177\177\177\177", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 16*/ { 4, 11, "点茗", ZINT_WARN_NONCOMPLIANT, 0, 11, 27 }, // Max capacity ECC H, version 11, 2 kanji + /* 16*/ { 4, 11, "点茗", ZINT_WARN_NONCOMPLIANT, 0, 11, 27 }, /* Max capacity ECC H, version 11, 2 kanji */ /* 17*/ { 4, 11, "点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 18*/ { 2, 11, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 27 }, // Max capacity ECC M, version 11, 3 kanji + /* 18*/ { 2, 11, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 27 }, /* Max capacity ECC M, version 11, 3 kanji */ /* 19*/ { 2, 11, "点茗点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 20*/ { -1, 1, "12345", 0, 0, 7, 43 }, // ECC auto-set to M, version 1 (R7x43) + /* 20*/ { -1, 1, "12345", 0, 0, 7, 43 }, /* ECC auto-set to M, version 1 (R7x43) */ /* 21*/ { 2, 1, "12345", 0, 0, 7, 43 }, - /* 22*/ { 4, 1, "12345", 0, 0, 7, 43 }, // Max capacity ECC H, version 1, 5 numbers + /* 22*/ { 4, 1, "12345", 0, 0, 7, 43 }, /* Max capacity ECC H, version 1, 5 numbers */ /* 23*/ { 4, 1, "123456", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 24*/ { 2, 1, "123456789012", 0, 0, 7, 43 }, // Max capacity ECC M, version 1, 12 numbers + /* 24*/ { 2, 1, "123456789012", 0, 0, 7, 43 }, /* Max capacity ECC M, version 1, 12 numbers */ /* 25*/ { 2, 1, "1234567890123", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 26*/ { 4, 1, "ABC", 0, 0, 7, 43 }, // Max capacity ECC H, version 1, 3 letters + /* 26*/ { 4, 1, "ABC", 0, 0, 7, 43 }, /* Max capacity ECC H, version 1, 3 letters */ /* 27*/ { 4, 1, "ABCD", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 28*/ { 2, 1, "ABCDEFG", 0, 0, 7, 43 }, // Max capacity ECC M, version 1, 7 letters + /* 28*/ { 2, 1, "ABCDEFG", 0, 0, 7, 43 }, /* Max capacity ECC M, version 1, 7 letters */ /* 29*/ { 2, 1, "ABCDEFGH", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 30*/ { 4, 1, "\177\177", 0, 0, 7, 43 }, // Max capacity ECC H, version 1, 2 bytes + /* 30*/ { 4, 1, "\177\177", 0, 0, 7, 43 }, /* Max capacity ECC H, version 1, 2 bytes */ /* 31*/ { 4, 1, "\177\177\177", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 32*/ { 2, 1, "\177\177\177\177\177", 0, 0, 7, 43 }, // Max capacity ECC M, version 1, 5 bytes + /* 32*/ { 2, 1, "\177\177\177\177\177", 0, 0, 7, 43 }, /* Max capacity ECC M, version 1, 5 bytes */ /* 33*/ { 2, 1, "\177\177\177\177\177\177", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 34*/ { 4, 1, "点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43 }, // Max capacity ECC H, version 1, 1 kanji + /* 34*/ { 4, 1, "点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43 }, /* Max capacity ECC H, version 1, 1 kanji */ /* 35*/ { 4, 1, "点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 36*/ { 2, 1, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43 }, // Max capacity ECC M, version 1, 3 kanji + /* 36*/ { 2, 1, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43 }, /* Max capacity ECC M, version 1, 3 kanji */ /* 37*/ { 2, 1, "点茗点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 38*/ { 4, 7, "12345678901234567890123", 0, 0, 9, 59 }, // Max capacity ECC H, version 7 (R9x59), 23 numbers + /* 38*/ { 4, 7, "12345678901234567890123", 0, 0, 9, 59 }, /* Max capacity ECC H, version 7 (R9x59), 23 numbers */ /* 39*/ { 4, 7, "123456789012345678901234", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 40*/ { 4, 7, "点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 9, 59 }, // Max capacity ECC H, version 7, 6 kanji + /* 40*/ { 4, 7, "点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 9, 59 }, /* Max capacity ECC H, version 7, 6 kanji */ /* 41*/ { 4, 7, "点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 42*/ { 4, 13, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 11, 59 }, // Max capacity ECC H, version 13 (R11x59), 8 kanji + /* 42*/ { 4, 13, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 11, 59 }, /* Max capacity ECC H, version 13 (R11x59), 8 kanji */ /* 43*/ { 4, 13, "点茗点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 44*/ { 4, 20, "点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 13, 77 }, // Max capacity ECC H, version 20 (R13x77), 17 kanji + /* 44*/ { 4, 20, "点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 13, 77 }, /* Max capacity ECC H, version 20 (R13x77), 17 kanji */ /* 45*/ { 4, 20, "点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 46*/ { 4, 26, "点茗点茗点茗点茗点茗点茗点茗点茗点点茗点茗点茗点点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 15, 99 }, // Max capacity ECC H, version 26 (R15x99), 28 kanji + /* 46*/ { 4, 26, "点茗点茗点茗点茗点茗点茗点茗点茗点点茗点茗点茗点点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 15, 99 }, /* Max capacity ECC H, version 26 (R15x99), 28 kanji */ /* 47*/ { 4, 26, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 48*/ { 4, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139 }, // Max capacity ECC H, version 32 (R17x139), 46 kanji + /* 48*/ { 4, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139 }, /* Max capacity ECC H, version 32 (R17x139), 46 kanji */ /* 49*/ { 4, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 50*/ { -1, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139 }, // Max capacity ECC M, version 32, 92 kanji + /* 50*/ { -1, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139 }, /* Max capacity ECC M, version 32, 92 kanji */ /* 51*/ { 4, 32, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_ERROR_TOO_LONG, -1, 0, 0 }, - /* 52*/ { -1, 33, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43 }, // ECC auto-set to M, version 33 (R7xAuto-width) auto-sets R7x43 - /* 53*/ { 4, 33, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 59 }, // ECC set to H, version 33 (R7xAuto-width) auto-sets R7x59 - /* 54*/ { -1, 34, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 9, 43 }, // ECC auto-set to H, version 34 (R9xAuto-width) auto-sets R9x43 - /* 55*/ { -1, 35, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 27 }, // ECC auto-set to M, version 35 (R11xAuto-width) auto-sets R11x27 - /* 56*/ { 4, 35, "点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 59 }, // ECC set to H, version 35 (R11xAuto-width) auto-sets R11x59 - /* 57*/ { -1, 35, "点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 43 }, // ECC auto-set to M, version 35 (R11xAuto-width) auto-sets R11x43 - /* 58*/ { -1, 36, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 13, 43 }, // ECC auto-set to M, version 36 (R13xAuto-width) auto-sets R13x43 - /* 59*/ { 4, 36, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 13, 59 }, // ECC set to H, version 36 (R13xAuto-width) auto-sets R13x59 - /* 60*/ { -1, 37, "点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 15, 43 }, // ECC auto-set to M, version 37 (R15xAuto-width) auto-sets R15x43 - /* 61*/ { 4, 37, "点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 15, 59 }, // ECC set to H, version 37 (R15xAuto-width) auto-sets R15x59 - /* 62*/ { -1, 38, "点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 43 }, // ECC auto-set to M, version 38 (R17xAuto-width) auto-sets R17x43 - /* 63*/ { 4, 38, "点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 77 }, // ECC set to H, version 38 (R17xAuto-width) auto-sets R17x77 + /* 52*/ { -1, 33, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 43 }, /* ECC auto-set to M, version 33 (R7xAuto-width) auto-sets R7x43 */ + /* 53*/ { 4, 33, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 7, 59 }, /* ECC set to H, version 33 (R7xAuto-width) auto-sets R7x59 */ + /* 54*/ { -1, 34, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 9, 43 }, /* ECC auto-set to H, version 34 (R9xAuto-width) auto-sets R9x43 */ + /* 55*/ { -1, 35, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 27 }, /* ECC auto-set to M, version 35 (R11xAuto-width) auto-sets R11x27 */ + /* 56*/ { 4, 35, "点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 59 }, /* ECC set to H, version 35 (R11xAuto-width) auto-sets R11x59 */ + /* 57*/ { -1, 35, "点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 11, 43 }, /* ECC auto-set to M, version 35 (R11xAuto-width) auto-sets R11x43 */ + /* 58*/ { -1, 36, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 13, 43 }, /* ECC auto-set to M, version 36 (R13xAuto-width) auto-sets R13x43 */ + /* 59*/ { 4, 36, "点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 13, 59 }, /* ECC set to H, version 36 (R13xAuto-width) auto-sets R13x59 */ + /* 60*/ { -1, 37, "点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 15, 43 }, /* ECC auto-set to M, version 37 (R15xAuto-width) auto-sets R15x43 */ + /* 61*/ { 4, 37, "点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 15, 59 }, /* ECC set to H, version 37 (R15xAuto-width) auto-sets R15x59 */ + /* 62*/ { -1, 38, "点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 43 }, /* ECC auto-set to M, version 38 (R17xAuto-width) auto-sets R17x43 */ + /* 63*/ { 4, 38, "点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 77 }, /* ECC set to H, version 38 (R17xAuto-width) auto-sets R17x77 */ /* 64*/ { -1, 39, "点茗点", ZINT_ERROR_INVALID_OPTION, -1, 0, 0 }, - /* 65*/ { 4, -1, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 13, 27 }, // ECC set to H, auto-sets R13x27 - /* 66*/ { 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 15, 99 }, // ECC set to H, auto-sets R15x99 (max capacity) - /* 67*/ { 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 17, 99 }, // ECC set to H, auto-sets R17x99 - /* 68*/ { 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139 }, // ECC set to H, auto-sets R17x139 (max capacity) + /* 65*/ { 4, -1, "点茗点", ZINT_WARN_NONCOMPLIANT, 0, 13, 27 }, /* ECC set to H, auto-sets R13x27 */ + /* 66*/ { 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 15, 99 }, /* ECC set to H, auto-sets R15x99 (max capacity) */ + /* 67*/ { 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点", ZINT_WARN_NONCOMPLIANT, 0, 17, 99 }, /* ECC set to H, auto-sets R17x99 */ + /* 68*/ { 4, -1, "点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗点茗", ZINT_WARN_NONCOMPLIANT, 0, 17, 139 }, /* ECC set to H, auto-sets R17x139 (max capacity) */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -6572,7 +7303,7 @@ static void test_rmqr_input(int index, int generate, int debug) { int bwipp_cmp; char *comment; }; - // See test_qr_input() for details about test characters + /* See test_qr_input() for details about test characters */ struct item data[] = { /* 0*/ { UNICODE_MODE, 0, 4, 11, -1, "é", 0, 0, "67 A4 00 EC 11", 1, "B1 (ISO 8859-1)" }, /* 1*/ { UNICODE_MODE, 3, 4, 11, -1, "é", 0, 3, "E0 6C F4 80 EC", 1, "ECI-3 B1 (ISO 8859-1)" }, @@ -6689,7 +7420,7 @@ static void test_rmqr_input(int index, int generate, int debug) { /*112*/ { UNICODE_MODE, 900, 2, 11, -1, "é", 0, 900, "F0 70 8D 61 D4 80 EC", 1, "ECI-900 B2 (no conversion)" }, /*113*/ { UNICODE_MODE, 16384, 2, 11, -1, "é", 0, 16384, "F8 08 00 0D 61 D4 80", 1, "ECI-16384 B2 (no conversion)" }, /*114*/ { UNICODE_MODE, 3, 2, 14, -1, "Google Pixel 4a 128 GB Black;price:$439.97", 0, 3, "(43) E0 6C F4 76 F6 F6 76 C6 52 05 06 97 86 56 C2 03 46 14 4E 55 0C 59 91 09 96 CA 6C 61", 0, "ECI-3 B15 A9 B10 A8; BWIPP different encodation (B42) & doesn't fit)" }, - /*115*/ { UNICODE_MODE, 29, 2, 20, -1, "Google 谷歌 Pixel 4a 128 GB黑色;零售价:¥3149.79", 0, 29, "(53) E3 AE 94 76 F6 F6 76 C6 52 0B 9C 8B 8E 82 05 06 97 86 56 C2 03 46 12 03 13 23 82 04", 0, "ECI-29 B41 A7; BWIPP different encodation (B48) & doesn't fit)" }, + /*115*/ { UNICODE_MODE, 29, 2, 20, -1, "Google 谷歌 Pixel 4a 128 GB黑色;零售价:¥3149.79", 0, 29, "(53) E3 AE 94 76 F6 F6 76 C6 52 0B 9C 8B 8E 82 05 06 97 86 56 C2 03 46 12 03 13 23 82 04", 1, "ECI-29 B41 A7" }, /*116*/ { UNICODE_MODE, 17, 2, 24, -1, "Google Pixel 4a 128 GB Schwarz;Preis:444,90 €", 0, 17, "(48) E2 2C F4 76 F6 F6 76 C6 52 05 06 97 86 56 C2 03 46 14 27 2A 86 2C C8 84 DC 6A B1 B4", 0, "ECI-17 B15 A9 B21; BWIPP different encodation (B46)" }, }; int data_size = ARRAY_SIZE(data); @@ -6700,7 +7431,7 @@ static void test_rmqr_input(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ testStart("test_rmqr_input"); @@ -6711,7 +7442,7 @@ static void test_rmqr_input(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, data[i].eci, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, data[i].data, -1, debug); @@ -6794,7 +7525,7 @@ static void test_rmqr_gs1(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, -1, -1, -1 /*output_options*/, data[i].data, -1, debug); @@ -6842,7 +7573,7 @@ static void test_rmqr_optimize(int index, int generate, int debug) { /* 12*/ { UNICODE_MODE, 2, 24, "THE SQUARE ROOT OF 2 IS 1.41421356237309504880168872420969807856967187537694807317667973799", 0, "(48) 46 A9 52 9A A0 D5 42 66 E6 F8 A1 4F 62 3E 56 CC D4 40 2B 98 2C F1 AB 19 2E A2 F8 61", 1, " A26 N65 (nayuki.io - alpha/numeric)" }, /* 13*/ { UNICODE_MODE, 2, 21, "Golden ratio φ = 1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374......", ZINT_WARN_NONCOMPLIANT, "Warning (73) 65 11 DB DB 19 19 5B 88 1C 98 5D 1A 5B C8 20 F4 C8 0F 48 0C 4B 8B 24 D4 10 FB 97 6E", 1, "B20 N100 A6 (nayuki.io - alpha/numeric/byte)" }, /* 14*/ { UNICODE_MODE, 2, 18, "こんにちwa、世界! αβγδ", ZINT_WARN_NONCOMPLIANT, "Warning 84 09 88 5C 42 92 13 F6 B7 76 18 14 19 0A 28 A4 58 14 92 08 40 FF 88 00 40 22 02", 1, "K4 B7 K4 (nayuki.io - kanji/european)" }, - /* 15*/ { UNICODE_MODE, 2, 32, "6547861663com.acme35584af52fa3-88d0-093b-6c14-b37ddafb59c528908608sg.com.dash.www05303790265903SG.COM.NETS46967004B2AE13344004SG.SGQR209710339382.6359SG8236HELLO FOO2517Singapore3272B815", 0, "(152) 20 AA 3B 12 29 8D 97 B1 B7 B6 97 30 B1 B6 B2 99 9A 9A 9C 1A 30 B3 1A 99 33 30 99 96", 0, "N10 B47 N9 B15 N14 A38 N12 A25 B8 A8 (nayuki.io - SGQR alpha/numeric/byte); BWIPP different encodation (N10 B47 N9 B15 N14 A38 N12 A25 B13 A3) & doesn't fit" }, + /* 15*/ { UNICODE_MODE, 2, 32, "6547861663com.acme35584af52fa3-88d0-093b-6c14-b37ddafb59c528908608sg.com.dash.www05303790265903SG.COM.NETS46967004B2AE13344004SG.SGQR209710339382.6359SG8236HELLO FOO2517Singapore3272B815", 0, "(152) 20 AA 3B 12 29 8D 97 B1 B7 B6 97 30 B1 B6 B2 99 9A 9A 9C 1A 30 B3 1A 99 33 30 99 96", 1, "N10 B47 N9 B15 N14 A38 N12 A25 B8 A8 (nayuki.io - SGQR alpha/numeric/byte)" }, /* 16*/ { UNICODE_MODE, 2, 27, "2004年大西洋颶風季是有以来造成人失惨重的大季之一,于2004年6月1日正式始,同年11月30日束,上的日期界定了一年中大多数气旋在大西洋形成的段lll ku", ZINT_WARN_NONCOMPLIANT, "Warning (127) 20 43 21 21 87 27 32 95 77 90 AD F0 33 D5 CF 0E BA 58 46 17 22 19 0C 62 5D 62 DB 14", 0, "N4 K24 N4 B6 K7 B6 K26 B6 (nayuki.io - kanji/byte/numeric, non-Shift JIS removed; BWIPP different encodation (N4 K24 N4 B26 K26 B6)" }, /* 17*/ { UNICODE_MODE, 2, 17, "AB1234567A", 0, "4A 39 A0 BC 45 8E 72 8A 00 EC 11 EC", 1, "A10" }, /* 18*/ { UNICODE_MODE, 2, 17, "AB12345678A", 0, "42 39 A5 03 DB 91 39 04 A0 EC 11 EC", 1, "A2 N8 A1" }, @@ -6858,7 +7589,7 @@ static void test_rmqr_optimize(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ testStart("test_rmqr_optimize"); @@ -6869,7 +7600,7 @@ static void test_rmqr_optimize(int index, int generate, int debug) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - debug |= ZINT_DEBUG_TEST; // Needed to get codeword dump in errtxt + debug |= ZINT_DEBUG_TEST; /* Needed to get codeword dump in errtxt */ length = testUtilSetSymbol(symbol, BARCODE_RMQR, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, ZINT_FULL_MULTIBYTE, -1 /*output_options*/, data[i].data, -1, debug); @@ -6921,7 +7652,7 @@ static void test_rmqr_encode(int index, int generate, int debug) { char *comment; char *expected; }; - // ISO/IEC 23941:2022 + /* ISO/IEC 23941:2022 */ struct item data[] = { /* 0*/ { UNICODE_MODE, 4, 11, "0123456", 0, 11, 27, 1, "ISO 23941 Annex I Figure I.2, R11x27-H, same", "111111101010101010101010111" @@ -7298,7 +8029,7 @@ static void test_rmqr_encode(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ testStart("test_rmqr_encode"); @@ -7466,8 +8197,8 @@ static void test_rmqr_encode_segs(int index, int generate, int debug) { char cmp_buf[32768]; char cmp_msg[1024]; - int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); // Only do BWIPP test if asked, too slow otherwise - int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); // Only do ZXing-C++ test if asked, too slow otherwise + int do_bwipp = (debug & ZINT_DEBUG_TEST_BWIPP) && testUtilHaveGhostscript(); /* Only do BWIPP test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); /* Only do ZXing-C++ test if asked, too slow otherwise */ testStart("test_rmqr_encode_segs"); diff --git a/backend/tests/test_svg.c b/backend/tests/test_svg.c index 683f20a7..802877b7 100644 --- a/backend/tests/test_svg.c +++ b/backend/tests/test_svg.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2020 - 2021 Robin Stuart + Copyright (C) 2020-2022 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -27,7 +27,7 @@ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* vim: set ts=4 sw=4 et : */ +/* SPDX-License-Identifier: BSD-3-Clause */ #include "testcommon.h" #include @@ -44,6 +44,7 @@ static void test_print(int index, int generate, int debug) { int show_hrt; int option_1; int option_2; + int option_3; float height; char *fgcolour; char *bgcolour; @@ -54,56 +55,58 @@ static void test_print(int index, int generate, int debug) { char *expected_file; }; struct item data[] = { - /* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "<>\"&'", "", 0, "code128_amperands.svg" }, - /* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold.svg" }, - /* 2*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_box3.svg" }, - /* 3*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp2_box2.svg" }, - /* 4*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, 3, 3, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp3.svg" }, - /* 5*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, 0, "", "", 0, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, "gs1_128_cc_fig12.svg" }, - /* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_3rows.svg" }, - /* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.svg" }, - /* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.svg" }, - /* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.svg" }, - /* 10*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.svg" }, - /* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.svg" }, - /* 12*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.svg" }, - /* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.svg" }, - /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.svg" }, - /* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.svg" }, - /* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.svg" }, - /* 17*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_small_bold.svg" }, - /* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.svg" }, - /* 19*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.svg" }, - /* 20*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.svg" }, - /* 21*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.svg" }, - /* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "upce_2addon.svg" }, - /* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon.svg" }, - /* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.svg" }, - /* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_notext.svg" }, - /* 26*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.svg" }, - /* 27*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "FF0000EE", "0000FF11", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_fgbgalpha.svg" }, - /* 28*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "FFFFFF00", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_nobg.svg" }, - /* 29*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 270, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_rotate_270.svg" }, - /* 30*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.svg" }, - /* 31*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.svg" }, - /* 32*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "ean8_2addon.svg" }, - /* 33*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.svg" }, - /* 34*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.svg" }, - /* 35*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.svg" }, - /* 36*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "ean5.svg" }, - /* 37*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12", "", 0, "ean2.svg" }, - /* 38*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, "", "", 0, "123", "", 0, "code39_small.svg" }, - /* 39*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "postnet_zip.svg" }, - /* 40*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_box2.svg" }, - /* 41*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.svg" }, - /* 42*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, "121212DD", "EEEEEE22", 90, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_fgbg_rotate_90.svg" }, - /* 43*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_vwsp1_bind1_dotty.svg" }, - /* 44*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_hvwsp1_bind1_dotty.svg" }, - /* 45*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345678909", "", 0, "dbar_ltd.svg" }, - /* 46*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.svg" }, - /* 47*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.svg" }, - /* 48*/ { BARCODE_ULTRA, -1, 3, BARCODE_BOX, 2, 2, -1, -1, -1, 0, "FF0000", "0000FF", 0, "12345678901234567890", "", 0, "ultra_fgbg_hvwsp2_box3.svg" }, - /* 49*/ { BARCODE_TELEPEN, -1, -1, -1, -1, -1, -1, -1, -1, 0.4, "", "", 180, "A", "", 0, "telepen_height0.4_rotate_180.svg" }, + /* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "<>\"&'", "", 0, "code128_amperands.svg" }, + /* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold.svg" }, + /* 2*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_box3.svg" }, + /* 3*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp2_box2.svg" }, + /* 4*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, 3, 3, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp3.svg" }, + /* 5*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, -1, 0, "", "", 0, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, "gs1_128_cc_fig12.svg" }, + /* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_3rows.svg" }, + /* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.svg" }, + /* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.svg" }, + /* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.svg" }, + /* 10*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.svg" }, + /* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.svg" }, + /* 12*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.svg" }, + /* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.svg" }, + /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.svg" }, + /* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.svg" }, + /* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.svg" }, + /* 17*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_small_bold.svg" }, + /* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.svg" }, + /* 19*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.svg" }, + /* 20*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.svg" }, + /* 21*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.svg" }, + /* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "upce_2addon.svg" }, + /* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon.svg" }, + /* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.svg" }, + /* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_notext.svg" }, + /* 26*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.svg" }, + /* 27*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "FF0000EE", "0000FF11", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_fgbgalpha.svg" }, + /* 28*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "FFFFFF00", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_nobg.svg" }, + /* 29*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 270, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_rotate_270.svg" }, + /* 30*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.svg" }, + /* 31*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.svg" }, + /* 32*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "ean8_2addon.svg" }, + /* 33*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.svg" }, + /* 34*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.svg" }, + /* 35*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.svg" }, + /* 36*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "ean5.svg" }, + /* 37*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12", "", 0, "ean2.svg" }, + /* 38*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "123", "", 0, "code39_small.svg" }, + /* 39*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "postnet_zip.svg" }, + /* 40*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_box2.svg" }, + /* 41*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.svg" }, + /* 42*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "121212DD", "EEEEEE22", 90, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_fgbg_rotate_90.svg" }, + /* 43*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_vwsp1_bind1_dotty.svg" }, + /* 44*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_hvwsp1_bind1_dotty.svg" }, + /* 45*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345678909", "", 0, "dbar_ltd.svg" }, + /* 46*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.svg" }, + /* 47*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.svg" }, + /* 48*/ { BARCODE_ULTRA, -1, 3, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "FF0000", "0000FF", 0, "12345678901234567890", "", 0, "ultra_fgbg_hvwsp2_box3.svg" }, + /* 49*/ { BARCODE_TELEPEN, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.4, "", "", 180, "A", "", 0, "telepen_height0.4_rotate_180.svg" }, + /* 50*/ { BARCODE_CODE49, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "FF11157F", "", 0, "A", "", 0, "code49_comph_fgalpha.svg" }, + /* 51*/ { BARCODE_CODABLOCKF, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 2, 0, "00000033", "FFFFFF66", 0, "1234567890123456789012345678901234", "", 0, "codablockf_comph_sep2_fgbgalpha.svg" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -138,12 +141,12 @@ static void test_print(int index, int generate, int debug) { int text_length; if (index != -1 && i != index) continue; - if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i); // ZINT_DEBUG_TEST_PRINT 16 + if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i); /* ZINT_DEBUG_TEST_PRINT 16 */ symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug); + length = testUtilSetSymbol(symbol, data[i].symbology, data[i].input_mode, -1 /*eci*/, data[i].option_1, data[i].option_2, data[i].option_3, data[i].output_options, data[i].data, -1, debug); if (data[i].show_hrt != -1) { symbol->show_hrt = data[i].show_hrt; } @@ -184,10 +187,10 @@ static void test_print(int index, int generate, int debug) { assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i); if (generate) { - printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %.8g, \"%s\", \"%s\", %d, \"%s\", \"%s\", \"%s\" },\n", + printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %d, %.8g, \"%s\", \"%s\", %d, \"%s\", \"%s\", \"%s\" },\n", i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].border_width, testUtilOutputOptionsName(data[i].output_options), data[i].whitespace_width, data[i].whitespace_height, data[i].show_hrt, - data[i].option_1, data[i].option_2, data[i].height, data[i].fgcolour, data[i].bgcolour, data[i].rotate_angle, + data[i].option_1, data[i].option_2, data[i].option_3, data[i].height, data[i].fgcolour, data[i].bgcolour, data[i].rotate_angle, testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].expected_file); ret = testUtilRename(symbol->outfile, expected_file); assert_zero(ret, "i:%d testUtilRename(%s, %s) ret %d != 0\n", i, symbol->outfile, expected_file, ret); @@ -196,7 +199,7 @@ static void test_print(int index, int generate, int debug) { assert_zero(ret, "i:%d %s libreoffice %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), expected_file, ret); } if (have_vnu) { - ret = testUtilVerifyVnu(expected_file, debug); // Very slow + ret = testUtilVerifyVnu(expected_file, debug); /* Very slow */ assert_zero(ret, "i:%d %s vnu libreoffice %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), expected_file, ret); } } else { @@ -257,3 +260,5 @@ int main(int argc, char *argv[]) { return 0; } + +/* vim: set ts=4 sw=4 et : */ diff --git a/backend/tests/test_vector.c b/backend/tests/test_vector.c index 46346bf4..ff4ea4b2 100644 --- a/backend/tests/test_vector.c +++ b/backend/tests/test_vector.c @@ -1167,12 +1167,12 @@ static void test_quiet_zones(int index, int debug) { /* 48*/ { BARCODE_DPLEIT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 135, 310, 118.9, 20, 0, 2, 100 }, /* 49*/ { BARCODE_DPIDENT, -1, -1, -1, "1234", 0, 50, 1, 117, 234, 118.9, 0, 0, 2, 100 }, /* 50*/ { BARCODE_DPIDENT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 117, 274, 118.9, 20, 0, 2, 100 }, - /* 51*/ { BARCODE_CODE16K, -1, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 6, 20 }, - /* 52*/ { BARCODE_CODE16K, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 6, 20 }, - /* 53*/ { BARCODE_CODE16K, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 140, 44, 0, 2, 6, 20 }, - /* 54*/ { BARCODE_CODE49, -1, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 2, 40 }, - /* 55*/ { BARCODE_CODE49, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 2, 40 }, - /* 56*/ { BARCODE_CODE49, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 140, 44, 0, 2, 2, 40 }, + /* 51*/ { BARCODE_CODE16K, -1, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 6, 19 }, + /* 52*/ { BARCODE_CODE16K, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 6, 19 }, + /* 53*/ { BARCODE_CODE16K, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 140, 44, 0, 2, 6, 19 }, + /* 54*/ { BARCODE_CODE49, -1, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 2, 19 }, + /* 55*/ { BARCODE_CODE49, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 162, 44, 20, 2, 2, 19 }, + /* 56*/ { BARCODE_CODE49, BARCODE_NO_QUIET_ZONES, -1, -1, "1234", 0, 20, 2, 70, 140, 44, 0, 2, 2, 19 }, /* 57*/ { BARCODE_CODE93, -1, -1, -1, "1234", 0, 50, 1, 73, 146, 118.9, 0, 0, 2, 100 }, /* 58*/ { BARCODE_CODE93, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 73, 186, 118.9, 20, 0, 2, 100 }, /* 59*/ { BARCODE_FLAT, -1, -1, -1, "1234", 0, 50, 1, 36, 72, 100, 0, 0, 2, 100 }, diff --git a/backend/tests/tools/bwipp_dump-barcode.ps.diff b/backend/tests/tools/bwipp_dump-barcode.ps.diff index 84dfbe2e..517c9e8f 100644 --- a/backend/tests/tools/bwipp_dump-barcode.ps.diff +++ b/backend/tests/tools/bwipp_dump-barcode.ps.diff @@ -1,6 +1,6 @@ ---- /home/mburke/code/gitlost/postscriptbarcode/build/monolithic/barcode.ps 2022-07-25 02:58:57.291864362 +0100 -+++ backend/tests/tools/bwipp_dump.ps 2022-07-25 03:00:12.937844813 +0100 -@@ -16909,8 +16909,8 @@ +--- /home/mburke/code/gitlost/postscriptbarcode/build/monolithic/barcode.ps 2022-08-07 21:25:25.243853138 +0100 ++++ backend/tests/tools/bwipp_dump.ps 2022-08-07 21:28:28.580645899 +0100 +@@ -16846,8 +16846,8 @@ } bind /fime { /sbs [2.25 6.75 2.25 15.75 2.25 6.75 2.25] def @@ -11,7 +11,7 @@ } bind >> def -@@ -28403,7 +28403,7 @@ +@@ -28303,7 +28303,7 @@ pop } ifelse @@ -20,8 +20,8 @@ options (lintype) (ean13) put options (inkspread) (0) put -@@ -28443,27 +28443,73 @@ - } if +@@ -28317,27 +28317,73 @@ + /ai //gs1process exec pop pop pop % Plot the linear part - linear options //ean13 exec //renlinear exec @@ -112,7 +112,7 @@ end -@@ -28528,7 +28574,7 @@ +@@ -28401,7 +28447,7 @@ pop } ifelse @@ -121,8 +121,8 @@ % Get the result of encoding with ean8 and gs1-cc options (lintype) (ean8) put -@@ -28569,29 +28615,75 @@ - } if +@@ -28416,29 +28462,75 @@ + /ai //gs1process exec pop pop pop % Plot the linear part - linear options //ean8 exec //renlinear exec @@ -217,7 +217,7 @@ end -@@ -28656,7 +28748,7 @@ +@@ -28502,7 +28594,7 @@ pop } ifelse @@ -226,8 +226,8 @@ options (lintype) (ean13) put options (inkspread) (0) put -@@ -28696,27 +28788,73 @@ - } if +@@ -28516,27 +28608,73 @@ + /ai //gs1process exec pop pop pop % Plot the linear part - linear options //upca exec //renlinear exec @@ -318,7 +318,7 @@ end -@@ -28796,7 +28934,7 @@ +@@ -28615,7 +28753,7 @@ /opt options >> def @@ -327,8 +327,8 @@ options (lintype) (upce) put options (inkspread) (0) put -@@ -28836,27 +28974,73 @@ - } if +@@ -28629,27 +28767,73 @@ + /ai //gs1process exec pop pop pop % Plot the linear part - linear options //upce exec //renlinear exec @@ -419,7 +419,7 @@ end -@@ -28921,7 +29105,7 @@ +@@ -28713,7 +28897,7 @@ pop } ifelse @@ -428,7 +428,7 @@ options (lintype) (databaromni) put options (linkage) true put -@@ -28965,7 +29149,7 @@ +@@ -28731,7 +28915,7 @@ linear options //databaromni exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -437,7 +437,7 @@ % Plot the separator /sepfinder { -@@ -28996,20 +29180,66 @@ +@@ -28762,20 +28946,66 @@ sep 0 [0 0 0] putinterval sep sep length 4 sub [0 0 0 0] putinterval 18 sepfinder 64 sepfinder @@ -516,7 +516,7 @@ end -@@ -29073,7 +29303,7 @@ +@@ -28838,7 +29068,7 @@ pop } ifelse @@ -525,7 +525,7 @@ options (lintype) (databarstacked) put options (linkage) true put -@@ -29117,7 +29347,7 @@ +@@ -28856,7 +29086,7 @@ linear options //databarstacked exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -534,7 +534,7 @@ % Plot the separator /sepfinder { -@@ -29145,20 +29375,52 @@ +@@ -28884,20 +29114,52 @@ sep 0 [ 0 0 0 0 ] putinterval sep sep length 4 sub [ 0 0 0 0 ] putinterval 18 sepfinder @@ -599,7 +599,7 @@ end -@@ -29222,7 +29484,7 @@ +@@ -28960,7 +29222,7 @@ pop } ifelse @@ -608,7 +608,7 @@ options (lintype) (databarstackedomni) put options (linkage) true put -@@ -29266,7 +29528,7 @@ +@@ -28978,7 +29240,7 @@ linear options //databarstackedomni exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -617,7 +617,7 @@ % Plot the separator /sepfinder { -@@ -29294,20 +29556,52 @@ +@@ -29006,20 +29268,52 @@ sep 0 [ 0 0 0 0 ] putinterval sep sep length 4 sub [ 0 0 0 0 ] putinterval 18 sepfinder @@ -682,7 +682,7 @@ end -@@ -29525,7 +29819,7 @@ +@@ -29209,7 +29503,7 @@ pop } ifelse @@ -691,7 +691,7 @@ options (lintype) (databarlimited) put options (linkage) true put -@@ -29569,7 +29863,7 @@ +@@ -29227,7 +29521,7 @@ linear options //databarlimited exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -700,7 +700,7 @@ % Plot the separator mark -@@ -29577,22 +29871,68 @@ +@@ -29235,22 +29529,68 @@ counttomark 1 sub array astore /sep exch def pop pop sep 0 [0 0 0] putinterval sep sep length 9 sub [0 0 0 0 0 0 0 0 0] putinterval % 4 + 5 right guard spaces @@ -783,7 +783,7 @@ end -@@ -29657,7 +29997,7 @@ +@@ -29314,7 +29654,7 @@ pop } ifelse @@ -792,7 +792,7 @@ options (lintype) (databarexpanded) put options (linkage) true put -@@ -29701,7 +30041,7 @@ +@@ -29332,7 +29672,7 @@ linear options //databarexpanded exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -801,7 +801,7 @@ % Plot the separator /sepfinder { -@@ -29730,20 +30070,60 @@ +@@ -29361,20 +29701,60 @@ 18 98 bot length 13 sub {} for 69 98 bot length 13 sub {} for ] {sepfinder} forall @@ -874,7 +874,7 @@ end -@@ -29807,7 +30187,7 @@ +@@ -29437,7 +29817,7 @@ pop } ifelse @@ -883,7 +883,7 @@ options (lintype) (databarexpandedstacked) put options (linkage) true put -@@ -29851,7 +30231,7 @@ +@@ -29455,7 +29835,7 @@ linear options //databarexpandedstacked exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -892,7 +892,7 @@ % Plot the separator /sepfinder { -@@ -29877,21 +30257,49 @@ +@@ -29481,21 +29861,49 @@ 19 98 bot length 13 sub {} for 70 98 bot length 13 sub {} for ] {sepfinder} forall @@ -955,7 +955,7 @@ end -@@ -29956,7 +30364,7 @@ +@@ -29559,7 +29967,7 @@ pop } ifelse @@ -964,7 +964,7 @@ options (inkspread) (0) put options (dontdraw) true put -@@ -30016,35 +30424,87 @@ +@@ -29593,35 +30001,87 @@ linear << options {} forall >> //gs1-128 exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -1066,7 +1066,7 @@ end -@@ -31752,3 +32212,189 @@ +@@ -31105,3 +31565,189 @@ % --END ENCODER hibcazteccode-- % --END TEMPLATE-- diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index 3cba911d1831dfde5e0245f45e550a7dee649c3d..6bf2129ed2d41a254fe567d846ff176da29d5701 100644 GIT binary patch literal 129012 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 UO(q7q!(BO|jS z(7ycaXCQzC?^>p+GrjjFvPVNz( zR?FGktf(2!5ah_)i&;2#(kBN$q>MUyGh`cQ7gD6=AKr zc`Ys6>r@yf1oh+9A8S;UZpr20qs*QY)jW9x#MJ`iE6Toy{iN0lcF$wudOyScK3#~D0bHWx#0gRoHc_= z$4=9FbF^3$k2vjx#@SnGo~&xC{e))(JK|Q<8s%jJiO!&1mVcsyzRgc>&PR9JQ7X3s4szwQOez zs^sJnBKWCp3m*7-`Xnv)i@Q0Wl6D*x&m2twuxy08ZIPZ{1@un0hB^F;$*b7C z6OEO)j&vb@kU_I@Zhq&)vI@maAt&3i2~uLiJ#gfC8wyy*Z-Snby+X_eVB77ZWfH+O zz&NVG?;2ZX3_NzyvC)&l;$bAf*jj9Epw#$t9%(i;m+HIuIh0tvNoLX+SZzlAP-p;&)@ahaD{#$-%~Crv;4EmwEGg&iD0rGivS2*DL0D=j)BCT*{$ z2S&%OSU)P^mNgZLZ{4XtxsK&{@JQmi-5Z%PWgDgrVl+}(&nBGxc*S;Ez2NPFW>&B0 z+p^(Or|c!-6XkC4$jD9=FyeY)LB!8h^Ieg@Mgk=x0Ah-+3(l{e@XdjO_i$osxW5Zhf0A!V z-V7e5TNPm)=x5|+S#RKa!NSbvVKTzT17jnc1d z>-(Q{OF@VVA(z}vtEnx2-ZVT`$@O3LW10)&artrFaKZmDQiH4^Qs*30Sh-KzAI9tBTNX-PufIn}XuVK+uA)8npkovaAP2w! zJ2F#))2v`vNaZGPFLxo5g)pb|lGj0q?BSqQr;_arL6(_qf~7c!o`sCyD69YyT`5M` zS<~A&T<{+j_GJ>gi9KeNViD{zZv2}01z~3`VYf$&?xCwuf7w;xnTp@^S|0V9L(u^K z^?&aQsModiTTb~#$+PyJ+(@v%qs)cmna>B&^&p$C(-s#FOIY26N?cLjfU+^H!QtJG zh2?rJ1-_(!2~w02CpA)X!n3W@qHRKSFK%SE#}xyCPjjp!ZrB=?{)RsKmInXf=&p8`sa+$-Gx;A5w{EFVxA4$$x`aJnmj0adVwfn z7%g~NgLSya-3XaUz&cCZ3Ax{qGHa-EsEChbbf`2Hro=)sqHRJ_x&XeAMLB-#BK{Q+ zP?M+0hAj2xepIAbfnOQn%vGHFmQkhu$<;WFxu?tlHH2b()mh@hrl^a(X2NM`q>Xon=8_8@cHyX)GSXm=u_Ot4ty(V)>>;pnPFPlU9i{^|mf%%45hwU5DoU&VPHf*+~QrYl<&sQOGR}W8+*7wsC$L}vl z*AnU;P>G~QXQj5mFrhDnTxE<6LTp*9N!pbL+6C;7`wDvew9uPR?tX;S$nfuJ@j+qx#Nx)pFaG?VCQ=oIgBr zGuQcE3Di49*x1ZgAi^&=6{zi2<4d>ZL|0hBac--OVt9_S3hZEE|~T zR$xazkUJbKkmRp;VR8)(r9ej5M|k~2gdC}y!@YvShVxB|nhTwf5^|FADIU$U<5ZDO z4a!p`Inen3cBaiVW%Nt%Ey+ck6^0OP08W|@uo*3oeh`)1-sGfTKV@yTGzaoTAJ2~4 zkWfrpVMj1u1A(PJQbrIOcKE8E;MQ8cApbr1?VmCXDg8|AbvNKn?|0zkplUaV_ae zB0fQqU@95Bpfo`pcF;_&wZP+Gh$L*Er7YjXnib-^-$&Jlmtrt%isGZlrmMG--#hs` zED@C5%}~?i1uWzHtyCmxScwzzn-f|z*%lN3jGei3ji<>cJQCB~3h{$D+{$sw#8T_- z;HUm2_Bo_>sNE3RwUy<1&}RWmE(F8(4EQqSFsyd*nM2n5Budj60B7`A{LB8VNvDZr z5&3Q5S=Ky=Q6~*kK{KaxZoodlw4X``%?~K$SU{DNetlI&jXmE>q69-tQhiVfN2+aH z)x{&30aWbFN}_)hnz&sZEJVouJx}UuJ|28V5k9DE2GjsAi=CVp+X_;^2Zl>M!|m9X zkDh9IBAN9|w~(phkqUwcwTF zQcZH^aq|Sa?o2>*p6=+)qm}NcHH3cH6?_8cMHcfSZ62ufCuZs41B%??Zy@CY-&w14 zQ3D%Vg??OkW89JQ-Dzy7_=J13;)E(hWdoL$L8Jv<{Xg-mach|s*lBQ7ElhCqn@;lT z4nYzO{sX0{-A=lb&oLRnO<#1;RzN3JY>&Obk^;NPsc?!%P4jtyTy1h=ZrrCzqY9R? zA7DxIvXyR1h^mG^@P;^y22g0oWI5YA8DusF`R!)SS4tTU@61~;Z_;E=oZIi;C%_!c zWXMs_FUo}GQr`sr+2S=LyKKdE6HGX&+Ngt(Dow!!)zlW>Z$C36_tC`@v6m`pJ1;by zp8-p0c|-T0q#&wTWkwr7R)V*N1nc5|0Ga%rKNJkHHlH&|;b~uCDd*Q;-S^U;WJjcc zHrA?>`?k@MWIA7SN&2~>sB#v1D)En8pBrmj9aaNLjyC=+dqC1` zlT#?-YEc8Vk%pMsSP|c1_P$JiMEt8Y+w-E3AMW7D+y>wgk@MJY^~!%`w~fNM{gWS~ zJh<=grDnS+wk*aJ?IaOo%0x%q{v9X$n<2HC!VRdcGS}vProt(kj$F921C*%%CSE{~ z=l4L9fH7yOUv?RRw$hLCpqtKGE*Swip2aM#iNNysyK;w4VutOJuLfmL7#n?%&2m-i zDf%w9yUnWUU|hIFX<-W|$HacUb#d|3=-xS0$#Q%ZM%{dL|2&C^!Vw)E;n%gS{w98a zRyMd6b%mYv05d?$zf*Kb=uXokjL_&>|4J-?hi{zxGO~q>Lh;7khCrmZiUn@LZ3>Sg zF5dsjs0>dfHO+eA%2mnOG`4*l=4`|$pSw*_q@!NTeT5__q2&K5#>Qu( z{_AipLJt29>YsmJ6i;D)rjBPWkcq-O$i1b}TM9IpL}T{xkx5|I#H|JYmpct!Gvq-F zbd#_KB9%G;9bT!AlFw}6-KhFwEQ97~*F4+*RcxU7noY&cLlVB8yoQcIed85L+gB@) z;H&VoW@CZCx^c1^9?8?Ed$a&$`Td5e+zCX7B(B3SVkX9kp{H8^^JnshQ5Te~#UhBu zC%rXvFN6@ha&s&Tw2f{5MtlmZ>_%WSvEmPbNa(%EDw0XTTX7|x&sVQ@pQX8#Y5em3 zHpajJxL8;QJ*x5@bMwDIdk>OmK=vVB{GF%~nTAFGmSpqO+wIsZVQ@1#M$9-$sDy3{ zxyh>cD;80oO$~10+nLGgE$t5$fPXJwRPRJWEB3gPrHk=`6rp{_rh%d*iS~bJrF7n5 zvuJGF4L`Wu^|L|=n!%m3voRq0d0&5`6IF^y-lB>d@rBIUcb}jdNc->Q>yBe!ZDcVa z8RXE*QjNs@Q$VX9XglRPS8v9qU~<)G$)$rLjbQo3MHUO# z(kf#c{|eUf>Ry{C9pX`0L&uVfQ~?!mMc@SHbpQ>hAITc^_EvbU_%@0*B#hhM)R^RAqyN zaHtq=TbKBnPyWUy(s0%=@G4~pW_4*3Djeqz!K4H(o2tX$8s~0|-DZGn)K*u$ zvU5NTMqEM4n;&gcpT}X&d4uOv3u~ncNJ}a@2<+q5j zKznq4o3yyG1#L~5=UVdZ5Kk|lXN&lwd0Ubvvf64A&fQo0>Nfqg3sExY>^BVvlxm*>-<;1_;$8S7_b zNNzHC=ySm$vi?YgSLG*3nXiqAIqGjY;Eni%k-rh0HU##=G&@L-Xjh(?%NS3IqIrDV z(PRE>V@D(RG7%ZV&^wL`BANNU(yM5Wg5x?tLiGs zWr*XinaCG)yX-QDeFXRfdd%0IEJ(}Ew-IvppUm1wQPN7kk=3W9Vsmp7Bz+eBRjdhh z`>|*7zg(jbAsai>+Rp)nBFY3`3w^RTT5Mr%wLy=-(e{h5JkM`47z7X0OqOQjUOMP+ znosidP{?NCvq+e6#of587=){drcwkvcI^JtJ37Cy{I*iWAJ$$py9%t3 zRWzWu%FV;^H;M9jb05BMmda)2R%XpkfGVX=^~Dn%+%)exh1j@--JJ8{$i3ZY6IWi7 z@41%WGFyv$I6!5LTS`3&GA2Nzk8{0`ZKkTiyf^{@_I#?7MI_^;Fmi0H!pHd-5wp+;P$5mZi5 zs(ZcQ(Pef+AG8~AjNJr#cDS~_raZ84oIGo{z_P<4hTOg_xO0r@2FZ^1Q)c(w)PDcI zTvo5@EL9m6&^Bt<8)Gts3*(O27Ch+Di@c?>%b3hq~YpMS3|H{Zn#s!1> z)U_v~)=l9kSQ;G1hBDSmRllO}<(!?N^>SKx0^Y78AUm)7GkjRs&5Wc#@!i{3W6Xkr z$fkFz0*hpNtab?;wz!Gq*y>mUd=GbVSv{lS0doq63!btoNS0bXsIHE+UVg|AloBIL zW;Pe5QF*mTjyrRXs8erGQItpTqiFw@ZabJ)#N;4Hr{>oh5BBA3Yz4~*$eNEhVZ#Zn z<1S{%+OLTck&J#K0OpGNX)CL$M87Fg>kf3+>3Xc2v1+^x(rQdNb^iKvTDD8}wQmd- zj`UQ;0UDuh8DkJ^zGamHngJ)_VD#w6PgKNhRG!Ru46&sE9trx%b%mZ!DO7B;>;EAy zF1F+zh;wn}R(K9AZVMT$xB(}*$oz%U*^hxe)wqIDR-!~oHNJ2@{at~w?TmW(aCFni zH_%(!HYnb%!)}IwO3&izl-7d=A!~Wd(ee3C9xHY?*M&Ltz;D%q6dNwph>O(F{NsrU zUDKgbc*I#C68`a!cRab;B!}LxJ$3aAN07@Gf}s&0DDZi_sxUP47mZUAJlla~jLoQs z_~2|@@q*c&fN`plVgVv{lz#F0k&Eso-`r@csX}&(-Ler8dr5NTd_chy+AF^mqElSB z!)%K)0E7E?Wg6^$-J;6*!MF*nxP7U1FMq|)njm6Y*;t+T6x2w6ZDSj{l68N5Q7j{< z+7IbL89L19MR7t>)xnTpQO@v) zbv(60>u?T|1QM;RbNJ5p_^vbIYdDBbh`^-dyKTc3vl`{%(&ne_DBrCHH*#^$;O1~PIyR& zg?`LIyp5V#ik|F>ZE_cY@yO%`H`bk5?)%VD^*|fPI2A|6fxo4?+6z`@c8MVD>BLem zpDs>foUSJ(qWGaP8Np~^`%`i`kkGi!;jk2FzU=|AgF(s;ymvA3-xSS6?CX6BlEwN# zT9n4ydhcLypSSVjWTy_9IK5?ui=Lqe^@SI&mag5Y`{{%I&QQ@kZ8Ub(71T`HkAAL% zpL)`H`z0Ggosv3w4X%8e9<>7P??_~a7z%MZ=OcG*pbq<{F5NiPa|#&rUaMdJ%2pNw zqjM!Gxjz#7D@mnafuoV1WVn^rRgJn>@*4_X@q@zCFOrPP6qP9!D}&!-yYY=se`aGpP3^0j*LtRxgd$|q-1j~OTh-28Qg zEovPaT2-j!8W&BRpbGMC>2FR7!lxouSj^7Vm-nDKjyBfFR^=@^<)=)b&r(01emngH zO>ho7!qKNF2?`3=je-dSr~LS9IXyCNp^2)c%J$svUNwAiP#Uk@42zNn7G@-%a^Zt3 zIR2N1detmzq}m4Fp{p9XsHK4MA9)fscCUiU7GL)COW=xsOJc7DihhLt<|(VJ&ec#p zL&g2A1~1KAeLr+k5aLiwSs`oyqqG%PN%S+?+?qPl9-Lad1DLtj9GsB8y0AN3ivfS= zy@2vI=3BBKGRGo@Ss3$3{14v8x>R3|Iv#5jGyj;jF@uwC0Uv@df&EHmgI6iM z)=-peQXqDf(|!?2f&or2%t2MRKlJI`ppA7ZW$W4@8WP>$V7&5C`=z)vnx?~y5cK$$ zg$bk(IbtBuq2XK--lDn5|4f`~9B+#^dO`($SwK#c1zZ>}w`2^MY1HX17|eGr&UB9e zev@L(0uk=Z&5+sJURcB}&0ELMCUldU*3-hZu^BL@lSfe>2PlI=86#jjlFtHE^}wQq zq8Mo|4Q25!W~uQGp&qK>XmsrV>S3hu4BJ(V-BDUu>;({AoY!_E*6lyiUMLq(Ijd%ltz^rM#&x@T=N&+#W6ksb0<_d^eTWZ92E~i%2!bLHy@@fK!~WW(UqjzFU$)h z#-*SOn8i7xt`Ku`>PWhATFpt``1kgi=pBqFnKH|00pgH7zP4U>uy=CI4c&-ilp_)em}N*LmQK zH)QjXlARn*JbU?gaz>nhA>Vi3NcQbS|LFA#QAF?`#bil`>#3l;Td1n45968H6W?&B zN^o={ahUi;)$9qT2kRR`zB7>k880dT92AXB<;rTfR+cl-pUk{^`_;qbpfMmHH%8!- z2KpnhK-xQ@D52U70vB8LFoK_S=vJGR8JR<`1Q=-RIo3*jh0^bHq1ZvLSg^2_NmAbm z&sboV%1r<(OAJ@pne za+lSNAx7uvd%H4>5{cGZ;2oO&h$T``Iwr)=cMXm>K*m(WzOQwN`jE1_x|-Xq51t$! z$XrEqP9k`%0bGJuoJqt@KeGQTqQXzzv#{EP$?sMLYI{Qi@_xP#ECB96-lZp6+*OyO z^ZUa$gWA=E`;VDwpC3)O=AU8f12?cxR6&7>N1=+pAxQaQSztO`o7URsiUE9boB+g& zJsGOo)M+^SU!J0Q-Vsffa!yr%TQG>k$xxCpDPsFqNDCPw9UanQtNm>CGQ<~_Jp95) zG8#l0z}BKDaN>jU_QFd9b2~y+3Ju-H$A?e7SUvT%;+{lt%dhURy96-6e<6j%HLj04 z^#;SJBdh#q2{Q_5oKDhE}J7d9`PJ8BK;I|{HQ>(R@1E)Er{>m0=&)1o8%U}FV6H%1%QUh^Yt@Mht>L0+?S zi|gSOt@_vG{g)E*y=SyT>A4=sPEp*5&PecvRigPrgHND)QLnboBe$=RO-AS8TMsnA zw^AdrfK>PFv`VfUKeilri|B~tf2Xg3_t45H*XIO!DF*E*aSi^Ba=KU>_(cbhXaV!BG$ zjpDY(vjc&g$aOT(aGytTxQKVq=xnWDQ+^t;nZSxmwCn=kKHf_z{Pvl=Zb7BRF{KtE zs9uF0oK}>e@lf1F?RK~zk9VUM6GX{>xX|3Bgw6h7g!`Bu&zH*PQ&4=e9Rz2vL_J@2Pd*~NiZ{ITH{oa%AoQS&wJ~hhn)JAwG|AYM zXw7+Oeyk-!+Wa^~iQ_?lNbXOl_ONO@+#P}@u)1>wQl zgf2LOTEi4P(*o0R2T**!X}FWMy`%v~+-h7@t6DLT0RBmAx@V-F6fD-MR-NOcg(q*l zSR{dPU9{v%esdC|De5|0m0=x3u9e=lY>Q+Ax~zM4-bXM=`id8-*J3& z+{LhBmyX8#848R5-Q5F~NW}6^QON?!A(>vS8P=mXNj3>PNuq(dd*gzWw`8(*gWpLv zF@C{2D13jyjkf6v{R_b9s7bZ2BHvhw&{W_hv29w1=n zYHP<6uhR|x*tldOF@mGhnM+ z(ycXi71_NbrJR=ATfl}sn}iaHyt{Gwtc430qH2}-duo}|{Nv03WCV%CB*9j>-pyA0wW_ulW~34Nib_Pm{5;~Z^NSxsbLF1PPfg>2~W%J zjRByH<8NiW(r)1xkV$sOE5hZ!k8bn)LFoes48fA@;u^vw z(o|JAO1HqD4Ox7%Rt#3%N?Rv-&bIpXza@_z{P?r{8@e1ebgLS;G#tp7hg-HPCEXL* zu8jEe3s5z6Eq-=kul4JA7#=zB;BJAEZlqm?fL#D8e4x} zwEZbz`Xd9Ih7b}qIVvgP%3Q9Mfn6`FnmCxegKdFXQk?#ZlW6m}-52GVR;9zh)TX%d zN@6EjbvBiOVwBs5omAe{;LgPg+t$BU= zye+9&SHY%k!q2kNp{MA0<-6Uo^UqGK0SEMT5wjDZEbhi1?SDYL0dOdnh%cbLNC<~v z2H1uAzkH0qu=FzdGDUKQ!k6nW;1*YS7Hb^@v13<}KUj$IKLMf~WA-9J>5`VAu#1ev zfz#gXZL6*f+rC`W)R@d;UNiKkU-Yg;Kfbgg@NoHhO#TTAl!UHDQxg~Vy3RPkJ~5NX z+N6D~^ZjWIa3vq#{%p>0J|I&T@GLPXo`107I`qxgX^xGeGoCuot!Xc!(mC?}>KuqO zZfUXu&NXWbOWm6@hV8IBQgehiv?LUetsTgFMMxAx#DTpkYTdzwxWhwIW@+;9%- zw0S!~8-aLIOzajKSOh;0;BJ+*V)*&yV zSwFgUe2f^S8$vtk?KIA2m~F=Cg3#`$pwQA`Q?sN088%<)&wB=gFaMiPh0AdL|G9Qs z@KBeXLkY1y+nxZdfQ+XhH;+Q~wWspfAy?9yM8ijZ!ph=bT*<*2rXelOYC)a}2IzjS^_jB;e_wMy-Q$g2{LV7M?qKb~{8b?oL{h-q>IoySvog`xj!8Gw)3 zJyp<+-y&{9t*<(C6vB|BOlhqH{lzn61y21VRmpEH#cBtXbn3dM@cnUhQf-jd>;>?4 zfJuQv&_MN{)t4IMu*XW8o>n-FX!aK86()~FGBy}SS&x!m*a*!HLXqLb05K#!*6CvdPw%bC{{e{1AyDo0f;L ziQp3vw`Md<(?o+JeD@}C@Y4W}sDa>P_v3<0(#bh{1$>eQp(pl1 zp01R>z(K)|lrgSgJB5ib!#Y`@%9&>k0lL756cA{WO_WW}624>}79@miTfA|F;pp2% zP2D-FNo)a@Jq*=QiF0$Lb4J}RyRJDd&ej}e_`;jqGbfs?g}((bjHG=dZeo;jj^iBS z+*kS`pw8&~881a?Y>6`z5y04*Scl@-vWoXR3b?m1|j90}J&M@C;nJ=OA zgA<_zYXlsisK;azPlYGpi_L{hq5)^DzZgB83q$}?oSdOt!;0#(i-3)$461AN$aXAB z6~|?OH`tldxO@z4?FEI!m+LKqzW_l{m(_g&OBND5ssL05pU=LQ#a?g~B7>vS&Kq?d zThAE~y_zLPV&pe5unj@!c|=>-EI&c9+hlp^F{a^25|UObZ+l9`1l{<}a96bk6q_ zBz31g=Og%L9Oay%4DvXF^sjq$2f$uRh`hKB9+0&+#a1ronB1+x{>}s z%&3G`Sa?yZ{B0%$Ao3}gDzsf`DCbrrs-1~-QCza%vATam7|Y7cZprx#xF85yQ`ag> zGoCz2eUe1!8j@KQ$iEM1RjMdU$~)wwd8n5J)g^(*n6o}ze}LG4<1pneTcqU+1dyK z&@5zoW=UG%G$Q;uI%V%aC`QW@zO8hrc%o7GU{dD5$QOqcNtE7W@9up(T(4`Pi{*N? z_i?J0>a9A>ir^dww6duhK8L9N;GDhw2?M+MhmY)aGud}P?VUIZ z(?nB!K+nkhigJ~>ZfN5W-N(?jN*3P-K0VM5(~?EACBGFf9s3?MJuDfW7i1%2I_AVM zBkzD#t@aikH+0!$5o#`hs(4{xKN9VhV*SI`$Se`Dh=%iNIW+kqvX*k{GiG2E1D7}D zZp{)51!qRT*|!Gf$>Kgf1zptZx=)2$JnU(xUpnx}K%o`3wbBjisHo(1mIgHwfnU%V zpI6ExcovRjHHrmhdr#(RhWuL9QRve*K#}TTuqW9J?L;a2(HVHssmG%4c)!4!4)(wUgCVE^8+KN>op2wrWgk1|i%v6z zX>$`7MpXuadq}R&{65Obob>6waFwgZ@sm)8sAR2t{cXSElVc>5QsrBDljSyx=6dJ! za4TVmeq&N%x2m2gel5nqwADLwLM;L2gg{7kk@HUrglI$>{@hpIcvd-Y^SCVEJ?|!N zC8xKOHi%kPLRk;&>D05g;CjLZ{M=hHg+T||a|KHFMzt*}&uZ*WFzb?e%3}&N+-(OD z`hksD{_x4-f#a_~)+#>TIq~Km3bczp_6;2`fTl1bUJ;T4B0Y!a4{{Y!P@;YS28OQMt7iTvXBp9{Qyod_?H{XNKt2%Jd-I)M zwK8M}Zl(GZA0T&<^GoS^btnO@Uf=e6KjwrxY(9%@UIuMweG9fqTqIa(Mxx%r15Y8Y z_I)YRB{?efI)2{it;G|!bnHG$DG^%w?In>D_w5h~$?ws42m1WI6Su{bIC_=T?3kB@ zw5>5vwgy<0%7t!aPQZJ6vKYtGe2M-R6R#V6hjKa>uQ5c-9J4^jHV7~V&gBH{$Wu#2 zJIX&~1-GB_ZtNbgIQ3mYOc2P}c*GQ^*8}-=O=c5k&0+@t)FWqH-be}AI4_byxiZ&% zCNE+5;wGB^k)1xKl3lDb@6jxU-L6LlkFETVe5swCxCx%HYfKxGWwRCMn0pUxq%w}#R&MP|7 zz5>VgPMkKUeoRAHHc=PzPbl0fj7wS}W0}gN^w@>(N@36rguEd9RT~lN_y?TqSIm5| zQgs6eJZ5U?k8^7?fM(->&gJs-6n2O^P%WzDeOjYn$havNS(Vf06ZtFu8}4S@Rysp+b*UsxWG{Ph>a56{tGN3PtD= z8pgCw7=)3$j+|o`JC|CmWkdmprUio|s1Wy>2o2p%B|>+Ek)+nOJ&Qt|Y~jvnya#@=cej_}&2V1ooNv`!JdTgVii7h@hg zA9Cw9CB>F+8x~7zJOv07e)3ZJQXpQ|AM-X5z3P%~JJoi?1L?rZrXkHJwtb~IF~}^D z(EDfr+8cReZArOdESi|G|3vMk=4Y!i(G!&}Rb+axjlQouyQW}(Vug-{QJBIL#R%=U zvLpR<48uWuNe9XgPThb}z51CByGx<(7-=G>wr>hDN9!2OLVg!&G+*lh+eXFmULvv> zCOjyW+c5s?5&t(|eE-iv^NIR+foL*6{BaxqsqmKXYPpETmR%XE-TQ=!qOEWWU_rSLPku zcCPGh7)vvjwn_PE^>9+s&CAoorXFGYo&wnM^J#_D{*9(SJUD&qc>3&rRuY$^ z6p`pPF295`AZhlXw1@0C46;6~ZRkn(C~KXK68nmRGVC1!?U{Iy@b1ioAbO8jKddrq zSJ6<>z{TUBGAsqd)tK%}STNl`9RurBvunNcL~^13X0tZbSY*`!}(@0#JrlS6xLN>-UlZ#OA@3ew+c&ZF#M*h0nwB(0dn zOU2;M=0Wy+FC4QL`uq%cr)a0s|}Gjb2`^Fl<}>m?jmr zv?}0BNtL;YsL#o`GM4VRa0k6X0JGsx@eCQs#;xAvQ0>rOlO{2s?wnB8;GvM07N^z! z;fZni!`OwPZmZgVLDq*x)m!dej*CMWBQp;QEpg(#P8qkz`g^6~M0Ya^teCx-AEq@c zoyJLP#f!Vn{f8l07mek(*LyQis(HxD0pIfI&c&JDh;Xl~s_e5%@$dF@wLV2#H^x=R zj#b=6uzmG{rd5Vt*Yd;=cDCh1n8CZ^gRSeZ<<#oEw7+vg!SM%L{gz})Wl#~?WIO;o z&jJMC@)INK%>mp*!B{?j!(s) znNsR-lUr4F1$E&X0_x*iH~^`wV-|yqw_uEm{l+NhZIm*37ADJAkxvcXz!TTyM02y@ z4Qhe^G8*3Othk;=J2!8W8r0d2qX&6beZC|HK7=606fsPuKa`d(Z5AZ~8gZX&qihUX zezDV5E#RIe0bTgx1a;hHCfYUjt$8i`iLLu}ofYD-f5k!{8HZhjVCtb7loj;1NW3KD zm)^li%dJPn^elT(oZI~iof>y;N+~a}DfpL<}NQ)VL5=+`tML3S*0B z+O6y3@l3SH7k8N9WOPszwe{CkB+RMnLFdK2-cG6$9?iB;=2%5x+k_ssc;3O$De0tn z*uQ+C)w*q%{t9nuWMDH z>=_u0@_ldjo!biC2v;zW%82P8u(OrCfhBNprvkK*#06Jd_$?5i&WF|o2}pFKl>Ex> zKn?`bd}(ctgXGD*4TeOui|>rAq`aG47>Yz@C0_FG^3;pfL{|F9XNusRoeiWNqW-jG zRb3Kq)+T#Lyaf!PH*a3V5q5(J0a=f>^=*2!c9#aeg+_u`Dul??ZnIBjDa0ae8(y8D zB*|4Ro79wttsjA8>uH|oVOVW5a*HX~=*usB<1$+h~g+XL&edp0)yy`_hx9BJQR7A@F)C z`yQur&PSvl19G~F@XGXGrWJ>4JI~S7cu}{9o)N6F&S+-9fEVFcwMSwx7Sd%eZ=tmT z;P^tNGGHnV*FWco4vc#}ToiAL(PXI}Yp*`T*dRI6xFWc6IbSuCNFJWq2A~5c?JXIz z$=`nMaWC&kom4p%mNVaw)pekIsy=$r88Z7|XG77wHD=P`{3iV)%(G+LD$^EN ztY&8aQ67ir;R!kD?#0c!j*B7mp4i8fJUAUaoeeIJ*zmtrA61GuC~y#(RmI#tuLVL) zzksiw_k29sX$YbpavD^X0*e~R(Z2+WoK+!cDrmb0?np*=f&6>)V}IQAxUVr!A`xk= zpM#^s4gjIzicgcyTZeh&Q8#B%nS-L4hUM^jfYM|y(%_9I)}Hqg3SWglyg9@k zhu}4+V+U`~*4b)e8l6zY;D4$Vo|a3*QO)VHx=~gMJU?87P4goCExF^$(N1+5=gG?9 zO6reUf)Fi+Jj}w+bdAEXLGy7!vFLX@CJkXcD zJ=G;`Tme%ozOO6(iDfOZFKo0KQef&q+NS&*=-+PqI>|?AEKT2z{BN0PH$FxB$}HH+ z(f%mOzqN!EK{L5dNb|}(cP9YAsk|G2%pyqmF=YZy-v$0mh{I_nAXzu;OqvSSzkz@M zp_&!IEW#A87+$}wvAEy=#A8ukjNtq(zS#ymAa-z_l*sbR$XMqiM&pP;ED1)JW4N#e zl*Ynbz#nn>HLuD7h5=?SO-mAkAVXhhEN-`VP4jozrvr8^QEWMXN$RO+;MsOO3r7x< zAk9@6dx$giSz6v=gntwU!1=wki=Bu=B?d>UXF_gDEP#2~=)jvCl))Rb^qawRWH`^4 z!Iu@2FdX`U&-Rsn{YT6>$@X1KchG~z#s&QQ^qx#tAT2ViSxuICmWCC$S%sDja*aZ2cC^TtkZPX#x;5Ziqw!iY( z$={ll%P1S*LGmW87JQd#;B>Eb9wx{_tMm!)Ox6BpN^eahDH&nP~2xM#&;uLN1xA5wC7|qfJx8AXYjthrUE7s zsGuNr=oWs!95MgeGr&yleL?VUy*8;)=IW3OGIXyD7~=bVS$!zqx>@y!aT8cHiuo_u zv@-Yx&{+!pPr9F8%k0OabNeab;e%FE@eUN4l}d9eftdhy5g$!8i-*JrqcwV)Ki3$M zeQWR$$6OqMRm#K;1v;>mv9dbYB}B_j!)1D1;=8?^-%anLgt3!FWxjA+UC%1>l~)3E z`Lz%s)w5bgI&yUfwMS9RyUW)uUUGJxkCT?sud_lQWa=(|9fI~_?aiOm=5@!CtDJq~ zS&S%;3|1dYO3zmxbU%ohcKeFziE!##P?t&(YjRdbc_Hj>+Sqa4M1i`m>2Bm#gN{e* zWNc|qe?IUsBjFZ!7a6X%D8#_jLjTWIE6ylp58yZ{9gZ>@JEP5*VW&L-Db{0vf(Epqol^mYS(37Vh&@ zI$i`x3f}0D>`?v*x4dc-yq~a=H?Dy`2%M1_qawIYV3Yb=3Bxbr$ohgjnX}OPc~QH8 zoczWeDJ_-dWiBq>b7BlLiom^B+$;=MEC?hRtsdah5L|yDqR{)JrR0ywsI2InUT!`* zzM){F%@if#@=%ZEqa9~H9HJIk8s@l(u{P?#H_D+br^cPc>BdkR-tkvY5}WGObgd)T zcb(Et5wpZ^fVi+qAg5N0yy!JZ!n<+#@y;g|5n}siL^|q4SAwx&oO6QqT%Thj^IQvY z$kVlXS%8Wz*eJGi<0^n8A)Cr$ul!cr?+f^et_7;V9HKm_mKSXMYQ z2p{WgeVE4a9wNYJL2mwvOl`^Fz>?Ii09B(d57-`{)hp3Gk^DuTqGjD}p-dZ|purwF zb`+s>qmPMkId-q6+e|laT&c;UqTcE;mrd7Js*9;)td*IWDj2Ul9y_192ZQ5OmiEbu zg3tcK&8t1K$DH>uNyCD}TW=GZG05r;o~_jc(uJeU@V5p#L?g}?vG^?UK)O84OtE6r zCHeRBCI(4F-Y{T=^>t;4LAZ>b90I4#u91px;pB5d_lz@1LvS`T0oySmfz8Y#A)7fM)!8_E|8~#7m1Qy4sbf)|#v00ChBNqxFeFUGCv(iEwC?woy1SM-XQQc*>?@a(R}(;j&IzKu#s#lv2|Wm(BgcgJ z+;3P%th1qawQ-S{_jU3|sd2WMOF2&AwZ+FfwpPn2y6?Z93}h&mtNoB_WH5S0j{6!@ zRL{4RL8wM&tHLHtaF8w$dDyxi+XK}Z=82j!A44325qQ6IHXu^UzkDQv!H%A+ghldBEA`D<{o}{Omm5Km2^3OOGc6 z^nVI7W;Es)@WUt{09TlkV)7$h9h%WcUm;L6B7se9xxx-l~V^vZ&rf8c-Y`cp} z=cr3rE`#bL)vysa4#}=iMWJuwMaR#01dS2XOg0V5*KSNK^K|p$=OXkNe|3C>%~VzD zmWv}}+>*I`EVIEl`6P}^xl!Mt=K5xv6^U*ODv*>;=?(H@0(1ELMTS!TY@FX&?k%^R zm`d?*v_|&`0`M`GdER=?4#T!B_rtL&!VwPZihSmj7MRxn-zLU#)l7^OGFJvwi%Qv9 znZz-f^7zNVc8xw@9`#3`x5oA7oU)4#o#3!J*no+;SO#$aD;_U}+m?^K7R8)m58jvXR_& z7}lOitz2vXpw;jVYy#}j=n|*hwOmb`&nPLB76!VqhH6w~;>>E}7MX2{SF{H~pha=~ zT+HC|4?)M73+B1FX%C#mVdaUS(Jk71jrkAK|?F0aMRlTdzJt|$@? z`x1|b>FrShY^1?_gpw&d3umNpPi4n_p+(#a8VB#nD4S?b-vae#Z|aZlEhpsN6l{d> zfK?iYmA0y@N@(Vhx0ez zJB;$w@@-r6Wcs$HahlWRAT!JkWK#04p1coxB}g9dO8i+pM&3KSD)uY^r`&Hq*hFW zz~x(K&vFcKj*3pD+Ea1ITl@*E@RmHvL8O|^kjE^y$Iw~GET0$TNX2gwj(d*%3a%QPN@fe`+> zIALG>fDjzvMH%5=t!Q8v*j7Rm4B3+IsX};wGm7BMFrMC;3aq<3cKw>)Y$b0?5`CZ~ zzOVo25(aL}{Xu6&$99ECKs8-}glq#-z_IsfUAZke0SeseAq)A)Y2WXi5kgq&K9<7` zE7hz5N!^m8)>MQ^p0OeZO4M)z3&X7DGYs;lgN(^Fnihv>1F0>&J{=8#={xlU!f?~= z)_nG90!)lYo%krR$&sXGpcsGfVKVOHfSpzAcpq4DMT^mWK# zDG$m8^F@9ZG)k1xw>66iu9m)SNVm1;BpBC^k02Ghq$ggRcXT|83A^`|4GKiCdktDU zz!B14P3bOb&f$p4y7u2ZW+R!4MwKYA-zM}X&Zfh5D@J5H(z0-smvCh*{`8KY%hI0@ zu$tMtSHU+=0UPFYwema=rh~eqzm30Q89G@nLQBT_L!p8q9M@n5kglQuxV+DN1CZ11 zV>+o2w@7kr7wOd{<3%Qb=QZl9&EnKBrqiLfgQdI5qt_l~VNqLS{UZi^;$69TPtTN? ztmasa86R#gY4V>;9TGD7BXoo{)M*~IAVhCbC>;z5%iu`&;lDRY#eCby$SRh;o4y4w znJ&IJ*$0>Td;4$>Y$d|_x})9Nz$9l{gex;ENno}DQq#FX+M0ennuxXwyWZbPfRgb{ zK-pcTf2v2WeHnh=BcEhq2=hLbBO-SDtM`#Vcl4c)3Q`&3kDOPairtg3YZ2cul?-7A z7Q-KmgxG*@ZWKIYY!Jsaw@MncVb4>{R09ff3Xx$&CSsqKS4KwI9Ay2fi_a^~d}PkH zxXu$Mr#majpuV{-q}e`Y1v?`~&3M4291BKI7WZc)H6-NP)pG60HOUWf5MwRsIg1cwRV4*eaRJGfQ!AvUO(>umfUnT~*5=c^g zTvG1Xla)jph-&{zOMsmb*I-_p94V*L{Ir{2uS1c#i9hkF>olV$+UdBe$#Q{i9~1o` z7HhLR(5kp)Sx0#cgNd(cU?pk|Xd^L`g@hkNP;v@y3~lLIawV;QI)(Z?>s_G0cGi*! zEVX%;h^m@{m!|hN3|loKKX}-Bx5NHubkGt5-BVpoGMWxgaL+?&Hpms8V2Bz6-K=ev z{^{!X*P!hzDtdI1h8Jl}OaVxNASqwcR5k09Ed6HTyVV4Ta!0$dvkg70BureyaX8aP zWIXRtg(c<`xEm#&mnEy!8|aF|E`stuib4-`S!QSZ&f@scu@!HNG@}*EQ_bOsNvO+$x41 zL@l}xO?j1C1li{*+1+gqB$@;jZZd56n@l_Ba|_T*t77(6`YIq0Q^?{88gjPxRUV^s z&~$ou`~V}Q7wM8gyj~?705?F$zkK}RSIL+!$f|L31E+S4Of};uUCWw%RI>CXRX^GW zswkC%e1>?rEU20ZNAXNSkIkCl-$5peG*weyiFj>`EW&-@!5oZx@oXkH0zbCyH$%2M z2w47Yq>h?!`C)B0ok{-YMEOMhZ?e!kJr&V~T1`jNwTZ+M$b1Emr+aos2DZG!OTD8Dweu;VV*;fga- zGm?ffk_?kg>j2Xo0Kd}4K9U%1RKD1gZDk>c>U?z)9Kl)ky=r!&UJ z4vJOOKx)1H;0aUHf$-Nlprr822HI2MHs)hi4oqh@Wh$&RY>|t^gVL5KKn)7PhrT)x z>4keUU|&??6vc05=^sB^eAKA%tvBfwDz^K~eTgkX06jFLsZ40~;0t+db%Pa2Ir$vA zvOdy?sr~!4b(apijyYuwQEMY8c!%qrlr!laWksfsW>6h3qMtI{fsSpVNKoOc0a@aP zFW(mPyHf6}oQR{SR@(f{+&Lw5HDyj-)v2a6v|ut6rbDrhmn%f{ulp}FbnbzN5D4HO z!z2HgGaA7QCP!A~OGk6k|C!H$jY;MLF|3z!X)C9n^m!+xe*P@seW{ ziod%mbO@#m69JCtpWJ*-Ky<|#N6C8XSoA0`y-^bXt?MyWU+sX9 z#v1aav@Gj~6XfA|=#{56jlD#iR=N9D#NEIu-UL+W%{cY_xA(aOlJiuD`tUejVK7mO zS=zClIMW_MvTHtz7*2-2icis^`b_CP)#!TAn4mfWu&&t+AI$CaXfXLq1CRjbwYQS- zHU5n+S_o$5;)kAC-U@#$NQj^5{70=?+ZIom$^@JPpFW8WHUSU=LFTVf&zy$FVMz1G zJfQq3@QiFFLYOfKvnOGOe#hWqACOKDq{Rplqw$oQtHY`Z1@K>2hbIO1Ak)z&hEBnDCz*8&K@{v|m8U;KCa%t)2}f_Y3boMy3zE zvu5Eg>@S2EC;!3;1&kcr6iKgECBxtEwY9aTKLa%9Iw;iqLnAxhKV%ih&O`-HW}$jU zU?}*u$AN17zCYLIZ|$3_>dwvL4&3y6^hk-KC?lD~cYpV%wzHckyxBk?_bD>|^{<{! zcFB$B1Ssh__RsU=yL{d?qYaw6gzH+(PkZska{P6=yS*&AnE@8TV#L?gbXbp*BPt?u5@6hTkhz{w zF0H$-QyMtN5(2nBRS69%@;e=9@op1@Sbb~oDu3l1GOxGsciBiTu@GQ{AtXG&O2lFx znOZ?XNeRCJ%?%OHZtaM)kV+uZ*C-sjb*f{rAZ5%v2F-ZsjualBx#Q^*FKM09NsKns zdn!rwiTK}9yt0qGfb}Jw$N_yoPh@X3x%6UK;nvo(aCmg&EF}ELjxn5gO1)WT+l(hs zOGSz2XOR9H7O`;#^oag3MpHaB$e#&vc^^g3i4M+ta!5H0!M25DJ1=>az`)xv46%&C zW5u@| zv*R(mA{pTQo%LoSAKu5uIwR<@;@L4IwIJd5xxnrjDDsD^3oXjqIpY@*jmE|34Yo_G z@dBc5g$`)e{V($lsDOzsd6@O$=P#_O5E{oH(q$H*)y?1YE~v5;B^@YSH{EC1xIWu>w!Kc(Y4N3 zE7~73!uyVQHBCk_$A=k4kSyKiG{xf&uKjVl92$}OBeY$AuN>ZvrMpfyWIEL5tiP-y^g zDc|k*)ORn(zZ3a=Ah%Feci5B327y_;KrSef6x@RcFInT>dMrfy`WoMdpPz|IH^t2>N9ANfo+! zes<=Br43BbwXp=t183~#Y~&}n{XWOE$kZ=ca4x=Cm!T&YGwX|<_W#R`SetMb6cisi zoPB(Hf}b={Rhc$xV<(+f+(3VULTV(yG6lkdYuiP5Fin>IBoO-+e;YZ6=?FzCjsj&y z{W?a*q!CI2Q|eFAH`wH=qArfg+Weqxo< zpi3}qhpI1FOvD`-%aiM%qgHC+VTEXi)AaSk$#ERj_nQfs;fSe=MAob<5u>#t9iB>d z%p!U$IM2>j{&|Im1NNcCGR#1~fJ#&JhHfx*21|Td{&2B?FF!mc z`e-#J?JgmlQ??u%z%y`CRrDPFsTMzwPdX(uxguSPm+5iRLw<>K9W$v8kRKQAW$NTQ zBjJc=7a2UU(?T=*Y6w4*AlmqBiy{us1to(@t7Hqgk|+QI6Vg=GqK;GpwQaug`nU|C zk>TPKOsW5gjA#WhU|Hk>C;&WDe0G9=_gLD#yg`$shTvhf)*GFN=LD<;`3wiHo}Vq|A<_&3c4X zC^QLLJ)FXKXDpT(TP+)}0DW=GCQB=7BDo~JCZhdtU4My6v1-0h$>nlNyt4Wv(K}kh%=t91cm;rT z^s)dbf+V%l=*VF3o45n&CLSM<3$Nq}&_L1#YfL^Z_1z$E{TL`~5gJA|@l#4&SzMC^ zggVR+a+YvScKWO3DSbu|EKe#DN%DV zdLnFL2yrO+HJ)=r$Bohu5tvG|B1x3wjd##nPzy69cpIT>QrfB?oGNMql*SKi?pLl2%#B z*i0967Xo%ST5*6GR1_8kQ&;74yID%B@QRbFtptMtu*XmoBi&p=&@$~ZPBz|n*5j~8 zWJtMK8UyzW$8K$7@>F9@K zL&|DUd)dT5XWW(+=y+DyiTYS45=h~y@8HHz7wjZ2W^9WpqStu{Z`o~^V;oac}A{5BHd`E zR#QeZaC_&-M+f`X{{{{mZ`t0fQjJ3Mf~K`IeCL8C$bf7?;ni&6Yi@&J8Rg2>t~6lD{1F%H4|A%VqU`T4eX3N zG4&ENI}W>BCSav##vpmr1EVGNXzk0hC&IB78BWrQ>5Bibs7+~8R^;b7WBLfs^dsP` z7GMHoU93}YrOxN{?VSJ4Wj^zSZAG@A0vttPpCI)mG{kscD<`7~{tY;4#uV*LDLq5Z zHg>gopq>=P_{vbe!C(8*x9j;9r7j%rN4KdIC0xhNLSNhVlG{S4kc8jcE=ie-2;en@7 zc^c-lG$vcpPnt~+J3CIjdv=13{FcyPv^~5$D1AyE9Q~rN^@?TvtQI+1S1Iup)gh(W z9fn&XD?Ae^|JRLb3sLV=7c8>nilMWQOKnU_3{7XjE6jn!D@&9dig6?#*VkkO857QJ zxoU&9pEqSu^;;~~KK4NxlJp<}I<`fLXNYL?=_vf#{9Ar~bS%J|N+!z89t$t%u{V=| zY*ivJ$^+CDjj{4~pBP7XtrKGV8TkQH6&hDZ>||p!W(0o6X^ z`sP?|LSi(+bu5E#ze?I8xWqwTg-GlQ9$EPi3kq~X#m67Zed0BGomZzJ%z|YK0NzTb zbexcFY3Ba*H+z0lQUwKDfG~&8sr`xcOv#e=G{7@lrGbs@sN}y7g$nYxJz}MvBiFJu z1=2Y%HwFP9#`djvuypq%BxmA|mZIQ+2>dm&NZL?dCT?fTGwWk+R@+T!oa7D|BH8Z1 z$nC#7&L9z*q@AZ`Q{?3`FlwY#Iyh@h)u8Bl2t0@b1elgXDTv~iCmR@R_BCP;>E5dR z{Js5BBdz+vk%jvO=+Ji!IQ#LYvuDBl&;r zgLRWss(LP&=E}L3M~gqz(B^@=#y4l*Q^ZXC`s+!`YkSga$~tpw1!bv{%Yel;$C@7C zb(fB+YAc0`7gH8_e-pU^5jnN^d zU-r&n-c!G<6Pw-Gjj$Z`2*vQ zo93QxBAPtm8cg|{;p&e&io^0dL-%?jz@~Celo4@j_`#{}JLFKZNG=etLDl(=bq!}0 zL`LtTbMFxR2rF^LLi6xBha|({rbn(PHHu#6&)dXmC^SIsS?ub7&?eD@@>GM0N%ytD z8Mra59(aU0tO-6Z;6wU`SyK1-@muabV>3YY(3zkevCm}dMQ`gp6Zfl?t8l6($|psO zg7=X?48+xta}p{XM712bix+DyY``u}Uiinv=ECX>AgB%s112aX@}>QXlSjVOhB`aa z>GS_T>&9ata={YpX3en|pQH>twJimy3Z!;oP>Rkh91L zzdy0JKg{C(ZzdoR6rE^40SHn&&Z}!`UWev`P4JM(5ui^8UqE7Yf)&+Pi4|{& zlLQrVobQRF4?DKOd-oT)GX0KoKWv*Ag#%C8$P41A`D=j;=5c35BGT4=k`ORV>UU9c zGmHzYwsF2nm2!%&%4iBwy`x~4DH6tkJ#ixm8!;bzGYb-h$cdvm!>*-;c`?cAcZCQi z(dGx!4>(! zRmwZMrOXv)?gLfz(e&l9{h4BnlEt4;GdP7`2(}iiA3%bv8E;d&KN>88MB|**b-LOi zS;7lt7s3T5N9_F=;ky2?%)@vYcyjaQXYY~3KILSPN;++MGAGuA3Z!ykfWP^VhKi9C zW3GU%a?dbm6P%U^!u8AaOAO?|Mij3cHMRgfQ~f0r@wBe7@$1pKczfeYMf~64rnT- zoE6}kIr3hs$}A%Xdi>m_PY;O&`7{ils4O^A%>%-fw^|=S2D0Rz!@_$F!I9^<*NAO| zI@E>2#{!4{YF!2`xA>&jo2-X8{Hd)(ELbXBPcnw1H|ePm>?Pi8-*j1Na{{hH9u+4p z*{$aeBrz+(;M;1`OkNu+R_UsSk9XyD9bB%nGy#4BwkW`#EML*SSiz?@v-e;)hylA^@xCjArX_#6(lT@{SY&Jq6>%#ASPag412MZ~UY?0ggPTl}b%7 z9UCy4B}{!k@~3U* zk9QVWQ0jal^ts#-wJ47IQG1lKxGw(@)HSYX^QE*6|9;APimYJCoVPhdEbu6WB!zQL zX`Cv7Jq=RFfFeomUTIWeJ3*MTEkHL!j$V!eybl4m5*mS-=(xX#2bGs%Cu;3KPTS$1 zF8`CG8C1iN+__t0w zywBxTv$=-@d0{oe-OVf%x%Zji_Zyu|5pi;Fp+xMM1`rRG56D0DH*KC!KFEa?IJqj0 z<$yViJQ^n`JpAX`;5vgW{9^$~lKyD(osX7=UM6QFOxBBxB%iPhB_JttsB5t2l%(U2 z{|p2IPh|oIRbi-Pas4srDIA%P@fl(XXTkrKXhfH1!dh-yXOW_z`|dv^Da?*klK(}q z@`Whd_$ry~H->gCe@F`5KdoLL8LeUnh=uy7a{)Vb;xTcj=#-D!aOUZ+FmtD*G_^sX z5dW`i@B-R?^_63mqg-5Prl-kZ$ra!#1Oqw4IF2kq_b;IFMA_)vTYnY%yt z>#8sNece1?LGnT8-EB%RG>tOsU*~=u9kFW`!AERF*Y2K*Ho*@tRuiMq!#IuJ{R4o> zY?vB*9!6W)PGVdPQ=U~w6V`-X$u-R8TqRVXTK{aM``}Ajd?ajtA)B~?wR*8E5ActLZh#PG6H8c1 zE$^Ya&gAsNYG1B0DUX*P%c4C%(*)EUNh02m&`AUcTtlD^p)Zq`flrYf z#eB~tP+P&FwjV5a8~3qV)u9E!aCypGnLP%&e2ewdd_T#_{FO|A#PNUskp;+9Ij<;~ zM1*`8DwbvuNpOHfUN#v!mfCf~UFK^oR%@MST1Oe*No5&tch^cW3%J1QADzYJvDQoM zXyP^m;Tzc&moj7UB!LyCZ~0dThFVg;OzIayo#^1F1WVlli z^!T8iktM6^{6=LJ<{?p$lR9a&L8TX!DDL8@1{QZ(4c_542jBsj!BE``0O-GFNb}NB z(f^jpNFHVp+^r2rK(3Md9!LfTjg>Iw!8SgNxhtd<@VWv-TEhk)LT z<2_@5RD`{J0>rx;3>vevit8IvGD~6lzSp$0mF?rim`$FqDK*G|0B|ju*dk7`M*(ndM?RwQ(w->RjN4NbE3bD z-Q8w*b1*NYU!87X;Y%mn`_R+Z1bk*z$3KQitR#~5nomsPf0=Dt4S@^aCkRbb_<9G= zlM8ot5Q#dLKMs%`T<}b_^CK$wojec733YVvDa#C``w5V_ z)89}@25hF%GHq|>h3)PuXcq?;hl8twCvG4IGJSZ(m=2VC&aGkh?f?WO+Jch3+eH+x z5Kd(e4E5DNWA9Z0L9f$tcJ>g#ph2+~mfqUCVUltGQek!TEK$>+Zx)7#DC&P7t|ejD z@MeFcYzIlXZu95pv}3Knm@8{LEYXPd6qo}k4XkIGZ4|!qoVJ$VI*ckW>mwlry#9K% z2A>@D&zzw;Kd{_!)5X_}ihG zA4hZ!Gw~!z?*e8SU$iq3N&p~`?>Bz7{<{jA6R2=%6f2GU=Kru!hX$K01O^-`tRPSo zm*^6Tc`{hR66C4L52u~0c(d`tix^5a-tMmfi6pMrw0F{bf*gtAblok1*4on1 z(2|Z<;4>*X?*J^0-p&w9rh5-Hnk~UKMkZh9x&0~EMU$T#%%5{m+>{(wV8JNFY}I^R zmZpweqlQU_O8?Mq9?+8*7a{Rdjwcx1o~0Yqnk&!-UQ}EVrr3ur{f%I|4r*&_C>De*eP?i>ZDVkm#!YEf#}uNJrbx;oMB zcBDf0(u$kJ5PWi^RJiUty!;;?SKrDkei#!{T}~tUe)_-68)Bx76EQgnPd6-EC&0>1 zz74X|EEY-T;A!d`x!KQg5hZM_#);AqD96y64-kiF$gG2#Vb4DOJpoV1eAORyAxIMm*e3chj> zEG3$?(<%#()G%&LGe`Tzg9(S_unpW23z?R8Qjgjz0v0q?5Uvi@?VCOMCYrvM5nVsy zbRL~h)I$8|8w7<3`;@aq2eTD;ZuXMLFSFQJz+AE8cWs<+AE}wIe*qdE-itYsW}-bJ z8(G8Z&wR@&>1C;`a#KG%`w&F$A!mp8rDl*o*1S|!D?2mvMQaE`o&%;b&oB@99C3@V zUQo0HYQ*c0v;DJ*+wUk{8_neK%!~mLLcTFn*RQUofb}q`A*Y?jo>V3yu|+tkrA^}y zvhQhgAnr$mhr_K=7!p@JRY+k?sS?YVFXuu4tYVF7qveiQU`T72D)By`%1$jMt2JT^ z$I*UawXIk-F2+5j>biM~ znS7i87T&n9^|R@B@}Bp$_m_LeVk-HNDq&1Payh-qyJ|3n{-yA@7Ly;Uh2c)za?Zkf zE)zsnC0#A@lM3|vDnh)3FuJ9*QYzjdJJ~AICx~>E#h}EZuw}EJJ!oDjYQ`#`^PQ5g zdXn;+L#9??bgPX|+)grNUsl7wDZ;|_^IhwHa)df@?+_d|EYfkp=@LYHcm)V2E!KOP zo$WP}RN6^sr2O0XOneo2T533jYTIGthF)MLX7Y~pFycJLqDB8YP4zvh*!G)*1#2>h zk=@WYT)>M+8QBJIlaiY4(-_uav*z#YQ=4brIw?onJZbwAWTMG(d+#WvrK1mQDNv}m zDCp|*ThwyvQ#)cZNA($w&x1mDcqZl%WDuQ%0b)Gzls-SxC3AL%DBWcUWs#i?R4Nw` z0Khl41j+5Kg6m=wZCGiu`M+6udQ;@@_KB3*_Y58sgO0ss!;aI|zV{`#3nj)Hkp=D; zDpzmv6b3Hg5!O#2?e~P6BXGs66 zaORz_2(Q;LlaR0%X%DWsm#YaIhm$%PsG0j5tOY-se;#)qQ+V%6(6zVxuJ&2@%-s39 zAAM;8iGQPc!b{a&jguuI@_^;C!T8g!v;k7W0F)wKCfy2vEjKAV-FQ4X^_Jj9?aGCS zz4?*+DoChCkHx$v5P~PIpyE;j+eW(k#@^~mpPLsAx|#N%C0=rXd$29y{<@o7yPhNSD$1ISVrzI6=CFrvWb|Z+IP(Vui@RIOwJ#9 zgQ#7griVz)3pnY<$-Rx33c0omdZ-?rYDTX=Qq8U?8FkO5fl+1)w@R4hWE_vJ9BE0Y zkPcz#dz%>CIG#eX$+zzYj(8fy(>K4&j?FZWOdcSrc@bE?aA~bNr^;S^T%w0@(ZIS- zW!aFUupn=J{QU1No zJIQs$5&2&{kz#lHL&i}Goq$1-$(6_hr_pM8Gr7cxCP5<;8ctG`lR8fJa&XW*smzp+ z+Nr0=+szi`3tL0wpW6=!>ll%gAzk|TLWO5J9$nZnB;QQvdGSF|lZx=e(!C#Yco0QN zpk5`wpt$l`d`^HvTNxwv&ot0CMEwocm;jHY0CBrV;P@ORTJ%LB5{T%;odi#4#5Q%r zYa4XxWuHYdbOg$eIo9a=dHrh;y32R!hVJW7=9T>GxfeO7xdWG~n)gru4O7iIusiXY zV#;rMzrQlHrUc5RkIsG#?yAIme0|g5M*MFUt3Fkq^&y-4~f@FhSzI!#n7Q znsyemGSQT!5U!H*Nd}(Ci_-y5WPbRY3Z}rgMesPqLz&O!r}I@jJ&q6rJin4Lj;!Li zeS~RYB|;xLeC| z5QZ^|N!`ebFy**n^gL&8C0-5%ixhR#Yo`D_7RO0#T_mKqy)9VMK!^j3laAE4)ls}lYW*o=J1)n z;}AZd2M|_8^VgjL$uOHWg1JOE56R#|mUb4c4xB#}m6`?^1pRv)yt5n2M{R75aTw~w zu_!4x@z5>n1y77zBKTmauwB<7=0&e@ zJQ3avPnAVI<)dBK>+V(tqfO}`F*z*qmO=}&y9u5mMqA`3gy*a3>8LcSEgPf_x7t3< zFw(?1FCkj(uySYI-yJaPE192>XRRjO2fImQ(D5)OQaI%NNWMyvL>9zdewnW{6#dSN zmCWwFyz00Zo^(Z$Uog4NJkgl}$BcCh{j<{E0=h)-%copv{9mSFr9y6+DKPLa_){L5 zXW^d+b2^m~?W5}^AGOZhGl8UQpFW}9>iL3>rU`vswG=FUqC;z$j$7$T?AZa~|4>eN zI>X(3aeanot9$&Xo?*#;`jOC9P}E3>#Rol!uz16$f_G2J1dZXfByiCLl6TP~)p{52 zk0|(rK^E?cdC=p4ddk$FLdiz*WTPYhu}+Y2qPViy9Fr48Hi2a0&QqjZ*NhjCiMm|l z7rXTPlm=DjT;ahSk`pX~__#EoA$R=+8McNzZ*2x9HoOED6F-cGTVT~*KD&Ja=ou8) zu{PV0K0RwEY=&r0Sea$~pdar(l{kS(DvQewsrsyS0)VfXB;rXxdX^fHZ5Jd3B_4dA z`kh>S+^TJ7+&OxSNPtO2MVVJrV|-aHqfWLp{w@9BVMh0&Tew=d}5q zmU8*4CjIi;6HZi)J64;&ra zj&t|GNz=T~JV213g7Sfe)82E)3Qy9&VGpW%HLEm-w70O0`a;nHbXt=-#Og>m1#Kl8 zb*XS`kgSnKxY^_ghaqN!Wer4%yDo=yj7xgCq0B)U?0l_IW%OTuQxcwocfXqp;q|Np zY=rNG{;kS+t_5o&>wz@qxyS^RT3w^C3(Zv{)w~3q#;rk#zMyIXx3*ITO`||B$8+SU zc!TiMT;A5Rr14dsWktIPw;wCfXvNByq?(4WQ^iy?61&dz%(h|{Mu6BpvN!kVen$`C z!`zh>aw#a5j;Nb?1+X_8KC@fZAZ*e%ehiAI*+?>-tE{`JO$WYf|*H~b? zv3BB1TwEW-#b)1<(1-o=eW2Y&wsA(3erv1?pe|bOvZ>GP$=M^28R3VR!m#CMqRDS&7Y!~ zC^#AhBn!!8UDZ%+yX1q1HNy$%rcywFe=x@|>4M}22|u!jxdjo#o3AEe9)JEGS35nWTSg0uVC zO2561$}+9tuHwp}Dxq);i_w^@U0N9moHiEZSwbYRhWns0ss}DW37`SlAz4+o*Y=B~ zy1{#*TB921td??XFeZ|b6gwIbB|F2A$IdFU|1z)qRO z>GJ$W0D4_|_PKa*aJSzt_iN`tiu|GaE;;SfDC0r5LAp~Su8H1D1BJF$Gu!l?iZ>&U z9=!ZD?%SdQKSL&}Y?LFm!3H2&T)*RUAPl*VGriDQ5aXm5!90^1o(DNKcLWsxF^X%H zIWS7e122u8CEhGC5OIODDUx>(1=S2bXlH2m)j@m|e^DbS&gDdHBC`@KYmTTQO78!j z10ln}L5IY}bBr59k2^l*Q-2vvzhb>Z#W^=Y0)m?2jnvOP(ZI?mzsfk`6c^%l9eZ$e z(796`D40m_wVFzPDEWyF!TwAqTq20D51lvpHa%$yY)_?II@DF6V(-snKj|D69Iqov zq^4yaTTYWSS4|F0_^5`=p`)b*M7}Y3D?>Z!<2ss9?r{_lHD(o)b+J7D*@+X(CiM8C zUO)uF?dIg!cf@9(lUy$n3!-`|2v&qILS$VEO$P^7X(OlhZ(y!SBO$GfNjB=E2zuRh z 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 NXZr#G00004Sz2c=a47%) diff --git a/backend/vector.c b/backend/vector.c index 7584f29f..703cfb84 100644 --- a/backend/vector.c +++ b/backend/vector.c @@ -405,8 +405,9 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ int text_height; /* Font pixel size (so whole integers) */ float text_gap; /* Gap between barcode and text */ float guard_descent; - float addon_row_height; + const int is_codablockf = symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF; + float addon_row_height; float large_bar_height; int upcae_outside_text_height = 0; /* UPC-A/E outside digits font size */ float digit_ascent_factor = 0.25f; /* Assuming digit ascent roughly 25% less than font size */ @@ -420,6 +421,9 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ struct zint_vector_hexagon *hexagon, *last_hexagon = NULL; struct zint_vector_string *last_string = NULL; struct zint_vector_circle *circle, *last_circle = NULL; + struct zint_vector_rect **first_row_rects = z_alloca(sizeof(struct zint_vector_rect *) * (symbol->rows + 1)); + + memset(first_row_rects, 0, sizeof(struct zint_vector_rect *) * (symbol->rows + 1)); /* Free any previous rendering structures */ vector_free(symbol); @@ -638,6 +642,9 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ rect = vector_plot_create_rect(symbol, i + xoffset, yposn, block_width, row_height); if (!rect) return ZINT_ERROR_MEMORY; vector_plot_add_rect(symbol, rect, &last_rectangle); + if (i == 0) { + first_row_rects[r] = rect; + } } } yposn += row_height; @@ -854,16 +861,40 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ if ((symbol->output_options & BARCODE_BIND) && (symbol->rows > 1) && is_stackable(symbol->symbology)) { float sep_xoffset = xoffset; float sep_width = symbol->width; - float sep_height = 1.0f, sep_yoffset; + float sep_height = 1.0f, sep_yoffset, sep_half_height; if (symbol->option_3 > 0 && symbol->option_3 <= 4) { sep_height = symbol->option_3; } - sep_yoffset = yoffset - sep_height / 2; - if (symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF) { + sep_half_height = sep_height / 2.0f; + sep_yoffset = yoffset - sep_half_height; + if (is_codablockf) { /* Avoid 11-module start and 13-module stop chars */ sep_xoffset += 11; sep_width -= 11 + 13; } + /* Adjust original rectangles so don't overlap with separator(s) (important for RGBA) */ + for (r = 0; r < symbol->rows; r++) { + for (rect = first_row_rects[r], i = 0; rect && rect != first_row_rects[r + 1]; rect = rect->next, i++) { + if (is_codablockf) { /* Skip start and stop chars */ + if (i < 3) { + continue; + } + if ((i / 3) * 11 + 13 >= symbol->width) { /* 3 bars and 11 modules per char */ + break; + } + } + if (r != 0) { + rect->y += sep_height - sep_half_height; + rect->height -= r + 1 == symbol->rows ? sep_half_height : sep_height; + } else { + rect->height -= sep_half_height; + } + if (rect->height < 0) { + rect->height = 0.0f; + /* TODO: warn? */ + } + } + } for (r = 1; r < symbol->rows; r++) { const float row_height = symbol->row_height[r - 1] ? symbol->row_height[r - 1] : large_bar_height; rect = vector_plot_create_rect(symbol, sep_xoffset, (r * row_height) + sep_yoffset, @@ -886,8 +917,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ /* Top */ rect = vector_plot_create_rect(symbol, 0.0f, ybind_top, vector->width, symbol->border_width); if (!rect) return ZINT_ERROR_MEMORY; - if (!(symbol->output_options & BARCODE_BOX) - && (symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF)) { + if (!(symbol->output_options & BARCODE_BOX) && is_codablockf) { /* CodaBlockF bind - does not extend over horizontal whitespace */ rect->x = xoffset; rect->width -= xoffset + roffset; @@ -896,8 +926,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ /* Bottom */ rect = vector_plot_create_rect(symbol, 0.0f, ybind_bot, vector->width, symbol->border_width); if (!rect) return ZINT_ERROR_MEMORY; - if (!(symbol->output_options & BARCODE_BOX) - && (symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF)) { + if (!(symbol->output_options & BARCODE_BOX) && is_codablockf) { /* CodaBlockF bind - does not extend over horizontal whitespace */ rect->x = xoffset; rect->width -= xoffset + roffset; diff --git a/backend_qt/qzint.cpp b/backend_qt/qzint.cpp index e235880c..45b16153 100644 --- a/backend_qt/qzint.cpp +++ b/backend_qt/qzint.cpp @@ -24,11 +24,10 @@ //#include #include "qzint.h" -#include #include +#include #include -/* the following include was necessary to compile with Qt 5.15 on Windows */ -/* Qt 5.7 did not require it. */ +/* The following include is necessary to compile with Qt 5.15 on Windows; Qt 5.7 did not require it */ #include // Shorthand @@ -61,49 +60,49 @@ namespace Zint { return ret; } - /* Helper to calculate max right and bottom of elements for fudging render() */ - static void getMaxRectsRightBottom(struct zint_vector *vector, int &maxRight, int &maxBottom) { + /* Helper to calculate max right and bottom of elements for fudging render() */ + static void getMaxRectsRightBottom(struct zint_vector *vector, int &maxRight, int &maxBottom) { struct zint_vector_rect *rect; struct zint_vector_hexagon *hex; struct zint_vector_circle *circle; - maxRight = maxBottom = -1; + maxRight = maxBottom = -1; - for (rect = vector->rectangles; rect; rect = rect->next) { - if (rect->x + rect->width > maxRight) { - maxRight = rect->x + rect->width; - } - if (rect->y + rect->height > maxBottom) { - maxBottom = rect->y + rect->height; - } - } + for (rect = vector->rectangles; rect; rect = rect->next) { + if (rect->x + rect->width > maxRight) { + maxRight = rect->x + rect->width; + } + if (rect->y + rect->height > maxBottom) { + maxBottom = rect->y + rect->height; + } + } - for (hex = vector->hexagons; hex; hex = hex->next) { - if (hex->x + hex->diameter > maxRight) { - maxRight = hex->x + hex->diameter; - } - if (hex->y + hex->diameter > maxBottom) { - maxBottom = hex->y + hex->diameter; - } - } + for (hex = vector->hexagons; hex; hex = hex->next) { + if (hex->x + hex->diameter > maxRight) { + maxRight = hex->x + hex->diameter; + } + if (hex->y + hex->diameter > maxBottom) { + maxBottom = hex->y + hex->diameter; + } + } - for (circle = vector->circles; circle; circle = circle->next) { - if (circle->x + circle->diameter + circle->width > maxRight) { - maxRight = circle->x + circle->diameter + circle->width; - } - if (circle->y + circle->diameter + circle->width > maxBottom) { - maxBottom = circle->y + circle->diameter + circle->width; - } - } - // TODO: Strings? - } + for (circle = vector->circles; circle; circle = circle->next) { + if (circle->x + circle->diameter + circle->width > maxRight) { + maxRight = circle->x + circle->diameter + circle->width; + } + if (circle->y + circle->diameter + circle->width > maxBottom) { + maxBottom = circle->y + circle->diameter + circle->width; + } + } + // TODO: Strings? + } /* Segment constructors */ QZintSeg::QZintSeg() : m_eci(0) {} QZintSeg::QZintSeg(const QString& text, const int ECIIndex) : m_text(text), m_eci(ECIIndexToECI(ECIIndex)) {} QZint::QZint() - : m_zintSymbol(NULL), m_symbol(BARCODE_CODE128), m_input_mode(UNICODE_MODE), + : m_zintSymbol(nullptr), m_symbol(BARCODE_CODE128), m_input_mode(UNICODE_MODE), m_height(0.0f), m_option_1(-1), m_option_2(0), m_option_3(0), m_scale(1.0f), @@ -135,16 +134,33 @@ namespace Zint { } void QZint::resetSymbol() { - if (m_zintSymbol) - ZBarcode_Delete(m_zintSymbol); - + m_error = 0; m_lastError.clear(); - m_zintSymbol = ZBarcode_Create(); - m_zintSymbol->output_options |= m_borderType | m_fontSetting; + + if (m_zintSymbol) { + ZBarcode_Clear(m_zintSymbol); + } else if (!(m_zintSymbol = ZBarcode_Create())) { + m_error = ZINT_ERROR_MEMORY; + m_lastError = QSL("Insufficient memory for Zint structure"); + return; + } + m_zintSymbol->symbology = m_symbol; m_zintSymbol->height = m_height; + m_zintSymbol->scale = m_scale; m_zintSymbol->whitespace_width = m_whitespace; m_zintSymbol->whitespace_height = m_vwhitespace; + m_zintSymbol->border_width = m_borderWidth; + m_zintSymbol->output_options = m_borderType | m_fontSetting; + if (m_dotty) { + m_zintSymbol->output_options |= BARCODE_DOTTY_MODE; + } + if (m_cmyk) { + m_zintSymbol->output_options |= CMYK_COLOUR; + } + if (m_gssep) { + m_zintSymbol->output_options |= GS1_GS_SEPARATOR; + } if (m_quiet_zones) { m_zintSymbol->output_options |= BARCODE_QUIET_ZONES; } @@ -154,39 +170,9 @@ namespace Zint { if (m_compliant_height) { m_zintSymbol->output_options |= COMPLIANT_HEIGHT; } - m_zintSymbol->border_width = m_borderWidth; - m_zintSymbol->option_1 = m_option_1; - m_zintSymbol->option_2 = m_option_2; - m_zintSymbol->option_3 = m_option_3; - m_zintSymbol->input_mode = m_input_mode; - if (m_dotty) { - m_zintSymbol->output_options |= BARCODE_DOTTY_MODE; - } - m_zintSymbol->dot_size = m_dot_size; - m_zintSymbol->guard_descent = m_guardDescent; - m_zintSymbol->structapp = m_structapp; - m_zintSymbol->show_hrt = m_show_hrt ? 1 : 0; - m_zintSymbol->eci = m_eci; - m_zintSymbol->scale = m_scale; - if (m_gs1parens) { - m_zintSymbol->input_mode |= GS1PARENS_MODE; - } - if (m_gs1nocheck) { - m_zintSymbol->input_mode |= GS1NOCHECK_MODE; - } - if (m_gssep) { - m_zintSymbol->output_options |= GS1_GS_SEPARATOR; - } if (m_reader_init) { m_zintSymbol->output_options |= READER_INIT; } - if (m_warn_level) { - m_zintSymbol->warn_level = m_warn_level; - } - if (m_debug) { - m_zintSymbol->debug |= ZINT_DEBUG_PRINT; - } - strcpy(m_zintSymbol->fgcolour, m_fgColor.name().toLatin1().right(6)); if (m_fgColor.alpha() != 0xFF) { strcat(m_zintSymbol->fgcolour, m_fgColor.name(QColor::HexArgb).toLatin1().mid(1,2)); @@ -195,10 +181,24 @@ namespace Zint { if (m_bgColor.alpha() != 0xFF) { strcat(m_zintSymbol->bgcolour, m_bgColor.name(QColor::HexArgb).toLatin1().mid(1,2)); } - if (m_cmyk) { - m_zintSymbol->output_options |= CMYK_COLOUR; - } strcpy(m_zintSymbol->primary, m_primaryMessage.toLatin1().left(127)); + m_zintSymbol->option_1 = m_option_1; + m_zintSymbol->option_2 = m_option_2; + m_zintSymbol->option_3 = m_option_3; + m_zintSymbol->show_hrt = m_show_hrt ? 1 : 0; + m_zintSymbol->input_mode = m_input_mode; + if (m_gs1parens) { + m_zintSymbol->input_mode |= GS1PARENS_MODE; + } + if (m_gs1nocheck) { + m_zintSymbol->input_mode |= GS1NOCHECK_MODE; + } + m_zintSymbol->eci = m_eci; + m_zintSymbol->dot_size = m_dot_size; + m_zintSymbol->guard_descent = m_guardDescent; + m_zintSymbol->structapp = m_structapp; + m_zintSymbol->warn_level = m_warn_level; + m_zintSymbol->debug = m_debug ? ZINT_DEBUG_PRINT : 0; } void QZint::encode() { @@ -811,10 +811,8 @@ namespace Zint { // Plot rectangles rect = m_zintSymbol->vector->rectangles; if (rect) { - int maxRight = -1, maxBottom = -1; // Used for fudging below - if (borderWidth() && (borderType() & (BARCODE_BIND | BARCODE_BOX))) { - getMaxRectsRightBottom(m_zintSymbol->vector, maxRight, maxBottom); - } + int maxRight = -1, maxBottom = -1; // Used for fudging below + getMaxRectsRightBottom(m_zintSymbol->vector, maxRight, maxBottom); QBrush brush(Qt::SolidPattern); while (rect) { if (rect->colour == -1) { @@ -822,10 +820,10 @@ namespace Zint { } else { brush.setColor(colourToQtColor(rect->colour)); } - // Allow for rounding errors on translation/scaling TODO: proper calc - float fudgeW = rect->x + rect->width == maxRight ? 0.1f : 0.0f; - float fudgeH = rect->y + rect->height == maxBottom ? 0.1f : 0.0f; - painter.fillRect(QRectF(rect->x, rect->y, rect->width + fudgeW, rect->height + fudgeH), brush); + // Allow for rounding errors on translation/scaling TODO: proper calc + float fudgeW = rect->x + rect->width == maxRight ? 0.1f : 0.0f; + float fudgeH = rect->y + rect->height == maxBottom ? 0.1f : 0.0f; + painter.fillRect(QRectF(rect->x, rect->y, rect->width + fudgeW, rect->height + fudgeH), brush); rect = rect->next; } } diff --git a/frontend_qt/grpAztec.ui b/frontend_qt/grpAztec.ui index 59c1b6f7..bd6596ed 100644 --- a/frontend_qt/grpAztec.ui +++ b/frontend_qt/grpAztec.ui @@ -39,6 +39,16 @@ be set based on data + + + + false + + + true + + + diff --git a/frontend_qt/grpUltra.ui b/frontend_qt/grpUltra.ui index 716c88aa..16478e9d 100644 --- a/frontend_qt/grpUltra.ui +++ b/frontend_qt/grpUltra.ui @@ -39,6 +39,16 @@ based on data + + + + false + + + true + + + diff --git a/frontend_qt/mainwindow.cpp b/frontend_qt/mainwindow.cpp index ef47c430..b1b64c6d 100644 --- a/frontend_qt/mainwindow.cpp +++ b/frontend_qt/mainwindow.cpp @@ -860,6 +860,7 @@ void MainWindow::open_data_dialog_seg(const int seg_no) } disconnect(&dlg, SIGNAL(dataChanged(const QString&, bool, int)), this, SLOT(on_dataChanged(const QString&, bool, int))); + update_preview(); } void MainWindow::open_data_dialog() @@ -1155,14 +1156,18 @@ void MainWindow::on_encoded() if (QApplication::activeModalWidget() != nullptr) { // Protect against encode in popup dialog return; } - enableActions(true); - errtxtBar_set(false /*isError*/); + enableActions(); + errtxtBar_set(); if (!chkAutoHeight->isEnabled() || chkAutoHeight->isChecked() || !heightb->isEnabled()) { /* setValue() rounds up/down to precision (decimals 3), we want round up only */ float height = (float) (ceil(m_bc.bc.height() * 1000.0f) / 1000.0f); heightb->setValue(height); } + + if (m_optionWidget) { + automatic_info_set(); + } } void MainWindow::on_errored() @@ -1170,8 +1175,11 @@ void MainWindow::on_errored() if (QApplication::activeModalWidget() != nullptr) { // Protect against error in popup dialog (Sequence Export) return; } - enableActions(false); - errtxtBar_set(true /*isError*/); + enableActions(); + errtxtBar_set(); + if (m_optionWidget) { + automatic_info_set(); + } } void MainWindow::filter_symbologies() @@ -3026,8 +3034,9 @@ void MainWindow::createMenu() m_menu->addAction(m_quitAct); } -void MainWindow::enableActions(bool enabled) +void MainWindow::enableActions() { + const bool enabled = m_bc.bc.getError() < ZINT_ERROR; btnCopyBMP->setEnabled(enabled); btnCopySVG->setEnabled(enabled); btnSave->setEnabled(enabled); @@ -3101,8 +3110,9 @@ void MainWindow::errtxtBar_clear() } } -void MainWindow::errtxtBar_set(bool isError) +void MainWindow::errtxtBar_set() { + const bool isError = m_bc.bc.getError() >= ZINT_ERROR; if (!m_bc.bc.hasErrors()) { errtxtBar_clear(); view->setMinimumSize(QSize(0, 35)); @@ -3120,6 +3130,267 @@ void MainWindow::errtxtBar_set(bool isError) } } +void MainWindow::automatic_info_set() +{ + if (!m_optionWidget) { + return; + } + const int symbology = bstyle_items[bstyle->currentIndex()].symbology; + const bool isError = m_bc.bc.getError() >= ZINT_ERROR; + QLineEdit *txt; + QComboBox *cmb; + + if (symbology == BARCODE_AZTEC || symbology == BARCODE_HIBC_AZTEC) { + if ((txt = m_optionWidget->findChild(QSL("txtAztecAutoInfo")))) { + if (!isError && !get_rad_val(QSL("radAztecSize"))) { + const int w = m_bc.bc.encodedWidth(); + if (w <= 27) { // Note Zint always favours Compact on automatic + txt->setText(QString::asprintf("(%d X %d Compact)", w, w)); + } else { + txt->setText(QString::asprintf("(%d X %d (%d Layers))", w, w, (w - 15) / 4)); + } + } else { + txt->setText(QSL("")); + } + } + + } else if (symbology == BARCODE_CHANNEL) { + if ((cmb = m_optionWidget->findChild(QSL("cmbChannel")))) { + if (!isError && cmb->currentIndex() == 0) { + const int channels = (m_bc.bc.encodedWidth() - 7) / 4; + cmb->setItemText(0, QString::asprintf("Automatic (%d)", channels)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_CODABLOCKF || symbology == BARCODE_HIBC_BLOCKF) { + if ((cmb = m_optionWidget->findChild(QSL("cmbCbfWidth")))) { + if (!isError && cmb->currentIndex() == 0) { + const int data = (m_bc.bc.encodedWidth() - 57) / 11; + cmb->setItemText(0, QString::asprintf("Automatic (%d (%d data))", data + 5, data)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + if ((cmb = m_optionWidget->findChild(QSL("cmbCbfHeight")))) { + if (!isError && cmb->currentIndex() == 0) { + cmb->setItemText(0, QString::asprintf("Automatic (%d)", m_bc.bc.encodedRows())); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_CODE16K) { + if ((cmb = m_optionWidget->findChild(QSL("cmbC16kRows")))) { + if (!isError && cmb->currentIndex() == 0) { + cmb->setItemText(0, QString::asprintf("Automatic (%d)", m_bc.bc.encodedRows())); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_CODE49) { + if ((cmb = m_optionWidget->findChild(QSL("cmbC49Rows")))) { + if (!isError && cmb->currentIndex() == 0) { + cmb->setItemText(0, QString::asprintf("Automatic (%d)", m_bc.bc.encodedRows())); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_CODEONE) { + if ((cmb = m_optionWidget->findChild(QSL("cmbC1Size")))) { + if (!isError && cmb->currentIndex() == 0) { + const int r = m_bc.bc.encodedRows(); + const int w = m_bc.bc.encodedWidth(); + // Note Versions S & T not used by Zint in automatic mode + static const char vers[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' }; + int idx; + if (r <= 40) { + idx = (r == 22) + (r == 28) * 2 + (r == 40) * 3; + } else { + idx = (r == 70) + (r == 104) * 2 + (r == 148) * 3 + 4; + } + cmb->setItemText(0, QString::asprintf("Automatic (%d X %d (Version %c))", r, w, vers[idx])); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_DATAMATRIX || symbology == BARCODE_HIBC_DM) { + if ((cmb = m_optionWidget->findChild(QSL("cmbDM200Size")))) { + if (!isError && cmb->currentIndex() == 0) { + const int r = m_bc.bc.encodedRows(); + const int w = m_bc.bc.encodedWidth(); + int z = 0; + if (r == w) { + if (r <= 26) { + z = (r - 8) / 2; + } else if (r <= 52) { + z = 10 + (r - 32) / 4; + } else if (r <= 104) { + z = 16 + (r - 64) / 8; + } else { + z = 22 + (r - 120) / 12; + } + cmb->setItemText(0, QString::asprintf("Automatic (%d x %d (Zint %d))", r, w, z)); + } else if ((r == 8 && (w == 18 || w == 32)) || (r == 12 && (w == 26 || w == 36)) + || (r == 16 && (w == 36 || w == 48))) { + z = 25 + (w == 32) + (w == 26) * 2 + (r == 12 && w == 36) * 3 + + (r == 16 && w == 36) * 4 + (w == 48) * 5; + cmb->setItemText(0, QString::asprintf("Automatic (%d x %d (Zint %d))", r, w, z)); + } else { // DMRE + if (r == 8) { + z = 31 + (w == 64) + (w == 80) * 2 + (w == 96) * 3 + (w == 120) * 4 + (w == 144) * 5; + } else if (r == 12) { + z = 37 + (w == 88); + } else if (r == 16) { + z = 39; + } else if (r == 20) { + z = 40 + (w == 44) + (w == 64) * 2; + } else if (r == 22) { + z = 43; + } else if (r == 24) { + z = 44 + (w == 64); + } else { /* if (r == 26) */ + z = 46 + (w == 48) + (w == 64) * 2; + } + cmb->setItemText(0, QString::asprintf("Automatic (%d x %d (DMRE) (Zint %d))", r, w, z)); + } + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_DOTCODE) { + if ((cmb = m_optionWidget->findChild(QSL("cmbDotCols")))) { + if (!isError && cmb->currentIndex() == 0) { + cmb->setItemText(0, QString::asprintf("Automatic (%d)", m_bc.bc.encodedWidth())); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_GRIDMATRIX) { + if ((cmb = m_optionWidget->findChild(QSL("cmbGridSize")))) { + if (!isError && cmb->currentIndex() == 0) { + const int r = m_bc.bc.encodedRows(); + cmb->setItemText(0, QString::asprintf("Automatic (%d x %d (Version %d))", r, r, (r - 6) / 12)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_HANXIN) { + if ((cmb = m_optionWidget->findChild(QSL("cmbHXSize")))) { + if (!isError && cmb->currentIndex() == 0) { + const int r = m_bc.bc.encodedRows(); + cmb->setItemText(0, QString::asprintf("Automatic (%d x %d (Version %d))", r, r, (r - 21) / 2)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_MICROPDF417 || symbology == BARCODE_HIBC_MICPDF) { + if ((cmb = m_optionWidget->findChild(QSL("cmbMPDFCols")))) { + if (!isError && cmb->currentIndex() == 0) { + const int w = m_bc.bc.encodedWidth(); + int cols; + if (w == 38) { + cols = 1; + } else if (w == 55) { + cols = 2; + } else if (w == 82) { + cols = 3; + } else { /* if (w == 99) */ + cols = 4; + } + cmb->setItemText(0, QString::asprintf("Automatic (%d)", cols)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_MICROQR) { + if ((cmb = m_optionWidget->findChild(QSL("cmbMQRSize")))) { + if (!isError && cmb->currentIndex() == 0) { + const int r = m_bc.bc.encodedRows(); + cmb->setItemText(0, QString::asprintf("Automatic (%d x %d (Version M%d))", r, r, (r - 9) / 2)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_PDF417 || symbology == BARCODE_PDF417COMP || symbology == BARCODE_HIBC_PDF) { + if ((cmb = m_optionWidget->findChild(QSL("cmbPDFCols")))) { + if (!isError && cmb->currentIndex() == 0) { + const int w = m_bc.bc.encodedWidth(); + const int overhead = get_rad_val(QSL("radPDFTruncated")) || symbology == BARCODE_PDF417COMP ? 35 : 69; + cmb->setItemText(0, QString::asprintf("Automatic (%d)", (w - overhead) / 17)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + if ((cmb = m_optionWidget->findChild(QSL("cmbPDFRows")))) { + if (!isError && cmb->currentIndex() == 0) { + const int r = m_bc.bc.encodedRows(); + cmb->setItemText(0, QString::asprintf("Automatic (%d)", r)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_QRCODE || symbology == BARCODE_HIBC_QR) { + if ((cmb = m_optionWidget->findChild(QSL("cmbQRSize")))) { + if (!isError && cmb->currentIndex() == 0) { + const int r = m_bc.bc.encodedRows(); + cmb->setItemText(0, QString::asprintf("Automatic (%d x %d (Version %d))", r, r, (r - 17) / 4)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_RMQR) { + if ((cmb = m_optionWidget->findChild(QSL("cmbRMQRSize")))) { + if (!isError && cmb->currentIndex() == 0) { + const int r = m_bc.bc.encodedRows(); + const int w = m_bc.bc.encodedWidth(); + int z; + if (r == 11 || r == 13) { + z = 11 + (r == 13) * 6 + (w == 43) + (w == 59) * 2 + (w == 77) * 3 + (w == 99) * 4 + + (w == 139) * 5; + } else { + z = (w == 59) + (w == 77) * 2 + (w == 99) * 3 + (w == 139) * 4; + if (r == 7) { + z += 1; + } else if (r == 9) { + z += 6; + } else if (r == 15) { + z += 23; + } else { /* if (r == 17) */ + z += 28; + } + } + cmb->setItemText(0, QString::asprintf("Automatic (R%dx%d (Zint %d))", r, w, z)); + } else { + cmb->setItemText(0, QSL("Automatic")); + } + } + + } else if (symbology == BARCODE_ULTRA) { + if ((txt = m_optionWidget->findChild(QSL("txtUltraAutoInfo")))) { + if (!isError) { + const int w = m_bc.bc.encodedWidth(); + const int r = m_bc.bc.encodedRows(); + txt->setText(QString::asprintf("(%d X %d)", w, r)); + } else { + txt->setText(QSL("")); + } + } + } +} + QPoint MainWindow::get_context_menu_pos(const QPoint &pos, QWidget *widget) { QPoint menuPos(pos); diff --git a/frontend_qt/mainwindow.h b/frontend_qt/mainwindow.h index c3a69238..1f2e48ca 100644 --- a/frontend_qt/mainwindow.h +++ b/frontend_qt/mainwindow.h @@ -144,12 +144,14 @@ protected: void createActions(); void createMenu(); - void enableActions(bool enabled); + void enableActions(); void copy_to_clipboard(const QString &filename, const QString &name, const char *mimeType = nullptr); void errtxtBar_clear(); - void errtxtBar_set(bool isError); + void errtxtBar_set(); + + void automatic_info_set(); QLineEdit *get_seg_textbox(int seg_no); QComboBox *get_seg_eci(int seg_no);