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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gif89a.cpp

?? 在 WINCE下 顯示 GIF圖片 GIF89A類
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "stdafx.h"
//#include <fstream.h>
#include <stdio.h>
#include <string.h>
#include "gif89a.h"

CGif89a::CGif89a()
{	opened = FALSE;
	error = FALSE;
}

CGif89a::CGif89a(LPCTSTR fileName,BOOL inMem)
{	opened = FALSE;
	if(open(fileName,inMem))
	{	opened = TRUE;
		error = FALSE;
	}
	else
	{	opened = FALSE;
		error = TRUE;
	}
}

CGif89a::~CGif89a()
{	close();
}

BOOL CGif89a::operator!()
{	return error;
}

BOOL CGif89a::open(LPCTSTR fileName,BOOL b)
{	char cc[4];
	BYTE be;
	BOOL fileEnd = FALSE;
	inMem = b;
	allFrames = NULL;
	curIndex = 0;
	curFrame.pColorTable = NULL;
	curFrame.dataBuf = NULL;
	ctrlExt.active = FALSE;
	if(opened)
		return FALSE;
	//ifs.open(fileName,ios::binary|ios::nocreate);
	char *name;
	name=new char [lstrlen(fileName)];
	
	//中文轉換
	int actuallength=0;	
	actuallength=WideCharToMultiByte(CP_ACP,NULL,(LPCWSTR)fileName,lstrlen(fileName),(LPSTR)name,0,NULL,NULL);	
	delete name;
	
	name=new char [actuallength];
	ZeroMemory(name,actuallength);
	WideCharToMultiByte(CP_ACP,NULL,(LPCWSTR)fileName,lstrlen(fileName),(LPSTR)name,actuallength,NULL,NULL);
	
	m_file=fopen(name,"rb");
		
	delete name;
	
	if(!m_file)//ifs)
		return FALSE;
	//ifs.read(cc,3);
	fread(cc,3,1,m_file);
	if(strncmp(cc,"GIF",3) != 0)
		goto error;
	//ifs.read(version,3);
	fread(version,3,1,m_file);
	version[3] = 0;
	if(strncmp(version,"89a",3) > 0)
		goto error;
	//ifs.read((char*)&gInfo.scrWidth,2);
	//ifs.read((char*)&gInfo.scrHeight,2);
	fread((char*)&gInfo.scrWidth,2,1,m_file);
	fread((char*)&gInfo.scrHeight,2,1,m_file);
	if(ferror(m_file))//!ifs.good())
		goto error;
	//ifs.read((char*)&be,1);
	fread((char*)&be,1,1,m_file);
	if((be&0x80) != 0)
		gInfo.gFlag = TRUE;
	else
		gInfo.gFlag = FALSE;
	gInfo.colorRes = ((be&0x70)>>4)+1;
	if(gInfo.gFlag)
	{	if((be&0x08) != 0)
			gInfo.gSort = TRUE;
		else
			gInfo.gSort = FALSE;
		gInfo.gSize = 1;
		gInfo.gSize <<= ((be&0x07)+1);
	}
	//ifs.read((char*)&be,1);
	fread((char*)&be,1,1,m_file);
	gInfo.BKColorIdx = be;
	//ifs.read((char*)&be,1);
	fread((char*)&be,1,1,m_file);
	gInfo.pixelAspectRatio = be;
	if(ferror(m_file))//!ifs.good())
		goto error;
	if(gInfo.gFlag)
	{	//ifs.read((char*)gColorTable,gInfo.gSize*3);
		fread((char*)gColorTable,gInfo.gSize*3,1,m_file);
		gInfo.gColorTable = gColorTable;
	}
	else
		gInfo.gColorTable = NULL;
	//dataStart = ifs.tellg();
	fgetpos(m_file,&dataStart);
	if((gInfo.frames = checkFrames(m_file//ifs
		)) == 0)
		goto error;
	if(inMem)
	{	if((allFrames = new FRAME[gInfo.frames]) == NULL)
			goto error;
		ZeroMemory(allFrames,sizeof(FRAME)*gInfo.frames);
		if(!getAllFrames(m_file//ifs
			))
		{	delete[] allFrames;
			allFrames = NULL;
			goto error;
		}
		//ifs.close();
		fclose(m_file);
	}
	opened = TRUE;
	return TRUE;
error:
	//ifs.close();
	fclose(m_file);
	return FALSE;
}

