2010-06-16 20:00:31 +12:00
|
|
|
/* dmatrix.h - Handles Data Matrix ECC 200 */
|
2008-11-05 21:43:13 +13:00
|
|
|
|
|
|
|
/*
|
|
|
|
libzint - the open source barcode library
|
2010-06-16 20:00:31 +12:00
|
|
|
Copyright (C) 2009 Robin Stuart <robin@zint.org.uk>
|
2013-05-17 05:26:38 +12:00
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
|
modification, are permitted provided that the following conditions
|
|
|
|
are met:
|
|
|
|
|
|
|
|
1. Redistributions of source code must retain the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer in the
|
|
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
3. Neither the name of the project nor the names of its contributors
|
|
|
|
may be used to endorse or promote products derived from this software
|
|
|
|
without specific prior written permission.
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
|
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
|
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
SUCH DAMAGE.
|
2010-06-16 20:00:31 +12:00
|
|
|
*/
|
|
|
|
|
|
|
|
#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
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int c40_shift[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int c40_value[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int text_shift[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int text_value[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int intsymbol[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int matrixH[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int matrixW[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int matrixFH[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int matrixFW[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int matrixbytes[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int matrixdatablock[] = {
|
2010-06-16 20:00:31 +12: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 };
|
|
|
|
|
2013-01-01 02:41:59 +13:00
|
|
|
static const int matrixrsblock[] = {
|
2010-06-16 20:00:31 +12: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 */
|