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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? plugin.cpp

?? 一款最完整的工業(yè)組態(tài)軟源代碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// =====================================================================
// FreeImage Plugin Interface
//
// Design and implementation by
// - Floris van den Berg (flvdberg@wxs.nl)
// - Rui Lopes (ruiglopes@yahoo.com)
// - Detlev Vendt (detlev.vendt@brillit.de)
// - Petr Pytelka (pyta@lightcomp.com)
//
// This file is part of FreeImage 3
//
// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
// THIS DISCLAIMER.
//
// Use at your own risk!
// =====================================================================

#ifdef WIN32
#pragma warning (disable : 4786) // identifier was truncated to 'number' characters
#include <windows.h>
#include <io.h>
#else
#include <ctype.h>
#endif // WIN32

#include "FreeImage.h"
#include "Utilities.h"
#include "FreeImageIO.h"
#include "Plugin.h"

// =====================================================================

using namespace std;

// =====================================================================
// Plugin search list
// =====================================================================

const char *
s_search_list[] = {
	"",
	"plugins\\",
};

static int s_search_list_size = sizeof(s_search_list) / sizeof(char *);
static PluginList *s_plugins = NULL;
static int s_plugin_reference_count = 0;


// =====================================================================
// Reimplementation of stricmp (it is not supported on some systems)
// =====================================================================

int
FreeImage_stricmp(const char *s1, const char *s2) {
	int c1, c2;

	do {
		c1 = tolower(*s1++);
		c2 = tolower(*s2++);
	} while (c1 && c1 == c2);

	return c1 - c2;
}

// =====================================================================
//  Implementation of PluginList
// =====================================================================

PluginList::PluginList() :
m_plugin_map(),
m_node_count(0) {
}

FREE_IMAGE_FORMAT
PluginList::AddNode(FI_InitProc init_proc, void *instance, const char *format, const char *description, const char *extension, const char *regexpr) {
	if (init_proc != NULL) {
		PluginNode *node = new PluginNode;
		Plugin *plugin = new Plugin;

		memset(plugin, 0, sizeof(Plugin));

		// fill-in the plugin structure

		init_proc(plugin, m_plugin_map.size());

		// get the format string (two possible ways)

		const char *the_format = NULL;

		if (format != NULL) 
			the_format = format;
		else if (plugin->format_proc != NULL)
			the_format = plugin->format_proc();

		// add the node if it wasn't there already

		if (the_format != NULL) {
			if (FindNodeFromFormat(the_format) == NULL) {
				node->m_id = m_plugin_map.size();
				node->m_instance = instance;
				node->m_plugin = plugin;
				node->m_format = format;
				node->m_description = description;
				node->m_extension = extension;
				node->m_regexpr = regexpr;
				node->m_next = NULL;
				node->m_enabled = TRUE;

				m_plugin_map[m_plugin_map.size()] = node;

				return (FREE_IMAGE_FORMAT)node->m_id;
			}
		}

		// something went wrong while allocating the plugin... cleanup

		delete plugin;
		delete node;
	}

	return FIF_UNKNOWN;
}

PluginNode *
PluginList::FindNodeFromFormat(const char *format) {
	int count = 0;

	for (map<int, PluginNode *>::iterator i = m_plugin_map.begin(); i != m_plugin_map.end(); ++i) {
		const char *the_format = ((*i).second->m_format != NULL) ? (*i).second->m_format : (*i).second->m_plugin->format_proc();

		if (FreeImage_stricmp(the_format, format) == 0)
			return (*i).second;		

		count++;
	}

	return NULL;
}

PluginNode *
PluginList::FindNodeFromMime(const char *mime) {
	int count = 0;

	for (map<int, PluginNode *>::iterator i = m_plugin_map.begin(); i != m_plugin_map.end(); ++i) {
		const char *the_mime = ((*i).second->m_plugin->mime_proc != NULL) ? (*i).second->m_plugin->mime_proc() : "";

		if ((the_mime != NULL) && (strcmp(the_mime, mime) == 0))
			return (*i).second;		

		count++;
	}

	return NULL;
}

PluginNode *
PluginList::FindNodeFromFIF(int node_id) {
	map<int, PluginNode *>::iterator i = m_plugin_map.find(node_id);

	if (i != m_plugin_map.end())
		return (*i).second;

	return NULL;
}

