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

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

?? pluginpcd.cpp

?? 一款最完整的工業組態軟源代碼
?? CPP
字號:
// ==========================================================
// Kodak PhotoCD Loader
//
// Design and implementation by
// - Floris van den Berg (flvdberg@wxs.nl)
// 
// Based on pascal code developed by Alex Kwak
//
// 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!
// ==========================================================

#include "FreeImage.h"
#include "Utilities.h"

// ==========================================================
// Internal functions
// ==========================================================

static int 
clamp(double x) {
	int a = (int)floor(x + 0.5);
	return (a < 0) ? 0 : (a > 255) ? 255 : a;
}

static void
YUV2RGB(int y, int cb, int cr, int &r, int &g, int &b) {
	double c11 = 0.0054980  * 256.0;
	double c12 = 0.0000001  * 256.0;
	double c13 = 0.0051681  * 256.0;
	double c21 = 0.0054980  * 256.0;
	double c22 = -0.0015446 * 256.0;
	double c23 = -0.0026325 * 256.0;
	double c31 = 0.0054980  * 256.0;
	double c32 = 0.0079533  * 256.0;
	double c33 = 0.0000001  * 256.0;

	r = clamp(c11 * y + c12 * (cb - 156) + c13 * (cr - 137));
	g = clamp(c21 * y + c22 * (cb - 156) + c23 * (cr - 137));
	b = clamp(c31 * y + c32 * (cb - 156) + c33 * (cr - 137));
}

static BOOL
VerticalOrientation(FreeImageIO *io, fi_handle handle) {
	char buffer[128];

	io->read_proc(buffer, 128, 1, handle);

	return (buffer[72] & 63) == 8;
}

// ==========================================================
// Plugin Interface
// ==========================================================

static int s_format_id;

// ==========================================================
// Plugin Implementation
// ==========================================================

static const char * DLL_CALLCONV
Format() {
	return "PCD";
}

static const char * DLL_CALLCONV
Description() {
	return "Kodak PhotoCD";
}

static const char * DLL_CALLCONV
Extension() {
	return "pcd";
}

static const char * DLL_CALLCONV
RegExpr() {
	return NULL;
}

static const char * DLL_CALLCONV
MimeType() {
	return "image/x-photo-cd";
}

static BOOL DLL_CALLCONV
SupportsExportDepth(int depth) {
	return FALSE;
}

static BOOL DLL_CALLCONV 
SupportsExportType(FREE_IMAGE_TYPE type) {
	return FALSE;
}

// ----------------------------------------------------------

