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