// 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 #ifndef _BC_QRDECODEDBITSTREAMPARSER_H_ #define _BC_QRDECODEDBITSTREAMPARSER_H_ class CBC_CommonDecoderResult; class CBC_QRCoderErrorCorrectionLevel; class CBC_CommonBitSource; class CBC_QRCoderVersion; class CBC_CommonCharacterSetECI; class CBC_QRDecodedBitStreamParser { private: const static FX_CHAR ALPHANUMERIC_CHARS[45]; static FX_LPCSTR UTF_8; CBC_QRDecodedBitStreamParser(); public: virtual ~CBC_QRDecodedBitStreamParser(); static CBC_CommonDecoderResult* Decode(CFX_ByteArray *bytes, CBC_QRCoderVersion *version, CBC_QRCoderErrorCorrectionLevel* ecLevel, FX_INT32 byteModeDecode, FX_INT32 &e); static const CFX_ByteString GuessEncoding(CFX_ByteArray* bytes); static FX_INT32 ParseECIValue(CBC_CommonBitSource* bits, FX_INT32 &e); static void DecodeGBKSegment(CBC_CommonBitSource* bits, CFX_ByteString &result, FX_INT32 count, FX_INT32 &e); static void DecodeKanjiSegment(CBC_CommonBitSource* bits, CFX_ByteString &result, FX_INT32 count, FX_INT32 &e); static void DecodeNumericSegment(CBC_CommonBitSource* bits, CFX_ByteString &result, FX_INT32 count, FX_INT32 &e); static void DecodeAlphanumericSegment(CBC_CommonBitSource* bits, CFX_ByteString &result, FX_INT32 count, FX_BOOL fac1InEffect, FX_INT32 &e); static void DecodeByteSegment(CBC_CommonBitSource* bits, CFX_ByteString &result, FX_INT32 count, CBC_CommonCharacterSetECI *currentCharacterSetECI, CFX_Int32Array *byteSegments, FX_INT32 byteModeDecode, FX_INT32 &e); }; #endif