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

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

?? filter.cpp

?? 骨骼動畫....把魔獸模型解出的代碼..
?? CPP
字號:
//+-----------------------------------------------------------------------------
//| Included files
//+-----------------------------------------------------------------------------
#include "Filter.h"


//+-----------------------------------------------------------------------------
//| Global objects
//+-----------------------------------------------------------------------------
FILTER Filter;


//+-----------------------------------------------------------------------------
//| Constructor
//+-----------------------------------------------------------------------------
FILTER::FILTER()
{
	OtherFilterActive = TRUE;
}


//+-----------------------------------------------------------------------------
//| Destructor
//+-----------------------------------------------------------------------------
FILTER::~FILTER()
{
	ClearAllFilters();
}


//+-----------------------------------------------------------------------------
//| Clears all filters
//+-----------------------------------------------------------------------------
VOID FILTER::ClearAllFilters()
{
	FilterInfoContainer.Clear();
}


//+-----------------------------------------------------------------------------
//| Loads all filters
//+-----------------------------------------------------------------------------
BOOL FILTER::LoadAllFilters()
{
	BUFFER Buffer;
	CHAR Char;
	std::string Token;
	std::string FileName;
	TOKEN_IN_STREAM TokenStream;
	FILTER_INFO FilterInfo;

	ClearAllFilters();

	FileName = Common.GetProgramDirectory() + "\\" + PATH_FILTERS;
	if(!FileLoader.LoadFromFile(FileName, Buffer)) return TRUE;

	TokenStream.SetFileName(PATH_FILTERS);

	if(!TokenStream.Load(Buffer)) return FALSE;

	while(!TokenStream.Eof())
	{
		FilterInfo = FILTER_INFO();

		Token = TokenStream.ReadWord();
		if(Token == "") break;
		if(Token != "Filter")
		{
			Error.SetMessage("Expected \"Filter\", got \"" + Token + "\" in \"" + PATH_FILTERS + "\"!");
			return FALSE;
		}

		FilterInfo.Name = TokenStream.ReadString();
		if(!TokenStream.ExpectChar('{')) return FALSE;

		while(TRUE)
		{
			if(TokenStream.Eof())
			{
				Error.SetMessage("Unexpected EOF reached in \"" + PATH_FILTERS + "\"!");
				return FALSE;
			}

			Token = Common.LowerCase(TokenStream.ReadString());
			FilterInfo.ExtentionList.insert(Token);

			Char = TokenStream.ReadChar();
			if(Char == '}') break;
			if(Char != ',')
			{
				Error.SetMessage(std::string("Expected \",\", got \"") + Char + "\" in \"" + PATH_FILTERS + "\"!");
				return FALSE;
			}
		}

		FilterInfo.MenuItemId = MENU_FILTER_BASE + FilterInfoContainer.GetSize();

		if(!FilterInfoContainer.Add(FilterInfo.Name, FilterInfo))
		{
			Error.SetMessage("Unable to add the filter \"" + FilterInfo.Name + "\"!");
			return FALSE;
		}
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Selects the all-filter
//+-----------------------------------------------------------------------------
VOID FILTER::SelectAll()
{
	INT i;

	OtherFilterActive = TRUE;

	for(i = 0; i < FilterInfoContainer.GetSize(); i++)
	{
		FilterInfoContainer[i].Active = TRUE;
	}
}


//+-----------------------------------------------------------------------------
//| Selects the none-filter
//+-----------------------------------------------------------------------------
VOID FILTER::SelectNone()
{
	INT i;

	OtherFilterActive = FALSE;

	for(i = 0; i < FilterInfoContainer.GetSize(); i++)
	{
		FilterInfoContainer[i].Active = FALSE;
	}
}


//+-----------------------------------------------------------------------------
//| Selects the other-filter
//+-----------------------------------------------------------------------------
VOID FILTER::SelectOther()
{
	OtherFilterActive = !OtherFilterActive;
}


//+-----------------------------------------------------------------------------
//| Selects a generic menu item
//+-----------------------------------------------------------------------------
VOID FILTER::Select(UINT MenuItem)
{
	INT i;

	for(i = 0; i < FilterInfoContainer.GetSize(); i++)
	{
		if(MenuItem == FilterInfoContainer[i].MenuItemId)
		{
			FilterInfoContainer[i].Active = !FilterInfoContainer[i].Active;
			break;
		}
	}
}


//+-----------------------------------------------------------------------------
//| Returns the nr of filters
//+-----------------------------------------------------------------------------
INT FILTER::GetNrOfFilters()
{
	return FilterInfoContainer.GetSize();
}


//+-----------------------------------------------------------------------------
//| Returns the minimum menu item id
//+-----------------------------------------------------------------------------
UINT FILTER::GetMinMenuItemId() CONST
{
	return MENU_FILTER_BASE;
}


//+-----------------------------------------------------------------------------
//| Returns the maximum menu item id
//+-----------------------------------------------------------------------------
UINT FILTER::GetMaxMenuItemId() CONST
{
	return MENU_FILTER_BASE + FilterInfoContainer.GetSize() - 1;
}


//+-----------------------------------------------------------------------------
//| Updates the checked/unchecked items in the given menu
//+-----------------------------------------------------------------------------
VOID FILTER::UpdateFilterMenu(HMENU Menu)
{
	INT i;

	CheckMenuItem(Menu, MpqFiltersOther, BoolToCheckType(OtherFilterActive));

	for(i = 0; i < FilterInfoContainer.GetSize(); i++)
	{
		CheckMenuItem(Menu, FilterInfoContainer[i].MenuItemId, BoolToCheckType(FilterInfoContainer[i].Active));
	}
}


//+-----------------------------------------------------------------------------
//| Adds the filter items to the given menu
//+-----------------------------------------------------------------------------
BOOL FILTER::AddFilterItemsToMenu(HMENU Menu)
{
	INT i;

	for(i = 0; i < FilterInfoContainer.GetSize(); i++)
	{
		if(!InsertMenu(Menu, MpqFiltersOther, MF_BYCOMMAND | MF_STRING, FilterInfoContainer[i].MenuItemId, FilterInfoContainer[i].Name.c_str()))
		{
			Error.SetMessage("Unable to add the menu item \"" + FilterInfoContainer[i].Name + "\"!");
			return FALSE;
		}
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Builds a filter
//+-----------------------------------------------------------------------------
VOID FILTER::BuildFilter(FILTER_DATA& FilterData, CONST std::string& Extention) CONST
{
	INT i;
	BOOL ExtentionFound = FALSE;
	std::set<std::string>::const_iterator j;

	if(Extention == "") return;

	for(i = 0; i < FilterInfoContainer.GetSize(); i++)
	{
		j = FilterInfoContainer[i].ExtentionList.find(Extention);
		if(j != FilterInfoContainer[i].ExtentionList.end())
		{
			FilterData.FilterList[i] = TRUE;
			ExtentionFound = TRUE;
		}
	}

	FilterData.OtherFilter = !ExtentionFound;
}


//+-----------------------------------------------------------------------------
//| Extends a filter with more info
//+-----------------------------------------------------------------------------
VOID FILTER::ExtendFilter(FILTER_DATA& FilterData, CONST FILTER_DATA& NewFilterData) CONST
{
	INT i;

	for(i = 0; i < FilterInfoContainer.GetSize(); i++)
	{
		if(NewFilterData.FilterList[i]) FilterData.FilterList[i] = TRUE;
	}

	if(NewFilterData.OtherFilter) FilterData.OtherFilter = TRUE;
}


//+-----------------------------------------------------------------------------
//| Checks if a filter is valid (should be displayed)
//+-----------------------------------------------------------------------------
BOOL FILTER::ValidFilter(CONST FILTER_DATA& FilterData) CONST
{
	INT i;

	if(OtherFilterActive && FilterData.OtherFilter) return TRUE;

	for(i = 0; i < FilterInfoContainer.GetSize(); i++)
	{
		if(FilterInfoContainer[i].Active && FilterData.FilterList[i]) return TRUE;
	}

	return FALSE;
}


//+-----------------------------------------------------------------------------
//| Converts a bool to a menu item check type
//+-----------------------------------------------------------------------------
UINT FILTER::BoolToCheckType(BOOL Bool)
{
	return (Bool ? MF_CHECKED : MF_UNCHECKED);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频一区二区三区不卡| 亚洲18影院在线观看| 成人欧美一区二区三区| 日韩精品电影在线观看| 成年人国产精品| 欧美精选午夜久久久乱码6080| 久久久另类综合| 婷婷久久综合九色综合伊人色| 成人免费黄色在线| 精品电影一区二区三区| 日韩电影免费在线看| 欧洲激情一区二区| 亚洲三级免费观看| 成人性色生活片免费看爆迷你毛片| 欧美剧在线免费观看网站| 亚洲欧美日韩在线| gogo大胆日本视频一区| 国产三级精品视频| 国产在线精品一区二区| 欧美岛国在线观看| 蜜臀av一区二区| 91精品国产综合久久香蕉麻豆| 亚洲激情在线激情| 日本韩国欧美一区二区三区| 国产精品久久久久久久久果冻传媒| 国产一区二区网址| 久久久噜噜噜久久人人看 | 日韩一区二区免费视频| 亚洲影视资源网| 91国内精品野花午夜精品| 日韩码欧中文字| 一本久久精品一区二区| 亚洲欧美另类小说| 欧美又粗又大又爽| 亚洲国产精品精华液网站| 色综合久久综合网欧美综合网| 亚洲手机成人高清视频| 色国产综合视频| 亚洲综合色网站| 6080日韩午夜伦伦午夜伦| 丝袜国产日韩另类美女| 日韩三级.com| 国产麻豆精品久久一二三| 国产欧美日本一区视频| 99在线视频精品| 亚洲一区二区三区四区在线观看| 欧美亚男人的天堂| 美女视频黄 久久| 久久精子c满五个校花| 成人国产精品免费观看动漫| 亚洲综合色视频| 欧美一区二区在线看| 激情图片小说一区| 日韩理论片一区二区| 欧美日韩一区二区在线观看视频 | 欧美精品在线观看播放| 免费高清不卡av| 国产精品天天看| 欧美性三三影院| 国产一区二区三区最好精华液| 中文字幕第一区二区| 在线一区二区三区四区五区| 日本亚洲免费观看| 国产精品美女久久久久久久久久久| 99久久99久久综合| 奇米影视在线99精品| 国产午夜精品久久久久久久| 在线视频你懂得一区| 久久精品国产一区二区三 | 国产欧美精品日韩区二区麻豆天美| 91在线视频观看| 久草在线在线精品观看| 亚洲六月丁香色婷婷综合久久| 欧美一级艳片视频免费观看| proumb性欧美在线观看| 日本美女一区二区三区视频| 国产精品二三区| 精品三级在线观看| 欧美午夜视频网站| 不卡av免费在线观看| 美女视频黄免费的久久| 亚洲自拍偷拍综合| 中文字幕av一区二区三区| 欧美高清精品3d| 色综合网站在线| 高清国产一区二区| 美女精品一区二区| 亚洲午夜私人影院| 亚洲三级电影全部在线观看高清| 精品久久久久久久人人人人传媒 | 青草国产精品久久久久久| 亚洲另类春色国产| 国产日韩影视精品| 久久色视频免费观看| 91精品国产福利| 欧美性感一类影片在线播放| 不卡一区中文字幕| 丁香激情综合五月| 国产在线精品一区二区夜色| 天堂精品中文字幕在线| 亚洲伦在线观看| 中文字幕日韩欧美一区二区三区| 精品福利一二区| 26uuu亚洲综合色| 日韩网站在线看片你懂的| 69成人精品免费视频| 欧美色视频在线观看| 在线免费亚洲电影| 色94色欧美sute亚洲线路一久| 99亚偷拍自图区亚洲| 成人国产精品免费| 91在线一区二区三区| 色一情一伦一子一伦一区| 日本精品一级二级| 欧美美女喷水视频| 337p亚洲精品色噜噜噜| 欧美高清hd18日本| 日韩久久久久久| 337p粉嫩大胆噜噜噜噜噜91av | 视频一区二区三区中文字幕| 亚洲国产成人av网| 日韩专区在线视频| 狠狠色丁香婷婷综合久久片| 久久爱www久久做| 国产伦精品一区二区三区在线观看 | 久久国产福利国产秒拍| 精品一区二区在线看| 国产乱人伦精品一区二区在线观看| 久久精品免费看| 盗摄精品av一区二区三区| 99精品视频在线播放观看| 日本国产一区二区| 91精品麻豆日日躁夜夜躁| 亚洲精品在线电影| 亚洲欧美一区二区在线观看| 亚洲欧美日本在线| 五月天国产精品| 国产专区欧美精品| k8久久久一区二区三区| 欧美日韩一级大片网址| 精品少妇一区二区三区| 国产精品传媒入口麻豆| 亚洲一卡二卡三卡四卡无卡久久| 日本中文在线一区| 不卡一区中文字幕| 欧美精品色综合| 国产婷婷色一区二区三区| 日韩毛片视频在线看| 三级欧美在线一区| 另类成人小视频在线| av成人老司机| 日韩一级片在线观看| 国产精品传媒入口麻豆| 日本一不卡视频| 色婷婷亚洲综合| 亚洲精品一区二区三区影院| 亚洲人被黑人高潮完整版| 蜜臀久久99精品久久久久久9 | 国产精品456露脸| 91国偷自产一区二区开放时间| 精品精品欲导航| 亚洲在线免费播放| 懂色av中文字幕一区二区三区| 在线视频一区二区三区| 国产日本欧美一区二区| 日韩制服丝袜av| 欧洲国内综合视频| 国产精品免费网站在线观看| 欧美bbbbb| 精品视频色一区| 自拍偷拍国产精品| 福利一区二区在线| 日韩免费观看高清完整版 | 国产尤物一区二区| 欧美一区二区日韩一区二区| 亚洲少妇屁股交4| 国模少妇一区二区三区| 欧美丝袜第三区| 亚洲免费观看高清| 不卡高清视频专区| 中文字幕欧美激情| 国产精品一区二区三区网站| 欧美理论在线播放| 午夜婷婷国产麻豆精品| 日本韩国欧美在线| 亚洲精品欧美综合四区| 成人av高清在线| 国产视频一区二区三区在线观看| 久久国产免费看| 日韩亚洲欧美高清| 免费看欧美美女黄的网站| 欧美视频一区二区三区在线观看| 自拍偷自拍亚洲精品播放| 成人午夜短视频| 国产精品美女一区二区在线观看| 国产成人免费视频网站| 国产校园另类小说区| 国产一区三区三区| 国产清纯白嫩初高生在线观看91| 国产精品一色哟哟哟|