| Index: xfa/src/fxbarcode/qrcode/BC_QRCoderBitVector.cpp
|
| diff --git a/xfa/src/fxbarcode/qrcode/BC_QRCoderBitVector.cpp b/xfa/src/fxbarcode/qrcode/BC_QRCoderBitVector.cpp
|
| index 825d527388354f3e21f56997eb0c230549c3619b..605aacc79a0e057882eb7ba2995f325d526c9859 100644
|
| --- a/xfa/src/fxbarcode/qrcode/BC_QRCoderBitVector.cpp
|
| +++ b/xfa/src/fxbarcode/qrcode/BC_QRCoderBitVector.cpp
|
| @@ -1,131 +1,131 @@
|
| -// Copyright 2014 PDFium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| -// Original code is licensed as follows:
|
| -/*
|
| - * Copyright 2007 ZXing authors
|
| - *
|
| - * Licensed under the Apache License, Version 2.0 (the "License");
|
| - * you may not use this file except in compliance with the License.
|
| - * You may obtain a copy of the License at
|
| - *
|
| - * http://www.apache.org/licenses/LICENSE-2.0
|
| - *
|
| - * Unless required by applicable law or agreed to in writing, software
|
| - * distributed under the License is distributed on an "AS IS" BASIS,
|
| - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| - * See the License for the specific language governing permissions and
|
| - * limitations under the License.
|
| - */
|
| -
|
| -#include "xfa/src/fxbarcode/barcode.h"
|
| -#include "BC_QRCoderBitVector.h"
|
| -CBC_QRCoderBitVector::CBC_QRCoderBitVector() {
|
| - m_sizeInBits = 0;
|
| - m_size = 32;
|
| -}
|
| -void CBC_QRCoderBitVector::Init() {
|
| - m_array = FX_Alloc(uint8_t, m_size);
|
| -}
|
| -CBC_QRCoderBitVector::~CBC_QRCoderBitVector() {
|
| - if (m_array != NULL) {
|
| - FX_Free(m_array);
|
| - }
|
| - m_size = 0;
|
| - m_sizeInBits = 0;
|
| -}
|
| -void CBC_QRCoderBitVector::Clear() {
|
| - if (m_array != NULL) {
|
| - FX_Free(m_array);
|
| - m_array = NULL;
|
| - }
|
| - m_sizeInBits = 0;
|
| - m_size = 32;
|
| - m_array = FX_Alloc(uint8_t, m_size);
|
| -}
|
| -int32_t CBC_QRCoderBitVector::At(int32_t index, int32_t& e) {
|
| - if (index < 0 || index >= m_sizeInBits) {
|
| - e = BCExceptionBadIndexException;
|
| - BC_EXCEPTION_CHECK_ReturnValue(e, 0);
|
| - }
|
| - int32_t value = m_array[index >> 3] & 0xff;
|
| - return (value >> (7 - (index & 0x7))) & 1;
|
| -}
|
| -int32_t CBC_QRCoderBitVector::sizeInBytes() {
|
| - return (m_sizeInBits + 7) >> 3;
|
| -}
|
| -int32_t CBC_QRCoderBitVector::Size() {
|
| - return m_sizeInBits;
|
| -}
|
| -void CBC_QRCoderBitVector::AppendBit(int32_t bit, int32_t& e) {
|
| - if (!(bit == 0 || bit == 1)) {
|
| - e = BCExceptionBadValueException;
|
| - BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| - }
|
| - int32_t numBitsInLastByte = m_sizeInBits & 0x7;
|
| - if (numBitsInLastByte == 0) {
|
| - AppendByte(0);
|
| - m_sizeInBits -= 8;
|
| - }
|
| - m_array[m_sizeInBits >> 3] |= (bit << (7 - numBitsInLastByte));
|
| - ++m_sizeInBits;
|
| -}
|
| -void CBC_QRCoderBitVector::AppendBits(int32_t value,
|
| - int32_t numBits,
|
| - int32_t& e) {
|
| - if (numBits < 0 || numBits > 32) {
|
| - e = BCExceptionBadNumBitsException;
|
| - BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| - }
|
| - int32_t numBitsLeft = numBits;
|
| - while (numBitsLeft > 0) {
|
| - if ((m_sizeInBits & 0x7) == 0 && numBitsLeft >= 8) {
|
| - int32_t newByte = (value >> (numBitsLeft - 8)) & 0xff;
|
| - AppendByte(newByte);
|
| - numBitsLeft -= 8;
|
| - } else {
|
| - int32_t bit = (value >> (numBitsLeft - 1)) & 1;
|
| - AppendBit(bit, e);
|
| - BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| - --numBitsLeft;
|
| - }
|
| - }
|
| -}
|
| -void CBC_QRCoderBitVector::AppendBitVector(CBC_QRCoderBitVector* bits,
|
| - int32_t& e) {
|
| - int32_t size = bits->Size();
|
| - for (int32_t i = 0; i < size; i++) {
|
| - int32_t num = bits->At(i, e);
|
| - BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| - AppendBit(num, e);
|
| - BC_EXCEPTION_CHECK_ReturnVoid(e)
|
| - }
|
| -}
|
| -void CBC_QRCoderBitVector::XOR(CBC_QRCoderBitVector* other, int32_t& e) {
|
| - if (m_sizeInBits != other->Size()) {
|
| - e = BCExceptioncanNotOperatexorOperator;
|
| - BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| - }
|
| - int32_t sizeInBytes = (m_sizeInBits + 7) >> 3;
|
| - for (int32_t i = 0; i < sizeInBytes; ++i) {
|
| - m_array[i] ^= (other->GetArray())[i];
|
| - }
|
| -}
|
| -uint8_t* CBC_QRCoderBitVector::GetArray() {
|
| - return m_array;
|
| -}
|
| -void CBC_QRCoderBitVector::AppendByte(int32_t value) {
|
| - if ((m_sizeInBits >> 3) == m_size) {
|
| - uint8_t* newArray = FX_Alloc(uint8_t, m_size << 1);
|
| - FXSYS_memcpy(newArray, m_array, m_size);
|
| - if (m_array != NULL) {
|
| - FX_Free(m_array);
|
| - }
|
| - m_array = newArray;
|
| - m_size = m_size << 1;
|
| - }
|
| - m_array[m_sizeInBits >> 3] = (uint8_t)value;
|
| - m_sizeInBits += 8;
|
| -}
|
| +// Copyright 2014 PDFium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| +// Original code is licensed as follows:
|
| +/*
|
| + * Copyright 2007 ZXing authors
|
| + *
|
| + * Licensed under the Apache License, Version 2.0 (the "License");
|
| + * you may not use this file except in compliance with the License.
|
| + * You may obtain a copy of the License at
|
| + *
|
| + * http://www.apache.org/licenses/LICENSE-2.0
|
| + *
|
| + * Unless required by applicable law or agreed to in writing, software
|
| + * distributed under the License is distributed on an "AS IS" BASIS,
|
| + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| + * See the License for the specific language governing permissions and
|
| + * limitations under the License.
|
| + */
|
| +
|
| +#include "xfa/src/fxbarcode/barcode.h"
|
| +#include "BC_QRCoderBitVector.h"
|
| +CBC_QRCoderBitVector::CBC_QRCoderBitVector() {
|
| + m_sizeInBits = 0;
|
| + m_size = 32;
|
| +}
|
| +void CBC_QRCoderBitVector::Init() {
|
| + m_array = FX_Alloc(uint8_t, m_size);
|
| +}
|
| +CBC_QRCoderBitVector::~CBC_QRCoderBitVector() {
|
| + if (m_array != NULL) {
|
| + FX_Free(m_array);
|
| + }
|
| + m_size = 0;
|
| + m_sizeInBits = 0;
|
| +}
|
| +void CBC_QRCoderBitVector::Clear() {
|
| + if (m_array != NULL) {
|
| + FX_Free(m_array);
|
| + m_array = NULL;
|
| + }
|
| + m_sizeInBits = 0;
|
| + m_size = 32;
|
| + m_array = FX_Alloc(uint8_t, m_size);
|
| +}
|
| +int32_t CBC_QRCoderBitVector::At(int32_t index, int32_t& e) {
|
| + if (index < 0 || index >= m_sizeInBits) {
|
| + e = BCExceptionBadIndexException;
|
| + BC_EXCEPTION_CHECK_ReturnValue(e, 0);
|
| + }
|
| + int32_t value = m_array[index >> 3] & 0xff;
|
| + return (value >> (7 - (index & 0x7))) & 1;
|
| +}
|
| +int32_t CBC_QRCoderBitVector::sizeInBytes() {
|
| + return (m_sizeInBits + 7) >> 3;
|
| +}
|
| +int32_t CBC_QRCoderBitVector::Size() {
|
| + return m_sizeInBits;
|
| +}
|
| +void CBC_QRCoderBitVector::AppendBit(int32_t bit, int32_t& e) {
|
| + if (!(bit == 0 || bit == 1)) {
|
| + e = BCExceptionBadValueException;
|
| + BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| + }
|
| + int32_t numBitsInLastByte = m_sizeInBits & 0x7;
|
| + if (numBitsInLastByte == 0) {
|
| + AppendByte(0);
|
| + m_sizeInBits -= 8;
|
| + }
|
| + m_array[m_sizeInBits >> 3] |= (bit << (7 - numBitsInLastByte));
|
| + ++m_sizeInBits;
|
| +}
|
| +void CBC_QRCoderBitVector::AppendBits(int32_t value,
|
| + int32_t numBits,
|
| + int32_t& e) {
|
| + if (numBits < 0 || numBits > 32) {
|
| + e = BCExceptionBadNumBitsException;
|
| + BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| + }
|
| + int32_t numBitsLeft = numBits;
|
| + while (numBitsLeft > 0) {
|
| + if ((m_sizeInBits & 0x7) == 0 && numBitsLeft >= 8) {
|
| + int32_t newByte = (value >> (numBitsLeft - 8)) & 0xff;
|
| + AppendByte(newByte);
|
| + numBitsLeft -= 8;
|
| + } else {
|
| + int32_t bit = (value >> (numBitsLeft - 1)) & 1;
|
| + AppendBit(bit, e);
|
| + BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| + --numBitsLeft;
|
| + }
|
| + }
|
| +}
|
| +void CBC_QRCoderBitVector::AppendBitVector(CBC_QRCoderBitVector* bits,
|
| + int32_t& e) {
|
| + int32_t size = bits->Size();
|
| + for (int32_t i = 0; i < size; i++) {
|
| + int32_t num = bits->At(i, e);
|
| + BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| + AppendBit(num, e);
|
| + BC_EXCEPTION_CHECK_ReturnVoid(e)
|
| + }
|
| +}
|
| +void CBC_QRCoderBitVector::XOR(CBC_QRCoderBitVector* other, int32_t& e) {
|
| + if (m_sizeInBits != other->Size()) {
|
| + e = BCExceptioncanNotOperatexorOperator;
|
| + BC_EXCEPTION_CHECK_ReturnVoid(e);
|
| + }
|
| + int32_t sizeInBytes = (m_sizeInBits + 7) >> 3;
|
| + for (int32_t i = 0; i < sizeInBytes; ++i) {
|
| + m_array[i] ^= (other->GetArray())[i];
|
| + }
|
| +}
|
| +uint8_t* CBC_QRCoderBitVector::GetArray() {
|
| + return m_array;
|
| +}
|
| +void CBC_QRCoderBitVector::AppendByte(int32_t value) {
|
| + if ((m_sizeInBits >> 3) == m_size) {
|
| + uint8_t* newArray = FX_Alloc(uint8_t, m_size << 1);
|
| + FXSYS_memcpy(newArray, m_array, m_size);
|
| + if (m_array != NULL) {
|
| + FX_Free(m_array);
|
| + }
|
| + m_array = newArray;
|
| + m_size = m_size << 1;
|
| + }
|
| + m_array[m_sizeInBits >> 3] = (uint8_t)value;
|
| + m_sizeInBits += 8;
|
| +}
|
|
|