Merge to XFA: Use stdint.h types throughout PDFium.
[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 \r
14 class CBC_QRFinderPatternFinder\r
15 {\r
16 private:\r
17     const static int32_t CENTER_QUORUM;\r
18     const static int32_t MIN_SKIP;\r
19     const static int32_t MAX_MODULES;\r
20     const static int32_t 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     int32_t FindRowSkip();\r
29     CBC_CommonBitMatrix* GetImage();\r
30     CBC_QRFinderPatternInfo* Find(int32_t hint, int32_t &e);\r
31 \r
32     CFX_Int32Array &GetCrossCheckStateCount();\r
33     CFX_PtrArray *GetPossibleCenters();\r
34     CFX_PtrArray *SelectBestpatterns(int32_t &e);\r
35 \r
36     FX_BOOL HandlePossibleCenter(const CFX_Int32Array &stateCount, int32_t i, int32_t j);\r
37     FX_BOOL HaveMultiplyConfirmedCenters();\r
38     FX_FLOAT CenterFromEnd(const CFX_Int32Array &stateCount, int32_t end);\r
39     FX_FLOAT CrossCheckVertical(int32_t startI, int32_t centerJ, int32_t maxCount, int32_t originalStateCountTotal);\r
40     FX_FLOAT CrossCheckHorizontal(int32_t startJ, int32_t CenterI, int32_t maxCOunt, int32_t 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