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 FXBARCODE_PDF417_BC_PDF417BARCODEMATRIX_H_
8#define FXBARCODE_PDF417_BC_PDF417BARCODEMATRIX_H_
9
10#include <memory>
11#include <vector>
12
13class CBC_BarcodeRow;
14
15class CBC_BarcodeMatrix {
16 public:
17  CBC_BarcodeMatrix();
18  CBC_BarcodeMatrix(int32_t height, int32_t width);
19  virtual ~CBC_BarcodeMatrix();
20
21  CBC_BarcodeRow* getCurrentRow() const { return m_matrix[m_currentRow].get(); }
22  int32_t getWidth() const { return m_outWidth; }
23  int32_t getHeight() const { return m_outHeight; }
24  void set(int32_t x, int32_t y, uint8_t value);
25  void setMatrix(int32_t x, int32_t y, bool black);
26  void startRow();
27  std::vector<uint8_t>& getMatrix();
28  std::vector<uint8_t>& getScaledMatrix(int32_t scale);
29  std::vector<uint8_t>& getScaledMatrix(int32_t xScale, int32_t yScale);
30
31 private:
32  std::vector<std::unique_ptr<CBC_BarcodeRow>> m_matrix;
33  std::vector<uint8_t> m_matrixOut;
34  int32_t m_currentRow;
35  int32_t m_height;
36  int32_t m_width;
37  int32_t m_outWidth;
38  int32_t m_outHeight;
39};
40
41#endif  // FXBARCODE_PDF417_BC_PDF417BARCODEMATRIX_H_
42