mirror of
https://git.code.sf.net/p/zint/code
synced 2026-06-09 23:23:36 +00:00
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
This commit is contained in:
+797
-713
File diff suppressed because it is too large
Load Diff
+102
-34
@@ -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,
|
||||
|
||||
+7
-3
@@ -1,7 +1,7 @@
|
||||
/* dmatrix.c Handles Data Matrix ECC 200 symbols */
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2009-2025 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2009-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
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);
|
||||
|
||||
+3
-1
@@ -1,7 +1,7 @@
|
||||
/* pdf417.c - Handles PDF417 stacked symbology */
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2008-2025 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2008-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
Portions Copyright (C) 2004 Grandzebu
|
||||
Bug Fixes thanks to KL Chin <klchin@users.sourceforge.net>
|
||||
|
||||
@@ -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);
|
||||
|
||||
+2659
-749
File diff suppressed because it is too large
Load Diff
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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}
|
||||
|
||||
Binary file not shown.
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user