1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef FXBARCODE_QRCODE_BC_QRCODERBITVECTOR_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FXBARCODE_QRCODE_BC_QRCODERBITVECTOR_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <stddef.h> 11*3ac0a46fSAndroid Build Coastguard Worker #include <stdint.h> 12*3ac0a46fSAndroid Build Coastguard Worker 13*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/data_vector.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/base/containers/span.h" 15*3ac0a46fSAndroid Build Coastguard Worker 16*3ac0a46fSAndroid Build Coastguard Worker class CBC_QRCoderBitVector { 17*3ac0a46fSAndroid Build Coastguard Worker public: 18*3ac0a46fSAndroid Build Coastguard Worker CBC_QRCoderBitVector(); 19*3ac0a46fSAndroid Build Coastguard Worker ~CBC_QRCoderBitVector(); 20*3ac0a46fSAndroid Build Coastguard Worker 21*3ac0a46fSAndroid Build Coastguard Worker pdfium::span<const uint8_t> GetArray() const; 22*3ac0a46fSAndroid Build Coastguard Worker int32_t At(size_t index) const; 23*3ac0a46fSAndroid Build Coastguard Worker size_t Size() const; 24*3ac0a46fSAndroid Build Coastguard Worker size_t sizeInBytes() const; 25*3ac0a46fSAndroid Build Coastguard Worker 26*3ac0a46fSAndroid Build Coastguard Worker void AppendBit(int32_t bit); 27*3ac0a46fSAndroid Build Coastguard Worker void AppendBits(int32_t value, int32_t numBits); 28*3ac0a46fSAndroid Build Coastguard Worker void AppendBitVector(const CBC_QRCoderBitVector* bits); 29*3ac0a46fSAndroid Build Coastguard Worker bool XOR(const CBC_QRCoderBitVector* other); 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker private: 32*3ac0a46fSAndroid Build Coastguard Worker void AppendByte(int8_t value); 33*3ac0a46fSAndroid Build Coastguard Worker 34*3ac0a46fSAndroid Build Coastguard Worker size_t m_sizeInBits = 0; 35*3ac0a46fSAndroid Build Coastguard Worker DataVector<uint8_t> m_array; 36*3ac0a46fSAndroid Build Coastguard Worker }; 37*3ac0a46fSAndroid Build Coastguard Worker 38*3ac0a46fSAndroid Build Coastguard Worker #endif // FXBARCODE_QRCODE_BC_QRCODERBITVECTOR_H_ 39