static FIBITMAP * DLL_CALLCONV
Load(FreeImageIO *io, fi_handle handle, int page, int flags, void *data) {
	int width;
	int height;
	int line;
	int pitch;
	int bpp = 24;
	int scan_line_add   = 1;
	int start_scan_line = 0;

	// to make absolute seeks possible we store the current position in the file
	
	long offset_in_file = io->tell_proc(handle);
	long seek = 0;

	// decide which bitmap in the cabinet to load

	switch (flags) {
		case PCD_BASEDIV4 :
			seek = 0x2000;
			width = 192;
			height = 128;
			break;

		case PCD_BASEDIV16 :
			seek = 0xB800;
			width = 384;
			height = 256;
			break;

		default :
			seek = 0x30000;
			width = 768;
			height = 512;
			break;
	}

	// calculate line and pitch based on the selected bitmap size

	line = CalculateLine(width, bpp);
	pitch = CalculatePitch(line);

	// allocate the dib and write out the header

	FIBITMAP *dib = FreeImage_Allocate(width, height, bpp, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
	
	// check if the PCD is bottom-up

	if (VerticalOrientation(io, handle)) {
		scan_line_add = -1;
		start_scan_line = height - 1;		
	}

	// temporary stuff to load PCD

	BYTE *y1   = new BYTE[width];
	BYTE *y2   = new BYTE[width];
	BYTE *cbcr = new BYTE[width];
	BYTE *yl[] = { y1, y2 };

	// seek to the part where the bitmap data begins

	io->seek_proc(handle, offset_in_file, SEEK_SET);
	io->seek_proc(handle, seek, SEEK_CUR);

	// read the data

	for (int y = 0; y < height / 2; ++y) {
		io->read_proc(y1, width, 1, handle);
		io->read_proc(y2, width, 1, handle);
		io->read_proc(cbcr, width, 1, handle);

		for (int i = 0; i < 2; ++i) {
			BYTE *img = FreeImage_GetScanLine(dib, start_scan_line);
			for (int x = 0; x < width; ++x) {
				int r, g, b;

				YUV2RGB(yl[i][x], cbcr[x / 2], cbcr[(width / 2) + (x / 2)], r, g, b);

				img[FI_RGBA_BLUE] = b;
				img[FI_RGBA_GREEN] = g;
				img[FI_RGBA_RED] = r;
				img += 3;
			}

			start_scan_line += scan_line_add;
		}
	}

	delete [] cbcr;
	delete [] y2;
	delete [] y1;

	return dib;
}

// ==========================================================
//   Init
// ==========================================================

void DLL_CALLCONV
InitPCD(Plugin *plugin, int format_id) {
	s_format_id = format_id;

	plugin->format_proc = Format;
	plugin->description_proc = Description;
	plugin->extension_proc = Extension;
	plugin->regexpr_proc = RegExpr;
	plugin->open_proc = NULL;
	plugin->close_proc = NULL;
	plugin->pagecount_proc = NULL;
	plugin->pagecapability_proc = NULL;
	plugin->load_proc = Load;
	plugin->save_proc = NULL;
	plugin->validate_proc = NULL;
	plugin->mime_proc = MimeType;
	plugin->supports_export_bpp_proc = SupportsExportDepth;
	plugin->supports_export_type_proc = SupportsExportType;
	plugin->supports_icc_profiles_proc = NULL;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av亚洲精华国产精华精华| 91精品国产免费| 日韩一区二区三区电影在线观看| 久久久精品蜜桃| 日本视频一区二区| 色欧美片视频在线观看| 久久久久久亚洲综合影院红桃 | 欧美在线一区二区| 国产拍揄自揄精品视频麻豆| 日韩福利视频网| 色诱亚洲精品久久久久久| 精品国产乱子伦一区| 亚洲午夜免费福利视频| 99视频在线观看一区三区| 久久久久久99精品| 九九在线精品视频| 日韩一区二区精品葵司在线| 亚洲午夜在线视频| 91久久精品一区二区二区| 国产精品色一区二区三区| 极品瑜伽女神91| 日韩欧美成人激情| 日韩高清在线电影| 日韩欧美不卡在线观看视频| 日本伊人色综合网| 91精品国产麻豆| 美日韩一区二区三区| 欧美日韩国产高清一区二区三区 | 粉嫩一区二区三区性色av| 欧美大白屁股肥臀xxxxxx| 午夜精品久久久久久久久| 白白色亚洲国产精品| 国产精品久久久久永久免费观看| 国产suv精品一区二区883| 国产女人18毛片水真多成人如厕| 大白屁股一区二区视频| 中文成人综合网| 国产sm精品调教视频网站| 欧美激情一区二区三区四区| 成人午夜av电影| 中文字幕在线不卡一区| 欧洲精品一区二区| 亚洲福利视频一区| 欧美电影免费观看高清完整版| 久久激情五月婷婷| 久久夜色精品一区| 成人高清在线视频| 亚洲午夜视频在线| 欧美精品一卡二卡| 免费精品99久久国产综合精品| 欧美精品精品一区| 美女视频免费一区| 欧美肥胖老妇做爰| 蜜臀av一区二区| 日韩久久久久久| 韩国午夜理伦三级不卡影院| 精品国产91久久久久久久妲己| 久久99久久久欧美国产| 日韩精品最新网址| 成人午夜电影网站| 曰韩精品一区二区| 欧美精品99久久久**| 亚洲精品一二三| 欧美日本一区二区三区四区| 日韩精品免费专区| 久久久99久久精品欧美| 国产91精品入口| 亚洲精品五月天| 3d动漫精品啪啪一区二区竹菊| 激情图区综合网| 国产精品灌醉下药二区| 欧美性一二三区| 美女一区二区久久| 亚洲视频一区在线| 26uuu亚洲综合色| 欧美性一二三区| av一区二区三区四区| 婷婷夜色潮精品综合在线| 26uuu久久综合| 色综合久久66| 国模少妇一区二区三区| 亚洲欧美色图小说| 制服丝袜国产精品| 欧洲中文字幕精品| 韩国中文字幕2020精品| 亚洲精品福利视频网站| 日韩精品在线一区| 色一情一伦一子一伦一区| 麻豆91精品91久久久的内涵| 国产精品国产自产拍高清av | 久久精品一区二区三区四区| 91猫先生在线| 国产综合久久久久久鬼色 | 色88888久久久久久影院按摩| 免费观看在线色综合| 久久九九久精品国产免费直播| 精品视频全国免费看| 高清成人免费视频| 美女尤物国产一区| 一区二区国产盗摄色噜噜| 久久男人中文字幕资源站| 在线亚洲一区二区| 国产精品小仙女| 日本伊人午夜精品| 亚洲国产视频网站| 26uuu欧美| 欧美日韩亚洲综合| 一本大道久久a久久精品综合| 国内不卡的二区三区中文字幕 | 五月婷婷久久综合| 一区二区三区在线视频播放| 亚洲国产精品精华液ab| 欧美大片一区二区三区| 日本高清成人免费播放| 在线免费观看成人短视频| 国产精品99久久久久| 久久精品免费看| 久久草av在线| 国产精品一区二区三区乱码| 蜜桃视频在线观看一区二区| 午夜电影网亚洲视频| 亚洲日本成人在线观看| 一区二区三区电影在线播| 亚洲美腿欧美偷拍| 成人欧美一区二区三区黑人麻豆| 国产亚洲美州欧州综合国| 久久天天做天天爱综合色| 日韩欧美中文字幕精品| 欧美一区二区三区免费视频 | 日本欧美一区二区| 日韩成人一级片| 一色屋精品亚洲香蕉网站| 亚洲制服欧美中文字幕中文字幕| 亚洲欧美乱综合| 亚洲欧美色图小说| 夜夜嗨av一区二区三区| 亚洲欧美国产77777| 中文字幕一区av| 国内精品国产成人| 在线看不卡av| 欧美午夜在线观看| 欧美老年两性高潮| 欧美www视频| 亚洲国产精品传媒在线观看| 国产精品你懂的| 欧美成人综合网站| 亚洲品质自拍视频网站| 亚洲成人1区2区| 国产高清亚洲一区| 日本精品一级二级| 欧美tickling挠脚心丨vk| 国产欧美视频在线观看| 亚洲一区二区三区四区的| 蜜桃久久精品一区二区| 成人免费三级在线| 欧美在线观看禁18| 欧美一区二区播放| 久久久不卡影院| 日韩二区在线观看| 国产精品 欧美精品| 91麻豆免费观看| 91精品国产色综合久久不卡电影 | 国产suv精品一区二区883| 成人app下载| 欧美日韩你懂得| 精品欧美乱码久久久久久1区2区| 国产日韩成人精品| 夜夜嗨av一区二区三区网页| 精品一区二区三区免费播放| 成人激情开心网| 欧美乱妇23p| 国产精品美女久久久久av爽李琼| 亚洲成人动漫在线免费观看| 黄色精品一二区| 欧美日韩午夜影院| 国产精品乱人伦中文| 亚洲欧美成人一区二区三区| 国产成人av资源| 9191久久久久久久久久久| 中文幕一区二区三区久久蜜桃| 午夜影视日本亚洲欧洲精品| 国产91丝袜在线观看| 欧美挠脚心视频网站| 国产精品区一区二区三区| 亚洲成av人片一区二区三区| 99re热视频精品| 国产日韩成人精品| 麻豆freexxxx性91精品| 欧美视频一区二区三区四区| 中文字幕不卡在线观看| 日韩电影在线一区| 91视频在线观看免费| 亚洲欧美综合色| 国产成人在线色| 91精品婷婷国产综合久久| 一区二区三区四区中文字幕| 国产91精品免费| 久久久久成人黄色影片| 日韩精品一二三四| 日韩精品综合一本久道在线视频|