int
PluginList::Size() const {
	return m_plugin_map.size();
}

BOOL
PluginList::IsEmpty() const {
	return m_plugin_map.empty();
}

PluginList::~PluginList() {
	for (map<int, PluginNode *>::iterator i = m_plugin_map.begin(); i != m_plugin_map.end(); ++i) {
#ifdef WIN32
		if ((*i).second->m_instance != NULL)
			FreeLibrary((HINSTANCE)(*i).second->m_instance);
#endif
		delete (*i).second->m_plugin;
		delete ((*i).second);
	}
}

// =====================================================================
// Retrieve a pointer to the plugin list container
// =====================================================================

PluginList * DLL_CALLCONV
FreeImage_GetPluginList() {
	return s_plugins;
}

// =====================================================================
// Plugin System Initialization
// =====================================================================

void DLL_CALLCONV
FreeImage_Initialise(BOOL load_local_plugins_only) {
	if (s_plugin_reference_count++ == 0) {

		// internal plugin initialization

		s_plugins = new PluginList;

		if (s_plugins) {
			s_plugins->AddNode(InitBMP);
			s_plugins->AddNode(InitICO);
			s_plugins->AddNode(InitJPEG);
			s_plugins->AddNode(InitMNG, NULL, "JNG", "JPEG Network Graphics", "jng", "");
			s_plugins->AddNode(InitKOALA);
			s_plugins->AddNode(InitIFF);
			s_plugins->AddNode(InitMNG);
			s_plugins->AddNode(InitPNM, NULL, "PBM", "Portable Bitmap (ASCII)", "pbm", "^P1");
			s_plugins->AddNode(InitPNM, NULL, "PBMRAW", "Portable Bitmap (RAW)", "pbm", "^P4");
			s_plugins->AddNode(InitPCD);
			s_plugins->AddNode(InitPCX);
			s_plugins->AddNode(InitPNM, NULL, "PGM", "Portable Greymap (ASCII)", "pgm", "^P2");
			s_plugins->AddNode(InitPNM, NULL, "PGMRAW", "Portable Greymap (RAW)", "pgm", "^P5");
			s_plugins->AddNode(InitPNG);
			s_plugins->AddNode(InitPNM, NULL, "PPM", "Portable Pixelmap (ASCII)", "ppm", "^P3");
			s_plugins->AddNode(InitPNM, NULL, "PPMRAW", "Portable Pixelmap (RAW)", "ppm", "^P6");
			s_plugins->AddNode(InitRAS);
			s_plugins->AddNode(InitTARGA);
			s_plugins->AddNode(InitTIFF);
			s_plugins->AddNode(InitWBMP);
			s_plugins->AddNode(InitPSD);
			s_plugins->AddNode(InitCUT);
			s_plugins->AddNode(InitXBM);
			s_plugins->AddNode(InitXPM);
			s_plugins->AddNode(InitDDS);
	        s_plugins->AddNode(InitGIF);
			
			// external plugin initialization

#ifdef WIN32
			if (!load_local_plugins_only) {
				int count = 0;
				char buffer[MAX_PATH + 200];
				char current_dir[2 * _MAX_PATH], module[2 * _MAX_PATH];
				BOOL bOk = FALSE;

				// store the current directory. then set the directory to the application location

				if (GetCurrentDirectoryA(2 * _MAX_PATH, current_dir) != 0) {
					if (GetModuleFileNameA(NULL, module, 2 * _MAX_PATH) != 0) {
						char *last_point = strrchr(module, '\\');

						if (last_point) {
							*last_point = '\0';

							bOk = SetCurrentDirectoryA(module);
						}
					}
				}

				// search for plugins

				while (count < s_search_list_size) {
					_finddata_t find_data;
					long find_handle;

					strcpy(buffer, s_search_list[count]);
					strcat(buffer, "*.fip");

					if ((find_handle= _findfirst(buffer, &find_data)) != -1L) {
						do {
							strcpy(buffer, s_search_list[count]);
							strncat(buffer, find_data.name, MAX_PATH + 200);

							HINSTANCE instance = LoadLibraryA(buffer);

							if (instance != NULL) {
								FARPROC proc_address = GetProcAddress(instance, "_Init@8");

								if (proc_address != NULL)
									s_plugins->AddNode((FI_InitProc)proc_address, (void *)instance);
								else
									FreeLibrary(instance);
							}
						} while (_findnext(find_handle, &find_data) != -1L);

						_findclose(find_handle);
					}

					count++;
				}

				// restore the current directory

				if (bOk)
					SetCurrentDirectoryA(current_dir);
			}
#endif // WIN32
		}
	}
}

