2010-06-16 12:00:31 +04:00
/* dmatrix.h - Handles Data Matrix ECC 200 */
2008-11-05 11:43:13 +03:00
/*
libzint - the open source barcode library
2010-06-16 12:00:31 +04:00
Copyright ( C ) 2009 Robin Stuart < robin @ zint . org . uk >
*/
# include "common.h"
# ifndef __IEC16022ECC200_H
# define __IEC16022ECC200_H
# ifdef __cplusplus
extern " C "
{
# endif /* __cplusplus */
extern int data_matrix_200 ( struct zint_symbol * symbol , unsigned char source [ ] , int length ) ;
# ifdef __cplusplus
}
# endif /* __cplusplus */
# define MAXBARCODE 3116
# define DM_ASCII 1
# define DM_C40 2
# define DM_TEXT 3
# define DM_X12 4
# define DM_EDIFACT 5
# define DM_BASE256 6
2012-12-31 17:41:59 +04:00
static const int c40_shift [ ] = {
2010-06-16 12:00:31 +04:00
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 } ;
2012-12-31 17:41:59 +04:00
static const int c40_value [ ] = {
2010-06-16 12:00:31 +04:00
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 } ;
2012-12-31 17:41:59 +04:00
static const int text_shift [ ] = {
2010-06-16 12:00:31 +04:00
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 } ;
2012-12-31 17:41:59 +04:00
static const int text_value [ ] = {
2010-06-16 12:00:31 +04:00
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 } ;
2012-12-31 17:41:59 +04:00
static const int intsymbol [ ] = {
2010-06-16 12:00:31 +04:00
0 , 1 , 3 , 5 , 7 , 8 , 10 , 12 , 13 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 2 , 4 , 6 , 9 , 11 , 14 } ;
2012-12-31 17:41:59 +04:00
static const int matrixH [ ] = {
2010-06-16 12:00:31 +04:00
10 , 12 , 8 , 14 , 8 , 16 , 12 , 18 , 20 , 12 , 22 , 16 , 24 , 26 , 16 , 32 , 36 , 40 , 44 , 48 ,
52 , 64 , 72 , 80 , 88 , 96 , 104 , 120 , 132 , 144 } ;
2012-12-31 17:41:59 +04:00
static const int matrixW [ ] = {
2010-06-16 12:00:31 +04:00
10 , 12 , 18 , 14 , 32 , 16 , 26 , 18 , 20 , 36 , 22 , 36 , 24 , 26 , 48 , 32 , 36 , 40 , 44 ,
48 , 52 , 64 , 72 , 80 , 88 , 96 , 104 , 120 , 132 , 144 } ;
2012-12-31 17:41:59 +04:00
static const int matrixFH [ ] = {
2010-06-16 12:00:31 +04:00
10 , 12 , 8 , 14 , 8 , 16 , 12 , 18 , 20 , 12 , 22 , 16 , 24 , 26 , 16 , 16 , 18 , 20 , 22 , 24 ,
26 , 16 , 18 , 20 , 22 , 24 , 26 , 20 , 22 , 24 } ;
2012-12-31 17:41:59 +04:00
static const int matrixFW [ ] = {
2010-06-16 12:00:31 +04:00
10 , 12 , 18 , 14 , 16 , 16 , 26 , 18 , 20 , 18 , 22 , 18 , 24 , 26 , 24 , 16 , 18 , 20 , 22 ,
24 , 26 , 16 , 18 , 20 , 22 , 24 , 26 , 20 , 22 , 24 } ;
2012-12-31 17:41:59 +04:00
static const int matrixbytes [ ] = {
2010-06-16 12:00:31 +04:00
3 , 5 , 5 , 8 , 10 , 12 , 16 , 18 , 22 , 22 , 30 , 32 , 36 , 44 , 49 , 62 , 86 , 114 , 144 ,
174 , 204 , 280 , 368 , 456 , 576 , 696 , 816 , 1050 , 1304 , 1558 } ;
2012-12-31 17:41:59 +04:00
static const int matrixdatablock [ ] = {
2010-06-16 12:00:31 +04:00
3 , 5 , 5 , 8 , 10 , 12 , 16 , 18 , 22 , 22 , 30 , 32 , 36 , 44 , 49 , 62 , 86 , 114 , 144 ,
174 , 102 , 140 , 92 , 114 , 144 , 174 , 136 , 175 , 163 , 156 } ;
2012-12-31 17:41:59 +04:00
static const int matrixrsblock [ ] = {
2010-06-16 12:00:31 +04:00
5 , 7 , 7 , 10 , 11 , 12 , 14 , 14 , 18 , 18 , 20 , 24 , 24 , 28 , 28 , 36 , 42 , 48 , 56 , 68 ,
42 , 56 , 36 , 48 , 56 , 68 , 56 , 68 , 62 , 62 } ;
# endif /* __IEC16022ECC200_H */