AZTEC #190 count only B-1 bits; #191 suppress valgrind, clang-tidy warnings

This commit is contained in:
gitlost 2020-04-28 13:45:36 +01:00
parent 737ffd4ce0
commit 194a30e6c5
2 changed files with 55 additions and 39 deletions

View File

@ -249,7 +249,7 @@ static int aztec_text_process(const unsigned char source[], const size_t src_len
// Reduce two letter combinations to one codeword marked as [abcd] in Punct mode // Reduce two letter combinations to one codeword marked as [abcd] in Punct mode
i = 0; i = 0;
j = 0; j = 0;
do { while (i < (int) src_len) {
if ((source[i] == 13) && (source[i + 1] == 10)) { // CR LF if ((source[i] == 13) && (source[i + 1] == 10)) { // CR LF
reduced_source[j] = 'a'; reduced_source[j] = 'a';
reduced_encode_mode[j] = encode_mode[i]; reduced_encode_mode[j] = encode_mode[i];
@ -272,7 +272,7 @@ static int aztec_text_process(const unsigned char source[], const size_t src_len
i++; i++;
} }
j++; j++;
} while (i < (int) src_len); }
reduced_length = j; reduced_length = j;
@ -449,7 +449,7 @@ static int aztec_text_process(const unsigned char source[], const size_t src_len
if (reduced_encode_mode[i] != current_mode) { if (reduced_encode_mode[i] != current_mode) {
for (count = 0; ((i + count) <= reduced_length) && (reduced_encode_mode[i + count] == reduced_encode_mode[i]); count++); for (count = 0; ((i + count) < reduced_length) && (reduced_encode_mode[i + count] == reduced_encode_mode[i]); count++);
next_mode = get_next_mode(reduced_encode_mode, reduced_length, i); next_mode = get_next_mode(reduced_encode_mode, reduced_length, i);
if (reduced_encode_mode[i] == 'P') { if (reduced_encode_mode[i] == 'P') {
@ -1125,30 +1125,31 @@ INTERNAL int aztec(struct zint_symbol *symbol, unsigned char source[], const siz
j = 0; j = 0;
count = 0; count = 0;
for (i = 0; i < data_length; i++) { for (i = 0; i < data_length; i++) {
adjusted_string[j] = binary_string[i];
j++;
if (binary_string[i] == '1') {
count++;
}
if ((j + 1) % codeword_size == 0) { if ((j + 1) % codeword_size == 0) {
// Last bit of codeword // Last bit of codeword
/* 7.3.1.2 "whenever the first B-1 bits ... are all “0”s, then a dummy “1” is inserted..."
* "Similarly a message codeword that starts with B-1 “1”s has a dummy “0” inserted..." */
if (count == (codeword_size - 1)) { if (count == (codeword_size - 1)) {
// Codeword of all '1's // Codeword of B-1 '1's
adjusted_string[j] = '0'; adjusted_string[j] = '0';
j++; j++;
} }
if (count == 0) { if (count == 0) {
// Codeword of all '0's // Codeword of B-1 '0's
adjusted_string[j] = '1'; adjusted_string[j] = '1';
j++; j++;
} }
count = 0; count = 0;
} else if (binary_string[i] == '1') { /* Skip B so only counting B-1 */
count++;
} }
adjusted_string[j] = binary_string[i];
j++;
} }
adjusted_string[j] = '\0'; adjusted_string[j] = '\0';
adjusted_length = j; adjusted_length = j;
@ -1177,17 +1178,16 @@ INTERNAL int aztec(struct zint_symbol *symbol, unsigned char source[], const siz
adjusted_string[adjusted_length - 1] = '0'; adjusted_string[adjusted_length - 1] = '0';
} }
/*
if (debug) { if (debug) {
printf("Codewords:\n"); printf("Codewords:\n");
for (i = 0; i < (adjusted_length / codeword_size); i++) { for (i = 0; i < (adjusted_length / codeword_size); i++) {
for (j = 0; j < codeword_size; j++) { for (j = 0; j < codeword_size; j++) {
printf("%c", adjusted_string[(i * codeword_size) + j]); printf("%c", adjusted_string[(i * codeword_size) + j]);
} }
printf("\n"); printf(" ");
} }
printf("\n");
} }
*/
} while (adjusted_length > data_maxsize); } while (adjusted_length > data_maxsize);
/* This loop will only repeat on the rare occasions when the rule about not having all 1s or all 0s /* This loop will only repeat on the rare occasions when the rule about not having all 1s or all 0s
@ -1228,34 +1228,32 @@ INTERNAL int aztec(struct zint_symbol *symbol, unsigned char source[], const siz
j = 0; j = 0;
count = 0; count = 0;
for (i = 0; i < data_length; i++) { for (i = 0; i < data_length; i++) {
adjusted_string[j] = binary_string[i];
j++;
if (binary_string[i] == '1') {
count++;
}
if ((j + 1) % codeword_size == 0) { if ((j + 1) % codeword_size == 0) {
// Last bit of codeword // Last bit of codeword
if (count == (codeword_size - 1)) { if (count == (codeword_size - 1)) {
// Codeword of all '1's // Codeword of B-1 '1's
adjusted_string[j] = '0'; adjusted_string[j] = '0';
j++; j++;
} }
if (count == 0) { if (count == 0) {
// Codeword of all '0's // Codeword of B-1 '0's
adjusted_string[j] = '1'; adjusted_string[j] = '1';
j++; j++;
} }
count = 0; count = 0;
} else if (binary_string[i] == '1') { /* Skip B so only counting B-1 */
count++;
} }
adjusted_string[j] = binary_string[i];
j++;
} }
adjusted_string[j] = '\0'; adjusted_string[j] = '\0';
adjusted_length = j; adjusted_length = j;
adjustment_size = adjusted_length - data_length;
remainder = adjusted_length % codeword_size; remainder = adjusted_length % codeword_size;
@ -1297,8 +1295,9 @@ INTERNAL int aztec(struct zint_symbol *symbol, unsigned char source[], const siz
for (j = 0; j < codeword_size; j++) { for (j = 0; j < codeword_size; j++) {
printf("%c", adjusted_string[(i * codeword_size) + j]); printf("%c", adjusted_string[(i * codeword_size) + j]);
} }
printf("\n"); printf(" ");
} }
printf("\n");
} }
} }

