Organize barcode codes into modules.
[pdfium.git] / xfa / src / fxbarcode / qrcode / BC_QRFinderPatternFinder.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _BC_QRFINDERPATTERNFINDER_H_\r
8 #define _BC_QRFINDERPATTERNFINDER_H_\r
9 class CBC_CommonBitMatrix;\r
10 class CBC_QRFinderPattern;\r
11 class CBC_ResultPoint;\r
12 class CBC_QRFinderPatternInfo;\r
13 class CBC_QRFinderPatternFinder;\r
14 class CBC_QRFinderPatternFinder  : public CFX_Object\r
15 {\r
16 private:\r
17     const static FX_INT32 CENTER_QUORUM;\r
18     const static FX_INT32 MIN_SKIP;\r
19     const static FX_INT32 MAX_MODULES;\r
20     const static FX_INT32 INTEGER_MATH_SHIFT;\r
21     FX_BOOL m_hasSkipped;\r
22     CBC_CommonBitMatrix* m_image;\r
23     CFX_Int32Array m_crossCheckStateCount;\r
24     CFX_PtrArray m_possibleCenters;\r
25 public:\r
26     CBC_QRFinderPatternFinder(CBC_CommonBitMatrix *image);\r
27     virtual ~CBC_QRFinderPatternFinder();\r
28     FX_INT32 FindRowSkip();\r
29     CBC_CommonBitMatrix* GetImage();\r
30     CBC_QRFinderPatternInfo* Find(FX_INT32 hint, FX_INT32 &e);\r
31 \r
32     CFX_Int32Array &GetCrossCheckStateCount();\r
33     CFX_PtrArray *GetPossibleCenters();\r
34     CFX_PtrArray *SelectBestpatterns(FX_INT32 &e);\r
35 \r
36     FX_BOOL HandlePossibleCenter(const CFX_Int32Array &stateCount, FX_INT32 i, FX_INT32 j);\r
37     FX_BOOL HaveMultiplyConfirmedCenters();\r
38     FX_FLOAT CenterFromEnd(const CFX_Int32Array &stateCount, FX_INT32 end);\r
39     FX_FLOAT CrossCheckVertical(FX_INT32 startI, FX_INT32 centerJ, FX_INT32 maxCount, FX_INT32 originalStateCountTotal);\r
40     FX_FLOAT CrossCheckHorizontal(FX_INT32 startJ, FX_INT32 CenterI, FX_INT32 maxCOunt, FX_INT32 originalStateCountTotal);\r
41     static void OrderBestPatterns(CFX_PtrArray *patterns);\r
42     static FX_BOOL FoundPatternCross(const CFX_Int32Array &stateCount);\r
43     static FX_FLOAT Distance(CBC_ResultPoint* point1, CBC_ResultPoint* point2);\r
44 };\r
45 #endif\r