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

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

Issue 1803723002: Move xfa/src up to xfa/. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase to master Created 4 years, 9 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
(Empty)
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 // Original code is licensed as follows:
7 /*
8 * Copyright 2012 ZXing authors
9 *
10 * Licensed under the Apache License, Version 2.0 (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
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 */
22
23 #include "xfa/src/fxbarcode/pdf417/BC_PDF417Common.h"
24 #include "xfa/src/fxbarcode/pdf417/BC_PDF417ECModulusGF.h"
25 #include "xfa/src/fxbarcode/pdf417/BC_PDF417ECModulusPoly.h"
26 #include "xfa/src/fxbarcode/utils.h"
27
28 CBC_PDF417ECModulusGF* CBC_PDF417ECModulusGF::PDF417_GF = NULL;
29 void CBC_PDF417ECModulusGF::Initialize(int32_t& e) {
30 PDF417_GF =
31 new CBC_PDF417ECModulusGF(CBC_PDF417Common::NUMBER_OF_CODEWORDS, 3, e);
32 }
33 void CBC_PDF417ECModulusGF::Finalize() {
34 delete PDF417_GF;
35 }
36 CBC_PDF417ECModulusGF::CBC_PDF417ECModulusGF(int32_t modulus,
37 int32_t generator,
38 int32_t& e) {
39 m_modulus = modulus;
40 m_expTable.SetSize(modulus);
41 m_logTable.SetSize(modulus);
42 int32_t x = 1;
43 for (int32_t i = 0; i < modulus; i++) {
44 m_expTable[i] = x;
45 x = (x * generator) % modulus;
46 }
47 for (int32_t j = 0; j < modulus - 1; j++) {
48 m_logTable[m_expTable[j]] = j;
49 }
50 CFX_Int32Array zero;
51 zero.Add(0);
52 m_zero = new CBC_PDF417ECModulusPoly(this, zero, e);
53 CFX_Int32Array one;
54 one.Add(1);
55 m_one = new CBC_PDF417ECModulusPoly(this, one, e);
56 }
57 CBC_PDF417ECModulusGF::~CBC_PDF417ECModulusGF() {
58 delete m_zero;
59 delete m_one;
60 }
61 CBC_PDF417ECModulusPoly* CBC_PDF417ECModulusGF::getZero() {
62 return m_zero;
63 }
64 CBC_PDF417ECModulusPoly* CBC_PDF417ECModulusGF::getOne() {
65 return m_one;
66 }
67 CBC_PDF417ECModulusPoly* CBC_PDF417ECModulusGF::buildMonomial(
68 int32_t degree,
69 int32_t coefficient,
70 int32_t& e) {
71 if (degree < 0) {
72 e = BCExceptionIllegalArgument;
73 return NULL;
74 }
75 CBC_PDF417ECModulusPoly* modulusPoly = NULL;
76 if (coefficient == 0) {
77 modulusPoly = new CBC_PDF417ECModulusPoly(m_zero->getField(),
78 m_zero->getCoefficients(), e);
79 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
80 return modulusPoly;
81 }
82 CFX_Int32Array coefficients;
83 coefficients.SetSize(degree + 1);
84 coefficients[0] = coefficient;
85 modulusPoly = new CBC_PDF417ECModulusPoly(this, coefficients, e);
86 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
87 return modulusPoly;
88 }
89 int32_t CBC_PDF417ECModulusGF::add(int32_t a, int32_t b) {
90 return (a + b) % m_modulus;
91 }
92 int32_t CBC_PDF417ECModulusGF::subtract(int32_t a, int32_t b) {
93 return (m_modulus + a - b) % m_modulus;
94 }
95 int32_t CBC_PDF417ECModulusGF::exp(int32_t a) {
96 return m_expTable[a];
97 }
98 int32_t CBC_PDF417ECModulusGF::log(int32_t a, int32_t& e) {
99 if (a == 0) {
100 e = BCExceptionIllegalArgument;
101 return -1;
102 }
103 return m_logTable[a];
104 }
105 int32_t CBC_PDF417ECModulusGF::inverse(int32_t a, int32_t& e) {
106 if (a == 0) {
107 e = BCExceptionIllegalArgument;
108 return -1;
109 }
110 return m_expTable[m_modulus - m_logTable[a] - 1];
111 }
112 int32_t CBC_PDF417ECModulusGF::multiply(int32_t a, int32_t b) {
113 if (a == 0 || b == 0) {
114 return 0;
115 }
116 return m_expTable[(m_logTable[a] + m_logTable[b]) % (m_modulus - 1)];
117 }
118 int32_t CBC_PDF417ECModulusGF::getSize() {
119 return m_modulus;
120 }
OLDNEW
« no previous file with comments | « xfa/src/fxbarcode/pdf417/BC_PDF417ECModulusGF.h ('k') | xfa/src/fxbarcode/pdf417/BC_PDF417ECModulusPoly.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698