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
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef XFA_FXBARCODE_DATAMATRIX_BC_ERRORCORRECTION_H_
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define XFA_FXBARCODE_DATAMATRIX_BC_ERRORCORRECTION_H_
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CBC_SymbolInfo;
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CBC_ErrorCorrection {
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public:
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CBC_ErrorCorrection();
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual ~CBC_ErrorCorrection();
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static void Initialize();
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static void Finalize();
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static CFX_WideString encodeECC200(CFX_WideString codewords,
204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                     CBC_SymbolInfo* symbolInfo,
214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                     int32_t& e);
224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private:
244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static int32_t MODULO_VALUE;
254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static int32_t LOG[256];
264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static int32_t ALOG[256];
274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private:
294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static CFX_WideString createECCBlock(CFX_WideString codewords,
304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                       int32_t numECWords,
314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                       int32_t& e);
324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static CFX_WideString createECCBlock(CFX_WideString codewords,
334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                       int32_t start,
344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                       int32_t len,
354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                       int32_t numECWords,
364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                       int32_t& e);
374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // XFA_FXBARCODE_DATAMATRIX_BC_ERRORCORRECTION_H_
40