UINT CGif89a::checkFrames(FILE *file)//ifstream& ifs)
{	BYTE be;
	BOOL fileEnd = FALSE;
	UINT frames=0;
	//streampos pos = ifs.tellg();
	__int64 pos;
	fgetpos(m_file,&pos);
	while(!feof(file)//ifs.eof() 
		&& !fileEnd)
	{	
		//ifs.read((char*)&be,1);
		fread((char*)&be,1,1,file);
		switch(be)
		{	case 0x21:
				//ifs.read((char*)&be,1);
				fread((char*)&be,1,1,file);
				switch(be)
				{	case 0xf9:
					case 0xfe:
					case 0x01:
					case 0xff:
						while(!feof(file))//ifs.eof())
						{	//ifs.read((char*)&be,1);
							fread((char*)&be,1,1,file);
							if(be == 0)
								break;
							//ifs.seekg(be,ios::cur);
							fseek(file,be,SEEK_CUR);
						}
						break;
					default:
						return 0;
				}
				break;
			case 0x2c:
			{	BYTE bp;
				BOOL lFlag=FALSE;
				UINT lSize=1;
				frames++;
				//ifs.seekg(8,ios::cur);
				fseek(file,8,SEEK_CUR);
				//ifs.read((char*)&bp,1);
				fread((char*)&bp,1,1,file);
				if((bp&0x80) != 0)
					lFlag = TRUE;
				lSize <<= ((bp&0x07)+1);
				if(lFlag)
				{
					//ifs.seekg(lSize*3,ios::cur);
					fseek(file,lSize*3,SEEK_CUR);
				}
				if(ferror(file))//!ifs.good())
					return 0;
				//ifs.read((char*)&be,1);
				fread((char*)&be,1,1,file);				
				while(!feof(file))//ifs.eof())
				{	//ifs.read((char*)&be,1);
					fread((char*)&be,1,1,file);	
					if(be == 0)
						break;
					//ifs.seekg(be,ios::cur);
					fseek(file,be,SEEK_CUR);
				}
				break;
			}
			case 0x3b:
				fileEnd = TRUE;
				break;
			case 0x00:
				break;
			default:
				return 0;
		}
	}
	//ifs.seekg(pos);
	fseek(file,pos,SEEK_SET);
	return frames;
}

BOOL CGif89a::getAllFrames(FILE *file)//ifstream& ifs)
{	BYTE be;
	BOOL fileEnd = FALSE;
	FRAME *pf = allFrames;
	//streampos pos = ifs.tellg();
	__int64 pos;
	fgetpos(m_file,&pos);
	int i;
	while(!feof(file)//ifs.eof() 
		&& !fileEnd)
	{	//ifs.read((char*)&be,1);
		fread((char*)&be,1,1,file);	
		switch(be)
		{	case 0x21:
				//ifs.read((char*)&be,1);
				fread((char*)&be,1,1,file);	
				switch(be)
				{	case 0xf9:
						while(!feof(file))//ifs.eof())
						{	//ifs.read((char*)&be,1);
							fread((char*)&be,1,1,file);	
							if(be == 0)
								break;
							if(be == 4)
							{	ctrlExt.active = TRUE;
								//ifs.read((char*)&be,1);
								fread((char*)&be,1,1,file);	
								ctrlExt.disposalMethod = (be&0x1c)>>2;
								if((be&0x02) != 0)
									ctrlExt.userInputFlag = TRUE;
								else
									ctrlExt.userInputFlag = FALSE;
								if((be&0x01) != 0)
									ctrlExt.trsFlag = TRUE;
								else
									ctrlExt.trsFlag = FALSE;
								//ifs.read((char*)&ctrlExt.delayTime,2);
								fread((char*)&ctrlExt.delayTime,2,1,file);	
								//ifs.read((char*)&be,1);
								fread((char*)&be,1,1,file);
								ctrlExt.trsColorIndex = be;
							}
							else
							{
								//ifs.seekg(be,ios::cur);
								fseek(file,be,SEEK_CUR);
							}
						}
						break;
					case 0xfe:
					case 0x01:
					case 0xff:
						while(!feof(file))//ifs.eof())
						{	//ifs.read((char*)&be,1);
							fread((char*)&be,1,1,file);
							if(be == 0)
								break;
							//ifs.seekg(be,ios::cur);
							fseek(file,be,SEEK_CUR);
						}
						break;
					default:
						goto error;
				}
				break;
			case 0x2c:
			{	BYTE bp;
				//ifs.read((char*)&pf->imageLPos,2);
				//ifs.read((char*)&pf->imageTPos,2);
				//ifs.read((char*)&pf->imageWidth,2);
				//ifs.read((char*)&pf->imageHeight,2);
				//ifs.read((char*)&bp,1);
				fread((char*)&pf->imageLPos,2,1,file);
				fread((char*)&pf->imageTPos,2,1,file);
				fread((char*)&pf->imageWidth,2,1,file);
				fread((char*)&pf->imageHeight,2,1,file);
				fread((char*)&bp,1,1,file);

				if((bp&0x80) != 0)
					pf->lFlag = TRUE;
				if((bp&0x40) != 0)
					pf->interlaceFlag = TRUE;
				if((bp&0x20) != 0)
					pf->sortFlag = TRUE;
				pf->lSize = 1;
				pf->lSize <<= ((bp&0x07)+1);
				if(pf->lFlag)
				{	if((pf->pColorTable = new BYTE[pf->lSize*3]) == NULL)
						goto error;
					//ifs.read((char*)pf->pColorTable,pf->lSize*3);
					fread((char*)pf->pColorTable,pf->lSize*3,1,file);
				}
				if(ferror(file))//!ifs.good())
					goto error;
				if(!extractData(pf,file))//ifs))
					goto error;
				if(ctrlExt.active)
				{	pf->ctrlExt = ctrlExt;
					ctrlExt.active = FALSE;
				}
				pf++;
				break;
			}
			case 0x3b:
				fileEnd = TRUE;
				break;
			case 0x00:
				break;
			default:
				goto error;
		}
	}
	//ifs.seekg(pos);
	fseek(m_file,pos,SEEK_SET);
	return TRUE;
error:
	pf = allFrames;
	for(i=0;i<(int)gInfo.frames;i++)
	{	if(pf->pColorTable != NULL)
		{	delete[] pf->pColorTable;
			pf->pColorTable = NULL;
		}
		if(pf->dataBuf != NULL)
		{	delete[] pf->dataBuf;
			pf->dataBuf = NULL;
		}
	}
	return FALSE;
}

