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 | 6 |
7 #ifndef _BC_PDF417SCANNINGDECODER_H_ | 7 #ifndef _BC_PDF417SCANNINGDECODER_H_ |
8 #define _BC_PDF417SCANNINGDECODER_H_ | 8 #define _BC_PDF417SCANNINGDECODER_H_ |
9 class CBC_CommonDecoderResult; | 9 class CBC_CommonDecoderResult; |
10 class CBC_CommonBitMatrix; | 10 class CBC_CommonBitMatrix; |
11 class CBC_ErrorCorrection; | 11 class CBC_ErrorCorrection; |
12 class CBC_Codeword; | 12 class CBC_Codeword; |
13 class CBC_BoundingBox; | 13 class CBC_BoundingBox; |
14 class CBC_ResultPoint; | 14 class CBC_ResultPoint; |
15 class CBC_BarcodeMetadata; | 15 class CBC_BarcodeMetadata; |
16 class CBC_BarcodeValue; | 16 class CBC_BarcodeValue; |
17 class CBC_DetectionResult; | 17 class CBC_DetectionResult; |
18 class CBC_DetectionResultRowIndicatorColumn; | 18 class CBC_DetectionResultRowIndicatorColumn; |
19 | 19 |
20 class CBC_PDF417ScanningDecoder | 20 class CBC_PDF417ScanningDecoder |
21 { | 21 { |
22 public: | 22 public: |
23 CBC_PDF417ScanningDecoder(); | 23 CBC_PDF417ScanningDecoder(); |
24 virtual ~CBC_PDF417ScanningDecoder(); | 24 virtual ~CBC_PDF417ScanningDecoder(); |
25 static void Initialize(); | 25 static void Initialize(); |
26 static void Finalize(); | 26 static void Finalize(); |
27 static CBC_CommonDecoderResult* decode(CBC_CommonBitMatrix* image, CBC_Resul
tPoint* imageTopLeft, CBC_ResultPoint* imageBottomLeft, CBC_ResultPoint* imageTo
pRight, | 27 static CBC_CommonDecoderResult* decode(CBC_CommonBitMatrix* image, CBC_Resul
tPoint* imageTopLeft, CBC_ResultPoint* imageBottomLeft, CBC_ResultPoint* imageTo
pRight, |
28 CBC_ResultPoint* imageBottomRight, FX
_INT32 minCodewordWidth, FX_INT32 maxCodewordWidth, FX_INT32 &e); | 28 CBC_ResultPoint* imageBottomRight, in
t32_t minCodewordWidth, int32_t maxCodewordWidth, int32_t &e); |
29 static CFX_ByteString toString(CFX_PtrArray* barcodeMatrix); | 29 static CFX_ByteString toString(CFX_PtrArray* barcodeMatrix); |
30 private: | 30 private: |
31 static FX_INT32 CODEWORD_SKEW_SIZE; | 31 static int32_t CODEWORD_SKEW_SIZE; |
32 static FX_INT32 MAX_ERRORS; | 32 static int32_t MAX_ERRORS; |
33 static FX_INT32 MAX_EC_CODEWORDS; | 33 static int32_t MAX_EC_CODEWORDS; |
34 static CBC_PDF417ECErrorCorrection* errorCorrection; | 34 static CBC_PDF417ECErrorCorrection* errorCorrection; |
35 static CBC_DetectionResult* merge(CBC_DetectionResultRowIndicatorColumn* lef
tRowIndicatorColumn, CBC_DetectionResultRowIndicatorColumn* rightRowIndicatorCol
umn, FX_INT32 &e); | 35 static CBC_DetectionResult* merge(CBC_DetectionResultRowIndicatorColumn* lef
tRowIndicatorColumn, CBC_DetectionResultRowIndicatorColumn* rightRowIndicatorCol
umn, int32_t &e); |
36 static CBC_BoundingBox* adjustBoundingBox(CBC_DetectionResultRowIndicatorCol
umn* rowIndicatorColumn, FX_INT32 &e); | 36 static CBC_BoundingBox* adjustBoundingBox(CBC_DetectionResultRowIndicatorCol
umn* rowIndicatorColumn, int32_t &e); |
37 static FX_INT32 getMax(CFX_Int32Array& values); | 37 static int32_t getMax(CFX_Int32Array& values); |
38 static CBC_BarcodeMetadata* getBarcodeMetadata(CBC_DetectionResultRowIndicat
orColumn* leftRowIndicatorColumn, CBC_DetectionResultRowIndicatorColumn* rightRo
wIndicatorColumn); | 38 static CBC_BarcodeMetadata* getBarcodeMetadata(CBC_DetectionResultRowIndicat
orColumn* leftRowIndicatorColumn, CBC_DetectionResultRowIndicatorColumn* rightRo
wIndicatorColumn); |
39 static CBC_DetectionResultRowIndicatorColumn* getRowIndicatorColumn(CBC_Comm
onBitMatrix* image, CBC_BoundingBox* boundingBox, CBC_ResultPoint startPoint, | 39 static CBC_DetectionResultRowIndicatorColumn* getRowIndicatorColumn(CBC_Comm
onBitMatrix* image, CBC_BoundingBox* boundingBox, CBC_ResultPoint startPoint, |
40 FX_BOOL leftToRight, FX_INT32 minCodewordWidth, FX_INT32 maxCodeword
Width); | 40 FX_BOOL leftToRight, int32_t minCodewordWidth, int32_t maxCodewordWi
dth); |
41 static void adjustCodewordCount(CBC_DetectionResult* detectionResult, CFX_Pt
rArray* barcodeMatrix, FX_INT32 &e); | 41 static void adjustCodewordCount(CBC_DetectionResult* detectionResult, CFX_Pt
rArray* barcodeMatrix, int32_t &e); |
42 static CBC_CommonDecoderResult* createDecoderResult(CBC_DetectionResult* det
ectionResult, FX_INT32 &e); | 42 static CBC_CommonDecoderResult* createDecoderResult(CBC_DetectionResult* det
ectionResult, int32_t &e); |
43 static CBC_CommonDecoderResult* createDecoderResultFromAmbiguousValues(FX_IN
T32 ecLevel, CFX_Int32Array &codewords, CFX_Int32Array &erasureArray, CFX_Int32A
rray &ambiguousIndexes, | 43 static CBC_CommonDecoderResult* createDecoderResultFromAmbiguousValues(int32
_t ecLevel, CFX_Int32Array &codewords, CFX_Int32Array &erasureArray, CFX_Int32Ar
ray &ambiguousIndexes, |
44 CFX_PtrArray& ambiguousIndexValues, FX_INT32 &e); | 44 CFX_PtrArray& ambiguousIndexValues, int32_t &e); |
45 static CFX_PtrArray* createBarcodeMatrix(CBC_DetectionResult* detectionResul
t); | 45 static CFX_PtrArray* createBarcodeMatrix(CBC_DetectionResult* detectionResul
t); |
46 static FX_BOOL isValidBarcodeColumn(CBC_DetectionResult* detectionResult, FX
_INT32 barcodeColumn); | 46 static FX_BOOL isValidBarcodeColumn(CBC_DetectionResult* detectionResult, in
t32_t barcodeColumn); |
47 static FX_INT32 getStartColumn(CBC_DetectionResult* detectionResult, FX_INT3
2 barcodeColumn, FX_INT32 imageRow, FX_BOOL leftToRight); | 47 static int32_t getStartColumn(CBC_DetectionResult* detectionResult, int32_t
barcodeColumn, int32_t imageRow, FX_BOOL leftToRight); |
48 static CBC_Codeword* detectCodeword(CBC_CommonBitMatrix* image, FX_INT32 min
Column, FX_INT32 maxColumn, FX_BOOL leftToRight, FX_INT32 startColumn, | 48 static CBC_Codeword* detectCodeword(CBC_CommonBitMatrix* image, int32_t minC
olumn, int32_t maxColumn, FX_BOOL leftToRight, int32_t startColumn, |
49 FX_INT32 imageRow, FX_INT32 minCodewordW
idth, FX_INT32 maxCodewordWidth); | 49 int32_t imageRow, int32_t minCodewordWid
th, int32_t maxCodewordWidth); |
50 static CFX_Int32Array* getModuleBitCount(CBC_CommonBitMatrix* image, FX_INT3
2 minColumn, FX_INT32 maxColumn, FX_BOOL leftToRight, FX_INT32 startColumn, FX_I
NT32 imageRow); | 50 static CFX_Int32Array* getModuleBitCount(CBC_CommonBitMatrix* image, int32_t
minColumn, int32_t maxColumn, FX_BOOL leftToRight, int32_t startColumn, int32_t
imageRow); |
51 static FX_INT32 getNumberOfECCodeWords(FX_INT32 barcodeECLevel); | 51 static int32_t getNumberOfECCodeWords(int32_t barcodeECLevel); |
52 static FX_INT32 adjustCodewordStartColumn(CBC_CommonBitMatrix* image, FX_INT
32 minColumn, FX_INT32 maxColumn, FX_BOOL leftToRight, FX_INT32 codewordStartCol
umn, FX_INT32 imageRow); | 52 static int32_t adjustCodewordStartColumn(CBC_CommonBitMatrix* image, int32_t
minColumn, int32_t maxColumn, FX_BOOL leftToRight, int32_t codewordStartColumn,
int32_t imageRow); |
53 static FX_BOOL checkCodewordSkew(FX_INT32 codewordSize, FX_INT32 minCodeword
Width, FX_INT32 maxCodewordWidth); | 53 static FX_BOOL checkCodewordSkew(int32_t codewordSize, int32_t minCodewordWi
dth, int32_t maxCodewordWidth); |
54 static CBC_CommonDecoderResult* decodeCodewords(CFX_Int32Array &codewords, F
X_INT32 ecLevel, CFX_Int32Array &erasures, FX_INT32 &e); | 54 static CBC_CommonDecoderResult* decodeCodewords(CFX_Int32Array &codewords, i
nt32_t ecLevel, CFX_Int32Array &erasures, int32_t &e); |
55 static FX_INT32 correctErrors(CFX_Int32Array &codewords, CFX_Int32Array &era
sures, FX_INT32 numECCodewords, FX_INT32 &e); | 55 static int32_t correctErrors(CFX_Int32Array &codewords, CFX_Int32Array &eras
ures, int32_t numECCodewords, int32_t &e); |
56 static void verifyCodewordCount(CFX_Int32Array &codewords, FX_INT32 numECCod
ewords, FX_INT32 &e); | 56 static void verifyCodewordCount(CFX_Int32Array &codewords, int32_t numECCode
words, int32_t &e); |
57 static CFX_Int32Array* getBitCountForCodeword(FX_INT32 codeword); | 57 static CFX_Int32Array* getBitCountForCodeword(int32_t codeword); |
58 static FX_INT32 getCodewordBucketNumber(FX_INT32 codeword); | 58 static int32_t getCodewordBucketNumber(int32_t codeword); |
59 static FX_INT32 getCodewordBucketNumber(CFX_Int32Array& moduleBitCount); | 59 static int32_t getCodewordBucketNumber(CFX_Int32Array& moduleBitCount); |
60 }; | 60 }; |
61 #endif | 61 #endif |
OLD | NEW |