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_PDF417_BC_PDF417BARCODEMATRIX_H_
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define XFA_FXBARCODE_PDF417_BC_PDF417BARCODEMATRIX_H_
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_basic.h"
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CBC_BarcodeRow;
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CBC_BarcodeMatrix {
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public:
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CBC_BarcodeMatrix();
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CBC_BarcodeMatrix(int32_t height, int32_t width);
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual ~CBC_BarcodeMatrix();
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void set(int32_t x, int32_t y, uint8_t value);
214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void setMatrix(int32_t x, int32_t y, bool black);
224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void startRow();
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CBC_BarcodeRow* getCurrentRow();
245ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CFX_ArrayTemplate<uint8_t>& getMatrix();
255ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CFX_ArrayTemplate<uint8_t>& getScaledMatrix(int32_t scale);
265ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CFX_ArrayTemplate<uint8_t>& getScaledMatrix(int32_t xScale, int32_t yScale);
274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t getWidth();
284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t getHeight();
294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private:
314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_ArrayTemplate<CBC_BarcodeRow*> m_matrix;
325ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CFX_ArrayTemplate<uint8_t> m_matrixOut;
334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t m_currentRow;
344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t m_height;
354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t m_width;
364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t m_outWidth;
374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t m_outHeight;
384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // XFA_FXBARCODE_PDF417_BC_PDF417BARCODEMATRIX_H_
41