void DLL_CALLCONV
FreeImage_DeInitialise() {
	--s_plugin_reference_count;

	if (s_plugin_reference_count == 0) {
		delete s_plugins;
	}
}

// =====================================================================
// Open and close a bitmap
// =====================================================================

void * DLL_CALLCONV
FreeImage_Open(PluginNode *node, FreeImageIO *io, fi_handle handle, BOOL open_for_reading) {
	if (node->m_plugin->open_proc != NULL)
       return node->m_plugin->open_proc(io, handle, open_for_reading);

	return NULL;
};

void DLL_CALLCONV
FreeImage_Close(PluginNode *node, FreeImageIO *io, fi_handle handle, void *data) {
	if (node->m_plugin->close_proc != NULL)
		node->m_plugin->close_proc(io, handle, data);
};

// =====================================================================
// Plugin System Load/Save Functions
// =====================================================================

FIBITMAP * DLL_CALLCONV
FreeImage_LoadFromHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle, int flags) {
	if ((fif >= 0) && (fif < FreeImage_GetFIFCount())) {
		PluginNode *node = s_plugins->FindNodeFromFIF(fif);

		if (node != NULL) {
			if (node->m_enabled) {
				if(node->m_plugin->load_proc != NULL) {
				FIBITMAP *bitmap = NULL;

				void *data = FreeImage_Open(node, io, handle, TRUE);

				bitmap = node->m_plugin->load_proc(io, handle, -1, flags, data);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日产一区| 亚洲超丰满肉感bbw| 精品日韩一区二区三区| 国产精品1024| 美日韩一区二区| 午夜精品免费在线| 久久综合狠狠综合久久激情| 欧美乱妇20p| 欧美日韩不卡一区二区| 在线视频亚洲一区| 91久久精品网| 色婷婷精品久久二区二区蜜臀av| 成人久久视频在线观看| 国产一区二区三区香蕉| 亚洲成人动漫在线免费观看| 一区二区三区在线观看视频| 最新国产精品久久精品| 国产精品久久久久久久岛一牛影视| 久久久噜噜噜久久人人看 | 欧美视频在线一区二区三区| 99久久免费视频.com| av一本久道久久综合久久鬼色| 国产精品一二三在| 成人性生交大片| 国内精品免费**视频| 国产一区福利在线| 美女视频黄久久| 久久99国产精品免费网站| 日本视频一区二区| 久久97超碰色| av网站一区二区三区| 欧美日韩一卡二卡| 一区二区三区在线观看视频| 日韩精品1区2区3区| 国产精品一区二区男女羞羞无遮挡 | 国产日本欧洲亚洲| 亚洲乱码中文字幕| 蜜臀久久99精品久久久久宅男 | 欧美精品色一区二区三区| 精品国产一区久久| 亚洲蜜臀av乱码久久精品| 日日夜夜一区二区| 高清不卡一二三区| 欧美日韩视频一区二区| 久久九九全国免费| 性久久久久久久久久久久| 国产一区欧美日韩| 欧美在线视频不卡| 欧美国产一区视频在线观看| 亚洲成在线观看| 激情文学综合网| 在线免费观看一区| 久久影院电视剧免费观看| 一个色在线综合| 国产乱码精品一区二区三区忘忧草 | 久久久久久免费毛片精品| 夜夜嗨av一区二区三区中文字幕| 另类人妖一区二区av| 色拍拍在线精品视频8848| 精品国产乱码久久久久久影片| 国产精品国产三级国产aⅴ入口 | 水野朝阳av一区二区三区| 国产91精品露脸国语对白| 欧美日韩国产免费| 国产精品国产三级国产三级人妇| 日本不卡在线视频| 日本韩国欧美在线| 国产精品乱人伦一区二区| 久久99国产精品麻豆| 欧美亚洲另类激情小说| 中文字幕永久在线不卡| 国模套图日韩精品一区二区| 欧美日韩国产一级二级| ...xxx性欧美| 国产精品1区二区.| 精品噜噜噜噜久久久久久久久试看| 亚洲一区二区三区四区在线免费观看| 国产suv一区二区三区88区| 欧美一区二区国产| 亚洲国产人成综合网站| 97se亚洲国产综合自在线观| 久久久久国产精品人| 美美哒免费高清在线观看视频一区二区 | 国产裸体歌舞团一区二区| 欧美一区二区三区在线视频| 亚洲一区二区黄色| 一本大道久久a久久精品综合| 久久久蜜桃精品| 久久国产精品无码网站| 538在线一区二区精品国产| 一区二区三区在线观看欧美| 91亚洲国产成人精品一区二区三| 久久老女人爱爱| 国产美女娇喘av呻吟久久| 精品久久久久久最新网址| 奇米精品一区二区三区在线观看一| 欧美日韩在线观看一区二区 | 秋霞电影一区二区| 欧美精品色一区二区三区| 午夜精品123| 欧美日韩成人综合| 五月婷婷综合在线| 欧美日韩综合在线免费观看| 亚洲精品美国一| 91免费观看视频| 亚洲靠逼com| 91香蕉国产在线观看软件| 中文字幕一区av| 日本丶国产丶欧美色综合| 亚洲视频中文字幕| 色妞www精品视频| 亚洲午夜一区二区三区| 在线观看成人小视频| 亚洲区小说区图片区qvod| 91在线精品秘密一区二区| 亚洲一区影音先锋| 91精品婷婷国产综合久久性色 | 免费成人在线影院| 久久一区二区视频| 成人精品国产一区二区4080| 亚洲欧美在线视频| 国产精品国产精品国产专区不蜜 | aaa亚洲精品一二三区| 亚洲精品自拍动漫在线| 欧美日韩中文精品| 精品制服美女丁香| 中文字幕av一区二区三区 | 欧美国产一区二区| 色综合久久久久久久久久久| 亚洲成人动漫一区| 精品国产百合女同互慰| 国产成人精品一区二区三区网站观看| 国产精品视频免费| 欧美影院午夜播放| 九九热在线视频观看这里只有精品| 久久精品人人做人人爽人人| 91小视频免费观看| 午夜精品久久久久久久| 精品久久国产老人久久综合| 成人激情动漫在线观看| 亚洲国产精品一区二区www在线| 欧美日韩一区二区不卡| 国产在线不卡视频| 亚洲黄色片在线观看| 欧美一区二区三区在线观看视频| 国产91对白在线观看九色| 亚洲一二三区不卡| 久久久久国色av免费看影院| 色网综合在线观看| 久久国产精品99久久人人澡| 亚洲欧洲国产日韩| 日韩欧美国产1| 99久久精品国产一区| 蜜臀久久久99精品久久久久久| 亚洲欧洲日韩av| 日韩一区二区视频| 99国产精品国产精品毛片| 久久精品久久综合| 亚洲九九爱视频| 久久久国产精华| 欧美日韩高清不卡| caoporn国产一区二区| 久久综合综合久久综合| 亚洲美女免费在线| 国产欧美日韩在线看| 91精品国产一区二区三区| 91在线porny国产在线看| 九九九精品视频| 丝袜亚洲精品中文字幕一区| 国产精品毛片久久久久久久| 日韩你懂的电影在线观看| 欧美性一区二区| 色婷婷狠狠综合| 久久久久久影视| 全国精品久久少妇| 亚洲特黄一级片| 欧美精选在线播放| 成人午夜又粗又硬又大| 美日韩一级片在线观看| 亚洲成在线观看| 一区二区三区在线观看网站| 中文字幕乱码日本亚洲一区二区| 日韩亚洲欧美中文三级| 欧美三级在线视频| 91毛片在线观看| 不卡区在线中文字幕| 国产精品一区二区久久不卡| 精品一区二区三区不卡 | 婷婷开心久久网| 亚洲精品日韩一| 亚洲欧美日韩精品久久久久| 国产日韩欧美一区二区三区综合| 欧美一区二区三区视频在线| 欧美调教femdomvk| 在线精品视频免费播放| 色婷婷狠狠综合| 日本精品视频一区二区三区| 91色porny在线视频| 成人激情黄色小说| jlzzjlzz亚洲女人18|