14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved.
24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file.
44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef XFA_FXBARCODE_COMMON_BC_COMMONBITMATRIX_H_
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define XFA_FXBARCODE_COMMON_BC_COMMONBITMATRIX_H_
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_system.h"
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CBC_CommonBitArray;
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CBC_CommonBitMatrix {
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public:
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CBC_CommonBitMatrix();
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual ~CBC_CommonBitMatrix();
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual void Init(int32_t dimension);
204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual void Init(int32_t width, int32_t height);
214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool Get(int32_t x, int32_t y);
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void Set(int32_t x, int32_t y);
244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void Flip(int32_t x, int32_t y);
254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void Clear();
264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetRegion(int32_t left,
274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                 int32_t top,
284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                 int32_t width,
294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                 int32_t height,
304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                 int32_t& e);
314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CBC_CommonBitArray* GetRow(int32_t y, CBC_CommonBitArray* row);
324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetRow(int32_t y, CBC_CommonBitArray* row);
334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CBC_CommonBitArray* GetCol(int32_t y, CBC_CommonBitArray* row);
344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetCol(int32_t y, CBC_CommonBitArray* col);
354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetWidth();
364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetHeight();
374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetRowSize();
384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetDimension(int32_t& e);
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t* GetBits();
404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private:
424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t m_width;
434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t m_height;
444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t m_rowSize;
454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t* m_bits;
464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // XFA_FXBARCODE_COMMON_BC_COMMONBITMATRIX_H_
49