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 15class CBC_ReedSolomonGF256Poly; 16 17class 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