⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icehuffman.h

📁 使用stl技术,(还没看,是听说的)
💻 H
字号:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 *	Contains code for Huffman data compression.
 *	\file		IceHuffman.h
 *	\author		Pierre Terdiman / Guillaume Baron, original code from Jetpac 1.0
 *	\date		1996
 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Include Guard
#ifndef __ICEHUFFMAN_H__
#define __ICEHUFFMAN_H__

	struct ICECORE_API HuffNode
	{
		inline_	HuffNode() : mCount(INVALID_ID), mChild0(INVALID_ID), mChild1(INVALID_ID)	{}

		udword	mCount;
		sdword	mChild0;
		sdword	mChild1;
	};

	struct ICECORE_API HuffCode
	{
		inline_	HuffCode() : mCode(INVALID_ID), mCodeNbBits(INVALID_ID)	{}

		udword	mCode;
		sdword	mCodeNbBits;
	};

	class ICECORE_API Huffman0
	{
		public:
							Huffman0();
							~Huffman0();

				void		CountBytes(const ubyte* input, udword nb_bytes);
				void		ScaleCounts();
				sdword		BuildTree();
				void		_ConvertTreeToCode(udword code_so_far, sdword bits, sdword node);

				bool		Compress(const ubyte* buffer, udword size, CustomArray& packed);
				void		Decompress(const CustomArray& source, CustomArray& dest);

				udword*		mCounts;
				HuffNode*	mNodes;
				HuffCode*	mCodes;
		private:
				void		CompressData(const ubyte* buffer, udword size, CustomArray& packed);
				void		ExpandData(const CustomArray& source, CustomArray& dest, sdword root_node);
				void		OutputCounts(CustomArray& packed);
				void		InputCounts(const CustomArray& source);
	};

#endif // __ICEHUFFMAN_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -