#ifndef Z_DMATRIX_H
#define Z_DMATRIX_H
#define DM_ASCII 1
#define DM_C40 2
#define DM_TEXT 3
#define DM_X12 4
#define DM_EDIFACT 5
#define DM_BASE256 6
static const char dm_c40_shift[128] = {
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 dm_c40_value[128] = {
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 dm_text_shift[128] = {
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 dm_text_value[128] = {
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, 22, 23, 24, 25, 26,
0, 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, 27, 28, 29, 30, 31
};
#define DMSIZESCOUNT 48
#define DMINTSYMBOL144 47
static const unsigned short dm_matrixbytes[DMSIZESCOUNT] = {
3 , 5 , 5 , 8 ,
10 , 12 , 16 , 18 ,
18 , 22 , 22 , 24 ,
30 , 32 , 32 , 36 ,
38 , 43 , 44 , 44 ,
49 , 49 , 56 , 62 ,
62 , 63 , 64 , 70 ,
72 , 80 , 84 , 86 ,
90 , 108 , 114 , 118 ,
144 , 174 , 204 , 280 ,
368 , 456 , 576 , 696 ,
816 , 1050 , 1304 , 1558
};
static const unsigned char dm_intsymbol[DMSIZESCOUNT] = {
0 , 1 , 3 , 5 ,
7 , 9 , 12 , 15 ,
18 , 23 , 31 , 34 ,
36 , 37 , 38 , 39 ,
40 , 41 , 42 , 43 ,
44 , 45 , 46 , 47 ,
2 , 4 , 6 , 10 ,
13 , 20 ,
8 , 11 , 14 , 16 ,
21 , 25 , 17 , 26 ,
24 , 19 , 22 , 30 ,
28 , 29 , 33 , 27 ,
32 , 35
};
static const char dm_isDMRE[DMSIZESCOUNT] = {
0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 ,
1 , 0 , 0 , 1 ,
0 , 0 , 1 , 0 ,
1 , 1 , 0 , 1 ,
0 , 1 , 1 , 0 ,
1 , 1 , 1 , 1 ,
1 , 1 , 1 , 0 ,
1 , 1 , 0 , 1 ,
0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0
};
static const unsigned char dm_matrixH[DMSIZESCOUNT] = {
10 , 12 , 8 , 14 ,
8 , 16 , 12 , 18 ,
8 , 20 , 12 , 8 ,
22 , 16 , 8 , 24 ,
8 , 12 , 26 , 20 ,
16 , 8 , 20 , 32 ,
16 , 8 , 12 , 26 ,
22 , 24 , 20 , 36 ,
26 , 24 , 40 , 26 ,
44 , 48 , 52 , 64 ,
72 , 80 , 88 , 96 ,
104 , 120 , 132 , 144
};
static const unsigned char dm_matrixW[DMSIZESCOUNT] = {
10 , 12 , 18 , 14 ,
32 , 16 , 26 , 18 ,
48 , 20 , 36 , 64 ,
22 , 36 , 80 , 24 ,
96 , 64 , 26 , 36 ,
48 , 120 , 44 , 32 ,
64 , 144 , 88 , 40 ,
48 , 48 , 64 , 36 ,
48 , 64 , 40 , 64 ,
44 , 48 , 52 , 64 ,
72 , 80 , 88 , 96 ,
104 , 120 , 132 , 144
};
static const unsigned char dm_matrixFH[DMSIZESCOUNT] = {
10 , 12 , 8 , 14 ,
8 , 16 , 12 , 18 ,
8 , 20 , 12 , 8 ,
22 , 16 , 8 , 24 ,
8 , 12 , 26 , 20 ,
16 , 8 , 20 , 16 ,
16 , 8 , 12 , 26 ,
22 , 24 , 20 , 18 ,
26 , 24 , 20 , 26 ,
22 , 24 , 26 , 16 ,
18 , 20 , 22 , 24 ,
26 , 20 , 22 , 24
};
static const unsigned char dm_matrixFW[DMSIZESCOUNT] = {
10 , 12 , 18 , 14 ,
16 , 16 , 26 , 18 ,
24 , 20 , 18 , 16 ,
22 , 18 , 20 , 24 ,
24 , 16 , 26 , 18 ,
24 , 20 , 22 , 16 ,
16 , 24 , 22 , 20 ,
24 , 24 , 16 , 18 ,
24 , 16 , 20 , 16 ,
22 , 24 , 26 , 16 ,
18 , 20 , 22 , 24 ,
26 , 20 , 22 , 24
};
static const unsigned char dm_matrixdatablock[DMSIZESCOUNT] = {
3 , 5 , 5 , 8 ,
10 , 12 , 16 , 18 ,
18 , 22 , 22 , 24 ,
30 , 32 , 32 , 36 ,
38 , 43 , 44 , 44 ,
49 , 49 , 56 , 62 ,
62 , 63 , 64 , 70 ,
72 , 80 , 84 , 86 ,
90 , 108 , 114 , 118 ,
144 , 174 , 102 , 140 ,
92 , 114 , 144 , 174 ,
136 , 175 , 163 , 156
};
static const unsigned char dm_matrixrsblock[DMSIZESCOUNT] = {
5 , 7 , 7 , 10 ,
11 , 12 , 14 , 14 ,
15 , 18 , 18 , 18 ,
20 , 24 , 22 , 24 ,
28 , 27 , 28 , 28 ,
28 , 32 , 34 , 36 ,
36 , 36 , 36 , 38 ,
38 , 41 , 42 , 42 ,
42 , 46 , 48 , 50 ,
56 , 68 , 42 , 56 ,
36 , 48 , 56 , 68 ,
56 , 68 , 62 , 62
};
#endif