Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(482)

Side by Side Diff: xfa/src/fxbarcode/pdf417/BC_PDF417ECErrorCorrection.cpp

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 // Original code is licensed as follows: 6 // Original code is licensed as follows:
7 /* 7 /*
8 * Copyright 2012 ZXing authors 8 * Copyright 2012 ZXing authors
9 * 9 *
10 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License. 11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at 12 * You may obtain a copy of the License at
13 * 13 *
14 * http://www.apache.org/licenses/LICENSE-2.0 14 * http://www.apache.org/licenses/LICENSE-2.0
15 * 15 *
16 * Unless required by applicable law or agreed to in writing, software 16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS, 17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and 19 * See the License for the specific language governing permissions and
20 * limitations under the License. 20 * limitations under the License.
21 */ 21 */
22 22
23 #include "../barcode.h" 23 #include "../barcode.h"
24 #include "BC_PDF417Common.h" 24 #include "BC_PDF417Common.h"
25 #include "BC_PDF417ECModulusPoly.h" 25 #include "BC_PDF417ECModulusPoly.h"
26 #include "BC_PDF417ECModulusGF.h" 26 #include "BC_PDF417ECModulusGF.h"
27 #include "BC_PDF417ECErrorCorrection.h" 27 #include "BC_PDF417ECErrorCorrection.h"
28 CBC_PDF417ECModulusGF* CBC_PDF417ECErrorCorrection::m_field = NULL; 28 CBC_PDF417ECModulusGF* CBC_PDF417ECErrorCorrection::m_field = NULL;
29 void CBC_PDF417ECErrorCorrection::Initialize(FX_INT32 &e) 29 void CBC_PDF417ECErrorCorrection::Initialize(int32_t &e)
30 { 30 {
31 m_field = FX_NEW CBC_PDF417ECModulusGF(CBC_PDF417Common::NUMBER_OF_CODEWORDS , 3, e); 31 m_field = FX_NEW CBC_PDF417ECModulusGF(CBC_PDF417Common::NUMBER_OF_CODEWORDS , 3, e);
32 } 32 }
33 void CBC_PDF417ECErrorCorrection::Finalize() 33 void CBC_PDF417ECErrorCorrection::Finalize()
34 { 34 {
35 delete m_field; 35 delete m_field;
36 } 36 }
37 CBC_PDF417ECErrorCorrection::CBC_PDF417ECErrorCorrection() 37 CBC_PDF417ECErrorCorrection::CBC_PDF417ECErrorCorrection()
38 { 38 {
39 } 39 }
40 CBC_PDF417ECErrorCorrection::~CBC_PDF417ECErrorCorrection() 40 CBC_PDF417ECErrorCorrection::~CBC_PDF417ECErrorCorrection()
41 { 41 {
42 } 42 }
43 FX_INT32 CBC_PDF417ECErrorCorrection::decode(CFX_Int32Array &received, FX_INT32 numECCodewords, CFX_Int32Array &erasures, FX_INT32 &e) 43 int32_t CBC_PDF417ECErrorCorrection::decode(CFX_Int32Array &received, int32_t nu mECCodewords, CFX_Int32Array &erasures, int32_t &e)
44 { 44 {
45 CBC_PDF417ECModulusPoly poly(m_field, received, e); 45 CBC_PDF417ECModulusPoly poly(m_field, received, e);
46 BC_EXCEPTION_CHECK_ReturnValue(e, -1); 46 BC_EXCEPTION_CHECK_ReturnValue(e, -1);
47 CFX_Int32Array S; 47 CFX_Int32Array S;
48 S.SetSize(numECCodewords); 48 S.SetSize(numECCodewords);
49 FX_BOOL error = FALSE; 49 FX_BOOL error = FALSE;
50 for (FX_INT32 l = numECCodewords; l > 0; l--) { 50 for (int32_t l = numECCodewords; l > 0; l--) {
51 FX_INT32 eval = poly.evaluateAt(m_field->exp(l)); 51 int32_t eval = poly.evaluateAt(m_field->exp(l));
52 S[numECCodewords - l] = eval; 52 S[numECCodewords - l] = eval;
53 if (eval != 0) { 53 if (eval != 0) {
54 error = TRUE; 54 error = TRUE;
55 } 55 }
56 } 56 }
57 if (!error) { 57 if (!error) {
58 return 0; 58 return 0;
59 } 59 }
60 CBC_PDF417ECModulusPoly* syndrome = FX_NEW CBC_PDF417ECModulusPoly(m_field, S, e); 60 CBC_PDF417ECModulusPoly* syndrome = FX_NEW CBC_PDF417ECModulusPoly(m_field, S, e);
61 BC_EXCEPTION_CHECK_ReturnValue(e, -1); 61 BC_EXCEPTION_CHECK_ReturnValue(e, -1);
62 CBC_PDF417ECModulusPoly* buildmonomial = m_field->buildMonomial(numECCodewor ds, 1, e); 62 CBC_PDF417ECModulusPoly* buildmonomial = m_field->buildMonomial(numECCodewor ds, 1, e);
63 if (e != BCExceptionNO) { 63 if (e != BCExceptionNO) {
64 delete syndrome; 64 delete syndrome;
65 return -1; 65 return -1;
66 } 66 }
67 CFX_PtrArray* sigmaOmega = runEuclideanAlgorithm(buildmonomial, syndrome, nu mECCodewords, e); 67 CFX_PtrArray* sigmaOmega = runEuclideanAlgorithm(buildmonomial, syndrome, nu mECCodewords, e);
68 delete buildmonomial; 68 delete buildmonomial;
69 delete syndrome; 69 delete syndrome;
70 BC_EXCEPTION_CHECK_ReturnValue(e, -1); 70 BC_EXCEPTION_CHECK_ReturnValue(e, -1);
71 CBC_PDF417ECModulusPoly* sigma = (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt (0); 71 CBC_PDF417ECModulusPoly* sigma = (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt (0);
72 CBC_PDF417ECModulusPoly* omega = (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt (1); 72 CBC_PDF417ECModulusPoly* omega = (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt (1);
73 CFX_Int32Array* errorLocations = findErrorLocations(sigma, e); 73 CFX_Int32Array* errorLocations = findErrorLocations(sigma, e);
74 if (e != BCExceptionNO) { 74 if (e != BCExceptionNO) {
75 for (FX_INT32 i = 0; i < sigmaOmega->GetSize(); i++) { 75 for (int32_t i = 0; i < sigmaOmega->GetSize(); i++) {
76 delete (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt(i); 76 delete (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt(i);
77 } 77 }
78 sigmaOmega->RemoveAll(); 78 sigmaOmega->RemoveAll();
79 delete sigmaOmega; 79 delete sigmaOmega;
80 return -1; 80 return -1;
81 } 81 }
82 CFX_Int32Array* errorMagnitudes = findErrorMagnitudes(omega, sigma, *errorLo cations, e); 82 CFX_Int32Array* errorMagnitudes = findErrorMagnitudes(omega, sigma, *errorLo cations, e);
83 if (e != BCExceptionNO) { 83 if (e != BCExceptionNO) {
84 delete errorLocations; 84 delete errorLocations;
85 for (FX_INT32 i = 0; i < sigmaOmega->GetSize(); i++) { 85 for (int32_t i = 0; i < sigmaOmega->GetSize(); i++) {
86 delete (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt(i); 86 delete (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt(i);
87 } 87 }
88 sigmaOmega->RemoveAll(); 88 sigmaOmega->RemoveAll();
89 delete sigmaOmega; 89 delete sigmaOmega;
90 return -1; 90 return -1;
91 } 91 }
92 for (FX_INT32 i = 0; i < errorLocations->GetSize(); i++) { 92 for (int32_t i = 0; i < errorLocations->GetSize(); i++) {
93 FX_INT32 log = m_field->log(errorLocations->GetAt(i), e);; 93 int32_t log = m_field->log(errorLocations->GetAt(i), e);;
94 BC_EXCEPTION_CHECK_ReturnValue(e, -1); 94 BC_EXCEPTION_CHECK_ReturnValue(e, -1);
95 FX_INT32 position = received.GetSize() - 1 - log; 95 int32_t position = received.GetSize() - 1 - log;
96 if (position < 0) { 96 if (position < 0) {
97 e = BCExceptionChecksumException; 97 e = BCExceptionChecksumException;
98 delete errorLocations; 98 delete errorLocations;
99 delete errorMagnitudes; 99 delete errorMagnitudes;
100 for (FX_INT32 j = 0; j < sigmaOmega->GetSize(); j++) { 100 for (int32_t j = 0; j < sigmaOmega->GetSize(); j++) {
101 delete (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt(j); 101 delete (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt(j);
102 } 102 }
103 sigmaOmega->RemoveAll(); 103 sigmaOmega->RemoveAll();
104 delete sigmaOmega; 104 delete sigmaOmega;
105 return -1; 105 return -1;
106 } 106 }
107 received[position] = m_field->subtract(received[position], errorMagnitud es->GetAt(i)); 107 received[position] = m_field->subtract(received[position], errorMagnitud es->GetAt(i));
108 } 108 }
109 FX_INT32 result = errorLocations->GetSize(); 109 int32_t result = errorLocations->GetSize();
110 delete errorLocations; 110 delete errorLocations;
111 delete errorMagnitudes; 111 delete errorMagnitudes;
112 for (FX_INT32 k = 0; k < sigmaOmega->GetSize(); k++) { 112 for (int32_t k = 0; k < sigmaOmega->GetSize(); k++) {
113 delete (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt(k); 113 delete (CBC_PDF417ECModulusPoly*)sigmaOmega->GetAt(k);
114 } 114 }
115 sigmaOmega->RemoveAll(); 115 sigmaOmega->RemoveAll();
116 delete sigmaOmega; 116 delete sigmaOmega;
117 return result; 117 return result;
118 } 118 }
119 CFX_PtrArray* CBC_PDF417ECErrorCorrection::runEuclideanAlgorithm(CBC_PDF417ECMod ulusPoly* a, CBC_PDF417ECModulusPoly* b, FX_INT32 R, FX_INT32 &e) 119 CFX_PtrArray* CBC_PDF417ECErrorCorrection::runEuclideanAlgorithm(CBC_PDF417ECMod ulusPoly* a, CBC_PDF417ECModulusPoly* b, int32_t R, int32_t &e)
120 { 120 {
121 if (a->getDegree() < b->getDegree()) { 121 if (a->getDegree() < b->getDegree()) {
122 CBC_PDF417ECModulusPoly* temp = a; 122 CBC_PDF417ECModulusPoly* temp = a;
123 a = b; 123 a = b;
124 b = temp; 124 b = temp;
125 } 125 }
126 CBC_PDF417ECModulusPoly* rLast = a; 126 CBC_PDF417ECModulusPoly* rLast = a;
127 CBC_PDF417ECModulusPoly* r = b; 127 CBC_PDF417ECModulusPoly* r = b;
128 CBC_PDF417ECModulusPoly* tLast = m_field->getZero(); 128 CBC_PDF417ECModulusPoly* tLast = m_field->getZero();
129 CBC_PDF417ECModulusPoly* t = m_field->getOne(); 129 CBC_PDF417ECModulusPoly* t = m_field->getOne();
130 CBC_PDF417ECModulusPoly* qtemp = NULL; 130 CBC_PDF417ECModulusPoly* qtemp = NULL;
131 CBC_PDF417ECModulusPoly* rtemp = NULL; 131 CBC_PDF417ECModulusPoly* rtemp = NULL;
132 CBC_PDF417ECModulusPoly* ttemp = NULL; 132 CBC_PDF417ECModulusPoly* ttemp = NULL;
133 FX_INT32 i = 0; 133 int32_t i = 0;
134 FX_INT32 j = 0; 134 int32_t j = 0;
135 FX_INT32 m = 0; 135 int32_t m = 0;
136 FX_INT32 n = 0; 136 int32_t n = 0;
137 while (r->getDegree() >= R / 2) { 137 while (r->getDegree() >= R / 2) {
138 CBC_PDF417ECModulusPoly* rLastLast = rLast; 138 CBC_PDF417ECModulusPoly* rLastLast = rLast;
139 CBC_PDF417ECModulusPoly* tLastLast = tLast; 139 CBC_PDF417ECModulusPoly* tLastLast = tLast;
140 rLast = r; 140 rLast = r;
141 tLast = t; 141 tLast = t;
142 m = i; 142 m = i;
143 n = j; 143 n = j;
144 if (rLast->isZero()) { 144 if (rLast->isZero()) {
145 e = BCExceptionChecksumException; 145 e = BCExceptionChecksumException;
146 if (qtemp) { 146 if (qtemp) {
147 delete qtemp; 147 delete qtemp;
148 } 148 }
149 if (rtemp) { 149 if (rtemp) {
150 delete rtemp; 150 delete rtemp;
151 } 151 }
152 if (ttemp) { 152 if (ttemp) {
153 delete ttemp; 153 delete ttemp;
154 } 154 }
155 return NULL; 155 return NULL;
156 } 156 }
157 r = rLastLast; 157 r = rLastLast;
158 CBC_PDF417ECModulusPoly* q = m_field->getZero(); 158 CBC_PDF417ECModulusPoly* q = m_field->getZero();
159 FX_INT32 denominatorLeadingTerm = rLast->getCoefficient(rLast->getDegree ()); 159 int32_t denominatorLeadingTerm = rLast->getCoefficient(rLast->getDegree( ));
160 FX_INT32 dltInverse = m_field->inverse(denominatorLeadingTerm, e); 160 int32_t dltInverse = m_field->inverse(denominatorLeadingTerm, e);
161 if (e != BCExceptionNO) { 161 if (e != BCExceptionNO) {
162 if (qtemp) { 162 if (qtemp) {
163 delete qtemp; 163 delete qtemp;
164 } 164 }
165 if (rtemp) { 165 if (rtemp) {
166 delete rtemp; 166 delete rtemp;
167 } 167 }
168 if (ttemp) { 168 if (ttemp) {
169 delete ttemp; 169 delete ttemp;
170 } 170 }
171 return NULL; 171 return NULL;
172 } 172 }
173 while (r->getDegree() >= rLast->getDegree() && !r->isZero()) { 173 while (r->getDegree() >= rLast->getDegree() && !r->isZero()) {
174 FX_INT32 degreeDiff = r->getDegree() - rLast->getDegree(); 174 int32_t degreeDiff = r->getDegree() - rLast->getDegree();
175 FX_INT32 scale = m_field->multiply(r->getCoefficient(r->getDegree()) , dltInverse); 175 int32_t scale = m_field->multiply(r->getCoefficient(r->getDegree()), dltInverse);
176 CBC_PDF417ECModulusPoly* buildmonomial = m_field->buildMonomial(degr eeDiff, scale, e); 176 CBC_PDF417ECModulusPoly* buildmonomial = m_field->buildMonomial(degr eeDiff, scale, e);
177 if (e != BCExceptionNO) { 177 if (e != BCExceptionNO) {
178 if (qtemp) { 178 if (qtemp) {
179 delete qtemp; 179 delete qtemp;
180 } 180 }
181 if (rtemp) { 181 if (rtemp) {
182 delete rtemp; 182 delete rtemp;
183 } 183 }
184 if (ttemp) { 184 if (ttemp) {
185 delete ttemp; 185 delete ttemp;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 delete ttemp; 266 delete ttemp;
267 if (e != BCExceptionNO) { 267 if (e != BCExceptionNO) {
268 if (rtemp) { 268 if (rtemp) {
269 delete rtemp; 269 delete rtemp;
270 } 270 }
271 return NULL; 271 return NULL;
272 } 272 }
273 ttemp = t; 273 ttemp = t;
274 j++; 274 j++;
275 } 275 }
276 FX_INT32 aa = t->getCoefficient(1); 276 int32_t aa = t->getCoefficient(1);
277 FX_INT32 sigmaTildeAtZero = t->getCoefficient(0); 277 int32_t sigmaTildeAtZero = t->getCoefficient(0);
278 if (sigmaTildeAtZero == 0) { 278 if (sigmaTildeAtZero == 0) {
279 e = BCExceptionChecksumException; 279 e = BCExceptionChecksumException;
280 if (rtemp) { 280 if (rtemp) {
281 delete rtemp; 281 delete rtemp;
282 } 282 }
283 if (ttemp) { 283 if (ttemp) {
284 delete ttemp; 284 delete ttemp;
285 } 285 }
286 return NULL; 286 return NULL;
287 } 287 }
288 FX_INT32 inverse = m_field->inverse(sigmaTildeAtZero, e); 288 int32_t inverse = m_field->inverse(sigmaTildeAtZero, e);
289 if (e != BCExceptionNO) { 289 if (e != BCExceptionNO) {
290 if (rtemp) { 290 if (rtemp) {
291 delete rtemp; 291 delete rtemp;
292 } 292 }
293 if (ttemp) { 293 if (ttemp) {
294 delete ttemp; 294 delete ttemp;
295 } 295 }
296 return NULL; 296 return NULL;
297 } 297 }
298 CBC_PDF417ECModulusPoly* sigma = t->multiply(inverse, e); 298 CBC_PDF417ECModulusPoly* sigma = t->multiply(inverse, e);
299 if (ttemp) { 299 if (ttemp) {
300 delete ttemp; 300 delete ttemp;
301 } 301 }
302 if (e != BCExceptionNO) { 302 if (e != BCExceptionNO) {
303 if (rtemp) { 303 if (rtemp) {
304 delete rtemp; 304 delete rtemp;
305 } 305 }
306 return NULL; 306 return NULL;
307 } 307 }
308 CBC_PDF417ECModulusPoly* omega = r->multiply(inverse, e); 308 CBC_PDF417ECModulusPoly* omega = r->multiply(inverse, e);
309 if (rtemp) { 309 if (rtemp) {
310 delete rtemp; 310 delete rtemp;
311 } 311 }
312 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 312 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
313 CFX_PtrArray* modulusPoly = FX_NEW CFX_PtrArray; 313 CFX_PtrArray* modulusPoly = FX_NEW CFX_PtrArray;
314 modulusPoly->Add(sigma); 314 modulusPoly->Add(sigma);
315 modulusPoly->Add(omega); 315 modulusPoly->Add(omega);
316 return modulusPoly; 316 return modulusPoly;
317 } 317 }
318 CFX_Int32Array* CBC_PDF417ECErrorCorrection::findErrorLocations(CBC_PDF417ECModu lusPoly* errorLocator, FX_INT32 &e) 318 CFX_Int32Array* CBC_PDF417ECErrorCorrection::findErrorLocations(CBC_PDF417ECModu lusPoly* errorLocator, int32_t &e)
319 { 319 {
320 FX_INT32 numErrors = errorLocator->getDegree(); 320 int32_t numErrors = errorLocator->getDegree();
321 CFX_Int32Array* result = FX_NEW CFX_Int32Array; 321 CFX_Int32Array* result = FX_NEW CFX_Int32Array;
322 result->SetSize(numErrors); 322 result->SetSize(numErrors);
323 FX_INT32 ee = 0; 323 int32_t ee = 0;
324 for (FX_INT32 i = 1; i < m_field->getSize() && ee < numErrors; i++) { 324 for (int32_t i = 1; i < m_field->getSize() && ee < numErrors; i++) {
325 if (errorLocator->evaluateAt(i) == 0) { 325 if (errorLocator->evaluateAt(i) == 0) {
326 result->SetAt(ee, m_field->inverse(i, e)); 326 result->SetAt(ee, m_field->inverse(i, e));
327 if (e != BCExceptionNO) { 327 if (e != BCExceptionNO) {
328 delete result; 328 delete result;
329 return NULL; 329 return NULL;
330 } 330 }
331 ee++; 331 ee++;
332 } 332 }
333 } 333 }
334 if (ee != numErrors) { 334 if (ee != numErrors) {
335 e = BCExceptionChecksumException; 335 e = BCExceptionChecksumException;
336 delete result; 336 delete result;
337 return NULL; 337 return NULL;
338 } 338 }
339 return result; 339 return result;
340 } 340 }
341 CFX_Int32Array* CBC_PDF417ECErrorCorrection::findErrorMagnitudes(CBC_PDF417ECMod ulusPoly* errorEvaluator, CBC_PDF417ECModulusPoly* errorLocator, CFX_Int32Array &errorLocations, FX_INT32 &e) 341 CFX_Int32Array* CBC_PDF417ECErrorCorrection::findErrorMagnitudes(CBC_PDF417ECMod ulusPoly* errorEvaluator, CBC_PDF417ECModulusPoly* errorLocator, CFX_Int32Array &errorLocations, int32_t &e)
342 { 342 {
343 FX_INT32 errorLocatorDegree = errorLocator->getDegree(); 343 int32_t errorLocatorDegree = errorLocator->getDegree();
344 CFX_Int32Array formalDerivativeCoefficients; 344 CFX_Int32Array formalDerivativeCoefficients;
345 formalDerivativeCoefficients.SetSize(errorLocatorDegree); 345 formalDerivativeCoefficients.SetSize(errorLocatorDegree);
346 for (FX_INT32 l = 1; l <= errorLocatorDegree; l++) { 346 for (int32_t l = 1; l <= errorLocatorDegree; l++) {
347 formalDerivativeCoefficients[errorLocatorDegree - l] = m_field->multiply (l, errorLocator->getCoefficient(l)); 347 formalDerivativeCoefficients[errorLocatorDegree - l] = m_field->multiply (l, errorLocator->getCoefficient(l));
348 } 348 }
349 CBC_PDF417ECModulusPoly formalDerivative(m_field, formalDerivativeCoefficien ts, e); 349 CBC_PDF417ECModulusPoly formalDerivative(m_field, formalDerivativeCoefficien ts, e);
350 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 350 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
351 FX_INT32 s = errorLocations.GetSize(); 351 int32_t s = errorLocations.GetSize();
352 CFX_Int32Array* result = FX_NEW CFX_Int32Array; 352 CFX_Int32Array* result = FX_NEW CFX_Int32Array;
353 result->SetSize(s); 353 result->SetSize(s);
354 for (FX_INT32 i = 0; i < s; i++) { 354 for (int32_t i = 0; i < s; i++) {
355 FX_INT32 xiInverse = m_field->inverse(errorLocations[i], e); 355 int32_t xiInverse = m_field->inverse(errorLocations[i], e);
356 if (e != BCExceptionNO) { 356 if (e != BCExceptionNO) {
357 delete result; 357 delete result;
358 return NULL; 358 return NULL;
359 } 359 }
360 FX_INT32 numerator = m_field->subtract(0, errorEvaluator->evaluateAt(xiI nverse)); 360 int32_t numerator = m_field->subtract(0, errorEvaluator->evaluateAt(xiIn verse));
361 FX_INT32 denominator = m_field->inverse(formalDerivative.evaluateAt(xiIn verse), e); 361 int32_t denominator = m_field->inverse(formalDerivative.evaluateAt(xiInv erse), e);
362 if (e != BCExceptionNO) { 362 if (e != BCExceptionNO) {
363 delete result; 363 delete result;
364 return NULL; 364 return NULL;
365 } 365 }
366 result->SetAt(i, m_field->multiply(numerator, denominator)); 366 result->SetAt(i, m_field->multiply(numerator, denominator));
367 } 367 }
368 return result; 368 return result;
369 } 369 }
OLDNEW
« no previous file with comments | « xfa/src/fxbarcode/pdf417/BC_PDF417ECErrorCorrection.h ('k') | xfa/src/fxbarcode/pdf417/BC_PDF417ECModulusGF.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698