亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rle.h

?? LZW和rle算法的實現(xiàn)及其演示例子源碼
?? H
字號:
//////////////////////////////////////////////////////////////////
//																//
//		用途 : RLE 壓縮算法	(PCX, TGA圖像)						//
//		創(chuàng)建 : [Foolish] / 2000-9-6								//
//		更新 : 2002-4-7											//
//		主頁 :													//
//		郵箱 : crazybit@263.net									//
//									(c) 1999 - 2002 =USTC= 付黎	//
//////////////////////////////////////////////////////////////////
#ifndef		__FOO_RLE_COMPRESS_H__
#define		__FOO_RLE_COMPRESS_H__
#include <windows.h>
#pragma once

//====================================================================
//	RLE - 壓縮算法
//====================================================================
//////////////////////////////////////////////////////////////////////
//	功  能 :RLE壓 / 解壓縮 ( PCX, TGA 圖像 )						//
//																	//
//	參  數(shù) :iColorBit 為像素顏色位數(shù)								//
//					PCX為 :1, 4, 8, 24								//
//					TGA為 :8, 16, 24, 32							//
//			 iNumPixel 為寫入OutBuffer中的像素個數(shù)					//
//																	//
//	返回值 :EncodeLine 返回編碼后 OutBuffer 的指針					//
//			 DecodeLine 返回解碼后 InBuffer 的指針					//
//																	//
//	說  明 :PCX圖像 :1,4,8位色位圖按字節(jié)處理,24位色分成3通道處理	//
//			 TGA圖像 :支持8, 16, 24, 32色, 不支持15位色			//
//			 壓縮時OutBuffer至少兩倍InBuffer大小					//
//////////////////////////////////////////////////////////////////////
BYTE * RLE_PCX_EncodeLine (BYTE * InBuffer, int iColorBit,
						   int iNumPixel,  // iNumPixel即為圖像寬
						   BYTE * OutBuffer) ;
BYTE * RLE_PCX_DecodeLine (BYTE * InBuffer, int iColorBit,
						   int iNumPixel, // iNumPixel即為圖像寬
						   BYTE * OutBuffer) ;
BYTE * RLE_TGA_EncodeLine (BYTE * InBuffer, int iColorBit,
						   int iNumPixel,  // iNumPixel即為圖像寬
						   BYTE * OutBuffer) ;
BYTE * RLE_TGA_DecodeLine (BYTE * InBuffer, int iColorBit,
						   int iNumPixel,  // iNumPixel即為圖像寬
						   BYTE * OutBuffer) ;

