// 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_QRCODERVERSION_H_ #define _BC_QRCODERVERSION_H_ class CBC_QRCoderECBlocks; class CBC_CommonBitMatrix; class CBC_QRCoderErrorCorrectionLevel; class CBC_QRCoderVersion; class CBC_QRCoderVersion : public CFX_Object { private: const static FX_INT32 VERSION_DECODE_INFO[34]; static CFX_PtrArray *VERSION; FX_INT32 m_versionNumber; FX_INT32 m_totalCodeWords; CFX_Int32Array m_alignmentPatternCenters; CFX_PtrArray m_ecBlocks; CBC_QRCoderVersion(); CBC_QRCoderVersion(FX_INT32 versionNumber, CBC_QRCoderECBlocks* ecBlocks1, CBC_QRCoderECBlocks* ecBlocks2, CBC_QRCoderECBlocks* ecBlocks3, CBC_QRCoderECBlocks* ecBlocks4); public: virtual ~CBC_QRCoderVersion(); static void Initialize(); static void Finalize(); FX_INT32 GetVersionNumber(); FX_INT32 GetTotalCodeWords(); FX_INT32 GetDimensionForVersion(); CBC_CommonBitMatrix *BuildFunctionPattern(FX_INT32 &e); CFX_Int32Array* GetAlignmentPatternCenters(); CBC_QRCoderECBlocks* GetECBlocksForLevel(CBC_QRCoderErrorCorrectionLevel *ecLevel); static CBC_QRCoderVersion* GetVersionForNumber(FX_INT32 versionNumber, FX_INT32 &e); static CBC_QRCoderVersion* GetProvisionalVersionForDimension(FX_INT32 dimension, FX_INT32 &e); static CBC_QRCoderVersion* DecodeVersionInformation(FX_INT32 versionBits, FX_INT32 &e); static void Destroy(); }; #endif