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 XFA_FXBARCODE_QRCODE_BC_QRCODER_H_ 8 #define XFA_FXBARCODE_QRCODE_BC_QRCODER_H_ 9 10 #include <memory> 11 12 class CBC_QRCoderErrorCorrectionLevel; 13 class CBC_QRCoderMode; 14 class CBC_CommonByteMatrix; 15 16 class CBC_QRCoder { 17 public: 18 static constexpr int32_t kNumMaskPatterns = 8; 19 20 CBC_QRCoder(); 21 virtual ~CBC_QRCoder(); 22 23 static bool IsValidMaskPattern(int32_t maskPattern); 24 25 CBC_QRCoderMode* GetMode() const; 26 CBC_QRCoderErrorCorrectionLevel* GetECLevel() const; 27 int32_t GetVersion() const; 28 int32_t GetMatrixWidth() const; 29 int32_t GetMaskPattern() const; 30 int32_t GetNumTotalBytes() const; 31 int32_t GetNumDataBytes() const; 32 int32_t GetNumECBytes() const; 33 int32_t GetNumRSBlocks() const; 34 CBC_CommonByteMatrix* GetMatrix() const; 35 36 int32_t At(int32_t x, int32_t y, int32_t& e); 37 bool IsValid(); 38 39 void SetMode(CBC_QRCoderMode* value); 40 void SetECLevel(CBC_QRCoderErrorCorrectionLevel* ecLevel); 41 void SetVersion(int32_t version); 42 void SetMatrixWidth(int32_t width); 43 void SetMaskPattern(int32_t pattern); 44 void SetNumDataBytes(int32_t bytes); 45 void SetNumTotalBytes(int32_t value); 46 void SetNumECBytes(int32_t value); 47 void SetNumRSBlocks(int32_t block); 48 void SetMatrix(std::unique_ptr<CBC_CommonByteMatrix> pMatrix); 49 50 private: 51 CBC_QRCoderMode* m_mode; 52 CBC_QRCoderErrorCorrectionLevel* m_ecLevel; 53 int32_t m_version; 54 int32_t m_matrixWidth; 55 int32_t m_maskPattern; 56 int32_t m_numTotalBytes; 57 int32_t m_numDataBytes; 58 int32_t m_numECBytes; 59 int32_t m_numRSBlocks; 60 std::unique_ptr<CBC_CommonByteMatrix> m_matrix; 61 }; 62 63 #endif // XFA_FXBARCODE_QRCODE_BC_QRCODER_H_ 64