//===================================================================
//	Implement
//===================================================================
inline BYTE *  RLE_PCX_DecodeLine (BYTE * InBuffer, int iColorBit,
								   int iNumPixel, BYTE * OutBuffer) {
	register BYTE	  Data, Num, Pack = 8 / iColorBit ;
	if (iColorBit <= 8) // 1,4,8位色
		while (iNumPixel > 0)
		{
			Data = *InBuffer++ ; // Next Byte
			if ( (Data & 0xC0) == 0xC0 ) // Data >= 0xC0
			{
				Num = Data & 0x3F ; // 重復(fù)字節(jié)
				memset (OutBuffer, *InBuffer++, Num) ;
				OutBuffer += Num ; iNumPixel -= Num * Pack ;
			}
			else
			{
				*OutBuffer++ = Data ;
				iNumPixel -= Pack ;
			}
		}
	else // 24位色分Channel
		for (int i = 2 ; i >= 0 ; i--) // RGB channel
		{
			int		iCount = iNumPixel ;
			BYTE	* pChannel = OutBuffer + i ;
			while (iCount-- > 0) // 一定會寫入一個像素(--)
			{
				Data = *InBuffer++ ; // Next Byte
				if ( (Data & 0xC0) == 0xC0 ) // Data >= 0xC0
				{
					Num = Data & 0x3F ; // 重復(fù)像素
					for (int x = 0 ; x < Num ; x++, pChannel += 3)
						*pChannel = *InBuffer ;
					InBuffer++ ;
					iCount -= Num - 1 ;
				}
				else
				{	*pChannel = Data ; pChannel += 3 ;	}
			}
		}
	return InBuffer ;
}
//===================================================================
inline BYTE * RLE_PCX_EncodeLine (BYTE * InBuffer, int iColorBit,
								  int iNumPixel,  // iNumPixel即為圖像寬
								  BYTE * OutBuffer) {
	register BYTE	data, cCount ;
	int 			PcxRow = 2 * ( (iNumPixel * (iColorBit % 16) + 15) / 16 ) ;
	if (iColorBit <= 8) // 1,4,8位色
		while (PcxRow > 0)
		{
			cCount = 1 ; data = *InBuffer++ ; PcxRow-- ;
			while ( (cCount < 0x3F) && (PcxRow != 0) )
				if (*InBuffer != data)// 統(tǒng)計重復(fù)字節(jié)個數(shù)
					break ;
				else
				{
					cCount++ ; InBuffer++ ; PcxRow-- ;
				}

			if (cCount == 1) // 無重復(fù)像素
				if ( (data & 0xC0) == 0xC0 ) // Data >= 0xC0
				{
					*OutBuffer++ = 0xC1 ;
					*OutBuffer++ = data ;
				}
				else
					*OutBuffer++ = data ; // Data < 0xC0, 直接寫字節(jié)
			else // 重復(fù)像素
			{
				*OutBuffer++ = 0xC0 | cCount ;
				*OutBuffer++ = data ;
			}
		} // 1,4,8位色結(jié)束
	else // 24位色分Channel
		for (int i = 2 ; i >= 0 ; i--) // RGB channel
		{
			DWORD	RowBak = PcxRow ; // 每Channel字節(jié)數(shù)
			BYTE	* pChannel = InBuffer + i ;
			while (RowBak > 0)
			{
				cCount = 1 ; data = *pChannel ; pChannel += 3 ; RowBak-- ;
				while ( (cCount < 0x3F) && (RowBak != 0) )
					if (*pChannel != data) // 統(tǒng)計重復(fù)字節(jié)個數(shù)
						break ;
					else
					{
						cCount++ ; pChannel += 3 ; RowBak-- ;
					}

				if (cCount == 1) // 無重復(fù)像素
					if ( (data & 0xC0) == 0xC0 ) // Data >= 0xC0
					{
						*OutBuffer++ = 0xC1 ;
						*OutBuffer++ = data ;
					}
					else
						*OutBuffer++ = data ;
				else // 重復(fù)像素
				{
					*OutBuffer++ = 0xC0 | cCount ;
					*OutBuffer++ = data ;
				}
			}
		}
	return OutBuffer ;
}
//===================================================================
inline BYTE * RLE_TGA_DecodeLine (BYTE * InBuffer, int iColorBit,
								  int iNumPixel, BYTE * OutBuffer) {
	register BYTE	  Data ;
	register int	  Num ;
	iColorBit /= 8 ; // 轉(zhuǎn)換為字節(jié)數(shù)
	while (iNumPixel > 0)
	{
		Data = *InBuffer++ ; // Next Byte
		if (Data & 0x80) // Data >= 0x80
		{
			iNumPixel -= (Num = (Data & 0x7F) + 1) ;
			for (int i = 0 ; i < Num ; i++, OutBuffer += iColorBit)
				memcpy (OutBuffer, InBuffer, iColorBit) ;
			InBuffer += iColorBit ;
		}
		else // 直接copy Num個像素
		{
			iNumPixel -= (Num = ++Data) ;
			Num *= iColorBit ;
			memcpy (OutBuffer, InBuffer, Num) ;
			OutBuffer += Num ;
			InBuffer += Num ;
		}
	} // End of while
	return InBuffer ;
}
//===================================================================
inline BYTE * RLE_TGA_EncodeLine (BYTE * InBuffer, int iColorBit,
								  int iNumPixel, BYTE * OutBuffer) {
	DWORD			Data, Next ;
	BYTE			* pBak ;
	register DWORD	Count ;

	iColorBit /= 8 ; // 轉(zhuǎn)換為字節(jié)數(shù)
	while (iNumPixel > 0)
	{
		pBak = InBuffer ; // 記數(shù)指針
		memcpy (&Data, InBuffer, iColorBit) ; // 第一個像素
		InBuffer += iColorBit ; iNumPixel-- ; Count = 1 ;
		while ((Count < 0x7F) && (iNumPixel > 0)) // 統(tǒng)計重復(fù)像素
		{
			memcpy (&Next, InBuffer, iColorBit) ; // 下一個像素
			if (Next != Data)
				break ;
			InBuffer += iColorBit ; iNumPixel-- ; Count++ ;
		}

		if (Count == 1) // 無重復(fù)像素
		{
			while ((Count < 0x7F) && (iNumPixel > 0)) // 統(tǒng)計不重復(fù)像素
			{
				Count++ ; Data = Next ;
				InBuffer += iColorBit ; iNumPixel-- ;
				memcpy (&Next, InBuffer, iColorBit) ; // 下一個像素
				if (Data == Next)
					break ;
			}
			// 直接copy不重復(fù)像素
			*OutBuffer++ = (BYTE)(Count - 1) ;
			Count = InBuffer - pBak ; // Count->臨時變量
			memcpy (OutBuffer, pBak, Count) ;
			OutBuffer += Count ;
		}
		else // 重復(fù)像素
		{
			*OutBuffer++ = 0x80 | (BYTE)--Count ;
			memcpy (OutBuffer, &Data, iColorBit) ;
			OutBuffer += iColorBit ;
		}		
	} // End of while
	return OutBuffer ;
}
//===================================================================
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av网址在线| 久久久精品免费网站| 欧美一区二区在线视频| 亚洲精品一区在线观看| 一区二区三区丝袜| 麻豆国产欧美一区二区三区| 一本久久综合亚洲鲁鲁五月天| 在线不卡的av| 一区二区三区自拍| 国产成人av电影在线观看| 欧美一级高清片| 伊人性伊人情综合网| 国产白丝精品91爽爽久久| 日韩女优视频免费观看| 亚洲成va人在线观看| 色婷婷综合中文久久一本| 国产欧美视频在线观看| 九九国产精品视频| 欧美高清dvd| 亚洲国产日韩一区二区| 色狠狠桃花综合| 国产精品天美传媒沈樵| 国产精品正在播放| 久久亚洲精华国产精华液| 免费一级片91| 3751色影院一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 成人av在线电影| 国产欧美日韩综合精品一区二区| 久久国产精品无码网站| 日韩午夜在线影院| 日本欧美久久久久免费播放网| 欧美日韩国产高清一区二区 | 精品播放一区二区| 青青草视频一区| 欧美一区二区三区在线电影| 日本在线不卡视频| 欧美日本不卡视频| 国产成人免费视频网站| 亚洲国产日日夜夜| 国产亚洲视频系列| 国产精品国产三级国产三级人妇| 狠狠色丁香久久婷婷综| 久久一区二区视频| 丁香六月综合激情| 国产精品久久久久影视| 91污片在线观看| 亚洲自拍偷拍图区| 欧美日韩免费高清一区色橹橹| 亚洲国产日日夜夜| 欧美一二三区在线| 国产成人8x视频一区二区 | 欧美日本一区二区三区四区| 亚洲一区二区中文在线| 欧美蜜桃一区二区三区| 美女www一区二区| 欧美激情中文字幕一区二区| 成人国产精品免费观看动漫| 亚洲天堂中文字幕| 欧美日韩中文字幕精品| 韩日精品视频一区| 国产精品二三区| 欧美影院精品一区| 蜜乳av一区二区| 国产欧美日韩在线观看| 91久久精品网| 久久99久久99| 成人免费在线观看入口| 欧美一二三在线| 成人激情免费视频| 日本一道高清亚洲日美韩| 久久精品夜色噜噜亚洲aⅴ| 日本韩国欧美一区| 美女性感视频久久| 亚洲免费在线播放| 久久久久久久精| 欧美色网一区二区| 91老司机福利 在线| 久久av老司机精品网站导航| 国产精品国产三级国产aⅴ入口| 欧美高清一级片在线| 成人黄色av电影| 美女免费视频一区| 一区二区三区视频在线看| 久久人人爽爽爽人久久久| 欧美三级日韩在线| 成人精品国产一区二区4080| 裸体歌舞表演一区二区| 一区二区三区在线免费视频| 国产人久久人人人人爽| 欧美一级久久久| 欧美午夜在线一二页| 丁香激情综合国产| 激情综合亚洲精品| 五月天精品一区二区三区| 自拍偷在线精品自拍偷无码专区 | www国产亚洲精品久久麻豆| 欧美最新大片在线看| 成人精品视频一区二区三区 | 精品久久久久久无| 欧美丰满美乳xxx高潮www| 91尤物视频在线观看| 国产精品自在在线| 国精产品一区一区三区mba桃花| 午夜精品久久久久久久久久| 亚洲美女免费在线| 免费在线观看一区| 婷婷成人激情在线网| 亚洲综合自拍偷拍| 一区二区三区日韩精品| 亚洲图片你懂的| 国产精品天天看| 国产精品电影院| 国产精品国产a| 中文字幕不卡三区| 日本一二三不卡| 国产精品三级电影| 日本一区二区三级电影在线观看| 久久综合网色—综合色88| 26uuu国产一区二区三区| 日韩精品一区二区三区swag| 日韩女优av电影| 久久麻豆一区二区| 国产日产欧美精品一区二区三区| 久久天堂av综合合色蜜桃网| 精品久久久久久久一区二区蜜臀| 亚洲精品在线网站| 欧美国产一区在线| 中文字幕视频一区二区三区久| 亚洲天堂免费在线观看视频| 一区二区三区欧美在线观看| 亚洲一区二区四区蜜桃| 日韩激情av在线| 国产真实乱子伦精品视频| 国产东北露脸精品视频| av激情亚洲男人天堂| 在线日韩一区二区| 国产精品色噜噜| 亚洲第一主播视频| 青娱乐精品视频在线| 经典一区二区三区| 成人黄页毛片网站| 欧美日韩性生活| www一区二区| 亚洲欧美一区二区三区国产精品 | 午夜欧美视频在线观看| 美女被吸乳得到大胸91| 成人一区二区视频| 欧美日韩mp4| 久久久国际精品| 依依成人精品视频| 韩国av一区二区三区在线观看| 粗大黑人巨茎大战欧美成人| 一本在线高清不卡dvd| 欧美丝袜第三区| 久久精品亚洲精品国产欧美| 亚洲男女毛片无遮挡| 激情成人综合网| 日本韩国精品一区二区在线观看| 日韩一区二区三区免费看 | 在线观看国产91| 精品国产91乱码一区二区三区| 中文字幕日韩欧美一区二区三区| 三级欧美韩日大片在线看| 成人久久视频在线观看| 3d动漫精品啪啪一区二区竹菊| 国产欧美日韩亚州综合 | 欧美调教femdomvk| 久久久久久一二三区| 亚洲一区二区美女| 国产精品1024久久| 欧美欧美午夜aⅴ在线观看| 国产欧美一区二区精品性色超碰 | 欧美日韩免费一区二区三区视频| 精品福利一区二区三区| 亚洲h精品动漫在线观看| 成人免费av在线| 久久免费看少妇高潮| 日韩影院免费视频| 91麻豆国产香蕉久久精品| 久久先锋影音av鲁色资源网| 亚洲va欧美va人人爽午夜| 99国内精品久久| 国产精品午夜在线| 国产精品主播直播| 久久综合久久鬼色| 日本中文在线一区| 国产精品第四页| 国产成人综合在线| 欧美精品一区二区久久婷婷 | 欧美日韩一区二区电影| 日韩毛片精品高清免费| 粉嫩aⅴ一区二区三区四区| 久久综合中文字幕| 精品亚洲免费视频| 精品国产在天天线2019| 捆绑调教美女网站视频一区| 制服丝袜亚洲网站| 麻豆高清免费国产一区| 日韩午夜在线影院|