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 7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#ifndef FXBARCODE_PDF417_BC_PDF417BARCODEMATRIX_H_ 8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FXBARCODE_PDF417_BC_PDF417BARCODEMATRIX_H_ 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include <memory> 11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include <vector> 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CBC_BarcodeRow; 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CBC_BarcodeMatrix { 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_BarcodeMatrix(); 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_BarcodeMatrix(int32_t height, int32_t width); 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual ~CBC_BarcodeMatrix(); 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CBC_BarcodeRow* getCurrentRow() const { return m_matrix[m_currentRow].get(); } 22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t getWidth() const { return m_outWidth; } 23d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t getHeight() const { return m_outHeight; } 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void set(int32_t x, int32_t y, uint8_t value); 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void setMatrix(int32_t x, int32_t y, bool black); 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void startRow(); 27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann std::vector<uint8_t>& getMatrix(); 28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann std::vector<uint8_t>& getScaledMatrix(int32_t scale); 29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann std::vector<uint8_t>& getScaledMatrix(int32_t xScale, int32_t yScale); 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private: 32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann std::vector<std::unique_ptr<CBC_BarcodeRow>> m_matrix; 33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann std::vector<uint8_t> m_matrixOut; 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t m_currentRow; 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t m_height; 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t m_width; 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t m_outWidth; 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t m_outHeight; 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#endif // FXBARCODE_PDF417_BC_PDF417BARCODEMATRIX_H_ 42