blob: f3ac77a9c0498275581e2e22f415f81a00fa30b1 [file] [log] [blame]
// 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_COMMON_BC_WHITERECTANGLEDETECTOR_H_
#define XFA_FXBARCODE_COMMON_BC_WHITERECTANGLEDETECTOR_H_
#include "core/fxcrt/include/fx_basic.h"
class CBC_CommonBitMatrix;
class CBC_ResultPoint;
class CBC_WhiteRectangleDetector {
public:
CBC_WhiteRectangleDetector(CBC_CommonBitMatrix* image);
CBC_WhiteRectangleDetector(CBC_CommonBitMatrix* image,
int32_t initSize,
int32_t x,
int32_t y);
virtual ~CBC_WhiteRectangleDetector();
virtual void Init(int32_t& e);
CFX_ArrayTemplate<CBC_ResultPoint*>* Detect(int32_t& e);
private:
int32_t Round(float d);
CBC_ResultPoint* GetBlackPointOnSegment(FX_FLOAT aX,
FX_FLOAT aY,
FX_FLOAT bX,
FX_FLOAT bY);
int32_t DistanceL2(FX_FLOAT aX, FX_FLOAT aY, FX_FLOAT bX, FX_FLOAT bY);
CFX_ArrayTemplate<CBC_ResultPoint*>* CenterEdges(CBC_ResultPoint* y,
CBC_ResultPoint* z,
CBC_ResultPoint* x,
CBC_ResultPoint* t) const;
FX_BOOL ContainsBlackPoint(int32_t a,
int32_t b,
int32_t fixed,
FX_BOOL horizontal);
static const int32_t INIT_SIZE = 30;
static const int32_t CORR = 1;
CBC_CommonBitMatrix* m_image;
int32_t m_height;
int32_t m_width;
int32_t m_leftInit;
int32_t m_rightInit;
int32_t m_downInit;
int32_t m_upInit;
};
#endif // XFA_FXBARCODE_COMMON_BC_WHITERECTANGLEDETECTOR_H_