| OLD | NEW | 
|---|
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
| 6 // Original code is licensed as follows: | 6 // Original code is licensed as follows: | 
| 7 /* | 7 /* | 
| 8  * Copyright 2009 ZXing authors | 8  * Copyright 2009 ZXing authors | 
| 9  * | 9  * | 
| 10  * Licensed under the Apache License, Version 2.0 (the "License"); | 10  * Licensed under the Apache License, Version 2.0 (the "License"); | 
| 11  * you may not use this file except in compliance with the License. | 11  * you may not use this file except in compliance with the License. | 
| 12  * You may obtain a copy of the License at | 12  * You may obtain a copy of the License at | 
| 13  * | 13  * | 
| 14  *      http://www.apache.org/licenses/LICENSE-2.0 | 14  *      http://www.apache.org/licenses/LICENSE-2.0 | 
| 15  * | 15  * | 
| 16  * Unless required by applicable law or agreed to in writing, software | 16  * Unless required by applicable law or agreed to in writing, software | 
| 17  * distributed under the License is distributed on an "AS IS" BASIS, | 17  * distributed under the License is distributed on an "AS IS" BASIS, | 
| 18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
| 19  * See the License for the specific language governing permissions and | 19  * See the License for the specific language governing permissions and | 
| 20  * limitations under the License. | 20  * limitations under the License. | 
| 21  */ | 21  */ | 
| 22 | 22 | 
| 23 #include "xfa/src/fxbarcode/pdf417/BC_PDF417DecodedBitStreamParser.h" | 23 #include "xfa/src/fxbarcode/pdf417/BC_PDF417DecodedBitStreamParser.h" | 
| 24 | 24 | 
| 25 #include <stdlib.h> | 25 #include <stdlib.h> | 
| 26 | 26 | 
| 27 #include "third_party/bigint/BigIntegerLibrary.hh" | 27 #include "third_party/bigint/BigIntegerLibrary.hh" | 
| 28 #include "xfa/src/fxbarcode/BC_DecoderResult.h" | 28 #include "xfa/src/fxbarcode/BC_DecoderResult.h" | 
| 29 #include "xfa/src/fxbarcode/barcode.h" |  | 
| 30 #include "xfa/src/fxbarcode/common/BC_CommonDecoderResult.h" | 29 #include "xfa/src/fxbarcode/common/BC_CommonDecoderResult.h" | 
| 31 #include "xfa/src/fxbarcode/pdf417/BC_PDF417ResultMetadata.h" | 30 #include "xfa/src/fxbarcode/pdf417/BC_PDF417ResultMetadata.h" | 
|  | 31 #include "xfa/src/fxbarcode/utils.h" | 
| 32 | 32 | 
| 33 #define TEXT_COMPACTION_MODE_LATCH 900 | 33 #define TEXT_COMPACTION_MODE_LATCH 900 | 
| 34 #define BYTE_COMPACTION_MODE_LATCH 901 | 34 #define BYTE_COMPACTION_MODE_LATCH 901 | 
| 35 #define NUMERIC_COMPACTION_MODE_LATCH 902 | 35 #define NUMERIC_COMPACTION_MODE_LATCH 902 | 
| 36 #define BYTE_COMPACTION_MODE_LATCH_6 924 | 36 #define BYTE_COMPACTION_MODE_LATCH_6 924 | 
| 37 #define BEGIN_MACRO_PDF417_CONTROL_BLOCK 928 | 37 #define BEGIN_MACRO_PDF417_CONTROL_BLOCK 928 | 
| 38 #define BEGIN_MACRO_PDF417_OPTIONAL_FIELD 923 | 38 #define BEGIN_MACRO_PDF417_OPTIONAL_FIELD 923 | 
| 39 #define MACRO_PDF417_TERMINATOR 922 | 39 #define MACRO_PDF417_TERMINATOR 922 | 
| 40 #define MODE_SHIFT_TO_BYTE_COMPACTION_MODE 913 | 40 #define MODE_SHIFT_TO_BYTE_COMPACTION_MODE 913 | 
| 41 | 41 | 
| 42 int32_t CBC_DecodedBitStreamPaser::MAX_NUMERIC_CODEWORDS = 15; | 42 int32_t CBC_DecodedBitStreamPaser::MAX_NUMERIC_CODEWORDS = 15; | 
| 43 int32_t CBC_DecodedBitStreamPaser::NUMBER_OF_SEQUENCE_CODEWORDS = 2; | 43 int32_t CBC_DecodedBitStreamPaser::NUMBER_OF_SEQUENCE_CODEWORDS = 2; | 
| 44 int32_t CBC_DecodedBitStreamPaser::PL = 25; | 44 int32_t CBC_DecodedBitStreamPaser::PL = 25; | 
| 45 int32_t CBC_DecodedBitStreamPaser::LL = 27; | 45 int32_t CBC_DecodedBitStreamPaser::LL = 27; | 
| 46 int32_t CBC_DecodedBitStreamPaser::AS = 27; | 46 int32_t CBC_DecodedBitStreamPaser::AS = 27; | 
| 47 int32_t CBC_DecodedBitStreamPaser::ML = 28; | 47 int32_t CBC_DecodedBitStreamPaser::ML = 28; | 
| 48 int32_t CBC_DecodedBitStreamPaser::AL = 28; | 48 int32_t CBC_DecodedBitStreamPaser::AL = 28; | 
| 49 int32_t CBC_DecodedBitStreamPaser::PS = 29; | 49 int32_t CBC_DecodedBitStreamPaser::PS = 29; | 
| 50 int32_t CBC_DecodedBitStreamPaser::PAL = 29; | 50 int32_t CBC_DecodedBitStreamPaser::PAL = 29; | 
| 51 FX_CHAR CBC_DecodedBitStreamPaser::PUNCT_CHARS[29] = { | 51 FX_CHAR CBC_DecodedBitStreamPaser::PUNCT_CHARS[29] = { | 
| 52     ';', '<',  '>',  '@', '[', '\\', '}', '_', '`', '~', | 52     ';', '<',  '>',  '@', '[', '\\', '}', '_', '`', '~', | 
| 53     '!', '\r', '\t', ',', ':', '\n', '-', '.', '$', '/', | 53     '!', '\r', '\t', ',', ':', '\n', '-', '.', '$', '/', | 
| 54     '"', '|',  '*',  '(', ')', '?',  '{', '}', '\''}; | 54     '"', '|',  '*',  '(', ')', '?',  '{', '}', '\''}; | 
| 55 FX_CHAR CBC_DecodedBitStreamPaser::MIXED_CHARS[30] = { | 55 FX_CHAR CBC_DecodedBitStreamPaser::MIXED_CHARS[30] = { | 
| 56     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '&', '\r', '\t', | 56     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '&', '\r', '\t', | 
| 57     ',', ':', '#', '-', '.', '$', '/', '+', '%', '*', '=', '^'}; | 57     ',', ':', '#', '-', '.', '$', '/', '+', '%', '*', '=', '^'}; | 
|  | 58 | 
| 58 void CBC_DecodedBitStreamPaser::Initialize() {} | 59 void CBC_DecodedBitStreamPaser::Initialize() {} | 
| 59 void CBC_DecodedBitStreamPaser::Finalize() {} | 60 void CBC_DecodedBitStreamPaser::Finalize() {} | 
| 60 CBC_DecodedBitStreamPaser::CBC_DecodedBitStreamPaser() {} | 61 CBC_DecodedBitStreamPaser::CBC_DecodedBitStreamPaser() {} | 
| 61 CBC_DecodedBitStreamPaser::~CBC_DecodedBitStreamPaser() {} | 62 CBC_DecodedBitStreamPaser::~CBC_DecodedBitStreamPaser() {} | 
| 62 CBC_CommonDecoderResult* CBC_DecodedBitStreamPaser::decode( | 63 CBC_CommonDecoderResult* CBC_DecodedBitStreamPaser::decode( | 
| 63     CFX_Int32Array& codewords, | 64     CFX_Int32Array& codewords, | 
| 64     CFX_ByteString ecLevel, | 65     CFX_ByteString ecLevel, | 
| 65     int32_t& e) { | 66     int32_t& e) { | 
| 66   CFX_ByteString result; | 67   CFX_ByteString result; | 
| 67   int32_t codeIndex = 1; | 68   int32_t codeIndex = 1; | 
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 483   for (int32_t i = 0; i < count; i++) { | 484   for (int32_t i = 0; i < count; i++) { | 
| 484     result = result * nineHundred + BigInteger(codewords[i]); | 485     result = result * nineHundred + BigInteger(codewords[i]); | 
| 485   } | 486   } | 
| 486   CFX_ByteString resultString(bigIntegerToString(result).c_str()); | 487   CFX_ByteString resultString(bigIntegerToString(result).c_str()); | 
| 487   if (resultString.GetAt(0) != '1') { | 488   if (resultString.GetAt(0) != '1') { | 
| 488     e = BCExceptionFormatInstance; | 489     e = BCExceptionFormatInstance; | 
| 489     return ' '; | 490     return ' '; | 
| 490   } | 491   } | 
| 491   return resultString.Mid(1, resultString.GetLength() - 1); | 492   return resultString.Mid(1, resultString.GetLength() - 1); | 
| 492 } | 493 } | 
| OLD | NEW | 
|---|