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