LPCFRAME CGif89a::getNextFrame()
{	if(inMem)
	{	FRAME* p =  allFrames+curIndex;
		curIndex++;
		if(curIndex >= gInfo.frames)
			curIndex = 0;
		return p;
	}
	else
	{	BYTE be;
		BOOL fileEnd = FALSE;
		if(curFrame.pColorTable != NULL)
		{	delete[] curFrame.pColorTable;
			curFrame.pColorTable = NULL;
		}
		if(curFrame.dataBuf != NULL)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区视频| 一级精品视频在线观看宜春院| 成人精品电影在线观看| 日韩中文欧美在线| 国产精品久久久久久久第一福利 | 欧美优质美女网站| 激情久久五月天| 亚洲国产精品麻豆| 亚洲欧洲av一区二区三区久久| 日韩精品专区在线| 欧美日韩一区在线观看| av在线不卡电影| 国产盗摄一区二区| 极品美女销魂一区二区三区免费| 亚洲v精品v日韩v欧美v专区| 亚洲丝袜自拍清纯另类| 国产色一区二区| 欧美不卡一区二区三区四区| 欧美亚洲一区三区| 91偷拍与自偷拍精品| 国产成人aaa| 国产一本一道久久香蕉| 男女男精品网站| 亚洲福利视频导航| 亚洲精品免费看| 国产精品久久久久久久蜜臀| 欧美精品一区二区在线播放| 欧美一级片在线看| 91精品国产综合久久久久久久久久| 91蝌蚪porny| 色香蕉成人二区免费| 成人在线视频一区二区| 国产伦精品一区二区三区在线观看| 青青草成人在线观看| 亚洲va国产va欧美va观看| 伊人婷婷欧美激情| 亚洲精品视频在线看| 亚洲丝袜另类动漫二区| 日韩一区在线看| 综合色中文字幕| 亚洲欧美日韩久久| 洋洋av久久久久久久一区| 亚洲综合一区二区三区| 一区二区三区久久| 亚洲精品中文字幕在线观看| 亚洲一区在线电影| 欧美无人高清视频在线观看| 免费观看久久久4p| 久久精品国产网站| 国产一区二区三区精品欧美日韩一区二区三区 | 国产凹凸在线观看一区二区| 国产精品 日产精品 欧美精品| 国产成人综合网| 成人少妇影院yyyy| 91一区一区三区| 日本韩国欧美一区| 在线观看91av| 日韩免费高清视频| 中文字幕第一区第二区| 中文字幕一区二区三中文字幕| 又紧又大又爽精品一区二区| 婷婷夜色潮精品综合在线| 精品午夜一区二区三区在线观看| 国产精品自拍在线| 91亚洲精品一区二区乱码| 欧洲激情一区二区| 精品国产不卡一区二区三区| 国产精品每日更新| 亚洲午夜精品久久久久久久久| 丝袜美腿一区二区三区| 国产乱码一区二区三区| 91在线视频网址| 欧美精品1区2区| 国产欧美久久久精品影院| 亚洲精品少妇30p| 久久电影网电视剧免费观看| 9久草视频在线视频精品| 欧美三级欧美一级| 久久综合久久综合久久| 亚洲免费伊人电影| 精品一区二区三区在线播放 | 欧洲精品中文字幕| 26uuu亚洲| 亚洲激情图片qvod| 久草热8精品视频在线观看| 高清免费成人av| 欧美精品一级二级| 国产精品视频一二三| 日韩影院在线观看| yourporn久久国产精品| 91麻豆精品国产91久久久更新时间| 久久嫩草精品久久久精品一| 亚洲国产人成综合网站| 国产成人在线视频网址| 3d成人动漫网站| 亚洲视频资源在线| 久久精品国产精品亚洲红杏| 91美女片黄在线观看91美女| 精品国产91九色蝌蚪| 午夜久久久久久久久| 99国产精品久| 久久久亚洲精品一区二区三区| 五月婷婷欧美视频| 色哟哟精品一区| 国产精品美女久久久久av爽李琼 | 欧洲精品在线观看| 国产欧美一二三区| 玖玖九九国产精品| 欧美日韩国产小视频在线观看| 国产精品久久三区| 国产成人高清在线| 精品久久久久久久久久久久久久久| 亚洲一区免费观看| 91女神在线视频| 国产精品视频九色porn| 国产福利一区在线| 久久久久久99精品| 韩国成人在线视频| 日韩精品资源二区在线| 天堂va蜜桃一区二区三区| 欧美性猛片xxxx免费看久爱| 亚洲欧美国产77777| av亚洲精华国产精华精| 亚洲国产精品传媒在线观看| 国产精品123| 欧美经典一区二区| 风间由美一区二区av101| 久久久久久久综合日本| 国产乱码精品1区2区3区| 久久香蕉国产线看观看99| 免费看日韩a级影片| 日韩亚洲欧美一区| 精品一区二区成人精品| 精品成人a区在线观看| 黄色日韩网站视频| 久久婷婷国产综合国色天香 | av午夜精品一区二区三区| 久久精品在线免费观看| 国产99久久久国产精品潘金网站| 久久久久国产免费免费| 国产91露脸合集magnet| 国产精品高潮呻吟| 99久久婷婷国产| 亚洲欧美成aⅴ人在线观看| 色综合天天性综合| 亚洲在线视频免费观看| 欧美日韩精品一区二区天天拍小说 | 丝袜诱惑亚洲看片| 日韩一区二区三区免费看| 另类中文字幕网| 久久久国际精品| 成人av网站在线| 亚洲美女一区二区三区| 欧美性受xxxx黑人xyx| 日韩成人精品视频| 精品88久久久久88久久久| 大陆成人av片| 亚洲欧美日韩一区| 欧美日韩情趣电影| 久久99久久精品| 国产欧美精品一区| 色av成人天堂桃色av| 视频一区在线播放| 久久欧美一区二区| 91久久精品午夜一区二区| 日韩精品欧美精品| 中文字幕精品三区| 欧美日本免费一区二区三区| 国产亚洲成aⅴ人片在线观看 | 国产一区999| 亚洲私人黄色宅男| 91精品国产综合久久精品app| 黑人巨大精品欧美黑白配亚洲| 国产精品免费人成网站| 欧美色老头old∨ideo| 久久99久久久久| 亚洲欧美日韩一区二区三区在线观看| 欧美高清视频一二三区| 国产91色综合久久免费分享| 亚洲6080在线| 欧美激情在线一区二区| 欧美三级日本三级少妇99| 国产一区欧美日韩| 亚洲高清免费视频| 国产欧美日韩视频一区二区| 欧美日韩国产片| 成人av午夜电影| 日本欧美一区二区三区乱码| 国产精品毛片无遮挡高清| 欧美精选在线播放| 99国产精品国产精品久久| 精品一区二区在线视频| 亚洲一区二区三区爽爽爽爽爽| 久久久精品中文字幕麻豆发布| 欧美这里有精品| 国产不卡视频一区二区三区| 免费观看一级欧美片| 亚洲夂夂婷婷色拍ww47| 国产精品无人区| 精品国产污网站|