View File

@ -129,7 +129,24 @@ static void test_encode(void)
"011000011011010" "011000011011010"
"111001101100000" "111001101100000"
}, },
/* 3*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", 0, 53, 53, "**NOT SAME** ISO/IEC 24778:2008 Figure I.1 (left) TODO: investigate", /* 3*/ { BARCODE_AZTEC, UNICODE_MODE, -1, 1, "Code 2D!", 0, 15, 15, "ISO/IEC 24778:2008 Figure G.2; specify size",
"000110001100000"
"000000110000010"
"101100001000101"
"011111111111100"
"111100000001101"
"000101111101100"
"100101000101111"
"001101010101001"
"001101000101010"
"010101111101001"
"100100000001011"
"100111111111101"
"010001100010010"
"011000011011010"
"111001101100000"
},
/* 4*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", 0, 53, 53, "**NOT SAME** ISO/IEC 24778:2008 Figure I.1 (left) TODO: investigate",
"00010101011010101010101010110101010101010110101010101" "00010101011010101010101010110101010101010110101010101"
"00101010100101010101010101001010101010101001010101010" "00101010100101010101010101001010101010101001010101010"
"11100101011010101010101010110101010101010110101010110" "11100101011010101010101010110101010101010110101010110"
@ -184,7 +201,7 @@ static void test_encode(void)
"01010101010010101010101010010101010101010100101010110" "01010101010010101010101010010101010101010100101010110"
"10101010101101010101010101101010101010101011010101001" "10101010101101010101010101101010101010101011010101001"
}, },
/* 4*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333", 0, 53, 53, "**NOT SAME** ISO/IEC 24778:2008 Figure I.1 (right) TODO: investigate", /* 5*/ { BARCODE_AZTEC, UNICODE_MODE, -1, -1, "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333", 0, 53, 53, "**NOT SAME** ISO/IEC 24778:2008 Figure I.1 (right) TODO: investigate",
"00111111111111111111111111111111111111111111111111111" "00111111111111111111111111111111111111111111111111111"
"00000000000000000000000000000000000000000000000000000" "00000000000000000000000000000000000000000000000000000"
"11101111111111111111111111111111111111111111111111101" "11101111111111111111111111111111111111111111111111101"
@ -239,7 +256,7 @@ static void test_encode(void)
"00000000000000000000000000000000000000000000000000001" "00000000000000000000000000000000000000000000000000001"
"11111111111111111111111111111111111111111111111111101" "11111111111111111111111111111111111111111111111111101"
}, },
/* 5*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, "[01]03453120000011[17]120508[10]ABCD1234[410]9501101020917", 0, 23, 23, "#189 Follow embedded FLG(n) with FLG(0)", /* 6*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, "[01]03453120000011[17]120508[10]ABCD1234[410]9501101020917", 0, 23, 23, "#189 Follow embedded FLG(n) with FLG(0)",
"00100000101111000100100" "00100000101111000100100"
"00011101100110001010000" "00011101100110001010000"
"00000111000111101011011" "00000111000111101011011"
@ -264,7 +281,7 @@ static void test_encode(void)
"00010001010101010101011" "00010001010101010101011"
"11101100000000000010110" "11101100000000000010110"
}, },
/* 6*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, "[01]95012345678903[3103]000123", 0, 19, 19, "#189 Follow embedded FLG(n) with FLG(0)", /* 7*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, "[01]95012345678903[3103]000123", 0, 19, 19, "#189 Follow embedded FLG(n) with FLG(0)",
"0000000100001010101" "0000000100001010101"
"0001101111011000000" "0001101111011000000"
"0111100100010110100" "0111100100010110100"
@ -285,7 +302,7 @@ static void test_encode(void)
"1000110111011000101" "1000110111011000101"
"1010100000101101001" "1010100000101101001"
}, },
/* 7*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, "[01]04610044273252[21]LRFX)k<C7ApWJ[91]003A[92]K8rNAqdvjmdxsmCVuj3FhaoNzQuq7Uff0sHXfz1TT/doiMaGQqNF+VPwMvwVbm1fxjzuDt6jxLCcc8o/tqbEDA==", 0, 45, 45, "#189 Follow embedded FLG(n) with FLG(0)", /* 8*/ { BARCODE_AZTEC, GS1_MODE, -1, -1, "[01]04610044273252[21]LRFX)k<C7ApWJ[91]003A[92]K8rNAqdvjmdxsmCVuj3FhaoNzQuq7Uff0sHXfz1TT/doiMaGQqNF+VPwMvwVbm1fxjzuDt6jxLCcc8o/tqbEDA==", 0, 45, 45, "#189 Follow embedded FLG(n) with FLG(0)",
"000000101110011010101010010110011000001010111" "000000101110011010101010010110011000001010111"
"000110001111011100111101101110110000000000011" "000110001111011100111101101110110000000000011"
"001000101100101011000011111111101110111010101" "001000101100101011000011111111101110111010101"
@ -332,7 +349,7 @@ static void test_encode(void)
"000011010110101110000101110100000111000011010" "000011010110101110000101110100000111000011010"
"101001110101010110100011010010001111001101101" "101001110101010110100011010010001111001101101"
}, },
/* 8*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, "0", 0, 11, 11, "ISO/IEC 24778:2008 Figure A.1 (1st)", /* 9*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, "0", 0, 11, 11, "ISO/IEC 24778:2008 Figure A.1 (1st)",
"11101010101" "11101010101"
"11111111111" "11111111111"
"01000000010" "01000000010"
@ -345,7 +362,7 @@ static void test_encode(void)
"01111111111" "01111111111"
"00101010100" "00101010100"
}, },
/* 9*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, "25", 0, 11, 11, "ISO/IEC 24778:2008 Figure A.1 (2nd)", /* 10*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, "25", 0, 11, 11, "ISO/IEC 24778:2008 Figure A.1 (2nd)",
"11101100101" "11101100101"
"11111111111" "11111111111"
"01000000011" "01000000011"
@ -358,7 +375,7 @@ static void test_encode(void)
"01111111111" "01111111111"
"00100100000" "00100100000"
}, },
/* 10*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, "125", 0, 11, 11, "ISO/IEC 24778:2008 Figure A.1 (3rd)", /* 11*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, "125", 0, 11, 11, "ISO/IEC 24778:2008 Figure A.1 (3rd)",
"11110101101" "11110101101"
"11111111111" "11111111111"
"11000000011" "11000000011"
@ -371,7 +388,7 @@ static void test_encode(void)
"01111111111" "01111111111"
"00111101000" "00111101000"
}, },
/* 11*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, "255", 0, 11, 11, "ISO/IEC 24778:2008 Figure A.1 (4th)", /* 12*/ { BARCODE_AZRUNE, UNICODE_MODE, -1, -1, "255", 0, 11, 11, "ISO/IEC 24778:2008 Figure A.1 (4th)",
"11110101001" "11110101001"
"11111111111" "11111111111"
"01000000011" "01000000011"