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

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

?? sysdisplay.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
字號:
/*  *	HT Editor *	sysdisplay.cc - screen access functions for Win32 * *	Copyright (C) 1999-2005 Sebastian Biallas (sb@biallas.net) * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	This program is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU General Public License for more details. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "io/display.h"#include "io/types.h"#include <cstdio>#include <cstdlib>#include <cstring>#define WIN32_LEAN_AND_MEAN#include <windows.h>uint mapToGraphical(char chr){	switch (chr) {	case GC_1VLINE: return 0x2502;	case GC_1HLINE: return 0x2500;	case GC_1CORNER0: return 0x2510;	case GC_1CORNER1: return 0x2518;	case GC_1CORNER2: return 0x2514;	case GC_1CORNER3: return 0x250c;	case GC_1UTEE: return 0x252c;	case GC_1LTEE: return 0x251c;	case GC_1DTEE: return 0x2534;	case GC_1RTEE: return 0x2524;	case GC_2VLINE: return 0x2551;	case GC_2HLINE: return 0x2550;	case GC_2CORNER0: return 0x2557;	case GC_2CORNER1: return 0x255c;	case GC_2CORNER2: return 0x255a;	case GC_2CORNER3: return 0x2554;	case GC_LOW: return 0x2591;	case GC_MEDIUM: return 0x2592;	case GC_HIGH: return 0x2593;	case GC_FULL: return 0x2588;	case GC_ARROW_UP: return 0x25b2;	case GC_ARROW_DOWN: return 0x25bc;	case GC_ARROW_LEFT: return 0x25c4;	case GC_ARROW_RIGHT: return 0x25ba;	case GC_SMALL_ARROW_UP: return 0x2191;	case GC_SMALL_ARROW_DOWN: return 0x2193;	case GC_FILLED_CIRCLE: return 0x25cf;	case GC_FILLED_QUAD: return 0x25a0;	case GC_FILLED_UPPER: return 0x2580;	case GC_FILLED_LOWER: return 0x2584;	}	return '?';}uint mapCharToSystemCP(char chr, Codepage codepage){	switch (codepage) {	case CP_WINDOWS: 	case CP_UNICODE: return chr;	case CP_DEVICE: 		if (byte(chr) > 127)  {			char in[2] = {chr, 0};			WCHAR out[2];			OemToCharW(in, out);			return out[0];		} else {			return chr;		}	case CP_GRAPHICAL: return mapToGraphical(chr);	case CP_INVALID: return '?';	}	return chr;}bool sys_get_screen_size(int &w, int &h){	CONSOLE_SCREEN_BUFFER_INFO screen_info;	GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &screen_info);	w = screen_info.srWindow.Right - screen_info.srWindow.Left + 1;	h = screen_info.srWindow.Bottom - screen_info.srWindow.Top + 1;	return true;}/* *	Class Win32SystemDisplay */class Win32SystemDisplay: public SystemDisplay {public:	CHAR_INFO *buf;	CHAR_INFO *old_buf;	vcp *colorbuf;	HANDLE output;	CursorMode cursor_mode;	CursorMode last_cursor_mode;	int cursorx, cursory;	int dx, dy;		void 			cursorBold();		void 			cursorHide();		void 			cursorNormal();		bool			initConsole();public:					Win32SystemDisplay(const char *title);	virtual				~Win32SystemDisplay();	/* extends Display */	virtual	void			copyFromDisplay(const Display &display, int x, int y, const Bounds &clipping);	virtual	void			fill(int x, int y, int w, int h, vcp color, char chr, Codepage cp = CP_DEVICE);	virtual	void			getCursor(int &x, int &y) const;	virtual	CursorMode		getCursorMode() const;	virtual	int			nprint(int x, int y, vcp color, const char *str, int maxstrlen, Codepage codepage = CP_DEVICE);	virtual	bool			read(uint &rawchar, vcp &color, int x, int y) const;	virtual	void			setBounds(const Bounds &b);	virtual	void			setCursor(int x, int y, CursorMode mode = CURSOR_NORMAL);	virtual	void			setCursorMode(CursorMode mode = CURSOR_NORMAL);	/* extends SystemDisplay */	virtual	void			show();	/* new */        	void			putChar(int dest, uint rawchar, vcp vc);		uint			vcpToSystem(vcp color);};Win32SystemDisplay::Win32SystemDisplay(const char *title): SystemDisplay(){	CONSOLE_SCREEN_BUFFER_INFO screen_info;	buf = NULL;	colorbuf = NULL;	old_buf = NULL;	if (!initConsole()) ;//throw sys_exception("unable to init console");	GetConsoleScreenBufferInfo(output, &screen_info);	SetConsoleTitleA(title);	assign(0, 0, screen_info.srWindow.Right - screen_info.srWindow.Left + 1,		screen_info.srWindow.Bottom - screen_info.srWindow.Top + 1);	dx = screen_info.srWindow.Left;	dy = screen_info.srWindow.Top;	setCursor(dx, dy, CURSOR_OFF);	last_cursor_mode = CURSOR_NORMAL;/*	COORD xy;	xy.X = dx;	xy.Y = dy;	SetConsoleCursorPosition(output, xy);	xy.X = dx+w-1;	xy.Y = dy+h-1;	SetConsoleCursorPosition(output, xy);	xy.X = dx;	xy.Y = dy;	SetConsoleCursorPosition(output, xy);        ScrollConsoleScreenBuffer(output, );*/	show();}Win32SystemDisplay::~Win32SystemDisplay(){	COORD xy;	printChar(w-1, h-1, VCP(VC_WHITE, VC_BLACK), ' ');	xy.X = dx;	xy.Y = dy+h-1;	SetConsoleCursorPosition(output, xy);	free(buf);	free(old_buf);	free(colorbuf);        cursorNormal();}bool Win32SystemDisplay::initConsole(){	CONSOLE_SCREEN_BUFFER_INFO csbiInfo;	SMALL_RECT windowRect;	output = GetStdHandle(STD_OUTPUT_HANDLE);	if (output == INVALID_HANDLE_VALUE) return false;/*	if (!SetConsoleActiveScreenBuffer(output)) return false;	if (!GetConsoleScreenBufferInfo(output, &csbiInfo)) return false;	windowRect.Left = 0;	windowRect.Top = 0;	windowRect.Right = csbiInfo.dwSize.X - 1;	windowRect.Bottom = csbiInfo.dwSize.Y - 1;	if (!SetConsoleWindowInfo(output, TRUE, &windowRect)) return false;*/	if (!SetConsoleMode(output, 0)) return false;	return true;}void Win32SystemDisplay::fill(int x, int y, int w, int h, vcp color, char chr, Codepage codepage){	uint rawchar = mapCharToSystemCP(chr, codepage);	for (int i=0; i < h; i++) {		if (y+i >= this->h) break;		if (y+i < 0) continue;		int dest = x + (y+i)*this->w;		for (int j=0; j < w; j++) {			if (x+j >= this->w) break;			if (x+j >= 0) putChar(dest, rawchar, color);			dest++;		}	}}int Win32SystemDisplay::nprint(int x, int y, vcp color, const char *str, int maxstrlen, Codepage codepage){	int n = 0;	int dest = x + y*w;	while (*str && n < maxstrlen && x+n < w) {		if (x+n >= 0) putChar(dest, mapCharToSystemCP(*str, codepage), color);		dest++;		str++;		n++;	}	return n;}bool Win32SystemDisplay::read(uint &rawchar, vcp &color, int x, int y) const{	rawchar = buf[x+y*w].Char.AsciiChar;	color = colorbuf[x+y*w];	return true;}void Win32SystemDisplay::setBounds(const Bounds &b){	SystemDisplay::setBounds(b);	free(buf);	free(old_buf);	free(colorbuf);	buf = ht_malloc(w * h * sizeof(CHAR_INFO));	old_buf = ht_malloc(w * h * sizeof(CHAR_INFO));	colorbuf = ht_malloc(w * h * sizeof(vcp));	memset(old_buf, 0, w * h * sizeof(CHAR_INFO));	fill(x, y, w, h, VCP(VC_WHITE, VC_BLACK), ' ');}void Win32SystemDisplay::copyFromDisplay(const Display &d, int x, int y, const Bounds &clipping){	for (int iy=0; iy < d.h; iy++) {		if (y+iy >= clipping.y+clipping.h) break;		if (y+iy < clipping.y) break;		int dest = x+(iy+y)*w;		for (int ix=0; ix < d.w; ix++) {			uint rawchar;			vcp color;			d.read(rawchar, color, ix, iy);			if ((x+ix < clipping.x+clipping.w) && (x+ix >= clipping.x))				putChar(dest, rawchar, color);			dest++;		}	}}void Win32SystemDisplay::getCursor(int &x, int &y) const{	x = cursorx;	y = cursory;}CursorMode Win32SystemDisplay::getCursorMode() const{	return cursor_mode;}void Win32SystemDisplay::putChar(int dest, uint rawchar, vcp vc){	if (dest >= w*h || dest < 0) return;	buf[dest].Char.UnicodeChar = rawchar ? rawchar : ' ';	colorbuf[dest] = mixColors(colorbuf[dest], vc);        buf[dest].Attributes = vcpToSystem(colorbuf[dest]);}void Win32SystemDisplay::setCursor(int x, int y, CursorMode mode){	cursorx = x;	cursory = y;	if (cursorx < 0) cursorx = 0;	if (cursory < 0) cursory = 0;	if (cursorx >= w) cursorx = w-1;	if (cursory >= h) cursory = h-1;	setCursorMode(mode);}void Win32SystemDisplay::setCursorMode(CursorMode mode){	cursor_mode = mode;}void Win32SystemDisplay::show(){	int first = h, last = 0;	for (int y = 0; y < h; y++) {		for (int x = 0; x < w; x++) {			if (buf[y*w+x].Char.UnicodeChar != old_buf[y*w+x].Char.UnicodeChar			 || buf[y*w+x].Attributes != old_buf[y*w+x].Attributes) {				if (first == h) {					first = y;				}				last = y;				break;			}		}	}		COORD xy, xy2;	if (cursor_mode != CURSOR_OFF) {		xy.X = cursorx + dx;		xy.Y = cursory + dy;	} else {		xy.X = dx;		xy.Y = dy;	}	SetConsoleCursorPosition(output, xy);		if (last_cursor_mode != cursor_mode) {		switch (cursor_mode) {		case CURSOR_OFF:			cursorHide(); break;		case CURSOR_NORMAL:			cursorNormal(); break;		case CURSOR_BOLD:			cursorBold(); break;		}		last_cursor_mode = cursor_mode;	}	if (first > last) return;	xy.X = 0;	xy.Y  = first;	xy2.X = w;	xy2.Y = h;	SMALL_RECT sr;	sr.Left = dx;	sr.Top = dy+first;	sr.Right = dx+w-1;	sr.Bottom = dy+last;	WriteConsoleOutputW(output, buf, xy2, xy, &sr);	memcpy(old_buf, buf, w * h * sizeof(CHAR_INFO));return;	for (int y = 0; y < h; y++) {		for (int x = 0; x < w; x++) {//			if (buf[y*w+x].Char.UnicodeChar != old_buf[y*w+x].Char.UnicodeChar//			 || buf[y*w+x].Attributes != old_buf[y*w+x].Attributes) {				xy.X = x;				xy.Y  = y;				xy2.X = w;				xy2.Y = h;				SMALL_RECT sr;				sr.Left = dx+x;				sr.Top = dy+y;				sr.Right = dx+x+1;				sr.Bottom = dy+y+1;				WriteConsoleOutputW(output, buf, xy2, xy, &sr);//			}		}	}	memcpy(old_buf, buf, w * h * sizeof(CHAR_INFO));}void Win32SystemDisplay::cursorHide(){	COORD xy;	xy.X = dx+w-1;	xy.Y = dy+h-1;	SetConsoleCursorPosition(output, xy);	CONSOLE_CURSOR_INFO ci;	ci.dwSize = 1;	ci.bVisible = false;	SetConsoleCursorInfo(output, &ci);}void Win32SystemDisplay::cursorBold(){	CONSOLE_CURSOR_INFO ci;	ci.dwSize = 99;	ci.bVisible = true;	SetConsoleCursorInfo(output, &ci);}void Win32SystemDisplay::cursorNormal(){	CONSOLE_CURSOR_INFO ci;	ci.dwSize = 13;	ci.bVisible = true;	SetConsoleCursorInfo(output, &ci);}uint Win32SystemDisplay::vcpToSystem(vcp vc){	byte fg, bg;	if (VC_GET_LIGHT(VCP_BACKGROUND(vc))) {		bg=VC_GET_BASECOLOR(VCP_BACKGROUND(vc))+8;	} else {		bg=VC_GET_BASECOLOR(VCP_BACKGROUND(vc));	}	if (VC_GET_LIGHT(VCP_FOREGROUND(vc))) {		fg=VC_GET_BASECOLOR(VCP_FOREGROUND(vc))+8;	} else {		fg=VC_GET_BASECOLOR(VCP_FOREGROUND(vc));	}	return (bg<<4|fg);}static int sysdisplay_count = 0;	SystemDisplay *allocSystemDisplay(const char *title){	if (sysdisplay_count) return NULL;	sysdisplay_count++;	return new Win32SystemDisplay(title);}void sys_display_enter(){}void sys_display_leave(){}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色偷偷久久人人79超碰人人澡| 欧美刺激脚交jootjob| 91精品国模一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲欧美日韩国产综合| 国产一区二区三区黄视频| 欧美午夜精品久久久久久超碰 | 一区二区三区在线观看动漫| 久久成人免费日本黄色| 精品成人一区二区| 亚洲v中文字幕| 91在线你懂得| 中文字幕乱码久久午夜不卡| 美女一区二区视频| 欧美人狂配大交3d怪物一区| 亚洲欧美aⅴ...| 99re热这里只有精品免费视频| 日韩视频在线你懂得| 亚洲一区二区高清| 精品视频在线免费| 亚洲精品成人少妇| 色丁香久综合在线久综合在线观看| 国产无一区二区| 国产大陆亚洲精品国产| 久久久久久**毛片大全| 久草中文综合在线| 日韩免费看网站| 免费成人在线观看视频| 日韩一区二区免费在线电影| 丝瓜av网站精品一区二区| 欧美视频一区二区三区| 欧洲一区二区三区免费视频| 久久精品国产亚洲一区二区三区| 国产精品毛片大码女人| 日韩美女一区二区三区| 一本色道久久综合狠狠躁的推荐| 美女久久久精品| 国产一区999| 91麻豆精品国产| 久久婷婷一区二区三区| 国产精品一品二品| 亚洲国产高清在线观看视频| 国产.欧美.日韩| 亚洲男人电影天堂| 欧美精品三级在线观看| 日本va欧美va瓶| 国产日韩亚洲欧美综合| www.欧美精品一二区| 亚洲综合免费观看高清完整版在线| 国产精品你懂的| 亚洲精品一区二区三区影院| 在线观看成人小视频| 性做久久久久久久免费看| 3d动漫精品啪啪| 国产成人aaa| 一卡二卡欧美日韩| 日韩一区二区免费电影| 成人一区二区三区中文字幕| 亚洲情趣在线观看| 91麻豆精品国产自产在线| 国产麻豆午夜三级精品| 亚洲色图19p| 欧美大片一区二区| 99久久久免费精品国产一区二区| 亚洲一区二区三区在线播放| 日韩欧美一二区| 91香蕉国产在线观看软件| 全国精品久久少妇| 国产精品久久久久国产精品日日| 欧美巨大另类极品videosbest | 亚洲欧美自拍偷拍色图| 欧美日韩日日骚| 粉嫩av一区二区三区粉嫩 | 国产精品久线观看视频| 欧美系列在线观看| 国产成人在线视频免费播放| 一区二区三区四区亚洲| 久久亚洲一级片| 欧美精品一二三区| 色综合天天综合网国产成人综合天 | 99久久国产免费看| 久久国产麻豆精品| 亚洲电影激情视频网站| 欧美国产97人人爽人人喊| 日韩一区二区不卡| 欧美三区在线观看| 波多野结衣中文一区| 久久99最新地址| 亚洲v中文字幕| 一区二区欧美视频| 国产精品久久网站| 久久夜色精品一区| 欧美一级免费大片| 欧美日韩在线一区二区| 91国偷自产一区二区三区成为亚洲经典| 激情综合五月婷婷| 蜜臀久久久久久久| 婷婷亚洲久悠悠色悠在线播放| 亚洲精品一区二区三区影院 | 欧美色综合影院| 成人性生交大片免费看视频在线 | 久久久91精品国产一区二区精品| 欧美性猛交xxxxxx富婆| 91丨porny丨国产入口| 国产精品自在欧美一区| 另类小说图片综合网| 丝袜a∨在线一区二区三区不卡| 亚洲综合在线第一页| 亚洲精品第一国产综合野| 国产精品嫩草久久久久| 国产精品福利一区二区三区| 国产日产欧美一区| 国产日韩精品一区二区浪潮av| 久久色.com| 91小视频免费看| av激情亚洲男人天堂| 国产网红主播福利一区二区| 久久综合九色综合欧美就去吻| 日韩美女一区二区三区| 精品久久久影院| 久久精品一区二区三区不卡| 精品国产百合女同互慰| 日韩欧美的一区二区| 精品国产一区二区三区久久久蜜月| 欧美电影免费观看高清完整版在线 | 国产精品国产馆在线真实露脸| 国产美女一区二区三区| 亚洲图片激情小说| 一级中文字幕一区二区| 日韩精品国产欧美| 国产在线一区二区| 国产 日韩 欧美大片| 91蝌蚪porny| 在线播放中文一区| 欧美xxxxxxxx| 中文字幕欧美三区| 亚洲高清免费观看高清完整版在线观看| 国产精品久久久久久久久久免费看| 免费在线观看一区| 精品一区二区三区视频在线观看| 亚洲综合激情网| 亚洲视频一区在线| 91美女片黄在线观看| 在线观看免费一区| 欧美日韩精品系列| 国产日韩视频一区二区三区| 一区二区在线看| 国产一区欧美一区| 欧美性色aⅴ视频一区日韩精品| 91精品国产综合久久福利| 亚洲婷婷在线视频| 久久亚洲精品国产精品紫薇| 久久久99久久| 亚洲国产欧美另类丝袜| 韩国一区二区在线观看| 91碰在线视频| 精品国产电影一区二区| 成人视屏免费看| 欧美日韩在线亚洲一区蜜芽| 欧美自拍丝袜亚洲| 成人动漫视频在线| 国产精品一卡二卡| 欧美日韩色综合| 国产拍欧美日韩视频二区| 亚洲最新在线观看| 国产成人8x视频一区二区| 欧美日韩亚洲综合| 国产日韩欧美综合一区| 日韩国产成人精品| 不卡的电视剧免费网站有什么| 日韩午夜激情视频| 亚洲午夜久久久久久久久电影院 | 一个色综合网站| 国产69精品一区二区亚洲孕妇| 9191久久久久久久久久久| 亚洲图片你懂的| 国产69精品久久久久777| 欧美电视剧在线看免费| 青青青伊人色综合久久| 成人免费毛片高清视频| 亚洲午夜精品17c| 国产伦精品一区二区三区在线观看 | 福利一区二区在线| 国产精品欧美一区喷水| 精品欧美一区二区久久| 国产专区综合网| 综合久久一区二区三区| 欧美色手机在线观看| 亚洲一区在线视频观看| 色噜噜狠狠成人中文综合| 国产午夜精品在线观看| 日韩在线a电影| 欧美日韩大陆一区二区| 一区二区三区国产精品| 一道本成人在线| 亚洲色图制服诱惑| 91视频一区二区| 国产精品久久久久四虎| 欧美夫妻性生活| 日韩一区二区免费在线观看|