| // Copyright 2014 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #ifndef XFA_FXBARCODE_QRCODE_BC_QRDETECTOR_H_ |
| #define XFA_FXBARCODE_QRCODE_BC_QRDETECTOR_H_ |
| |
| #include "core/fxcrt/include/fx_basic.h" |
| |
| class CBC_ResultPoint; |
| class CBC_CommonBitMatrix; |
| class CBC_QRDetectorResult; |
| class CBC_QRFinderPatternInfo; |
| class CBC_QRAlignmentPattern; |
| |
| class CBC_QRDetector { |
| private: |
| CBC_CommonBitMatrix* m_image; |
| |
| public: |
| CBC_QRDetector(CBC_CommonBitMatrix* image); |
| virtual ~CBC_QRDetector(); |
| |
| CBC_CommonBitMatrix* GetImage(); |
| CBC_QRDetectorResult* Detect(int32_t hints, int32_t& e); |
| CBC_QRDetectorResult* ProcessFinderPatternInfo(CBC_QRFinderPatternInfo* info, |
| int32_t& e); |
| FX_FLOAT CalculateModuleSize(CBC_ResultPoint* topLeft, |
| CBC_ResultPoint* topRight, |
| CBC_ResultPoint* bottomLeft); |
| FX_FLOAT CalculateModuleSizeOneWay(CBC_ResultPoint* pattern, |
| CBC_ResultPoint* otherPattern); |
| FX_FLOAT SizeOfBlackWhiteBlackRunBothWays(int32_t fromX, |
| int32_t fromY, |
| int32_t toX, |
| int32_t toY); |
| FX_FLOAT SizeOfBlackWhiteBlackRun(int32_t fromX, |
| int32_t fromY, |
| int32_t toX, |
| int32_t toY); |
| CBC_QRAlignmentPattern* FindAlignmentInRegion(FX_FLOAT overallEstModuleSize, |
| int32_t estAlignmentX, |
| int32_t estAlignmentY, |
| FX_FLOAT allowanceFactor, |
| int32_t& e); |
| static int32_t Round(FX_FLOAT d); |
| static int32_t ComputeDimension(CBC_ResultPoint* topLeft, |
| CBC_ResultPoint* topRight, |
| CBC_ResultPoint* bottomLeft, |
| FX_FLOAT moduleSize, |
| int32_t& e); |
| static CBC_CommonBitMatrix* SampleGrid(CBC_CommonBitMatrix* image, |
| CBC_ResultPoint* topLeft, |
| CBC_ResultPoint* topRight, |
| CBC_ResultPoint* bottomLeft, |
| CBC_ResultPoint* alignmentPattern, |
| int32_t dimension, |
| int32_t& e); |
| }; |
| |
| #endif // XFA_FXBARCODE_QRCODE_BC_QRDETECTOR_H_ |