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_COMMON_REEDSOLOMON_BC_REEDSOLOMONGF256_H_ 8 #define XFA_FXBARCODE_COMMON_REEDSOLOMON_BC_REEDSOLOMONGF256_H_ 9 10 #include <memory> 11 12 #include "core/fxcrt/fx_basic.h" 13 #include "xfa/fxbarcode/utils.h" 14 15 class CBC_ReedSolomonGF256Poly; 16 17 class CBC_ReedSolomonGF256 { 18 public: 19 explicit CBC_ReedSolomonGF256(int32_t primitive); 20 virtual ~CBC_ReedSolomonGF256(); 21 22 static void Initialize(); 23 static void Finalize(); 24 25 CBC_ReedSolomonGF256Poly* GetZero() const; 26 CBC_ReedSolomonGF256Poly* GetOne() const; 27 CBC_ReedSolomonGF256Poly* BuildMonomial(int32_t degree, 28 int32_t coefficient, 29 int32_t& e); 30 static int32_t AddOrSubtract(int32_t a, int32_t b); 31 int32_t Exp(int32_t a); 32 int32_t Log(int32_t a, int32_t& e); 33 int32_t Inverse(int32_t a, int32_t& e); 34 int32_t Multiply(int32_t a, int32_t b); 35 virtual void Init(); 36 37 static CBC_ReedSolomonGF256* QRCodeField; 38 static CBC_ReedSolomonGF256* DataMatrixField; 39 40 private: 41 int32_t m_expTable[256]; 42 int32_t m_logTable[256]; 43 std::unique_ptr<CBC_ReedSolomonGF256Poly> m_zero; 44 std::unique_ptr<CBC_ReedSolomonGF256Poly> m_one; 45 }; 46 47 #endif // XFA_FXBARCODE_COMMON_REEDSOLOMON_BC_REEDSOLOMONGF256_H_ 48