summaryrefslogtreecommitdiff
path: root/xfa/fxbarcode/datamatrix/BC_ErrorCorrection.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2016-03-18 09:32:06 -0700
committerTom Sepez <tsepez@chromium.org>2016-03-18 09:32:06 -0700
commit314743a4a752716b8e977482ad6c757c70d019db (patch)
tree3bb2332e5232c1b37e9da0ccb02aec2e87de1a00 /xfa/fxbarcode/datamatrix/BC_ErrorCorrection.cpp
parent3420909bbb47d6e47d6c561cbcce06d056fdf0a3 (diff)
downloadpdfium-314743a4a752716b8e977482ad6c757c70d019db.tar.xz
Reduce size of several PDFium constant tables.
Either by using the smallest possible data type, or By accurately calcuating the bounds, or Moving to array of pointers for varying length rows. Notes: The 929 is reassuring since PDF417 barcode uses GF(929). FX_WCHAR is 4 bytes on unix (2 on windows). Binary looks to be about 240k smaller on linux/64 R=ochang@chromium.org Review URL: https://codereview.chromium.org/1807373002 .
Diffstat (limited to 'xfa/fxbarcode/datamatrix/BC_ErrorCorrection.cpp')
-rw-r--r--xfa/fxbarcode/datamatrix/BC_ErrorCorrection.cpp113
1 files changed, 74 insertions, 39 deletions
diff --git a/xfa/fxbarcode/datamatrix/BC_ErrorCorrection.cpp b/xfa/fxbarcode/datamatrix/BC_ErrorCorrection.cpp
index 98c0599e50..f091de08b5 100644
--- a/xfa/fxbarcode/datamatrix/BC_ErrorCorrection.cpp
+++ b/xfa/fxbarcode/datamatrix/BC_ErrorCorrection.cpp
@@ -25,45 +25,80 @@
#include "xfa/fxbarcode/datamatrix/BC_SymbolInfo.h"
#include "xfa/fxbarcode/datamatrix/BC_SymbolShapeHint.h"
-int32_t CBC_ErrorCorrection::FACTOR_SETS[] = {5, 7, 10, 11, 12, 14, 18, 20,
- 24, 28, 36, 42, 48, 56, 62, 68};
-int32_t CBC_ErrorCorrection::FACTORS[][100] = {
- {228, 48, 15, 111, 62},
- {23, 68, 144, 134, 240, 92, 254},
- {28, 24, 185, 166, 223, 248, 116, 255, 110, 61},
- {175, 138, 205, 12, 194, 168, 39, 245, 60, 97, 120},
- {41, 153, 158, 91, 61, 42, 142, 213, 97, 178, 100, 242},
- {156, 97, 192, 252, 95, 9, 157, 119, 138, 45, 18, 186, 83, 185},
- {83, 195, 100, 39, 188, 75, 66, 61, 241, 213, 109, 129, 94, 254, 225, 48,
- 90, 188},
- {15, 195, 244, 9, 233, 71, 168, 2, 188, 160, 153, 145, 253, 79, 108, 82, 27,
- 174, 186, 172},
- {52, 190, 88, 205, 109, 39, 176, 21, 155, 197, 251, 223, 155, 21, 5, 172,
- 254, 124, 12, 181, 184, 96, 50, 193},
- {211, 231, 43, 97, 71, 96, 103, 174, 37, 151, 170, 53, 75, 34, 249, 121, 17,
- 138, 110, 213, 141, 136, 120, 151, 233, 168, 93, 255},
- {245, 127, 242, 218, 130, 250, 162, 181, 102, 120, 84, 179, 220, 251, 80,
- 182, 229, 18, 2, 4, 68, 33, 101, 137, 95, 119, 115, 44, 175, 184, 59, 25,
- 225, 98, 81, 112},
- {77, 193, 137, 31, 19, 38, 22, 153, 247, 105, 122, 2, 245, 133, 242, 8, 175,
- 95, 100, 9, 167, 105, 214, 111, 57, 121, 21, 1, 253, 57, 54, 101, 248, 202,
- 69, 50, 150, 177, 226, 5, 9, 5},
- {245, 132, 172, 223, 96, 32, 117, 22, 238, 133, 238, 231, 205, 188, 237, 87,
- 191, 106, 16, 147, 118, 23, 37, 90, 170, 205, 131, 88, 120, 100, 66, 138,
- 186, 240, 82, 44, 176, 87, 187, 147, 160, 175, 69, 213, 92, 253, 225, 19},
- {175, 9, 223, 238, 12, 17, 220, 208, 100, 29, 175, 170, 230, 192, 215, 235,
- 150, 159, 36, 223, 38, 200, 132, 54, 228, 146, 218, 234, 117, 203, 29, 232,
- 144, 238, 22, 150, 201, 117, 62, 207, 164, 13, 137, 245, 127, 67, 247, 28,
- 155, 43, 203, 107, 233, 53, 143, 46},
- {242, 93, 169, 50, 144, 210, 39, 118, 202, 188, 201, 189, 143, 108, 196, 37,
- 185, 112, 134, 230, 245, 63, 197, 190, 250, 106, 185, 221, 175, 64, 114,
- 71, 161, 44, 147, 6, 27, 218, 51, 63, 87, 10, 40, 130, 188, 17, 163, 31,
- 176, 170, 4, 107, 232, 7, 94, 166, 224, 124, 86, 47, 11, 204},
- {220, 228, 173, 89, 251, 149, 159, 56, 89, 33, 147, 244, 154, 36, 73, 127,
- 213, 136, 248, 180, 234, 197, 158, 177, 68, 122, 93, 213, 15, 160, 227,
- 236, 66, 139, 153, 185, 202, 167, 179, 25, 220, 232, 96, 210, 231, 136,
- 223, 239, 181, 241, 59, 52, 172, 25, 49, 232, 211, 189, 64, 54, 108, 153,
- 132, 63, 96, 103, 82, 186}};
+namespace {
+
+const uint8_t FACTOR_SETS[] = {5, 7, 10, 11, 12, 14, 18, 20,
+ 24, 28, 36, 42, 48, 56, 62, 68};
+
+const uint8_t FACTORS_0[5] = {228, 48, 15, 111, 62};
+const uint8_t FACTORS_1[7] = {23, 68, 144, 134, 240, 92, 254};
+const uint8_t FACTORS_2[10] = {28, 24, 185, 166, 223, 248, 116, 255, 110, 61};
+const uint8_t FACTORS_3[11] = {175, 138, 205, 12, 194, 168,
+ 39, 245, 60, 97, 120};
+
+const uint8_t FACTORS_4[12] = {41, 153, 158, 91, 61, 42,
+ 142, 213, 97, 178, 100, 242};
+
+const uint8_t FACTORS_5[14] = {156, 97, 192, 252, 95, 9, 157,
+ 119, 138, 45, 18, 186, 83, 185};
+
+const uint8_t FACTORS_6[18] = {83, 195, 100, 39, 188, 75, 66, 61, 241,
+ 213, 109, 129, 94, 254, 225, 48, 90, 188};
+
+const uint8_t FACTORS_7[20] = {15, 195, 244, 9, 233, 71, 168, 2, 188, 160,
+ 153, 145, 253, 79, 108, 82, 27, 174, 186, 172};
+
+const uint8_t FACTORS_8[24] = {52, 190, 88, 205, 109, 39, 176, 21,
+ 155, 197, 251, 223, 155, 21, 5, 172,
+ 254, 124, 12, 181, 184, 96, 50, 193};
+
+const uint8_t FACTORS_9[28] = {211, 231, 43, 97, 71, 96, 103, 174, 37, 151,
+ 170, 53, 75, 34, 249, 121, 17, 138, 110, 213,
+ 141, 136, 120, 151, 233, 168, 93, 255};
+
+const uint8_t FACTORS_10[36] = {245, 127, 242, 218, 130, 250, 162, 181, 102,
+ 120, 84, 179, 220, 251, 80, 182, 229, 18,
+ 2, 4, 68, 33, 101, 137, 95, 119, 115,
+ 44, 175, 184, 59, 25, 225, 98, 81, 112};
+
+const uint8_t FACTORS_11[42] = {
+ 77, 193, 137, 31, 19, 38, 22, 153, 247, 105, 122, 2, 245, 133,
+ 242, 8, 175, 95, 100, 9, 167, 105, 214, 111, 57, 121, 21, 1,
+ 253, 57, 54, 101, 248, 202, 69, 50, 150, 177, 226, 5, 9, 5};
+
+const uint8_t FACTORS_12[48] = {
+ 245, 132, 172, 223, 96, 32, 117, 22, 238, 133, 238, 231,
+ 205, 188, 237, 87, 191, 106, 16, 147, 118, 23, 37, 90,
+ 170, 205, 131, 88, 120, 100, 66, 138, 186, 240, 82, 44,
+ 176, 87, 187, 147, 160, 175, 69, 213, 92, 253, 225, 19};
+
+const uint8_t FACTORS_13[56] = {
+ 175, 9, 223, 238, 12, 17, 220, 208, 100, 29, 175, 170, 230, 192,
+ 215, 235, 150, 159, 36, 223, 38, 200, 132, 54, 228, 146, 218, 234,
+ 117, 203, 29, 232, 144, 238, 22, 150, 201, 117, 62, 207, 164, 13,
+ 137, 245, 127, 67, 247, 28, 155, 43, 203, 107, 233, 53, 143, 46};
+
+const uint8_t FACTORS_14[62] = {
+ 242, 93, 169, 50, 144, 210, 39, 118, 202, 188, 201, 189, 143,
+ 108, 196, 37, 185, 112, 134, 230, 245, 63, 197, 190, 250, 106,
+ 185, 221, 175, 64, 114, 71, 161, 44, 147, 6, 27, 218, 51,
+ 63, 87, 10, 40, 130, 188, 17, 163, 31, 176, 170, 4, 107,
+ 232, 7, 94, 166, 224, 124, 86, 47, 11, 204};
+
+const uint8_t FACTORS_15[68] = {
+ 220, 228, 173, 89, 251, 149, 159, 56, 89, 33, 147, 244, 154, 36,
+ 73, 127, 213, 136, 248, 180, 234, 197, 158, 177, 68, 122, 93, 213,
+ 15, 160, 227, 236, 66, 139, 153, 185, 202, 167, 179, 25, 220, 232,
+ 96, 210, 231, 136, 223, 239, 181, 241, 59, 52, 172, 25, 49, 232,
+ 211, 189, 64, 54, 108, 153, 132, 63, 96, 103, 82, 186};
+
+const uint8_t* const FACTORS[16] = {
+ FACTORS_0, FACTORS_1, FACTORS_2, FACTORS_3, FACTORS_4, FACTORS_5,
+ FACTORS_6, FACTORS_7, FACTORS_8, FACTORS_9, FACTORS_10, FACTORS_11,
+ FACTORS_12, FACTORS_13, FACTORS_14, FACTORS_15};
+
+} // namespace
+
int32_t CBC_ErrorCorrection::MODULO_VALUE = 0x12D;
int32_t CBC_ErrorCorrection::LOG[256] = {0};
int32_t CBC_ErrorCorrection::ALOG[256] = {0};