| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
| 6 | |
| 7 #ifndef _BC_PDF417SCANNINGDECODER_H_ | |
| 8 #define _BC_PDF417SCANNINGDECODER_H_ | |
| 9 class CBC_CommonDecoderResult; | |
| 10 class CBC_CommonBitMatrix; | |
| 11 class CBC_ErrorCorrection; | |
| 12 class CBC_Codeword; | |
| 13 class CBC_BoundingBox; | |
| 14 class CBC_ResultPoint; | |
| 15 class CBC_BarcodeMetadata; | |
| 16 class CBC_BarcodeValue; | |
| 17 class CBC_DetectionResult; | |
| 18 class CBC_DetectionResultRowIndicatorColumn; | |
| 19 class CBC_PDF417ScanningDecoder; | |
| 20 class CBC_PDF417ScanningDecoder : public CFX_Object | |
| 21 { | |
| 22 public: | |
| 23 CBC_PDF417ScanningDecoder(); | |
| 24 virtual ~CBC_PDF417ScanningDecoder(); | |
| 25 static void Initialize(); | |
| 26 static void Finalize(); | |
| 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); | |
| 29 static CFX_ByteString toString(CFX_PtrArray* barcodeMatrix); | |
| 30 private: | |
| 31 static FX_INT32 CODEWORD_SKEW_SIZE; | |
| 32 static FX_INT32 MAX_ERRORS; | |
| 33 static FX_INT32 MAX_EC_CODEWORDS; | |
| 34 static CBC_PDF417ECErrorCorrection* errorCorrection; | |
| 35 static CBC_DetectionResult* merge(CBC_DetectionResultRowIndicatorColumn* lef
tRowIndicatorColumn, CBC_DetectionResultRowIndicatorColumn* rightRowIndicatorCol
umn, FX_INT32 &e); | |
| 36 static CBC_BoundingBox* adjustBoundingBox(CBC_DetectionResultRowIndicatorCol
umn* rowIndicatorColumn, FX_INT32 &e); | |
| 37 static FX_INT32 getMax(CFX_Int32Array& values); | |
| 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, | |
| 40 FX_BOOL leftToRight, FX_INT32 minCodewordWidth, FX_INT32 maxCodeword
Width); | |
| 41 static void adjustCodewordCount(CBC_DetectionResult* detectionResult, CFX_Pt
rArray* barcodeMatrix, FX_INT32 &e); | |
| 42 static CBC_CommonDecoderResult* createDecoderResult(CBC_DetectionResult* det
ectionResult, FX_INT32 &e); | |
| 43 static CBC_CommonDecoderResult* createDecoderResultFromAmbiguousValues(FX_IN
T32 ecLevel, CFX_Int32Array &codewords, CFX_Int32Array &erasureArray, CFX_Int32A
rray &ambiguousIndexes, | |
| 44 CFX_PtrArray& ambiguousIndexValues, FX_INT32 &e); | |
| 45 static CFX_PtrArray* createBarcodeMatrix(CBC_DetectionResult* detectionResul
t); | |
| 46 static FX_BOOL isValidBarcodeColumn(CBC_DetectionResult* detectionResult, FX
_INT32 barcodeColumn); | |
| 47 static FX_INT32 getStartColumn(CBC_DetectionResult* detectionResult, FX_INT3
2 barcodeColumn, FX_INT32 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, | |
| 49 FX_INT32 imageRow, FX_INT32 minCodewordW
idth, FX_INT32 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); | |
| 51 static FX_INT32 getNumberOfECCodeWords(FX_INT32 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); | |
| 53 static FX_BOOL checkCodewordSkew(FX_INT32 codewordSize, FX_INT32 minCodeword
Width, FX_INT32 maxCodewordWidth); | |
| 54 static CBC_CommonDecoderResult* decodeCodewords(CFX_Int32Array &codewords, F
X_INT32 ecLevel, CFX_Int32Array &erasures, FX_INT32 &e); | |
| 55 static FX_INT32 correctErrors(CFX_Int32Array &codewords, CFX_Int32Array &era
sures, FX_INT32 numECCodewords, FX_INT32 &e); | |
| 56 static void verifyCodewordCount(CFX_Int32Array &codewords, FX_INT32 numECCod
ewords, FX_INT32 &e); | |
| 57 static CFX_Int32Array* getBitCountForCodeword(FX_INT32 codeword); | |
| 58 static FX_INT32 getCodewordBucketNumber(FX_INT32 codeword); | |
| 59 static FX_INT32 getCodewordBucketNumber(CFX_Int32Array& moduleBitCount); | |
| 60 }; | |
| 61 #endif | |
| OLD | NEW |