From 0a55f5839e56ac7ad7967ce35539fa991aed51c2 Mon Sep 17 00:00:00 2001 From: Harald Oehlmann Date: Fri, 30 Aug 2019 18:41:58 +0200 Subject: [PATCH] 2018-08-30 HaO Change DMRE from AIM standard to ISO/EC29158 DMRE (not backward compatible) --- backend/dmatrix.h | 168 ++++++++++++++++++++++++------------------- docs/manual.txt | 26 ++++--- frontend_qt/grpDM.ui | 63 +++++++++++++--- 3 files changed, 167 insertions(+), 90 deletions(-) diff --git a/backend/dmatrix.h b/backend/dmatrix.h index 129bedb2..4403f439 100644 --- a/backend/dmatrix.h +++ b/backend/dmatrix.h @@ -94,53 +94,62 @@ static const char text_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[] = { +/* 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*/ 14, /* 8: 24x24 , 36*/ - 16, /* 9: 26x26 , 44*/ 18, /* 10: 32x32 , 62*/ 22, /* 11: 36x36 , 86*/ 25, /* 12: 40x40 ,114*/ - 27, /* 13: 44x44 ,144*/ 28, /* 14: 48x48 ,174*/ 29, /* 15: 52x52 ,204*/ 30, /* 16: 64x64 ,280*/ - 31, /* 17: 72x72 ,368*/ 32, /* 18: 80x80 ,456*/ 33, /* 19: 88x88 ,576*/ 34, /* 20: 96x96 ,696*/ - 35, /* 21:104x104,816*/ 36, /* 22:120x120,1050*/37, /* 23:132x132,1304*/38, /* 24:144x144,1558*/ + 7, /* 5: 18x18 , 18*/ 9, /* 6: 20x20 , 22*/ 12, /* 7: 22x22 , 30*/ 15, /* 8: 24x24 , 36*/ + 18, /* 9: 26x26 , 44*/ 23, /* 10: 32x32 , 62*/ 31, /* 11: 36x36 , 86*/ 34, /* 12: 40x40 ,114*/ + 36, /* 13: 44x44 ,144*/ 37, /* 14: 48x48 ,174*/ 38, /* 15: 52x52 ,204*/ 39, /* 16: 64x64 ,280*/ + 40, /* 17: 72x72 ,368*/ 41, /* 18: 80x80 ,456*/ 42, /* 19: 88x88 ,576*/ 43, /* 20: 96x96 ,696*/ + 44, /* 21:104x104,816*/ 45, /* 22:120x120,1050*/46, /* 23:132x132,1304*/47, /* 24:144x144,1558*/ 2, /* 25: 8x18 , 5*/ 4, /* 26: 8x32 , 10*/ 6, /* 27: 12x26 , 16*/ 10, /* 28: 12x36 , 22*/ - 13, /* 29: 16x36 , 32*/ 17, /* 30: 16x48 , 49*/ 8, /* 31: 8x48 , 18*/ 11, /* 32: 8x64 , 24*/ - 15, /* 33: 12x64 , 43*/ 19, /* 34: 16x64 , 62*/ 21, /* 35: 24x48 , 80*/ 24, /* 36: 24x64 ,108*/ - 20, /* 37: 26x40 , 70*/ 23, /* 38: 26x48 , 90*/ 26, /* 39: 26x64 ,118*/ + 13, /* 29: 16x36 , 32*/ 20, /* 30: 16x48 , 49*/ +/* DMRE */ + 8, /* 31: 8x48 , 18*/ 11, /* 32: 8x64 , 24*/ 14, /* 33: 8x80 , 32*/ 16, /* 34: 8x96 , 38*/ + 21, /* 35: 8x120, 49*/ 25, /* 36: 8x144, 63*/ 17, /* 37: 12x64 , 43*/ 26, /* 38: 12x88 , 64*/ + 24, /* 39: 16x64 , 62*/ 19, /* 40: 20x36 , 44*/ 22, /* 41: 20x44 , 56*/ 30, /* 42: 20x64 , 84*/ + 28, /* 43: 22x48 , 72*/ 29, /* 44: 24x48 , 80*/ 33, /* 45: 24x64 ,108*/ 27, /* 46: 26x40 , 70*/ + 32, /* 47: 26x48 , 90*/ 35, /* 48: 26x64 ,118*/ 0 }; // Number of DM Sizes -#define DMSIZESCOUNT 39 +#define DMSIZESCOUNT 48 // Number of 144x144 for special interlace -#define INTSYMBOL144 38 +#define INTSYMBOL144 47 // Is the current code a DMRE code ? // This is the case, if intsymbol index >= 30 static const char 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 */ - /*12*/ 0, /* 22x22 ,30 */ 0, /* 16x36 ,32 */ 0, /* 24x24 ,36 */ 1, /* 12x64 ,43 */ - /*16*/ 0, /* 26x26 ,44 */ 0, /* 16x48 ,49 */ 0, /* 32x32 ,62 */ 1, /* 16x64 ,62 */ - /*20*/ 1, /* 26x40 , 70*/ 1, /* 24x48 ,80 */ 0, /* 36x36 ,86 */ 1, /* 26x48 ,90 */ - /*24*/ 1, /* 24x64 ,108*/ 0, /* 40x40 ,114*/ 1, /* 26x64 ,118*/ 0, /* 44x44 ,144*/ - /*28*/ 0, /* 48x48,174 */ 0, /* 52x52,204 */ 0, /* 64x64,280 */ 0, /* 72x72,368 */ - /*32*/ 0, /* 80x80,456 */ 0, /* 88x88,576 */ 0, /* 96x96,696 */ 0, /*104x104,816*/ - /*36*/ 0, /*120x120,1050*/ 0, /*132x132,1304*/0 /*144x144,1558*/ + /* 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*/ + /*12*/ 0, /* 22x22 , 30*/ 0, /* 16x36 , 32*/ 1, /* 8x80 , 32*/ 0, /* 24x24 , 36*/ + /*16*/ 1, /* 8x96 , 38*/ 1, /* 12x64 , 43*/ 0, /* 26x26 , 44*/ 1, /* 20x36 , 44*/ + /*20*/ 0, /* 16x48 , 49*/ 1, /* 8x120, 49*/ 1, /* 20x44 , 56*/ 0, /* 32x32 , 62*/ + /*24*/ 1, /* 16x64 , 62*/ 1, /* 8x144, 63*/ 1, /* 12x88 , 64*/ 1, /* 26x40 , 70*/ + /*28*/ 1, /* 22x48 , 72*/ 1, /* 24x48 , 80*/ 1, /* 20x64 , 84*/ 0, /* 36x36 , 86*/ + /*32*/ 1, /* 26x48 , 90*/ 1, /* 24x64 ,108*/ 0, /* 40x40 ,114*/ 1, /* 26x64 ,118*/ + /*36*/ 0, /* 44x44 ,144*/ 0, /* 48x48 ,174*/ 0, /* 52x52 ,204*/ 0, /* 64x64 ,280*/ + /*40*/ 0, /* 72x72 ,368*/ 0, /* 80x80 ,456*/ 0, /* 88x88 ,576*/ 0, /* 96x96 ,696*/ + /*44*/ 0, /*104x104,816*/ 0, /*120x120,1050*/0, /*132x132,1304*/0 /*144x144,1558*/ }; // Horizontal matrix size static const unsigned short int 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 */ - /*12*/ 22, /* 22x22 ,30 */ 16, /* 16x36 ,32 */ 24, /* 24x24 ,36 */ 12, /* 12x64 ,43 */ - /*16*/ 26, /* 26x26 ,44 */ 16, /* 16x48 ,49 */ 32, /* 32x32 ,62 */ 16, /* 16x64 ,62 */ - /*20*/ 26, /* 26x40 , 70*/ 24, /* 24x48 ,80 */ 36, /* 36x36 ,86 */ 26, /* 26x48 ,90 */ - /*24*/ 24, /* 24x64 ,108*/ 40, /* 40x40 ,114*/ 26, /* 26x64 ,118*/ 44, /* 44x44 ,144*/ - /*28*/ 48, /* 48x48,174 */ 52, /* 52x52,204 */ 64, /* 64x64,280 */ 72, /* 72x72,368 */ - /*32*/ 80, /* 80x80,456 */ 88, /* 88x88,576 */ 96, /* 96x96,696 */ 104, /*104x104,816*/ - /*36*/ 120, /*120x120,1050*/ 132,/*132x132,1304*/144 /*144x144,1558*/ + /* 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*/ + /*12*/ 22, /* 22x22 , 30*/ 16, /* 16x36 , 32*/ 8, /* 8x80 , 32*/ 24, /* 24x24 , 36*/ + /*16*/ 8, /* 8x96 , 38*/ 12, /* 12x64 , 43*/ 26, /* 26x26 , 44*/ 20, /* 20x36 , 44*/ + /*20*/ 16, /* 16x48 , 49*/ 8, /* 8x120, 49*/ 20, /* 20x44 , 56*/ 32, /* 32x32 , 62*/ + /*24*/ 16, /* 16x64 , 62*/ 8, /* 8x144, 63*/ 12, /* 12x88 , 64*/ 26, /* 26x40 , 70*/ + /*28*/ 22, /* 22x48 , 72*/ 24, /* 24x48 , 80*/ 20, /* 20x64 , 84*/ 36, /* 36x36 , 86*/ + /*32*/ 26, /* 26x48 , 90*/ 24, /* 24x64 ,108*/ 40, /* 40x40 ,114*/ 26, /* 26x64 ,118*/ + /*36*/ 44, /* 44x44 ,144*/ 48, /* 48x48 ,174*/ 52, /* 52x52 ,204*/ 64, /* 64x64 ,280*/ + /*40*/ 72, /* 72x72 ,368*/ 80, /* 80x80 ,456*/ 88, /* 88x88 ,576*/ 96, /* 96x96 ,696*/ + /*44*/104, /*104x104,816*/ 120,/*120x120,1050*/132,/*132x132,1304*/144 /*144x144,1558*/ }; // Vertical matrix sizes @@ -149,28 +158,33 @@ static const unsigned short int 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 */ - /*12*/ 22, /* 22x22 */ 36, /* 16x36 */ 24, /* 24x24 */ 64, /* 12x64 */ - /*16*/ 26, /* 26x26 */ 48, /* 16x48 */ 32, /* 32x32 */ 64, /* 16x64 */ - /*20*/ 40, /* 26x40 */ 48, /* 24x48 */ 36, /* 36x36 */ 48, /* 26x48 */ - /*24*/ 64, /* 24x64 */ 40, /* 40x40 */ 64, /* 26x64 */ 44, /* 44x44 */ - /*28*/ 48, /* 48x48 */ 52, /* 52x52 */ 64, /* 64x64 */ 72, /* 72x72 */ - /*32*/ 80, /* 80x80 */ 88, /* 88x88 */ 96, /* 96x96 */ 104,/*104x104*/ - /*36*/ 120,/*120x120*/132, /*132x132*/144 /*144x144*/ + /*12*/ 22, /* 22x22 */ 36, /* 16x36 */ 80, /* 8x80 */ 24, /* 24x24 */ + /*16*/ 96, /* 8x96 */ 64, /* 12x64 */ 26, /* 26x26 */ 36, /* 20x36 */ + /*20*/ 48, /* 16x48 */120, /* 8x120*/ 44, /* 20x44 */ 32, /* 32x32 */ + /*24*/ 64, /* 16x64 */144, /* 8x144*/ 88, /* 12x88 */ 40, /* 26x40 */ + /*28*/ 48, /* 22x48 */ 48, /* 24x48 */ 64, /* 20x64 */ 36, /* 36x36 */ + /*32*/ 48, /* 26x48 */ 64, /* 24x64 */ 40, /* 40x40 */ 64, /* 26x64 */ + /*36*/ 44, /* 44x44 */ 48, /* 48x48 */ 52, /* 52x52 */ 64, /* 64x64 */ + /*40*/ 72, /* 72x72 */ 80, /* 80x80 */ 88, /* 88x88 */ 96, /* 96x96 */ + /*44*/104, /*104x104*/120, /*120x120*/ 132, /*132x132*/144 /*144x144*/ + }; // Horizontal submodule size (including subfinder) static const unsigned short int matrixFH[] = { - /* 0*/ 10, /* 10x10 */ 12, /* 12x12 */ 8, /* 8x18 */ 14, /* 14x14 */ + /* 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 */ - /*12*/ 22, /* 22x22 */ 16, /* 16x36 */ 24, /* 24x24 */ 12, /* 12x64 */ - /*16*/ 26, /* 26x26 */ 16, /* 16x48 */ 16, /* 32x32 */ 16, /* 16x64 */ - /*20*/ 26, /* 26x40 */ 24, /* 24x48 */ 18, /* 36x36 */ 26, /* 26x48 */ - /*24*/ 24, /* 24x64 */ 20, /* 40x40 */ 26, /* 26x64 */ 22, /* 44x44 */ - /*28*/ 24, /* 48x48 */ 26, /* 52x52 */ 16, /* 64x64 */ 18, /* 72x72 */ - /*32*/ 20, /* 80x80 */ 22, /* 88x88 */ 24, /* 96x96 */ 26, /*104x104*/ - /*36*/ 20, /*120x120*/ 22, /*132x132*/ 24 /*144x144*/ + /*12*/ 22, /* 22x22 */ 16, /* 16x36 */ 8, /* 8x80 */ 24, /* 24x24 */ + /*16*/ 8, /* 8x96 */ 12, /* 12x64 */ 26, /* 26x26 */ 20, /* 20x36 */ + /*20*/ 16, /* 16x48 */ 8, /* 8x120*/ 20, /* 20x44 */ 16, /* 32x32 */ + /*24*/ 16, /* 16x64 */ 8, /* 8x144*/ 12, /* 12x88 */ 26, /* 26x40 */ + /*28*/ 22, /* 22x48 */ 24, /* 24x48 */ 20, /* 20x64 */ 18, /* 36x36 */ + /*32*/ 26, /* 26x48 */ 24, /* 24x64 */ 20, /* 40x40 */ 26, /* 26x64 */ + /*36*/ 22, /* 44x44 */ 24, /* 48x48 */ 26, /* 52x52 */ 16, /* 64x64 */ + /*40*/ 18, /* 72x72 */ 20, /* 80x80 */ 22, /* 88x88 */ 24, /* 96x96 */ + /*44*/ 26, /*104x104*/ 20, /*120x120*/ 22, /*132x132*/ 24 /*144x144*/ }; // Vertical submodule size (including subfinder) @@ -179,13 +193,15 @@ static const unsigned short int 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 */ - /*12*/ 22, /* 22x22 */ 18, /* 16x36 */ 24, /* 24x24 */ 16, /* 12x64 */ - /*16*/ 26, /* 26x26 */ 24, /* 16x48 */ 16, /* 32x32 */ 16, /* 16x64 */ - /*20*/ 20, /* 26x40 */ 24, /* 24x48 */ 18, /* 36x36 */ 24, /* 26x48 */ - /*24*/ 16, /* 24x64 */ 20, /* 40x40 */ 16, /* 26x64 */ 22, /* 44x44 */ - /*28*/ 24, /* 48x48 */ 26, /* 52x52 */ 16, /* 64x64 */ 18, /* 72x72 */ - /*32*/ 20, /* 80x80 */ 22, /* 88x88 */ 24, /* 96x96 */ 26, /*104x104*/ - /*36*/ 20, /*120x120*/ 22, /*132x132*/ 24 /*144x144*/ + /*12*/ 22, /* 22x22 */ 18, /* 16x36 */ 20, /* 8x80 */ 24, /* 24x24 */ + /*16*/ 24, /* 8x96 */ 16, /* 12x64 */ 26, /* 26x26 */ 18, /* 20x36 */ + /*20*/ 24, /* 16x48 */ 20, /* 8x120*/ 22, /* 20x44 */ 16, /* 32x32 */ + /*24*/ 16, /* 16x64 */ 24, /* 8x144*/ 22, /* 12x88 */ 20, /* 26x40 */ + /*28*/ 24, /* 22x48 */ 24, /* 24x48 */ 16, /* 20x64 */ 18, /* 36x36 */ + /*32*/ 24, /* 26x48 */ 16, /* 24x64 */ 20, /* 40x40 */ 16, /* 26x64 */ + /*36*/ 22, /* 44x44 */ 24, /* 48x48 */ 26, /* 52x52 */ 16, /* 64x64 */ + /*40*/ 18, /* 72x72 */ 20, /* 80x80 */ 22, /* 88x88 */ 24, /* 96x96 */ + /*44*/ 26, /*104x104*/ 20, /*120x120*/ 22, /*132x132*/ 24 /*144x144*/ }; // Total Data Codewords @@ -194,13 +210,15 @@ static const unsigned short int 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 */ - /*12*/ 30, /* 22x22 */ 32, /* 16x36 */ 36, /* 24x24 */ 43, /* 12x64 */ - /*16*/ 44, /* 26x26 */ 49, /* 16x48 */ 62, /* 32x32 */ 62, /* 16x64 */ - /*20*/ 70, /* 26x40 */ 80, /* 24x48 */ 86, /* 36x36 */ 90, /* 26x48 */ - /*24*/ 108, /* 24x64 */ 114, /* 40x40 */ 118, /* 26x64 */ 144, /* 44x44 */ - /*28*/ 174, /* 48x48 */ 204, /* 52x52 */ 280, /* 64x64 */ 368, /* 72x72 */ - /*32*/ 456, /* 80x80 */ 576, /* 88x88 */ 696, /* 96x96 */ 816, /*104x104*/ - /*36*/1050, /*120x120*/1304, /*132x132*/1558 /*144x144*/ + /*12*/ 30, /* 22x22 */ 32, /* 16x36 */ 32, /* 8x80 */ 36, /* 24x24 */ + /*16*/ 38, /* 8x96 */ 43, /* 12x64 */ 44, /* 26x26 */ 44, /* 20x36 */ + /*20*/ 49, /* 16x48 */ 49, /* 8x120*/ 56, /* 20x44 */ 62, /* 32x32 */ + /*24*/ 62, /* 16x64 */ 63, /* 8x144*/ 64, /* 12x88 */ 70, /* 26x40 */ + /*28*/ 72, /* 22x48 */ 80, /* 24x48 */ 84, /* 20x64 */ 86, /* 36x36 */ + /*32*/ 90, /* 26x48 */ 108, /* 24x64 */ 114, /* 40x40 */ 118, /* 26x64 */ + /*36*/ 144, /* 44x44 */ 174, /* 48x48 */ 204, /* 52x52 */ 280, /* 64x64 */ + /*40*/ 368, /* 72x72 */ 456, /* 80x80 */ 576, /* 88x88 */ 696, /* 96x96 */ + /*44*/ 816, /*104x104*/1050, /*120x120*/1304, /*132x132*/1558 /*144x144*/ }; // Data Codewords per RS-Block @@ -209,13 +227,15 @@ static const unsigned short int 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 */ - /*12*/ 30, /* 22x22 */ 32, /* 16x36 */ 36, /* 24x24 */ 43, /* 12x64 */ - /*16*/ 44, /* 26x26 */ 49, /* 16x48 */ 62, /* 32x32 */ 62, /* 16x64 */ - /*20*/ 70, /* 26x40 */ 80, /* 24x48 */ 86, /* 36x36 */ 90, /* 26x48 */ - /*24*/ 108, /* 24x64 */ 114, /* 40x40 */ 118, /* 26x64 */ 144, /* 44x44 */ - /*28*/ 174, /* 48x48 */ 102, /* 52x52 */ 140, /* 64x64 */ 92, /* 72x72 */ - /*32*/ 114, /* 80x80 */ 144, /* 88x88 */ 174, /* 96x96 */ 136, /*104x104*/ - /*36*/ 175, /*120x120*/ 163, /*132x132*/ 156 /* 144x144*/ + /*12*/ 30, /* 22x22 */ 32, /* 16x36 */ 32, /* 8x80 */ 36, /* 24x24 */ + /*16*/ 38, /* 8x96 */ 43, /* 12x64 */ 44, /* 26x26 */ 44, /* 20x36 */ + /*20*/ 49, /* 16x48 */ 49, /* 8x120*/ 56, /* 20x44 */ 62, /* 32x32 */ + /*24*/ 62, /* 16x64 */ 63, /* 8x144*/ 64, /* 12x88 */ 70, /* 26x40 */ + /*28*/ 72, /* 22x48 */ 80, /* 24x48 */ 84, /* 20x64 */ 86, /* 36x36 */ + /*32*/ 90, /* 26x48 */ 108, /* 24x64 */ 114, /* 40x40 */ 118, /* 26x64 */ + /*36*/ 144, /* 44x44 */ 174, /* 48x48 */ 102, /* 52x52 */ 140, /* 64x64 */ + /*40*/ 92, /* 72x72 */ 114, /* 80x80 */ 144, /* 88x88 */ 174, /* 96x96 */ + /*44*/ 136, /*104x104*/ 175, /*120x120*/ 163, /*132x132*/ 156 /* 144x144*/ }; // ECC Codewords per RS-Block @@ -224,13 +244,15 @@ static const unsigned short int 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 */ - /*12*/ 20, /* 22x22 */ 24, /* 16x36 */ 24, /* 24x24 */ 27, /* 12x64 */ - /*16*/ 28, /* 26x26 */ 28, /* 16x48 */ 36, /* 32x32 */ 36, /* 16x64 */ - /*20*/ 38, /* 26x40 */ 41, /* 24x48 */ 42, /* 36x36 */ 42, /* 26x48 */ - /*24*/ 46, /* 24x64 */ 48, /* 40x40 */ 50, /* 26x64 */ 56, /* 44x44 */ - /*28*/ 68, /* 48x48 */ 42, /* 52x52 */ 56, /* 64x64 */ 36, /* 72x72 */ - /*32*/ 48, /* 80x80 */ 56, /* 88x88 */ 68, /* 96x96 */ 56, /*104x104*/ - /*36*/ 68, /*120x120*/ 62, /*132x132*/ 62 /*144x144*/ + /*12*/ 20, /* 22x22 */ 24, /* 16x36 */ 22, /* 8x80 */ 24, /* 24x24 */ + /*16*/ 28, /* 8x96 */ 27, /* 12x64 */ 28, /* 26x26 */ 28, /* 20x36 */ + /*20*/ 28, /* 16x48 */ 32, /* 8x120*/ 34, /* 20x44 */ 36, /* 32x32 */ + /*24*/ 36, /* 16x64 */ 36, /* 8x144*/ 36, /* 12x88 */ 38, /* 26x40 */ + /*28*/ 38, /* 22x48 */ 41, /* 24x48 */ 42, /* 20x64 */ 42, /* 36x36 */ + /*32*/ 42, /* 26x48 */ 46, /* 24x64 */ 48, /* 40x40 */ 50, /* 26x64 */ + /*36*/ 56, /* 44x44 */ 68, /* 48x48 */ 42, /* 52x52 */ 56, /* 64x64 */ + /*40*/ 36, /* 72x72 */ 48, /* 80x80 */ 56, /* 88x88 */ 68, /* 96x96 */ + /*44*/ 56, /*104x104*/ 68, /*120x120*/ 62, /*132x132*/ 62 /*144x144*/ }; diff --git a/docs/manual.txt b/docs/manual.txt index 4c0a378b..9f7049a0 100644 --- a/docs/manual.txt +++ b/docs/manual.txt @@ -1828,7 +1828,7 @@ When using automatic symbol sizes you can force Zint to use square symbols (versions 1-24) at the command line by using the option --square and when using the API by setting the value option_3 = DM_SQUARE. -Data Matrix Rectangular Extension (DMRE) codes may be generated with the +Data Matrix Rectangular Extension (ISO/IEC21471) codes may be generated with the following values as before: --------------------- @@ -1836,15 +1836,25 @@ Input | Symbol Size --------------------- 31 | 8 x 48 32 | 8 x 64 -33 | 12 x 64 -34 | 16 x 64 -35 | 24 x 48 -36 | 24 x 64 -37 | 26 x 40 -38 | 26 x 48 -39 | 26 x 64 +33 | 8 x 80 +34 | 8 x 96 +35 | 8 x 120 +36 | 8 x 144 +37 | 12 x 64 +38 | 12 x 88 +39 | 16 x 64 +40 | 20 x 36 +41 | 20 x 44 +42 | 20 x 64 +43 | 22 x 48 +44 | 24 x 48 +45 | 24 x 64 +46 | 26 x 40 +47 | 26 x 48 +48 | 26 x 64 --------------------- + DMRE symbol sizes may be activated in automatic size mode using the option --dmre or by the API option_3 = DM_DMRE diff --git a/frontend_qt/grpDM.ui b/frontend_qt/grpDM.ui index e7917d38..bee3b7b7 100644 --- a/frontend_qt/grpDM.ui +++ b/frontend_qt/grpDM.ui @@ -209,47 +209,92 @@ - 8 x 48 (DMRE) + 8 x 48 (DIN+ISO DMRE) - 8 x 64 (DMRE) + 8 x 64 (DIN+ISO DMRE) - 12 x 64 (DMRE) + 8 x 80 (ISO DMRE) - 16 x 64 (DMRE) + 8 x 96 (ISO DMRE) - 24 x 48 (DMRE) + 8 x 120 (ISO DMRE) - 24 x 64 (DMRE) + 8 x 144 (ISO DMRE) - 26 x 40 (DMRE) + 12 x 64 (DIN+ISO DMRE) - 26 x 48 (DMRE) + 12 x 88 (ISO DMRE) - 26 x 64 (DMRE) + 16 x 64 (DIN+ISO DMRE) + + + + + 20 x 36 (ISO DMRE) + + + + + 20 x 44 (ISO DMRE) + + + + + 20 x 64 (ISO DMRE) + + + + + 22 x 48 (ISO DMRE) + + + + + 24 x 48 (DIN+ISO DMRE) + + + + + 24 x 64 (DIN+ISO DMRE) + + + + + 26 x 40 (DIN+ISO DMRE) + + + + + 26 x 48 (DIN+ISO DMRE) + + + + + 26 x 64 (DIN+ISO DMRE)