📄 lzwtable.h
字号:
#ifndef __LZWTABLE_H
#define __LZWTABLE_H
/*#ifndef _WINDOWS
typedef unsigned char BYTE;
typedef unsigned int UINT;
typedef UINT WORD;
typedef unsigned long DWORD;
#define BOOL int
#define TRUE 1
#define FALSE 0
#endif*/
typedef struct LZWEncodeEntry
{
BYTE bLast;
WORD wCode;
struct LZWEncodeEntry far *pChild,*pRightBrother;
}LZWENCODEENTRY,*PLZWENCODEENTRY;
typedef struct LZWDecodeEntry
{
BYTE *pbContain;
}LZWDECODEENTRY,*PLZWDECODEENTRY;
class CLZWDecodeTable
{
public:
CLZWDecodeTable(BOOL fInit=TRUE);
~CLZWDecodeTable();
void ClearDecodeTable(void);
void InitLZWTable(void);
BYTE* GetMatchData(WORD wCode);
void AddToChild(WORD wCode,BYTE *pbContain,int iLength);
DWORD GetTableEntryNumber(void){return m_dwTableEntryNumber;};
protected:
BYTE** m_pbContain;
DWORD m_dwTableEntryNumber;
};
class CLZWEncodeTable
{
public:
CLZWEncodeTable(BOOL fInit=TRUE);
~CLZWEncodeTable();
void ClearLZWTable(void);
void InitLZWTable(void);
PLZWENCODEENTRY FindMatchChild(BYTE bChileLast,PLZWENCODEENTRY pCurrent);
// return the find child
PLZWENCODEENTRY AddToChild(BYTE bLast,PLZWENCODEENTRY pCurrent);
//return the add child
public://inline
PLZWENCODEENTRY GetHead(void){return &m_EntryHead;};
DWORD GetTableEntryNumber(void){return m_dwTableEntryNumber;};
protected:
void RemoveFirstChild(void);
PLZWENCODEENTRY FindRightBrother(PLZWENCODEENTRY pCurrent);
protected:
DWORD m_dwTableEntryNumber;
UINT m_uNextCodeForUse;
LZWENCODEENTRY m_EntryHead;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -