mirror of
https://git.code.sf.net/p/zint/code
synced 2025-05-23 19:46:56 -04:00
DATAMATRIX: fix mis-encodation of X12 and EDIFACT non-encodables by
checking in main dm200encode() loop, props Alex Geller; prefix routines and tables with "dm_" reedsol.c: add const to a few variables
This commit is contained in:
parent
f7ad0ed1e3
commit
68566fefd2
7 changed files with 285 additions and 211 deletions
|
@ -37,10 +37,9 @@
|
|||
Contact: harald.oehlmann@eurodatacouncil.org
|
||||
*/
|
||||
|
||||
#ifndef __DMATRIX_H
|
||||
#define __DMATRIX_H
|
||||
#ifndef Z_DMATRIX_H
|
||||
#define Z_DMATRIX_H
|
||||
|
||||
#define DM_NULL 0
|
||||
#define DM_ASCII 1
|
||||
#define DM_C40 2
|
||||
#define DM_TEXT 3
|
||||
|
@ -48,28 +47,28 @@
|
|||
#define DM_EDIFACT 5
|
||||
#define DM_BASE256 6
|
||||
|
||||
static const char c40_shift[] = {
|
||||
static const char dm_c40_shift[] = {
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
|
||||
};
|
||||
|
||||
static const char c40_value[] = {
|
||||
static const char dm_c40_value[] = {
|
||||
0, 1, 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, 28, 29, 30, 31,
|
||||
3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
|
||||
15, 16, 17, 18, 19, 20, 21, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
||||
22, 23, 24, 25, 26, 0, 1, 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, 28, 29, 30, 31
|
||||
};
|
||||
|
||||
static const char text_shift[] = {
|
||||
static const char dm_text_shift[] = {
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||
2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3
|
||||
};
|
||||
|
||||
static const char text_value[] = {
|
||||
static const char dm_text_value[] = {
|
||||
0, 1, 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, 28, 29, 30, 31,
|
||||
3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
|
||||
15, 16, 17, 18, 19, 20, 21, 1, 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,
|
||||
|
@ -81,7 +80,7 @@ static const char text_value[] = {
|
|||
// The last comment value is the total data codewords value.
|
||||
// The index of this array is the --vers parameter value -1 and is given as first comment value
|
||||
|
||||
static const unsigned short int intsymbol[] = {
|
||||
static const unsigned short int dm_intsymbol[] = {
|
||||
/* Standard DM */
|
||||
0, /* 1: 10x10 , 3*/ 1, /* 2: 12x12 , 5*/ 3, /* 3: 14x14 , 8*/ 5, /* 4: 16x16 , 12*/
|
||||
7, /* 5: 18x18 , 18*/ 9, /* 6: 20x20 , 22*/ 12, /* 7: 22x22 , 30*/ 15, /* 8: 24x24 , 36*/
|
||||
|
@ -105,9 +104,9 @@ static const unsigned short int intsymbol[] = {
|
|||
#define INTSYMBOL144 47
|
||||
|
||||
// Is the current code a DMRE code ?
|
||||
// This is the case, if intsymbol index >= 30
|
||||
// This is the case, if dm_intsymbol index >= 30
|
||||
|
||||
static const char isDMRE[] = {
|
||||
static const char dm_isDMRE[] = {
|
||||
/* 0*/ 0, /* 10x10, 3*/ 0, /* 12x12 , 5*/ 0, /* 8x18 , 5*/ 0, /* 14x14 , 8*/
|
||||
/* 4*/ 0, /* 8x32 , 10*/ 0, /* 16x16 , 12*/ 0, /* 12x26 , 16*/ 0, /* 18x18 , 18*/
|
||||
/* 8*/ 1, /* 8x48 , 18*/ 0, /* 20x20 , 22*/ 0, /* 12x36 , 22*/ 1, /* 8x64 , 24*/
|
||||
|
@ -124,7 +123,7 @@ static const char isDMRE[] = {
|
|||
|
||||
// Horizontal matrix size
|
||||
|
||||
static const unsigned short int matrixH[] = {
|
||||
static const unsigned short int dm_matrixH[] = {
|
||||
/* 0*/ 10, /* 10x10 , 3*/ 12, /* 12x12 , 5 */ 8, /* 8x18 , 5*/ 14, /* 14x14 , 8*/
|
||||
/* 4*/ 8, /* 8x32 , 10*/ 16, /* 16x16 , 12*/ 12, /* 12x26 , 16*/ 18, /* 18x18 , 18*/
|
||||
/* 8*/ 8, /* 8x48 , 18*/ 20, /* 20x20 , 22*/ 12, /* 12x36 , 22*/ 8, /* 8x64 , 24*/
|
||||
|
@ -141,7 +140,7 @@ static const unsigned short int matrixH[] = {
|
|||
|
||||
// Vertical matrix sizes
|
||||
|
||||
static const unsigned short int matrixW[] = {
|
||||
static const unsigned short int dm_matrixW[] = {
|
||||
/* 0*/ 10, /* 10x10 */ 12, /* 12x12 */ 18, /* 8x18 */ 14, /* 14x14 */
|
||||
/* 4*/ 32, /* 8x32 */ 16, /* 16x16 */ 26, /* 12x26 */ 18, /* 18x18 */
|
||||
/* 8*/ 48, /* 8x48 */ 20, /* 20x20 */ 36, /* 12x36 */ 64, /* 8x64 */
|
||||
|
@ -159,7 +158,7 @@ static const unsigned short int matrixW[] = {
|
|||
|
||||
// Horizontal submodule size (including subfinder)
|
||||
|
||||
static const unsigned short int matrixFH[] = {
|
||||
static const unsigned short int dm_matrixFH[] = {
|
||||
/* 0*/ 10, /* 10x10 */ 12, /* 12x12 */ 8, /* 8x18 */ 14, /* 14x14 */
|
||||
/* 4*/ 8, /* 8x32 */ 16, /* 16x16 */ 12, /* 12x26 */ 18, /* 18x18 */
|
||||
/* 8*/ 8, /* 8x48 */ 20, /* 20x20 */ 12, /* 12x36 */ 8, /* 8x64 */
|
||||
|
@ -176,7 +175,7 @@ static const unsigned short int matrixFH[] = {
|
|||
|
||||
// Vertical submodule size (including subfinder)
|
||||
|
||||
static const unsigned short int matrixFW[] = {
|
||||
static const unsigned short int dm_matrixFW[] = {
|
||||
/* 0*/ 10, /* 10x10 */ 12, /* 12x12 */ 18, /* 8x18 */ 14, /* 14x14 */
|
||||
/* 4*/ 16, /* 8x32 */ 16, /* 16x16 */ 26, /* 12x26 */ 18, /* 18x18 */
|
||||
/* 8*/ 24, /* 8x48 */ 20, /* 20x20 */ 18, /* 12x36 */ 16, /* 8x64 */
|
||||
|
@ -193,7 +192,7 @@ static const unsigned short int matrixFW[] = {
|
|||
|
||||
// Total Data Codewords
|
||||
|
||||
static const unsigned short int matrixbytes[] = {
|
||||
static const unsigned short int dm_matrixbytes[] = {
|
||||
/* 0*/ 3, /* 10x10 */ 5, /* 12x12 */ 5, /* 8x18 */ 8, /* 14x14 */
|
||||
/* 4*/ 10, /* 8x32 */ 12, /* 16x16 */ 16, /* 12x26 */ 18, /* 18x18 */
|
||||
/* 8*/ 18, /* 8x48 */ 22, /* 20x20 */ 22, /* 12x36 */ 24, /* 8x64 */
|
||||
|
@ -210,7 +209,7 @@ static const unsigned short int matrixbytes[] = {
|
|||
|
||||
// Data Codewords per RS-Block
|
||||
|
||||
static const unsigned short int matrixdatablock[] = {
|
||||
static const unsigned short int dm_matrixdatablock[] = {
|
||||
/* 0*/ 3, /* 10x10 */ 5, /* 12x12 */ 5, /* 8x18 */ 8, /* 14x14 */
|
||||
/* 4*/ 10, /* 8x32 */ 12, /* 16x16 */ 16, /* 12x26 */ 18, /* 18x18 */
|
||||
/* 8*/ 18, /* 8x48 */ 22, /* 20x20 */ 22, /* 12x36 */ 24, /* 8x64 */
|
||||
|
@ -227,7 +226,7 @@ static const unsigned short int matrixdatablock[] = {
|
|||
|
||||
// ECC Codewords per RS-Block
|
||||
|
||||
static const unsigned short int matrixrsblock[] = {
|
||||
static const unsigned short int dm_matrixrsblock[] = {
|
||||
/* 0*/ 5, /* 10x10 */ 7, /* 12x12 */ 7, /* 8x18 */ 10, /* 14x14 */
|
||||
/* 4*/ 11, /* 8x32 */ 12, /* 16x16 */ 14, /* 12x26 */ 14, /* 18x18 */
|
||||
/* 8*/ 15, /* 8x48 */ 18, /* 20x20 */ 18, /* 12x36 */ 18, /* 8x64 */
|
||||
|
@ -242,4 +241,4 @@ static const unsigned short int matrixrsblock[] = {
|
|||
/*44*/ 56, /*104x104*/ 68, /*120x120*/ 62, /*132x132*/ 62 /*144x144*/
|
||||
};
|
||||
|
||||
#endif /* __DMATRIX_H */
|
||||
#endif /* Z_DMATRIX_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue