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_WHITERECTANLEDETECTOR_H_
8 #define _BC_WHITERECTANLEDETECTOR_H_
9 class CBC_CommonBitMatrix;
10 class CBC_ResultPoint;
11 class CBC_WhiteRectangleDetector {
12  public:
13   CBC_WhiteRectangleDetector(CBC_CommonBitMatrix* image);
14   CBC_WhiteRectangleDetector(CBC_CommonBitMatrix* image,
15                              int32_t initSize,
16                              int32_t x,
17                              int32_t y);
18   virtual ~CBC_WhiteRectangleDetector();
19   CFX_PtrArray* Detect(int32_t& e);
20   virtual void Init(int32_t& e);
21 
22  private:
23   int32_t Round(float d);
24   CBC_ResultPoint* GetBlackPointOnSegment(FX_FLOAT aX,
25                                           FX_FLOAT aY,
26                                           FX_FLOAT bX,
27                                           FX_FLOAT bY);
28   int32_t DistanceL2(FX_FLOAT aX, FX_FLOAT aY, FX_FLOAT bX, FX_FLOAT bY);
29   CFX_PtrArray* CenterEdges(CBC_ResultPoint* y,
30                             CBC_ResultPoint* z,
31                             CBC_ResultPoint* x,
32                             CBC_ResultPoint* t);
33   FX_BOOL ContainsBlackPoint(int32_t a,
34                              int32_t b,
35                              int32_t fixed,
36                              FX_BOOL horizontal);
37   const static int32_t INIT_SIZE;
38   const static int32_t CORR;
39 
40   CBC_CommonBitMatrix* m_image;
41   int32_t m_height;
42   int32_t m_width;
43   int32_t m_leftInit;
44   int32_t m_rightInit;
45   int32_t m_downInit;
46   int32_t m_upInit;
47 };
48 #endif
49