// 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_DATAMATRIXVERSION_H_ #define _BC_DATAMATRIXVERSION_H_ class ECB; class ECBlocks; class CBC_DataMatrixVersion; class ECB : public CFX_Object { public: ECB(FX_INT32 count, FX_INT32 dataCodewords) { m_count = count; m_dataCodewords = dataCodewords; } FX_INT32 GetCount() { return m_count; } FX_INT32 GetDataCodewords() { return m_dataCodewords; } private: FX_INT32 m_count; FX_INT32 m_dataCodewords; }; class ECBlocks : public CFX_Object { public: ECBlocks(FX_INT32 ecCodewords, ECB *ecBlocks) { m_ecCodewords = ecCodewords; m_ecBlocks.Add(ecBlocks); } ECBlocks(FX_INT32 ecCodewords, ECB *ecBlocks1, ECB *ecBlocks2) { m_ecCodewords = ecCodewords; m_ecBlocks.Add(ecBlocks1); m_ecBlocks.Add(ecBlocks2); } ~ECBlocks() { for(FX_INT32 i = 0; i < m_ecBlocks.GetSize(); i++) { delete (ECB*)m_ecBlocks[i]; } m_ecBlocks.RemoveAll(); } FX_INT32 GetECCodewords() { return m_ecCodewords; } const CFX_PtrArray &GetECBlocks() { return m_ecBlocks; } private: FX_INT32 m_ecCodewords; CFX_PtrArray m_ecBlocks; }; class CBC_DataMatrixVersion : public CFX_Object { public: CBC_DataMatrixVersion(FX_INT32 versionNumber, FX_INT32 symbolSizeRows, FX_INT32 symbolSizeColumns, FX_INT32 dataRegionSizeRows, FX_INT32 dataRegionSizeColumns, ECBlocks *ecBlocks); virtual ~CBC_DataMatrixVersion(); static void Initialize(); static void Finalize(); FX_INT32 GetVersionNumber(); FX_INT32 GetSymbolSizeRows(); FX_INT32 GetSymbolSizeColumns(); FX_INT32 GetDataRegionSizeRows(); FX_INT32 GetDataRegionSizeColumns(); FX_INT32 GetTotalCodewords(); ECBlocks *GetECBlocks(); static CBC_DataMatrixVersion *GetVersionForDimensions(FX_INT32 numRows, FX_INT32 numColumns, FX_INT32 &e); static void ReleaseAll(); private: FX_INT32 m_versionNumber; FX_INT32 m_symbolSizeRows; FX_INT32 m_symbolSizeColumns; FX_INT32 m_dataRegionSizeRows; FX_INT32 m_dataRegionSizeColumns; ECBlocks *m_ecBlocks; FX_INT32 m_totalCodewords; static CFX_PtrArray* VERSIONS; }; #endif