mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
DATAMATRIX/CODEONE: Use LCM in look ahead tests to avoid floats (#228)
This commit is contained in:
parent
368633bda4
commit
37fac73cb1
106
backend/code1.c
106
backend/code1.c
@ -147,37 +147,53 @@ static int is_step_Q4bi_applicable(const unsigned char source[], const int sourc
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Character counts are multiplied by this, so as to be whole integer divisible by 2 and 3 */
|
||||||
|
#define C1_MULT 6
|
||||||
|
|
||||||
|
#define C1_MULT_1_DIV_2 3
|
||||||
|
#define C1_MULT_2_DIV_3 4
|
||||||
|
#define C1_MULT_1 6
|
||||||
|
#define C1_MULT_4_DIV_3 8
|
||||||
|
#define C1_MULT_2 12
|
||||||
|
#define C1_MULT_8_DIV_3 16
|
||||||
|
#define C1_MULT_3 18
|
||||||
|
#define C1_MULT_10_DIV_3 20
|
||||||
|
#define C1_MULT_13_DIV_3 26
|
||||||
|
|
||||||
|
#define C1_MULT_MINUS_1 5
|
||||||
|
#define C1_MULT_CEIL(n) ((((n) + C1_MULT_MINUS_1) / C1_MULT) * C1_MULT)
|
||||||
|
|
||||||
/* AIM USS Code One Annex D Steps J-R */
|
/* AIM USS Code One Annex D Steps J-R */
|
||||||
static int c1_look_ahead_test(const unsigned char source[], const int sourcelen, const int position,
|
static int c1_look_ahead_test(const unsigned char source[], const int sourcelen, const int position,
|
||||||
const int current_mode, const int gs1) {
|
const int current_mode, const int gs1) {
|
||||||
float ascii_count, c40_count, text_count, edi_count, byte_count;
|
int ascii_count, c40_count, text_count, edi_count, byte_count;
|
||||||
int ascii_rnded, c40_rnded, text_rnded, edi_rnded, byte_rnded;
|
int ascii_rnded, c40_rnded, text_rnded, edi_rnded, byte_rnded;
|
||||||
float cnt_1;
|
int cnt_1;
|
||||||
int sp;
|
int sp;
|
||||||
|
|
||||||
/* Step J1 */
|
/* Step J1 */
|
||||||
if (current_mode == C1_ASCII) {
|
if (current_mode == C1_ASCII) {
|
||||||
ascii_count = 0.0f;
|
ascii_count = 0;
|
||||||
c40_count = 1.0f;
|
c40_count = C1_MULT_1;
|
||||||
text_count = 1.0f;
|
text_count = C1_MULT_1;
|
||||||
edi_count = 1.0f;
|
edi_count = C1_MULT_1;
|
||||||
byte_count = 2.0f;
|
byte_count = C1_MULT_2;
|
||||||
} else {
|
} else {
|
||||||
ascii_count = 1.0f;
|
ascii_count = C1_MULT_1;
|
||||||
c40_count = 2.0f;
|
c40_count = C1_MULT_2;
|
||||||
text_count = 2.0f;
|
text_count = C1_MULT_2;
|
||||||
edi_count = 2.0f;
|
edi_count = C1_MULT_2;
|
||||||
byte_count = 3.0f;
|
byte_count = C1_MULT_3;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (current_mode) {
|
switch (current_mode) {
|
||||||
case C1_C40: c40_count = 0.0f; /* Step J2 */
|
case C1_C40: c40_count = 0; /* Step J2 */
|
||||||
break;
|
break;
|
||||||
case C1_TEXT: text_count = 0.0f; /* Step J3 */
|
case C1_TEXT: text_count = 0; /* Step J3 */
|
||||||
break;
|
break;
|
||||||
case C1_EDI: edi_count = 0.0f; /* Missing in spec */
|
case C1_EDI: edi_count = 0; /* Missing in spec */
|
||||||
break;
|
break;
|
||||||
case C1_BYTE: byte_count = 0.0f; /* Step J4 */
|
case C1_BYTE: byte_count = 0; /* Step J4 */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,47 +203,47 @@ static int c1_look_ahead_test(const unsigned char source[], const int sourcelen,
|
|||||||
|
|
||||||
/* Step L */
|
/* Step L */
|
||||||
if ((c >= '0') && (c <= '9')) {
|
if ((c >= '0') && (c <= '9')) {
|
||||||
ascii_count += 0.5f; /* Step L1 */
|
ascii_count += C1_MULT_1_DIV_2; /* Step L1 */
|
||||||
} else {
|
} else {
|
||||||
if (is_extended) {
|
if (is_extended) {
|
||||||
ascii_count = ceilf(ascii_count) + 2.0f; /* Step L2 */
|
ascii_count = ceilf(ascii_count) + C1_MULT_2; /* Step L2 */
|
||||||
} else {
|
} else {
|
||||||
ascii_count = ceilf(ascii_count) + 1.0f; /* Step L3 */
|
ascii_count = ceilf(ascii_count) + C1_MULT_1; /* Step L3 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Step M */
|
/* Step M */
|
||||||
if (isc40(c)) {
|
if (isc40(c)) {
|
||||||
c40_count += (2.0f / 3.0f); /* Step M1 */
|
c40_count += C1_MULT_2_DIV_3; /* Step M1 */
|
||||||
} else if (is_extended) {
|
} else if (is_extended) {
|
||||||
c40_count += (8.0f / 3.0f); /* Step M2 */
|
c40_count += C1_MULT_8_DIV_3; /* Step M2 */
|
||||||
} else {
|
} else {
|
||||||
c40_count += (4.0f / 3.0f); /* Step M3 */
|
c40_count += C1_MULT_4_DIV_3; /* Step M3 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Step N */
|
/* Step N */
|
||||||
if (istext(c)) {
|
if (istext(c)) {
|
||||||
text_count += (2.0f / 3.0f); /* Step N1 */
|
text_count += C1_MULT_2_DIV_3; /* Step N1 */
|
||||||
} else if (is_extended) {
|
} else if (is_extended) {
|
||||||
text_count += (8.0f / 3.0f); /* Step N2 */
|
text_count += C1_MULT_8_DIV_3; /* Step N2 */
|
||||||
} else {
|
} else {
|
||||||
text_count += (4.0f / 3.0f); /* Step N3 */
|
text_count += C1_MULT_4_DIV_3; /* Step N3 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Step O */
|
/* Step O */
|
||||||
if (isedi(c)) {
|
if (isedi(c)) {
|
||||||
edi_count += (2.0f / 3.0f); /* Step O1 */
|
edi_count += C1_MULT_2_DIV_3; /* Step O1 */
|
||||||
} else if (is_extended) {
|
} else if (is_extended) {
|
||||||
edi_count += (13.0f / 3.0f); /* Step O2 */
|
edi_count += C1_MULT_13_DIV_3; /* Step O2 */
|
||||||
} else {
|
} else {
|
||||||
edi_count += (10.0f / 3.0f); /* Step O3 */
|
edi_count += C1_MULT_10_DIV_3; /* Step O3 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Step P */
|
/* Step P */
|
||||||
if (gs1 && (c == '[')) {
|
if (gs1 && (c == '[')) {
|
||||||
byte_count += 3.0f; /* Step P1 */
|
byte_count += C1_MULT_3; /* Step P1 */
|
||||||
} else {
|
} else {
|
||||||
byte_count += 1.0f; /* Step P2 */
|
byte_count += C1_MULT_1; /* Step P2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If at least 4 characters processed */
|
/* If at least 4 characters processed */
|
||||||
@ -235,25 +251,25 @@ static int c1_look_ahead_test(const unsigned char source[], const int sourcelen,
|
|||||||
BWIPP also uses 4 (cf very similar Data Matrix ISO/IEC 16022:2006 Annex P algorithm) */
|
BWIPP also uses 4 (cf very similar Data Matrix ISO/IEC 16022:2006 Annex P algorithm) */
|
||||||
if (sp >= position + 3) {
|
if (sp >= position + 3) {
|
||||||
/* Step Q */
|
/* Step Q */
|
||||||
ascii_rnded = (int) ceilf(stripf(ascii_count));
|
ascii_rnded = C1_MULT_CEIL(ascii_count);
|
||||||
c40_rnded = (int) ceilf(stripf(c40_count));
|
c40_rnded = C1_MULT_CEIL(c40_count);
|
||||||
text_rnded = (int) ceilf(stripf(text_count));
|
text_rnded = C1_MULT_CEIL(text_count);
|
||||||
edi_rnded = (int) ceilf(stripf(edi_count));
|
edi_rnded = C1_MULT_CEIL(edi_count);
|
||||||
byte_rnded = (int) ceilf(stripf(byte_count));
|
byte_rnded = C1_MULT_CEIL(byte_count);
|
||||||
|
|
||||||
cnt_1 = byte_count + 1.0f;
|
cnt_1 = byte_count + C1_MULT_1;
|
||||||
if (cnt_1 <= ascii_rnded && cnt_1 <= c40_rnded && cnt_1 <= text_rnded && cnt_1 <= edi_rnded) {
|
if (cnt_1 <= ascii_rnded && cnt_1 <= c40_rnded && cnt_1 <= text_rnded && cnt_1 <= edi_rnded) {
|
||||||
return C1_BYTE; /* Step Q1 */
|
return C1_BYTE; /* Step Q1 */
|
||||||
}
|
}
|
||||||
cnt_1 = ascii_count + 1.0f;
|
cnt_1 = ascii_count + C1_MULT_1;
|
||||||
if (cnt_1 <= c40_rnded && cnt_1 <= text_rnded && cnt_1 <= edi_rnded && cnt_1 <= byte_rnded) {
|
if (cnt_1 <= c40_rnded && cnt_1 <= text_rnded && cnt_1 <= edi_rnded && cnt_1 <= byte_rnded) {
|
||||||
return C1_ASCII; /* Step Q2 */
|
return C1_ASCII; /* Step Q2 */
|
||||||
}
|
}
|
||||||
cnt_1 = text_rnded + 1.0f;
|
cnt_1 = text_rnded + C1_MULT_1;
|
||||||
if (cnt_1 <= ascii_rnded && cnt_1 <= c40_rnded && cnt_1 <= edi_rnded && cnt_1 <= byte_rnded) {
|
if (cnt_1 <= ascii_rnded && cnt_1 <= c40_rnded && cnt_1 <= edi_rnded && cnt_1 <= byte_rnded) {
|
||||||
return C1_TEXT; /* Step Q3 */
|
return C1_TEXT; /* Step Q3 */
|
||||||
}
|
}
|
||||||
cnt_1 = c40_rnded + 1.0f;
|
cnt_1 = c40_rnded + C1_MULT_1;
|
||||||
if (cnt_1 <= ascii_rnded && cnt_1 <= text_rnded) {
|
if (cnt_1 <= ascii_rnded && cnt_1 <= text_rnded) {
|
||||||
/* Step Q4 */
|
/* Step Q4 */
|
||||||
if (c40_rnded < edi_rnded) {
|
if (c40_rnded < edi_rnded) {
|
||||||
@ -267,7 +283,7 @@ static int c1_look_ahead_test(const unsigned char source[], const int sourcelen,
|
|||||||
return C1_C40; /* Step Q4bii */
|
return C1_C40; /* Step Q4bii */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cnt_1 = edi_rnded + 1.0f;
|
cnt_1 = edi_rnded + C1_MULT_1;
|
||||||
if (cnt_1 <= ascii_rnded && cnt_1 <= c40_rnded && cnt_1 <= text_rnded && cnt_1 <= byte_rnded) {
|
if (cnt_1 <= ascii_rnded && cnt_1 <= c40_rnded && cnt_1 <= text_rnded && cnt_1 <= byte_rnded) {
|
||||||
return C1_EDI; /* Step Q5 */
|
return C1_EDI; /* Step Q5 */
|
||||||
}
|
}
|
||||||
@ -275,11 +291,11 @@ static int c1_look_ahead_test(const unsigned char source[], const int sourcelen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Step K */
|
/* Step K */
|
||||||
ascii_rnded = (int) ceilf(stripf(ascii_count));
|
ascii_rnded = C1_MULT_CEIL(ascii_count);
|
||||||
c40_rnded = (int) ceilf(stripf(c40_count));
|
c40_rnded = C1_MULT_CEIL(c40_count);
|
||||||
text_rnded = (int) ceilf(stripf(text_count));
|
text_rnded = C1_MULT_CEIL(text_count);
|
||||||
edi_rnded = (int) ceilf(stripf(edi_count));
|
edi_rnded = C1_MULT_CEIL(edi_count);
|
||||||
byte_rnded = (int) ceilf(stripf(byte_count));
|
byte_rnded = C1_MULT_CEIL(byte_count);
|
||||||
|
|
||||||
if (byte_count <= ascii_rnded && byte_count <= c40_rnded && byte_count <= text_rnded && byte_count <= edi_rnded) {
|
if (byte_count <= ascii_rnded && byte_count <= c40_rnded && byte_count <= text_rnded && byte_count <= edi_rnded) {
|
||||||
return C1_BYTE; /* Step K1 */
|
return C1_BYTE; /* Step K1 */
|
||||||
|
@ -56,9 +56,6 @@
|
|||||||
#define ustrcat(target, source) strcat((char *) (target), (const char *) (source))
|
#define ustrcat(target, source) strcat((char *) (target), (const char *) (source))
|
||||||
#define ustrncat(target, source, count) strncat((char *) (target), (const char *) (source), (count))
|
#define ustrncat(target, source, count) strncat((char *) (target), (const char *) (source), (count))
|
||||||
|
|
||||||
/* Removes excess precision from floats - see https://stackoverflow.com/q/503436/664741 */
|
|
||||||
#define stripf(arg) (*((volatile float *) &(arg)))
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
# if _MSC_VER < 1800 /* ceilf, floorf, roundf (C99) not before MSVC 2013 (C++ 12.0) */
|
# if _MSC_VER < 1800 /* ceilf, floorf, roundf (C99) not before MSVC 2013 (C++ 12.0) */
|
||||||
# define ceilf (float) ceil
|
# define ceilf (float) ceil
|
||||||
|
@ -267,41 +267,62 @@ static int p_r_6_2_1(const unsigned char inputData[], const int position, const
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Character counts are multiplied by this, so as to be whole integer divisible by 2, 3 and 4 */
|
||||||
|
#define DM_MULT 12
|
||||||
|
|
||||||
|
#define DM_MULT_1_DIV_2 6
|
||||||
|
#define DM_MULT_2_DIV_3 8
|
||||||
|
#define DM_MULT_3_DIV_4 9
|
||||||
|
#define DM_MULT_1 12
|
||||||
|
#define DM_MULT_5_DIV_4 15
|
||||||
|
#define DM_MULT_4_DIV_3 16
|
||||||
|
#define DM_MULT_2 24
|
||||||
|
#define DM_MULT_9_DIV_4 27
|
||||||
|
#define DM_MULT_8_DIV_3 32
|
||||||
|
#define DM_MULT_13_DIV_4 39
|
||||||
|
#define DM_MULT_10_DIV_3 40
|
||||||
|
#define DM_MULT_4 48
|
||||||
|
#define DM_MULT_17_DIV_4 51
|
||||||
|
#define DM_MULT_13_DIV_3 52
|
||||||
|
|
||||||
|
#define DM_MULT_MINUS_1 11
|
||||||
|
#define DM_MULT_CEIL(n) ((((n) + DM_MULT_MINUS_1) / DM_MULT) * DM_MULT)
|
||||||
|
|
||||||
/* 'look ahead test' from Annex P */
|
/* 'look ahead test' from Annex P */
|
||||||
static int look_ahead_test(const unsigned char inputData[], const int sourcelen, const int position,
|
static int look_ahead_test(const unsigned char inputData[], const int sourcelen, const int position,
|
||||||
const int current_mode, const int gs1, const int debug) {
|
const int current_mode, const int gs1, const int debug) {
|
||||||
float ascii_count, c40_count, text_count, x12_count, edf_count, b256_count;
|
int ascii_count, c40_count, text_count, x12_count, edf_count, b256_count;
|
||||||
int ascii_rnded, c40_rnded, text_rnded, x12_rnded, edf_rnded, b256_rnded;
|
int ascii_rnded, c40_rnded, text_rnded, x12_rnded, edf_rnded, b256_rnded;
|
||||||
float cnt_1;
|
int cnt_1;
|
||||||
int sp;
|
int sp;
|
||||||
|
|
||||||
/* step (j) */
|
/* step (j) */
|
||||||
if (current_mode == DM_ASCII) {
|
if (current_mode == DM_ASCII) {
|
||||||
ascii_count = 0.0F;
|
ascii_count = 0;
|
||||||
c40_count = 1.0F;
|
c40_count = DM_MULT_1;
|
||||||
text_count = 1.0F;
|
text_count = DM_MULT_1;
|
||||||
x12_count = 1.0F;
|
x12_count = DM_MULT_1;
|
||||||
edf_count = 1.0F;
|
edf_count = DM_MULT_1;
|
||||||
b256_count = 1.25F;
|
b256_count = DM_MULT_5_DIV_4; // 1.25
|
||||||
} else {
|
} else {
|
||||||
ascii_count = 1.0F;
|
ascii_count = DM_MULT_1;
|
||||||
c40_count = 2.0F;
|
c40_count = DM_MULT_2;
|
||||||
text_count = 2.0F;
|
text_count = DM_MULT_2;
|
||||||
x12_count = 2.0F;
|
x12_count = DM_MULT_2;
|
||||||
edf_count = 2.0F;
|
edf_count = DM_MULT_2;
|
||||||
b256_count = 2.25F;
|
b256_count = DM_MULT_9_DIV_4; // 2.25
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (current_mode) {
|
switch (current_mode) {
|
||||||
case DM_C40: c40_count = 0.0F;
|
case DM_C40: c40_count = 0;
|
||||||
break;
|
break;
|
||||||
case DM_TEXT: text_count = 0.0F;
|
case DM_TEXT: text_count = 0;
|
||||||
break;
|
break;
|
||||||
case DM_X12: x12_count = 0.0F;
|
case DM_X12: x12_count = 0;
|
||||||
break;
|
break;
|
||||||
case DM_EDIFACT: edf_count = 0.0F;
|
case DM_EDIFACT: edf_count = 0;
|
||||||
break;
|
break;
|
||||||
case DM_BASE256: b256_count = 0.0F;
|
case DM_BASE256: b256_count = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,110 +332,104 @@ static int look_ahead_test(const unsigned char inputData[], const int sourcelen,
|
|||||||
|
|
||||||
/* ascii ... step (l) */
|
/* ascii ... step (l) */
|
||||||
if ((c >= '0') && (c <= '9')) {
|
if ((c >= '0') && (c <= '9')) {
|
||||||
ascii_count += 0.5F; // (l)(1)
|
ascii_count += DM_MULT_1_DIV_2; // (l)(1)
|
||||||
} else {
|
} else {
|
||||||
if (is_extended) {
|
if (is_extended) {
|
||||||
ascii_count = ceilf(ascii_count) + 2.0F; // (l)(2)
|
ascii_count = DM_MULT_CEIL(ascii_count) + DM_MULT_2; // (l)(2)
|
||||||
} else {
|
} else {
|
||||||
ascii_count = ceilf(ascii_count) + 1.0F; // (l)(3)
|
ascii_count = DM_MULT_CEIL(ascii_count) + DM_MULT_1; // (l)(3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* c40 ... step (m) */
|
/* c40 ... step (m) */
|
||||||
if (isc40(c)) {
|
if (isc40(c)) {
|
||||||
c40_count += (2.0F / 3.0F); // (m)(1)
|
c40_count += DM_MULT_2_DIV_3; // (m)(1)
|
||||||
} else {
|
} else {
|
||||||
if (is_extended) {
|
if (is_extended) {
|
||||||
c40_count += (8.0F / 3.0F); // (m)(2)
|
c40_count += DM_MULT_8_DIV_3; // (m)(2)
|
||||||
} else {
|
} else {
|
||||||
c40_count += (4.0F / 3.0F); // (m)(3)
|
c40_count += DM_MULT_4_DIV_3; // (m)(3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* text ... step (n) */
|
/* text ... step (n) */
|
||||||
if (istext(c)) {
|
if (istext(c)) {
|
||||||
text_count += (2.0F / 3.0F); // (n)(1)
|
text_count += DM_MULT_2_DIV_3; // (n)(1)
|
||||||
} else {
|
} else {
|
||||||
if (is_extended) {
|
if (is_extended) {
|
||||||
text_count += (8.0F / 3.0F); // (n)(2)
|
text_count += DM_MULT_8_DIV_3; // (n)(2)
|
||||||
} else {
|
} else {
|
||||||
text_count += (4.0F / 3.0F); // (n)(3)
|
text_count += DM_MULT_4_DIV_3; // (n)(3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* x12 ... step (o) */
|
/* x12 ... step (o) */
|
||||||
if (isX12(c)) {
|
if (isX12(c)) {
|
||||||
x12_count += (2.0F / 3.0F); // (o)(1)
|
x12_count += DM_MULT_2_DIV_3; // (o)(1)
|
||||||
} else {
|
} else {
|
||||||
if (is_extended) {
|
if (is_extended) {
|
||||||
x12_count += (13.0F / 3.0F); // (o)(2)
|
x12_count += DM_MULT_13_DIV_3; // (o)(2)
|
||||||
} else {
|
} else {
|
||||||
x12_count += (10.0F / 3.0F); // (o)(3)
|
x12_count += DM_MULT_10_DIV_3; // (o)(3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* edifact ... step (p) */
|
/* edifact ... step (p) */
|
||||||
if ((c >= ' ') && (c <= '^')) {
|
if ((c >= ' ') && (c <= '^')) {
|
||||||
edf_count += (3.0F / 4.0F); // (p)(1)
|
edf_count += DM_MULT_3_DIV_4; // (p)(1)
|
||||||
} else {
|
} else {
|
||||||
if (is_extended) {
|
if (is_extended) {
|
||||||
edf_count += 17.0F / 4.0f; // (p)(2)
|
edf_count += DM_MULT_17_DIV_4; // (p)(2)
|
||||||
} else {
|
} else {
|
||||||
edf_count += 13.0F / 4.0f; // (p)(3)
|
edf_count += DM_MULT_13_DIV_4; // (p)(3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* base 256 ... step (q) */
|
/* base 256 ... step (q) */
|
||||||
if ((gs1 == 1) && (c == '[')) {
|
if ((gs1 == 1) && (c == '[')) {
|
||||||
/* FNC1 separator */
|
/* FNC1 separator */
|
||||||
b256_count += 4.0F; // (q)(1)
|
b256_count += DM_MULT_4; // (q)(1)
|
||||||
} else {
|
} else {
|
||||||
b256_count += 1.0F; // (q)(2)
|
b256_count += DM_MULT_1; // (q)(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sp >= position + 4) {
|
if (sp >= position + 4) {
|
||||||
/* At least 5 data characters processed ... step (r) */
|
/* At least 5 data characters processed ... step (r) */
|
||||||
/* NOTE: different than spec, where it's at least 4. Following previous behaviour here (and BWIPP) */
|
/* NOTE: different than spec, where it's at least 4. Following previous behaviour here (and BWIPP) */
|
||||||
|
|
||||||
ascii_count = stripf(ascii_count);
|
|
||||||
b256_count = stripf(b256_count);
|
|
||||||
edf_count = stripf(edf_count);
|
|
||||||
text_count = stripf(text_count);
|
|
||||||
x12_count = stripf(x12_count);
|
|
||||||
c40_count = stripf(c40_count);
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
printf("\n(%d, %d, %d): ascii_count %.8g, b256_count %.8g, edf_count %.8g, text_count %.8g"
|
printf("\n(%d, %d, %d): ascii_count %d, b256_count %d, edf_count %d, text_count %d"
|
||||||
", x12_count %.8g, c40_count %.8g ",
|
", x12_count %d, c40_count %d ",
|
||||||
current_mode, position, sp, ascii_count, b256_count, edf_count, text_count,
|
current_mode, position, sp, ascii_count, b256_count, edf_count, text_count,
|
||||||
x12_count, c40_count);
|
x12_count, c40_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
cnt_1 = ascii_count + 1.0f;
|
cnt_1 = ascii_count + DM_MULT_1;
|
||||||
if (cnt_1 <= b256_count && cnt_1 <= edf_count && cnt_1 <= text_count && cnt_1 <= x12_count
|
if (cnt_1 <= b256_count && cnt_1 <= edf_count && cnt_1 <= text_count && cnt_1 <= x12_count
|
||||||
&& cnt_1 <= c40_count) {
|
&& cnt_1 <= c40_count) {
|
||||||
return DM_ASCII; /* step (r)(1) */
|
return DM_ASCII; /* step (r)(1) */
|
||||||
}
|
}
|
||||||
cnt_1 = b256_count + 1.0f;
|
cnt_1 = b256_count + DM_MULT_1;
|
||||||
if (cnt_1 <= ascii_count || (cnt_1 < edf_count && cnt_1 < text_count && cnt_1 < x12_count
|
if (cnt_1 <= ascii_count || (cnt_1 < edf_count && cnt_1 < text_count && cnt_1 < x12_count
|
||||||
&& cnt_1 < c40_count)) {
|
&& cnt_1 < c40_count)) {
|
||||||
return DM_BASE256; /* step (r)(2) */
|
return DM_BASE256; /* step (r)(2) */
|
||||||
}
|
}
|
||||||
cnt_1 = edf_count + 1.0f;
|
cnt_1 = edf_count + DM_MULT_1;
|
||||||
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < text_count && cnt_1 < x12_count
|
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < text_count && cnt_1 < x12_count
|
||||||
&& cnt_1 < c40_count) {
|
&& cnt_1 < c40_count) {
|
||||||
return DM_EDIFACT; /* step (r)(3) */
|
return DM_EDIFACT; /* step (r)(3) */
|
||||||
}
|
}
|
||||||
cnt_1 = text_count + 1.0f;
|
cnt_1 = text_count + DM_MULT_1;
|
||||||
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < x12_count
|
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < x12_count
|
||||||
&& cnt_1 < c40_count) {
|
&& cnt_1 < c40_count) {
|
||||||
return DM_TEXT; /* step (r)(4) */
|
return DM_TEXT; /* step (r)(4) */
|
||||||
}
|
}
|
||||||
cnt_1 = x12_count + 1.0f;
|
cnt_1 = x12_count + DM_MULT_1;
|
||||||
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count
|
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count
|
||||||
&& cnt_1 < c40_count) {
|
&& cnt_1 < c40_count) {
|
||||||
return DM_X12; /* step (r)(5) */
|
return DM_X12; /* step (r)(5) */
|
||||||
}
|
}
|
||||||
cnt_1 = c40_count + 1.0f;
|
cnt_1 = c40_count + DM_MULT_1;
|
||||||
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count) {
|
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count) {
|
||||||
if (c40_count < x12_count) {
|
if (c40_count < x12_count) {
|
||||||
return DM_C40; /* step (r)(6)(i) */
|
return DM_C40; /* step (r)(6)(i) */
|
||||||
@ -431,15 +446,15 @@ static int look_ahead_test(const unsigned char inputData[], const int sourcelen,
|
|||||||
|
|
||||||
/* At the end of data ... step (k) */
|
/* At the end of data ... step (k) */
|
||||||
/* step (k)(1) */
|
/* step (k)(1) */
|
||||||
ascii_rnded = (int) ceilf(stripf(ascii_count));
|
ascii_rnded = DM_MULT_CEIL(ascii_count);
|
||||||
b256_rnded = (int) ceilf(stripf(b256_count));
|
b256_rnded = DM_MULT_CEIL(b256_count);
|
||||||
edf_rnded = (int) ceilf(stripf(edf_count));
|
edf_rnded = DM_MULT_CEIL(edf_count);
|
||||||
text_rnded = (int) ceilf(stripf(text_count));
|
text_rnded = DM_MULT_CEIL(text_count);
|
||||||
x12_rnded = (int) ceilf(stripf(x12_count));
|
x12_rnded = DM_MULT_CEIL(x12_count);
|
||||||
c40_rnded = (int) ceilf(stripf(c40_count));
|
c40_rnded = DM_MULT_CEIL(c40_count);
|
||||||
if (debug) {
|
if (debug) {
|
||||||
printf("\nEOD(%d, %d): ascii_rnded %d, b256_rnded %d, edf_rnded %d, text_rnded %d, x12_rnded %d (%g)"
|
printf("\nEOD(%d, %d): ascii_rnded %d, b256_rnded %d, edf_rnded %d, text_rnded %d, x12_rnded %d (%d)"
|
||||||
", c40_rnded %d (%g) ",
|
", c40_rnded %d (%d) ",
|
||||||
current_mode, position, ascii_rnded, b256_rnded, edf_rnded, text_rnded, x12_rnded, x12_count,
|
current_mode, position, ascii_rnded, b256_rnded, edf_rnded, text_rnded, x12_rnded, x12_count,
|
||||||
c40_rnded, c40_count);
|
c40_rnded, c40_count);
|
||||||
}
|
}
|
||||||
|
@ -546,102 +546,103 @@ static void test_input(int index, int generate, int debug) {
|
|||||||
int expected_eci;
|
int expected_eci;
|
||||||
int expected_rows;
|
int expected_rows;
|
||||||
int expected_width;
|
int expected_width;
|
||||||
|
int bwipp_cmp;
|
||||||
char *expected;
|
char *expected;
|
||||||
char *comment;
|
char *comment;
|
||||||
};
|
};
|
||||||
struct item data[] = {
|
struct item data[] = {
|
||||||
/* 0*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "#208" },
|
/* 0*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "#208" },
|
||||||
/* 1*/ { UNICODE_MODE, 0, 5, -1, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "" },
|
/* 1*/ { UNICODE_MODE, 0, 5, -1, "0466010592130100000k*AGUATY80", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 93 B0 1C 3C 76 FB D4 AB 16 11", "" },
|
||||||
/* 2*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY8", 0, 0, 18, 18, "(32) 86 C4 83 87 DE 8F 83 82 82 E6 19 5C 07 B7 82 5F D4 3D 65 B5 97 30 00 FC 2C 4C 30 52", "" },
|
/* 2*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY8", 0, 0, 18, 18, 1, "(32) 86 C4 83 87 DE 8F 83 82 82 E6 19 5C 07 B7 82 5F D4 3D 65 B5 97 30 00 FC 2C 4C 30 52", "" },
|
||||||
/* 3*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "" },
|
/* 3*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "" },
|
||||||
/* 4*/ { UNICODE_MODE, 0, 5, -1, "0466010592130100000k*AGUATY80U", ZINT_ERROR_TOO_LONG, -1, 0, 0, "Error 522: Input too long for selected symbol size", "" },
|
/* 4*/ { UNICODE_MODE, 0, 5, -1, "0466010592130100000k*AGUATY80U", ZINT_ERROR_TOO_LONG, -1, 0, 0, 0, "Error 522: Input too long for selected symbol size", "" },
|
||||||
/* 5*/ { UNICODE_MODE, 0, 6, -1, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "" },
|
/* 5*/ { UNICODE_MODE, 0, 6, -1, "0466010592130100000k*AGUATY80U", 0, 0, 20, 20, 1, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C EE 08 85 D6 D2 EF 65 FE 56 81 76 4F AB 22 B8 6F 0A", "" },
|
||||||
/* 6*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, "(40) 86 C4 83 87 DE 8F 83 82 82 31 6C E6 07 B7 82 5F D4 3D 1E 5F FE 81 1E 1B B0 FE E7 54", "" },
|
/* 6*/ { UNICODE_MODE, 0, -1, -1, "0466010592130100000k*AGUATY80UA", 0, 0, 20, 20, 0, "(40) 86 C4 83 87 DE 8F 83 82 82 E6 19 5C 07 B7 82 5F D4 3D 1E 5F FE 81 BB 90 01 2A 31 9F", "BWIPP different encodation" },
|
||||||
/* 7*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>", 0, 0, 14, 14, "EE 0C A9 0C A9 FE 3F 81 42 B2 11 A8 F9 0A EC C1 1E 41", "X12 symbols_left 3, process_p 1" },
|
/* 7*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 FE 3F 81 42 B2 11 A8 F9 0A EC C1 1E 41", "X12 symbols_left 3, process_p 1" },
|
||||||
/* 8*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>*", 0, 0, 14, 14, "EE 0C A9 0C A9 FE 3F 2B 3F 05 D2 10 1B 9A 55 2F 68 C5", "X12 symbols_left 3, process_p 2" },
|
/* 8*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>*", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 FE 3F 2B 3F 05 D2 10 1B 9A 55 2F 68 C5", "X12 symbols_left 3, process_p 2" },
|
||||||
/* 9*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>*\015", 0, 0, 14, 14, "EE 0C A9 0C A9 0C A9 FE 1F 30 3F EE 45 C1 1C D7 5F 7E", "X12 symbols_left 1, process_p 0" },
|
/* 9*/ { UNICODE_MODE, 0, -1, -1, ">*\015>*\015>*\015", 0, 0, 14, 14, 1, "EE 0C A9 0C A9 0C A9 FE 1F 30 3F EE 45 C1 1C D7 5F 7E", "X12 symbols_left 1, process_p 0" },
|
||||||
/* 10*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF", 0, 0, 12, 12, "E6 59 E9 6D 24 3D 15 EF AA 21 F9 59", "C40 symbols_left 0, process_p 0" },
|
/* 10*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF", 0, 0, 12, 12, 1, "E6 59 E9 6D 24 3D 15 EF AA 21 F9 59", "C40 symbols_left 0, process_p 0" },
|
||||||
/* 11*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG", 0, 0, 14, 14, "E6 59 E9 6D 24 FE 48 81 8C 7E 09 5E 10 64 BC 5F 4C 91", "C40 symbols_left 3, process_p 1" },
|
/* 11*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 FE 48 81 8C 7E 09 5E 10 64 BC 5F 4C 91", "C40 symbols_left 3, process_p 1" },
|
||||||
/* 12*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH", 0, 0, 14, 14, "E6 59 E9 6D 24 FE 48 49 2E 31 00 73 3B 8F 4B 55 93 19", "C40 symbols_left 3, process_p 2" },
|
/* 12*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 FE 48 49 2E 31 00 73 3B 8F 4B 55 93 19", "C40 symbols_left 3, process_p 2" },
|
||||||
/* 13*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI", 0, 0, 14, 14, "E6 59 E9 6D 24 80 5F FE 01 DE 20 9F AA C2 FF 8F 08 97", "C40 symbols_left 1, process_p 0" },
|
/* 13*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 80 5F FE 01 DE 20 9F AA C2 FF 8F 08 97", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 14*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF\001G", 0, 0, 14, 14, "E6 59 E9 6D 24 00 3D FE 5D 5A F5 0A 8A 4E 1D 63 07 B9", "C40 symbols_left 1, process_p 0" },
|
/* 14*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF\001G", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 00 3D FE 5D 5A F5 0A 8A 4E 1D 63 07 B9", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 15*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG\001", 0, 0, 14, 14, "E6 59 E9 6D 24 7D 02 FE 14 A3 27 63 01 2F B1 94 FE FA", "C40 symbols_left 1, process_p 0" },
|
/* 15*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG\001", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 02 FE 14 A3 27 63 01 2F B1 94 FE FA", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 16*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG\001H", 0, 0, 14, 14, "E6 59 E9 6D 24 7D 02 49 C2 E6 DD 06 89 51 BA 8E 9D 1F", "C40 symbols_left 1, process_p 1" },
|
/* 16*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG\001H", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 02 49 C2 E6 DD 06 89 51 BA 8E 9D 1F", "C40 symbols_left 1, process_p 1" },
|
||||||
/* 17*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001", 0, 0, 8, 32, "E6 59 E9 6D 24 FE 48 49 02 81 BD 6D F3 94 FF 82 A6 BF BB F1 4F", "C40 symbols_left 1, process_p 1, backtracks" },
|
/* 17*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 02 81 BD 6D F3 94 FF 82 A6 BF BB F1 4F", "C40 symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 18*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH\001", 0, 0, 16, 16, "E6 59 E9 6D 24 FE 48 49 02 81 FB 93 AE 8B 1C 90 DF FE EB C5 A0 2A 6A 4F", "C40 symbols_left 1, process_p 1, backtracks" },
|
/* 18*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 81 FB 93 AE 8B 1C 90 DF FE EB C5 A0 2A 6A 4F", "C40 symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 19*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001I", 0, 0, 8, 32, "E6 59 E9 6D 24 FE 48 49 02 4A E1 0D DD BC 56 E4 66 52 E6 AE 02", "C40 symbols_left 3, process_p 2, backtracks" },
|
/* 19*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001I", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 02 4A E1 0D DD BC 56 E4 66 52 E6 AE 02", "C40 symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 20*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH\001I", 0, 0, 16, 16, "E6 59 E9 6D 24 FE 48 49 02 4A 81 93 51 DF C0 0C D3 F9 72 13 17 52 5B 7E", "C40 symbols_left 5, process_p 2, backtracks" },
|
/* 20*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH\001I", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 81 93 51 DF C0 0C D3 F9 72 13 17 52 5B 7E", "C40 symbols_left 5, process_p 2, backtracks" },
|
||||||
/* 21*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI\001", 0, 0, 8, 32, "E6 59 E9 6D 24 80 5F FE 02 81 47 6C 3E 49 D3 FA 46 47 53 6E E5", "Switches to ASC for last char" },
|
/* 21*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI\001", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 02 81 47 6C 3E 49 D3 FA 46 47 53 6E E5", "Switches to ASC for last char" },
|
||||||
/* 22*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHI\001", 0, 0, 16, 16, "E6 59 E9 6D 24 80 5F FE 02 81 FB 93 33 E3 4F F7 2D 08 8A BF 64 C3 B0 26", "Switches to ASC for last char" },
|
/* 22*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHI\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 02 81 FB 93 33 E3 4F F7 2D 08 8A BF 64 C3 B0 26", "Switches to ASC for last char" },
|
||||||
/* 23*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001I\001", 0, 0, 16, 16, "E6 59 E9 6D 24 FE 48 49 02 4A 02 81 BD 5D C0 B9 09 25 87 3A 09 23 9D C0", "C40 symbols_left 1, process_p 1, backtracks 2" },
|
/* 23*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH\001I\001", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 02 4A 02 81 BD 5D C0 B9 09 25 87 3A 09 23 9D C0", "C40 symbols_left 1, process_p 1, backtracks 2" },
|
||||||
/* 24*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF+G", 0, 0, 14, 14, "E6 59 E9 6D 24 07 E5 FE 6B 35 71 7F 3D 57 59 46 F7 B9", "C40 symbols_left 1, process_p 0" },
|
/* 24*/ { UNICODE_MODE, 0, -1, -1, "ABCDEF+G", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 07 E5 FE 6B 35 71 7F 3D 57 59 46 F7 B9", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 25*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG+", 0, 0, 14, 14, "E6 59 E9 6D 24 7D 33 FE 33 F5 97 60 73 48 13 2E E5 74", "C40 symbols_left 1, process_p 0" },
|
/* 25*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG+", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 33 FE 33 F5 97 60 73 48 13 2E E5 74", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 26*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG+H", 0, 0, 14, 14, "E6 59 E9 6D 24 7D 33 49 E5 B0 6D 05 FB 36 18 34 86 91", "C40 symbols_left 1, process_p 1" },
|
/* 26*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFG+H", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 33 49 E5 B0 6D 05 FB 36 18 34 86 91", "C40 symbols_left 1, process_p 1" },
|
||||||
/* 27*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH+", 0, 0, 8, 32, "E6 59 E9 6D 24 FE 48 49 2C 81 02 BD 40 CF 3B 06 C2 DF 36 E0 48", "C40 symbols_left 1, process_p 1, backtracks" },
|
/* 27*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH+", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 02 BD 40 CF 3B 06 C2 DF 36 E0 48", "C40 symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 28*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH+", 0, 0, 16, 16, "E6 59 E9 6D 24 FE 48 49 2C 81 FB 93 F6 78 B5 69 0B 83 C6 32 62 1A D2 FF", "C40 symbols_left 1, process_p 1, backtracks" },
|
/* 28*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH+", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 2C 81 FB 93 F6 78 B5 69 0B 83 C6 32 62 1A D2 FF", "C40 symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 29*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH+I", 0, 0, 8, 32, "E6 59 E9 6D 24 FE 48 49 2C 4A 5E DD 6E E7 92 60 02 32 6B BF 05", "C40 symbols_left 3, process_p 2, backtracks" },
|
/* 29*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGH+I", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 5E DD 6E E7 92 60 02 32 6B BF 05", "C40 symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 30*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH+I", 0, 0, 16, 16, "E6 59 E9 6D 24 FE 48 49 2C 4A 81 93 09 2C 69 F5 07 84 5F E4 D5 62 E3 CE", "C40 symbols_left 5, process_p 2, backtracks" },
|
/* 30*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGH+I", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 2C 4A 81 93 09 2C 69 F5 07 84 5F E4 D5 62 E3 CE", "C40 symbols_left 5, process_p 2, backtracks" },
|
||||||
/* 31*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI+", 0, 0, 8, 32, "E6 59 E9 6D 24 80 5F FE 2C 81 F8 BC 8D 12 17 7E 22 27 DE 7F E2", "C40 symbols_left 3, process_p 2, backtracks" },
|
/* 31*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHI+", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 F8 BC 8D 12 17 7E 22 27 DE 7F E2", "C40 symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 32*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHI+", 0, 0, 16, 16, "E6 59 E9 6D 24 80 5F FE 2C 81 FB 93 6B 10 E6 0E F9 75 A7 48 A6 F3 08 96", "Switches to ASC for last char" },
|
/* 32*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHI+", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 2C 81 FB 93 6B 10 E6 0E F9 75 A7 48 A6 F3 08 96", "Switches to ASC for last char" },
|
||||||
/* 33*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFjG", 0, 0, 14, 14, "E6 59 E9 6D 24 0E 25 FE DA 14 D7 15 47 69 9D 4A 54 6D", "C40 symbols_left 1, process_p 0" },
|
/* 33*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFjG", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 0E 25 FE DA 14 D7 15 47 69 9D 4A 54 6D", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 34*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGj", 0, 0, 14, 14, "E6 59 E9 6D 24 7D 5B FE B5 F3 24 0A 99 26 D6 CC A8 40", "C40 symbols_left 1, process_p 0" },
|
/* 34*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGj", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 5B FE B5 F3 24 0A 99 26 D6 CC A8 40", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 35*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGjH", 0, 0, 14, 14, "E6 59 E9 6D 24 7D 5B 49 63 B6 DE 6F 11 58 DD D6 CB A5", "C40 symbols_left 1, process_p 1" },
|
/* 35*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGjH", 0, 0, 14, 14, 1, "E6 59 E9 6D 24 7D 5B 49 63 B6 DE 6F 11 58 DD D6 CB A5", "C40 symbols_left 1, process_p 1" },
|
||||||
/* 36*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHj", 0, 0, 8, 32, "E6 59 E9 6D 24 FE 48 49 6B 81 ED 78 CB 9F 52 EE 52 88 91 67 96", "C40 symbols_left 1, process_p 1, backtracks" },
|
/* 36*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHj", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 ED 78 CB 9F 52 EE 52 88 91 67 96", "C40 symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 37*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHj", 0, 0, 16, 16, "E6 59 E9 6D 24 FE 48 49 6B 81 FB 93 BF 72 03 35 09 37 98 FF 39 A7 E3 6D", "C40 symbols_left 1, process_p 1, backtracks" },
|
/* 37*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHj", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 6B 81 FB 93 BF 72 03 35 09 37 98 FF 39 A7 E3 6D", "C40 symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 38*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHjI", 0, 0, 8, 32, "E6 59 E9 6D 24 FE 48 49 6B 4A B1 18 E5 B7 FB 88 92 65 CC 38 DB", "C40 symbols_left 3, process_p 2, backtracks" },
|
/* 38*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHjI", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A B1 18 E5 B7 FB 88 92 65 CC 38 DB", "C40 symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 39*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHjI", 0, 0, 16, 16, "E6 59 E9 6D 24 FE 48 49 6B 4A 81 93 40 26 DF A9 05 30 01 29 8E DF D2 5C", "C40 symbols_left 5, process_p 2, backtracks" },
|
/* 39*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "ABCDEFGHjI", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 FE 48 49 6B 4A 81 93 40 26 DF A9 05 30 01 29 8E DF D2 5C", "C40 symbols_left 5, process_p 2, backtracks" },
|
||||||
/* 40*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIj", 0, 0, 8, 32, "E6 59 E9 6D 24 80 5F FE 6B 81 17 79 06 42 7E 96 B2 70 79 F8 3C", "Switches to ASC for last char" },
|
/* 40*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIj", 0, 0, 8, 32, 1, "E6 59 E9 6D 24 80 5F FE 6B 81 17 79 06 42 7E 96 B2 70 79 F8 3C", "Switches to ASC for last char" },
|
||||||
/* 41*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJÊ", 0, 0, 16, 16, "E6 59 E9 6D 24 80 5F FE 4B EB 4B 81 DD D9 F9 C9 C5 38 F3 4B DB 80 92 A7", "Switches to ASC for last 2 chars" },
|
/* 41*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJÊ", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 4B EB 4B 81 DD D9 F9 C9 C5 38 F3 4B DB 80 92 A7", "Switches to ASC for last 2 chars" },
|
||||||
/* 42*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKÊ", 0, 0, 16, 16, "E6 59 E9 6D 24 80 5F FE 4B 4C EB 4B 15 17 46 06 70 F3 15 74 45 26 72 2D", "C40 symbols_left 3, process_p 2, backtracks" },
|
/* 42*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKÊ", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F FE 4B 4C EB 4B 15 17 46 06 70 F3 15 74 45 26 72 2D", "C40 symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 43*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKª", 0, 0, 16, 16, "E6 59 E9 6D 24 80 5F 93 82 BB B2 FE 11 5C 60 32 A6 DE FC 7B 30 F1 03 56", "C40 symbols_left 1, process_p 0" },
|
/* 43*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKª", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F 93 82 BB B2 FE 11 5C 60 32 A6 DE FC 7B 30 F1 03 56", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 44*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKê", 0, 0, 16, 16, "E6 59 E9 6D 24 80 5F 93 82 BB DB FE 78 43 69 3C C2 FE F5 2E 1B 4F B6 04", "C40 symbols_left 1, process_p 0" },
|
/* 44*/ { UNICODE_MODE, 0, -1, -1, "ABCDEFGHIJKê", 0, 0, 16, 16, 1, "E6 59 E9 6D 24 80 5F 93 82 BB DB FE 78 43 69 3C C2 FE F5 2E 1B 4F B6 04", "C40 symbols_left 1, process_p 0" },
|
||||||
/* 45*/ { UNICODE_MODE, 0, -1, -1, "abcdef", 0, 0, 12, 12, "EF 59 E9 6D 24 E2 CC D9 B4 55 E2 6A", "TEX symbols_left 0, process_p 0" },
|
/* 45*/ { UNICODE_MODE, 0, -1, -1, "abcdef", 0, 0, 12, 12, 1, "EF 59 E9 6D 24 E2 CC D9 B4 55 E2 6A", "TEX symbols_left 0, process_p 0" },
|
||||||
/* 46*/ { UNICODE_MODE, 0, -1, -1, "abcdefg", 0, 0, 14, 14, "EF 59 E9 6D 24 FE 68 81 A9 65 CD 3A A2 E9 E0 B7 E1 E5", "TEX symbols_left 3, process_p 1" },
|
/* 46*/ { UNICODE_MODE, 0, -1, -1, "abcdefg", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 FE 68 81 A9 65 CD 3A A2 E9 E0 B7 E1 E5", "TEX symbols_left 3, process_p 1" },
|
||||||
/* 47*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh", 0, 0, 14, 14, "EF 59 E9 6D 24 FE 68 69 68 36 28 3C 85 5A E9 D4 49 9A", "TEX symbols_left 3, process_p 2" },
|
/* 47*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 FE 68 69 68 36 28 3C 85 5A E9 D4 49 9A", "TEX symbols_left 3, process_p 2" },
|
||||||
/* 48*/ { UNICODE_MODE, 0, -1, -1, "abcdefghi", 0, 0, 14, 14, "EF 59 E9 6D 24 80 5F FE DA BF FA 16 71 15 22 4D E3 F3", "TEX symbols_left 1, process_p 0" },
|
/* 48*/ { UNICODE_MODE, 0, -1, -1, "abcdefghi", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 80 5F FE DA BF FA 16 71 15 22 4D E3 F3", "TEX symbols_left 1, process_p 0" },
|
||||||
/* 49*/ { UNICODE_MODE, 0, -1, -1, "abcdef\001g", 0, 0, 14, 14, "EF 59 E9 6D 24 00 3D FE 86 3B 2F 83 51 99 C0 A1 EC DD", "TEX symbols_left 1, process_p 0" },
|
/* 49*/ { UNICODE_MODE, 0, -1, -1, "abcdef\001g", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 00 3D FE 86 3B 2F 83 51 99 C0 A1 EC DD", "TEX symbols_left 1, process_p 0" },
|
||||||
/* 50*/ { UNICODE_MODE, 0, -1, -1, "abcdefg\001", 0, 0, 14, 14, "EF 59 E9 6D 24 7D 02 FE CF C2 FD EA DA F8 6C 56 15 9E", "TEX symbols_left 1, process_p 0" },
|
/* 50*/ { UNICODE_MODE, 0, -1, -1, "abcdefg\001", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 02 FE CF C2 FD EA DA F8 6C 56 15 9E", "TEX symbols_left 1, process_p 0" },
|
||||||
/* 51*/ { UNICODE_MODE, 0, -1, -1, "abcdefg\001h", 0, 0, 14, 14, "EF 59 E9 6D 24 7D 02 69 7A 9B EB A4 5E DE 99 25 01 8C", "TEX symbols_left 1, process_p 1" },
|
/* 51*/ { UNICODE_MODE, 0, -1, -1, "abcdefg\001h", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 02 69 7A 9B EB A4 5E DE 99 25 01 8C", "TEX symbols_left 1, process_p 1" },
|
||||||
/* 52*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001", 0, 0, 8, 32, "EF 59 E9 6D 24 FE 68 69 02 81 EB 84 25 32 6E 1B 5A FB 1D 25 4A", "TEX symbols_left 1, process_p 1, backtracks" },
|
/* 52*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 02 81 EB 84 25 32 6E 1B 5A FB 1D 25 4A", "TEX symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 53*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefgh\001", 0, 0, 16, 16, "EF 59 E9 6D 24 FE 68 69 02 81 FB 93 93 FD 1E 3B BA 1D 16 4D 59 41 EC B9", "TEX symbols_left 1, process_p 1, backtracks" },
|
/* 53*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefgh\001", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 81 FB 93 93 FD 1E 3B BA 1D 16 4D 59 41 EC B9", "TEX symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 54*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001i", 0, 0, 8, 32, "EF 59 E9 6D 24 FE 68 69 02 6A 31 35 48 9B 93 6E 15 BB 02 9D F4", "TEX symbols_left 3, process_p 2, backtracks" },
|
/* 54*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001i", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 31 35 48 9B 93 6E 15 BB 02 9D F4", "TEX symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 55*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefgh\001i", 0, 0, 16, 16, "EF 59 E9 6D 24 FE 68 69 02 6A 81 93 DE D7 EC 9B 7D 72 9C 68 B8 6E CF 31", "TEX symbols_left 3, process_p 2, backtracks" },
|
/* 55*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefgh\001i", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 81 93 DE D7 EC 9B 7D 72 9C 68 B8 6E CF 31", "TEX symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 56*/ { UNICODE_MODE, 0, -1, -1, "abcdefghi\001", 0, 0, 8, 32, "EF 59 E9 6D 24 80 5F FE 02 81 4D AB 30 86 CD D1 9D F3 15 F5 B1", "Switches to ASC for last char" },
|
/* 56*/ { UNICODE_MODE, 0, -1, -1, "abcdefghi\001", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 80 5F FE 02 81 4D AB 30 86 CD D1 9D F3 15 F5 B1", "Switches to ASC for last char" },
|
||||||
/* 57*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001i\001", 0, 0, 16, 16, "EF 59 E9 6D 24 FE 68 69 02 6A 02 81 32 55 EC 2E A7 AE 69 41 A6 1F 09 8F", "TEX symbols_left 1, process_p 1, backtracks 2" },
|
/* 57*/ { UNICODE_MODE, 0, -1, -1, "abcdefgh\001i\001", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 02 6A 02 81 32 55 EC 2E A7 AE 69 41 A6 1F 09 8F", "TEX symbols_left 1, process_p 1, backtracks 2" },
|
||||||
/* 58*/ { UNICODE_MODE, 0, -1, -1, "abcdefJg", 0, 0, 14, 14, "EF 59 E9 6D 24 0E 25 FE 01 75 0D 9C 9C BE 40 88 BF 09", "TEX symbols_left 1, process_p 0" },
|
/* 58*/ { UNICODE_MODE, 0, -1, -1, "abcdefJg", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 0E 25 FE 01 75 0D 9C 9C BE 40 88 BF 09", "TEX symbols_left 1, process_p 0" },
|
||||||
/* 59*/ { UNICODE_MODE, 0, -1, -1, "abcdefgJ", 0, 0, 14, 14, "EF 59 E9 6D 24 7D 5B FE 6E 92 FE 83 42 F1 0B 0E 43 24", "TEX symbols_left 1, process_p 0" },
|
/* 59*/ { UNICODE_MODE, 0, -1, -1, "abcdefgJ", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 5B FE 6E 92 FE 83 42 F1 0B 0E 43 24", "TEX symbols_left 1, process_p 0" },
|
||||||
/* 60*/ { UNICODE_MODE, 0, -1, -1, "abcdefgJh", 0, 0, 14, 14, "EF 59 E9 6D 24 7D 5B 69 DB CB E8 CD C6 D7 FE 7D 57 36", "TEX symbols_left 1, process_p 1" },
|
/* 60*/ { UNICODE_MODE, 0, -1, -1, "abcdefgJh", 0, 0, 14, 14, 1, "EF 59 E9 6D 24 7D 5B 69 DB CB E8 CD C6 D7 FE 7D 57 36", "TEX symbols_left 1, process_p 1" },
|
||||||
/* 61*/ { UNICODE_MODE, 0, -1, -1, "abcdefghJ", 0, 0, 8, 32, "EF 59 E9 6D 24 FE 68 69 4B 81 15 8A 35 57 7F 33 B3 48 01 E0 BD", "TEX symbols_left 1, process_p 1, backtracks" },
|
/* 61*/ { UNICODE_MODE, 0, -1, -1, "abcdefghJ", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 15 8A 35 57 7F 33 B3 48 01 E0 BD", "TEX symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 62*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefghJ", 0, 0, 16, 16, "EF 59 E9 6D 24 FE 68 69 4B 81 FB 93 5B D4 D2 8B EE 85 F2 3E 3F 8E E5 04", "TEX symbols_left 1, process_p 1, backtracks" },
|
/* 62*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefghJ", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 4B 81 FB 93 5B D4 D2 8B EE 85 F2 3E 3F 8E E5 04", "TEX symbols_left 1, process_p 1, backtracks" },
|
||||||
/* 63*/ { UNICODE_MODE, 0, -1, -1, "abcdefghJi", 0, 0, 8, 32, "EF 59 E9 6D 24 FE 68 69 4B 6A CF 3B 58 FE 82 46 FC 08 1E 58 03", "TEX symbols_left 3, process_p 2, backtracks" },
|
/* 63*/ { UNICODE_MODE, 0, -1, -1, "abcdefghJi", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A CF 3B 58 FE 82 46 FC 08 1E 58 03", "TEX symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 64*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefghJi", 0, 0, 16, 16, "EF 59 E9 6D 24 FE 68 69 4B 6A 81 93 16 FE 20 2B 29 EA 78 1B DE A1 C6 8C", "TEX symbols_left 3, process_p 2, backtracks" },
|
/* 64*/ { UNICODE_MODE, 0, -1, DM_SQUARE, "abcdefghJi", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 FE 68 69 4B 6A 81 93 16 FE 20 2B 29 EA 78 1B DE A1 C6 8C", "TEX symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 65*/ { UNICODE_MODE, 0, -1, -1, "abcdefghiJ", 0, 0, 8, 32, "EF 59 E9 6D 24 80 5F FE 4B 81 B3 A5 20 E3 DC F9 74 40 09 30 46", "Switches to ASC for last char" },
|
/* 65*/ { UNICODE_MODE, 0, -1, -1, "abcdefghiJ", 0, 0, 8, 32, 1, "EF 59 E9 6D 24 80 5F FE 4B 81 B3 A5 20 E3 DC F9 74 40 09 30 46", "Switches to ASC for last char" },
|
||||||
/* 66*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkÊ", 0, 0, 16, 16, "EF 59 E9 6D 24 80 5F 93 82 BB DB FE 3E C8 EC 73 58 A7 42 46 10 49 25 99", "TEX symbols_left 1, process_p 0" },
|
/* 66*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkÊ", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F 93 82 BB DB FE 3E C8 EC 73 58 A7 42 46 10 49 25 99", "TEX symbols_left 1, process_p 0" },
|
||||||
/* 67*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkª", 0, 0, 16, 16, "EF 59 E9 6D 24 80 5F 93 82 BB B2 FE 57 D7 E5 7D 3C 87 4B 13 3B F7 90 CB", "TEX symbols_left 1, process_p 0" },
|
/* 67*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkª", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F 93 82 BB B2 FE 57 D7 E5 7D 3C 87 4B 13 3B F7 90 CB", "TEX symbols_left 1, process_p 0" },
|
||||||
/* 68*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkê", 0, 0, 16, 16, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 6B 59 43 1A B1 96 F4 FF C5 B5 08 AE 2F", "TEX symbols_left 3, process_p 2, backtracks" },
|
/* 68*/ { UNICODE_MODE, 0, -1, -1, "abcdefghijkê", 0, 0, 16, 16, 1, "EF 59 E9 6D 24 80 5F FE 6B 6C EB 6B 59 43 1A B1 96 F4 FF C5 B5 08 AE 2F", "TEX symbols_left 3, process_p 2, backtracks" },
|
||||||
/* 69*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>", 0, 0, 12, 12, "EE 00 2B 00 2B 83 3B 0A CE 32 36 65", "X12 symbols_left 0, process_p 0" },
|
/* 69*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>", 0, 0, 12, 12, 1, "EE 00 2B 00 2B 83 3B 0A CE 32 36 65", "X12 symbols_left 0, process_p 0" },
|
||||||
/* 70*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015", 0, 0, 14, 14, "EE 00 2B 00 2B FE 0E 81 C0 6C BF 37 F6 D6 48 71 E2 38", "Switches to ASC for last char" },
|
/* 70*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015", 0, 0, 14, 14, 1, "EE 00 2B 00 2B FE 0E 81 C0 6C BF 37 F6 D6 48 71 E2 38", "Switches to ASC for last char" },
|
||||||
/* 71*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*", 0, 0, 14, 14, "EE 00 2B 00 2B FE 0E 2B BD DB 7C 8F 14 46 F1 9F 94 BC", "Switches to ASC for last 2 chars" },
|
/* 71*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*", 0, 0, 14, 14, 1, "EE 00 2B 00 2B FE 0E 2B BD DB 7C 8F 14 46 F1 9F 94 BC", "Switches to ASC for last 2 chars" },
|
||||||
/* 72*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>", 0, 0, 14, 14, "EE 00 2B 00 2B 00 2B FE BF 81 70 74 1C 65 10 0C 06 38", "X12 symbols_left 1, process_p 0, ASC unlatch at end" },
|
/* 72*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>", 0, 0, 14, 14, 1, "EE 00 2B 00 2B 00 2B FE BF 81 70 74 1C 65 10 0C 06 38", "X12 symbols_left 1, process_p 0, ASC unlatch at end" },
|
||||||
/* 73*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015", 0, 0, 14, 14, "EE 00 2B 00 2B 00 2B 0E 1C DB D8 26 3E EC CF 9C C3 4A", "X12 symbols_left 1, process_p 1, ASC no latch at end" },
|
/* 73*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015", 0, 0, 14, 14, 1, "EE 00 2B 00 2B 00 2B 0E 1C DB D8 26 3E EC CF 9C C3 4A", "X12 symbols_left 1, process_p 1, ASC no latch at end" },
|
||||||
/* 74*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015*", 0, 0, 8, 32, "EE 00 2B 00 2B 00 2B FE 0E 2B 65 37 5F 2F F3 96 BE 9A 03 55 68", "X12 symbols_left 3, process_p 2, ASC last 2 chars" },
|
/* 74*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015*", 0, 0, 8, 32, 1, "EE 00 2B 00 2B 00 2B FE 0E 2B 65 37 5F 2F F3 96 BE 9A 03 55 68", "X12 symbols_left 3, process_p 2, ASC last 2 chars" },
|
||||||
/* 75*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015*>", 0, 0, 8, 32, "EE 00 2B 00 2B 00 2B 00 2B FE 6E 95 3A 10 58 4E 96 06 79 09 94", "X12 symbols_left 1, process_p 0, ASC unlatch at end" },
|
/* 75*/ { UNICODE_MODE, 0, -1, -1, "\015*>\015*>\015*>\015*>", 0, 0, 8, 32, 1, "EE 00 2B 00 2B 00 2B 00 2B FE 6E 95 3A 10 58 4E 96 06 79 09 94", "X12 symbols_left 1, process_p 0, ASC unlatch at end" },
|
||||||
/* 76*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C", 0, 0, 14, 14, "F0 00 1C 5E 0B 2F C3 81 2D 71 45 13 9B FF A1 B0 0B E2", "EDIFACT symbols_left 1, process_p 0" },
|
/* 76*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C", 0, 0, 14, 14, 1, "F0 00 1C 5E 0B 2F C3 81 2D 71 45 13 9B FF A1 B0 0B E2", "EDIFACT symbols_left 1, process_p 0" },
|
||||||
/* 77*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3", 0, 0, 14, 14, "F0 00 1C 5E 0B 2F C3 34 81 E8 6C 9E CE 12 CB F5 58 3F", "EDIFACT symbols_left 1, process_p 1" },
|
/* 77*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3", 0, 0, 14, 14, 1, "F0 00 1C 5E 0B 2F C3 34 81 E8 6C 9E CE 12 CB F5 58 3F", "EDIFACT symbols_left 1, process_p 1" },
|
||||||
/* 78*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+", 0, 0, 8, 32, "F0 00 1C 5E 0B 2F C3 CE B7 C0 33 C6 81 E1 63 6E 5E B4 27 30 C9", "EDIFACT symbols_left 3, process_p 2" },
|
/* 78*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B7 C0 33 C6 81 E1 63 6E 5E B4 27 30 C9", "EDIFACT symbols_left 3, process_p 2" },
|
||||||
/* 79*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D", 0, 0, 8, 32, "F0 00 1C 5E 0B 2F C3 CE B1 1F 4D E1 79 04 2B BC 05 6C 38 73 39", "EDIFACT symbols_left 3, process_p 3" },
|
/* 79*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B1 1F 4D E1 79 04 2B BC 05 6C 38 73 39", "EDIFACT symbols_left 3, process_p 3" },
|
||||||
/* 80*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4", 0, 0, 8, 32, "F0 00 1C 5E 0B 2F C3 CE B1 34 F4 EC B3 DC 03 A3 1F B5 86 C3 F7", "EDIFACT symbols_left 0, process_p 0" },
|
/* 80*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4", 0, 0, 8, 32, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 F4 EC B3 DC 03 A3 1F B5 86 C3 F7", "EDIFACT symbols_left 0, process_p 0" },
|
||||||
/* 81*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4=", 0, 0, 16, 16, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 81 42 96 43 6E 92 0D A9 B1 65 3C CF 9B", "EDIFACT symbols_left 2, process_p 1" },
|
/* 81*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4=", 0, 0, 16, 16, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 81 42 96 43 6E 92 0D A9 B1 65 3C CF 9B", "EDIFACT symbols_left 2, process_p 1" },
|
||||||
/* 82*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4=E", 0, 0, 16, 16, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 46 AD 8C F2 D8 5D AF F3 65 08 1F E3 A5", "EDIFACT symbols_left 2, process_p 2" },
|
/* 82*/ { UNICODE_MODE, 0, -1, -1, "@A1^B2?C3+D4=E", 0, 0, 16, 16, 1, "F0 00 1C 5E 0B 2F C3 CE B1 34 3E 46 AD 8C F2 D8 5D AF F3 65 08 1F E3 A5", "EDIFACT symbols_left 2, process_p 2" },
|
||||||
/* 83*/ { DATA_MODE, 0, -1, -1, "\377\376", 0, 0, 12, 12, "EB 80 EB 7F 81 6F A8 0F 21 6F 5F 88", "FN4 A7F FN4 A7E, 1 pad" },
|
/* 83*/ { DATA_MODE, 0, -1, -1, "\377\376", 0, 0, 12, 12, 1, "EB 80 EB 7F 81 6F A8 0F 21 6F 5F 88", "FN4 A7F FN4 A7E, 1 pad" },
|
||||||
/* 84*/ { DATA_MODE, 0, -1, -1, "\377\376\375", 0, 0, 12, 12, "E7 2C C0 55 E9 67 45 8A D2 7E A9 23", "BAS BFF BFE BFD, no padding" },
|
/* 84*/ { DATA_MODE, 0, -1, -1, "\377\376\375", 0, 0, 12, 12, 1, "E7 2C C0 55 E9 67 45 8A D2 7E A9 23", "BAS BFF BFE BFD, no padding" },
|
||||||
/* 85*/ { DATA_MODE, 3, -1, -1, "\101\102\103\104\300\105\310", 0, 3, 16, 16, "F1 04 E7 5E 2D C4 5B F1 03 1D 36 81 64 0E C0 77 9A 18 52 B2 F9 F0 04 39", "ECI 4 BAS B41 B42 B43 B44 BC0 B45 BC8" },
|
/* 85*/ { DATA_MODE, 3, -1, -1, "\101\102\103\104\300\105\310", 0, 3, 16, 16, 1, "F1 04 E7 5E 2D C4 5B F1 03 1D 36 81 64 0E C0 77 9A 18 52 B2 F9 F0 04 39", "ECI 4 BAS B41 B42 B43 B44 BC0 B45 BC8" },
|
||||||
/* 86*/ { UNICODE_MODE, 26, -1, -1, "ABCDÀEÈ", 0, 26, 12, 26, "F1 1B E7 60 2D C4 5B F1 06 58 B3 C7 21 81 57 ED 3D C0 12 2E 6C 80 58 CC 2C 05 0D 31 FC 2D", "ECI 27 BAS B41 B42 B43 B44 BC3 B80 B45 BC3 B88" },
|
/* 86*/ { UNICODE_MODE, 26, -1, -1, "ABCDÀEÈ", 0, 26, 12, 26, 1, "F1 1B E7 60 2D C4 5B F1 06 58 B3 C7 21 81 57 ED 3D C0 12 2E 6C 80 58 CC 2C 05 0D 31 FC 2D", "ECI 27 BAS B41 B42 B43 B44 BC3 B80 B45 BC3 B88" },
|
||||||
/* 87*/ { UNICODE_MODE, 0, -1, -1, "β", ZINT_WARN_USES_ECI, 9, 12, 12, "Warning F1 0A EB 63 81 41 56 DA C0 3D 2D CC", "ECI 10 FN4 A62" },
|
/* 87*/ { UNICODE_MODE, 0, -1, -1, "β", ZINT_WARN_USES_ECI, 9, 12, 12, 1, "Warning F1 0A EB 63 81 41 56 DA C0 3D 2D CC", "ECI 10 FN4 A62" },
|
||||||
/* 88*/ { UNICODE_MODE, 127, -1, -1, "A", 0, 127, 12, 12, "F1 80 01 42 81 14 A2 86 07 F5 27 30", "ECI 128 A41" },
|
/* 88*/ { UNICODE_MODE, 127, -1, -1, "A", 0, 127, 12, 12, 1, "F1 80 01 42 81 14 A2 86 07 F5 27 30", "ECI 128 A41" },
|
||||||
/* 89*/ { UNICODE_MODE, 16382, -1, -1, "A", 0, 16382, 12, 12, "F1 BF FE 42 81 29 57 AA A0 92 B2 45", "ECI 16383 A41" },
|
/* 89*/ { UNICODE_MODE, 16382, -1, -1, "A", 0, 16382, 12, 12, 1, "F1 BF FE 42 81 29 57 AA A0 92 B2 45", "ECI 16383 A41" },
|
||||||
/* 90*/ { UNICODE_MODE, 810899, -1, -1, "A", 0, 810899, 12, 12, "F1 CC 51 05 42 BB A5 A7 8A C6 6E 0F", "ECI 810900 A41" },
|
/* 90*/ { UNICODE_MODE, 810899, -1, -1, "A", 0, 810899, 12, 12, 1, "F1 CC 51 05 42 BB A5 A7 8A C6 6E 0F", "ECI 810900 A41" },
|
||||||
/* 91*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, "[)>\\R05\\GA\\R\\E", 0, 0, 10, 10, "EC 42 81 5D 17 49 F6 B6", "Macro05 A41" },
|
/* 91*/ { UNICODE_MODE | ESCAPE_MODE, -1, -1, -1, "[)>\\R05\\GA\\R\\E", 0, 0, 10, 10, 1, "EC 42 81 5D 17 49 F6 B6", "Macro05 A41" },
|
||||||
};
|
};
|
||||||
int data_size = ARRAY_SIZE(data);
|
int data_size = ARRAY_SIZE(data);
|
||||||
int i, length, ret;
|
int i, length, ret;
|
||||||
@ -670,10 +671,10 @@ static void test_input(int index, int generate, int debug) {
|
|||||||
assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
|
assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt);
|
||||||
|
|
||||||
if (generate) {
|
if (generate) {
|
||||||
printf(" /*%3d*/ { %s, %d, %d, %s, \"%s\", %s, %d, %d, %d, \"%s\", \"%s\" },\n",
|
printf(" /*%3d*/ { %s, %d, %d, %s, \"%s\", %s, %d, %d, %d, %d, \"%s\", \"%s\" },\n",
|
||||||
i, testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_2, testUtilOption3Name(data[i].option_3),
|
i, testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_2, testUtilOption3Name(data[i].option_3),
|
||||||
testUtilEscape(data[i].data, length, escaped, sizeof(escaped)),
|
testUtilEscape(data[i].data, length, escaped, sizeof(escaped)),
|
||||||
testUtilErrorName(data[i].ret), ret < ZINT_ERROR ? symbol->eci : -1, symbol->rows, symbol->width, symbol->errtxt, data[i].comment);
|
testUtilErrorName(data[i].ret), ret < ZINT_ERROR ? symbol->eci : -1, symbol->rows, symbol->width, data[i].bwipp_cmp, symbol->errtxt, data[i].comment);
|
||||||
} else {
|
} else {
|
||||||
if (ret < ZINT_ERROR) {
|
if (ret < ZINT_ERROR) {
|
||||||
assert_equal(symbol->eci, data[i].expected_eci, "i:%d eci %d != %d\n", i, symbol->eci, data[i].expected_eci);
|
assert_equal(symbol->eci, data[i].expected_eci, "i:%d eci %d != %d\n", i, symbol->eci, data[i].expected_eci);
|
||||||
@ -682,14 +683,18 @@ static void test_input(int index, int generate, int debug) {
|
|||||||
assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected);
|
assert_zero(strcmp(symbol->errtxt, data[i].expected), "i:%d strcmp(%s, %s) != 0\n", i, symbol->errtxt, data[i].expected);
|
||||||
|
|
||||||
if (do_bwipp && testUtilCanBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, debug)) {
|
if (do_bwipp && testUtilCanBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, debug)) {
|
||||||
char modules_dump[8192];
|
if (!data[i].bwipp_cmp) {
|
||||||
assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump != -1\n", i);
|
if (debug & ZINT_DEBUG_TEST_PRINT) printf("i:%d %s not BWIPP compatible (%s)\n", i, testUtilBarcodeName(symbol->symbology), data[i].comment);
|
||||||
ret = testUtilBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, bwipp_buf, sizeof(bwipp_buf));
|
} else {
|
||||||
assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret);
|
char modules_dump[8192];
|
||||||
|
assert_notequal(testUtilModulesDump(symbol, modules_dump, sizeof(modules_dump)), -1, "i:%d testUtilModulesDump != -1\n", i);
|
||||||
|
ret = testUtilBwipp(i, symbol, -1, data[i].option_2, data[i].option_3, data[i].data, length, NULL, bwipp_buf, sizeof(bwipp_buf));
|
||||||
|
assert_zero(ret, "i:%d %s testUtilBwipp ret %d != 0\n", i, testUtilBarcodeName(symbol->symbology), ret);
|
||||||
|
|
||||||
ret = testUtilBwippCmp(symbol, bwipp_msg, bwipp_buf, modules_dump);
|
ret = testUtilBwippCmp(symbol, bwipp_msg, bwipp_buf, modules_dump);
|
||||||
assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n",
|
assert_zero(ret, "i:%d %s testUtilBwippCmp %d != 0 %s\n actual: %s\nexpected: %s\n",
|
||||||
i, testUtilBarcodeName(symbol->symbology), ret, bwipp_msg, bwipp_buf, modules_dump);
|
i, testUtilBarcodeName(symbol->symbology), ret, bwipp_msg, bwipp_buf, modules_dump);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1039,38 +1044,38 @@ static void test_encode(int index, int generate, int debug) {
|
|||||||
"100000101110000100"
|
"100000101110000100"
|
||||||
"111111111111111111"
|
"111111111111111111"
|
||||||
},
|
},
|
||||||
/* 16*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, -1, -1, -1, "[01]00012345678905[17]180401[21]ABCDEFGHIJKL12345678[91]ABCDEFGHI123456789[92]abcdefghi", 0, 32, 32, 1, "GGS Figure 5.6.3.2-3 (left) **NOT SAME** different encodation",
|
/* 16*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, -1, -1, -1, "[01]00012345678905[17]180401[21]ABCDEFGHIJKL12345678[91]ABCDEFGHI123456789[92]abcdefghi", 0, 32, 32, 0, "GGS Figure 5.6.3.2-3 (left) **NOT SAME** different encodation; BWIPP different encodation",
|
||||||
"10101010101010101010101010101010"
|
"10101010101010101010101010101010"
|
||||||
"11001000010111111000100110101011"
|
"11001000010111111000100110101011"
|
||||||
"10001001100001101100110010100010"
|
"10001001100001101100110010100010"
|
||||||
"10110111001101111110011001000111"
|
"10110111001101111110011001000111"
|
||||||
"11100010001100101001101001011110"
|
"11100010001100101100101001011110"
|
||||||
"10101101101011011110000000100101"
|
"10101101101011111110000000100101"
|
||||||
"11111010010011001101000010011110"
|
"11111010010010101101000010011110"
|
||||||
"10010100101100111001101100101111"
|
"10010100101111011101101100101111"
|
||||||
"10101000101100101111111100110100"
|
"10101000101101101111111100110100"
|
||||||
"11001110001010111111110000010001"
|
"11001110011000111111110000001001"
|
||||||
"10001010000010101101001111010110"
|
"10001010001010101101001111001110"
|
||||||
"11110000111000111101011110001001"
|
"11110001000000111101011100101101"
|
||||||
"11010001101011001000001010001010"
|
"11010001111011001000011010000010"
|
||||||
"11011000111001111001010101011001"
|
"11011100101001111001000111111111"
|
||||||
"10111110101001101111110101110110"
|
"10111100101001101111011101000010"
|
||||||
"11111111111111111111111111111111"
|
"11111111111111111111111111111111"
|
||||||
"10101010101010101010101010101010"
|
"10101010101010101010101010101010"
|
||||||
"11000011111011111011110011110111"
|
"11010100111011111001101111100111"
|
||||||
"11111111010011001110011111011010"
|
"11100111010011001011100001001010"
|
||||||
"10000001010111111011000001101011"
|
"11111001010111011101111000110011"
|
||||||
"11000000000011101011010110110010"
|
"11110000000010101101001110000110"
|
||||||
"10001110000010011010001001011001"
|
"11101110000001111011101000010101"
|
||||||
"11110101000000001101101111110000"
|
"11110101001101101101110000001000"
|
||||||
"10101011001100011101001110111111"
|
"10101011000111111010111001100111"
|
||||||
"11000101011101101111010101110010"
|
"11000101010010001100000011101010"
|
||||||
"11111101000001111010001111111101"
|
"11111101110111011001111011001101"
|
||||||
"11010100101001001101010000110010"
|
"11010111011010001000011101001010"
|
||||||
"10100100110100011001001011001011"
|
"10100111111110111101010111100011"
|
||||||
"10111111110001101001111111111110"
|
"10111011111010001001001100101110"
|
||||||
"10011001010001111101000111101001"
|
"10010101001110111101000101111101"
|
||||||
"11111000001001101010111001010110"
|
"11110110001001001010110111010110"
|
||||||
"11111111111111111111111111111111"
|
"11111111111111111111111111111111"
|
||||||
},
|
},
|
||||||
/* 17*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, -1, 30, -1, "[01]00012345678905[17]180401[21]ABCDEFGHIJKL12345678[91]abcdefghi", 0, 16, 48, 1, "GGS Figure 5.6.3.2-3 (right) **NOT SAME** different encodation",
|
/* 17*/ { BARCODE_DATAMATRIX, GS1_MODE, -1, -1, 30, -1, "[01]00012345678905[17]180401[21]ABCDEFGHIJKL12345678[91]abcdefghi", 0, 16, 48, 1, "GGS Figure 5.6.3.2-3 (right) **NOT SAME** different encodation",
|
||||||
|
Loading…
Reference in New Issue
Block a user