From b3a3c0d3b4ee13eaf34b3b9de5f0f80584fb0c6b Mon Sep 17 00:00:00 2001 From: gitlost Date: Wed, 11 Mar 2026 15:48:24 +0000 Subject: [PATCH] AZTEC: use algorithm adapted from ZXing for optimized encodation (ticket #347), props Frank Yellin and Rustam Abdullaev; also improve performance of `FAST_MODE` DATAMATRIX: assert max size on `edges` will fit in unsigned short; use MASK for DMRE/SQUARE `option_3` setting PDF417: assert max size on `edges` will fit in unsigned short GUI: fix setting AZTEC size and ECC combos if not previously set manual: fix not mentioning AZTEC re `FAST_MODE`; gs1 mode footnote: mention 3940's length; pandoc -> 3.9 test suite: DOTCODE: account for new BWIPP input length guard --- ChangeLog | 7 +- backend/aztec.c | 1510 ++++----- backend/aztec.h | 136 +- backend/dmatrix.c | 10 +- backend/pdf417.c | 4 +- backend/tests/test_aztec.c | 3408 ++++++++++++++++----- backend/tests/test_dotcode.c | 2 +- backend/tests/test_mailmark.c | 36 +- backend/tests/testcommon.c | 6 +- backend/tests/testcommon.h | 1 + backend/tests/tools/bwipp_dump.ps.tar.xz | Bin 155288 -> 157128 bytes backend/tests/tools/run_zxingcpp_tests.sh | 2 + docs/README | 12 +- docs/manual.html | 37 +- docs/manual.pmd | 21 +- docs/manual.txt | 23 +- docs/zint.1 | 4 +- docs/zint.1.pmd | 2 +- frontend_qt/mainwindow.cpp | 5 +- 19 files changed, 3668 insertions(+), 1558 deletions(-) diff --git a/ChangeLog b/ChangeLog index b9f722e9..e6042e3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -Version 2.16.0.9 (dev) not released yet (2026-02-26) +Version 2.16.0.9 (dev) not released yet (2026-03-11) ==================================================== **Incompatible changes** @@ -19,8 +19,9 @@ Changes add `ZINT_TEST`-only "--test" option to do various internal tests - GS1SE: exclude GS1_128 from requisite AIs check as may be spread across more than one barcode (ticket #348, props Harald Oehlmann and Terry Burton) -- AZTEC: add improved encoding algorithm, previous algorithm available via - "--fast" (input_mode |= FAST_MODE) +- AZTEC: add improved encoding algorithm adapted from ZXing, props Frank Yellin + and Rustam Abdullaev; previous algorithm available via "--fast" (input_mode + |= FAST_MODE) - AZTEC: add new option "--azfull" (option_3 = ZINT_AZTEC_FULL) to only consider Full symbols (not Compact ones) on automatic sizing - GS1: new `GS1RAW_MODE` (CLI "--gs1raw") and GS1 Syntax Engine "Unbracketed AI diff --git a/backend/aztec.c b/backend/aztec.c index 69897654..4be3eebd 100644 --- a/backend/aztec.c +++ b/backend/aztec.c @@ -77,14 +77,9 @@ static int az_count_chr(const unsigned char source[], const int length, const in static char az_get_next_mode(const char modes[], const int length, int i) { const char current_mode = AZ_MASK(modes[i]); - do { - i++; - } while (i < length && AZ_MASK(modes[i]) == current_mode); + for (i++; i < length && AZ_MASK(modes[i]) == current_mode; i++); - if (i >= length) { - return AZ_E; - } - return AZ_MASK(modes[i]); + return i < length ? AZ_MASK(modes[i]) : AZ_E; } #define AZ_DOUBLE_PUNCT_NO_LEN_CHECK(s, i) \ @@ -101,13 +96,9 @@ static int az_reduce(char *modes, unsigned char *source, const int length) { modes[j] = modes[i]; if ((modes[i] == AZ_P || (modes[i] & AZ_PS)) && AZ_DOUBLE_PUNCT_NO_LEN_CHECK(source, i)) { if (source[i] == '\r') { - source[j] = 'a'; - } else if (source[i] == '.') { - source[j] = 'b'; - } else if (source[i] == ',') { - source[j] = 'c'; + source[j] = 'a'; /* "\r\n" */ } else { - source[j] = 'd'; + source[j] = 'b' + 7 - ((source[i] & 0x0F) >> 1); /* ". " -> 'b', ", " -> 'c', ": " -> 'd' */ } i += 2; } else { @@ -125,8 +116,8 @@ static int az_reduce(char *modes, unsigned char *source, const int length) { /* Return mapped mode */ static char az_mode_char(const char mode) { - /* Same order as AZ_U, AZ_L etc */ - static const char mode_chars[] = { '?', 'U', 'L', 'M', 'P', 'D', 'B', 'X', 'E' }; + /* Same order as AZ_U, AZ_L etc */ + static const char mode_chars[] = { 'U', 'L', 'M', 'P', 'D', 'B', 'X', 'E' }; char ch; assert(ARRAY_SIZE(mode_chars) == AZ_E + 1); @@ -167,7 +158,7 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const if (!z_isascii(source[i]) || !AztecFlags[source[i]]) { modes[i] = AZ_B; } else if (gs1 && source[i] == '\x1D') { - modes[i] = AZ_P; /* For FLG(n) & FLG(0) = FNC1 */ + modes[i] = AZ_P; /* For FLG(0) = FNC1 */ } else { modes[i] = AztecModes[source[i]]; } @@ -208,9 +199,7 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const } } else if (current_mode == AZ_D) { - if (next_mode != AZ_D && count <= 4) { - memset(modes + i, AZ_D, 2 * count); - } else if (next_mode == AZ_D && count <= 7) { + if ((next_mode != AZ_D && count <= 4) || (next_mode == AZ_D && count <= 7)) { memset(modes + i, AZ_D, 2 * count); } } @@ -249,13 +238,9 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const count = az_count_chr(source, reduced_length, i, '\r'); next_mode = az_get_next_mode(modes, reduced_length, i); - if (current_mode == AZ_U && (next_mode == AZ_U || next_mode == AZ_B) && count == 1) { - modes[i] = AZ_P; - - } else if (current_mode == AZ_L && (next_mode == AZ_L || next_mode == AZ_B) && count == 1) { - modes[i] = AZ_P; - - } else if (current_mode == AZ_P || next_mode == AZ_P) { + if ((current_mode == AZ_U && (next_mode == AZ_U || next_mode == AZ_B) && count == 1) + || (current_mode == AZ_L && (next_mode == AZ_L || next_mode == AZ_B) && count == 1) + || current_mode == AZ_P || next_mode == AZ_P) { modes[i] = AZ_P; } @@ -292,10 +277,8 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const } } else if (current_mode == AZ_M) { - if ((next_mode == AZ_E || next_mode == AZ_U || next_mode == AZ_L || next_mode == AZ_M) - && count <= 4) { - memset(modes + i, AZ_P, count); - } else if (next_mode == AZ_B && count <= 2) { + if (((next_mode == AZ_E || next_mode == AZ_U || next_mode == AZ_L || next_mode == AZ_M) && count <= 4) + || (next_mode == AZ_B && count <= 2)) { memset(modes + i, AZ_P, count); } @@ -314,44 +297,29 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const next_mode = az_get_next_mode(modes, reduced_length, i); if (current_mode == AZ_U) { - if (next_mode == AZ_E && count <= 5) { - memset(modes + i, AZ_U, count); - } else if ((next_mode == AZ_U || next_mode == AZ_L || next_mode == AZ_M || next_mode == AZ_P - || next_mode == AZ_B) && count <= 9) { + if ((next_mode == AZ_E && count <= 5) || (next_mode != AZ_D && count <= 9)) { memset(modes + i, AZ_U, count); } } else if (current_mode == AZ_L) { - if (next_mode == AZ_E && count <= 5) { + if ((next_mode == AZ_E && count <= 5) + || (next_mode == AZ_L && count <= 14) + || ((next_mode == AZ_M || next_mode == AZ_P || next_mode == AZ_B) && count <= 9)) { memset(modes + i, AZ_L, count); } else if (next_mode == AZ_U && count == 1) { modes[i] = AZ_L; - - } else if (next_mode == AZ_L && count <= 14) { - memset(modes + i, AZ_L, count); - - } else if ((next_mode == AZ_M || next_mode == AZ_P || next_mode == AZ_B) && count <= 9) { - memset(modes + i, AZ_L, count); } } else if (current_mode == AZ_M) { - if ((next_mode == AZ_E || next_mode == AZ_U) && count <= 9) { - memset(modes + i, AZ_M, count); - - } else if ((next_mode == AZ_L || next_mode == AZ_B) && count <= 14) { - memset(modes + i, AZ_M, count); - - } else if ((next_mode == AZ_M || next_mode == AZ_P) && count <= 19) { + if (((next_mode == AZ_E || next_mode == AZ_U) && count <= 9) + || ((next_mode == AZ_L || next_mode == AZ_B) && count <= 14) + || ((next_mode == AZ_M || next_mode == AZ_P) && count <= 19)) { memset(modes + i, AZ_M, count); } } else if (current_mode == AZ_P) { - if (next_mode == AZ_E && count <= 5) { - memset(modes + i, AZ_U, count); - - } else if ((next_mode == AZ_U || next_mode == AZ_L || next_mode == AZ_M || next_mode == AZ_P - || next_mode == AZ_B) && count <= 9) { + if ((next_mode == AZ_E && count <= 5) || (next_mode != AZ_D && count <= 9)) { memset(modes + i, AZ_U, count); } } @@ -396,10 +364,8 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const } else if (current_mode == AZ_M && next_mode == AZ_M && count <= 2) { memset(modes + i, AZ_M_PS, count); - } else if (current_mode == AZ_D && next_mode != AZ_D && count <= 3) { - memset(modes + i, AZ_D_PS, count); - - } else if (current_mode == AZ_D && next_mode == AZ_D && count <= 6) { + } else if (current_mode == AZ_D + && ((next_mode != AZ_D && count <= 3) || (next_mode == AZ_D && count <= 6))) { memset(modes + i, AZ_D_PS, count); } @@ -432,7 +398,7 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const } /* Cheapo to check if input all of one type of Byte-only, Upper, Lower or Digit, returning AZ_B, AZ_U, AZ_L or AZ_D - resp., or 0 if not */ + resp., or -1 if not */ static char az_all_byte_only_or_uld(const unsigned char source[], const int length) { int i; int byte_only, upper, lower, digit; @@ -441,7 +407,7 @@ static char az_all_byte_only_or_uld(const unsigned char source[], const int leng byte_only += !z_isascii(source[i]) || !AztecFlags[source[i]]; } if (byte_only) { - return byte_only == length ? AZ_B : 0; + return byte_only == length ? AZ_B : -1; } for (i = 0, upper = 0, lower = 0, digit = 0; i < length; i++) { upper += !!(AztecFlags[source[i]] & AZ_U_F); @@ -449,11 +415,10 @@ static char az_all_byte_only_or_uld(const unsigned char source[], const int leng /* Dot, comma & space only non-digit AZ_D_F, exclude in case they're AZ_P doubles */ digit += z_isdigit(source[i]); } - return upper == length ? AZ_U : lower == length ? AZ_L : digit == length ? AZ_D : 0; + return upper == length ? AZ_U : lower == length ? AZ_L : digit == length ? AZ_D : -1; } -/* Count number of initial consecutive punct chars (with no special treatment of multi-mode chars, unlike - following `az_count_punct()`), and assuming not GS1_MODE */ +/* Count number of initial consecutive punct chars, assuming not GS1_MODE */ static int az_count_initial_puncts(const unsigned char source[], const int length) { int i; @@ -467,409 +432,642 @@ static int az_count_initial_puncts(const unsigned char source[], const int lengt return i; } -/* Count number of consecutive punct chars, treating multi-modes CR (without LF), dot and comma singularly */ -static int az_count_punct(const unsigned char source[], const int length, const int position, const int gs1, - int *begins_double) { - const unsigned ch = source[position]; +/* Optimized encoding stuff - see `az_binary_string()` */ - assert(z_isascii(ch)); +struct az_token { + short value; + short count; /* If negative, bit count of simple (not binary shift) token, else byte count */ +}; - *begins_double = AZ_DOUBLE_PUNCT(source, length, position); +struct az_token_list { + struct az_token *tokens; + unsigned short used; + unsigned short size; /* Capacity */ +}; - if (!*begins_double && (ch == '\r' || ch == '.' || ch == ',')) { - return 1; +/* Represents all information about a sequence necessary to generate the current output */ +struct az_state { + /* The list of tokens output. If in B/S mode, this does *not* yet include the token for those bytes */ + struct az_token_list tokens; + short mode; /* The current mode of the encoding, or the mode to return to if in B/S mode */ + short byteCount; /* If non-zero, the number of most recent bytes that should be output in B/S mode */ + unsigned short bitCount; /* The total number of bits generated (including B/S) */ +}; + +struct az_state_list { + struct az_state* states; + unsigned short used; + unsigned short size; +}; + +#define AZ_MIN_STATES_SIZE 4 +#define AZ_MIN_TOKENS_SIZE 32 + +/* Initialize a state list */ +static int az_state_list_init(struct az_state_list *list, const unsigned short initial_size) { + const unsigned short size = initial_size < AZ_MIN_STATES_SIZE ? AZ_MIN_STATES_SIZE : initial_size; + + if (!(list->states = (struct az_state *) malloc(sizeof(struct az_state) * size))) { + list->used = list->size = 0; + return 0; } - if ((gs1 && ch == '\x1D') || (AztecFlags[ch] & AZ_P_F)) { - int i; - if (gs1) { - for (i = position + 1 + *begins_double; i < length && z_isascii(source[i]); i++) { - if (AZ_DOUBLE_PUNCT(source, length, i)) { - i++; - } else if (source[i] != '\x1D' && (!(AztecFlags[source[i]] & AZ_P_F) - || source[i] == '\r' || source[i] == '.' || source[i] == ',')) { - break; - } + list->size = size; + list->used = 0; + return 1; +} + +/* Copy a state `src` to `dst` */ +static int az_state_cpy(const struct az_state *src, struct az_state *dst) { + const unsigned short size = src->tokens.size < AZ_MIN_TOKENS_SIZE ? AZ_MIN_TOKENS_SIZE : src->tokens.size; + + *dst = *src; + if (!(dst->tokens.tokens = (struct az_token *) malloc(sizeof(struct az_token) * size))) { + return 0; + } + if (src->tokens.used) { + memcpy(dst->tokens.tokens, src->tokens.tokens, sizeof(struct az_token) * src->tokens.used); + } + dst->tokens.size = size; + return 1; +} + +/* Free `state`, i.e. free its token list */ +static void az_state_free(struct az_state *state) { + if (state->tokens.tokens) { + free(state->tokens.tokens); + state->tokens.tokens = NULL; + } +} + +/* Check that there's enough room for `extra` more tokens in `state` */ +static int az_tokens_add_chk(struct az_state *state, const int extra) { + assert(extra < AZ_MIN_TOKENS_SIZE); + if (!state->tokens.tokens) { + const unsigned short size = AZ_MIN_TOKENS_SIZE; + if (!(state->tokens.tokens = (struct az_token *) malloc(sizeof(struct az_token) * size))) { + return 0; + } + state->tokens.size = size; + state->tokens.used = 0; + } else if (state->tokens.used + extra >= state->tokens.size) { + struct az_token *tokens; + const unsigned short size = state->tokens.size * 2; + if (size <= state->tokens.size /* Overflow */ + || !(tokens = (struct az_token *) realloc(state->tokens.tokens, sizeof(struct az_token) * size))) { + return 0; + } + assert(size > state->tokens.used + extra); + state->tokens.tokens = tokens; + state->tokens.size = size; + } + return 1; +} + +/* Check have enough room to add a state to state list `list` */ +static int az_state_list_add_chk(struct az_state_list *list) { + if (list->used == list->size) { + struct az_state *states; + const unsigned short size = list->size * 2; + if (size <= list->size /* Overflow */ + || !(states = (struct az_state *) realloc(list->states, sizeof(struct az_state) * size))) { + return 0; + } + list->states = states; + list->size = size; + } + return 1; +} + +/* Free all states (including their tokens) of state list `list` */ +static void az_state_list_free(struct az_state_list *list) { + int i; + if (list->states) { + for (i = 0; i < list->used; i++) { + if (list->states[i].tokens.tokens) { + free(list->states[i].tokens.tokens); } - return i - position; - } else { - for (i = position + 1 + *begins_double; i < length && z_isascii(source[i]); i++) { - if (AZ_DOUBLE_PUNCT(source, length, i)) { - i++; - } else if (!(AztecFlags[source[i]] & AZ_P_F) - || source[i] == '\r' || source[i] == '.' || source[i] == ',') { - break; - } - } - return i - position; + } + free(list->states); + list->states = NULL; + } + list->used = list->size = 0; +} + +#define AZ_FNC1_VAL 32 /* Pseudo-value for FNC1 - converted to 0 on setting token value */ + +/* Shorthand to add a token to state `s` */ +#define AZ_ADD_TOKEN(s, v, c) \ + (s)->tokens.tokens[(s)->tokens.used].value = (v); \ + (s)->tokens.tokens[(s)->tokens.used++].count = (c) + +/* Add a new state to `list` from `state`, with a latch if modes differ, and then a char, or 2 if `value2` set */ +static int az_LatchMaybeAndAppend(const struct az_state *state, const int from, const int mode, const int value, + const int value2, struct az_state_list *list) { + int latchModeBitCount = mode == AZ_D ? 4 : 5; + int val = value; + int bitCount = state->bitCount; + struct az_state *new_state; + + if (!az_state_list_add_chk(list)) { + return 0; + } + new_state = list->states + list->used++; + if (!az_state_cpy(state, new_state) || !az_tokens_add_chk(new_state, 4 /*extra*/)) { + return 0; + } + /* End B/S if any */ + if (state->byteCount != 0) { + AZ_ADD_TOKEN(new_state, from - state->byteCount, state->byteCount); + new_state->byteCount = 0; + } + + /* Latch if necessary */ + if (mode != state->mode) { + AZ_ADD_TOKEN(new_state, AztecLatch[state->mode][mode], -AztecLatchNum[state->mode][mode]); + bitCount += AztecLatchNum[state->mode][mode]; + } + if (val == AZ_FNC1_VAL) { /* FNC1 */ + latchModeBitCount += 3; + val = 0; + } + AZ_ADD_TOKEN(new_state, val, -latchModeBitCount); + bitCount += latchModeBitCount; + if (value2 != -1) { + latchModeBitCount = mode == AZ_D ? 4 : 5; + val = value2; + if (val == AZ_FNC1_VAL) { /* FNC1 */ + latchModeBitCount += 3; + val = 0; + } + AZ_ADD_TOKEN(new_state, val, -latchModeBitCount); + bitCount += latchModeBitCount; + } + new_state->mode = mode; + new_state->bitCount = bitCount; + return 1; +} + +/* Add a new state to `list` from `state`, with a temporary shift to a different mode to output a single value */ +static int az_ShiftAndAppend(const struct az_state *state, const int from, const int mode, const int value, + struct az_state_list *list) { + const int thisModeBitCount = state->mode == AZ_D ? 4 : 5; + int bitCount = 5; + int val = value; + struct az_state *new_state; + + assert(state->mode != mode); + + if (!az_state_list_add_chk(list)) { + return 0; + } + new_state = list->states + list->used++; + if (!az_state_cpy(state, new_state) || !az_tokens_add_chk(new_state, 3 /*extra*/)) { + return 0; + } + /* End B/S if any */ + if (state->byteCount != 0) { + AZ_ADD_TOKEN(new_state, from - state->byteCount, state->byteCount); + new_state->byteCount = 0; + } + + /* Shifts exist only to AZ_U and AZ_P, both with tokens size 5 */ + AZ_ADD_TOKEN(new_state, AztecShift[state->mode][mode], -thisModeBitCount); + if (val == AZ_FNC1_VAL) { /* FNC1 */ + val = 0; + bitCount += 3; + } + AZ_ADD_TOKEN(new_state, val, -bitCount); + new_state->mode = state->mode; + new_state->bitCount = state->bitCount + thisModeBitCount + bitCount; + return 1; +} + +/* Add a new state to `list` from `state`, with a latch to AZ_D and shift to AZ_P or AZ_U encoding `value` + - may save a bit due to AZ_D's 4-bit shift */ +static int az_DigitLatchShiftAndAppend(const struct az_state *state, const int from, const int shiftMode, + const int value, struct az_state_list *list) { + const int bitCount = state->bitCount + AztecLatchNum[state->mode][AZ_D] + 4 /*P/S or U/S*/; + int val = value; + int valBitCount = 5; + struct az_state *new_state; + + assert(state->mode != AZ_D); + assert(shiftMode == AZ_P || shiftMode == AZ_U); + assert(state->mode != AZ_U || shiftMode != AZ_U); + + if (!az_state_list_add_chk(list)) { + return 0; + } + new_state = list->states + list->used++; + if (!az_state_cpy(state, new_state) || !az_tokens_add_chk(new_state, 4 /*extra*/)) { + return 0; + } + /* End B/S if any */ + if (state->byteCount != 0) { + AZ_ADD_TOKEN(new_state, from - state->byteCount, state->byteCount); + new_state->byteCount = 0; + } + + /* Latch to AZ_D */ + AZ_ADD_TOKEN(new_state, AztecLatch[state->mode][AZ_D], -AztecLatchNum[state->mode][AZ_D]); + /* P/S or U/S */ + AZ_ADD_TOKEN(new_state, AztecShift[AZ_D][shiftMode], -4); + if (val == AZ_FNC1_VAL) { /* FNC1 */ + valBitCount += 3; + val = 0; + } + AZ_ADD_TOKEN(new_state, val, -valBitCount); + new_state->mode = AZ_D; + new_state->bitCount = bitCount + valBitCount; + return 1; +} + +/* Add a new state to `list` from `state`, but with an additional char in B/S mode, or 2 if `from2` set */ +static int az_AddByteShiftChar(const struct az_state *state, const int from, const int from2, + struct az_state_list *list) { + int mode = state->mode; + int bitCount = state->bitCount; + const int deltaBitCount = state->byteCount == 0 || state->byteCount == 31 ? 18 : state->byteCount == 62 ? 9 : 8; + struct az_state *new_state; + + if (!az_state_list_add_chk(list)) { + return 0; + } + new_state = list->states + list->used++; + if (!az_state_cpy(state, new_state) || !az_tokens_add_chk(new_state, 3 /*extra*/)) { + return 0; + } + + if (state->mode == AZ_P || state->mode == AZ_D) { + assert(state->byteCount == 0); + AZ_ADD_TOKEN(new_state, AztecLatch[mode][AZ_U], -AztecLatchNum[mode][AZ_U]); + bitCount += AztecLatchNum[mode][AZ_U]; + mode = AZ_U; + } + new_state->mode = mode; + new_state->byteCount = state->byteCount + 1; + new_state->bitCount = bitCount + deltaBitCount; + if (new_state->byteCount == 2047 + 31) { + /* The string is as long as it's allowed to be - end it */ + AZ_ADD_TOKEN(new_state, from + 1 - new_state->byteCount, new_state->byteCount); + new_state->byteCount = 0; + } + if (from2 != -1) { + const int deltaBitCount2 = new_state->byteCount == 0 || new_state->byteCount == 31 + ? 18 : new_state->byteCount == 62 ? 9 : 8; + new_state->byteCount++; + new_state->bitCount += deltaBitCount2; + if (new_state->byteCount == 2047 + 31) { + /* The string is as long as it's allowed to be - end it */ + AZ_ADD_TOKEN(new_state, from2 + 1 - new_state->byteCount, new_state->byteCount); + new_state->byteCount = 0; } } + return 1; +} +/* Set the state `ret_state` identical to `state`, but no longer in B/S mode */ +static int az_EndByteShift(const struct az_state *state, struct az_state *ret_state, const int from) { + + if (!az_state_cpy(state, ret_state)) { + return 0; + } + if (state->byteCount == 0) { + return 1; + } + if (!az_tokens_add_chk(ret_state, 1 /*extra*/)) { + return 0; + } + AZ_ADD_TOKEN(ret_state, from - state->byteCount, state->byteCount); + ret_state->byteCount = 0; + return 1; +} + +/* Helper for `az_IsBetterThanOrEqualTo()` to return bit-cost of B/S */ +static int az_CalculateByteShiftCost(const struct az_state *state) { + if (state->byteCount > 0) { + if (state->byteCount > 31) { + return 20 + (state->byteCount > 62); /* Two B/S's or one B/S with extended length */ + } + return 10; /* One B/S */ + } return 0; } -/* Count number of consecutive Upper chars, treating multi-mode space singularly */ -static int az_count_upper(const unsigned char source[], const int length, const int position) { - int i; +/* Return 1 if `state` is better (or equal) to be in than `other` state under all possible circumstances */ +static int az_IsBetterThanOrEqualTo(const struct az_state *state, const struct az_state *other) { + int newModeBitCount = state->bitCount + AztecLatchNum[state->mode][other->mode]; - if (source[position] == ' ') { - return 1; - } - for (i = position; i < length && source[i] != ' ' && z_isascii(source[i]) && (AztecFlags[source[i]] & AZ_U_F); - i++); - - return i - position; -} - -/* Count number of consecutive Lower chars, treating multi-mode space singularly */ -static int az_count_lower(const unsigned char source[], const int length, const int position) { - int i; - - if (source[position] == ' ') { - return 1; - } - for (i = position; i < length && source[i] != ' ' && z_isascii(source[i]) && (AztecFlags[source[i]] & AZ_L_F); - i++); - - return i - position; -} - -/* Count number of consecutive Mixed chars, treating multi-mode CR singularly */ -static int az_count_mixed(const unsigned char source[], const int length, const int position, const int gs1) { - int i; - - if (source[position] == '\r') { - return 1; - } - for (i = position; i < length && z_isascii(source[i]) && (AztecFlags[source[i]] & AZ_M_F) - && (!gs1 || source[i] != '\x1D') && source[i] != '\r'; i++); - - return i - position; -} - -/* Count number of consecutive Digit chars, treating multi-modes dot, comma and space singularly */ -static int az_count_digit(const unsigned char source[], const int length, const int position) { - int i; - - if (source[position] == '.' || source[position] == ',' || source[position] == ' ') { - return 1; - } - for (i = position; i < length && z_isdigit(source[i]); i++); /* Dot, comma & space only non-digit AZ_D_F */ - - return i - position; -} - -/* Count number of consecutive Byte-only chars */ -static int az_count_byte_only(const unsigned char source[], const int length, const int position) { - int i; - - for (i = position; i < length && (!z_isascii(source[i]) || !AztecFlags[source[i]]); i++); - - return i - position; -} - -/* Bit-size of encoding punct chars */ -static int az_punct_size(const unsigned char source[], const int len, const int gs1) { - int i; - int cnt_doubles = 0; - - if (gs1) { - int cnt_fnc1s = 0; - for (i = 0; i + 1 < len; i++) { - cnt_doubles += AZ_DOUBLE_PUNCT_NO_LEN_CHECK(source, i); - cnt_fnc1s += source[i] == '\x1D'; + if (other->byteCount > 0) { + if (state->byteCount < other->byteCount) { + /* Add additional B/S encoding cost of other, if any */ + newModeBitCount += az_CalculateByteShiftCost(other) - az_CalculateByteShiftCost(state); + } else if (state->byteCount > other->byteCount) { + /* Maximum possible additional cost (`state` ends up exceeding the 31 byte boundary + and `other` state can stay beneath it) */ + newModeBitCount += 10; } - cnt_fnc1s += source[i] == '\x1D'; - return 5 * (len - cnt_doubles - cnt_fnc1s) + (cnt_fnc1s << 3); } - for (i = 0; i + 1 < len; i++) { - cnt_doubles += AZ_DOUBLE_PUNCT_NO_LEN_CHECK(source, i); - } - return 5 * (len - cnt_doubles); + return newModeBitCount <= other->bitCount; } -struct az_edge { - unsigned char mode; - unsigned char startMode; /* For Byte edges */ - unsigned short from; /* Position in input data, 0-based */ - unsigned short len; - unsigned short size; /* Cumulative number of bits */ - unsigned short bytes; /* Byte count for AZ_X */ - unsigned short previous; /* Index into edges array */ -}; - -/* Note 1st row of edges not used so valid previous cannot point there, i.e. won't be zero */ -#define AZ_PREVIOUS(edges, edge) \ - ((edge)->previous ? (edges) + (edge)->previous : NULL) - #if 0 -#include "aztec_trace.h" +#define AZ_DEBUG_LIST +#endif +#ifndef AZ_DEBUG_LIST +static void az_dump_list(const struct az_state_list *list, const char *prefix) { + (void)list, (void)prefix; +} #else -#define AZ_TRACE_Edges(px, s, l, im, p, v) -#define AZ_TRACE_AddEdge(s, l, es, p, v, e) do { (void)(s); (void)(l); } while (0) -#define AZ_TRACE_NotAddEdge(s, l, es, p, v, ij, e) do { (void)(s); (void)(l); } while (0) +static void az_dump_list(const struct az_state_list *list, const char *prefix) { + static char spaces[50 + 1] = " "; + const int pl = (int) strlen(prefix); + int i; + fprintf(stderr, "%sSize %d\n", prefix, (int) list->used); + for (i = 0; i < list->used; i++) { + const struct az_state *state = list->states + i; + fprintf(stderr, "%.*s %d: mode %d, Size(tokens) %d\n", pl, spaces, (int) i, state->mode, + (int) state->tokens.used); + } +} #endif -/* Initialize a new edge. */ -static void az_new_Edge(const struct az_edge *edges, const char mode, const unsigned char *source, const int from, - const int len, const int gs1, const int initial_mode, const struct az_edge *previous, - struct az_edge *edge) { +/* Iterate through states, removing those that are sub-optimal */ +static void az_SimplifyStates(struct az_state_list *list) { + int i, j; + const int rmap_size = (list->used + 7) >> 3; + unsigned char *rmap = (unsigned char *) z_alloca(rmap_size); /* Map of entries removed */ + const struct az_state *new_state, *old_state; - /* Bit-size of switching modes from row to col */ - static const unsigned int switch_sizes[AZ_NUM_MODES - 1][AZ_NUM_MODES] = { - /* U L M P D B */ - /*U*/ { 0, 5, 5, 5 + 5, 5, 5 + 5, }, - /*L*/ { 5 + 4, 0, 5, 5 + 5, 5, 5 + 5, }, - /*M*/ { 5, 5, 0, 5, 5 + 5, 5 + 5, }, - /*P*/ { 5, 5 + 5, 5 + 5, 0, 5 + 5, 5 + 5 + 5, }, - /*D*/ { 4, 4 + 5, 4 + 5, 4 + 5 + 5, 0, 4 + 5 + 5, }, - /*B - not used*/ - }; - const int mask_mode = AZ_MASK(mode); - int previousMode; - int previousStartMode; + memset(rmap, 0, rmap_size); - assert(len > 0); + az_dump_list(list, " SS in "); - edge->mode = mode; - edge->from = from; - edge->len = len; - if (previous) { - edge->size = previous->size; - edge->previous = previous - edges; - previousMode = AZ_MASK(previous->mode); - previousStartMode = previous->startMode; - } else { - edge->size = 0; - edge->previous = 0; - previousMode = AZ_MASK(initial_mode); - previousStartMode = previousMode; - } - - switch (mask_mode) { - case AZ_U: - case AZ_L: - case AZ_M: - if (mode & AZ_PS) { - assert(len <= 2); - edge->size += 5 /*P/S*/ + az_punct_size(source + from, len, gs1); - } else if (mode & AZ_US) { - assert(len == 1); - assert(mask_mode == AZ_L); - edge->size += 5 /*U/S*/ + 5; - } else { - edge->size += 5 * len; - } - edge->size += switch_sizes[(previousMode == AZ_B ? previousStartMode : previousMode) - 1][mask_mode - 1]; - edge->startMode = mask_mode; - break; - case AZ_P: - assert(mask_mode == mode); - edge->size += az_punct_size(source + from, len, gs1); - edge->size += switch_sizes[(previousMode == AZ_B ? previousStartMode : previousMode) - 1][mask_mode - 1]; - edge->startMode = AZ_U; - break; - case AZ_D: - if (mode & AZ_PS) { - assert(len <= 2); - edge->size += 4 /*P/S*/ + az_punct_size(source + from, len, gs1); - } else if (mode & AZ_US) { - assert(len == 1); - edge->size += 4 /*U/S*/ + 5; - } else { - edge->size += 4 * len; - } - edge->size += switch_sizes[(previousMode == AZ_B ? previousStartMode : previousMode) - 1][mask_mode - 1]; - edge->startMode = AZ_U; - break; - case AZ_B: - assert(mask_mode == mode); - if (previousMode != mask_mode) { - edge->size += switch_sizes[previousMode - 1][mask_mode - 1]; - if (len > 31) { - edge->size += 11; - } - edge->bytes = len; - } else { - if (len + previous->bytes > 31) { - if (previous->bytes <= 31) { - /* Note this may be sub-optimal as not taken into account when previous edge added */ - edge->size += 11; + for (i = 0; i < list->used; i++) { + if (!(rmap[i >> 3] & (1 << (i & 0x7)))) { + new_state = list->states + i; + for (j = i + 1; j < list->used; j++) { + if (!(rmap[j >> 3] & (1 << (j & 0x7)))) { + old_state = list->states + j; + if (az_IsBetterThanOrEqualTo(old_state, new_state)) { + rmap[i >> 3] |= 1 << (i & 0x7); + break; + } + if (az_IsBetterThanOrEqualTo(new_state, old_state)) { + rmap[j >> 3] |= 1 << (j & 0x7); } } - edge->bytes = len + previous->bytes; - } - edge->size += len << 3; - edge->startMode = previousStartMode; - break; - } - assert(edge->startMode && AZ_MASK(edge->startMode) == edge->startMode && edge->startMode != AZ_B); -} - -/* Add an edge for a mode at a vertex if no existing edge or if more optimal than existing edge */ -static void az_addEdge(const unsigned char *source, const int length, struct az_edge *edges, const char mode, - const int from, const int len, const int gs1, const int initial_mode, const struct az_edge *previous) { - struct az_edge edge; - const int vertexIndex = from + len; - const int v_ij = vertexIndex * AZ_NUM_MODES + AZ_MASK(mode) - 1; - - az_new_Edge(edges, mode, source, from, len, gs1, initial_mode, previous, &edge); - - if (edges[v_ij].mode == 0 || edges[v_ij].size > edge.size) { - AZ_TRACE_AddEdge(source, length, edges, previous, vertexIndex, &edge); - edges[v_ij] = edge; - } else { - AZ_TRACE_NotAddEdge(source, length, edges, previous, vertexIndex, v_ij, &edge); - } -} - -/* Add edges for the various modes at a vertex */ -static void az_addEdges(const unsigned char source[], const int length, const int gs1, const int initial_mode, - struct az_edge *edges, const int from, const struct az_edge *previous) { - const unsigned char ch = source[from]; - int len; - - if (z_isascii(ch) && AztecFlags[ch]) { - int begins_double; - - if ((len = az_count_punct(source, length, from, gs1, &begins_double))) { - az_addEdge(source, length, edges, AZ_P, from, len, gs1, initial_mode, previous); - - az_addEdge(source, length, edges, AZ_U_PS, from, 1 + begins_double, gs1, initial_mode, previous); - az_addEdge(source, length, edges, AZ_L_PS, from, 1 + begins_double, gs1, initial_mode, previous); - if (ch != '\r') { - az_addEdge(source, length, edges, AZ_M_PS, from, 1 + begins_double, gs1, initial_mode, previous); - } - if (ch != '.' && ch != ',') { - az_addEdge(source, length, edges, AZ_D_PS, from, 1 + begins_double, gs1, initial_mode, previous); } } - if ((len = az_count_upper(source, length, from))) { - az_addEdge(source, length, edges, AZ_U, from, len, gs1, initial_mode, previous); - } - if ((len = az_count_lower(source, length, from))) { - az_addEdge(source, length, edges, AZ_L, from, len, gs1, initial_mode, previous); - } - if ((len = az_count_mixed(source, length, from, gs1))) { - az_addEdge(source, length, edges, AZ_M, from, len, gs1, initial_mode, previous); - } - if ((len = az_count_digit(source, length, from))) { - az_addEdge(source, length, edges, AZ_D, from, len, gs1, initial_mode, previous); - } - - if (z_isupper(ch)) { /* Space only non-upper AZ_U_F */ - az_addEdge(source, length, edges, AZ_L_US, from, 1, gs1, initial_mode, previous); - az_addEdge(source, length, edges, AZ_D_US, from, 1, gs1, initial_mode, previous); + } + for (i = list->used - 1; i >= 0; i--) { + if (rmap[i >> 3] & (1 << (i & 0x7))) { + const int k = i + 1; + /* Remove consecutive entries in one go */ + for (j = i - 1; j >= 0 && (rmap[j >> 3] & (1 << (j & 0x7))); j--) { + az_state_free(list->states + j + 1); + } + az_state_free(list->states + j + 1); + if (k < list->used) { + memmove(list->states + j + 1, list->states + k, sizeof(struct az_state) * (list->used - k)); + } + list->used -= i - j; + i = j + 1; } } - if (!gs1 || ch != '\x1D') { - if (ch == '\r' || ch == ' ' || ch == '.' || ch == ',') { /* Multi-mode chars */ - len = 1; - } else { - len = 1 + az_count_byte_only(source, length, from + 1); - } - az_addEdge(source, length, edges, AZ_B, from, len, gs1, initial_mode, previous); - } + az_dump_list(list, " SS out "); } -/* Default, close to optimal encoding, using Dijkstra-based algorithm adapted from Data Matrix one by Alex Geller. - Note that a bitstream that is encoded to be shortest based on mode choices may not be so after bit-stuffing */ -static int az_define_modes(char modes[], unsigned char source[], const int length, const int gs1, - const char initial_mode, const int debug_print) { - int i, j, v_i; - int minimalJ, minimalSize; - struct az_edge *edge; - int mode_end, mode_len; - int reduced_length; - struct az_edge *edges; - - if ((length + 1) * AZ_NUM_MODES > USHRT_MAX - || !(edges = (struct az_edge *) calloc((length + 1) * AZ_NUM_MODES, sizeof(struct az_edge)))) { +/* Return a set of states for a Punct double - see `az_UpdateStateForChar()` below */ +static int az_UpdateStateForPair(const struct az_state *state, const int from, const int pairCode, + struct az_state_list *ret_list) { + /* Possibility 1: latch to AZ_P, and then append this code */ + if (!az_LatchMaybeAndAppend(state, from, AZ_P, pairCode, -1 /*value2*/, ret_list)) { return 0; } - az_addEdges(source, length, gs1, initial_mode, edges, 0, NULL); + if (state->mode != AZ_P) { + /* Possibility 2: shift to AZ_P, and then append this code. + Every state except AZ_P (handled above) can shift */ + if (!az_ShiftAndAppend(state, from, AZ_P, pairCode, ret_list)) { + return 0; + } + } + if (pairCode == 3 || pairCode == 4) { + /* Both characters are in AZ_D. Sometimes better to just add two digits */ + if (!az_LatchMaybeAndAppend(state, from, AZ_D, 16 - pairCode /*'.' or ','*/, 1 /*space*/, ret_list)) { + return 0; + } + } + if (state->byteCount > 0) { + /* It only makes sense to do the characters as binary if already in B/S mode */ + if (!az_AddByteShiftChar(state, from, from + 1, ret_list)) { + return 0; + } + } + return 1; +} - AZ_TRACE_Edges("DEBUG Initial situation\n", source, length, initial_mode, edges, 0); - - assert(length > 0); /* Suppress clang-tidy clang-analyzer-security.ArrayBound warning */ - - for (i = 1; i < length; i++) { - v_i = i * AZ_NUM_MODES; - for (j = 0; j < AZ_NUM_MODES; j++) { - if (edges[v_i + j].mode) { - az_addEdges(source, length, gs1, initial_mode, edges, i, edges + v_i + j); +/* Return a set of states that represent the possible ways of updating this state for the next character. + The resulting set of states are added to `ret_list` */ +static int az_UpdateStateForChar(const struct az_state *state, const unsigned char *source, const int from, + const int gs1, struct az_state_list *ret_list) { + unsigned char ch = source[from]; + const int fnc1 = gs1 && ch == '\x1D'; + const int charInCurrentTable = (fnc1 && state->mode == AZ_P) + || (z_isascii(ch) && (AztecFlags[ch] & (1 << state->mode))); + if (z_isascii(ch)) { + int mode; + for (mode = 0; mode < AZ_NUM_MODES; mode++) { + const int charInModeTable = (fnc1 && mode == AZ_P) || (AztecFlags[ch] & (1 << mode)); + if (charInModeTable) { + /* Try generating the char by latching to its mode */ + if (!charInCurrentTable || mode == state->mode || (mode == AZ_D && !fnc1)) { + /* If the char is in the current table, we don't want to latch to any other mode except possibly + digit (which uses only 4 bits). Any other latch would be equally successful *after* this char, + and so wouldn't save any bits */ + const int latchChar = fnc1 ? AZ_FNC1_VAL : AztecChar[mode][ch]; + if (!az_LatchMaybeAndAppend(state, from, mode, latchChar, -1 /*value2*/, ret_list)) { + return 0; + } + } + /* Try generating the char by switching to its mode */ + if (!charInCurrentTable && AztecShift[state->mode][mode] >= 0) { + /* It never makes sense to temporarily shift to another mode if the char exists in the current + mode. That can never save bits */ + const int shiftChar = fnc1 ? AZ_FNC1_VAL : AztecChar[mode][ch]; + if (!az_ShiftAndAppend(state, from, mode, shiftChar, ret_list)) { + return 0; + } + } } } - AZ_TRACE_Edges("DEBUG situation after adding edges to vertices at position %d\n", source, length, - initial_mode, edges, i); - } - - AZ_TRACE_Edges("DEBUG Final situation\n", source, length, initial_mode, edges, length); - - #if 0 - { - const int fw = length * AZ_NUM_MODES > 100 ? 3 : 2; - fputs("Dump of edges:\n", stdout); - for (i = 0; i < length + 1; i++) { - v_i = i * AZ_NUM_MODES; - for (j = 0; j < AZ_NUM_MODES; j++) { - fprintf(stdout, " %*d(%02X,%*d,%*d,%*d)", - fw, v_i + j, edges[v_i + j].mode, fw, edges[v_i + j].len, fw, edges[v_i + j].size, - fw, edges[v_i + j].previous); + /* It may be better to latch to AZ_D early if have shift (saves 1 bit) */ + if (state->mode != AZ_D && !charInCurrentTable && !(AztecFlags[ch] & AZ_D_F) + && (fnc1 || (AztecFlags[ch] & (AZ_U_F | AZ_P_F)))) { + const int shiftMode = AztecFlags[ch] & AZ_U_F ? AZ_U : AZ_P; + const int shiftChar = fnc1 ? AZ_FNC1_VAL : AztecChar[shiftMode][ch]; + if (!az_DigitLatchShiftAndAppend(state, from, shiftMode, shiftChar, ret_list)) { + return 0; } - fputc('\n', stdout); } - fputc('\n', stdout); } - #endif + if (!fnc1 && (state->byteCount > 0 || !charInCurrentTable)) { + /* It's never worthwhile to go into B/S mode if not already in B/S mode, and the char exists in current mode. + That can never save bits over just outputting the char in the current mode */ + if (!az_AddByteShiftChar(state, from, -1 /*from2*/, ret_list)) { + return 0; + } + } + return 1; +} - v_i = length * AZ_NUM_MODES; - minimalJ = -1; - minimalSize = INT_MAX; - for (j = 0; j < AZ_NUM_MODES; j++) { - edge = edges + v_i + j; - if (edge->mode) { - if (debug_print) { - printf("edges[%d][%d][0] size %d\n", length, j, edge->size); - } - if (edge->size < minimalSize) { - minimalSize = edge->size; - minimalJ = j; - if (debug_print) printf(" set minimalJ %d\n", minimalJ); +/* Update a set of states for a Punct double - see `az_UpdateStateListForChar()` below */ +static int az_UpdateStateListForPair(struct az_state_list *list, const int from, const int pairCode) { + int i; + struct az_state_list s_ret_list; + struct az_state_list *ret_list = &s_ret_list; + if (!az_state_list_init(ret_list, list->size)) { + return 0; + } + for (i = 0; i < list->used; i++) { + if (!az_UpdateStateForPair(list->states + i, from, pairCode, ret_list)) { + az_state_list_free(ret_list); + return 0; + } + } + az_SimplifyStates(ret_list); + + az_state_list_free(list); + list->states = ret_list->states; + list->size = ret_list->size; + list->used = ret_list->used; + + return 1; +} + +/* Update a set of states for a new character by updating each state for the new character, merging the results, + and then removing the non-optimal states */ +static int az_UpdateStateListForChar(struct az_state_list *list, const unsigned char *source, const int from, + const int gs1) { + int i; + struct az_state_list s_ret_list; + struct az_state_list *ret_list = &s_ret_list; + if (!az_state_list_init(ret_list, list->size)) { + return 0; + } + for (i = 0; i < list->used; i++) { + if (!az_UpdateStateForChar(list->states + i, source, from, gs1, ret_list)) { + az_state_list_free(ret_list); + return 0; + } + } + if (ret_list->used > 1) { + az_SimplifyStates(ret_list); + } + + az_state_list_free(list); + list->states = ret_list->states; + list->size = ret_list->size; + list->used = ret_list->used; + + return 1; +} + +/* Default, optimized encodation algorithm by Frank Yellin and Rustam Abdullaev, adapted from ZXing via zxing-cpp's + `HighLevelEncoder::Encode()` & slightly improved */ +/* SPDX-License-Identifier: Apache-2.0 */ +/* Note that a bitstream that is encoded to be shortest based on mode choices may not be so after bit-stuffing */ +static int az_binary_string(unsigned char source[], const int length, int bp, + char binary_string[AZTEC_MAP_POSN_MAX + 1], const int gs1, const char initial_mode, + char *p_current_mode) { + struct az_state_list s_state_list; + struct az_state_list *list = &s_state_list; + struct az_state stateEnd; + int minStateIdx = -1; + int minBitCount = INT_MAX; + int i; +#ifndef NDEBUG + const int entry_bp = bp; +#endif + + if (!az_state_list_init(list, length)) { + return 0; + } + memset(list->states, 0, sizeof(struct az_state)); + list->states[list->used++].mode = initial_mode; + + for (i = 0; i < length; i++) { +#ifdef AZ_DEBUG_LIST + fprintf(stderr, "index %d\n", (int) i); +#endif + if (AZ_DOUBLE_PUNCT(source, length, i)) { + /* "\r\n" -> 2, ". " -> 3, ", " -> 4, ": " -> 5 */ + const int pairCode = source[i] == '\r' ? 2 : 3 + 7 - ((source[i] & 0x0F) >> 1); + if (!az_UpdateStateListForPair(list, i, pairCode)) { + az_state_list_free(list); + return 0; } + i++; } else { - if (debug_print) printf("edges[%d][%d][0] NULL\n", length, j); - } - } - assert(minimalJ >= 0); - - edge = edges + v_i + minimalJ; - mode_len = 0; - mode_end = length; - while (edge) { - const char current_mode = edge->mode; - mode_len += edge->len; - edge = AZ_PREVIOUS(edges, edge); - if (!edge || edge->mode != current_mode) { - for (i = mode_end - mode_len; i < mode_end; i++) { - modes[i] = current_mode; + if (!az_UpdateStateListForChar(list, source, i, gs1)) { + az_state_list_free(list); + return 0; } - mode_end = mode_end - mode_len; - mode_len = 0; } } + az_dump_list(list, "End "); - reduced_length = az_reduce(modes, source, length); - - if (debug_print) { - printf(" Modes (%d):\n", reduced_length); - az_print_modes(modes, reduced_length); + for (i = 0; i < list->used; i++) { + if (list->states[i].bitCount < minBitCount) { + minStateIdx = i; + minBitCount = list->states[i].bitCount; + } } - assert(mode_end == 0); + assert(minStateIdx >= 0); - free(edges); + if (!az_EndByteShift(list->states + minStateIdx, &stateEnd, length)) { + az_state_free(&stateEnd); + az_state_list_free(list); + return 0; + } - return reduced_length; + if (stateEnd.bitCount > AZTEC_BIN_CAPACITY) { + az_state_free(&stateEnd); + az_state_list_free(list); + return stateEnd.bitCount; + } + + for (i = 0; i < stateEnd.tokens.used; i++) { + const struct az_token *token = stateEnd.tokens.tokens + i; + const int count = token->count; + if (count < 0) { + bp = z_bin_append_posn(token->value, -count, binary_string, bp); + } else { + int j; + for (j = 0; j < count; j++) { + if (j == 0 || (j == 31 && count <= 62)) { + bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ + if (count > 62) { + bp = z_bin_append_posn(count - 31, 16, binary_string, bp); + } else if (j == 0) { + bp = z_bin_append_posn(count <= 31 ? count : 31, 5, binary_string, bp); + } else { + bp = z_bin_append_posn(count - 31, 5, binary_string, bp); + } + } + bp = z_bin_append_posn(source[token->value + j], 8, binary_string, bp); + } + } + } + assert(bp - entry_bp == stateEnd.bitCount); + + *p_current_mode = stateEnd.mode; + + az_state_free(&stateEnd); + az_state_list_free(list); + + return bp; } /* Calculate the binary size */ @@ -877,11 +1075,16 @@ static int az_text_size(const char *modes, const unsigned char *source, int leng const int eci, const char initial_mode, const int eci_latch, int *byte_counts) { int i; int byte_i = 0; - char current_mode; + char current_mode = initial_mode; int size = 0; if (set_gs1 && gs1) { - size += 5 + 5 + 3; + if (eci == 0) { + current_mode = AZ_D; + size += 5 + 4 + 5 + 3; + } else { + size += 5 + 5 + 3; + } } if (eci != 0) { if (initial_mode != AZ_P) { @@ -893,57 +1096,26 @@ static int az_text_size(const char *modes, const unsigned char *source, int leng size += 5; } size += 5; + current_mode = AZ_P; } else { size += initial_mode == AZ_D ? 4 : 5; } } size += 5 + 3 + 4 + 4 * ((eci > 9) + (eci > 99) + (eci > 999) + (eci > 9999) + (eci > 99999)); } - current_mode = eci_latch ? AZ_P : initial_mode; for (i = 0; i < length; i++) { - int current_mode_set = 0; if (modes[i] != current_mode) { /* Change mode */ - const char mask_mode = AZ_MASK(modes[i]); + const int mask_mode = AZ_MASK(modes[i]); if (mask_mode != current_mode) { - size += 4 + (current_mode != AZ_D); - } - if (current_mode == AZ_U) { - if (mask_mode == AZ_P) { - size += 5; - } - } else if (current_mode == AZ_L) { - if (mask_mode == AZ_P) { - size += 5; - } else if (mask_mode == AZ_U) { - size += 4; - } - } else if (current_mode == AZ_M) { - if (mask_mode == AZ_D) { - size += 5; - } - } else if (current_mode == AZ_P) { - if (mask_mode != AZ_U) { - size += 5; - if (mask_mode == AZ_B) { - current_mode = AZ_U; - current_mode_set = 1; - } - } - } else if (current_mode == AZ_D) { - if (mask_mode == AZ_L || mask_mode == AZ_M) { - size += 5; - } else if (mask_mode == AZ_P) { - size += 5 + 5; - } else if (mask_mode == AZ_B) { - size += 5; + size += AztecLatchNum[(int) current_mode][mask_mode]; + if (mask_mode != AZ_B) { + current_mode = mask_mode; + } else if (current_mode == AZ_P || current_mode == AZ_D) { current_mode = AZ_U; - current_mode_set = 1; } } - if (modes[i] & AZ_PS) { - size += 4 + (mask_mode != AZ_D); - } else if (modes[i] & AZ_US) { + if (modes[i] & (AZ_PS | AZ_US)) { size += 4 + (mask_mode != AZ_D); } @@ -955,7 +1127,7 @@ static int az_text_size(const char *modes, const unsigned char *source, int leng if (count > 2047 + 2078) { /* Can't be more than 19968 / 8 = 2496 */ return 0; } - byte_counts[byte_i++] = count; + byte_counts[byte_i++] = (short) count; if (count > 2047) { /* Max 11-bit number */ big_batch = count > 2078 ? 2078 : count; @@ -968,11 +1140,17 @@ static int az_text_size(const char *modes, const unsigned char *source, int leng if (big_batch) { size += 5; } - if (count > 31) { + if (count > 62) { assert(count <= 2078); /* Put 00000 followed by 11-bit number of bytes less 31 */ size += 16; } else { + if (count > 31) { + /* 2 5-bit B/Ss beats 1 11-bit */ + size += 10 + (31 << 3); + count -= 31; + i += 31; + } /* Put 5-bit number of bytes */ size += 5; } @@ -982,21 +1160,17 @@ static int az_text_size(const char *modes, const unsigned char *source, int leng i--; continue; } - - if (current_mode != mask_mode && !current_mode_set) { - current_mode = mask_mode; - } } - if (modes[i] == AZ_U || (modes[i] & AZ_US) || modes[i] == AZ_L || modes[i] == AZ_M) { - size += 5; - } else if (modes[i] == AZ_P || (modes[i] & AZ_PS)) { + if (modes[i] == AZ_P || (modes[i] & AZ_PS)) { size += 5; if (gs1 && source[i] == '\x1D') { size += 3; } - } else if (modes[i] == AZ_D) { + } else if (modes[i] == AZ_D && !(modes[i] & AZ_US)) { size += 4; + } else { + size += 5; } } @@ -1006,51 +1180,46 @@ static int az_text_size(const char *modes, const unsigned char *source, int leng /* Determine encoding modes and encode */ static int az_text_process(unsigned char *source, int length, int bp, char *binary_string, const int gs1, const int gs1_bp, const int eci, const int fast_encode, char *p_current_mode, int *data_length, - const int debug_print) { + const int debug) { int i, j; - char current_mode; - int reduced_length; + int reduced_length = 0; /* Suppress gcc-14 warning -Wmaybe-uninitialized */ char *modes = (char *) z_alloca(length + 1); int *byte_counts = (int *) z_alloca(sizeof(int) * length); /* Cache of Byte-run counts */ int byte_i = 0; - int size; + int size = 0; int eci_latch = 0; - const char initial_mode = p_current_mode ? *p_current_mode : AZ_U; + char current_mode = p_current_mode ? *p_current_mode : AZ_U; + const char initial_mode = current_mode; const int set_gs1 = bp == gs1_bp; - const int all_byte_only_or_uld = az_all_byte_only_or_uld(source, length); -#ifndef NDEBUG const int initial_bp = bp; + const int all_byte_only_or_uld = az_all_byte_only_or_uld(source, length); /* -1 if not */ + const int debug_print = debug & ZINT_DEBUG_PRINT; +#ifdef ZINT_TEST + const int debug_skip_all = debug & 2048; /* ZINT_DEBUG_TEST_AZTEC_SKIP_ALL - skip using `all_byte_only_or_uld` */ +#else + const int debug_skip_all = 0; #endif - /* See if it's worthwhile latching to AZ_P when have ECI */ - if (!all_byte_only_or_uld && eci && initial_mode != AZ_P && az_count_initial_puncts(source, length) - > 2 + (initial_mode == AZ_D)) { - assert(!gs1); - eci_latch = 1; - } - - if (all_byte_only_or_uld) { - memset(modes, all_byte_only_or_uld, length); - reduced_length = length; - } else if (fast_encode) { - reduced_length = az_text_modes(modes, source, length, gs1, eci_latch ? AZ_P : initial_mode, debug_print); - } else { - reduced_length = az_define_modes(modes, source, length, gs1, eci_latch ? AZ_P : initial_mode, debug_print); - } - - size = az_text_size(modes, source, reduced_length, gs1, set_gs1, eci, initial_mode, eci_latch, byte_counts); - if (size == 0 || bp + size > AZTEC_BIN_CAPACITY) { - return 0; - } - if (set_gs1 && gs1) { assert(initial_mode == AZ_U); - bp = z_bin_append_posn(0, 5, binary_string, bp); /* P/S */ - bp = z_bin_append_posn(0, 5, binary_string, bp); /* FLG(n) */ - bp = z_bin_append_posn(0, 3, binary_string, bp); /* FLG(0) */ + if (eci == 0) { + /* Latch to D/L to save a bit */ + current_mode = AZ_D; + bp = z_bin_append_posn(30, 5, binary_string, bp); /* D/L */ + bp = z_bin_append_posn(0, 4 + 5 + 3, binary_string, bp); /* P/S FLG(0) = FNC1 */ + } else { + bp = z_bin_append_posn(0, 5 + 5 + 3, binary_string, bp); /* P/S FLG(0) = FNC1 */ + } + /* See if it's worthwhile latching to AZ_P when have ECI */ + } else if ((debug_skip_all || all_byte_only_or_uld == -1) && eci && initial_mode != AZ_P + && az_count_initial_puncts(source, length) > 2 + (initial_mode == AZ_D)) { + assert(!gs1); + eci_latch = 1; + current_mode = AZ_P; } if (eci != 0) { + const int flg = 1 + (eci > 9) + (eci > 99) + (eci > 999) + (eci > 9999) + (eci > 99999); if (initial_mode != AZ_P) { if (eci_latch) { if (initial_mode != AZ_M) { @@ -1064,224 +1233,134 @@ static int az_text_process(unsigned char *source, int length, int bp, char *bina bp = z_bin_append_posn(0, initial_mode == AZ_D ? 4 : 5, binary_string, bp); /* P/S */ } } - bp = z_bin_append_posn(0, 5, binary_string, bp); /* FLG(n) */ - if (eci <= 9) { - bp = z_bin_append_posn(1, 3, binary_string, bp); /* FLG(1) */ + bp = z_bin_append_posn(flg, 5 + 3, binary_string, bp); /* FLG(n) */ + if (flg == 1) { bp = z_bin_append_posn(2 + eci, 4, binary_string, bp); - } else if (eci <= 99) { - bp = z_bin_append_posn(2, 3, binary_string, bp); /* FLG(2) */ - bp = z_bin_append_posn(2 + (eci / 10), 4, binary_string, bp); - bp = z_bin_append_posn(2 + (eci % 10), 4, binary_string, bp); - } else if (eci <= 999) { - bp = z_bin_append_posn(3, 3, binary_string, bp); /* FLG(3) */ - bp = z_bin_append_posn(2 + (eci / 100), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 100) / 10), 4, binary_string, bp); - bp = z_bin_append_posn(2 + (eci % 10), 4, binary_string, bp); - } else if (eci <= 9999) { - bp = z_bin_append_posn(4, 3, binary_string, bp); /* FLG(4) */ - bp = z_bin_append_posn(2 + (eci / 1000), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 1000) / 100), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 100) / 10), 4, binary_string, bp); - bp = z_bin_append_posn(2 + (eci % 10), 4, binary_string, bp); - } else if (eci <= 99999) { - bp = z_bin_append_posn(5, 3, binary_string, bp); /* FLG(5) */ - bp = z_bin_append_posn(2 + (eci / 10000), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 10000) / 1000), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 1000) / 100), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 100) / 10), 4, binary_string, bp); - bp = z_bin_append_posn(2 + (eci % 10), 4, binary_string, bp); + } else if (flg == 2) { + bp = z_bin_append_posn(((2 + eci / 10) << 4) + 2 + eci % 10, 8, binary_string, bp); + } else if (flg == 3) { + bp = z_bin_append_posn(2 + eci / 100, 4, binary_string, bp); + bp = z_bin_append_posn(((2 + eci % 100 / 10) << 4) + 2 + eci % 10, 8, binary_string, bp); + } else if (flg == 4) { + bp = z_bin_append_posn(((2 + eci / 1000) << 4) + 2 + eci % 1000 / 100, 8, binary_string, bp); + bp = z_bin_append_posn(((2 + eci % 100 / 10) << 4) + 2 + eci % 10, 8, binary_string, bp); + } else if (flg == 5) { + bp = z_bin_append_posn(2 + eci / 10000, 4, binary_string, bp); + bp = z_bin_append_posn(((2 + eci % 10000 / 1000) << 4) + 2 + eci % 1000 / 100, 8, binary_string, bp); + bp = z_bin_append_posn(((2 + eci % 100 / 10) << 4) + 2 + eci % 10, 8, binary_string, bp); } else { - bp = z_bin_append_posn(6, 3, binary_string, bp); /* FLG(6) */ - bp = z_bin_append_posn(2 + (eci / 100000), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 100000) / 10000), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 10000) / 1000), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 1000) / 100), 4, binary_string, bp); - bp = z_bin_append_posn(2 + ((eci % 100) / 10), 4, binary_string, bp); - bp = z_bin_append_posn(2 + (eci % 10), 4, binary_string, bp); + bp = z_bin_append_posn(((2 + eci / 100000) << 4) + 2 + eci % 100000 / 10000, 8, binary_string, bp); + bp = z_bin_append_posn(((2 + eci % 10000 / 1000) << 4) + 2 + eci % 1000 / 100, 8, binary_string, bp); + bp = z_bin_append_posn(((2 + eci % 100 / 10) << 4) + 2 + eci % 10, 8, binary_string, bp); } } - current_mode = eci_latch ? AZ_P : initial_mode; - for (i = 0; i < reduced_length; i++) { - int current_mode_set = 0; - if (modes[i] != current_mode) { - /* Change mode */ - const char mask_mode = AZ_MASK(modes[i]); - if (current_mode == AZ_U) { - if (mask_mode == AZ_L) { - bp = z_bin_append_posn(28, 5, binary_string, bp); /* L/L */ - } else if (mask_mode == AZ_M) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* M/L */ - } else if (mask_mode == AZ_P) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* M/L */ - bp = z_bin_append_posn(30, 5, binary_string, bp); /* P/L */ - } else if (mask_mode == AZ_D) { - bp = z_bin_append_posn(30, 5, binary_string, bp); /* D/L */ - } else if (mask_mode == AZ_B) { - bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ - } - } else if (current_mode == AZ_L) { - if (mask_mode == AZ_U) { - bp = z_bin_append_posn(30, 5, binary_string, bp); /* D/L */ - bp = z_bin_append_posn(14, 4, binary_string, bp); /* U/L */ - } else if (mask_mode == AZ_M) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* M/L */ - } else if (mask_mode == AZ_P) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* M/L */ - bp = z_bin_append_posn(30, 5, binary_string, bp); /* P/L */ - } else if (mask_mode == AZ_D) { - bp = z_bin_append_posn(30, 5, binary_string, bp); /* D/L */ - } else if (mask_mode == AZ_B) { - bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ - } - } else if (current_mode == AZ_M) { - if (mask_mode == AZ_U) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* U/L */ - } else if (mask_mode == AZ_L) { - bp = z_bin_append_posn(28, 5, binary_string, bp); /* L/L */ - } else if (mask_mode == AZ_P) { - bp = z_bin_append_posn(30, 5, binary_string, bp); /* P/L */ - } else if (mask_mode == AZ_D) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* U/L */ - bp = z_bin_append_posn(30, 5, binary_string, bp); /* D/L */ - } else if (mask_mode == AZ_B) { - bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ - } - } else if (current_mode == AZ_P) { - if (mask_mode != current_mode) { - bp = z_bin_append_posn(31, 5, binary_string, bp); /* U/L */ - if (mask_mode == AZ_L) { - bp = z_bin_append_posn(28, 5, binary_string, bp); /* L/L */ - } else if (mask_mode == AZ_M) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* M/L */ - } else if (mask_mode == AZ_D) { - bp = z_bin_append_posn(30, 5, binary_string, bp); /* D/L */ - } else if (mask_mode == AZ_B) { - current_mode = AZ_U; - current_mode_set = 1; - bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ - } - } - } else if (current_mode == AZ_D) { - if (mask_mode != current_mode) { - bp = z_bin_append_posn(14, 4, binary_string, bp); /* U/L */ - if (mask_mode == AZ_L) { - bp = z_bin_append_posn(28, 5, binary_string, bp); /* L/L */ - } else if (mask_mode == AZ_M) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* M/L */ - } else if (mask_mode == AZ_P) { - bp = z_bin_append_posn(29, 5, binary_string, bp); /* M/L */ - bp = z_bin_append_posn(30, 5, binary_string, bp); /* P/L */ - } else if (mask_mode == AZ_B) { - current_mode = AZ_U; - current_mode_set = 1; - bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ - } - } - } - if (modes[i] & AZ_PS) { - assert(mask_mode != AZ_P); - bp = z_bin_append_posn(0, 4 + (mask_mode != AZ_D), binary_string, bp); /* P/S */ - } else if (modes[i] & AZ_US) { - assert(mask_mode == AZ_L || mask_mode == AZ_D); - if (mask_mode == AZ_L) { - bp = z_bin_append_posn(28, 5, binary_string, bp); /* U/S */ - } else { - bp = z_bin_append_posn(15, 4, binary_string, bp); /* U/S */ - } - } + if (!debug_skip_all && all_byte_only_or_uld != -1) { + memset(modes, all_byte_only_or_uld, length); + reduced_length = length; + } else if (fast_encode) { + reduced_length = az_text_modes(modes, source, length, gs1, current_mode, debug_print); + } else { + bp = az_binary_string(source, length, bp, binary_string, gs1, current_mode, ¤t_mode); + if (bp == 0 || bp > AZTEC_BIN_CAPACITY) { + return bp == 0 ? ZINT_ERROR_MEMORY : ZINT_ERROR_TOO_LONG; + } + assert(bp > initial_bp); + size = bp - initial_bp; + } - /* Byte mode - process full block here */ - if (modes[i] == AZ_B) { - int big_batch = 0; - int count = byte_counts[byte_i++]; - - assert(count <= 2047 + 2078); /* Can't be more than 19968 / 8 = 2496 */ - - if (count > 2047) { /* Max 11-bit number */ - big_batch = count > 2078 ? 2078 : count; - /* Put 00000 followed by 11-bit number of bytes less 31 */ - bp = z_bin_append_posn(big_batch - 31, 16, binary_string, bp); - for (j = 0; j < big_batch; j++) { - bp = z_bin_append_posn(source[i++], 8, binary_string, bp); - } - count -= big_batch; - } - if (count) { - if (big_batch) { - bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ - } - if (count > 31) { - assert(count <= 2078); - /* Put 00000 followed by 11-bit number of bytes less 31 */ - bp = z_bin_append_posn(count - 31, 16, binary_string, bp); - } else { - /* Put 5-bit number of bytes */ - bp = z_bin_append_posn(count, 5, binary_string, bp); - } - for (j = 0; j < count; j++) { - bp = z_bin_append_posn(source[i++], 8, binary_string, bp); - } - } - i--; - continue; - } - - if (current_mode != mask_mode && !current_mode_set) { - current_mode = mask_mode; - } + if (!size) { + size = az_text_size(modes, source, reduced_length, gs1, set_gs1, eci, initial_mode, eci_latch, byte_counts); + if (size == 0 || bp + size > AZTEC_BIN_CAPACITY) { + return ZINT_ERROR_TOO_LONG; } - if (modes[i] == AZ_U || (modes[i] & AZ_US)) { - if (source[i] == ' ') { - bp = z_bin_append_posn(1, 5, binary_string, bp); /* SP */ - } else { - bp = z_bin_append_posn(AztecSymbolChar[source[i]], 5, binary_string, bp); + for (i = 0; i < reduced_length; i++) { + int current_mode_set = 0; + if (modes[i] != current_mode) { + /* Change mode */ + const int mask_mode = AZ_MASK(modes[i]); + if (current_mode != mask_mode) { + assert(current_mode != AZ_B); /* Suppress clang-tidy-22 clang-analyzer-security.ArrayBound */ + bp = z_bin_append_posn(AztecLatch[(int) current_mode][mask_mode], + AztecLatchNum[(int) current_mode][mask_mode], binary_string, bp); + if (mask_mode == AZ_B && (current_mode == AZ_P || current_mode == AZ_D)) { + current_mode = AZ_U; + current_mode_set = 1; + } + } + if (modes[i] & AZ_PS) { + assert(mask_mode != AZ_P); + bp = z_bin_append_posn(0, 4 + (mask_mode != AZ_D), binary_string, bp); /* P/S */ + } else if (modes[i] & AZ_US) { + assert(mask_mode == AZ_L || mask_mode == AZ_D); + if (mask_mode == AZ_L) { + bp = z_bin_append_posn(28, 5, binary_string, bp); /* U/S */ + } else { + bp = z_bin_append_posn(15, 4, binary_string, bp); /* U/S */ + } + } + + /* Byte mode - process full block here */ + if (modes[i] == AZ_B) { + int big_batch = 0; + int count = byte_counts[byte_i++]; + + assert(count <= 2047 + 2078); /* Can't be more than 19968 / 8 = 2496 */ + + if (count > 2047) { /* Max 11-bit number */ + big_batch = count > 2078 ? 2078 : count; + /* Put 00000 followed by 11-bit number of bytes less 31 */ + bp = z_bin_append_posn(big_batch - 31, 16, binary_string, bp); + for (j = 0; j < big_batch; j++) { + bp = z_bin_append_posn(source[i++], 8, binary_string, bp); + } + count -= big_batch; + } + if (count) { + if (big_batch) { + bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ + } + if (count > 62) { + assert(count <= 2078); + /* Put 00000 followed by 11-bit number of bytes less 31 */ + bp = z_bin_append_posn(count - 31, 16, binary_string, bp); + } else { + if (count > 31) { + /* 2 5-bit B/Ss beats 1 11-bit */ + bp = z_bin_append_posn(31, 5, binary_string, bp); /* 5-bit byte count */ + for (j = 0; j < 31; j++) { + bp = z_bin_append_posn(source[i++], 8, binary_string, bp); + } + bp = z_bin_append_posn(31, 5, binary_string, bp); /* B/S */ + count -= 31; + } + /* Put 5-bit number of bytes */ + bp = z_bin_append_posn(count, 5, binary_string, bp); + } + for (j = 0; j < count; j++) { + bp = z_bin_append_posn(source[i++], 8, binary_string, bp); + } + } + i--; + continue; + } + + if (current_mode != mask_mode && !current_mode_set) { + current_mode = mask_mode; + } } - } else if (modes[i] == AZ_L) { - if (source[i] == ' ') { - bp = z_bin_append_posn(1, 5, binary_string, bp); /* SP */ + + if (modes[i] == AZ_P || (modes[i] & AZ_PS)) { + if (gs1 && source[i] == '\x1D') { + bp = z_bin_append_posn(0, 5 + 3, binary_string, bp); /* FLG(0) = FNC1 */ + } else { + bp = z_bin_append_posn(AztecChar[AZ_P][source[i]], 5, binary_string, bp); + } } else { - bp = z_bin_append_posn(AztecSymbolChar[source[i]], 5, binary_string, bp); - } - } else if (modes[i] == AZ_M) { - if (source[i] == ' ') { - bp = z_bin_append_posn(1, 5, binary_string, bp); /* SP */ - } else if (source[i] == '\r') { - bp = z_bin_append_posn(14, 5, binary_string, bp); /* CR */ - } else { - bp = z_bin_append_posn(AztecSymbolChar[source[i]], 5, binary_string, bp); - } - } else if (modes[i] == AZ_P || (modes[i] & AZ_PS)) { - if (gs1 && source[i] == '\x1D') { - bp = z_bin_append_posn(0, 5, binary_string, bp); /* FLG(n) */ - bp = z_bin_append_posn(0, 3, binary_string, bp); /* FLG(0) = FNC1 */ - } else if (source[i] == '\r') { - bp = z_bin_append_posn(1, 5, binary_string, bp); /* CR */ - } else if (source[i] == 'a') { - bp = z_bin_append_posn(2, 5, binary_string, bp); /* CR LF */ - } else if (source[i] == 'b') { - bp = z_bin_append_posn(3, 5, binary_string, bp); /* . SP */ - } else if (source[i] == 'c') { - bp = z_bin_append_posn(4, 5, binary_string, bp); /* , SP */ - } else if (source[i] == 'd') { - bp = z_bin_append_posn(5, 5, binary_string, bp); /* : SP */ - } else if (source[i] == ',') { - bp = z_bin_append_posn(17, 5, binary_string, bp); /* Comma */ - } else if (source[i] == '.') { - bp = z_bin_append_posn(19, 5, binary_string, bp); /* Full stop */ - } else { - bp = z_bin_append_posn(AztecSymbolChar[source[i]], 5, binary_string, bp); - } - } else if (modes[i] == AZ_D) { - if (source[i] == ' ') { - bp = z_bin_append_posn(1, 4, binary_string, bp); /* SP */ - } else if (source[i] == ',') { - bp = z_bin_append_posn(12, 4, binary_string, bp); /* Comma */ - } else if (source[i] == '.') { - bp = z_bin_append_posn(13, 4, binary_string, bp); /* Full stop */ - } else { - bp = z_bin_append_posn(AztecSymbolChar[source[i]], 4, binary_string, bp); + const int char_mode = (modes[i] & AZ_US) ? AZ_U : modes[i]; + assert(char_mode != AZ_B); /* Suppress clang-tidy-22 clang-analyzer-security.ArrayBound */ + bp = z_bin_append_posn(AztecChar[char_mode][source[i]], 4 + (modes[i] != AZ_D), binary_string, bp); } } } @@ -1297,12 +1376,12 @@ static int az_text_process(unsigned char *source, int length, int bp, char *bina assert(size == bp - initial_bp); - return 1; + return 0; } /* Call `az_text_process()` for each segment */ static int az_text_process_segs(struct zint_symbol *symbol, struct zint_seg segs[], const int seg_count, int bp, - char binary_string[], const int gs1, const int gs1_bp, int *data_length, const int debug_print) { + char binary_string[], const int gs1, const int gs1_bp, int *data_length) { int i; char current_mode = AZ_U; const int fast_encode = symbol->input_mode & FAST_MODE; @@ -1311,9 +1390,10 @@ static int az_text_process_segs(struct zint_symbol *symbol, struct zint_seg segs const int content_segs = !gs1 && (symbol->output_options & BARCODE_CONTENT_SEGS); for (i = 0; i < seg_count; i++) { - if (!az_text_process(segs[i].source, segs[i].length, bp, binary_string, gs1, gs1_bp, segs[i].eci, fast_encode, - ¤t_mode, &bp, debug_print)) { - return ZINT_ERROR_TOO_LONG; /* `az_text_process()` only fails with too long */ + int error_number; + if ((error_number = az_text_process(segs[i].source, segs[i].length, bp, binary_string, gs1, gs1_bp, + segs[i].eci, fast_encode, ¤t_mode, &bp, symbol->debug))) { + return error_number; } if (content_segs && segs[i].eci) { z_ct_set_seg_eci(symbol, i, segs[i].eci); @@ -1510,6 +1590,10 @@ INTERNAL int zint_aztec(struct zint_symbol *symbol, struct zint_seg segs[], cons float ecc_ratio; int dim; + if ((i = z_segs_length(segs, seg_count)) > 4981) { /* Max is 4981 digits */ + return z_errtxtf(ZINT_ERROR_TOO_LONG, symbol, 803, "Input length %d too long (maximum 4981)", i); + } + if (gs1 && reader_init) { return z_errtxt(ZINT_ERROR_INVALID_OPTION, symbol, 501, "Cannot use Reader Initialisation in GS1 mode"); } @@ -1555,19 +1639,19 @@ INTERNAL int zint_aztec(struct zint_symbol *symbol, struct zint_seg segs[], cons } (void) az_text_process(sa_src, sa_len, bp, binary_string, 0 /*gs1*/, 0 /*gs1_bp*/, 0 /*eci*/, - 0 /*fast_encode*/, NULL /*p_current_mode*/, &bp, debug_print); + 0 /*fast_encode*/, NULL /*p_current_mode*/, &bp, symbol->debug); /* Will be in U/L due to uppercase A-Z index/count indicators at end */ gs1_bp = bp; /* Initial FNC1 (FLG0) position */ } - if ((error_number = az_text_process_segs(symbol, segs, seg_count, bp, binary_string, gs1, gs1_bp, &data_length, - debug_print))) { + if ((error_number = az_text_process_segs(symbol, segs, seg_count, bp, binary_string, gs1, gs1_bp, + &data_length))) { assert(error_number == ZINT_ERROR_TOO_LONG || error_number == ZINT_ERROR_MEMORY); if (error_number == ZINT_ERROR_TOO_LONG) { return z_errtxt(error_number, symbol, 502, "Input too long, requires too many codewords (maximum " AZ_BIN_CAP_CWDS_S ")"); } - return error_number; + return z_errtxt(error_number, symbol, 804, "Insufficient memory for optimized encodation"); } assert(data_length > 0); /* Suppress clang-tidy warning: clang-analyzer-core.UndefinedBinaryOperatorResult */ diff --git a/backend/aztec.h b/backend/aztec.h index a9ffd149..ea0527fd 100644 --- a/backend/aztec.h +++ b/backend/aztec.h @@ -84,31 +84,19 @@ static const short AztecMapCore[15][15] = { { 0, 0, 20029, 20028, 20027, 20026, 20025, 0, 20024, 20023, 20022, 20021, 20020, 0, 0, }, }; -/* From Table 2 */ -static const char AztecSymbolChar[128] = { - 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 15, 16, 17, 18, 19, - 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 18, 0, 20, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 21, 22, 23, 24, 25, 26, - 20, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 27, 21, 28, 22, 23, - 24, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 25, 30, 26, 27 -}; - /* Modes */ -#define AZ_U 1 -#define AZ_L 2 -#define AZ_M 3 -#define AZ_P 4 -#define AZ_D 5 -#define AZ_B 6 /* 5 or 11-bit Byte (ideally would be separate modes, but not done due to performance hit) */ +#define AZ_U 0 +#define AZ_L 1 +#define AZ_M 2 +#define AZ_P 3 +#define AZ_D 4 /* Pseudo-modes */ -#define AZ_X 7 /* Used to indicate chars belonging to more than one mode */ -#define AZ_E 8 /* Used to signal no next mode */ +#define AZ_B 5 /* Byte */ +#define AZ_X 6 /* Indicates chars belonging to more than one mode */ +#define AZ_E 7 /* Signals no next mode */ -#define AZ_NUM_MODES 6 +#define AZ_NUM_MODES 5 #define AZ_MASK(m) ((m) & 0x0F) @@ -126,22 +114,22 @@ static const char AztecSymbolChar[128] = { #define AZ_D_US (AZ_D | AZ_US) static const char AztecModes[128] = { - AZ_B, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_X, AZ_B, AZ_B, - AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, - AZ_X, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_X, AZ_P, AZ_X, AZ_P, - AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, - AZ_M, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, - AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_P, AZ_M, AZ_P, AZ_M, AZ_M, - AZ_M, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, - AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_P, AZ_M, AZ_P, AZ_M, AZ_M + AZ_B, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_X, AZ_B, AZ_B, /*0-15*/ + AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, /*16-31*/ + AZ_X, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_X, AZ_P, AZ_X, AZ_P, /*32-47*/ + AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, /*48-63*/ + AZ_M, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, /*64-79*/ + AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_P, AZ_M, AZ_P, AZ_M, AZ_M, /*80-95*/ + AZ_M, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, /*96-111*/ + AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_P, AZ_M, AZ_P, AZ_M, AZ_M /*112-127*/ }; /* Testable flags */ -#define AZ_U_F 0x01 -#define AZ_L_F 0x02 -#define AZ_M_F 0x04 -#define AZ_P_F 0x08 -#define AZ_D_F 0x10 +#define AZ_U_F 0x01 /* 1 << AZ_U */ +#define AZ_L_F 0x02 /* 1 << AZ_L */ +#define AZ_M_F 0x04 /* 1 << AZ_M */ +#define AZ_P_F 0x08 /* 1 << AZ_P */ +#define AZ_D_F 0x10 /* 1 << AZ_D */ /* Flag version of `AztecModes[]` */ static const char AztecFlags[128] = { @@ -179,6 +167,86 @@ static const char AztecFlags[128] = { AZ_M_F, AZ_P_F, AZ_M_F, AZ_M_F, /* 124-127*/ }; +/* The number of bits latch takes (AZ_B column used in FAST_MODE only) */ +static const char AztecLatchNum[5][6] = { + /* U L M P D B */ + /*U*/ { 0, 5, 5, 10, 5, 5 }, + /*L*/ { 9, 0, 5, 10, 5, 5 }, + /*M*/ { 5, 5, 0, 5, 10, 5 }, + /*P*/ { 5, 10, 10, 0, 10, 10 }, + /*D*/ { 4, 9, 9, 14, 0, 9 }, +}; + +/* Bit pattern to latch (AZ_B column used in FAST_MODE only) */ +static const short AztecLatch[5][6] = { + /* U L M P D B */ + /*U*/ { 0, 28, 29, (29 << 5) + 30, 30, 31 }, + /*L*/ { (30 << 4) + 14, 0, 29, (29 << 5) + 30, 30, 31 }, + /*M*/ { 29, 28, 0, 30, (29 << 5) + 30, 31 }, + /*P*/ { 31, (31 << 5) + 28, (31 << 5) + 29, 0, (31 << 5) + 30, (31 << 5) + 31 }, + /*D*/ { 14, (14 << 5) + 28, (14 << 5) + 29, (14 << 10) + (29 << 5) + 30, 0, (14 << 5) + 31 }, +}; + +/* From Table 2 */ +static const char AztecChar[5][128] = { + { /* AZ_U */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0-15*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*16-31*/ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32-47*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*48-63*/ + 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, /*64-79*/ + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, /*80-95*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*96-111*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /*112-127*/ + }, { /* AZ_L */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0-15*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*16-31*/ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32-47*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*48-63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*64-79*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*80-95*/ + 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, /*96-111*/ + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0 /*112-127*/ + }, { /* AZ_M */ + 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, /*0-15*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 19, /*16-31*/ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*32-47*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*48-63*/ + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*64-79*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 22, 23, /*80-95*/ + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*96-111*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26, 27 /*112-127*/ + }, { /* AZ_P with [abcd] mapped to doubles */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, /*0-15*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*16-31*/ + 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, /*32-47*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 23, 24, 25, 26, /*48-63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*64-79*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 0, 0, /*80-95*/ + 0, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*96-111*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 30, 0, 0 /*112-127*/ + }, { /* AZ_D */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0-15*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*16-31*/ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, /*32-47*/ + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, /*48-63*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*64-79*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*80-95*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*96-111*/ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /*112-127*/ + } +}; + +/* A map showing the available shift codes (B/S not shown) */ +static const signed char AztecShift[5][5] = { + /* U L M P D */ + /*U*/ { -1, -1, -1, 0, -1 }, + /*L*/ { 28, -1, -1, 0, -1 }, + /*M*/ { -1, -1, -1, 0, -1 }, + /*P*/ { -1, -1, -1, -1, -1 }, + /*D*/ { 15, -1, -1, 0, -1 }, +}; + /* Codewords per symbol */ static const short AztecSizes[32] = { 21, 48, 60, 88, 120, 156, 196, 240, 230, 272, 316, 364, 416, 470, 528, 588, diff --git a/backend/dmatrix.c b/backend/dmatrix.c index 99cecbbf..4af2a7bf 100644 --- a/backend/dmatrix.c +++ b/backend/dmatrix.c @@ -1,7 +1,7 @@ /* dmatrix.c Handles Data Matrix ECC 200 symbols */ /* libzint - the open source barcode library - Copyright (C) 2009-2025 Robin Stuart + Copyright (C) 2009-2026 Robin Stuart developed from and including some functions from: IEC16022 bar code generation @@ -580,6 +580,8 @@ static int dm_edi_buffer_xfer(int process_buffer[8], int process_p, unsigned cha return process_p; } +#define DM_DMRE_SQUARE_MASK 0x65 /* 101 */ + /* Get index of symbol size in codewords array `dm_matrixbytes`, as specified or else smallest containing `minimum` codewords */ static int dm_get_symbolsize(struct zint_symbol *symbol, const int minimum) { @@ -593,10 +595,10 @@ static int dm_get_symbolsize(struct zint_symbol *symbol, const int minimum) { } for (i = minimum >= 62 ? 23 : 0; minimum > dm_matrixbytes[i]; i++); - if ((symbol->option_3 & 0x7F) == DM_DMRE) { + if ((symbol->option_3 & DM_DMRE_SQUARE_MASK) == DM_DMRE) { return i; } - if ((symbol->option_3 & 0x7F) == DM_SQUARE) { + if ((symbol->option_3 & DM_DMRE_SQUARE_MASK) == DM_SQUARE) { /* Skip rectangular symbols in square only mode */ for (; dm_matrixH[i] != dm_matrixW[i]; i++); return i; @@ -992,6 +994,8 @@ static int dm_define_modes(struct zint_symbol *symbol, char modes[], const unsig if (!edges) { return 0; } + assert((length + 1) * DM_NUM_MODES < USHRT_MAX); /* Guaranteed by input length limit */ + dm_addEdges(symbol, source, length, last_seg, edges, 0, NULL, gs1); DM_TRACE_Edges("DEBUG Initial situation\n", source, length, edges, 0); diff --git a/backend/pdf417.c b/backend/pdf417.c index f928fd60..7c1848a0 100644 --- a/backend/pdf417.c +++ b/backend/pdf417.c @@ -1,7 +1,7 @@ /* pdf417.c - Handles PDF417 stacked symbology */ /* libzint - the open source barcode library - Copyright (C) 2008-2025 Robin Stuart + Copyright (C) 2008-2026 Robin Stuart Portions Copyright (C) 2004 Grandzebu Bug Fixes thanks to KL Chin @@ -932,6 +932,8 @@ static int pdf_define_modes(short liste[3][PDF_MAX_LEN], int *p_indexliste, cons if (!edges) { return 0; } + assert((length + 1) * PDF_NUM_MODES < USHRT_MAX); /* Guaranteed by input length limit */ + pdf_addEdges(source, length, lastmode, edges, 0, NULL); PDF_TRACE_Edges("DEBUG Initial situation\n", source, length, edges, 0); diff --git a/backend/tests/test_aztec.c b/backend/tests/test_aztec.c index b27fafde..831d77bf 100644 --- a/backend/tests/test_aztec.c +++ b/backend/tests/test_aztec.c @@ -54,133 +54,134 @@ static void test_large(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ static const struct item data[] = { - /* 0*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "1A", 10921, ZINT_ERROR_TOO_LONG, 0, 0, "Error 502: Input too long, requires too many codewords (maximum 1661)", 3, "Does not trigger USHRT_MAX check" }, - /* 1*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "1A", 10922, ZINT_ERROR_TOO_LONG, 0, 0, "Error 502: Input too long, requires too many codewords (maximum 1661)", 3, "Triggers USHRT_MAX check" }, - /* 2*/ { BARCODE_AZTEC, FAST_MODE, -1, 1, -1, -1, -1, { 0, 0, "" }, "1A", 10922, ZINT_ERROR_TOO_LONG, 0, 0, "Error 502: Input too long, requires too many codewords (maximum 1661)", 3, "FAST_MODE has no such check (and doesn't need it)" }, - /* 3*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "\377", 2051, 0, 151, 151, "", 3, "" }, - /* 4*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "\377", 2052, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 1, requires 1495 codewords (maximum 1494)", 3, "" }, - /* 5*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "\377", 2236, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 1, requires 1630 codewords (maximum 1494)", 3, "" }, - /* 6*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "\377", 2237, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 1, requires too many codewords (maximum 1494)", 3, "" }, - /* 7*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "1", 3832, 0, 151, 151, "", 1, "" }, - /* 8*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "1", 3833, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 2, requires 1279 codewords (maximum 1278)", 1, "" }, - /* 9*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "A", 3067, 0, 151, 151, "", 1, "" }, - /* 10*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "A", 3068, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 2, requires too many codewords (maximum 1278)", 1, "" }, - /* 11*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "\240", 1914, 0, 151, 151, "", 3, "This is what Table 1 gives as Bytes capacity (no bit-stuffing)" }, - /* 12*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "\240", 1915, ZINT_ERROR_TOO_LONG, 151, 151, "Error 707: Input too long for ECC level 2, requires too many codewords (maximum 1278)", 3, "" }, - /* 13*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "\377", 1754, 0, 151, 151, "", 3, "This is Bytes capacity with max bit-stuffing" }, - /* 14*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "\377", 1755, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 2, requires 1279 codewords (maximum 1278)", 3, "" }, - /* 15*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "1", 3181, 0, 151, 151, "", 1, "" }, - /* 16*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "1", 3182, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 3, requires 1062 codewords (maximum 1061)", 1, "" }, - /* 17*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "A", 2402, 0, 147, 147, "", 1, "" }, - /* 18*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "A", 2549, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 3, requires too many codewords (maximum 1061)", 1, "" }, - /* 19*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "\377", 1456, 0, 151, 151, "", 3, "" }, - /* 20*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "\377", 1457, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 3, requires 1062 codewords (maximum 1061)", 3, "" }, - /* 21*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "1", 2485, 0, 151, 151, "", 1, "" }, - /* 22*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "1", 2486, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 4, requires too many codewords (maximum 829)", 1, "" }, - /* 23*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "A", 1989, 0, 151, 151, "", 1, "" }, - /* 24*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "A", 1990, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 4, requires too many codewords (maximum 829)", 1, "" }, - /* 25*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "\377", 1137, 0, 151, 151, "", 3, "" }, - /* 26*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "\377", 1138, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 4, requires 830 codewords (maximum 829)", 3, "" }, - /* 27*/ { BARCODE_AZTEC, -1, -1, -1, 1, -1, -1, { 0, 0, "" }, "\377", 7, 0, 15, 15, "", 3, "4 ECC codewords" }, - /* 28*/ { BARCODE_AZTEC, -1, -1, -1, 1, -1, -1, { 0, 0, "" }, "\377", 8, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 1, requires too many codewords (maximum 14)", 3, "" }, - /* 29*/ { BARCODE_AZTEC, -1, -1, -1, 1, -1, -1, { 0, 0, "" }, "\377", 2078, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 1, requires too many codewords (maximum 14)", 3, "" }, - /* 30*/ { BARCODE_AZTEC, -1, -1, -1, 2, -1, -1, { 0, 0, "" }, "\377", 21, ZINT_WARN_NONCOMPLIANT, 19, 19, "Warning 708: Number of ECC codewords 4 less than 5% + 3 of data codewords 36", 3, "4 ECC codewords" }, - /* 31*/ { BARCODE_AZTEC, -1, -1, -1, 2, -1, -1, { 0, 0, "" }, "\377", 22, ZINT_WARN_NONCOMPLIANT, 19, 19, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, - /* 32*/ { BARCODE_AZTEC, -1, -1, -1, 2, -1, -1, { 0, 0, "" }, "\377", 23, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 2, requires too many codewords (maximum 37)", 3, "" }, - /* 33*/ { BARCODE_AZTEC, -1, -1, -1, 2, -1, -1, { 0, 0, "" }, "\377", 1866, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 2, requires too many codewords (maximum 37)", 3, "" }, - /* 34*/ { BARCODE_AZTEC, -1, -1, -1, 3, -1, -1, { 0, 0, "" }, "\377", 39, ZINT_WARN_NONCOMPLIANT, 23, 23, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, - /* 35*/ { BARCODE_AZTEC, -1, -1, -1, 3, -1, -1, { 0, 0, "" }, "\377", 40, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 3, requires too many codewords (maximum 48)", 3, "" }, - /* 36*/ { BARCODE_AZTEC, -1, -1, -1, 4, -1, -1, { 0, 0, "" }, "\377", 51, 0, 27, 27, "", 3, "15 ECC codewords (Version 4 (compact) spare 12 ECC blocks bonus)" }, - /* 37*/ { BARCODE_AZTEC, -1, -1, -1, 4, -1, -1, { 0, 0, "" }, "\377", 52, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 4, requires too many codewords (maximum 61)", 3, "" }, - /* 38*/ { BARCODE_AZTEC, -1, -1, -1, 5, -1, -1, { 0, 0, "" }, "\377", 10, ZINT_WARN_NONCOMPLIANT, 19, 19, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, - /* 39*/ { BARCODE_AZTEC, -1, -1, -1, 5, -1, -1, { 0, 0, "" }, "\377", 11, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 5, requires too many codewords (maximum 18)", 3, "" }, - /* 40*/ { BARCODE_AZTEC, -1, -1, -1, 6, -1, -1, { 0, 0, "" }, "\377", 27, ZINT_WARN_NONCOMPLIANT, 23, 23, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, - /* 41*/ { BARCODE_AZTEC, -1, -1, -1, 6, -1, -1, { 0, 0, "" }, "\377", 28, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 6, requires too many codewords (maximum 45)", 3, "" }, - /* 42*/ { BARCODE_AZTEC, -1, -1, -1, 7, -1, -1, { 0, 0, "" }, "\377", 47, ZINT_WARN_NONCOMPLIANT, 27, 27, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, - /* 43*/ { BARCODE_AZTEC, -1, -1, -1, 7, -1, -1, { 0, 0, "" }, "\377", 48, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 7, requires too many codewords (maximum 57)", 3, "" }, - /* 44*/ { BARCODE_AZTEC, -1, -1, -1, 8, -1, -1, { 0, 0, "" }, "\377", 71, ZINT_WARN_NONCOMPLIANT, 31, 31, "Warning 708: Number of ECC codewords 4 less than 5% + 3 of data codewords 84", 3, "4 ECC codewords" }, - /* 45*/ { BARCODE_AZTEC, -1, -1, -1, 8, -1, -1, { 0, 0, "" }, "\377", 72, ZINT_WARN_NONCOMPLIANT, 31, 31, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 46*/ { BARCODE_AZTEC, -1, -1, -1, 8, -1, -1, { 0, 0, "" }, "\377", 73, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 8, requires too many codewords (maximum 85)", 3, "" }, - /* 47*/ { BARCODE_AZTEC, -1, -1, -1, 9, -1, -1, { 0, 0, "" }, "\377", 98, ZINT_WARN_NONCOMPLIANT, 37, 37, "Warning 708: Number of ECC codewords 5 less than 5% + 3 of data codewords 115", 3, "5 ECC codewords" }, - /* 48*/ { BARCODE_AZTEC, -1, -1, -1, 9, -1, -1, { 0, 0, "" }, "\377", 100, ZINT_WARN_NONCOMPLIANT, 37, 37, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 49*/ { BARCODE_AZTEC, -1, -1, -1, 9, -1, -1, { 0, 0, "" }, "\377", 101, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 9, requires too many codewords (maximum 117)", 3, "" }, - /* 50*/ { BARCODE_AZTEC, -1, -1, -1, 10, -1, -1, { 0, 0, "" }, "\377", 128, ZINT_WARN_NONCOMPLIANT, 41, 41, "Warning 708: Number of ECC codewords 7 less than 5% + 3 of data codewords 149", 3, "7 ECC codewords" }, - /* 51*/ { BARCODE_AZTEC, -1, -1, -1, 10, -1, -1, { 0, 0, "" }, "\377", 129, ZINT_WARN_NONCOMPLIANT, 41, 41, "Warning 708: Number of ECC codewords 6 less than 5% + 3 of data codewords 150", 3, "" }, - /* 52*/ { BARCODE_AZTEC, -1, -1, -1, 10, -1, -1, { 0, 0, "" }, "\377", 131, ZINT_WARN_NONCOMPLIANT, 41, 41, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 53*/ { BARCODE_AZTEC, -1, -1, -1, 10, -1, -1, { 0, 0, "" }, "\377", 132, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 10, requires too many codewords (maximum 153)", 3, "" }, - /* 54*/ { BARCODE_AZTEC, -1, -1, -1, 11, -1, -1, { 0, 0, "" }, "\377", 166, ZINT_WARN_NONCOMPLIANT, 45, 45, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 55*/ { BARCODE_AZTEC, -1, -1, -1, 11, -1, -1, { 0, 0, "" }, "\377", 167, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 11, requires too many codewords (maximum 193)", 3, "" }, - /* 56*/ { BARCODE_AZTEC, -1, -1, -1, 12, -1, -1, { 0, 0, "" }, "\377", 205, ZINT_WARN_NONCOMPLIANT, 49, 49, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 57*/ { BARCODE_AZTEC, -1, -1, -1, 12, -1, -1, { 0, 0, "" }, "\377", 206, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 12, requires too many codewords (maximum 237)", 3, "" }, - /* 58*/ { BARCODE_AZTEC, -1, -1, -1, 13, -1, -1, { 0, 0, "" }, "\377", 253, ZINT_WARN_NONCOMPLIANT, 53, 53, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 59*/ { BARCODE_AZTEC, -1, -1, -1, 13, -1, -1, { 0, 0, "" }, "\377", 254, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 13, requires too many codewords (maximum 227)", 3, "" }, - /* 60*/ { BARCODE_AZTEC, -1, -1, -1, 14, -1, -1, { 0, 0, "" }, "\377", 300, ZINT_WARN_NONCOMPLIANT, 57, 57, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 61*/ { BARCODE_AZTEC, -1, -1, -1, 14, -1, -1, { 0, 0, "" }, "\377", 301, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 14, requires too many codewords (maximum 269)", 3, "" }, - /* 62*/ { BARCODE_AZTEC, -1, -1, -1, 15, -1, -1, { 0, 0, "" }, "\377", 349, ZINT_WARN_NONCOMPLIANT, 61, 61, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 63*/ { BARCODE_AZTEC, -1, -1, -1, 15, -1, -1, { 0, 0, "" }, "\377", 350, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 15, requires too many codewords (maximum 313)", 3, "" }, - /* 64*/ { BARCODE_AZTEC, -1, -1, -1, 16, -1, -1, { 0, 0, "" }, "\377", 403, ZINT_WARN_NONCOMPLIANT, 67, 67, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 65*/ { BARCODE_AZTEC, -1, -1, -1, 16, -1, -1, { 0, 0, "" }, "\377", 404, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 16, requires too many codewords (maximum 361)", 3, "" }, - /* 66*/ { BARCODE_AZTEC, -1, -1, -1, 17, -1, -1, { 0, 0, "" }, "\377", 462, ZINT_WARN_NONCOMPLIANT, 71, 71, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 67*/ { BARCODE_AZTEC, -1, -1, -1, 17, -1, -1, { 0, 0, "" }, "\377", 463, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 17, requires too many codewords (maximum 413)", 3, "" }, - /* 68*/ { BARCODE_AZTEC, -1, -1, -1, 18, -1, -1, { 0, 0, "" }, "\377", 501, ZINT_WARN_NONCOMPLIANT, 75, 75, "Warning 708: Number of ECC codewords 22 less than 5% + 3 of data codewords 448", 3, "22 ECC codewords (448 data codewords)" }, - /* 69*/ { BARCODE_AZTEC, -1, -1, -1, 18, -1, -1, { 0, 0, "" }, "\377", 502, ZINT_WARN_NONCOMPLIANT, 75, 75, "Warning 708: Number of ECC codewords 21 less than 5% + 3 of data codewords 449", 3, "" }, - /* 70*/ { BARCODE_AZTEC, -1, -1, -1, 18, -1, -1, { 0, 0, "" }, "\377", 523, ZINT_WARN_NONCOMPLIANT, 75, 75, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 71*/ { BARCODE_AZTEC, -1, -1, -1, 18, -1, -1, { 0, 0, "" }, "\377", 524, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 18, requires too many codewords (maximum 467)", 3, "" }, - /* 72*/ { BARCODE_AZTEC, -1, -1, -1, 19, -1, -1, { 0, 0, "" }, "\377", 588, ZINT_WARN_NONCOMPLIANT, 79, 79, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 73*/ { BARCODE_AZTEC, -1, -1, -1, 19, -1, -1, { 0, 0, "" }, "\377", 589, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 19, requires too many codewords (maximum 525)", 3, "" }, - /* 74*/ { BARCODE_AZTEC, -1, -1, -1, 20, -1, -1, { 0, 0, "" }, "\377", 655, ZINT_WARN_NONCOMPLIANT, 83, 83, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 75*/ { BARCODE_AZTEC, -1, -1, -1, 20, -1, -1, { 0, 0, "" }, "\377", 656, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 20, requires too many codewords (maximum 585)", 3, "" }, - /* 76*/ { BARCODE_AZTEC, -1, -1, -1, 21, -1, -1, { 0, 0, "" }, "\377", 727, ZINT_WARN_NONCOMPLIANT, 87, 87, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 77*/ { BARCODE_AZTEC, -1, -1, -1, 21, -1, -1, { 0, 0, "" }, "\377", 728, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 21, requires too many codewords (maximum 649)", 3, "" }, - /* 78*/ { BARCODE_AZTEC, -1, -1, -1, 22, -1, -1, { 0, 0, "" }, "\377", 804, ZINT_WARN_NONCOMPLIANT, 91, 91, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 79*/ { BARCODE_AZTEC, -1, -1, -1, 22, -1, -1, { 0, 0, "" }, "\377", 805, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 22, requires too many codewords (maximum 717)", 3, "" }, - /* 80*/ { BARCODE_AZTEC, -1, -1, -1, 23, -1, -1, { 0, 0, "" }, "\377", 883, ZINT_WARN_NONCOMPLIANT, 95, 95, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 81*/ { BARCODE_AZTEC, -1, -1, -1, 23, -1, -1, { 0, 0, "" }, "\377", 884, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 23, requires too many codewords (maximum 787)", 3, "" }, - /* 82*/ { BARCODE_AZTEC, -1, -1, -1, 24, -1, -1, { 0, 0, "" }, "\377", 966, ZINT_WARN_NONCOMPLIANT, 101, 101, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 83*/ { BARCODE_AZTEC, -1, -1, -1, 24, -1, -1, { 0, 0, "" }, "\377", 967, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 24, requires too many codewords (maximum 861)", 3, "" }, - /* 84*/ { BARCODE_AZTEC, -1, -1, -1, 25, -1, -1, { 0, 0, "" }, "\377", 1051, ZINT_WARN_NONCOMPLIANT, 105, 105, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 85*/ { BARCODE_AZTEC, -1, -1, -1, 25, -1, -1, { 0, 0, "" }, "\377", 1052, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 25, requires too many codewords (maximum 937)", 3, "" }, - /* 86*/ { BARCODE_AZTEC, -1, -1, -1, 26, -1, -1, { 0, 0, "" }, "\377", 1091, ZINT_WARN_NONCOMPLIANT, 109, 109, "Warning 708: Number of ECC codewords 48 less than 5% + 3 of data codewords 972", 3, "" }, - /* 87*/ { BARCODE_AZTEC, -1, -1, -1, 26, -1, -1, { 0, 0, "" }, "\377", 1092, ZINT_WARN_NONCOMPLIANT, 109, 109, "Warning 708: Number of ECC codewords 47 less than 5% + 3 of data codewords 973", 3, "" }, - /* 88*/ { BARCODE_AZTEC, -1, -1, -1, 26, -1, -1, { 0, 0, "" }, "\377", 1141, ZINT_WARN_NONCOMPLIANT, 109, 109, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 89*/ { BARCODE_AZTEC, -1, -1, -1, 26, -1, -1, { 0, 0, "" }, "\377", 1142, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 26, requires too many codewords (maximum 1017)", 3, "" }, - /* 90*/ { BARCODE_AZTEC, -1, -1, -1, 27, -1, -1, { 0, 0, "" }, "\377", 1258, ZINT_WARN_NONCOMPLIANT, 113, 113, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 91*/ { BARCODE_AZTEC, -1, -1, -1, 27, -1, -1, { 0, 0, "" }, "\377", 1259, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 27, requires too many codewords (maximum 917)", 3, "" }, - /* 92*/ { BARCODE_AZTEC, -1, -1, -1, 28, -1, -1, { 0, 0, "" }, "\377", 1357, ZINT_WARN_NONCOMPLIANT, 117, 117, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 93*/ { BARCODE_AZTEC, -1, -1, -1, 28, -1, -1, { 0, 0, "" }, "\377", 1358, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 28, requires too many codewords (maximum 989)", 3, "" }, - /* 94*/ { BARCODE_AZTEC, -1, -1, -1, 29, -1, -1, { 0, 0, "" }, "\377", 1459, ZINT_WARN_NONCOMPLIANT, 121, 121, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 95*/ { BARCODE_AZTEC, -1, -1, -1, 29, -1, -1, { 0, 0, "" }, "\377", 1460, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 29, requires too many codewords (maximum 1063)", 3, "" }, - /* 96*/ { BARCODE_AZTEC, -1, -1, -1, 30, -1, -1, { 0, 0, "" }, "\377", 1566, ZINT_WARN_NONCOMPLIANT, 125, 125, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 97*/ { BARCODE_AZTEC, -1, -1, -1, 30, -1, -1, { 0, 0, "" }, "\377", 1567, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 30, requires too many codewords (maximum 1141)", 3, "" }, - /* 98*/ { BARCODE_AZTEC, -1, -1, -1, 31, -1, -1, { 0, 0, "" }, "\377", 1676, ZINT_WARN_NONCOMPLIANT, 131, 131, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /* 99*/ { BARCODE_AZTEC, -1, -1, -1, 31, -1, -1, { 0, 0, "" }, "\377", 1677, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 31, requires too many codewords (maximum 1221)", 3, "" }, - /*100*/ { BARCODE_AZTEC, -1, -1, -1, 32, -1, -1, { 0, 0, "" }, "\377", 1789, ZINT_WARN_NONCOMPLIANT, 135, 135, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /*101*/ { BARCODE_AZTEC, -1, -1, -1, 32, -1, -1, { 0, 0, "" }, "\377", 1790, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 32, requires too many codewords (maximum 1303)", 3, "" }, - /*102*/ { BARCODE_AZTEC, -1, -1, -1, 33, -1, -1, { 0, 0, "" }, "\377", 1907, ZINT_WARN_NONCOMPLIANT, 139, 139, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /*103*/ { BARCODE_AZTEC, -1, -1, -1, 33, -1, -1, { 0, 0, "" }, "\377", 1908, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 33, requires too many codewords (maximum 1389)", 3, "" }, - /*104*/ { BARCODE_AZTEC, -1, -1, -1, 34, -1, -1, { 0, 0, "" }, "1", 4429, ZINT_WARN_NONCOMPLIANT, 143, 143, "Warning 706: Number of ECC codewords 3 at minimum", 1, "" }, - /*105*/ { BARCODE_AZTEC, -1, -1, -1, 34, -1, -1, { 0, 0, "" }, "1", 4430, ZINT_ERROR_TOO_LONG, 0, 0, "Error 505: Input too long for Version 34, requires 1478 codewords (maximum 1477)", 1, "" }, - /*106*/ { BARCODE_AZTEC, -1, -1, -1, 34, -1, -1, { 0, 0, "" }, "\377", 2028, ZINT_WARN_NONCOMPLIANT, 143, 143, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /*107*/ { BARCODE_AZTEC, -1, -1, -1, 34, -1, -1, { 0, 0, "" }, "\377", 2029, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 34, requires too many codewords (maximum 1477)", 3, "" }, - /*108*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "1", 4699, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 706: Number of ECC codewords 3 at minimum", 1, "" }, - /*109*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "1", 4700, ZINT_ERROR_TOO_LONG, 0, 0, "Error 505: Input too long for Version 35, requires 1568 codewords (maximum 1567)", 1, "" }, - /*110*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "A", 3590, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 708: Number of ECC codewords 74 less than 5% + 3 of data codewords 1496", 1, "74 ECC codewords (1496 data codewords)" }, - /*111*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "A", 3591, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 708: Number of ECC codewords 73 less than 5% + 3 of data codewords 1497", 1, "" }, - /*112*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "A", 3760, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 706: Number of ECC codewords 3 at minimum", 1, "" }, - /*113*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "A", 3761, ZINT_ERROR_TOO_LONG, 0, 0, "Error 505: Input too long for Version 35, requires 1568 codewords (maximum 1567)", 1, "" }, - /*114*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "\377", 2149, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /*115*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "\377", 2150, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 35, requires too many codewords (maximum 1567)", 3, "" }, - /*116*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "1", 4753, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 708: Number of ECC codewords 79 less than 5% + 3 of data codewords 1585", 1, "79 ECC codewords (1585 data codewords)" }, - /*117*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "1", 4981, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 1, "" }, - /*118*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "1", 4982, ZINT_ERROR_TOO_LONG, 0, 0, "Error 502: Input too long, requires too many codewords (maximum 1661)", 1, "" }, - /*119*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "\377", 2279, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /*120*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "\377", 2280, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 36, requires too many codewords (maximum 1661)", 3, "" }, - /*121*/ { BARCODE_AZTEC, -1, 899, -1, 36, -1, -1, { 0, 0, "" }, "\377", 2276, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /*122*/ { BARCODE_AZTEC, -1, 899, -1, 36, -1, -1, { 0, 0, "" }, "\377", 2277, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 36, requires too many codewords (maximum 1661)", 3, "" }, - /*123*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 2, 3, "" }, "\377", 2276, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /*124*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 2, 3, "" }, "\377", 2277, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 36, requires too many codewords (maximum 1661)", 3, "" }, - /*125*/ { BARCODE_AZTEC, -1, 899, -1, 36, -1, -1, { 2, 3, "" }, "\377", 2273, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, - /*126*/ { BARCODE_AZTEC, -1, 899, -1, 36, -1, -1, { 2, 3, "" }, "\377", 2274, ZINT_ERROR_TOO_LONG, 0, 0, "Error 505: Input too long for Version 36, requires 1662 codewords (maximum 1661)", 3, "" }, + /* 0*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "\377", 2051, 0, 151, 151, "", 3, "" }, + /* 1*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "\377", 2052, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 1, requires 1495 codewords (maximum 1494)", 3, "" }, + /* 2*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "\377", 2236, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 1, requires 1630 codewords (maximum 1494)", 3, "" }, + /* 3*/ { BARCODE_AZTEC, -1, -1, 1, -1, -1, -1, { 0, 0, "" }, "\377", 2237, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 1, requires too many codewords (maximum 1494)", 3, "" }, + /* 4*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "1", 3832, 0, 151, 151, "", 1, "" }, + /* 5*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "1", 3833, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 2, requires 1279 codewords (maximum 1278)", 1, "" }, + /* 6*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "A", 3067, 0, 151, 151, "", 1, "" }, + /* 7*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "A", 3068, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 2, requires too many codewords (maximum 1278)", 1, "" }, + /* 8*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "\240", 1914, 0, 151, 151, "", 3, "This is what Table 1 gives as Bytes capacity (no bit-stuffing)" }, + /* 9*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "\240", 1915, ZINT_ERROR_TOO_LONG, 151, 151, "Error 707: Input too long for ECC level 2, requires too many codewords (maximum 1278)", 3, "" }, + /* 10*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "\377", 1754, 0, 151, 151, "", 3, "This is Bytes capacity with max bit-stuffing" }, + /* 11*/ { BARCODE_AZTEC, -1, -1, 2, -1, -1, -1, { 0, 0, "" }, "\377", 1755, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 2, requires 1279 codewords (maximum 1278)", 3, "" }, + /* 12*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "1", 3181, 0, 151, 151, "", 1, "" }, + /* 13*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "1", 3182, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 3, requires 1062 codewords (maximum 1061)", 1, "" }, + /* 14*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "A", 2402, 0, 147, 147, "", 1, "" }, + /* 15*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "A", 2549, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 3, requires too many codewords (maximum 1061)", 1, "" }, + /* 16*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "\377", 1456, 0, 151, 151, "", 3, "" }, + /* 17*/ { BARCODE_AZTEC, -1, -1, 3, -1, -1, -1, { 0, 0, "" }, "\377", 1457, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 3, requires 1062 codewords (maximum 1061)", 3, "" }, + /* 18*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "1", 2485, 0, 151, 151, "", 1, "" }, + /* 19*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "1", 2486, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 4, requires too many codewords (maximum 829)", 1, "" }, + /* 20*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "A", 1989, 0, 151, 151, "", 1, "" }, + /* 21*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "A", 1990, ZINT_ERROR_TOO_LONG, 0, 0, "Error 707: Input too long for ECC level 4, requires too many codewords (maximum 829)", 1, "" }, + /* 22*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "\377", 1137, 0, 151, 151, "", 3, "" }, + /* 23*/ { BARCODE_AZTEC, -1, -1, 4, -1, -1, -1, { 0, 0, "" }, "\377", 1138, ZINT_ERROR_TOO_LONG, 0, 0, "Error 504: Input too long for ECC level 4, requires 830 codewords (maximum 829)", 3, "" }, + /* 24*/ { BARCODE_AZTEC, -1, -1, -1, 1, -1, -1, { 0, 0, "" }, "\377", 7, 0, 15, 15, "", 3, "4 ECC codewords" }, + /* 25*/ { BARCODE_AZTEC, -1, -1, -1, 1, -1, -1, { 0, 0, "" }, "\377", 8, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 1, requires too many codewords (maximum 14)", 3, "" }, + /* 26*/ { BARCODE_AZTEC, -1, -1, -1, 1, -1, -1, { 0, 0, "" }, "\377", 2078, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 1, requires too many codewords (maximum 14)", 3, "" }, + /* 27*/ { BARCODE_AZTEC, -1, -1, -1, 2, -1, -1, { 0, 0, "" }, "\377", 21, ZINT_WARN_NONCOMPLIANT, 19, 19, "Warning 708: Number of ECC codewords 4 less than 5% + 3 of data codewords 36", 3, "4 ECC codewords" }, + /* 28*/ { BARCODE_AZTEC, -1, -1, -1, 2, -1, -1, { 0, 0, "" }, "\377", 22, ZINT_WARN_NONCOMPLIANT, 19, 19, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, + /* 29*/ { BARCODE_AZTEC, -1, -1, -1, 2, -1, -1, { 0, 0, "" }, "\377", 23, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 2, requires too many codewords (maximum 37)", 3, "" }, + /* 30*/ { BARCODE_AZTEC, -1, -1, -1, 2, -1, -1, { 0, 0, "" }, "\377", 1866, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 2, requires too many codewords (maximum 37)", 3, "" }, + /* 31*/ { BARCODE_AZTEC, -1, -1, -1, 3, -1, -1, { 0, 0, "" }, "\377", 39, ZINT_WARN_NONCOMPLIANT, 23, 23, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, + /* 32*/ { BARCODE_AZTEC, -1, -1, -1, 3, -1, -1, { 0, 0, "" }, "\377", 40, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 3, requires too many codewords (maximum 48)", 3, "" }, + /* 33*/ { BARCODE_AZTEC, -1, -1, -1, 4, -1, -1, { 0, 0, "" }, "\377", 51, 0, 27, 27, "", 3, "15 ECC codewords (Version 4 (compact) spare 12 ECC blocks bonus)" }, + /* 34*/ { BARCODE_AZTEC, -1, -1, -1, 4, -1, -1, { 0, 0, "" }, "\377", 52, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 4, requires too many codewords (maximum 61)", 3, "" }, + /* 35*/ { BARCODE_AZTEC, -1, -1, -1, 5, -1, -1, { 0, 0, "" }, "\377", 10, ZINT_WARN_NONCOMPLIANT, 19, 19, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, + /* 36*/ { BARCODE_AZTEC, -1, -1, -1, 5, -1, -1, { 0, 0, "" }, "\377", 11, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 5, requires too many codewords (maximum 18)", 3, "" }, + /* 37*/ { BARCODE_AZTEC, -1, -1, -1, 6, -1, -1, { 0, 0, "" }, "\377", 27, ZINT_WARN_NONCOMPLIANT, 23, 23, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, + /* 38*/ { BARCODE_AZTEC, -1, -1, -1, 6, -1, -1, { 0, 0, "" }, "\377", 28, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 6, requires too many codewords (maximum 45)", 3, "" }, + /* 39*/ { BARCODE_AZTEC, -1, -1, -1, 7, -1, -1, { 0, 0, "" }, "\377", 47, ZINT_WARN_NONCOMPLIANT, 27, 27, "Warning 706: Number of ECC codewords 3 at minimum", 3, "3 ECC codewords" }, + /* 40*/ { BARCODE_AZTEC, -1, -1, -1, 7, -1, -1, { 0, 0, "" }, "\377", 48, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 7, requires too many codewords (maximum 57)", 3, "" }, + /* 41*/ { BARCODE_AZTEC, -1, -1, -1, 8, -1, -1, { 0, 0, "" }, "\377", 71, ZINT_WARN_NONCOMPLIANT, 31, 31, "Warning 708: Number of ECC codewords 4 less than 5% + 3 of data codewords 84", 3, "4 ECC codewords" }, + /* 42*/ { BARCODE_AZTEC, -1, -1, -1, 8, -1, -1, { 0, 0, "" }, "\377", 72, ZINT_WARN_NONCOMPLIANT, 31, 31, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 43*/ { BARCODE_AZTEC, -1, -1, -1, 8, -1, -1, { 0, 0, "" }, "\377", 73, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 8, requires too many codewords (maximum 85)", 3, "" }, + /* 44*/ { BARCODE_AZTEC, -1, -1, -1, 9, -1, -1, { 0, 0, "" }, "\377", 98, ZINT_WARN_NONCOMPLIANT, 37, 37, "Warning 708: Number of ECC codewords 5 less than 5% + 3 of data codewords 115", 3, "5 ECC codewords" }, + /* 45*/ { BARCODE_AZTEC, -1, -1, -1, 9, -1, -1, { 0, 0, "" }, "\377", 100, ZINT_WARN_NONCOMPLIANT, 37, 37, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 46*/ { BARCODE_AZTEC, -1, -1, -1, 9, -1, -1, { 0, 0, "" }, "\377", 101, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 9, requires too many codewords (maximum 117)", 3, "" }, + /* 47*/ { BARCODE_AZTEC, -1, -1, -1, 10, -1, -1, { 0, 0, "" }, "\377", 128, ZINT_WARN_NONCOMPLIANT, 41, 41, "Warning 708: Number of ECC codewords 7 less than 5% + 3 of data codewords 149", 3, "7 ECC codewords" }, + /* 48*/ { BARCODE_AZTEC, -1, -1, -1, 10, -1, -1, { 0, 0, "" }, "\377", 129, ZINT_WARN_NONCOMPLIANT, 41, 41, "Warning 708: Number of ECC codewords 6 less than 5% + 3 of data codewords 150", 3, "" }, + /* 49*/ { BARCODE_AZTEC, -1, -1, -1, 10, -1, -1, { 0, 0, "" }, "\377", 131, ZINT_WARN_NONCOMPLIANT, 41, 41, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 50*/ { BARCODE_AZTEC, -1, -1, -1, 10, -1, -1, { 0, 0, "" }, "\377", 132, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 10, requires too many codewords (maximum 153)", 3, "" }, + /* 51*/ { BARCODE_AZTEC, -1, -1, -1, 11, -1, -1, { 0, 0, "" }, "\377", 166, ZINT_WARN_NONCOMPLIANT, 45, 45, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 52*/ { BARCODE_AZTEC, -1, -1, -1, 11, -1, -1, { 0, 0, "" }, "\377", 167, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 11, requires too many codewords (maximum 193)", 3, "" }, + /* 53*/ { BARCODE_AZTEC, -1, -1, -1, 12, -1, -1, { 0, 0, "" }, "\377", 205, ZINT_WARN_NONCOMPLIANT, 49, 49, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 54*/ { BARCODE_AZTEC, -1, -1, -1, 12, -1, -1, { 0, 0, "" }, "\377", 206, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 12, requires too many codewords (maximum 237)", 3, "" }, + /* 55*/ { BARCODE_AZTEC, -1, -1, -1, 13, -1, -1, { 0, 0, "" }, "\377", 253, ZINT_WARN_NONCOMPLIANT, 53, 53, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 56*/ { BARCODE_AZTEC, -1, -1, -1, 13, -1, -1, { 0, 0, "" }, "\377", 254, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 13, requires too many codewords (maximum 227)", 3, "" }, + /* 57*/ { BARCODE_AZTEC, -1, -1, -1, 14, -1, -1, { 0, 0, "" }, "\377", 300, ZINT_WARN_NONCOMPLIANT, 57, 57, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 58*/ { BARCODE_AZTEC, -1, -1, -1, 14, -1, -1, { 0, 0, "" }, "\377", 301, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 14, requires too many codewords (maximum 269)", 3, "" }, + /* 59*/ { BARCODE_AZTEC, -1, -1, -1, 15, -1, -1, { 0, 0, "" }, "\377", 349, ZINT_WARN_NONCOMPLIANT, 61, 61, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 60*/ { BARCODE_AZTEC, -1, -1, -1, 15, -1, -1, { 0, 0, "" }, "\377", 350, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 15, requires too many codewords (maximum 313)", 3, "" }, + /* 61*/ { BARCODE_AZTEC, -1, -1, -1, 16, -1, -1, { 0, 0, "" }, "\377", 403, ZINT_WARN_NONCOMPLIANT, 67, 67, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 62*/ { BARCODE_AZTEC, -1, -1, -1, 16, -1, -1, { 0, 0, "" }, "\377", 404, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 16, requires too many codewords (maximum 361)", 3, "" }, + /* 63*/ { BARCODE_AZTEC, -1, -1, -1, 17, -1, -1, { 0, 0, "" }, "\377", 462, ZINT_WARN_NONCOMPLIANT, 71, 71, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 64*/ { BARCODE_AZTEC, -1, -1, -1, 17, -1, -1, { 0, 0, "" }, "\377", 463, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 17, requires too many codewords (maximum 413)", 3, "" }, + /* 65*/ { BARCODE_AZTEC, -1, -1, -1, 18, -1, -1, { 0, 0, "" }, "\377", 501, ZINT_WARN_NONCOMPLIANT, 75, 75, "Warning 708: Number of ECC codewords 22 less than 5% + 3 of data codewords 448", 3, "22 ECC codewords (448 data codewords)" }, + /* 66*/ { BARCODE_AZTEC, -1, -1, -1, 18, -1, -1, { 0, 0, "" }, "\377", 502, ZINT_WARN_NONCOMPLIANT, 75, 75, "Warning 708: Number of ECC codewords 21 less than 5% + 3 of data codewords 449", 3, "" }, + /* 67*/ { BARCODE_AZTEC, -1, -1, -1, 18, -1, -1, { 0, 0, "" }, "\377", 523, ZINT_WARN_NONCOMPLIANT, 75, 75, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 68*/ { BARCODE_AZTEC, -1, -1, -1, 18, -1, -1, { 0, 0, "" }, "\377", 524, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 18, requires too many codewords (maximum 467)", 3, "" }, + /* 69*/ { BARCODE_AZTEC, -1, -1, -1, 19, -1, -1, { 0, 0, "" }, "\377", 588, ZINT_WARN_NONCOMPLIANT, 79, 79, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 70*/ { BARCODE_AZTEC, -1, -1, -1, 19, -1, -1, { 0, 0, "" }, "\377", 589, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 19, requires too many codewords (maximum 525)", 3, "" }, + /* 71*/ { BARCODE_AZTEC, -1, -1, -1, 20, -1, -1, { 0, 0, "" }, "\377", 655, ZINT_WARN_NONCOMPLIANT, 83, 83, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 72*/ { BARCODE_AZTEC, -1, -1, -1, 20, -1, -1, { 0, 0, "" }, "\377", 656, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 20, requires too many codewords (maximum 585)", 3, "" }, + /* 73*/ { BARCODE_AZTEC, -1, -1, -1, 21, -1, -1, { 0, 0, "" }, "\377", 727, ZINT_WARN_NONCOMPLIANT, 87, 87, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 74*/ { BARCODE_AZTEC, -1, -1, -1, 21, -1, -1, { 0, 0, "" }, "\377", 728, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 21, requires too many codewords (maximum 649)", 3, "" }, + /* 75*/ { BARCODE_AZTEC, -1, -1, -1, 22, -1, -1, { 0, 0, "" }, "\377", 804, ZINT_WARN_NONCOMPLIANT, 91, 91, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 76*/ { BARCODE_AZTEC, -1, -1, -1, 22, -1, -1, { 0, 0, "" }, "\377", 805, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 22, requires too many codewords (maximum 717)", 3, "" }, + /* 77*/ { BARCODE_AZTEC, -1, -1, -1, 23, -1, -1, { 0, 0, "" }, "\377", 883, ZINT_WARN_NONCOMPLIANT, 95, 95, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 78*/ { BARCODE_AZTEC, -1, -1, -1, 23, -1, -1, { 0, 0, "" }, "\377", 884, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 23, requires too many codewords (maximum 787)", 3, "" }, + /* 79*/ { BARCODE_AZTEC, -1, -1, -1, 24, -1, -1, { 0, 0, "" }, "\377", 966, ZINT_WARN_NONCOMPLIANT, 101, 101, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 80*/ { BARCODE_AZTEC, -1, -1, -1, 24, -1, -1, { 0, 0, "" }, "\377", 967, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 24, requires too many codewords (maximum 861)", 3, "" }, + /* 81*/ { BARCODE_AZTEC, -1, -1, -1, 25, -1, -1, { 0, 0, "" }, "\377", 1051, ZINT_WARN_NONCOMPLIANT, 105, 105, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 82*/ { BARCODE_AZTEC, -1, -1, -1, 25, -1, -1, { 0, 0, "" }, "\377", 1052, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 25, requires too many codewords (maximum 937)", 3, "" }, + /* 83*/ { BARCODE_AZTEC, -1, -1, -1, 26, -1, -1, { 0, 0, "" }, "\377", 1091, ZINT_WARN_NONCOMPLIANT, 109, 109, "Warning 708: Number of ECC codewords 48 less than 5% + 3 of data codewords 972", 3, "" }, + /* 84*/ { BARCODE_AZTEC, -1, -1, -1, 26, -1, -1, { 0, 0, "" }, "\377", 1092, ZINT_WARN_NONCOMPLIANT, 109, 109, "Warning 708: Number of ECC codewords 47 less than 5% + 3 of data codewords 973", 3, "" }, + /* 85*/ { BARCODE_AZTEC, -1, -1, -1, 26, -1, -1, { 0, 0, "" }, "\377", 1141, ZINT_WARN_NONCOMPLIANT, 109, 109, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 86*/ { BARCODE_AZTEC, -1, -1, -1, 26, -1, -1, { 0, 0, "" }, "\377", 1142, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 26, requires too many codewords (maximum 1017)", 3, "" }, + /* 87*/ { BARCODE_AZTEC, -1, -1, -1, 27, -1, -1, { 0, 0, "" }, "\377", 1258, ZINT_WARN_NONCOMPLIANT, 113, 113, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 88*/ { BARCODE_AZTEC, -1, -1, -1, 27, -1, -1, { 0, 0, "" }, "\377", 1259, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 27, requires too many codewords (maximum 917)", 3, "" }, + /* 89*/ { BARCODE_AZTEC, -1, -1, -1, 28, -1, -1, { 0, 0, "" }, "\377", 1357, ZINT_WARN_NONCOMPLIANT, 117, 117, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 90*/ { BARCODE_AZTEC, -1, -1, -1, 28, -1, -1, { 0, 0, "" }, "\377", 1358, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 28, requires too many codewords (maximum 989)", 3, "" }, + /* 91*/ { BARCODE_AZTEC, -1, -1, -1, 29, -1, -1, { 0, 0, "" }, "\377", 1459, ZINT_WARN_NONCOMPLIANT, 121, 121, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 92*/ { BARCODE_AZTEC, -1, -1, -1, 29, -1, -1, { 0, 0, "" }, "\377", 1460, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 29, requires too many codewords (maximum 1063)", 3, "" }, + /* 93*/ { BARCODE_AZTEC, -1, -1, -1, 30, -1, -1, { 0, 0, "" }, "\377", 1566, ZINT_WARN_NONCOMPLIANT, 125, 125, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 94*/ { BARCODE_AZTEC, -1, -1, -1, 30, -1, -1, { 0, 0, "" }, "\377", 1567, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 30, requires too many codewords (maximum 1141)", 3, "" }, + /* 95*/ { BARCODE_AZTEC, -1, -1, -1, 31, -1, -1, { 0, 0, "" }, "\377", 1676, ZINT_WARN_NONCOMPLIANT, 131, 131, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 96*/ { BARCODE_AZTEC, -1, -1, -1, 31, -1, -1, { 0, 0, "" }, "\377", 1677, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 31, requires too many codewords (maximum 1221)", 3, "" }, + /* 97*/ { BARCODE_AZTEC, -1, -1, -1, 32, -1, -1, { 0, 0, "" }, "\377", 1789, ZINT_WARN_NONCOMPLIANT, 135, 135, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /* 98*/ { BARCODE_AZTEC, -1, -1, -1, 32, -1, -1, { 0, 0, "" }, "\377", 1790, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 32, requires too many codewords (maximum 1303)", 3, "" }, + /* 99*/ { BARCODE_AZTEC, -1, -1, -1, 33, -1, -1, { 0, 0, "" }, "\377", 1907, ZINT_WARN_NONCOMPLIANT, 139, 139, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /*100*/ { BARCODE_AZTEC, -1, -1, -1, 33, -1, -1, { 0, 0, "" }, "\377", 1908, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 33, requires too many codewords (maximum 1389)", 3, "" }, + /*101*/ { BARCODE_AZTEC, -1, -1, -1, 34, -1, -1, { 0, 0, "" }, "1", 4429, ZINT_WARN_NONCOMPLIANT, 143, 143, "Warning 706: Number of ECC codewords 3 at minimum", 1, "" }, + /*102*/ { BARCODE_AZTEC, -1, -1, -1, 34, -1, -1, { 0, 0, "" }, "1", 4430, ZINT_ERROR_TOO_LONG, 0, 0, "Error 505: Input too long for Version 34, requires 1478 codewords (maximum 1477)", 1, "" }, + /*103*/ { BARCODE_AZTEC, -1, -1, -1, 34, -1, -1, { 0, 0, "" }, "\377", 2028, ZINT_WARN_NONCOMPLIANT, 143, 143, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /*104*/ { BARCODE_AZTEC, -1, -1, -1, 34, -1, -1, { 0, 0, "" }, "\377", 2029, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 34, requires too many codewords (maximum 1477)", 3, "" }, + /*105*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "1", 4699, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 706: Number of ECC codewords 3 at minimum", 1, "" }, + /*106*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "1", 4700, ZINT_ERROR_TOO_LONG, 0, 0, "Error 505: Input too long for Version 35, requires 1568 codewords (maximum 1567)", 1, "" }, + /*107*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "A", 3590, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 708: Number of ECC codewords 74 less than 5% + 3 of data codewords 1496", 1, "74 ECC codewords (1496 data codewords)" }, + /*108*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "A", 3591, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 708: Number of ECC codewords 73 less than 5% + 3 of data codewords 1497", 1, "" }, + /*109*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "A", 3760, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 706: Number of ECC codewords 3 at minimum", 1, "" }, + /*110*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "A", 3761, ZINT_ERROR_TOO_LONG, 0, 0, "Error 505: Input too long for Version 35, requires 1568 codewords (maximum 1567)", 1, "" }, + /*111*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "\377", 2149, ZINT_WARN_NONCOMPLIANT, 147, 147, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /*112*/ { BARCODE_AZTEC, -1, -1, -1, 35, -1, -1, { 0, 0, "" }, "\377", 2150, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 35, requires too many codewords (maximum 1567)", 3, "" }, + /*113*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "1", 4753, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 708: Number of ECC codewords 79 less than 5% + 3 of data codewords 1585", 1, "79 ECC codewords (1585 data codewords)" }, + /*114*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "1", 4981, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 1, "" }, + /*115*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "1", 4982, ZINT_ERROR_TOO_LONG, 0, 0, "Error 803: Input length 4982 too long (maximum 4981)", 1, "" }, + /*116*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "\377", 2279, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "Much bit-stuffing" }, + /*117*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "\377", 2280, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 36, requires too many codewords (maximum 1661)", 3, "" }, + /*118*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "\240", 2486, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "Less bit-stuffing" }, + /*119*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "\240", 2487, ZINT_ERROR_TOO_LONG, 151, 151, "Error 502: Input too long, requires too many codewords (maximum 1661)", 3, "" }, + /*120*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "\240A", 2486, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /*121*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 0, 0, "" }, "\240A", 2487, ZINT_ERROR_TOO_LONG, 151, 151, "Error 502: Input too long, requires too many codewords (maximum 1661)", 3, "" }, + /*122*/ { BARCODE_AZTEC, -1, 899, -1, 36, -1, -1, { 0, 0, "" }, "\377", 2276, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /*123*/ { BARCODE_AZTEC, -1, 899, -1, 36, -1, -1, { 0, 0, "" }, "\377", 2277, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 36, requires too many codewords (maximum 1661)", 3, "" }, + /*124*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 2, 3, "" }, "\377", 2276, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /*125*/ { BARCODE_AZTEC, -1, -1, -1, 36, -1, -1, { 2, 3, "" }, "\377", 2277, ZINT_ERROR_TOO_LONG, 0, 0, "Error 704: Input too long for Version 36, requires too many codewords (maximum 1661)", 3, "" }, + /*126*/ { BARCODE_AZTEC, -1, 899, -1, 36, -1, -1, { 2, 3, "" }, "\377", 2273, ZINT_WARN_NONCOMPLIANT, 151, 151, "Warning 706: Number of ECC codewords 3 at minimum", 3, "" }, + /*127*/ { BARCODE_AZTEC, -1, 899, -1, 36, -1, -1, { 2, 3, "" }, "\377", 2274, ZINT_ERROR_TOO_LONG, 0, 0, "Error 505: Input too long for Version 36, requires 1662 codewords (maximum 1661)", 3, "" }, }; const int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -268,6 +269,151 @@ static void test_large(const testCtx *const p_ctx) { testFinish(); } +static void test_bs(const testCtx *const p_ctx) { + int debug = p_ctx->debug; + + /* Cf `AZHighLevelEncoderTest::HighLevelEncodeBinary()` */ + static int lens[] = { + 1, 2, 3, 10, 29, 30, 31, 32, 33, 34, 60, 61, 62, 63, 64, 65, 2076, 2077, 2078, 2079, 2080, 2100, 2230 + }; + const int lens_size = ARRAY_SIZE(lens); + + int i, j, ret; + struct zint_symbol *symbol = NULL; + + char buf[2230]; + + char escaped[9216]; + char cmp_buf[32768]; + char cmp_msg[1024]; + + /* Only do zxing-cpp test if asked, too slow otherwise, but not much of a test if not */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); + + testStartSymbol(p_ctx->func_name, &symbol); + + for (j = 0; j < 2; j++) { + for (i = 0; i < lens_size; i++) { + const int length = lens[i]; + + if (j == 1 && length <= 3) { + continue; + } + memset(buf, 0xA1 /*¡*/, length); + if (j == 1) { + /* Trigger `az_LatchMaybeAndAppend()` with 2 chars (`pairCode` == 3) + & `az_AddByteShiftChar()` with 2 chars and `deltaBitCount2` */ + buf[length - 3] = '.'; + buf[length - 2] = ' '; + } + + symbol = ZBarcode_Create(); + assert_nonnull(symbol, "Symbol not created\n"); + + testUtilSetSymbol(symbol, BARCODE_AZTEC, DATA_MODE, -1 /*eci*/, + 1 /*option_1*/, -1 /*option_2*/, -1 /*option_3*/, + -1 /*output_options*/, NULL, 0, debug | ZINT_DEBUG_TEST_AZTEC_SKIP_ALL); + + ret = ZBarcode_Encode(symbol, TCU(buf), length); + assert_zero(ret, "i:%d ZBarcode_Encode(%d) ret %d != 0 (%s)\n", i, length, ret, symbol->errtxt); + + if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, buf, length, debug)) { + int cmp_len, ret_len; + char modules_dump[22801 + 1]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), + -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilZXingCPP(i, symbol, buf, length, modules_dump, 3 /*zxingcpp_cmp*/, + cmp_buf, sizeof(cmp_buf), &cmp_len); + assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", + i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, buf, length, + NULL /*primary*/, escaped, &ret_len); + assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, + escaped); + } + + ZBarcode_Delete(symbol); + } + } + + testFinish(); +} + +static void test_many_states(const testCtx *const p_ctx) { + int debug = p_ctx->debug; + + static char modes_buf[6][6] = { + { 'A', 'B', ' ', 'C', 'D', 'E' }, /* AZ_U */ + { 'a', ' ', 'b', 'c', 'd', 'e' }, /* AZ_L */ + { '^', '_', '`', '\r', '|', '~' }, /* AZ_M */ + { '#', '$', '%', '\r', '&', '}' }, /* AZ_P */ + { '1', ',', ' ', '2', '3', ',' }, /* AZ_D */ + { 'A', '*', '\016', '2', '1', '0' }, /* Single AZ_B () amongst non-AZ_B */ + }; + + int i, j, k, ret; + struct zint_symbol *symbol = NULL; + + const int length = 3191; + char buf[3191]; + + char escaped[9216]; + char cmp_buf[32768]; + char cmp_msg[1024]; + + /* Only do zxing-cpp test if asked, too slow otherwise */ + int do_zxingcpp = (debug & ZINT_DEBUG_TEST_ZXINGCPP) && testUtilHaveZXingCPPDecoder(); + + testStartSymbol(p_ctx->func_name, &symbol); + + for (i = 0; i < length; i += 36) { + for (j = 0; j < 6; j++) { + for (k = 0; k < 6 && i + j * 6 + k < length; k++) { + buf[i + j * 6 + k] = modes_buf[j][k]; + } + if (i + j * 6 + k == length) { + break; + } + } + if (i + j * 6 + k == length) { + break; + } + } + + symbol = ZBarcode_Create(); + assert_nonnull(symbol, "Symbol not created\n"); + + testUtilSetSymbol(symbol, BARCODE_AZTEC, DATA_MODE, -1 /*eci*/, + 1 /*option_1*/, 36 /*option_2*/, -1 /*option_3*/, + -1 /*output_options*/, NULL, 0, debug); + + ret = ZBarcode_Encode(symbol, TCU(buf), length); + assert_nonzero(ret < ZINT_ERROR, "ZBarcode_Encode(%d) ret %d >= ZINT_ERROR (%s)\n", length, ret, symbol->errtxt); + + if (do_zxingcpp && testUtilCanZXingCPP(i, symbol, buf, length, debug)) { + int cmp_len, ret_len; + char modules_dump[22801 + 1]; + assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), + -1, "i:%d testUtilModulesDump == -1\n", i); + ret = testUtilZXingCPP(i, symbol, buf, length, modules_dump, 3 /*zxingcpp_cmp*/, + cmp_buf, sizeof(cmp_buf), &cmp_len); + assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", + i, testUtilBarcodeName(symbol->symbology), ret); + + ret = testUtilZXingCPPCmp(symbol, cmp_msg, cmp_buf, cmp_len, buf, length, + NULL /*primary*/, escaped, &ret_len); + assert_zero(ret, "i:%d %s testUtilZXingCPPCmp %d != 0 %s\n actual: %.*s\nexpected: %.*s\n", + i, testUtilBarcodeName(symbol->symbology), ret, cmp_msg, cmp_len, cmp_buf, ret_len, + escaped); + } + + ZBarcode_Delete(symbol); + + testFinish(); +} + static void test_options(const testCtx *const p_ctx) { int debug = p_ctx->debug; @@ -318,11 +464,11 @@ static void test_options(const testCtx *const p_ctx) { /* 24*/ { BARCODE_AZTEC, -1, -1, -1, 37, -1, { 0, 0, "" }, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 510: Version '37' out of range (1 to 36)", -1, 37, 0 }, /* 25*/ { BARCODE_AZTEC, -1, -1, -1, -2, -1, { 0, 0, "" }, "1234567890", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 510: Version '-2' out of range (1 to 36)", -1, -2, 0 }, /* 26*/ { BARCODE_AZTEC, GS1_MODE, READER_INIT, -1, -1, -1, { 0, 0, "" }, "[91]A", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 501: Cannot use Reader Initialisation in GS1 mode", -1, 0, 0 }, - /* 27*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, -1, { 0, 0, "" }, "[91]A", 0, 15, 15, "", (41 << 8) | 3, 1, 0 }, - /* 28*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(91)A", 0, 15, 15, "", (41 << 8) | 3, 1, 0 }, + /* 27*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, -1, { 0, 0, "" }, "[91]A", 0, 15, 15, "", (47 << 8) | 4, 1, 0 }, + /* 28*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(91)A", 0, 15, 15, "", (47 << 8) | 4, 1, 0 }, /* 29*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(91)(", ZINT_ERROR_INVALID_DATA, -1, -1, "Error 253: Malformed AI in input (brackets don't match)", -1, 0, 0 }, - /* 30*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(91)\\(", 0, 15, 15, "", (41 << 8) | 3, 1, 0 }, /* Escaped parens now work without ESCAPE_MODE */ - /* 31*/ { BARCODE_AZTEC, GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(91)\\(", 0, 15, 15, "", (41 << 8) | 3, 1, 0 }, + /* 30*/ { BARCODE_AZTEC, GS1_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(91)\\(", 0, 15, 15, "", (47 << 8) | 4, 1, 0 }, /* Escaped parens now work without ESCAPE_MODE */ + /* 31*/ { BARCODE_AZTEC, GS1_MODE | ESCAPE_MODE | GS1PARENS_MODE, -1, -1, -1, -1, { 0, 0, "" }, "(91)\\(", 0, 15, 15, "", (47 << 8) | 4, 1, 0 }, /* 32*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 26, -1, { 0, 0, "" }, "A", 0, 109, 109, "", (99 << 8) | 4, 26, 0 }, /* 22 layers */ /* 33*/ { BARCODE_AZTEC, -1, READER_INIT, -1, 27, -1, { 0, 0, "" }, "A", ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 709: Version '27' out of range for Reader Initialisation symbols (maximum 26)", -1, 27, 0 }, /* 23 layers */ /* 34*/ { BARCODE_AZTEC, -1, READER_INIT, 4, -1, -1, { 0, 0, "" }, "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377", ZINT_ERROR_TOO_LONG, -1, -1, "Error 506: Input too long for Reader Initialisation, requires 23 layers (maximum 22)", 4, 27, 0 }, /* 23 layers */ @@ -806,189 +952,283 @@ static void test_encode(const testCtx *const p_ctx) { "00000000000000000000000000000000000000000000000000001" "11111111111111111111111111111111111111111111111111101" }, - /* 11*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[01]03453120000011[17]120508[10]ABCD1234[410]9501101020917", -1, 0, 23, 23, 1, 1, "#189 Follow embedded FLG(n) with FLG(0)", - "00100000101111000100100" - "00011101100110001010000" - "00000111000111101011011" - "01000001010100001100010" - "00001001100110000111110" - "00011011111000110101101" - "00001011100111101111110" - "11000111111111111010000" - "11001101000000010111110" - "00111011011111010111110" - "01000001010001011110010" - "00011001010101011111101" - "01101111010001011110011" - "10011001011111011011100" - "01011011000000010010110" - "00011101111111111001100" - "10101100110111100001101" - "10110101111100111010001" - "11101001010000011001110" - "00101010101010001111001" - "11000101000100100000100" + /* 11*/ { BARCODE_AZTEC, GS1_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[01]03453120000011[17]120508[10]ABCD1234[410]9501101020917", -1, 0, 23, 23, 1, 1, "#189 Follow embedded FLG(n) with FLG(0)", + "11011101100110001010000" + "11010000010111100010010" + "00001001101110100000101" + "00000100010100111001011" + "00000001011011100111101" + "00011001110000101011000" + "00000111100111101101111" + "01001111111111111100000" + "00011101000000010010001" + "00100011011111010010001" + "10000101010001011110001" + "00110101010101011010000" + "11001011010001011000011" + "00101101011111011011010" + "10101111000000010101101" + "01111101111111111111100" + "01011000110111100111100" + "01110110101100010101010" + "10001110000101100110111" + "01001010001001000011100" + "11101010101010001110010" + "11011000000000000101001" "00010001010101010101011" - "11101100000000000010110" }, - /* 12*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[01]03453120000011[17]120508[10]ABCD1234[410]9501101020917", -1, 0, 23, 23, 1, 1, "Same as above", - "00100000101111000100100" - "00011101100110001010000" - "00000111000111101011011" - "01000001010100001100010" - "00001001100110000111110" - "00011011111000110101101" - "00001011100111101111110" - "11000111111111111010000" - "11001101000000010111110" - "00111011011111010111110" - "01000001010001011110010" - "00011001010101011111101" - "01101111010001011110011" - "10011001011111011011100" - "01011011000000010010110" - "00011101111111111001100" - "10101100110111100001101" - "10110101111100111010001" - "11101001010000011001110" - "00101010101010001111001" - "11000101000100100000100" + /* 12*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[01]03453120000011[17]120508[10]ABCD1234[410]9501101020917", -1, 0, 23, 23, 1, 1, "Same as above", + "11011101100110001010000" + "11010000010111100010010" + "00001001101110100000101" + "00000100010100111001011" + "00000001011011100111101" + "00011001110000101011000" + "00000111100111101101111" + "01001111111111111100000" + "00011101000000010010001" + "00100011011111010010001" + "10000101010001011110001" + "00110101010101011010000" + "11001011010001011000011" + "00101101011111011011010" + "10101111000000010101101" + "01111101111111111111100" + "01011000110111100111100" + "01110110101100010101010" + "10001110000101100110111" + "01001010001001000011100" + "11101010101010001110010" + "11011000000000000101001" "00010001010101010101011" - "11101100000000000010110" }, - /* 13*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[01]95012345678903[3103]000123", -1, 0, 19, 19, 1, 1, "#189 Follow embedded FLG(n) with FLG(0)", - "0000000100001010101" - "0001101111011000000" - "0111100100010110100" - "0011000110100100110" - "0010110101010010110" - "0101111111111110101" - "0011110000000101000" - "0101010111110100011" - "1101110100010110100" - "1000010101010111010" - "0011110100010100110" - "1000110111110111110" - "0010110000000101010" - "1111011111111111101" - "1001001111001000100" - "1111111110110100011" - "0111000111101011001" - "1000110111011000101" - "1010100000101101001" + /* 13*/ { BARCODE_AZTEC, GS1_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[01]95012345678903[3103]000123", -1, 0, 19, 19, 1, 1, "#189 Follow embedded FLG(n) with FLG(0)", + "1101000111011000000" + "1100001110000101010" + "0011000101000001110" + "0010100001111100101" + "0010110101010010001" + "0100111111111111100" + "0010110000000100110" + "0000010111110100001" + "0110110100010111010" + "0001010101010111101" + "0111110100010100101" + "0001110111110111001" + "0110110000000100101" + "1110011111111110000" + "0100001111001000010" + "1010000101010111101" + "1101100110110000110" + "0101000001011010110" + "1000110111011000110" }, - /* 14*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[01]95012345678903[3103]000123", -1, 0, 19, 19, 1, 1, "Same as above", - "0000000100001010101" - "0001101111011000000" - "0111100100010110100" - "0011000110100100110" - "0010110101010010110" - "0101111111111110101" - "0011110000000101000" - "0101010111110100011" - "1101110100010110100" - "1000010101010111010" - "0011110100010100110" - "1000110111110111110" - "0010110000000101010" - "1111011111111111101" - "1001001111001000100" - "1111111110110100011" - "0111000111101011001" - "1000110111011000101" - "1010100000101101001" + /* 14*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "[01]95012345678903[3103]000123", -1, 0, 19, 19, 1, 1, "Same as above", + "1101000111011000000" + "1100001110000101010" + "0011000101000001110" + "0010100001111100101" + "0010110101010010001" + "0100111111111111100" + "0010110000000100110" + "0000010111110100001" + "0110110100010111010" + "0001010101010111101" + "0111110100010100101" + "0001110111110111001" + "0110110000000100101" + "1110011111111110000" + "0100001111001000010" + "1010000101010111101" + "1101100110110000110" + "0101000001011010110" + "1000110111011000110" }, - /* 15*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[01]04610044273252[21]LRFX)k\\R06\\G+/ACMRN123456/V2009121908334\\R\\E", -1, 0, 23, 23, 1, 1, "HIBC/PAS Section 2.2 Patient Id Macro, same", + /* 23*/ { BARCODE_AZTEC, ESCAPE_MODE, -1, -1, -1, 3, -1, { 0, 0, "" }, "[)>\\R06\\G+/ACMRN123456/V2009121908334\\R\\E", -1, 0, 23, 23, 1, 1, "HIBC/PAS Section 2.2 Patient Id Macro, same", "11000001111110000001101" "11110100010110110001101" "10011001100011001111001" @@ -1097,7 +1337,7 @@ static void test_encode(const testCtx *const p_ctx) { "01000110011100010011000" "01000101001001110111010" }, - /* 22*/ { BARCODE_AZTEC, DATA_MODE | ESCAPE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[)>\\R06\\G+/ACMRN123456/V2009121908334\\R\\E", -1, 0, 23, 23, 0, 1, "HIBC/PAS Section 2.2 Patient Id Macro **NOT SAME** different encodation, Zint 1 codeword longer; BWIPP same as figure", + /* 24*/ { BARCODE_AZTEC, DATA_MODE | ESCAPE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "[)>\\R06\\G+/ACMRN123456/V2009121908334\\R\\E", -1, 0, 23, 23, 0, 1, "HIBC/PAS Section 2.2 Patient Id Macro **NOT SAME** different encodation, Zint 1 codeword longer; BWIPP same as figure", "11010110110000110111011" "10111111001000110100000" "11000001011011010011010" @@ -1122,7 +1362,7 @@ static void test_encode(const testCtx *const p_ctx) { "11110110111110011000100" "10110000010101011110010" }, - /* 23*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE, -1, -1, 3, -1, -1, { 0, 0, "" }, "/EO523201", -1, 0, 19, 19, 1, 1, "HIBC/PAS Section 2.2 Purchase Order, same", + /* 25*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE, -1, -1, 3, -1, -1, { 0, 0, "" }, "/EO523201", -1, 0, 19, 19, 1, 1, "HIBC/PAS Section 2.2 Purchase Order, same", "0011100011001101111" "0010011001010110110" "0110100100101000000" @@ -1143,7 +1383,7 @@ static void test_encode(const testCtx *const p_ctx) { "0111011100001111101" "1010000000101001001" }, - /* 24*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, 3, -1, -1, { 0, 0, "" }, "/EO523201", -1, 0, 19, 19, 1, 1, "Same as above", + /* 26*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, 3, -1, -1, { 0, 0, "" }, "/EO523201", -1, 0, 19, 19, 1, 1, "Same as above", "0011100011001101111" "0010011001010110110" "0110100100101000000" @@ -1164,7 +1404,7 @@ static void test_encode(const testCtx *const p_ctx) { "0111011100001111101" "1010000000101001001" }, - /* 25*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "/KN12345", -1, 0, 19, 19, 1, 1, "HIBC/PAS Section 2.2 Asset Tag, same", + /* 27*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "/KN12345", -1, 0, 19, 19, 1, 1, "HIBC/PAS Section 2.2 Asset Tag, same", "0011111101100100110" "0010011100111110101" "0111110010101101110" @@ -1185,7 +1425,7 @@ static void test_encode(const testCtx *const p_ctx) { "0010000010110001111" "1001101110111100011" }, - /* 26*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "/KN12345", -1, 0, 19, 19, 1, 1, "Same as above", + /* 28*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "/KN12345", -1, 0, 19, 19, 1, 1, "Same as above", "0011111101100100110" "0010011100111110101" "0111110010101101110" @@ -1206,7 +1446,7 @@ static void test_encode(const testCtx *const p_ctx) { "0010000010110001111" "1001101110111100011" }, - /* 27*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "A123ABCDEFGHI1234567891/$$420020216LOT123456789012345/SXYZ456789012345678/16D20130202", -1, 0, 27, 27, 1, 1, "IDAutomation example, same", + /* 29*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "A123ABCDEFGHI1234567891/$$420020216LOT123456789012345/SXYZ456789012345678/16D20130202", -1, 0, 27, 27, 1, 1, "IDAutomation example, same", "001010100100100010000010110" "000110110110001000101000100" "010010001101110110001000110" @@ -1235,7 +1475,7 @@ static void test_encode(const testCtx *const p_ctx) { "011010111000111110011011110" "000010010001000011010000001" }, - /* 28*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "A123ABCDEFGHI1234567891/$$420020216LOT123456789012345/SXYZ456789012345678/16D20130202", -1, 0, 27, 27, 1, 1, "Same as above", + /* 30*/ { BARCODE_HIBC_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "A123ABCDEFGHI1234567891/$$420020216LOT123456789012345/SXYZ456789012345678/16D20130202", -1, 0, 27, 27, 1, 1, "Same as above", "001010100100100010000010110" "000110110110001000101000100" "010010001101110110001000110" @@ -1264,7 +1504,7 @@ static void test_encode(const testCtx *const p_ctx) { "011010111000111110011011110" "000010010001000011010000001" }, - /* 29*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\377\000\000\377\300\000\017\377\376\217\300\017", 12, 0, 19, 19, 1, 899, "6 bit words", + /* 31*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\377\000\000\377\300\000\017\377\376\217\300\017", 12, 0, 19, 19, 1, 899, "6 bit words", "1101000001111000001" "1101011000011100000" "1000001010001001001" @@ -1285,7 +1525,7 @@ static void test_encode(const testCtx *const p_ctx) { "1011110000001001011" "0011111100000000010" }, - /* 30*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\377\000\000\377\300\000\017\377\376\217\300\017", 12, 0, 19, 19, 1, 899, "Same as above", + /* 32*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\377\000\000\377\300\000\017\377\376\217\300\017", 12, 0, 19, 19, 1, 899, "Same as above", "1101000001111000001" "1101011000011100000" "1000001010001001001" @@ -1306,7 +1546,7 @@ static void test_encode(const testCtx *const p_ctx) { "1011110000001001011" "0011111100000000010" }, - /* 31*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 3, -1, { 0, 0, "" }, "\377\377\377\377\377\000\000\000\000\377\377\377\000\000\377\377\377\377\000\000\000\000\000", 23, 0, 23, 23, 1, 899, "8 bit words", + /* 33*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 3, -1, { 0, 0, "" }, "\377\377\377\377\377\000\000\000\000\377\377\377\000\000\377\377\377\377\000\000\000\000\000", 23, 0, 23, 23, 1, 899, "8 bit words", "11111111111111111100000" "11011101110111011110001" "11110110111011010101100" @@ -1331,7 +1571,7 @@ static void test_encode(const testCtx *const p_ctx) { "11011100001000100010010" "11111110000000000000000" }, - /* 32*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 3, -1, { 0, 0, "" }, "\377\377\377\377\377\000\000\000\000\377\377\377\000\000\377\377\377\377\000\000\000\000\000", 23, 0, 23, 23, 1, 899, "Same as above", + /* 34*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 3, -1, { 0, 0, "" }, "\377\377\377\377\377\000\000\000\000\377\377\377\000\000\377\377\377\377\000\000\000\000\000", 23, 0, 23, 23, 1, 899, "Same as above", "11111111111111111100000" "11011101110111011110001" "11110110111011010101100" @@ -1356,7 +1596,7 @@ static void test_encode(const testCtx *const p_ctx) { "11011100001000100010010" "11111110000000000000000" }, - /* 33*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 13, -1, { 0, 0, "" }, "\000\000\000\377\377\000\000\000\000\377\377\377\377\000\377\377\377\377\000\000\377\000\000", 23, 0, 53, 53, 1, 899, "10 bit words", + /* 35*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 13, -1, { 0, 0, "" }, "\000\000\000\377\377\000\000\000\000\377\377\377\377\000\377\377\377\377\000\000\377\000\000", 23, 0, 53, 53, 1, 899, "10 bit words", "00011010011110010011110101110010000000111111010101001" "00000010100101010010001000010100000010101101001111110" "11101010001110100001111100110101111010110110110001010" @@ -1411,7 +1651,7 @@ static void test_encode(const testCtx *const p_ctx) { "11101111010111010000111101011101111011000000001011100" "11111111111111110000111111111111111111100010000011111" }, - /* 34*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 13, -1, { 0, 0, "" }, "\000\000\000\377\377\000\000\000\000\377\377\377\377\000\377\377\377\377\000\000\377\000\000", 23, 0, 53, 53, 1, 899, "Same as above", + /* 36*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 13, -1, { 0, 0, "" }, "\000\000\000\377\377\000\000\000\000\377\377\377\377\000\377\377\377\377\000\000\377\000\000", 23, 0, 53, 53, 1, 899, "Same as above", "00011010011110010011110101110010000000111111010101001" "00000010100101010010001000010100000010101101001111110" "11101010001110100001111100110101111010110110110001010" @@ -1466,7 +1706,7 @@ static void test_encode(const testCtx *const p_ctx) { "11101111010111010000111101011101111011000000001011100" "11111111111111110000111111111111111111100010000011111" }, - /* 35*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 27, -1, { 0, 0, "" }, "\377\377\377\000\000\377\377\377\377\000\000\000\000\377\000\000\000\000\377\377\000\377\377\377\000\000\000", 27, 0, 113, 113, 1, 899, "12 bit words", + /* 37*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 27, -1, { 0, 0, "" }, "\377\377\377\000\000\377\377\377\377\000\000\000\000\377\000\000\000\000\377\377\000\377\377\377\000\000\000", 27, 0, 113, 113, 1, 899, "12 bit words", "11111010101001000010110010110110001010111011100001100010111010111011011110010101111001111110001101011111100000011" "11111001010001010111110100101000101000010110010011001000011010011001111000010101011110010001110101100110011001100" "11101100111000011000000011000001001001111001111110000001110100001110010010001100100011101110000011010101101011011" @@ -1581,7 +1821,7 @@ static void test_encode(const testCtx *const p_ctx) { "11000000001000001011101101101101101001100000101000000000010111000000100101000110010000110010000011000101011111000" "11100000100000001110111110110000111110011100000010001110101010101111000011001011111001101101010010001011111011101" }, - /* 36*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 27, -1, { 0, 0, "" }, "\377\377\377\000\000\377\377\377\377\000\000\000\000\377\000\000\000\000\377\377\000\377\377\377\000\000\000", 27, 0, 113, 113, 1, 899, "Same as above", + /* 38*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 27, -1, { 0, 0, "" }, "\377\377\377\000\000\377\377\377\377\000\000\000\000\377\000\000\000\000\377\377\000\377\377\377\000\000\000", 27, 0, 113, 113, 1, 899, "Same as above", "11111010101001000010110010110110001010111011100001100010111010111011011110010101111001111110001101011111100000011" "11111001010001010111110100101000101000010110010011001000011010011001111000010101011110010001110101100110011001100" "11101100111000011000000011000001001001111001111110000001110100001110010010001100100011101110000011010101101011011" @@ -1696,7 +1936,7 @@ static void test_encode(const testCtx *const p_ctx) { "11000000001000001011101101101101101001100000101000000000010111000000100101000110010000110010000011000101011111000" "11100000100000001110111110110000111110011100000010001110101010101111000011001011111001101101010010001011111011101" }, - /* 37*/ { BARCODE_AZTEC, UNICODE_MODE, -1, READER_INIT, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "", + /* 39*/ { BARCODE_AZTEC, UNICODE_MODE, -1, READER_INIT, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "", "000011000111101" "001110010011000" "011100100000100" @@ -1713,7 +1953,7 @@ static void test_encode(const testCtx *const p_ctx) { "110110000101100" "010001010010110" }, - /* 38*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, READER_INIT, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", + /* 40*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, READER_INIT, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", "000011000111101" "001110010011000" "011100100000100" @@ -1730,7 +1970,7 @@ static void test_encode(const testCtx *const p_ctx) { "110110000101100" "010001010010110" }, - /* 39*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "121212121abcd", -1, 0, 19, 19, 1, 1, "#210", + /* 41*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "121212121abcd", -1, 0, 19, 19, 1, 1, "#210", "1101101111001101010" "1101111011110110000" "0001111101100010000" @@ -1751,7 +1991,7 @@ static void test_encode(const testCtx *const p_ctx) { "0011111001001010011" "1001101000100100001" }, - /* 40*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "121212121abcd", -1, 0, 19, 19, 1, 1, "#210, same as above", + /* 42*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "121212121abcd", -1, 0, 19, 19, 1, 1, "#210, same as above", "1101101111001101010" "1101111011110110000" "0001111101100010000" @@ -1772,7 +2012,165 @@ static void test_encode(const testCtx *const p_ctx) { "0011111001001010011" "1001101000100100001" }, - /* 41*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "4\000:", 3, 0, 19, 19, 1, 1, "", + /* 43*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "\275>>a\373-7D|\350g\250)5^l\016\363\222Q\030\240\366Y\324\315\361\222\2665\177w\214k\371\320\232q+\361\365>7`W\342lh\224\356\312\312\256\332\201\013\3739\310\035\257\031+A\273\303=\213\271\372{\205!\006)y\371\264\026\307c\212d>\224\311\211\003\342\331\245\356\266y\321\036\004\241|\333\234\355.\347\214C\261f\355\300\022{x\027\366\220\021\230\006M\362>\220\016\370\231\301\004Vi\302n\002\232\275\201\214\340L\346\234C\005\202c\362X\362\272<\373\350\236\351\272-V\330j\274\014\212\007\367\012\306\232%\020y\351\233a\322\324p@f\225\0176\363.\251Ml\326\021E\223Xj\274\006.\327\376\267\316$c\206\340g\307\024\365\005\253\2030x1\225\305jY\323S\213_~0Mp\002bF\335\374f\366\016\357\354Jj\252\356\217\015\210=\003*7\220\266\037t\025?=\276\335\310\246Ct\333)d\356\331\367\3131\026\376t`\225\317\344Pl=\361\211\304\02205\036!)~\230s\006\321fjs\\f\335\256|C|\212\243-\311\366g<\211\215d;\202\255\333,\273\225\316\311\272Q!\246\367\012\352I\2135\240\021\301\007\322\217\012$\020\214\031hI\0164\356Z\264\216R\370\203G\203.I\303\217\261\006\227\214\245\037\351$\2069\003\271\272d\014\313*\216\364\014h\354F\247\003\023\265T\355Q\266\035\222\252gx\220K\352\337m\241?d-\357i\233\363\022\034\276\313\323\332>\354\021\3321\272\326\367\357v\243\3068I\212\243\327!\352Dj\234\014\0213W'\331\301l:\345\340.\004\375\375\030>\201}\222r\322\257\205\335\312^\201!WbH\256\006\005>0\351:\345z\010\303+\2033*\002\336&e\306\225Tr\325\2346\177L\0069\342\023\"z\310\206A\243V\033\034B\220\362\010\027\365\236]\275\0067\216`W\022W)\304>\356+\335\323\311\363\357\253{\005j\236D\376\352\233\035\341\324:\342\303\354\337T|64\013\252/\036\372\303\326T\002\370\347\233\233\251\360qR\315g\361\224\242\370mKO8\"\345\332\231\277\213?\242_T3\223\274\247\227\035\260\322\221:\206\320\210hU\0332\332v\372,U\227\306\257M\237\"ek\266kv\032Um\374\323R\257\034\217\034\305\010\235\265=\215;\201\006\374\327%\204\265X\372\256\026XB@\357y\007\033E\235=\204).zM\226^\327\275\364\177\022u\361v\032\2225\225\210ef<\0133\252\023\220\364\012\351\2026\004X\301\022D'\016\216\337}Y\007uJ#\014\030\221" "\022\030\214\215\345C%*\201\276\016ZE\314$~\234\214\2275v\210\270I\364W\322\022\354\254`\225\312\005\306\2078\351LgP\357\225C\313Fmz~D>\364\024W\323h\321W\025\205r\207i\2377\030\2479V\025d\264\225\362\365\"\237H\031\033\263Y\364\320+\203C\245\366\331\2558\021\250T\250y1\001\0267w0h\257\264\271\366\263\254\245\034\226k\254\021\322U\3416\307\001'\235\336\034Y/:7`t\012N\336\344&\005q0@%\313G\271\264g#\324\305~d\330K\316V\251\276\2247\232f `\245P,uI\012\034I\266\206\260s\241G9\200i\275,)-\232\004\226@\374<\374X\360eR\242\257\375\\\301\277\336\362\300\006-/3kJ\267\036\205\302\360\205\323*\270\242\3035\312\260\020e!\020\323m\214\222\217{\265\3632\277\004\017v\223\252h\215\243\027D#O\034\024vE.l%\335w\037\014\362\330Q\222\3349@`\361\204\343\302\272=\211\213\302j\357\370w\0322\312X\222,\331f'AL\261\2574\307\243\214\357O\275\254\317A\355\363e2=\360\006A6\255\215w\366x\351c\252\006\276\335\364\365\024fz\360J\263\313 -\013\302\2376\010\215bP\254\355\241\352`\023h\351;\300\312<\264D^\3765\374\322(\"\356\275c\272\345\023:\371\271\220$\036\310\272zyQ(\203W\317;P\013\026\274\263\354\344\254\363\277\241\374\3644\262\371-\032\306\356\017uix=Z\200\320\242G\222\305\360A\220\220\365m\350\310\237#\361/(A\365\256W\214.\230\335\203\\\322\366\321[k\226\356Oe\253\002y\001\002\304\330`\353\205t\016\223\367\356%\272\013\330\314\366\026\2253\274\331\347U\034\243W\217\336j&&$\223\224N\205\004/@qDb\012\237,\315lf\303\013\0036\364\376=\035\0270\213\003%\252\217|!\326\375\245+N\307HR\333\250\336Yd\021\2632p\230`\022R\0339\302\303\027\323\321@lK$W\030", -1, 0, 131, 131, 1, 899, "Ticket #347", + "10101010001001111011000111011001000001110101011010010010100110101000110101101011001111000010001100101110110110010011100101100011000" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "10101000000011011010000110111010000000101111010000111000010110111011001110101110100110001100001100000010110101111011001101011011100" + "11011101000111010110111111101010010100000011110101010011111111000110111011101100011110111101010001110010100010001110011110110110010" + "00000111100101110010011101011000100101000001001000001011101100110011000100101001101000010001001000110001010011111000000011000010001" + "01000011011001001100100011010010010010010000001101000111100100110110000011101000110010001000011111010010001011001101001010111101010" + "10000111100101100001000110010001001000000101100110011001100000010000000110010110100100111111001010110110010000011011010111010011100" + "11000110111000011100010111111110110001000001110101010010110011011111001111101010110010001100001011010001100011111100000001000011010" + "00111111110000111010010001110111000001110001100110111001100001010011010100010100000001000101111000000111100101001010111101011100101" + "11000010011000001100001100110011110111111101011001100010010011110101111010100001011110101011000011110010111000110111011100011011010" + "00010101010101111011000010101001100000011010111100011011111000010001101001101111101111000011011110000001110111111011101101001100100" + "01101001111011110110001000100110111001000011001111110010011001111101110100100010110110011101110111100000110101101110001101001000011" + "00110100100111011011000010000100100001111111101000001100010010100010111100000011101001010110001100101010000010100011010111111000100" + "11111010110101110110110010010110010101110000011111000010100010100110001111110111110010010000001111111011100100011100110010100111011" + "10011010101000010001000111011010001100100001101000010010011101111000010011000001100100011101011010000101001010101001110101001010001" + "11010001000111000110001111000101110010110110011111110110010001101101101001111100111101001001001011100110110001001101111101111011010" + "00101111011110011010001010101110101100100010011010010110100000100011010001100001000100000111111010001010000110111010001011000100100" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "10100010110010010010000001011110000011000111000110011100001100110010110011000100000010011011111100100101111111110010011001011000101" + "11101010001111110110111110100100011001110010001111001011110011101101011100110100010001101111011111100010100011111110001011111111111" + "00011010101111010000110111011011100101001000110100110110010100101010011100010110101010000100011000010010001011110011101001100110100" + "01111011110010000100001101111100111110101101110011001011110011010100000101010100110101101001010011101101011001010101000111001100010" + "10101010010011101001010111000101001110000100110100100000011010001010100000000000001011000011000110111000011101110011010110100111001" + "11100011001100111101011001101110011000011010100111011111010011001101000111111100111100110101000111101111110100000111100110101000010" + "00010011001001001000000110100101000111100101000000000001101111110001110111010101100011000010001100101001000010010000011010111001101" + "11100110101011011110011000111111110100111111110101011010010111001101111110000000011101101101000111110011101011110111110100011000010" + "00000010101110011001010100001100001111001001000100011110100111110001000011001011100001110000100010110111111001110010010111111010100" + "01000111111101000111101100100010011010101011110011011000111100110100001101110001111010110101010111101100001101101110001010010000110" + "10101011111101110001001000101110101101101000100010001010101011101001001110000000001010110110001110000101110001101001010111110011000" + "11111000000110010110011010001011010111010100011001100110100110010110110110111001011000000010000011110001001001001101001110101110111" + "10101010100001110011100011100111000110111001000010101111110101000011011111000011001010011101000110111000000111101010101111111001100" + "01111110010101010111010000011011111111100011001101110110001011000100011001111001111000101011111001010010100111000111111111111111010" + "10011100011101000001101111101000000011011000100010010010110100010010100010010001001110100001010000111010000001011011010110111011101" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "00100000110100101011101111010101101110011000001010101101010010101000111100110100001100001010000110010001000011000010001000010001001" + "01101011011001111100110111110111011000110110011111110101111011110101010010010100111011001010101011010000011001100110111101110110111" + "10000101010001010010101000011110001011010001111110110111010011100000110010001110101111000000101010010100100000001010100100100010000" + "11011110011001101100011101011010111000110000010101011100101001010101010000011001111100100110010101100110010101011100000101111111011" + "00100001110010001001011100111100001100111000010100011110000011010001010010100011001110011111110110001101110100010010000111010111100" + "11011011101010010100011011110111010010010001100101010101011101001111100010111111010110000010001101101010011010100111110100010111111" + "10110000001111010011010101001010001101100110100010100110000000010001001111111011000100001000111010001000011111111000110010101011001" + "11000000000110000100101000111010010000010011010111010011011010001100000110111110111011101000010111011010100111001100101010100011010" + "10000010110000111000001101010000000101111110010100011010110000011000111111101001001101111100110000010010000011000001111101111101000" + "01010111011010100100000001111010010100111101011101010100000100011101111001011001011100000100101011000000010110001110000011100001011" + "10000100111110011010001001001011100101101110001000111011110111000010001111110111101100011101101010111110111101111001000001111010001" + "01000100101001001110101011111110011100010101010011001111110110010100001100011011110011100100111001100101101100011111001101000011110" + "10110001100110110011000110000101100110101111110110010100011100000000100111100110101100111010010000001011110111010001100100011010101" + "11100000000110110110001001101010111001100000000011101011010110110100110010010011111101101101010111011000111100001111101110100110010" + "10010011000001111000110110001100100001100101000100100011001010111011000110010011001011111000001110101100010001111001100101001100101" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "00110100110110011010000011000101000000000010100000001101101110010010000000100010001110101111001000101010101010110011101000101011101" + "11111010001011101101100110010100011110011000111111110101011100101110000111110000110101101101110011100001010001100101011001110100111" + "00100011100111100010101100001101101010010000011010010001010001110011011100001111000111010000011010001101010001001010011111011100000" + "01011011000000111100011001100001111011011000011011110011011001010111011101111110010101110101111011000000110110011100000001110000111" + "00001000010110011000001101001010001111010100001100011011101100000010001001000101101011001111010010110110000011011011101101001101101" + "11100010110011011110001101001100011101001111100001101101110101001111000000000011111100101101100101001001101011110101010100010011011" + "00011101110110100000101010110100001101100011000000010111101101010011101100001000100010000101100110010101101011000000101000001110000" + "11110110011011010100000011111101010000010101010001000011011101010111100011100001011111101010000011110000000011000101001100000110110" + "10100110110011100000100000010110101000011101110100010111101111010001110010001001000000100001011100001110110111001000011011011110100" + "01101001111000010101000001101101111001011000100111100001011111111111111111110000010111011010010001100000000110000100011000101110010" + "00100101100111000000010001010000100011111000100000001000011100000000000101001100101110101010100100001101011100111000011111110011101" + "01011000101111101110101110001010111011001100001101100101011101111111110100110110110111010111110011010000001001101101000110101000010" + "00001011000100011011100010010111100101111101000100010110110101000000010110101010001000001111011100111101001111000000110100110100000" + "01111010010001011110011011011101010111110011110111010101000101011111010100001111111011110000111011000101010100010101110011111111011" + "00100101001001101001100001111001100000100111110000001000001101010001010110010010101011110011011100000110000101101010011111100101000" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "00000110000111111001110000011101000111101011101100101001110101010001010111111100100000111010100100000000110011000001100001001001000" + "11000000001100110110011001000001011110101100111011110000001101011111010110011110110001100100010011101110100000100100001010101010110" + "00101001101001010010100100111000000001000101010100000101010101000000010111001000100110100100111010101111010110000011100000110101001" + "11001110101101000100111010111101010000101101100111010111100101111111110111101000111001110100101011100010000110010111011011011000011" + "10000110011101100011001100010111000010011010110100010011010100000000000110110010100110011000011000001110000111111000100100110011000" + "11011101000101110111010100000110111010101000101101101011100111111111111110101100011100100100010111001110011100000100001100101001010" + "10001111100010110001100101110111001011101111001100111001000010000000000001111011100011000111110000111101001110111010101101011000101" + "11101101100011100111010101111011011101001110000001010010011011000110111001011001011001100010111011010001010001101110000001011001110" + "10101100011101010000001001000010101000001101001100100100111001000011001000001101100001110110111110001111101011010010111111111001101" + "01011000100011110111101111100000011100110100101111111011000110001100110101111110011010110001000001001110111100010101000110100000111" + "10110001000101111001010000100101100111101110110110000000000011100011010001001010000011111000101000111010111100001001001011101001000" + "01111100100101011110010111100000011000011011010101101101111101100100110101110110111010101001010011011010100111100101100101010100110" + "10000100110111010010001001001100001100011001000010001101011001011010101100000101101110011001001110001011110110010000010111101100101" + "01000100010000010100011001101111110110110001000111101100000111011110010101001100111111110011100101000101010100010100001101111111111" + "00000011001111101011111100010010100010011111111100110001011001110000001000001111001101111001100010001000000110000010011000110101101" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "00111111011111110000101000011010101010000000000110111110111011001000000111001000101101010011110000010100001100101010001011101001000" + "11100110011111111111111111000011010001111000011101000101011101100110100010001101111011010010010001100101111110110111011011100010111" + "00101101100101001010111110010001000111010011001100100110010011111000010101110111101100001001101100101011110010010000001100010101100" + "11110011101000000101011111000011110101111110011001000010100100101100011111011001010101001111001101010110110001101101100011110010111" + "10001111110111001000111011001011101100010110000000110101011000111001110000111110001111011100001010110000000101001000000101000111100" + "01111101100000110101011100010010011111010001110011100000101011110111010001001001011011011001001111000011001000011100111101001101110" + "10100110101100010011100010100011000011010110010110011011101000011001110111110000100010111110010110001011101100110000001111101101000" + "01000010011101100110101110100101110111011100101011011011001111100111000101001001110100001010101001111010110101111111000111010010111" + "10000111001011010010111110100100101000100000000100111010100101010010100101101000101001000101010100000010110110100010010011001101001" + "01110110100011010110110011111010111110110001001011101101110001000100011101011000010011011000000011111010100011010101101101011001111" + "00001010010001110001100111110010100010111010110100011010011010011011001011000011100010111010011000110111100111011001000100101000100" + "11010101001011111110011111101001111101011101001011100101110111101101111100100010110100101100110011101000100110100110010100011110011" + "10001110111011010000100110010101101000110010000110010111100101110000011011100101101110101001110010110111110100000010100100110110100" + "01011100001110000110010001111001011101010101011011111101100111010101110011011101011000101101001101011111001111100111000010111110010" + "10000110001111010010101010101110000111000000011110011101111010000010001011100010100111001000011100100000010110000000100100100111001" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "00011101111001110011011100010010000110010101100110000100101101001001110110011100001011011000001000000110010010111011001000111010101" + "11101010000001011111010011110011110010010000110111111010110010010100000110101010110010100100000101010011101100100101101010001110110" + "00000000110111100011010100011101001011100011001100100001110110110010010101010100101000100100001000101101011000011010100001110001101" + "01111011110010000100111110100011111100001000011101011101111101001111100111010101011101000110000101111011110010010111011011001110110" + "00110010011100010011110111100001000100111110001000101111110100011001000001110010100111001100111010010111001001101001011110100001101" + "01000001011101110100100100000011010011110110111101110011101101111111100111011000110011011110011001011101110010111111011100110111010" + "00010110001100111010000111100000100110011001011010010100010110101011000111101110001100100110100110010010010001000011011001011110000" + "01100000000010110101000011100001011001011111101001010101000000000101000011111010010100101001110111111000010111001101111100110111011" + "10101100100010001010100011111101100011000110011100000100111110011001001101100100001000000110110110001100110110101000010110100101001" + "11010001101101001111000111111010111001100000001011011000010001111111010001100000110011100111011111111110011101100110111110111010110" + "10100010100100100000000100110111101110111101101010001101010010110010110000000010101100111010100100101111001001000011000000110101100" + "01000101101010000100110101100111111011010101101001010000010100110101000000101000010111011001001011001010011000110110001001011111110" + "10010110010110111010011111001010000010000011000100111101000011011001100110111010101001010100011110111111011101011000011100100010001" + "11111101100101010111101100011110111111000010110111010101000100110100000011001000011000110010001011101100111000110101000101101000010" + "00000100101011011000110101110000100110011001110100010100000100000011110000101111100010000011010010011000100100101001111011001001101" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "10100011110111110010110101001011001011000010000010001100100011011010001011011001000010001111010010011001000011110010011000011101000" + "11001100101000000110111011101000011101011110011111010011001111100111110000011110010010101010101111011110110000010100010101000001011" + "10000110001000010010010001010110000110101111100010100011000011111001001010100000001010000001000000101001110111011001011010111100101" + "11011011101011110100010111010011010001010100000101101001110000010101000001100010111001001010010101001100100010111111110111010010110" + "00100100011011100010111010111110101011111010011000000101100111101010110010010110001001100001111000110001010011000000001000111111100" + "11001011000000101111100010101110010101110000111111110010101010110100110111011101010110001010100001101100000010001111101100110100111" + "00111010001010101011000110110101001001001100000000010110001010010010111001000010101011010001010100111101010010000011010011100011001" + "11011000000101010100000001110001011011101001111111011001111011001110111110100010011011000010100001110010000010100110001101010100111" + "10110101010110111010111100001001100111000011101000010001110000001011000001101001001001111101010110010000011111110011011011000100000" + "11101110101001000100010111000101010010101010001101001010101111110110111101011001111010000001011111000100100110001111110110001000010" + "10000001111101011001101101000001101110100010010000101111000000011000110110010101000000010100010000011010001100111010100101001101000" + "01010010101011011111110010101011011110111010000111110111010110010110011111010001110100100010001111011000010001111100100110100000110" + "10110110111110110011111110101111100111101100001100100111111000101001100011101001101001101101000000001101110101101000100110000100001" + "01010011000100011101101100001101010101000011111011100100001100010100000011111100010101001000011011001101100101011100111001110101111" + "00111010100011101001101001111110100001011010001110110011000111010010100000111010101001101000111110011101111111011010000011111101000" + "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" + "10000110011111111011100101001110101100010011010000111011111011001011100011111000100101000011010100100010000010110000001000111010101" + }, + /* 44*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 6, -1, { 0, 0, "" }, "88888TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT", -1, 0, 23, 23, 1, 1, "", + "11111001110001110011100" + "11100111001111001110011" + "01011000101011110010011" + "01011001100100101000101" + "01101100001000000011001" + "01101111111111111110010" + "01111100000000000101110" + "01010101111111110111011" + "01011101000000010110001" + "01101101011111010111101" + "01101101010001010101110" + "01010101010101010101010" + "01110101010001010110110" + "01111101011111010111011" + "11011101000000010101101" + "01000101111111110101001" + "01101100000000000110110" + "01110111111111111110110" + "10010010011011000000011" + "10111110111110010101001" + "11101111000001110001001" + "11001110011110011100110" + "00111001110001110011110" + }, + /* 45*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "4\000:", 3, 0, 19, 19, 1, 1, "", "1111001000000011100" "1100100101110000100" "1010011010100010011" @@ -1793,7 +2191,7 @@ static void test_encode(const testCtx *const p_ctx) { "1111101010111001001" "0011111000011010100" }, - /* 42*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "4\000:", 3, 0, 19, 19, 0, 1, "BWIPP: different encodation, one codeword shorter (see above)", + /* 46*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "4\000:", 3, 0, 19, 19, 0, 1, "BWIPP: different encodation, one codeword shorter (see above)", "1100110110001101111" "1100110000100110010" "0010011101101111010" @@ -1814,36 +2212,36 @@ static void test_encode(const testCtx *const p_ctx) { "1000110111011101111" "0011111000100011101" }, - /* 43*/ { BARCODE_AZTEC, ESCAPE_MODE, 899, -1, -1, 4, -1, { 0, 0, "" }, "\\xA4\\xE2\\x80\\xB8\\xEF4\\xF80O\\xE0|3\\xF2\\xD8\\xA54\\x8A\\xE2kb\\x06\\\\\\x0ADe_\\xA3\\x9C\\xCF\\xDB\\xC0\\xE4", -1, 0, 27, 27, 0, 1, "BWIPP: different encodation (1 codeword longer)", + /* 47*/ { BARCODE_AZTEC, ESCAPE_MODE, 899, -1, -1, 4, -1, { 0, 0, "" }, "\\xA4\\xE2\\x80\\xB8\\xEF4\\xF80O\\xE0|3\\xF2\\xD8\\xA54\\x8A\\xE2kb\\x06\\\\\\x0ADe_\\xA3\\x9C\\xCF\\xDB\\xC0\\xE4", -1, 0, 27, 27, 0, 1, "BWIPP: different encodation (1 codeword longer)", "001110010010001000001101100" "000110001011101111010010001" - "001000100001000111101110010" - "010110000110110001011100000" - "001111010111100011001111111" - "001000001101010100000000001" - "111011010101111000011000110" - "101011100101000001101111110" - "101010101111100100100000101" - "101101101111111111100000111" - "111110001100000001110010011" - "101001010101111101110100010" - "111001011101000101001010101" - "110100111101010101100001110" - "110110111101000101110011000" - "101111101101111101001011101" - "101010111100000001010000011" - "010010100111111111100111011" - "010111000001110110010100100" - "011001100111011110111101100" - "001111001000110101100100000" - "101111000110110101010110011" - "011001111111000001000000011" - "111111110001011010111101111" - "000100111101101010111011110" + "001011100101100100000111110" + "010111001011001101001111100" + "001100011101111011000101011" + "001011000000010110110001001" + "111011011101000111000011010" + "101001010101111101111111010" + "101000001111100100111010001" + "101111001111111111111101011" + "111101111100000001100101011" + "101101110101111101110101010" + "111000101101000101000011101" + "111001001101010101110000110" + "110111011101000101110010000" + "100110001101111101000101101" + "100000001100000001001001111" + "010110000111111111100111111" + "010010110001110110001100000" + "010111010100001000100001000" + "001000101000010010110010100" + "100110110001011100011111111" + "010111011000011000101010011" + "111111000101101011110110011" + "000011110110101011101110010" "110001110111101001110010001" "000000010010110110110001000" }, - /* 44*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 899, -1, -1, 4, -1, { 0, 0, "" }, "\\xA4\\xE2\\x80\\xB8\\xEF4\\xF80O\\xE0|3\\xF2\\xD8\\xA54\\x8A\\xE2kb\\x06\\\\\\x0ADe_\\xA3\\x9C\\xCF\\xDB\\xC0\\xE4", -1, 0, 27, 27, 0, 1, "BWIPP: different encodation, 7 codewords shorter", + /* 48*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 899, -1, -1, 4, -1, { 0, 0, "" }, "\\xA4\\xE2\\x80\\xB8\\xEF4\\xF80O\\xE0|3\\xF2\\xD8\\xA54\\x8A\\xE2kb\\x06\\\\\\x0ADe_\\xA3\\x9C\\xCF\\xDB\\xC0\\xE4", -1, 0, 27, 27, 0, 1, "BWIPP: different encodation, 7 codewords shorter", "001010110111011111001111101" "000001100111001101110110110" "001000110001110111010101111" @@ -1872,7 +2270,7 @@ static void test_encode(const testCtx *const p_ctx) { "110001110111111010101100111" "000000010010111101111110011" }, - /* 45*/ { BARCODE_AZTEC, ESCAPE_MODE, 899, -1, -1, 2, -1, { 0, 0, "" }, "*; )WF+", -1, 0, 19, 19, 1, 1, "", + /* 49*/ { BARCODE_AZTEC, ESCAPE_MODE, 899, -1, -1, 2, -1, { 0, 0, "" }, "*; )WF+", -1, 0, 19, 19, 1, 1, "", "0000111010001110001" "0000111101000011001" "0101101110101001101" @@ -1893,7 +2291,7 @@ static void test_encode(const testCtx *const p_ctx) { "1000010010001010011" "1100110000001110010" }, - /* 46*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 899, -1, -1, 2, -1, { 0, 0, "" }, "*; )WF+", -1, 0, 19, 19, 1, 1, "Same as above", + /* 50*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 899, -1, -1, 2, -1, { 0, 0, "" }, "*; )WF+", -1, 0, 19, 19, 1, 1, "Same as above", "0000111010001110001" "0000111101000011001" "0101101110101001101" @@ -1914,28 +2312,28 @@ static void test_encode(const testCtx *const p_ctx) { "1000010010001010011" "1100110000001110010" }, - /* 47*/ { BARCODE_AZTEC, DATA_MODE, 899, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "\200F`\015\012", -1, 0, 19, 19, 1, 1, "", - "0010111110010100100" - "0011001011010001010" - "0011000000000000110" - "0111111111111111101" - "0011000000000001001" - "0001011111111101011" - "0111010000000101110" + /* 51*/ { BARCODE_AZTEC, DATA_MODE, 899, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "\200F`\015\012", -1, 0, 19, 19, 0, 1, "BWIPP: different encodation, same no. of codewords", + "0000000110110000001" + "0010100011110100100" + "0011000000000000100" + "0111111111111111110" + "0011000000000001000" + "0001011111111101000" + "0111010000000101101" "0111010111110101010" "1101010100010101111" "0101010101010101010" - "0111010100010101111" - "0101010111110101010" - "0101010000000101110" - "1111011111111101001" - "0101000000000001011" - "1101111111111111101" + "0111010100010101100" + "0101010111110101001" + "0101010000000101111" + "1111011111111101000" + "0101000000000001001" + "1101111111111111100" "1100110110100110000" "1001000011110010011" - "1001000000111111010" + "1001000000111111011" }, - /* 48*/ { BARCODE_AZTEC, FAST_MODE, 899, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "\200F`\015\012", -1, 0, 19, 19, 0, 1, "BWIPP: different encodation, 1 codeword shorter, see above", + /* 52*/ { BARCODE_AZTEC, FAST_MODE, 899, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "\200F`\015\012", -1, 0, 19, 19, 0, 1, "BWIPP: different encodation, 1 codeword shorter", "0011101100000101001" "0010101111101010000" "0011000000000000101" @@ -1956,7 +2354,7 @@ static void test_encode(const testCtx *const p_ctx) { "1001000011110010010" "1001000000111111000" }, - /* 49*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\032abcdefgh\032ABCDEFGH\032~~~~~~~~\032ABCDEFGH\032;;;;;;;;;\032ABCDEFGH\032123456789\032ABCDEFGH", -1, 0, 37, 37, 1, 1, "Cycle from Upper to other modes between Byte-onlys", + /* 53*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "ABCDEFGH\032abcdefgh\032ABCDEFGH\032~~~~~~~~\032ABCDEFGH\032;;;;;;;;;\032ABCDEFGH\032123456789\032ABCDEFGH", -1, 0, 37, 37, 1, 1, "Cycle from Upper to other modes between Byte-onlys", "0010100101001100111100111001110011111" "0101111100001111100011100111001110001" "1010101010101010101010101010101010101" @@ -1995,46 +2393,46 @@ static void test_encode(const testCtx *const p_ctx) { "0000101000010010000101110000111101000" "0110010001101011101001110010100111101" }, - /* 50*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh\032ABCDEFGH\032abcdefgh\032~~~~~~~~\032abcdefgh\032;;;;;;;;;\032abcdefgh\032123456789\032abcdefgh", -1, 0, 37, 37, 1, 1, "Cycle from Lower to other modes between Byte-onlys", + /* 54*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "abcdefgh\032ABCDEFGH\032abcdefgh\032~~~~~~~~\032abcdefgh\032;;;;;;;;;\032abcdefgh\032123456789\032abcdefgh", -1, 0, 37, 37, 0, 1, "Cycle from Lower to other modes between Byte-onlys; BWIPP: different encodation, 1 codeword longer", "1111100001111100111100111001110010110" "1000010100110011100011100111001111011" "1010101010101010101010101010101010101" - "0001100000101100100100111000111010010" - "0011011101100111101000111010001001111" - "1000010100100111010001111111110101000" - "0010001111001110101111010111111101101" - "0101011001000010100001010010011100000" - "1010010101000000111101100101110000100" - "0100100000011101000110001111000110011" - "0011010000011101001000000000110101111" - "0000101010011001000000010100010110011" - "1010010101111111111111111110010100100" - "1000010111111000000000001011101001010" - "0111010010011011111111101010011000100" - "1001011001111010000000101000110100001" - "0010111111011010111110101110100001101" - "1101010111011010100010101110101111011" + "0001101000001011000101001110001110010" + "0011010111011001111100001110100010111" + "1000011101101001110101010100001001000" + "0010010111111110101111010101011010101" + "0101000010001100100011111100111101000" + "1010010010010010111100010010100101100" + "0100101000001110110011001011111000011" + "0011010100010101011001010011000000111" + "0000110100011001000000010100101010011" + "1010010001011111111111111101011001100" + "1000011111111000000000001000000010010" + "0111011110011011111111101011011000100" + "1001010101001010000000101010010101001" + "0010111110101010111110101111111100101" + "1101011001011010100010101110100100011" "1010101010101010101010101010101010101" - "1000011011111010100010101111111101000" - "1011111100111010111110101010100101101" - "0001010010101010000000101110000010010" - "0111000011001011111111101011011000101" - "0000001111111000000000001100010110001" - "1110100011001111111111111110011100100" - "1100001000100110010110110000100101000" - "1111110101110011101000000110011101110" - "0001110011101001110010001101010011001" - "0011111111101001111001101100101111110" - "1000010111101010100011111110010111000" - "0010000001010000101010001011101011101" - "1101000100100011010011100011111101000" - "0110111111111001111001110011100110100" - "0100100101100111000111001110011110001" + "1000010101101010100010101000101110000" + "1011100111111010111110101011000111101" + "0001001011011010000000101010110100010" + "0111000101001011111111101100101101101" + "0000001110111000000000001011001110001" + "1110110100101111111111111111111011100" + "1100010011100001110100100011001010000" + "1111111000100010101111001010100001110" + "0001110001010010110011011111100010001" + "0011100111111001101101011110001111110" + "1000100000100101010100101001111110000" + "0010100101000010011000101110011001101" + "1101010010001101010110001110110010000" + "0110110111011101111011101110111011100" + "0100100010101010100101010101010110001" "1010101010101010101010101010101010101" "1001001001000110100111000111001010011" "1111100001010000101010001011100001101" }, - /* 51*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "~~~~~~~~\032ABCDEFGH\032~~~~~~~~\032abcdefgh\032~~~~~~~~\032;;;;;;;;;\032~~~~~~~~\032123456789\032~~~~~~~~", -1, 0, 37, 37, 1, 1, "Ditto Mixed", + /* 55*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "~~~~~~~~\032ABCDEFGH\032~~~~~~~~\032abcdefgh\032~~~~~~~~\032;;;;;;;;;\032~~~~~~~~\032123456789\032~~~~~~~~", -1, 0, 37, 37, 1, 1, "Ditto Mixed", "1111111000011101001010010000101000100" "1000100101001110000111010110001001000" "1010101010101010101010101010101010101" @@ -2073,7 +2471,7 @@ static void test_encode(const testCtx *const p_ctx) { "1100100100011010110100011100101001011" "1010000101000010011000101110000111101" }, - /* 52*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, ";;;;;;;;;\032ABCDEFGH\032;;;;;;;;;\032abcdefgh\032;;;;;;;;;\032~~~~~~~~\032;;;;;;;;;\032123456789\032;;;;;;;;;", -1, 0, 37, 37, 1, 1, "Ditto Punct", + /* 56*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, ";;;;;;;;;\032ABCDEFGH\032;;;;;;;;;\032abcdefgh\032;;;;;;;;;\032~~~~~~~~\032;;;;;;;;;\032123456789\032;;;;;;;;;", -1, 0, 37, 37, 1, 1, "Ditto Punct", "1110111010110001001100111100001111111" "1000001001000010100000010010100101011" "1010101010101010101010101010101010101" @@ -2112,7 +2510,7 @@ static void test_encode(const testCtx *const p_ctx) { "1000001100001010000010010001011100000" "1010101000100100011101011100011100101" }, - /* 53*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "123456789\032ABCDEFGH\032123456789\032abcdefgh\032123456789\032~~~~~~~~\032123456789\032;;;;;;;;;\032123456789", -1, 0, 37, 37, 1, 1, "Ditto Digit", + /* 57*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "123456789\032ABCDEFGH\032123456789\032abcdefgh\032123456789\032~~~~~~~~\032123456789\032;;;;;;;;;\032123456789", -1, 0, 37, 37, 1, 1, "Ditto Digit", "1111011001010011101001110101100010101" "1101001111000011100100010010000101000" "1010101010101010101010101010101010101" @@ -2151,36 +2549,36 @@ static void test_encode(const testCtx *const p_ctx) { "0000101000010010000101110000111100010" "0110010001101011101001110010100110111" }, - /* 54*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, " ABCD EFGH abcd efgh ~~~~ ~~~~~ ;;;; ;;; 12345 67890", -1, 0, 27, 27, 0, 1, "Spaces; BWIPP different encodation, LL before not after space, same no. of codewords", + /* 58*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, " ABCD EFGH abcd efgh ~~~~ ~~~~~ ;;;; ;;; 12345 67890", -1, 0, 27, 27, 0, 1, "Spaces; BWIPP different encodation, L/L & M/L before not after space, same no. of codewords", "001100111001100000111001110" "000011100111111001100111001" - "101101101010100001101001010" - "000101101001110111100011111" - "101101010100000001000110110" - "001111010111111010110101100" - "011111110001000000001111100" - "101101111111111111111000010" - "010001010000000000011101011" - "000000010111111111010000101" - "001010010100000001010011101" - "100011110101111101010111010" - "100100110101000101011010010" + "101100011101001111111010110" + "000100111100111011011010111" + "101100011110101011011101110" + "001101011100111011000010000" + "011110110001000000001110100" + "101111111111111111111000110" + "010000010000000000011010011" + "000001010111111111010001001" + "001001010100000001010101101" + "100010110101111101010011110" + "100110110101000101011111110" "010101010101010101010101010" - "000101110101000101011101011" - "011011110101111101010010101" - "000010110100000001010100001" - "110011110111111111010001111" - "001000010000000000011111100" - "011110011111111111111000100" - "110001000001101010000100010" - "010001001000110010100111111" - "000111001111101101111100111" + "000110110101000101011010111" + "011010110101111101010110101" + "000000110100000001010010001" + "110000110111111111010001111" + "001001010000000000011011101" + "011101011111111111111010111" + "110001000001101010000000010" + "010001111101110000011101100" + "000100000111101101001000101" "001001011011110110100010100" "100100010000001010010100110" "100110010010010110001001000" "000110000010100000010101101" }, - /* 55*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, " ABCD EFGH abcd efgh ~~~~ ~~~~~ ;;;; ;;; 12345 67890", -1, 0, 27, 27, 0, 1, "BWIPP different encodation, 1 codeword less", + /* 59*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, " ABCD EFGH abcd efgh ~~~~ ~~~~~ ;;;; ;;; 12345 67890", -1, 0, 27, 27, 0, 1, "BWIPP different encodation, 1 codeword less", "001100111001100000111001110" "000011100111111001100111001" "101100000000101111101010110" @@ -2209,7 +2607,7 @@ static void test_encode(const testCtx *const p_ctx) { "100110010010010110001001000" "000110000010100000010101101" }, - /* 56*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, ";;;; ;;;; 1234", -1, 0, 23, 23, 0, 1, "Spaces; BWIPP different encodation, same no. of codewords, however BWIPP wins by 1-bit due to less bit-stuffing", + /* 60*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, ";;;; ;;;; 1234", -1, 0, 23, 23, 0, 1, "Spaces; BWIPP different encodation, same no. of codewords, however BWIPP wins by 1 bit due to less bit-stuffing", "11010110011001000111101" "10100111111110100011101" "11100000101010100000100" @@ -2234,7 +2632,7 @@ static void test_encode(const testCtx *const p_ctx) { "11111110011110011110100" "11011001110001110111101" }, - /* 57*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, ";;;; ;;;; 1234", -1, 0, 23, 23, 0, 1, "Same as above", + /* 61*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, ";;;; ;;;; 1234", -1, 0, 23, 23, 0, 1, "Same as above", "11010110011001000111101" "10100111111110100011101" "11100000101010100000100" @@ -2259,32 +2657,32 @@ static void test_encode(const testCtx *const p_ctx) { "11111110011110011110100" "11011001110001110111101" }, - /* 58*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "ABC\015D\015~~~~\015~~~~~\015;;;;\015;;;\015~~~~\015\012", -1, 0, 23, 23, 0, 1, "CRs; BWIPP different encodation, same no. of codewords", - "00111111111010011101000" - "01101000111101110011100" - "00011101011010111100111" - "00011011110101000011001" + /* 62*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "ABC\015D\015~~~~\015~~~~~\015;;;;\015;;;\015~~~~\015\012", -1, 0, 23, 23, 0, 1, "CRs; BWIPP different encodation, same no. of codewords", + "00101111100010011101000" + "01110111100101110011100" + "00011111001000110100011" + "00010111100101010000001" "11101100001000000010101" - "00101111111111111110010" - "10110100000000000100110" + "00101111111111111110110" + "10110100000000000101010" "00011101111111110110111" - "00011101000000010111101" - "00100101011111010110101" - "00100101010001010111010" + "00011101000000010110001" + "00100101011111010111101" + "00100101010001010110010" "01010101010101010101010" - "01011101010001010111110" - "01110101011111010101011" - "00001101000000010110111" - "10101101111111110110101" - "11110100000000000110111" - "11110111111111111111000" - "01100011000010000001110" - "01100000111111111010111" - "11101110000000111010001" + "01111101010001010111110" + "01110101011111010100111" + "00001101000000010110011" + "10001101111111110111001" + "11100100000000000110111" + "11110111111111111110100" + "01110011000010000000010" + "01010111100110011100011" + "11001000100011101110101" "10011100110110111001101" "01110011100011100111010" }, - /* 59*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "ABC\015D\015~~~~\015~~~~~\015;;;;\015;;;\015~~~~\015\012", -1, 0, 23, 23, 0, 1, "Same as above", + /* 63*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "ABC\015D\015~~~~\015~~~~~\015;;;;\015;;;\015~~~~\015\012", -1, 0, 23, 23, 0, 1, "Same as above", "00101111100010011101000" "01110111100101110011100" "00010001110001100111111" @@ -2309,7 +2707,24 @@ static void test_encode(const testCtx *const p_ctx) { "10011100110110111001101" "01110011100011100111010" }, - /* 60*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\012\015", -1, 0, 15, 15, 1, 1, "CR/CRLF", + /* 64*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\012\015", -1, 0, 15, 15, 0, 1, "CR/CRLF; BWIPP: different encodation, same no. of codewords, see below", + "000000111000100" + "110101000001110" + "101100000010100" + "111111111111101" + "111100000001110" + "101101111101111" + "000101000101100" + "010101010101100" + "000101000101010" + "001101111101111" + "011100000001111" + "110111111111111" + "110000101000010" + "101110111000001" + "100011010111000" + }, + /* 65*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\012\015", -1, 0, 15, 15, 1, 1, "Uses P/Ss instead of M/L P/L latch", "001110111101100" "001100100011101" "001100000010111" @@ -2326,24 +2741,7 @@ static void test_encode(const testCtx *const p_ctx) { "011001000111101" "101010100010101" }, - /* 61*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\012\015", -1, 0, 15, 15, 1, 1, "Same as above", - "001110111101100" - "001100100011101" - "001100000010111" - "011111111111110" - "001100000001101" - "011101111101110" - "000101000101101" - "000101010101101" - "000101000101001" - "011101111101101" - "001100000001100" - "010111111111100" - "110000101000000" - "011001000111101" - "101010100010101" - }, - /* 62*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\015\012\015\015\012", -1, 0, 15, 15, 0, 1, "CR/CRLF; BWIPP: different encodation, same no. of codewords", + /* 66*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\015\012\015\015\012", -1, 0, 15, 15, 0, 1, "CR/CRLF; BWIPP: different encodation, same no. of codewords", "000000101100011" "111100111011110" "101100000100111" @@ -2360,7 +2758,7 @@ static void test_encode(const testCtx *const p_ctx) { "000101100111000" "101110011111011" }, - /* 63*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\015\012\015\015\012", -1, 0, 15, 15, 1, 1, "Same as BWIPP", + /* 67*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\015\012\015\015\012", -1, 0, 15, 15, 1, 1, "Same as BWIPP", "001110010000101" "110111101011100" "101100000100100" @@ -2377,7 +2775,7 @@ static void test_encode(const testCtx *const p_ctx) { "000010001000101" "101110000101001" }, - /* 64*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", .", -1, 0, 15, 15, 1, 1, "Spaces/dots/commas: uses DL", + /* 68*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", .", -1, 0, 15, 15, 1, 1, "Spaces/dots/commas: uses D/L", "000001001101000" "110000011111000" "111100000010110" @@ -2394,7 +2792,7 @@ static void test_encode(const testCtx *const p_ctx) { "010001111001000" "100110100000110" }, - /* 65*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", .", -1, 0, 15, 15, 0, 1, "Spaces/dots/commas: uses PSs, which is 3-bits more; BWIPP: see above", + /* 69*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", .", -1, 0, 15, 15, 0, 1, "Spaces/dots/commas: uses P/Ss, which is 3 bits more; BWIPP: see above", "000110011011010" "000101111100100" "001100000010111" @@ -2411,7 +2809,24 @@ static void test_encode(const testCtx *const p_ctx) { "001110101111111" "010001001101111" }, - /* 66*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", . ", -1, 0, 15, 15, 1, 1, "Spaces/dots/commas: uses 2 PSs, which although 1-bit less than using DL, ends up 1-bit more after bit-stuffing", + /* 70*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", . ", -1, 0, 15, 15, 0, 1, "Spaces/dots/commas: uses M/L P/L; BWIPP 2 P/Ss, 1 bit more but only due to bit-stuffing", + "001111111100011" + "110000111101011" + "101100000010101" + "111111111111100" + "111100000001110" + "101101111101101" + "000101000101110" + "100101010101100" + "000101000101000" + "001101111101110" + "111100000001101" + "110111111111101" + "100000101000000" + "010100011111001" + "001010001110010" + }, + /* 71*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", . ", -1, 0, 15, 15, 1, 1, "Uses 2 P/Ss, see above", "001011111110101" "001100011001011" "001100000010110" @@ -2428,58 +2843,1501 @@ static void test_encode(const testCtx *const p_ctx) { "101111111111111" "110111100000011" }, - /* 67*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", . ", -1, 0, 15, 15, 1, 1, "Same as above", - "001011111110101" - "001100011001011" - "001100000010110" - "011111111111110" + /* 72*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", . , ", -1, 0, 15, 15, 0, 1, "Spaces/dots/commas", + "001111110111101" + "111100000011101" + "101100000100111" + "111111111111101" + "110100000001000" + "100101111101100" + "001101000101011" + "100101010101110" + "000101000101011" + "000101111101011" + "110100000001001" + "000111111111100" + "100011101110001" + "111100000110001" + "011011011100111" + }, + /* 73*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", . , ", -1, 0, 15, 15, 1, 1, "Same as above", + "001111110111101" + "111100000011101" + "101100000100111" + "111111111111101" + "110100000001000" + "100101111101100" + "001101000101011" + "100101010101110" + "000101000101011" + "000101111101011" + "110100000001001" + "000111111111100" + "100011101110001" + "111100000110001" + "011011011100111" + }, + /* 74*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", -1, 0, 37, 37, 0, 3, "62 bytes; BWIPP: uses 1 B/S(62) instead of 2 B/S(31)s (1 bit longer) TODO: change BWIPP", + "1110010001000100011000100010001000110" + "1100110011001100110001100110011001010" + "1010101010101010101010101010101010101" + "1100001000100010000100010001000100000" + "1011111001100110011100110011001100110" + "1101100110010110010110001011001110011" + "1111100100001100101100010011010011100" + "0101111011110100000110001000100100000" + "0011101001000011101011110110010000110" + "0001100000001011100100010000001010011" + "1110100101111110001001000010110011100" + "0100011000111001000000010100010000000" + "0010001011111111111111111110011000110" + "0001100001111000000000001010011110011" + "1110100111001011111111101011001011100" + "0100011011111010000000101000101000000" + "0010001000111010111110101000011100110" + "0001100001001010100010101011000010011" + "1010101010101010101010101010101010101" + "1100100011001010100010101000101111000" + "0110011100011010111110101001101000100" + "0000001101001010000000101010110000010" + "0011100100101011111111101110111110111" + "1100100010001000000000001100110111000" + "0110011011001111111111111101000100100" + "0000011010000111010011100001110000010" + "0011110010000010001111001111111110111" + "1100101100101111100110011011001111000" + "0110010101110101001001001110101000100" + "0000011010011010100000111110011100010" + "0011101101001011001010100011010010111" + "1100100101100000110101000001000111000" + "0110011001100110011100110011001100100" + "0000010001000100010000100010001000010" + "1010101010101010101010101010101010101" + "0101001100110011000110011001100110011" + "0110001000100010001100010001000100100" + }, + /* 75*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", -1, 0, 37, 37, 0, 3, "BWIPP: see above", + "1110010001000100011000100010001000110" + "1100110011001100110001100110011001010" + "1010101010101010101010101010101010101" + "1100001000100010000100010001000100000" + "1011111001100110011100110011001100110" + "1101100110010110010110001011001110011" + "1111100100001100101100010011010011100" + "0101111011110100000110001000100100000" + "0011101001000011101011110110010000110" + "0001100000001011100100010000001010011" + "1110100101111110001001000010110011100" + "0100011000111001000000010100010000000" + "0010001011111111111111111110011000110" + "0001100001111000000000001010011110011" + "1110100111001011111111101011001011100" + "0100011011111010000000101000101000000" + "0010001000111010111110101000011100110" + "0001100001001010100010101011000010011" + "1010101010101010101010101010101010101" + "1100100011001010100010101000101111000" + "0110011100011010111110101001101000100" + "0000001101001010000000101010110000010" + "0011100100101011111111101110111110111" + "1100100010001000000000001100110111000" + "0110011011001111111111111101000100100" + "0000011010000111010011100001110000010" + "0011110010000010001111001111111110111" + "1100101100101111100110011011001111000" + "0110010101110101001001001110101000100" + "0000011010011010100000111110011100010" + "0011101101001011001010100011010010111" + "1100100101100000110101000001000111000" + "0110011001100110011100110011001100100" + "0000010001000100010000100010001000010" + "1010101010101010101010101010101010101" + "0101001100110011000110011001100110011" + "0110001000100010001100010001000100100" + }, + /* 76*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", -1, 0, 37, 37, 1, 3, "63 bytes", + "1111001100110011001110011001100110101" + "1100100010001000100001000100010001000" + "1010101010101010101010101010101010101" + "1001010011001100110001100110011001001" + "0010001000100010001100010001000100110" + "0000110101111001110111010001011101000" + "0011000111010111001110001100101010101" + "0001001110000011000001011010000100001" + "0110010111011111011001101011111001110" + "1000110000101100010110111100111101000" + "0011000001110000111001110001110010101" + "0001001100111001000000010111100100001" + "1010010000111111111111111111001101110" + "1000110100111000000000001001010101000" + "0011000100001011111111101011010110101" + "0101001010101010000000101010011100001" + "1010010111101010111110101000110001110" + "1000110001001010100010101001000101000" + "1010101010101010101010101010101010101" + "0001000000111010100010101101001110001" + "0111001101111010111110101011101000101" + "1000010011111010000000101111111001010" + "1010110010101011111111101010010001100" + "0001000111001000000000001011111110001" + "0111001010001111111111111100001000101" + "1000010101100000110001110011110101010" + "1010110001000110001110000010011101100" + "0001000010100100010100111001110010001" + "0111001100111011011111000000001100101" + "1000011010000111110010010101101001010" + "1010101110001000011000001110101001100" + "0001010000010101110110001011111110001" + "0110010001000100011000100010001000101" + "1001001100110011000110011001100101010" + "1010101010101010101010101010101010101" + "0001000100010001000010001000100010000" + "1010110011001100111001100110011001101" + }, + /* 77*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡", -1, 0, 37, 37, 1, 3, "63 bytes", + "1111001100110011001110011001100110101" + "1100100010001000100001000100010001000" + "1010101010101010101010101010101010101" + "1001010011001100110001100110011001001" + "0010001000100010001100010001000100110" + "0000110101111001110111010001011101000" + "0011000111010111001110001100101010101" + "0001001110000011000001011010000100001" + "0110010111011111011001101011111001110" + "1000110000101100010110111100111101000" + "0011000001110000111001110001110010101" + "0001001100111001000000010111100100001" + "1010010000111111111111111111001101110" + "1000110100111000000000001001010101000" + "0011000100001011111111101011010110101" + "0101001010101010000000101010011100001" + "1010010111101010111110101000110001110" + "1000110001001010100010101001000101000" + "1010101010101010101010101010101010101" + "0001000000111010100010101101001110001" + "0111001101111010111110101011101000101" + "1000010011111010000000101111111001010" + "1010110010101011111111101010010001100" + "0001000111001000000000001011111110001" + "0111001010001111111111111100001000101" + "1000010101100000110001110011110101010" + "1010110001000110001110000010011101100" + "0001000010100100010100111001110010001" + "0111001100111011011111000000001100101" + "1000011010000111110010010101101001010" + "1010101110001000011000001110101001100" + "0001010000010101110110001011111110001" + "0110010001000100011000100010001000101" + "1001001100110011000110011001100101010" + "1010101010101010101010101010101010101" + "0001000100010001000010001000100010000" + "1010110011001100111001100110011001101" + }, + /* 78*/ { BARCODE_AZTEC, UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0E\\x0E", -1, 0, 37, 37, 0, 3, "BWIPP: different encodation, 1 bit worse (does B/S(31) U B/S(31) B/S1(1) instead of single B/S(64))", + "1110110000001100001001100000011000100" + "1101010010010100100010100100101001000" + "1010101010101010101010101010101010101" + "1000001100000011000000011000000110010" + "0010010100100101001100101001001010101" + "0000100111001100010011011011000000011" + "0010000000101011101001110011010110100" + "0000001000011101000101010010101000000" + "0111100100111101111101111111110000110" + "1001000011101110110010010111100010000" + "0010111110111000111101001000111101100" + "0100010110011001000000010101001111010" + "0010001000011111111111111101110100101" + "0000100011001000000000001001001100011" + "1110000101011011111111101000010010100" + "1000001000011010000000101000011100000" + "0111100000101010111110101000000000110" + "0001000001111010100010101100101010000" + "1010101010101010101010101010101010101" + "0000111011111010100010101001110101000" + "0110010101001010111110101110110111110" + "0000001110001010000000101100001000001" + "0010100100011011111111101000000100111" + "1100000101111000000000001111111010000" + "1010001001001111111111111100010000100" + "0101100100100101100001100000011100010" + "0011000000001100001111000011101110100" + "0000111110010110110100001010010101000" + "0110010101111100011001101100000011110" + "0000000000111001000000111101100100001" + "0010101010101100111010001010010100111" + "1100001110010110000011101100001010000" + "1010101001001010011001010010010100100" + "0100110000001100000001100000011000010" + "1010101010101010101010101010101010101" + "0001001010010010100010010100100101000" + "0010001100000011001000011000000110100" + }, + /* 79*/ { BARCODE_AZTEC, UNICODE_MODE | ESCAPE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0EA\\x0E\\x0E", -1, 0, 41, 41, 0, 3, "Degenerate encodation FAST_MODE; BWIPP see above", + "11001011110010010011100011000011110011001" + "11010001100011000011011001001001100001100" + "10001001001100011000101111001001001110000" + "00110100001111001001000110001100001101100" + "10101010101010101010101010101010101010101" + "01100111110011111111010100010000011000011" + "00001000101111100101111110011001011110111" + "00010001101010011100010001110100001001110" + "11011101101000110110101111001100010010010" + "10110110010101111000000101001111110100000" + "00111110011000110111110010011100101111001" + "01000100010100111000001100100111110000011" + "01001001101101111101101011110000000010100" + "11100010110111100101000001011100001001100" + "11001000110101111111111111110110100011110" + "00010000011100100000000000100100100100100" + "00111110100000101111111110111111111110001" + "10000101011001101000000010110010111100011" + "00001001111111101011111010111101000111111" + "01100010100011101010001010100011010001001" + "10101010101010101010101010101010101010101" + "11110010000001101010001010101110000000000" + "00111111100000101011111010110011001110100" + "00100111111010101000000010111010101000011" + "10001001101000101111111110100010110010010" + "11010000101011100000000000111000110101100" + "11001100110010111111111111111011110011101" + "10000001011000010000011111000010110001000" + "00111010011010000011101010000000101111000" + "01100111101110011101000010100001101100011" + "00001001101111001001111111101001101010111" + "00010001000000100101011101100000011001110" + "11011100001010111011101101100101100010010" + "10110111010001101010000110001111110100000" + "00111100100100111100100110001100101111001" + "01000110000110001100010010011110000000011" + "10101010101010101010101010101010101010101" + "01000011000110010010001111000011000100100" + "11011001001111000011100011001001001111100" + "10000011000110010010001111000011000101010" + "10011001001111000011100011001001001111100" + }, + /* 80*/ { BARCODE_AZTEC, UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\\x0EAB\\x0EA", -1, 0, 15, 15, 1, 3, "", + "000110100010010" + "111010010010111" + "111100000110100" + "101111111111100" "001100000001111" - "101101111101110" - "000101000101110" - "000101010101110" - "000101000101010" - "011101111101111" - "001100000001110" - "110111111111100" - "110000101000010" + "101101111101010" + "001101000101100" + "000101010101001" + "010101000101000" + "111101111101111" + "001100000001111" + "100111111111111" + "000011000110011" + "000010011000100" + "011000001001100" + }, + /* 81*/ { BARCODE_AZTEC, UNICODE_MODE | ESCAPE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\\x0EAB\\x0EA", -1, 0, 15, 15, 0, 3, "BWIPP: as above", + "001000001001001" + "111011010000100" + "111100001000110" "101111111111111" - "110111100000011" - }, - /* 68*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", . , ", -1, 0, 15, 15, 0, 1, "Spaces/dots/commas", - "001111110111101" - "111100000011101" - "101100000100111" - "111111111111101" - "110100000001000" - "100101111101100" - "001101000101011" - "100101010101110" - "000101000101011" - "000101111101011" - "110100000001001" + "000100000001001" + "000101111101010" + "100101000101111" + "001101010101100" + "011101000101111" + "111101111101011" + "000100000001100" "000111111111100" - "100011101110001" - "111100000110001" - "011011011100111" + "100001010010010" + "011110000110011" + "001110010010001" }, - /* 69*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, ", . , ", -1, 0, 15, 15, 1, 1, "Same as above", - "001111110111101" - "111100000011101" - "101100000100111" - "111111111111101" - "110100000001000" - "100101111101100" - "001101000101011" - "100101010101110" - "000101000101011" - "000101111101011" - "110100000001001" + /* 82*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "A. b.", -1, 0, 15, 15, 0, 3, "AZHighLevelEncoderTest::HighLevelEncode #1; BWIPP: different encodation, same no. of codewords", + "000101010001101" + "001100100010011" + "011100000100100" + "001111111111110" + "001100000001110" + "000101111101000" + "011101000101001" + "000101010101000" + "110101000101111" + "111101111101011" + "100100000001111" + "000111111111111" + "000011011110001" + "110011001110010" + "111110100000101" + }, + /* 83*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "A. b.", -1, 0, 15, 15, 0, 3, "Same as above", + "000101010001101" + "001100100010011" + "011100000100100" + "001111111111110" + "001100000001110" + "000101111101000" + "011101000101001" + "000101010101000" + "110101000101111" + "111101111101011" + "100100000001111" + "000111111111111" + "000011011110001" + "110011001110010" + "111110100000101" + }, + /* 84*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "Lorem ipsum.", -1, 0, 19, 19, 1, 3, "AZHighLevelEncoderTest::HighLevelEncode #2", + "0111111010110010001" + "1010000001000111010" + "1100011001000110111" + "1111110001000011111" + "0011110100101010010" + "1001111111111111010" + "0001110000000111101" + "0101010111110111001" + "0011010100010101111" + "1100010101010101101" + "0010010100010100010" + "1111110111110111010" + "0011110000000110011" + "1110011111111111010" + "1011000011111000111" + "0001101110010000010" + "0011000101001100011" + "0000011001010111011" + "1111010011011110111" + }, + /* 85*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "Lorem ipsum.", -1, 0, 19, 19, 1, 3, "Same as above", + "0111111010110010001" + "1010000001000111010" + "1100011001000110111" + "1111110001000011111" + "0011110100101010010" + "1001111111111111010" + "0001110000000111101" + "0101010111110111001" + "0011010100010101111" + "1100010101010101101" + "0010010100010100010" + "1111110111110111010" + "0011110000000110011" + "1110011111111111010" + "1011000011111000111" + "0001101110010000010" + "0011000101001100011" + "0000011001010111011" + "1111010011011110111" + }, + /* 86*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "Lo. Test 123.", -1, 0, 19, 19, 1, 3, "AZHighLevelEncoderTest::HighLevelEncode #3", + "0110101001101101100" + "1001010101000000011" + "1101100100010100000" + "1101100110010101100" + "0011110100110011110" + "1001111111111111001" + "0000010000000100001" + "0010110111110110010" + "0100110100010110000" + "0000010101010101000" + "0011010100010100111" + "0110010111110100011" + "0100010000000100001" + "1111011111111110101" + "1100001111100001111" + "0010100101001110101" + "1010010111101000011" + "0010001111100010001" + "1101110001100101100" + }, + /* 87*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "Lo. Test 123.", -1, 0, 19, 19, 1, 3, "Same as above", + "0110101001101101100" + "1001010101000000011" + "1101100100010100000" + "1101100110010101100" + "0011110100110011110" + "1001111111111111001" + "0000010000000100001" + "0010110111110110010" + "0100110100010110000" + "0000010101010101000" + "0011010100010100111" + "0110010111110100011" + "0100010000000100001" + "1111011111111110101" + "1100001111100001111" + "0010100101001110101" + "1010010111101000011" + "0010001111100010001" + "1101110001100101100" + }, + /* 88*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "Lo...x", -1, 0, 15, 15, 1, 3, "AZHighLevelEncoderTest::HighLevelEncode #4", + "000111110110000" + "010101111011011" + "101100000110111" + "111111111111110" + "111100000001111" + "001101111101010" + "101101000101110" + "000101010101001" + "010101000101010" + "111101111101110" + "101100000001101" + "110111111111101" + "010011000110000" + "111110101011010" + "101011110101001" + }, + /* 89*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "Lo...x", -1, 0, 15, 15, 1, 3, "Same as above", + "000111110110000" + "010101111011011" + "101100000110111" + "111111111111110" + "111100000001111" + "001101111101010" + "101101000101110" + "000101010101001" + "010101000101010" + "111101111101110" + "101100000001101" + "110111111111101" + "010011000110000" + "111110101011010" + "101011110101001" + }, + /* 90*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, ". x://abc/.", -1, 0, 19, 19, 0, 3, "AZHighLevelEncoderTest::HighLevelEncode #5; BWIPP: different encodation, same no. of codewords", + "0001000110110110010" + "0010101001100101000" + "0110100110000001111" + "0001110001100100110" + "0100110100110011100" + "1100111111111110011" + "1110110000000110011" + "0001110111110100111" + "1101110100010110010" + "0010010101010110000" + "1000010100010110000" + "0000110111110101110" + "0001010000000111111" + "1001011111111110000" + "1000001100100000110" + "1011001010110000010" + "0001101100000001000" + "0000000000001010100" + "0110001100100100111" + }, + /* 91*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, ". x://abc/.", -1, 0, 19, 19, 0, 3, "BWIPP: different encodation, 2 codewords shorter (see above)", + "0010111000101000011" + "0010011010001010111" + "0110110111000101101" + "0011100111011001001" + "0110110100111010000" + "1110111111111110111" + "1111110000000111111" + "0010010111110101010" + "1111110100010101001" + "0010010101010110000" + "1100010100010101100" + "1111110111110110000" + "0111110000000111101" + "1111011111111111101" + "1101001101000000010" + "0110100001111001000" + "0110101101110000000" + "1001101110000001000" + "0110001111100100110" + }, + /* 92*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "ABCdEFG", -1, 0, 15, 15, 1, 3, "AZHighLevelEncoderTest::HighLevelEncode #6, uses B/S for 'd' (saves 2 bits)", + "000011001010101" + "001010101101011" + "011100000110100" + "001111111111111" + "001100000001110" + "111101111101000" + "001101000101101" + "100101010101011" + "010101000101011" + "111101111101100" + "111100000001100" + "000111111111101" + "000011000110001" + "010001001000101" + "110100101110111" + }, + /* 93*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "ABCdEFG", -1, 0, 15, 15, 0, 3, "AZHighLevelEncoderTest::HighLevelEncode #6, uses L/L; BWIPP: see above", + "001100111100100" + "001110101011101" + "011100001000111" + "001111111111100" + "000100000001011" + "110101111101010" + "000101000101100" + "101101010101101" + "011101000101111" + "111101111101000" + "000100000001100" "000111111111100" - "100011101110001" - "111100000110001" - "011011011100111" + "100001010010011" + "110110100100011" + "111010010111011" }, - /* 70*/ { BARCODE_AZTEC, DATA_MODE, 3, -1, -1, 1, -1, { 0, 0, "" }, "\101\300", -1, 0, 15, 15, 1, 899, "AÀ", + /* 94*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, " \001\002\003\004\005\006\007\010\011\012\013\014\015\033\034\035\036\037@\\^_`|~\177", -1, 0, 19, 19, 0, 3, "All Mixed; BWIPP: different encodation (switches to M/L immediately), same no. of codewords", + "0000101001100110001" + "0011110101111101110" + "1110001010010101101" + "1111100010101001011" + "0111110101011010100" + "0010111111111111110" + "0100010000000110110" + "0001110111110110101" + "0010110100010100110" + "1100010101010101100" + "0011110100010101010" + "1001010111110101000" + "0010010000000110001" + "0101011111111110011" + "0101001101101001011" + "0000101000101111000" + "1110001001100000111" + "0111000111001100110" + "0010001000011010110" + }, + /* 95*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, " \001\002\003\004\005\006\007\010\011\012\013\014\015\033\034\035\036\037@\\^_`|~\177", -1, 0, 19, 19, 0, 3, "Same as above; BWIPP see above", + "0000101001100110001" + "0011110101111101110" + "1110001010010101101" + "1111100010101001011" + "0111110101011010100" + "0010111111111111110" + "0100010000000110110" + "0001110111110110101" + "0010110100010100110" + "1100010101010101100" + "0011110100010101010" + "1001010111110101000" + "0010010000000110001" + "0101011111111110011" + "0101001101101001011" + "0000101000101111000" + "1110001001100000111" + "0111000111001100110" + "0010001000011010110" + }, + /* 96*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "\015\015\012. , : !\"#$%&'()*+,-./:;<=>?[]{}", -1, 0, 19, 19, 0, 3, "All Punct; BWIPP: different encodation (immediate M/L P/L), same no. of codewords", + "1110101111101110010" + "1010100110011000111" + "1010000111000001001" + "1110001000011110101" + "1011110101101010100" + "1101111111111110111" + "1111110000000101000" + "0011110111110110101" + "0000010100010110100" + "1011110101010110000" + "0010010100010100111" + "0111010111110100011" + "1011010000000111110" + "0110011111111110001" + "0011000101011000111" + "0010100001011111101" + "1001101011101110101" + "0100100010000110110" + "1010111000111001100" + }, + /* 97*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "\015\015\012. , : !\"#$%&'()*+,-./:;<=>?[]{}", -1, 0, 19, 19, 0, 3, "Same as above; BWIPP: see above", + "1110101111101110010" + "1010100110011000111" + "1110010100111000001" + "1110111101001111101" + "1011110101101010000" + "0001111111111111011" + "0011110000000100100" + "1011110111110110101" + "0000010100010111000" + "1011110101010110000" + "0010010100010101111" + "0111010111110101111" + "1011010000000110110" + "0110011111111110101" + "0011000101011001011" + "0011010001011001001" + "1011001000100101101" + "0100100010000110110" + "1010111000111001100" + }, + /* 98*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, -1, -1, { 0, 0, "" }, "09 UAG ^160MEUCIQC0sYS/HpKxnBELR1uB85R20OoqqwFGa0q2uEiYgh6utAIgLl1aBVM4EOTQtMQQYH9M2Z3Dp4qnA/fwWuQ+M8L3V8U=", -1, 0, 41, 41, 0, 3, "AZHighLevelEncoderTest::HighLevelEncode #9; BWIPP: different encodation, 1 codeword longer (probably due to bit-stuffing)", + "11111100011101111101100001110101010110010" + "11110101111100001000010101111011010100011" + "00111111111110100110110010101011101110011" + "01000110101010000100001001100100101000100" + "10101010101010101010101010101010101010101" + "01110001001000010010010001010101011100100" + "01011111000000101111111111111010111010111" + "10000011011110111010010010110100110000011" + "00001111100010010001110000110000011010001" + "10100001100101110010011101010011010000110" + "00111010110011100001101111101110000010010" + "11100100101110111011001101000010011000101" + "11101100110111000000111101010001010110100" + "01000001111001100101000001011010001101100" + "01011011010101111111111111110011010110101" + "10110011101011100000000000110011001000111" + "00001010101101101111111110100000111010100" + "01100100111110101000000010100000000001100" + "00001010101001101011111010111000011110010" + "10010011101101101010001010111110001001101" + "10101010101010101010101010101010101010101" + "00000111101000101010001010100111110000101" + "00101111001010101011111010111010111011011" + "00100001101111101000000010111110011100010" + "10011001110010101111111110100010110010010" + "00010100110000100000000000100000000001001" + "01101110100000111111111111110100110011110" + "00000101111110011010010100000111001100101" + "00111101111111011001101110110111101011101" + "10110000100000101010001010111000000100001" + "00011111010111000111100010010011010111100" + "01110100001000101101001111001110100100111" + "11001100101000110001111110011100101110001" + "10010010100101100011001001101010001101101" + "11111100110011111110110101111001101010110" + "01010001100101100111011001110111101000101" + "10101010101010101010101010101010101010101" + "10010110001000100010000101010000000100011" + "11001111101001010011101010011111011111000" + "01100010000101101001001011100001111100100" + "11111011001110100111100000001010110010001" + }, + /* 99*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "09 UAG ^160MEUCIQC0sYS/HpKxnBELR1uB85R20OoqqwFGa0q2uEiYgh6utAIgLl1aBVM4EOTQtMQQYH9M2Z3Dp4qnA/fwWuQ+M8L3V8U=", -1, 0, 41, 41, 0, 3, "3 codewords longer than above; BWIPP: see above", + "11001111001110011111101110101010100110111" + "11110111000101101011000111011010100101111" + "00001100001011001101111001000110111010111" + "01110111001111101111000101101000010000001" + "10101010101010101010101010101010101010101" + "01110100001010011001010000001111001001100" + "01111111101011011100100001000111010011011" + "10110101000111001110000111010100111101000" + "00001001110110111101101010010111001011011" + "10110011001001000001001010101100001101100" + "00011110101000001110101011111101101010101" + "11000010011110000100010101110110001100011" + "11001111010110000000110010110110110011110" + "01100010001011100101000001010011101101000" + "01111110000011111111111111111010111111110" + "10100010101110100000000000111000101001001" + "00101110011000101111111110100010100010011" + "01000100010111101000000010110100101001010" + "00011011100110101011111010100100000111101" + "10110101011110101010001010110011001101100" + "10101010101010101010101010101010101010101" + "00000110001110101010001010101101011001001" + "00101101110100101011111010111100101010101" + "00000001011001101000000010111011010000000" + "10011111101111101111111110110110101110000" + "00000011111111100000000000101111001101000" + "01101000101000111111111111111000010110101" + "00100000100100000101010010001010100100101" + "00011100101000000010100111111101111011001" + "10010101110110001110011111111000011100101" + "00101111010111100001101001011011001111110" + "01000001100001000000001010010111011100111" + "11111101111101111111100010110011110010110" + "10100110001111100110010010011100101000011" + "11001011111110100110101100111111100111111" + "01010100011010111000011001011001111100000" + "10101010101010101010101010101010101010101" + "10110000001110001010010011001111001100010" + "11111101000011011111100111010101011011110" + "01100010000101101001001011100001100001001" + "11111011001110100111100000001010110111111" + }, + /*100*/ { BARCODE_AZTEC, ESCAPE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "N\\x00N", -1, 0, 15, 15, 1, 3, "AZHighLevelEncoderTest::HighLevelEncodeBinary #1, encode 'N' in UPPER", + "001100001101111" + "011110101101001" + "111100000100111" + "111111111111110" + "110100000001000" + "110101111101101" + "001101000101001" + "000101010101111" + "100101000101000" + "000101111101011" + "000100000001001" + "000111111111110" + "010011101110001" + "111011000101011" + "011111110101100" + }, + /*101*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "N\\x00N", -1, 0, 15, 15, 1, 3, "See above", + "001100001101111" + "011110101101001" + "111100000100111" + "111111111111110" + "110100000001000" + "110101111101101" + "001101000101001" + "000101010101111" + "100101000101000" + "000101111101011" + "000100000001001" + "000111111111110" + "010011101110001" + "111011000101011" + "011111110101100" + }, + /*102*/ { BARCODE_AZTEC, ESCAPE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "N\\x00n", -1, 0, 15, 15, 1, 3, "AZHighLevelEncoderTest::HighLevelEncodeBinary #2, encode 'n' in BINARY", + "001010001000010" + "011010110010011" + "111100000100100" + "111111111111110" + "111100000001101" + "110101111101011" + "001101000101000" + "010101010101010" + "000101000101110" + "001101111101010" + "000100000001111" + "000111111111110" + "010011011110011" + "101011000111110" + "011111010011100" + }, + /*103*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "N\\x00n", -1, 0, 15, 15, 0, 3, "Uses L/L for 'n' (3 bits longer); BWIPP: see above", + "001001000000101" + "011111010100010" + "111100000100100" + "111111111111100" + "111100000001110" + "110101111101000" + "001101000101011" + "000101010101011" + "100101000101101" + "001101111101001" + "000100000001111" + "000111111111100" + "010011011110010" + "100110100101000" + "110111111101110" + }, + /*104*/ { BARCODE_AZTEC, ESCAPE_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "N\\x00\\x80 A", -1, 0, 19, 19, 1, 899, "AZHighLevelEncoderTest::HighLevelEncodeBinary #3, short consecutive bytes", + "0110110011000110100" + "1100001110010000010" + "1101110111111011110" + "1101010011100010111" + "1101110100011011001" + "0000111111111110101" + "0100110000000111010" + "0010010111110101110" + "0011110100010111101" + "0011110101010101000" + "0010110100010111010" + "0100010111110110111" + "1011110000000100011" + "0000011111111111101" + "0011001000001000010" + "0001111001001000000" + "0001111110000110110" + "1101111000011101111" + "0000011011000001111" + }, + /*105*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "N\\x00\\x80 A", -1, 0, 19, 19, 1, 899, "Same as above", + "0110110011000110100" + "1100001110010000010" + "1101110111111011110" + "1101010011100010111" + "1101110100011011001" + "0000111111111110101" + "0100110000000111010" + "0010010111110101110" + "0011110100010111101" + "0011110101010101000" + "0010110100010111010" + "0100010111110110111" + "1011110000000100011" + "0000011111111111101" + "0011001000001000010" + "0001111001001000000" + "0001111110000110110" + "1101111000011101111" + "0000011011000001111" + }, + /*106*/ { BARCODE_AZTEC, ESCAPE_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "\\x00a\\xFF\\x80 A", -1, 0, 19, 19, 1, 899, "AZHighLevelEncoderTest::HighLevelEncodeBinary #4, skipping over single char 'a'", + "1101110001011000000" + "1110001101101000011" + "1010011010100011001" + "0001111011001011001" + "1011110100100010100" + "0010111111111110011" + "0001110000000110010" + "0010110111110111000" + "0101010100010110101" + "0011010101010100000" + "0111010100010110010" + "1000110111110101110" + "0011010000000111011" + "0111011111111110011" + "1110000010011001001" + "1101101011101110000" + "1101010100000010110" + "0100001000011001100" + "1100000010111101100" + }, + /*107*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 0, -1, -1, 2, -1, { 0, 0, "" }, "\\x00a\\xFF\\x80 A", -1, 0, 19, 19, 0, 899, "Uses L/L for single char 'a'; BWIPP: same as above", + "1110100001111100000" + "1111111000100001001" + "1001101111111101100" + "0001001001101000000" + "0001110100110011011" + "1001111111111111011" + "0010010000000100110" + "0010110111110110010" + "0110110100010111100" + "0010010101010101111" + "1110010100010101010" + "1001010111110101101" + "0000010000000100101" + "0001011111111111011" + "1010001111100000011" + "1100010011011011111" + "1111100111100111001" + "0011110100001011000" + "1000111110000001100" + }, + /*108*/ { BARCODE_AZTEC, ESCAPE_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "1234\\x00", -1, 0, 15, 15, 1, 3, "AZHighLevelEncoderTest::HighLevelEncodeBinary #5, B/S from D/L", + "001111101001010" + "111000001100000" + "111100000110100" + "001111111111111" + "011100000001101" + "101101111101010" + "101101000101100" + "000101010101011" + "100101000101001" + "101101111101111" + "111100000001100" + "010111111111110" + "110011000110001" + "111000001011000" + "011001000011001" + }, + /*109*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "1234\\x00", -1, 0, 15, 15, 1, 3, "Same as above", + "001111101001010" + "111000001100000" + "111100000110100" + "001111111111111" + "011100000001101" + "101101111101010" + "101101000101100" + "000101010101011" + "100101000101001" + "101101111101111" + "111100000001100" + "010111111111110" + "110011000110001" + "111000001011000" + "011001000011001" + }, + /*110*/ { BARCODE_AZTEC, ESCAPE_MODE, 0, -1, -1, 7, -1, { 0, 0, "" }, "\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9E", -1, 0, 27, 27, 1, 899, "AZHighLevelEncoderTest::HighLevelEncodeBinary #6:31a", + "111011100110100100010101000" + "110010001000111001100100010" + "111101110000100100000110101" + "100110110110111111011011000" + "110001110110000010110110011" + "111001100001111100001111011" + "001100110001000000001111110" + "001111111111111111111011000" + "000000110000000000011001110" + "011101110111111111010100111" + "000000110100000001010100010" + "000101110101111101010001000" + "000011010101000101010100111" + "010101010101010101010101010" + "111111110101000101010011001" + "000000010101111101011111110" + "001100010100000001010000000" + "010000010111111111010010010" + "011100110000000000010111101" + "000111011111111111111110110" + "000100001011001010100000100" + "010000110100011001111010111" + "111100010000000111110111010" + "001101010101011111101001110" + "000101100111001101110011000" + "010001001100111010101010110" + "100011001000101000000010010" + }, + /*111*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 0, -1, -1, 7, -1, { 0, 0, "" }, "\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9E", -1, 0, 27, 27, 1, 899, "Same as above", + "111011100110100100010101000" + "110010001000111001100100010" + "111101110000100100000110101" + "100110110110111111011011000" + "110001110110000010110110011" + "111001100001111100001111011" + "001100110001000000001111110" + "001111111111111111111011000" + "000000110000000000011001110" + "011101110111111111010100111" + "000000110100000001010100010" + "000101110101111101010001000" + "000011010101000101010100111" + "010101010101010101010101010" + "111111110101000101010011001" + "000000010101111101011111110" + "001100010100000001010000000" + "010000010111111111010010010" + "011100110000000000010111101" + "000111011111111111111110110" + "000100001011001010100000100" + "010000110100011001111010111" + "111100010000000111110111010" + "001101010101011111101001110" + "000101100111001101110011000" + "010001001100111010101010110" + "100011001000101000000010010" + }, + /*112*/ { BARCODE_AZTEC, ESCAPE_MODE, 0, -1, -1, 7, -1, { 0, 0, "" }, "a\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9E", -1, 0, 27, 27, 0, 899, "AZHighLevelEncoderTest::HighLevelEncodeBinary #6:a31, L/L B/S(31); BWIPP: does B/S(32), one codeword longer", + "110100011001100010001000111" + "101001101010010101010001011" + "000101001110101111100101100" + "000100000110011010101110001" + "101011010111101110100110001" + "110110010100010110001100011" + "110100110001000000001101000" + "111010111111111111111000001" + "111000110000000000011111110" + "110110110111111111010101111" + "100100010100000001010010100" + "001110010101111101010011101" + "001011010101000101010010100" + "010101010101010101010101010" + "000110010101000101011101111" + "101010010101111101011000000" + "000001110100000001011111001" + "001001010111111111011010011" + "010100110000000000011001001" + "101011011111111111111001000" + "000100000100001110000101101" + "001000001101010011000100001" + "100111100100000001011101001" + "100001010110011110110110100" + "001110111010100101011111001" + "010010001100110001100000010" + "011000100010001100110101001" + }, + /*113*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 0, -1, -1, 7, -1, { 0, 0, "" }, "a\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9E", -1, 0, 27, 27, 0, 899, "Same as above; BWIPP: see above", + "110100011001100010001000111" + "101001101010010101010001011" + "000101001110101111100101100" + "000100000110011010101110001" + "101011010111101110100110001" + "110110010100010110001100011" + "110100110001000000001101000" + "111010111111111111111000001" + "111000110000000000011111110" + "110110110111111111010101111" + "100100010100000001010010100" + "001110010101111101010011101" + "001011010101000101010010100" + "010101010101010101010101010" + "000110010101000101011101111" + "101010010101111101011000000" + "000001110100000001011111001" + "001001010111111111011010011" + "010100110000000000011001001" + "101011011111111111111001000" + "000100000100001110000101101" + "001000001101010011000100001" + "100111100100000001011101001" + "100001010110011110110110100" + "001110111010100101011111001" + "010010001100110001100000010" + "011000100010001100110101001" + }, + /*114*/ { BARCODE_AZTEC, ESCAPE_MODE, 0, -1, -1, 7, -1, { 0, 0, "" }, "\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9Ea", -1, 0, 27, 27, 1, 899, "AZHighLevelEncoderTest::HighLevelEncodeBinary #6:31a, B/S(31) L/L", + "111011100110100100010101000" + "110010001000111001100100010" + "111101100011100001010000101" + "100110001001110101110111100" + "110010100100100001001100111" + "111010001011110000110101011" + "001110110001000000001011010" + "001111111111111111111101100" + "000001110000000000011001010" + "011110110111111111010000111" + "000001010100000001010000110" + "000110010101111101010011000" + "000001010101000101010110011" + "010101010101010101010101010" + "111111010101000101011000001" + "000010010101111101011111110" + "001110110100000001011110100" + "010000010111111111011011110" + "011101110000000000011110001" + "000100011111111111111011110" + "000111000100001110000000100" + "010010000110111111001110011" + "111101111011101100011110110" + "001101010101011111001111110" + "000101100111001101000010000" + "010001001100111010101010110" + "100011001000101000000010010" + }, + /*115*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 0, -1, -1, 7, -1, { 0, 0, "" }, "\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9Ea", -1, 0, 27, 27, 1, 899, "Same as above", + "111011100110100100010101000" + "110010001000111001100100010" + "111101100011100001010000101" + "100110001001110101110111100" + "110010100100100001001100111" + "111010001011110000110101011" + "001110110001000000001011010" + "001111111111111111111101100" + "000001110000000000011001010" + "011110110111111111010000111" + "000001010100000001010000110" + "000110010101111101010011000" + "000001010101000101010110011" + "010101010101010101010101010" + "111111010101000101011000001" + "000010010101111101011111110" + "001110110100000001011110100" + "010000010111111111011011110" + "011101110000000000011110001" + "000100011111111111111011110" + "000111000100001110000000100" + "010010000110111111001110011" + "111101111011101100011110110" + "001101010101011111001111110" + "000101100111001101000010000" + "010001001100111010101010110" + "100011001000101000000010010" + }, + /*116*/ { BARCODE_AZTEC, ESCAPE_MODE, 0, -1, -1, 7, -1, { 0, 0, "" }, "a\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9Eb", -1, 0, 27, 27, 0, 899, "AZHighLevelEncoderTest::HighLevelEncodeBinary #6:a31b; BWIPP: does B/S(33), 1 codeword longer", + "110100011001100010001000111" + "101001101010010101010001011" + "000101010000101111000010100" + "000111101010011001111001101" + "101010000011000100011111001" + "110100101000011011011011111" + "110111110001000000001001000" + "111011111111111111111010001" + "111001010000000000011111010" + "110101010111111111010010011" + "100110110100000001010100000" + "001100010101111101010001001" + "001011110101000101011110000" + "010101010101010101010101010" + "000100010101000101010110011" + "101011110101111101010111000" + "000010010100000001011110001" + "001011110111111111011010111" + "010100010000000000010111101" + "101011011111111111111000100" + "000111001110101110100000101" + "001001000110111110010100101" + "100111111101001101110101101" + "100001010110011110110011100" + "001110111010100101011001101" + "010010001100110001100000010" + "011000100010001100110101001" + }, + /*117*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 0, -1, -1, 7, -1, { 0, 0, "" }, "a\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9A\\x9B\\x9C\\x9D\\x9Eb", -1, 0, 27, 27, 0, 899, "Same as above; BWIPP: see above", + "110100011001100010001000111" + "101001101010010101010001011" + "000101010000101111000010100" + "000111101010011001111001101" + "101010000011000100011111001" + "110100101000011011011011111" + "110111110001000000001001000" + "111011111111111111111010001" + "111001010000000000011111010" + "110101010111111111010010011" + "100110110100000001010100000" + "001100010101111101010001001" + "001011110101000101011110000" + "010101010101010101010101010" + "000100010101000101010110011" + "101011110101111101010111000" + "000010010100000001011110001" + "001011110111111111011010111" + "010100010000000000010111101" + "101011011111111111111000100" + "000111001110101110100000101" + "001001000110111110010100101" + "100111111101001101110101101" + "100001010110011110110011100" + "001110111010100101011001101" + "010010001100110001100000010" + "011000100010001100110101001" + }, + /*118*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 3, -1, { 0, 0, "" }, "§A§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§", -1, 0, 23, 23, 0, 3, "AZHighLevelEncoderTest::HighLevelEncodeBinary #7, B/S(1) A B/S(30); BWIPP: does B/S(32), 4 bits longer", + "11011101110111011101110" + "11100110011001100110011" + "10111010110111101111001" + "00100011101000110111101" + "01100101111101000010111" + "10010100111110000110110" + "10110011101000101101101" + "01101011111111111111001" + "11101101000000010110111" + "00010101011111011010110" + "01111101010001011001101" + "01100101010101011011001" + "11100001010001010110111" + "11010011011111011010110" + "11110101000000010011101" + "10100001111111111111001" + "10101100111101000000111" + "10010010010101000000110" + "10110100101010001111101" + "01001100110011001101001" + "11110111011101110110111" + "00110011001100110011010" + "11011101110111011101101" + }, + /*119*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 3, -1, { 0, 0, "" }, "§A§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§", -1, 0, 23, 23, 0, 3, "Same as above; BWIPP: see above", + "11011101110111011101110" + "11100110011001100110011" + "10111010110111101111001" + "00100011101000110111101" + "01100101111101000010111" + "10010100111110000110110" + "10110011101000101101101" + "01101011111111111111001" + "11101101000000010110111" + "00010101011111011010110" + "01111101010001011001101" + "01100101010101011011001" + "11100001010001010110111" + "11010011011111011010110" + "11110101000000010011101" + "10100001111111111111001" + "10101100111101000000111" + "10010010010101000000110" + "10110100101010001111101" + "01001100110011001101001" + "11110111011101110110111" + "00110011001100110011010" + "11011101110111011101101" + }, + /*120*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 3, -1, { 0, 0, "" }, "§A§§§§§§§§§§§§§§§§§§§§§§§§§§§§§", -1, 0, 23, 23, 1, 3, "AZHighLevelEncoderTest::HighLevelEncodeBinary #8, B/S(31)", + "11001100110011001100110" + "11011101110111011101110" + "11111001000010110011010" + "10111001111111010100111" + "11010100001111101111111" + "11000100000001101000000" + "01111011101000001110010" + "00111111111111111010111" + "11011001000000010001111" + "10001011011111011101100" + "10110001010001010101110" + "00110001010101011000011" + "00010101010001011111011" + "11000011011111010011100" + "01110111000000010011110" + "00110101111111111010011" + "11011100111011000001011" + "11001111000111111011100" + "01111010010100000111110" + "00110111011101110110011" + "11100110011001100111011" + "11011101110111011101100" + "10011001100110011001110" + }, + /*121*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 3, -1, { 0, 0, "" }, "§A§§§§§§§§§§§§§§§§§§§§§§§§§§§§§", -1, 0, 23, 23, 0, 3, "B/S(1) A B/S(29); BWIPP: same as above", + "11011101110111011101110" + "11100110011001100110011" + "10110001011011100010101" + "00100000110101111000001" + "01101001010111010111111" + "10011100110001011111110" + "10111011101000001101101" + "01101011111111111101001" + "11101011000000011100111" + "00010011011111010110110" + "01111101010001010011101" + "01101001010101010001001" + "11100001010001010100111" + "11010101011111010000110" + "11110111000000011111101" + "10100101111111111111001" + "01100100110111000010111" + "10010011000010100000110" + "10110111010001110101101" + "01001100110011001101001" + "11110111011101110110111" + "00110011001100110011010" + "11011101110111011101101" + }, + /*122*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 4, -1, { 0, 0, "" }, "§A§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§", -1, 0, 27, 27, 0, 3, "AZHighLevelEncoderTest::HighLevelEncodeBinary #9, B/S(31) B/S(3); BWIPP: B/S(34)", + "110011001100110011001100110" + "110111011101110111011101110" + "111111011111011111111110010" + "101101101000010000110111011" + "110110000110011100010111111" + "110011001100011101001101100" + "011111101000100000101000010" + "001101010001101111001111111" + "110100011111100100110011111" + "100001011111111111110011100" + "101100000100000001010001010" + "001110000101111101011010111" + "000110011101000101001000011" + "110010111101010101000010000" + "011110111101000101001011010" + "001111010101111101010111111" + "110110011100000001111110111" + "110001000111111111111010000" + "011100010001000110001100010" + "001110111111010001001101111" + "110101011010000100001111111" + "110010010100010110100101000" + "011110001110110111100010110" + "001101110111000100110010111" + "111001100111110111011101111" + "110111011101110111011101100" + "100110011001100110011001110" + }, + /*123*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 4, -1, { 0, 0, "" }, "§A§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§", -1, 0, 27, 27, 0, 3, "B/S(1) A B/S(31) B/S(1); BWIPP: B/S(34), 1 codeword shorter", + "110111011101110111011101110" + "111001100110011001100110011" + "101111110101001111000001101" + "001010001101001011000000001" + "011001000110110101001000011" + "100110011101111100111101110" + "101110010000011010100110001" + "011001010010110000001111101" + "111001101111100100100101011" + "000111001111111111111111110" + "011111111100000001100010001" + "011010100101111101110100101" + "111011101101000101000111111" + "110111111101010101111000110" + "111111011101000101100100001" + "101000111101111101010001101" + "111000011100000001011011111" + "100110100111111111100011110" + "101110100001110110010010001" + "011010100110011011101101001" + "111001110100011010110101111" + "100101000100111000010100010" + "101101011010101110111010001" + "010011001100110011001110101" + "111101110111011101110111111" + "001100110011001100110011010" + "110111011101110111011101101" + }, + /*124*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 9, -1, { 0, 0, "" }, "§§§§§§§§§§§§§§§§§§§§§§§§§§§§§A§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§", -1, 0, 37, 37, 1, 3, "AZHighLevelEncoderTest::HighLevelEncodeBinary #10, B/S(64)", + "1110101110111011101111011101110111101" + "1101110011001100110001100110011001010" + "1010101010101010101010101010101010101" + "1000011011101110110101110111011101001" + "0010001100110011001110011001100110111" + "0000110111110001000100000000111101010" + "0011001010000010001001000111011111101" + "0001011011010110000101110001111110001" + "0110110111100111111111010111001101111" + "1001110000101010000100001101100101010" + "0011001000100010011110000011100011101" + "0101011100111001000000010110101010001" + "1010110111111111111111111101111001111" + "1001110000101000000000001001000101010" + "0111001101011011111111101010000111101" + "1101011000011010000000101000000010001" + "1010110111001010111110101000011101111" + "1001110001111010100010101110000101010" + "1010101010101010101010101010101010101" + "0101001011111010100010101010111111001" + "1111011101001010111110101101100110101" + "1000110011001010000000101101011101011" + "1011110110011011111111101010001001110" + "0101001111111000000000001101110011001" + "1111011011101111111111111101000110101" + "1000110011000101100001100001011101011" + "1011110000110011111010011100011101110" + "0101001011100001010101101001110111001" + "1111011101000010011101101000010110101" + "1000110100010110100010000110011101011" + "1011101111001110011100000110010101110" + "0101010110000100000111110110101111001" + "1110110011001100111001100110011010101" + "1001011101110111010110111011101101011" + "1010101010101010101010101010101010101" + "0101001100110011000110011001100110010" + "1011110111011101111011101110111011101" + }, + /*125*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, 9, -1, { 0, 0, "" }, "§§§§§§§§§§§§§§§§§§§§§§§§§§§§§A§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§", -1, 0, 37, 37, 0, 3, "B/S(29) A B/S(31) B/S(3), 1 codeword longer; BWIPP same as above", + "1111111101100110011100110011001100111" + "1100111000101110110101110111011101011" + "1010101010101010101010101010101010101" + "1101100110011001100011001100110011000" + "1011101110111011101111011101110111110" + "1000111011011010100110010101000000011" + "1110011101100010011011110100110110111" + "0101101010001010110001010111001111000" + "0011100000111000101000101000010111110" + "1100111110111101000101001101110000011" + "1110011100010101001001101001010010111" + "0101101000111001000000010101110011000" + "0011100111011111111111111100011011110" + "1100111001101000000000001010100100011" + "1110011111111011111111101000101010111" + "0101101001001010000000101011011111000" + "0011100100011010111110101000001111110" + "1100111110011010100010101111001100011" + "1010101010101010101010101010101010101" + "1100011001101010100010101100010110011" + "0111111111101010111110101111000011100" + "0001110100111010000000101010000011010" + "1110110001111011111111101110100000111" + "1100000000011000000000001011100110011" + "0111111011001111111111111100001111100" + "0001110101100010000011110010110011010" + "1110110100101000001100000110100000111" + "1100001001101110000101101011110110011" + "0111111000100110001110011011010011100" + "0001110011111001000100001011100011010" + "1110101100111110011110111011110100111" + "1100010111011011110010001101100110011" + "0111110111011101111011101110111011100" + "0001100110011001100011001100110011010" + "1010101010101010101010101010101010101" + "1101011101110111010110111011101110011" + "1110011001100110011100110011001100111" + }, + /*126*/ { BARCODE_AZTEC, DATA_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "ABC. DEF\015\012", -1, 0, 15, 15, 1, 3, "AZHighLevelEncoderTest::HighLevelEncodePairs #1, typical", + "000011010111100" + "001010001001001" + "011100001000100" + "001111111111110" + "000100000001001" + "110101111101001" + "000101000101111" + "101101010101111" + "001101000101100" + "001101111101001" + "000100000001100" + "000111111111100" + "010001010010000" + "100010010001011" + "101101011000001" + }, + /*127*/ { BARCODE_AZTEC, FAST_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "ABC. DEF\015\012", -1, 0, 15, 15, 1, 3, "Same as above", + "000011010111100" + "001010001001001" + "011100001000100" + "001111111111110" + "000100000001001" + "110101111101001" + "000101000101111" + "101101010101111" + "001101000101100" + "001101111101001" + "000100000001100" + "000111111111100" + "010001010010000" + "100010010001011" + "101101011000001" + }, + /*128*/ { BARCODE_AZTEC, DATA_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "A. : , \015\012", -1, 0, 15, 15, 1, 3, "AZHighLevelEncoderTest::HighLevelEncodePairs #2, P/L rather than shift", + "001001100000011" + "000100011101111" + "011100000100111" + "011111111111111" + "111100000001110" + "010101111101010" + "111101000101001" + "110101010101001" + "000101000101100" + "001101111101011" + "110100000001100" + "000111111111110" + "100011011110011" + "010011011100101" + "100000001101101" + }, + /*129*/ { BARCODE_AZTEC, FAST_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "A. : , \015\012", -1, 0, 15, 15, 1, 3, "Same as above", + "001001100000011" + "000100011101111" + "011100000100111" + "011111111111111" + "111100000001110" + "010101111101010" + "111101000101001" + "110101010101001" + "000101000101100" + "001101111101011" + "110100000001100" + "000111111111110" + "100011011110011" + "010011011100101" + "100000001101101" + }, + /*130*/ { BARCODE_AZTEC, DATA_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "A. 1234", -1, 0, 15, 15, 1, 3, "AZHighLevelEncoderTest::HighLevelEncodePairs #3, D/L rather than P/S", + "001000101011110" + "000111011110100" + "011100000100100" + "011111111111111" + "111100000001100" + "100101111101011" + "111101000101001" + "010101010101010" + "000101000101111" + "011101111101001" + "000100000001100" + "110111111111100" + "010011011110001" + "011101100110110" + "000011001110010" + }, + /*131*/ { BARCODE_AZTEC, FAST_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "A. 1234", -1, 0, 15, 15, 1, 3, "Same as above", + "001000101011110" + "000111011110100" + "011100000100100" + "011111111111111" + "111100000001100" + "100101111101011" + "111101000101001" + "010101010101010" + "000101000101111" + "011101111101001" + "000100000001100" + "110111111111100" + "010011011110001" + "011101100110110" + "000011001110010" + }, + /*132*/ { BARCODE_AZTEC, DATA_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "A\200. \200", -1, 0, 15, 15, 1, 899, "AZHighLevelEncoderTest::HighLevelEncodePairs #4, don't bother leaving B/S", + "001010110010010" + "000110111100010" + "011100001000101" + "011111111111111" + "110100000001010" + "110101111101011" + "000101000101100" + "101101010101101" + "011101000101101" + "001101111101011" + "000100000001110" + "000111111111110" + "010001010010011" + "001000000001111" + "011101001000011" + }, + /*133*/ { BARCODE_AZTEC, FAST_MODE, 0, -1, -1, 1, -1, { 0, 0, "" }, "A\200. \200", -1, 0, 15, 15, 0, 899, "Leaves B/S, 6 bits longer; BWIPP: same as above", + "001001100101011" + "001001101011110" + "011100001000100" + "011111111111101" + "110100000001000" + "110101111101011" + "000101000101101" + "001101010101111" + "111101000101111" + "001101111101011" + "000100000001110" + "000111111111101" + "010001010010011" + "001011110010010" + "000001110010000" + }, + /*134*/ { BARCODE_AZTEC, DATA_MODE, 3, -1, -1, 1, -1, { 0, 0, "" }, "\101\300", -1, 0, 15, 15, 1, 899, "AÀ", "000000101011100" "000100010100111" "001100000110110" @@ -2496,7 +4354,7 @@ static void test_encode(const testCtx *const p_ctx) { "110001000111110" "111001100011011" }, - /* 71*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, 3, -1, -1, 1, -1, { 0, 0, "" }, "\101\300", -1, 0, 15, 15, 1, 899, "Same as above", + /*135*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, 3, -1, -1, 1, -1, { 0, 0, "" }, "\101\300", -1, 0, 15, 15, 1, 899, "Same as above", "000000101011100" "000100010100111" "001100000110110" @@ -2513,7 +4371,7 @@ static void test_encode(const testCtx *const p_ctx) { "110001000111110" "111001100011011" }, - /* 72*/ { BARCODE_AZTEC, UNICODE_MODE, 26, -1, -1, 1, -1, { 0, 0, "" }, "AÀ", -1, 0, 15, 15, 1, 1, "AÀ", + /*136*/ { BARCODE_AZTEC, UNICODE_MODE, 26, -1, -1, 1, -1, { 0, 0, "" }, "AÀ", -1, 0, 15, 15, 1, 1, "AÀ", "001111011000101" "000110100011000" "001100001000111" @@ -2530,7 +4388,7 @@ static void test_encode(const testCtx *const p_ctx) { "001100010010010" "011110110011000" }, - /* 73*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 26, -1, -1, 1, -1, { 0, 0, "" }, "AÀ", -1, 0, 15, 15, 1, 1, "Same as above", + /*137*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 26, -1, -1, 1, -1, { 0, 0, "" }, "AÀ", -1, 0, 15, 15, 1, 1, "Same as above", "001111011000101" "000110100011000" "001100001000111" @@ -2547,7 +4405,7 @@ static void test_encode(const testCtx *const p_ctx) { "001100010010010" "011110110011000" }, - /* 74*/ { BARCODE_AZTEC, ESCAPE_MODE, 899, -1, -1, 1, -1, { 0, 0, "" }, "\\xC3\\x95\\xAB", -1, 0, 15, 15, 1, 1, "Blank top row", + /*138*/ { BARCODE_AZTEC, ESCAPE_MODE, 899, -1, -1, 1, -1, { 0, 0, "" }, "\\xC3\\x95\\xAB", -1, 0, 15, 15, 1, 1, "Blank top row", "000000000000000" "001111111011111" "001100001010111" @@ -2564,7 +4422,7 @@ static void test_encode(const testCtx *const p_ctx) { "111101100110011" "011100110010101" }, - /* 75*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 899, -1, -1, 1, -1, { 0, 0, "" }, "\\xC3\\x95\\xAB", -1, 0, 15, 15, 1, 1, "Blank top row", + /*139*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, 899, -1, -1, 1, -1, { 0, 0, "" }, "\\xC3\\x95\\xAB", -1, 0, 15, 15, 1, 1, "Blank top row", "000000000000000" "001111111011111" "001100001010111" @@ -2581,7 +4439,7 @@ static void test_encode(const testCtx *const p_ctx) { "111101100110011" "011100110010101" }, - /* 76*/ { BARCODE_AZTEC, UNICODE_MODE, 100, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "FLG(3)", + /*140*/ { BARCODE_AZTEC, UNICODE_MODE, 100, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "FLG(3)", "001101001111101" "000000111011100" "001100000100101" @@ -2598,7 +4456,7 @@ static void test_encode(const testCtx *const p_ctx) { "100011101111100" "000111110001110" }, - /* 77*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 100, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", + /*141*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 100, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", "001101001111101" "000000111011100" "001100000100101" @@ -2615,7 +4473,7 @@ static void test_encode(const testCtx *const p_ctx) { "100011101111100" "000111110001110" }, - /* 78*/ { BARCODE_AZTEC, UNICODE_MODE, 1000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "FLG(4)", + /*142*/ { BARCODE_AZTEC, UNICODE_MODE, 1000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "FLG(4)", "001010100011011" "001000100000101" "001100000100111" @@ -2632,7 +4490,7 @@ static void test_encode(const testCtx *const p_ctx) { "101000000111010" "000001110101111" }, - /* 79*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 1000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", + /*143*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 1000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", "001010100011011" "001000100000101" "001100000100111" @@ -2649,7 +4507,7 @@ static void test_encode(const testCtx *const p_ctx) { "101000000111010" "000001110101111" }, - /* 80*/ { BARCODE_AZTEC, UNICODE_MODE, 10000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "FLG(5)", + /*144*/ { BARCODE_AZTEC, UNICODE_MODE, 10000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "FLG(5)", "000100110110010" "000001000010111" "001100000110101" @@ -2666,7 +4524,7 @@ static void test_encode(const testCtx *const p_ctx) { "101010001110110" "000000011000101" }, - /* 81*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 10000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", + /*145*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 10000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", "000100110110010" "000001000010111" "001100000110101" @@ -2683,7 +4541,7 @@ static void test_encode(const testCtx *const p_ctx) { "101010001110110" "000000011000101" }, - /* 82*/ { BARCODE_AZTEC, UNICODE_MODE, 100000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "FLG(6)", + /*146*/ { BARCODE_AZTEC, UNICODE_MODE, 100000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "FLG(6)", "000010010000010" "001101000100110" "001100000110111" @@ -2700,7 +4558,7 @@ static void test_encode(const testCtx *const p_ctx) { "101010100011011" "000000000111010" }, - /* 83*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 100000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", + /*147*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 100000, -1, -1, 1, -1, { 0, 0, "" }, "A", -1, 0, 15, 15, 1, 1, "Same as above", "000010010000010" "001101000100110" "001100000110111" @@ -2717,7 +4575,7 @@ static void test_encode(const testCtx *const p_ctx) { "101010100011011" "000000000111010" }, - /* 84*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", -1, 0, 61, 61, 1, 1, "Zint website example ss_6.png NOTE now ends with D/L . instead of P/S .", + /*148*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", -1, 0, 61, 61, 1, 1, "Zint website example ss_6.png NOTE now ends with D/L . instead of P/S .", "0010110111101110101100000101001101110100010000100111011100001" "0001100000000000001101110010000100010101110011000001000011110" "0001111110101010100101000110101101000110011000101111011100110" @@ -2780,7 +4638,7 @@ static void test_encode(const testCtx *const p_ctx) { "1110000011010000000000100001100001000111011110011010000000001" "0000010101001111100010001001111100101000010001110010010101101" }, - /* 85*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", -1, 0, 61, 61, 1, 1, "Same as above", + /*149*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", -1, 0, 61, 61, 1, 1, "Same as above", "0010110111101110101100000101001101110100010000100111011100001" "0001100000000000001101110010000100010101110011000001000011110" "0001111110101010100101000110101101000110011000101111011100110" @@ -2843,36 +4701,36 @@ static void test_encode(const testCtx *const p_ctx) { "1110000011010000000000100001100001000111011110011010000000001" "0000010101001111100010001001111100101000010001110010010101101" }, - /* 86*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 4, -1, { 0, 0, "" }, "Colon: etc. NUM. 12345, num. 12345 @, 123. . . . . @.¡.!A ", -1, 0, 27, 27, 1, 1, "", + /*150*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, 4, -1, { 0, 0, "" }, "Colon: etc. NUM. 12345, num. 12345 @, 123. . . . . @.¡.!A ", -1, 0, 27, 27, 0, 1, "BWIPP: different encodation, same no. of codewords", "001010110110111011010110111" "100111110010100000100001110" - "011000101010111011100000011" - "110101011010011111110010100" - "001100001100010000101000011" - "100110011110010000001010101" - "001110011011000100001000011" - "001110100110011001101000111" - "110100111111101010110101100" - "011001101111111111111110101" - "100010010100000001001010011" - "000010111101111101110101001" - "001011110101000101010110011" - "110111010101010101000000110" - "111010100101000101001110100" - "001010001101111101110110100" - "000001000100000001001001111" - "001000000111111111101000111" - "011100010011100010001000010" - "011110011001001111111000001" - "000111001101011100110100010" - "111111100110110011101000010" - "010110011001000100001101010" - "011100101001010011110101000" - "011100100101001011111111010" + "011011110101011111110010111" + "110111001001100001110000000" + "001100100110111110100000011" + "100100010101010001010100001" + "001100101101110001001001011" + "001111111110010001100110011" + "110101101111101010111011100" + "011001101111111111110101001" + "100011100100000001000101011" + "000001011101111101101000101" + "001000110101000101001100011" + "110100110101010101010010010" + "111011010101000101010111000" + "001010011101111101101111000" + "000011110100000001011011111" + "001001000111111111101101011" + "011111010011100010010001010" + "011000110001110000011000001" + "001011101010000110110000010" + "110001000101111101101100010" + "011110111100111111000000110" + "010001000100010001111100100" + "011101110111011101101100110" "001101101101111011110110111" "010111000110110101011100000" }, - /* 87*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "Colon: etc. NUM. 12345, num. 12345 @, 123. . . . . @.¡.!A ", -1, 0, 27, 27, 0, 1, "BWIPP different encodation (3 codewords less, see above)", + /*151*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "Colon: etc. NUM. 12345, num. 12345 @, 123. . . . . @.¡.!A ", -1, 0, 27, 27, 0, 1, "BWIPP different encodation (3 codewords less, see above)", "001011011101101011011110111" "101001010000010000111010101" "011111000001110001101101111" @@ -2901,32 +4759,32 @@ static void test_encode(const testCtx *const p_ctx) { "000000111111011010100010100" "010000011101011110110000100" }, - /* 88*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 3, -1, { 0, 0, "" }, "1. 1a @ A@@ @@!!@@!!1!!!!¡a ", -1, 0, 23, 23, 0, 1, "BWIPP different encodation, same no. of codewords", + /*152*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 3, -1, { 0, 0, "" }, "1. 1a @ A@@ @@!!@@!!1!!!!¡a ", -1, 0, 23, 23, 0, 1, "BWIPP different encodation, same no. of codewords", "11001000100010001001111" "11100010101000100010011" - "00001001010101100111100" - "01100000001100000111010" - "11001100011010101000110" - "10010010111011111110101" - "10001111100110101001001" - "00100111111111111000001" - "10000001000000010011110" - "01011011011111011110010" - "11001011010001011001100" - "11101101010101010100000" - "01000111010001011001100" - "11011101011111011101011" - "00100011000000010101100" - "00100001111111111100100" - "01000000001100000100000" - "01011111010000001111000" - "11010011010101111010001" - "01001001111110100000001" - "00100001110000100011000" + "00001011010111011100100" + "01101010001110110111010" + "11000000100001011010110" + "10010010111100100011001" + "10000011100110101111101" + "00101111111111111101001" + "10001101000000010000110" + "01010111011111011110110" + "11000111010001011010000" + "11101101010101010001100" + "01000011010001011110100" + "11010101011111011010011" + "00100011000000010000100" + "00100001111111111011100" + "01001000001100000100000" + "00010011101000100100000" + "00011011001111100100101" + "01001001101010110001101" + "11100001100001011101000" "01100011101111001100010" - "01000011000010110000011" + "11000011000010110000011" }, - /* 89*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "1. 1a @ A@@ @@!!@@!!1!!!!¡a ", -1, 0, 23, 23, 0, 1, "BWIPP different encodation, less codewords (better use of B/S)", + /*153*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "1. 1a @ A@@ @@!!@@!!1!!!!¡a ", -1, 0, 23, 23, 0, 1, "BWIPP different encodation, less codewords (better use of B/S)", "11110101100111101010011" "11111111110111111001011" "00000000001000011111000" @@ -2951,36 +4809,86 @@ static void test_encode(const testCtx *const p_ctx) { "01100011101111001100010" "11000011000010110000011" }, - /* 90*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "1234\01512\015AB\015AB\015ab\015ab\01512\015ab\015!\015!\015a,a,1,a,@,", -1, 0, 27, 27, 0, 1, "BWIPP different encodation, same no. of codewords", + /*154*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "1\015AB\015ab\01512\015ab\015!", -1, 0, 23, 23, 0, 1, "Early D/L; BWIPP different encodation, early D/L also but 1 codeword longer due to bit-stuffing only", + "11000011011011100010110" + "11100100010101100110011" + "00011111000010000001011" + "01010000111100010111110" + "10101100001000000011010" + "00111111111111111111111" + "00001100000000000100111" + "00011101111111110110110" + "01001101000000010101000" + "11100101011111010110001" + "11110101010001010101000" + "01010101010101010101010" + "00001101010001010110100" + "00110101011111010101001" + "10100101000000010111011" + "00110101111111110100001" + "01010100000000000100011" + "10010111111111111110010" + "00000011101001010000110" + "00110101010110110100100" + "00110100111001110011100" + "11100000111100001101100" + "00110010011010000001000" + }, + /*155*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, 0, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "1\015AB\015ab\01512\015ab\015!", -1, 0, 23, 23, 0, 1, "1 bit longer (does not do early D/L); BWIPP: see above", + "11011010110011010001000" + "11010010110111110000100" + "00010100100010010010100" + "01001010010101001101000" + "10001100001000000011011" + "00101111111111111111000" + "00010100000000000101000" + "00100101111111110110010" + "01000101000000010101100" + "11110101011111010110000" + "11001101010001010110011" + "01010101010101010101010" + "00001101010001010101110" + "00111101011111010110011" + "10001101000000010110111" + "00001101111111110101110" + "01001100000000000110000" + "11010111111111111111000" + "11000001000001011000000" + "01100001100100011100100" + "01110001000010101100101" + "11100100110101010110001" + "10100000111011111111010" + }, + /*156*/ { BARCODE_AZTEC, UNICODE_MODE, 0, -1, -1, -1, ZINT_AZTEC_FULL, { 0, 0, "" }, "1234\01512\015AB\015AB\015ab\015ab\01512\015ab\015!\015!\015a,a,1,a,@,", -1, 0, 27, 27, 0, 1, "BWIPP different encodation, same no. of codewords (but 1 bit longer)", "110001111110000001011000000" "110000100110011001111000001" - "000100010101100100111100011" - "011000101101110000110010100" - "100101110011100110011110110" - "101101111001110100000000100" - "000010110001000000001011100" - "100001111111111111111100100" - "100001010000000000011111100" - "110100110111111111010010011" - "000101110100000001010000111" - "001010010101111101011100011" - "000100010101000101010110000" + "000100000110100101010000111" + "011011010001111001010010000" + "100110110111101010100110110" + "101111011010011000010010000" + "000011110001000000001010000" + "100001111111111111111110100" + "100011010000000000011111100" + "110110110111111111010000011" + "000100110100000001010110111" + "001010010101111101011100111" + "000101010101000101010011100" "010101010101010101010101010" - "001100110101000101011100000" - "010110110101111101010010110" - "001111010100000001010110100" - "110010110111111111010011010" - "010010110000000000010001100" - "000101011111111111111011100" - "000000001100100100000110000" - "000011011001010110111110100" - "000000100101101011001000011" + "001110110101000101011101000" + "010100110101111101010000110" + "001100010100000001010010100" + "110000110111111111010011010" + "010001110000000000010011100" + "000100011111111111111111100" + "000001001100100100000110000" + "000011001011010100011010100" + "000011011100101101100000011" "000000011100111011110010000" "111010111010001101010000000" "100001000000010010000011010" "100100100001001001000011000" }, - /* 91*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "1234\01512\015AB\015AB\015ab\015ab\01512\015ab\015!\015!\015a,a,1,a,@,", -1, 0, 27, 27, 0, 1, "BWIPP different encodation, less codewords (better use of P/S CRs)", + /*157*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "1234\01512\015AB\015AB\015ab\015ab\01512\015ab\015!\015!\015a,a,1,a,@,", -1, 0, 27, 27, 0, 1, "BWIPP different encodation, less codewords (better use of P/S CRs)", "111111110000010110000011001" "110110110010011110100000101" "000011100001000111001100111" @@ -3009,7 +4917,7 @@ static void test_encode(const testCtx *const p_ctx) { "000110100001100100110010100" "101110010000110000111111101" }, - /* 92*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 6, -1, { 0, 0, "" }, "AA!! ", -1, 0, 23, 23, 1, 1, "", + /*158*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 6, -1, { 0, 0, "" }, "AA!! ", -1, 0, 23, 23, 1, 1, "", "00110111000010111110110" "01011001101100101011001" "00101000101000011110111" @@ -3034,7 +4942,7 @@ static void test_encode(const testCtx *const p_ctx) { "00111110110110100011111" "10010010100010101110001" }, - /* 93*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 6, -1, { 0, 0, "" }, "AA!! ", -1, 0, 23, 23, 1, 1, "Same as above", + /*159*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 6, -1, { 0, 0, "" }, "AA!! ", -1, 0, 23, 23, 1, 1, "Same as above", "00110111000010111110110" "01011001101100101011001" "00101000101000011110111" @@ -3059,7 +4967,24 @@ static void test_encode(const testCtx *const p_ctx) { "00111110110110100011111" "10010010100010101110001" }, - /* 94*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\015\012", -1, 0, 15, 15, 1, 1, "", + /*160*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\015\012", -1, 0, 15, 15, 0, 1, "M/L then P/L; BWIPP: 2 P/Ss, same no. of codewords", + "000110110010111" + "110011010101001" + "101100000010111" + "101111111111110" + "111100000001110" + "101101111101110" + "110101000101101" + "110101010101100" + "000101000101001" + "001101111101100" + "101100000001111" + "110111111111100" + "110000101000000" + "011111010010100" + "101001100010000" + }, + /*161*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\015\012", -1, 0, 15, 15, 1, 1, "See above", "001100000001000" "000100001000000" "001100000010111" @@ -3076,24 +5001,7 @@ static void test_encode(const testCtx *const p_ctx) { "100100100100110" "111100100110111" }, - /* 95*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 1, -1, { 0, 0, "" }, "\015\015\012", -1, 0, 15, 15, 1, 1, "Same as above", - "001100000001000" - "000100001000000" - "001100000010111" - "011111111111111" - "001100000001111" - "001101111101100" - "100101000101110" - "000101010101111" - "000101000101000" - "011101111101101" - "001100000001101" - "100111111111110" - "110000101000000" - "100100100100110" - "111100100110111" - }, - /* 96*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\015\015\012. , ; β", -1, ZINT_WARN_USES_ECI, 19, 19, 1, 1, "", + /*162*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\015\015\012. , ; β", -1, ZINT_WARN_USES_ECI, 19, 19, 1, 1, "", "1101110010010001101" "1000110110100010001" "1101111111111001001" @@ -3114,7 +5022,7 @@ static void test_encode(const testCtx *const p_ctx) { "0100110110001110011" "0101001111001110011" }, - /* 97*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\015\015\012. , ; β", -1, ZINT_WARN_USES_ECI, 19, 19, 1, 1, "Same as above", + /*163*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\015\015\012. , ; β", -1, ZINT_WARN_USES_ECI, 19, 19, 1, 1, "Same as above", "1101110010010001101" "1000110110100010001" "1101111111111001001" @@ -3135,7 +5043,7 @@ static void test_encode(const testCtx *const p_ctx) { "0100110110001110011" "0101001111001110011" }, - /* 98*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 36, -1, { 0, 0, "" }, "Lorem ipsum dolor sit amet.", -1, 0, 151, 151, 1, 1, "Max version 151x151", + /*164*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 36, -1, { 0, 0, "" }, "Lorem ipsum dolor sit amet.", -1, 0, 151, 151, 1, 1, "Max version 151x151", "0110011000001101111010100010010110101010100001110111111001101101010000111100111111111001000011100001010000101001010001001010101001000111101011111001101" "1011011111111000001111111001010101111011100101110110001011011000101000010101101100000110011110100000010100110111100111111011011110001000110100111100100" "1110001110001111110101011110010010011011001011001000001010000010000110101010101011111110110010000010000111000010000011011110001111111001000010000000111" @@ -3288,7 +5196,7 @@ static void test_encode(const testCtx *const p_ctx) { "1000000100011011110011111011110000011111110111001111111010110101100011000111010100100010001111000101110110110100000111000011101011011101111111000011111" "1000110110001001001111110010011100000100011010101101101101101001001001011110101010011110010011011110100111100111110111111110000101100111110000101010011" }, - /* 99*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 36, -1, { 0, 0, "" }, "Lorem ipsum dolor sit amet.", -1, 0, 151, 151, 1, 1, "Same as above", + /*165*/ { BARCODE_AZTEC, UNICODE_MODE | FAST_MODE, -1, -1, -1, 36, -1, { 0, 0, "" }, "Lorem ipsum dolor sit amet.", -1, 0, 151, 151, 1, 1, "Same as above", "0110011000001101111010100010010110101010100001110111111001101101010000111100111111111001000011100001010000101001010001001010101001000111101011111001101" "1011011111111000001111111001010101111011100101110110001011011000101000010101101100000110011110100000010100110111100111111011011110001000110100111100100" "1110001110001111110101011110010010011011001011001000001010000010000110101010101011111110110010000010000111000010000011011110001111111001000010000000111" @@ -3441,7 +5349,7 @@ static void test_encode(const testCtx *const p_ctx) { "1000000100011011110011111011110000011111110111001111111010110101100011000111010100100010001111000101110110110100000111000011101011011101111111000011111" "1000110110001001001111110010011100000100011010101101101101101001001001011110101010011110010011011110100111100111110111111110000101100111110000101010011" }, - /*100*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 31, -1, { 0, 0, "" }, "aztec barcode", -1, 0, 131, 131, 1, 1, "Layers 27 example from Andre Maute, mailing list 2020-12-16", + /*166*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 31, -1, { 0, 0, "" }, "aztec barcode", -1, 0, 131, 131, 1, 1, "Layers 27 example from Andre Maute, mailing list 2020-12-16", "10101111100010101000001110000100001111111110110110010011000100100000011000101001100000001111111010100010010101111010001011001110001" "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" "10001110111111000001001111011100100100010011110010101011110111111000000110101100000110101010110000010101101110010010010101001001001" @@ -3574,7 +5482,7 @@ static void test_encode(const testCtx *const p_ctx) { "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" "10111010011101110010010111100011101001001011100010101101110000011000110101000011100000011000101000101010001110100000000100101100001" }, - /*101*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 31, -1, { 0, 0, "" }, "aztec barcode", -1, 0, 131, 131, 1, 1, "Same as above", + /*167*/ { BARCODE_AZTEC, DATA_MODE | FAST_MODE, -1, -1, -1, 31, -1, { 0, 0, "" }, "aztec barcode", -1, 0, 131, 131, 1, 1, "Same as above", "10101111100010101000001110000100001111111110110110010011000100100000011000101001100000001111111010100010010101111010001011001110001" "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" "10001110111111000001001111011100100100010011110010101011110111111000000110101100000110101010110000010101101110010010010101001001001" @@ -3707,7 +5615,7 @@ static void test_encode(const testCtx *const p_ctx) { "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010" "10111010011101110010010111100011101001001011100010101101110000011000110101000011100000011000101000101010001110100000000100101100001" }, - /*102*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 6, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 23, 23, 1, 1, "Full 2 layers example", + /*168*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 6, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 23, 23, 1, 1, "Full 2 layers example", "00000100110001011110010" "01111011110100100101111" "00001011010000010011001" @@ -3732,7 +5640,7 @@ static void test_encode(const testCtx *const p_ctx) { "11001100111110110000000" "00011010100010111001011" }, - /*103*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 7, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", -1, 0, 27, 27, 1, 1, "Full 3 layers example", + /*169*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 7, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF", -1, 0, 27, 27, 1, 1, "Full 3 layers example", "001011111011101010010010000" "011111001111111001111010110" "001111101101101100001011101" @@ -3761,7 +5669,7 @@ static void test_encode(const testCtx *const p_ctx) { "110011110110011010110100110" "101010010111000001000111010" }, - /*104*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 8, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO", -1, 0, 31, 31, 1, 1, "Full 4 layers example", + /*170*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 8, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO", -1, 0, 31, 31, 1, 1, "Full 4 layers example", "0011101110100110101001010110000" "0110000101110011101111001100111" "0000011000110010000001101101001" @@ -3794,7 +5702,7 @@ static void test_encode(const testCtx *const p_ctx) { "1111011001010111010011101111110" "1001011100001000011100011001100" }, - /*105*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 9, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 37, 37, 1, 1, "5 layers example", + /*171*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 9, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 37, 37, 1, 1, "5 layers example", "0010010100110011001011100010000111101" "0101111010111110110100101101010011001" "1010101010101010101010101010101010101" @@ -3833,7 +5741,7 @@ static void test_encode(const testCtx *const p_ctx) { "0101001010110100110101111101011110000" "0111100001000111001011001100101001111" }, - /*106*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 12, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 49, 49, 1, 1, "8 layers example", + /*172*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 12, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 49, 49, 1, 1, "8 layers example", "0001000111011100100000001101000011110011100000101" "0110100001000100011100000000110110101100010111110" "0000011110010100101100001010000010000100110110111" @@ -3884,7 +5792,7 @@ static void test_encode(const testCtx *const p_ctx) { "1001110101111010111101010001000110101110000111011" "1110001110011001010011001001010000100100101000001" }, - /*107*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 14, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 57, 57, 1, 1, "10 layers example", + /*173*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 14, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 57, 57, 1, 1, "10 layers example", "001011000011100111111010110111010001110110001110011100010" "011110001010001111111111000000100000100100110001001011111" "000101001001111111010111010010011011111011101011010110010" @@ -3943,7 +5851,7 @@ static void test_encode(const testCtx *const p_ctx) { "111101011110010100100011010101100011100110010111011001001" "001100101001110000101000010011000100001101011001011100010" }, - /*108*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 16, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 67, 67, 1, 1, "12 layers example", + /*174*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 16, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 67, 67, 1, 1, "12 layers example", "0000000100001010000100101101101010101011010000001010001111010001101" "0101010101010101010101010101010101010101010101010101010101010101010" "0001010100101010100010110000101110111100001101110000000100111010001" @@ -4012,7 +5920,7 @@ static void test_encode(const testCtx *const p_ctx) { "0101010101010101010101010101010101010101010101010101010101010101010" "0001010011000010100000100100010000011010100101110000010001110001101" }, - /*109*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 17, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 71, 71, 1, 1, "13 layers example", + /*175*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 17, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 71, 71, 1, 1, "13 layers example", "00001101010011011010101011001110001000011100011011001100101000001110111" "01110010110000100111001011100101010101000111011001110000100101100001100" "00000111000100010100111110101011100011011010001110001000101100010000011" @@ -4085,7 +5993,7 @@ static void test_encode(const testCtx *const p_ctx) { "10110010001101011101001110011001111101100101011010011110111110101111111" "10000010100001001000010000110101001001110000100011100001100110010100001" }, - /*110*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 20, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 83, 83, 1, 1, "16 layers example", + /*176*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 20, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 83, 83, 1, 1, "16 layers example", "00001011100001101001010010111011000000000010110111001100101011111010100110010011011" "00001100111101010101111001100010000000000101110110000101011100011010011001001000011" "00000001101101111000000010100101011010101011110011000000000101010100111000110101100" @@ -4170,7 +6078,7 @@ static void test_encode(const testCtx *const p_ctx) { "01101011110001110011001111101100101011010101110111110101111101011001011101100001111" "00001001000010000110101000101110000100011010001100110010100011011111011100001101110" }, - /*111*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 23, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 95, 95, 1, 1, "19 layers example", + /*177*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 23, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 95, 95, 1, 1, "19 layers example", "00010001011000001001011100000100010100011110001000101101010001101011000110101100111011100100000" "00111000100000010000111101010111001010100110100100101001100010111101100100110001001101001001000" "00110000001000100010001011100100111100110000000000111101000101101101011010001100100111011100010" @@ -4267,7 +6175,7 @@ static void test_encode(const testCtx *const p_ctx) { "10011001111011010101011010011101111110101111010101011110010010111111000001000011100100110011001" "00110101001011100000100011100010100110010100111000001111111101000000001100011000110110100110000" }, - /*112*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 24, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 101, 101, 1, 1, "20 layers example", + /*178*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 24, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 101, 101, 1, 1, "20 layers example", "00100011001001111011101000010101101000001111011011100001010111001110100001111011101010011110100110110" "01001011101010010001000100010011010011001011100001000010011001000001100110100110000010001111010101011" "10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" @@ -4370,7 +6278,7 @@ static void test_encode(const testCtx *const p_ctx) { "01011101100101011001001110111110100111101011010110010100101110001100000100001110000011101010010100001" "01100101110000100011110001100110011010011000001110100010010101000111010001001111111100001101100010111" }, - /*113*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 30, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 125, 125, 1, 1, "26 layers example", + /*179*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, -1, 30, -1, { 0, 0, "" }, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 125, 125, 1, 1, "26 layers example", "00100110111101111000100011101010001011000100011001100001000110110101101111011010100110010101111010000000001001111011011101111" "01000110110001010011111011000100001101000010100100110101101011001111101101110000100110101000000100001011010101000110110110011" "00100000111011111011100111001111100011001111101001011011011111100001111010110111111101111111011010001000100011110110101111001" @@ -4497,41 +6405,41 @@ static void test_encode(const testCtx *const p_ctx) { "11111010111101011001001001001000000000110100010101011110101011001010101011000101010010100111110010111001110100001111110111011" "10011001010011111111011111100010010011110010001010100100000110100111000110011010110111001010011011101001111100110010110010011" }, - /*114*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, -1, -1, { 1, 2, "" }, "[20]01", -1, 0, 15, 15, 1, 1, "GS1 with Structured Append", - "001101011010101" - "111100100000010" - "101100001000101" - "111111111111110" + /*180*/ { BARCODE_AZTEC, GS1_MODE, 0, -1, -1, -1, -1, { 1, 2, "" }, "[20]01", -1, 0, 15, 15, 1, 1, "GS1 with Structured Append", + "000101100111111" + "111010110110110" + "101100001000110" + "111111111111101" "111100000001101" "010101111101101" - "000101000101100" - "011101010101010" - "001101000101011" + "000101000101110" + "011101010101011" + "001101000101010" "000101111101001" "110100000001001" - "000111111111111" - "000001100010011" - "001001100010110" - "000001101000000" + "110111111111111" + "100001100010011" + "000001000010110" + "100000001000000" }, - /*115*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, -1, -1, -1, -1, -1, { 1, 2, "" }, "[20]01", -1, 0, 15, 15, 1, 1, "Same as above", - "001101011010101" - "111100100000010" - "101100001000101" - "111111111111110" + /*181*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, 0, -1, -1, -1, -1, { 1, 2, "" }, "[20]01", -1, 0, 15, 15, 1, 1, "Same as above", + "000101100111111" + "111010110110110" + "101100001000110" + "111111111111101" "111100000001101" "010101111101101" - "000101000101100" - "011101010101010" - "001101000101011" + "000101000101110" + "011101010101011" + "001101000101010" "000101111101001" "110100000001001" - "000111111111111" - "000001100010011" - "001001100010110" - "000001101000000" + "110111111111111" + "100001100010011" + "000001000010110" + "100000001000000" }, - /*116*/ { BARCODE_AZTEC, GS1_MODE, 3, -1, -1, -1, -1, { 3, 3, "AZ1" }, "[20]01", -1, 0, 19, 19, 1, 1, "GS1 with Structured Append, ECI", + /*182*/ { BARCODE_AZTEC, GS1_MODE, 3, -1, -1, -1, -1, { 3, 3, "AZ1" }, "[20]01", -1, 0, 19, 19, 1, 1, "GS1 with Structured Append, ECI", "1101011001100100101" "1000001000001010100" "1100010010010100100" @@ -4552,7 +6460,7 @@ static void test_encode(const testCtx *const p_ctx) { "0011010000001001010" "1011000010000000000" }, - /*117*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, 3, -1, -1, -1, -1, { 3, 3, "AZ1" }, "[20]01", -1, 0, 19, 19, 1, 1, "Same as above", + /*183*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, 3, -1, -1, -1, -1, { 3, 3, "AZ1" }, "[20]01", -1, 0, 19, 19, 1, 1, "Same as above", "1101011001100100101" "1000001000001010100" "1100010010010100100" @@ -4573,57 +6481,57 @@ static void test_encode(const testCtx *const p_ctx) { "0011010000001001010" "1011000010000000000" }, - /*118*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, -1, 6, -1, { 2, 4, { '1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2' } }, "[01]12345678901231[10]01", -1, ZINT_WARN_NONCOMPLIANT, 23, 23, 1, 1, "GS1 with Structured Append, full symbol", + /*184*/ { BARCODE_AZTEC, GS1_MODE, 0, -1, -1, 6, -1, { 2, 4, { '1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2' } }, "[01]12345678901231[10]01", -1, ZINT_WARN_NONCOMPLIANT, 23, 23, 1, 1, "GS1 with Structured Append, full symbol", "11100110011000010001000" "10100110000110101111010" - "11000101100000111000011" - "11100111110100011101011" - "01101100001000000011000" - "11001111111111111110111" - "11001100000000000111001" - "00001101111111110100101" - "00011101000000010111000" - "10000101011111010110101" - "01001101010001010100101" + "11001110000000001101011" + "11101110000111101100011" + "01111100001000000010100" + "11111111111111111110011" + "11101100000000000111101" + "00000101111111110100001" + "00001101000000010111100" + "10000101011111010100001" + "01000101010001010111001" "01010101010101010101010" - "10010101010001010100010" - "10111101011111010110100" - "00110101000000010110110" - "10001101111111110101001" - "10010100000000000100010" - "11000111111111111111010" - "00010000010000000000110" - "11010000010111010111011" - "11101101110011000101000" + "10011101010001010111010" + "10001101011111010110000" + "00000101000000010101010" + "10011101111111110111101" + "10101100000000000100010" + "11000111111111111110110" + "00110000110010101000010" + "11011011101110001001111" + "11010000010011010110100" "01011110101100000101110" "00010001000011011101100" }, - /*119*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, -1, -1, -1, 6, -1, { 2, 4, { '1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2' } }, "[01]12345678901231[10]01", -1, ZINT_WARN_NONCOMPLIANT, 23, 23, 1, 1, "Same as above", + /*185*/ { BARCODE_AZTEC, GS1_MODE | FAST_MODE, 0, -1, -1, 6, -1, { 2, 4, { '1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2' } }, "[01]12345678901231[10]01", -1, ZINT_WARN_NONCOMPLIANT, 23, 23, 1, 1, "Same as above", "11100110011000010001000" "10100110000110101111010" - "11000101100000111000011" - "11100111110100011101011" - "01101100001000000011000" - "11001111111111111110111" - "11001100000000000111001" - "00001101111111110100101" - "00011101000000010111000" - "10000101011111010110101" - "01001101010001010100101" + "11001110000000001101011" + "11101110000111101100011" + "01111100001000000010100" + "11111111111111111110011" + "11101100000000000111101" + "00000101111111110100001" + "00001101000000010111100" + "10000101011111010100001" + "01000101010001010111001" "01010101010101010101010" - "10010101010001010100010" - "10111101011111010110100" - "00110101000000010110110" - "10001101111111110101001" - "10010100000000000100010" - "11000111111111111111010" - "00010000010000000000110" - "11010000010111010111011" - "11101101110011000101000" + "10011101010001010111010" + "10001101011111010110000" + "00000101000000010101010" + "10011101111111110111101" + "10101100000000000100010" + "11000111111111111110110" + "00110000110010101000010" + "11011011101110001001111" + "11010000010011010110100" "01011110101100000101110" "00010001000011011101100" }, - /*120*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "j>\350\255\362\357\027\231: S\224\237\303\035\207", -1, 0, 19, 19, 1, 899, "BWIP-JS #354 1st example", + /*186*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "j>\350\255\362\357\027\231: S\224\237\303\035\207", -1, 0, 19, 19, 1, 899, "BWIP-JS #354 1st example", "1101010010011101000" "1100111010011110011" "1001101000000110101" @@ -4644,7 +6552,7 @@ static void test_encode(const testCtx *const p_ctx) { "1110110001011011110" "0001111011111000101" }, - /*121*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "j>\350\255\362\357\027\231: S\224\237\303\035\207", -1, 0, 19, 19, 0, 899, "BWIP-JS #354 1st example; BWIPP different encodation, 3 codewords shorter (see above)", + /*187*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "j>\350\255\362\357\027\231: S\224\237\303\035\207", -1, 0, 19, 19, 0, 899, "BWIP-JS #354 1st example; BWIPP different encodation, 3 codewords shorter (see above)", "1111001111001101001" "1011001011010001101" "0010010101011000011" @@ -4665,7 +6573,7 @@ static void test_encode(const testCtx *const p_ctx) { "0000111100101101101" "1011101101111100011" }, - /*122*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\035\316\244. D\004\275\031}\244\311\030\035>t", -1, 0, 19, 19, 1, 899, "BWIP-JS #354 2nd example", + /*188*/ { BARCODE_AZTEC, DATA_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\035\316\244. D\004\275\031}\244\311\030\035>t", -1, 0, 19, 19, 1, 899, "BWIP-JS #354 2nd example", "1110110111000100010" "1110111001100010100" "1010011100101001011" @@ -4686,7 +6594,7 @@ static void test_encode(const testCtx *const p_ctx) { "0111010000000000111" "0001000001010001010" }, - /*123*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\035\316\244. D\004\275\031}\244\311\030\035>t", -1, 0, 19, 19, 0, 899, "BWIP-JS #354 2nd example; BWIPP different encodation", + /*189*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1, 2, -1, { 0, 0, "" }, "\035\316\244. D\004\275\031}\244\311\030\035>t", -1, 0, 19, 19, 0, 899, "BWIP-JS #354 2nd example; BWIPP same as above", "1110001010011101111" "1001010010100100110" "1100010011111011111" @@ -4707,7 +6615,7 @@ static void test_encode(const testCtx *const p_ctx) { "0001011110011100101" "0000001100111001111" }, - /*124*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "0", -1, 0, 11, 11, 1, 1, "ISO/IEC 24778:2008 Figure A.1 (1st)", + /*190*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "0", -1, 0, 11, 11, 1, 1, "ISO/IEC 24778:2008 Figure A.1 (1st)", "11101010101" "11111111111" "01000000010" @@ -4720,7 +6628,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00101010100" }, - /*125*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "25", -1, 0, 11, 11, 1, 1, "ISO/IEC 24778:2008 Figure A.1 (2nd)", + /*191*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "25", -1, 0, 11, 11, 1, 1, "ISO/IEC 24778:2008 Figure A.1 (2nd)", "11101100101" "11111111111" "01000000011" @@ -4733,7 +6641,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00100100000" }, - /*126*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "125", -1, 0, 11, 11, 1, 1, "ISO/IEC 24778:2008 Figure A.1 (3rd)", + /*192*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "125", -1, 0, 11, 11, 1, 1, "ISO/IEC 24778:2008 Figure A.1 (3rd)", "11110101101" "11111111111" "11000000011" @@ -4746,7 +6654,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00111101000" }, - /*127*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "255", -1, 0, 11, 11, 1, 1, "ISO/IEC 24778:2008 Figure A.1 (4th)", + /*193*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "255", -1, 0, 11, 11, 1, 1, "ISO/IEC 24778:2008 Figure A.1 (4th)", "11010101001" "11111111111" "01000000011" @@ -4759,7 +6667,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00110011100" }, - /*128*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "1", -1, 0, 11, 11, 1, 1, "", + /*194*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "1", -1, 0, 11, 11, 1, 1, "", "11101010101" "11111111111" "11000000011" @@ -4772,7 +6680,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00100110100" }, - /*129*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "15", -1, 0, 11, 11, 1, 1, "", + /*195*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "15", -1, 0, 11, 11, 1, 1, "", "11101001001" "11111111111" "11000000011" @@ -4785,7 +6693,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00001111100" }, - /*130*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "16", -1, 0, 11, 11, 1, 1, "", + /*196*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "16", -1, 0, 11, 11, 1, 1, "", "11101110101" "11111111111" "11000000010" @@ -4798,7 +6706,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00111100100" }, - /*131*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "63", -1, 0, 11, 11, 1, 1, "", + /*197*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "63", -1, 0, 11, 11, 1, 1, "", "11100101001" "11111111111" "11000000011" @@ -4811,7 +6719,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00101010000" }, - /*132*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "64", -1, 0, 11, 11, 1, 1, "", + /*198*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "64", -1, 0, 11, 11, 1, 1, "", "11111010101" "11111111111" "01000000010" @@ -4824,7 +6732,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00111011100" }, - /*133*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "65", -1, 0, 11, 11, 1, 1, "", + /*199*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "65", -1, 0, 11, 11, 1, 1, "", "11111010101" "11111111111" "11000000011" @@ -4837,7 +6745,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00110111100" }, - /*134*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "126", -1, 0, 11, 11, 1, 1, "", + /*200*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "126", -1, 0, 11, 11, 1, 1, "", "11110101001" "11111111111" "01000000010" @@ -4850,7 +6758,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00110111000" }, - /*135*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "127", -1, 0, 11, 11, 1, 1, "", + /*201*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "127", -1, 0, 11, 11, 1, 1, "", "11110101001" "11111111111" "11000000011" @@ -4863,7 +6771,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00111011000" }, - /*136*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "128", -1, 0, 11, 11, 1, 1, "", + /*202*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "128", -1, 0, 11, 11, 1, 1, "", "11001010101" "11111111111" "11000000010" @@ -4876,7 +6784,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00100010000" }, - /*137*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "191", -1, 0, 11, 11, 1, 1, "", + /*203*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "191", -1, 0, 11, 11, 1, 1, "", "11000101001" "11111111111" "01000000011" @@ -4889,7 +6797,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00100010100" }, - /*138*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "192", -1, 0, 11, 11, 1, 1, "", + /*204*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "192", -1, 0, 11, 11, 1, 1, "", "11011010101" "11111111111" "11000000010" @@ -4902,7 +6810,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00110011000" }, - /*139*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "225", -1, 0, 11, 11, 1, 1, "", + /*205*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "225", -1, 0, 11, 11, 1, 1, "", "11010010101" "11111111111" "11000000011" @@ -4915,7 +6823,7 @@ static void test_encode(const testCtx *const p_ctx) { "01111111111" "00001100100" }, - /*140*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "254", -1, 0, 11, 11, 1, 1, "", + /*206*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, -1, -1, -1, { 0, 0, "" }, "254", -1, 0, 11, 11, 1, 1, "", "11010101001" "11111111111" "11000000010" @@ -4964,7 +6872,7 @@ static void test_encode(const testCtx *const p_ctx) { if (p_ctx->generate) { printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %s, { %d, %d, \"%.32s\" }, \"%s\", %d," " %s, %d, %d, %d, %d, \"%s\",\n", - i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].eci, + i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), symbol->eci, testUtilOutputOptionsName(data[i].output_options), data[i].option_1, data[i].option_2, testUtilOption3Name(data[i].symbology, data[i].option_3), data[i].structapp.index, data[i].structapp.count, data[i].structapp.id, @@ -5202,7 +7110,7 @@ static void test_encode_segs(const testCtx *const p_ctx) { "1000001011111001010" "0100000000011100111" }, - /* 8*/ { UNICODE_MODE, -1, -1, -1, -1, { { TU("product:Google Pixel 4a - 128 GB of Storage - Black;price:$439.97"), -1, 3 }, { TU("品名:Google 谷歌 Pixel 4a -128 GB的存储空间-黑色;零售价:¥3149.79"), -1, 29 }, { TU("Produkt:Google Pixel 4a - 128 GB Speicher - Schwarz;Preis:444,90 €"), -1, 17 } }, 0, 49, 49, 0, "AIM ITS/04-023:2022 Annex A example; BWIPP different encodation, same no. of codewords", + /* 8*/ { UNICODE_MODE, -1, -1, -1, -1, { { TU("product:Google Pixel 4a - 128 GB of Storage - Black;price:$439.97"), -1, 3 }, { TU("品名:Google 谷歌 Pixel 4a -128 GB的存储空间-黑色;零售价:¥3149.79"), -1, 29 }, { TU("Produkt:Google Pixel 4a - 128 GB Speicher - Schwarz;Preis:444,90 €"), -1, 17 } }, 0, 49, 49, 0, "AIM ITS/04-023:2022 Annex A example; BWIPP different encodation, same no. of codewords (only placement of L/L differs)", "0010101110000010101011011001100001001001100001010" "0010100001100010000000110000110010000000010010001" "0001110011100101000100111100111110001111101010101" @@ -5547,38 +7455,38 @@ static void test_encode_segs(const testCtx *const p_ctx) { "00000000010011100110111" }, /* 20*/ { GS1_MODE, -1, -1, -1, -1, { { TU("[20]01"), -1, 0 }, { TU(""), 0, 0 }, { TU(""), 0, 0 } }, 0, 15, 15, 1, "GS1 with single seg ok", - "000100111011111" - "000101001110001" - "001100000100110" - "011111111111111" + "000111011110100" + "111001101011110" + "111100000100100" + "001111111111111" "001100000001110" - "000101111101000" + "000101111101010" "011101000101000" "000101010101001" - "010101000101100" - "111101111101010" - "100100000001100" - "010111111111110" - "000011011110011" - "000001100010000" - "010101010100011" + "000101000101101" + "011101111101001" + "000100000001111" + "100111111111111" + "000011011110000" + "101011011010111" + "000001100110010" }, /* 21*/ { GS1_MODE | FAST_MODE, -1, -1, -1, -1, { { TU("[20]01"), -1, 0 }, { TU(""), 0, 0 }, { TU(""), 0, 0 } }, 0, 15, 15, 1, "Same as above", - "000100111011111" - "000101001110001" - "001100000100110" - "011111111111111" + "000111011110100" + "111001101011110" + "111100000100100" + "001111111111111" "001100000001110" - "000101111101000" + "000101111101010" "011101000101000" "000101010101001" - "010101000101100" - "111101111101010" - "100100000001100" - "010111111111110" - "000011011110011" - "000001100010000" - "010101010100011" + "000101000101101" + "011101111101001" + "000100000001111" + "100111111111111" + "000011011110000" + "101011011010111" + "000001100110010" }, }; const int data_size = ARRAY_SIZE(data); @@ -6729,6 +8637,8 @@ int main(int argc, char *argv[]) { testFunction funcs[] = { /* name, func */ { "test_large", test_large }, + { "test_bs", test_bs }, + { "test_many_states", test_many_states }, { "test_options", test_options }, { "test_encode", test_encode }, { "test_encode_segs", test_encode_segs }, diff --git a/backend/tests/test_dotcode.c b/backend/tests/test_dotcode.c index 66950f78..b630fdd5 100644 --- a/backend/tests/test_dotcode.c +++ b/backend/tests/test_dotcode.c @@ -52,7 +52,7 @@ static void test_large(const testCtx *const p_ctx) { /* 3*/ { 200, '0', 2974, ZINT_ERROR_INVALID_OPTION, "Error 735: Resulting symbol height '203' is too large (maximum 200)", 1, 1, "" }, /* Width > 200 also */ /* 4*/ { 200, 'A', 1470, 0, "", 1, 1, "" }, /* 5*/ { 200, 'A', 1471, ZINT_ERROR_INVALID_OPTION, "Error 735: Resulting symbol height '201' is too large (maximum 200)", 1, 1, "" }, - /* 6*/ { 200, '\240', 1225, 0, "", 1, 899, "" }, + /* 6*/ { 200, '\240', 1225, 0, "", 0, 899, "BWIPP limit now 4000 (== 1000 with caret escaping) TODO: suggest change to BWIPP" }, /* 7*/ { 200, '\240', 1226, ZINT_ERROR_INVALID_OPTION, "Error 735: Resulting symbol height '201' is too large (maximum 200)", 1, 899, "" }, /* 8*/ { 200, '0', 1, 0, "", 1, 1, "" }, /* Padding codewords 35 - probably max */ /* 9*/ { 200, '0', 2, 0, "", 1, 1, "" }, /* Padding codewords 35 */ diff --git a/backend/tests/test_mailmark.c b/backend/tests/test_mailmark.c index d58bd23e..2160fd09 100644 --- a/backend/tests/test_mailmark.c +++ b/backend/tests/test_mailmark.c @@ -642,6 +642,40 @@ static void test_2d_encode(const testCtx *const p_ctx) { "10111101100000001010110001010110" "11111111111111111111111111111111" }, + /* 6*/ { 10, "JGB 010100000700009001B707RH1A 0SN35XX é", 0, 32, 32, 1, "", + "10101010101010101010101010101010" + "11000001010001111001101100001111" + "10100101110000101011111110000000" + "10101000010110011001101011000101" + "10001100111000101111000111011110" + "10011100011000011100101000100101" + "11001111001000101010010010011110" + "10100101011000111100001100101111" + "10101111010111101100111100110100" + "11001001100100111001110000010111" + "11001000001001001101001111011110" + "11010000001111111011011101101101" + "11001000010000101001101010011010" + "11010111000101011111111101111111" + "10111101100011101110001100110100" + "11111111111111111111111111111111" + "10101010101010101010101010101010" + "11011101100000011000000001110001" + "11110000111100101000011000101010" + "11001011110010011000011101110001" + "11011111000101001011100101011100" + "10010101101100011100010000011101" + "10011001101011101110100111101000" + "11101010110010111001111100100101" + "10011011111101001000101111110100" + "10011101010101111111111000111101" + "11100001010010101011001010000000" + "10011010101011111000011010001001" + "11101001100100001101010001011000" + "10001001100100011011110101100101" + "11001011100001001010111101010100" + "11111111111111111111111111111111" + }, }; const int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -714,7 +748,7 @@ static void test_2d_encode(const testCtx *const p_ctx) { char modules_dump[144 * 144 + 1]; assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump == -1\n", i); - ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, 1 /*zxingcpp_cmp*/, cmp_buf, + ret = testUtilZXingCPP(i, symbol, data[i].data, length, modules_dump, 3 /*zxingcpp_cmp*/, cmp_buf, sizeof(cmp_buf), &cmp_len); assert_zero(ret, "i:%d %s testUtilZXingCPP ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret); diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index bc6d00d7..42e7095b 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -4118,9 +4118,9 @@ static const char *testUtilZXingCPPCharSet(int eci) { /* Run "zxingcppdecoder", returning result in `buffer` */ int testUtilZXingCPP(int index, struct zint_symbol *symbol, const char *source, const int length, const char *bits, const int zxingcpp_cmp, char *buffer, const int buffer_size, int *p_cmp_len) { - static const char cmd_fmt[] = "zxingcppdecoder -textonly -format %s -width %d -bits '%s'"; - static const char opts_cmd_fmt[] = "zxingcppdecoder -textonly -format %s -opts '%s' -width %d -bits '%s'"; - static const char cs_cmd_fmt[] = "zxingcppdecoder -textonly -format %s -charset %s -width %d -bits '%s'"; + static const char cmd_fmt[] = "zxingcppdecoder -textonly -format %s -width %d -bits %s"; + static const char opts_cmd_fmt[] = "zxingcppdecoder -textonly -format %s -opts '%s' -width %d -bits %s"; + static const char cs_cmd_fmt[] = "zxingcppdecoder -textonly -format %s -charset %s -width %d -bits %s"; const int bits_len = (int) strlen(bits); const int width = symbol->width; diff --git a/backend/tests/testcommon.h b/backend/tests/testcommon.h index a8e23d09..8ec16eb2 100644 --- a/backend/tests/testcommon.h +++ b/backend/tests/testcommon.h @@ -48,6 +48,7 @@ extern "C" { #define ZINT_DEBUG_TEST_PERFORMANCE 256 #define ZINT_DEBUG_TEST_ZXINGCPP 512 #define ZINT_DEBUG_TEST_BWIPP_ZXINGCPP 1024 +#define ZINT_DEBUG_TEST_AZTEC_SKIP_ALL 2048 #ifdef ZINT_SANITIZEM /* Suppress clang -fsanitize=memory false positives */ #define ZINT_TESTUTIL_SANITIZEM_INIT = {0} diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index 2ca128fc53975702554d051fd47b248fc70f4d18..530a05e60cbf1a4bffd14bb5949868836788fb58 100644 GIT binary patch literal 157128 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
qt~H@1O&-2FemC*7Rlj? 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 XD;9XQ^EsR|u0gse9d?4q4X6XbKsvmzx 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�_Qm2f)YPl&-} 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 literal 155288 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 pt3iShV`vHkSInVRJ)?a>DP1yo9k9U?d;D6} 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 T^>X^=vBYQl0ssI200dcD`jr^I diff --git a/backend/tests/tools/run_zxingcpp_tests.sh b/backend/tests/tools/run_zxingcpp_tests.sh index 86bdaf99..cb955972 100755 --- a/backend/tests/tools/run_zxingcpp_tests.sh +++ b/backend/tests/tools/run_zxingcpp_tests.sh @@ -16,6 +16,8 @@ function run_zxingcpp_test() { run_zxingcpp_test "test_2of5" "encode" run_zxingcpp_test "test_aztec" "large" +run_zxingcpp_test "test_aztec" "bs" +run_zxingcpp_test "test_aztec" "many_states" run_zxingcpp_test "test_aztec" "encode" run_zxingcpp_test "test_aztec" "encode_segs" run_zxingcpp_test "test_aztec" "fuzz" diff --git a/docs/README b/docs/README index ba5c9bf0..09531081 100644 --- a/docs/README +++ b/docs/README @@ -1,12 +1,12 @@ -% docs/README 2025-12-09 +% docs/README 2026-03-11 For generation of "docs/manual.html", "docs/manual.pdf" and "docs/manual.txt" from "manual.pmd" and man page "docs/zint.1" from "docs/zint.1.pmd" using pandoc >= 3.8.2. On Ubuntu/Debian (tested on Ubuntu 22.04 and Ubuntu 24.04) - wget https://github.com/jgm/pandoc/releases/download/3.8.3/pandoc-3.8.3-1-amd64.deb - sudo dpkg -i pandoc-3.8.3-1-amd64.deb + wget https://github.com/jgm/pandoc/releases/download/3.9/pandoc-3.9-1-amd64.deb + sudo dpkg -i pandoc-3.9-1-amd64.deb sudo apt install librsvg2-bin sudo apt install texlive-xetex sudo apt install texlive-lang-cjk @@ -15,9 +15,9 @@ On Ubuntu/Debian (tested on Ubuntu 22.04 and Ubuntu 24.04) On Fedora (tested on Fedora Linux 38 (Workstation Edition) and Fedora Linux 42 (Workstation Edition)) - wget https://github.com/jgm/pandoc/releases/download/3.8.3/pandoc-3.8.3-linux-amd64.tar.gz - tar xf pandoc-3.8.3-linux-amd64.tar.gz - sudo mv -i pandoc-3.8.3/bin/pandoc /usr/local/bin + wget https://github.com/jgm/pandoc/releases/download/3.9/pandoc-3.9-linux-amd64.tar.gz + tar xf pandoc-3.9-linux-amd64.tar.gz + sudo mv -i pandoc-3.9/bin/pandoc /usr/local/bin sudo dnf install librsvg2-tools.x86_64 sudo dnf install texlive-xetex sudo dnf install texlive-ctex.noarch diff --git a/docs/manual.html b/docs/manual.html index a9d74a33..4b35e6af 100644 --- a/docs/manual.html +++ b/docs/manual.html @@ -334,7 +334,7 @@

Zint Barcode Generator and Zint Barcode Studio User Manual

Version 2.16.0.9

-

February 2026

+

March 2026