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 _BC_PDF417ECERRORCORRECTION_H_
8 #define _BC_PDF417ECERRORCORRECTION_H_
9 class CBC_PDF417ECModulusGF;
10 class CBC_PDF417ECModulusPoly;
11 class CBC_PDF417ECErrorCorrection {
12  public:
13   CBC_PDF417ECErrorCorrection();
14   virtual ~CBC_PDF417ECErrorCorrection();
15   static void Initialize(int32_t& e);
16   static void Finalize();
17   static int32_t decode(CFX_Int32Array& received,
18                         int32_t numECCodewords,
19                         CFX_Int32Array& erasures,
20                         int32_t& e);
21 
22  private:
23   static CBC_PDF417ECModulusGF* m_field;
24   static CFX_PtrArray* runEuclideanAlgorithm(CBC_PDF417ECModulusPoly* a,
25                                              CBC_PDF417ECModulusPoly* b,
26                                              int32_t R,
27                                              int32_t& e);
28   static CFX_Int32Array* findErrorLocations(
29       CBC_PDF417ECModulusPoly* errorLocator,
30       int32_t& e);
31   static CFX_Int32Array* findErrorMagnitudes(
32       CBC_PDF417ECModulusPoly* errorEvaluator,
33       CBC_PDF417ECModulusPoly* errorLocator,
34       CFX_Int32Array& errorLocations,
35       int32_t& e);
36 };
37 #endif
38