|  | // Copyright 2014 The PDFium Authors | 
|  | // 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 FXBARCODE_PDF417_BC_PDF417_H_ | 
|  | #define FXBARCODE_PDF417_BC_PDF417_H_ | 
|  |  | 
|  | #include <memory> | 
|  | #include <vector> | 
|  |  | 
|  | #include "core/fxcrt/widestring.h" | 
|  |  | 
|  | class CBC_BarcodeRow; | 
|  | class CBC_BarcodeMatrix; | 
|  |  | 
|  | class CBC_PDF417 { | 
|  | public: | 
|  | CBC_PDF417(); | 
|  | ~CBC_PDF417(); | 
|  |  | 
|  | CBC_BarcodeMatrix* getBarcodeMatrix(); | 
|  | bool GenerateBarcodeLogic(WideStringView msg, int32_t errorCorrectionLevel); | 
|  | void setDimensions(int32_t maxCols, | 
|  | int32_t minCols, | 
|  | int32_t maxRows, | 
|  | int32_t minRows); | 
|  |  | 
|  | private: | 
|  | static const int32_t START_PATTERN = 0x1fea8; | 
|  | static const int32_t STOP_PATTERN = 0x3fa29; | 
|  | static constexpr float PREFERRED_RATIO = 3.0f; | 
|  | static constexpr float DEFAULT_MODULE_WIDTH = 0.357f; | 
|  | static constexpr float HEIGHT = 2.0f; | 
|  |  | 
|  | static int32_t calculateNumberOfRows(int32_t m, int32_t k, int32_t c); | 
|  | static int32_t getNumberOfPadCodewords(int32_t m, | 
|  | int32_t k, | 
|  | int32_t c, | 
|  | int32_t r); | 
|  | static void encodeChar(int32_t pattern, int32_t len, CBC_BarcodeRow* logic); | 
|  | void encodeLowLevel(WideString fullCodewords, | 
|  | int32_t c, | 
|  | int32_t r, | 
|  | int32_t errorCorrectionLevel, | 
|  | CBC_BarcodeMatrix* logic); | 
|  | std::vector<int32_t> determineDimensions( | 
|  | size_t sourceCodeWords, | 
|  | int32_t errorCorrectionCodeWords) const; | 
|  |  | 
|  | std::unique_ptr<CBC_BarcodeMatrix> m_barcodeMatrix; | 
|  | int32_t m_minCols = 1; | 
|  | int32_t m_maxCols = 30; | 
|  | int32_t m_minRows = 3; | 
|  | int32_t m_maxRows = 90; | 
|  | }; | 
|  |  | 
|  | #endif  // FXBARCODE_PDF417_BC_PDF417_H_ |