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

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

?? htobj.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 3 頁
字號:
/* *	HT Editor *	htobj.cc * *	Copyright (C) 1999-2002 Stefan Weyergraf * *	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 "atom.h"#include "cmds.h"#include "htapp.h"#include "htctrl.h"#include "htdebug.h"#include "keyb.h"#include "htmenu.h"#include "htobj.h"#include "htpal.h"#include "htreg.h"#include "strtools.h"#include "snprintf.h"#include "store.h"#include "tools.h"#include <stdarg.h>#include <stdlib.h>#include <string.h>#define ATOM_HT_VIEW		MAGIC32("OBJ\0")#define ATOM_HT_GROUP		MAGIC32("OBJ\1")#define ATOM_HT_XGROUP		MAGIC32("OBJ\2")#define ATOM_HT_WINDOW		MAGIC32("OBJ\3")#define ATOM_HT_FRAME		MAGIC32("OBJ\4")#define ATOM_HT_SCROLLBAR	MAGIC32("OBJ\5")#define DEFAULT_VIEW_MIN_WIDTH 	25#define DEFAULT_VIEW_MIN_HEIGHT	6static void bounds_and(Bounds *a, Bounds *b){	if (b->x > a->x) {		a->w -= b->x-a->x;		a->x = b->x;	}	if (b->y > a->y) {		a->h -= b->y-a->y;		a->y = b->y;	}	if (a->x + a->w > b->x+b->w) a->w -= a->x + a->w - b->x - b->w;	if (a->y + a->h > b->y+b->h) a->h -= a->y + a->h - b->y - b->h;	if (a->w < 0) a->w = 0;	if (a->h < 0) a->h = 0;}void clearmsg(htmsg *msg){	msg->msg = msg_empty;	msg->type = mt_empty;}/* *	CLASS ht_text */void ht_text::settext(const char *text){}/* *	CLASS ht_view */void ht_view::init(Bounds *b, int o, const char *d){	Object::init();	VIEW_DEBUG_NAME("ht_view");	desc = ht_strdup(d);	group = NULL;	focused = false;	browse_idx = 0;	view_is_dirty = true;	size = *b;	prev = NULL;	next = NULL;	setoptions(o);	buf = NULL;	enabled = true;	growmode = MK_GM(GMH_LEFT, GMV_TOP);	//	Bounds rel(0, 0, b->w, b->h);	if (options & VO_OWNBUFFER) {		buf = new BufferedRDisplay(size);	} else {		buf = new SystemRDisplay(screen, size);	}	g_hdist = 0;	g_vdist = 0;	setbounds(b);	pal.data = NULL;	pal.size = 0;	pal_class = defaultpaletteclass();	pal_name = defaultpalette();	reloadpalette();}void ht_view::done(){	free(desc);	free(pal.data);	delete buf;	Object::done();}int ht_view::aclone(){	return (group && group->isaclone(this));}#if 0int ht_view::buf_lprint(int aX, int aY, int c, int l, const char *text, Codepage cp){	if (y+aY >= vsize.y && y+aY < vsize.y+vsize.h) {		if (x+aX+l > vsize.x+vsize.w) l = vsize.x+vsize.w-size.x-aX;		if (x+aX-vsize.x < 0) {			int kqx = -x-aX+vsize.x;			for (int i=0; i < kqx; i++) {				if (!*text) return 0;				text++;				aX++;				l--;			}		}		return (l > 0) ? buf->b_lprint(x+aX, y+aY, c, l, text) : 0;	}	return 0;}int ht_view::buf_lprintw(int aX, int aY, int c, int l, const AbstractChar *text, Codepage cp){	if (size.y+aY >= vsize.y && size.y+aY < vsize.y+vsize.h)) {		if (x+aX+l > vsize.x+vsize.w) l=vsize.x+vsize.w-x-aX;		if (x+aX-vsize.x < 0) {			int kqx = -x-aX+vsize.x;			for (int i=0; i < kqx; i++) {				if (!*text) return 0;				text++;				x++;				l--;			}		}		return (l>0) ? buf->lprintw(size.x+x, size.y+y, c, l, text) : 0;	}	return 0;}int ht_view::buf_print(int x, int y, int c, const char *text, Codepage cp){	if ((size.y+y>=vsize.y) && (size.y+y<vsize.y+vsize.h)) {		int l=vsize.x+vsize.w-x-size.x;		if (size.x+x-vsize.x<0) {			int kqx=-size.x-x+vsize.x;			for (int i=0; i<kqx; i++) {				if (!*text) return 0;				text++;				x++;				l--;			}		}		return (l>0) ? buf->b_lprint(size.x+x, size.y+y, c, l, text) : 0;	}	return 0;}void ht_view::buf_printchar(int x, int y, int c, int ch, Codepage cp){	if (pointvisible(size.x+x, size.y+y)) buf->b_printchar(size.x+x, size.y+y, c, ch, cp);}int ht_view::buf_printf(int x, int y, int c, CodePage cp, const char *format, ...){	char buf[256];	/* secure */	va_list arg;	va_start(arg, format);	ht_vsnprintf(buf, sizeof buf, format, arg);	va_end(arg);	return buf_print(x, y, c, buf, cp);}int ht_view::buf_printw(int x, int y, int c, const AbstractChar *text, Codepage cp){	if ((size.y+y>=vsize.y) && (size.y+y<vsize.y+vsize.h)) {		int l=vsize.x+vsize.w-x-size.x;		if (size.x+x-vsize.x<0) {			int kqx=-size.x-x+vsize.x;			for (int i=0; i<kqx; i++) {				if (!*text) return 0;				text++;				x++;				l--;			}		}		return (l>0) ? buf->b_lprintw(size.x+x, size.y+y, c, l, text) : 0;	}	return 0;}#endifint ht_view::childcount() const{	return 1;}void ht_view::cleanview(){	view_is_dirty=0;}void ht_view::clear(int c){	buf->fill(0, 0, size.w, size.h, c, ' ');}void ht_view::clipbounds(Bounds *b){	Bounds c;	getbounds(&c);	bounds_and(b, &c);	bounds_and(b, &vsize);}void ht_view::config_changed(){	reloadpalette();	dirtyview();}int ht_view::countselectables(){	return (options & VO_SELECTABLE) ? 1 : 0;}int ht_view::datasize(){	return 0;}const char *ht_view::defaultpalette(){	return palkey_generic_window_default;}const char *ht_view::defaultpaletteclass(){	return palclasskey_generic;}void ht_view::dirtyview(){	view_is_dirty=1;}void ht_view::disable(){	enabled=0;}void ht_view::disable_buffering(){	if (options & VO_OWNBUFFER) {		delete buf;//		Bounds rel(0, 0, size.w, size.h);		buf = new SystemRDisplay(screen, size);		setoptions(options & ~VO_OWNBUFFER);	}}void ht_view::draw(){}void ht_view::enable(){	enabled=1;}void ht_view::enable_buffering(){	if (!(options & VO_OWNBUFFER)) {		delete buf;//		Bounds rel(0, 0, size.w, size.h);		buf = new BufferedRDisplay(size);		setoptions(options | VO_OWNBUFFER);	}}static bool view_line_exposed(ht_view *v, int y, int x1, int x2){	ht_group *g=v->group;	while (g) {		if (y >= g->size.y && y < g->size.y+g->size.h) {			if (x1 < g->size.x) x1 = g->size.x;			if (x2 > g->size.x + g->size.w) x2 = g->size.x+g->size.w;			ht_view *n = g->first;			while (n && n!=v) n=n->next;			if (n) {				n=n->next;				if (n)				while (n) {					if (!(n->options & VO_TRANSPARENT_CHARS)) {						if ((y>=n->size.y) && (y<n->size.y+n->size.h)) {							if (n->size.x<=x1) {								if (n->size.x+n->size.w>=x2) {									return 0;								} else if (n->size.x+n->size.w>x1) {									x1=n->size.x+n->size.w;								}							} else if (n->size.x<=x2) {								if (n->size.x+n->size.w<x2) {									if (!view_line_exposed(n, y, x1, n->size.x)) return 0;									x1=n->size.x+n->size.w;								} else {									x2=n->size.x;								}							}						}					}					n=n->next;				}			}		} else break;		v=g;		g=g->group;	}	return 1;}int ht_view::enum_start(){	return 0;}ht_view *ht_view::enum_next(int *handle){	return 0;}bool ht_view::exposed(){#if 1	for (int y=0; y < size.h; y++) {		if (view_line_exposed(this, size.y+y, size.x, size.x+size.w)) return 1;	}	return 0;#else	return 1;#endif}void ht_view::fill(int x, int y, int w, int h, int c, char chr, Codepage cp){	Bounds b(x+size.x, y+size.y, w, h);	bounds_and(&b, &vsize);	buf->fill(b.x-size.x, b.y-size.y, b.w, b.h, c, chr, cp);}bool ht_view::focus(ht_view *view){	if (view == this) {		if (!focused) receivefocus();		return true;	}	return false;}void ht_view::getbounds(Bounds *b){	*b = size;}vcp ht_view::getcolor(uint index){	return getcolorv(&pal, index);}void ht_view::getminbounds(int *width, int *height){	*width = DEFAULT_VIEW_MIN_WIDTH;	*height = DEFAULT_VIEW_MIN_HEIGHT;}struct databufdup_s {	MemMapFile *f;	ObjectStreamNative *s;};void ht_view::databuf_free(void *handle){	databufdup_s *s = (databufdup_s*)handle;		delete s->s;	delete s->f;	delete s;}void *ht_view::databuf_get(void *buf, int bufsize){	MemMapFile *f = new MemMapFile(buf, bufsize);		ObjectStreamNative *s = new ObjectStreamNative(f, false, true);		getdata(*s);	databufdup_s *q = new databufdup_s;	q->f = f;	q->s = s;	return q;}void ht_view::databuf_set(void *buf, int bufsize){	ConstMemMapFile f(buf, bufsize);	ObjectStreamNative s(&f, false, true);	setdata(s);	}void ht_view::getdata(ObjectStream &s){}ht_view *ht_view::getfirstchild(){	return 0;}uint ht_view::getnumber(){	return 0;}const char *ht_view::getpalette(){	return pal_name;}ht_view *ht_view::getselected(){	return this;}void ht_view::handlemsg(htmsg *msg){	switch (msg->msg) {	case msg_draw:		redraw();		return;	case msg_dirtyview:		dirtyview();		if ((msg->type & mt_broadcast) == 0) clearmsg(msg);		return;	case msg_config_changed:		config_changed();//		clearmsg(msg);		return;	}}void ht_view::hidecursor(){	buf->setCursorMode(CURSOR_OFF);	screen->setCursorMode(CURSOR_OFF);}int ht_view::isaclone(ht_view *view){	return (view==this) && (countselectables()==1);}int ht_view::isviewdirty(){	return view_is_dirty;}void ht_view::load(ObjectStream &s){/*     s->get_bool(enabled, NULL);	s->get_bool(focused, NULL);	s->get_int_dec(options, 4, NULL);	s->get_int_dec(browse_idx, 4, NULL);	s->get_string(desc, NULL);	get_bounds(s, &size);	get_bounds(s, &vsize);	s->get_string(pal_class, NULL);	s->get_string(pal_name, NULL);	s->get_int_dec(growmode, 4, NULL);*/}void ht_view::move(int rx, int ry){	size.x += rx;	size.y += ry;	buf->move(rx, ry);	vsize = size;	if (group) group->clipbounds(&vsize);	app->clipbounds(&vsize);}ObjectID ht_view::getObjectID() const{	return ATOM_HT_VIEW;}bool ht_view::pointvisible(int x, int y){	x += size.x;	y += size.y;	return (x >= vsize.x && y >= vsize.y && x < vsize.x+vsize.w && y < vsize.y+vsize.h);}void ht_view::receivefocus(){	dirtyview();	focused = true;}void ht_view::redraw(){	if (exposed()) {		if (options & VO_OWNBUFFER) {			if (isviewdirty()) {				draw();				cleanview();			}			screen->copyFromDisplay(*buf, size.x, size.y, vsize);		} else {			draw();			cleanview();		}	}}void ht_view::resize(int sx, int sy){	if (options & VO_RESIZE) {		int min_width, min_height;		getminbounds(&min_width, &min_height);		if (size.w+sx <= min_width) sx = min_width - size.w;		if (size.h+sy <= min_height) sy = min_height - size.h;		size.w += sx;		size.h += sy;		buf->resize(sx, sy);	}	vsize = size;	if (group) group->clipbounds(&vsize);	app->clipbounds(&vsize);}void ht_view::releasefocus(){	dirtyview();	hidecursor();	focused=0;}void ht_view::reloadpalette(){	if (pal.data) {		free(pal.data);		pal.data=0;	}	    	load_pal(pal_class, pal_name, &pal);}void ht_view::relocate_to(ht_view *view){	Bounds b;	view->getbounds(&b);	move(b.x, b.y);}int ht_view::select(ht_view *view){	return (view==this);}void ht_view::selectfirst(){}void ht_view::selectlast(){}void ht_view::sendmsg(htmsg *msg){	if (enabled) handlemsg(msg);}void ht_view::sendmsg(int msg, void *data1, void *data2){	htmsg m;	m.msg=msg;	m.type=mt_empty;	m.data1.ptr=data1;	m.data2.ptr=data2;	sendmsg(&m);}void ht_view::sendmsg(int msg, int data1, int data2){	htmsg m;	switch (msg) {	case msg_empty:		return;	case msg_draw:	case msg_dirtyview:		m.msg = msg;		m.type = mt_broadcast;		m.data1.integer = data1;		m.data2.integer = data2;		break;	default:		m.msg = msg;		m.type = mt_empty;		m.data1.integer = data1;		m.data2.integer = data2;		break;	}	sendmsg(&m);}void ht_view::setbounds(Bounds *b){	size = *b;	setvisualbounds(b);}void ht_view::setvisualbounds(Bounds *b){	vsize = *b;//	Bounds rel(0, 0, b->w, b->h);	buf->setBounds(*b);}void ht_view::setcursor(int x, int y, CursorMode c){	if (pointvisible(x, y)) {		buf->setCursor(x, y, c);		screen->setCursor(size.x+x, size.y+y, c);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日摸夜夜添夜夜添精品视频| 免费看日韩a级影片| 欧美精品乱人伦久久久久久| 国产成人在线观看免费网站| 一区二区三国产精华液| 久久女同性恋中文字幕| 欧美日韩国产免费一区二区| 日韩一区二区在线看片| 麻豆精品在线看| 久久精品av麻豆的观看方式| 成人午夜电影久久影院| 亚洲午夜视频在线观看| 欧美这里有精品| 中文字幕亚洲在| 日韩一区二区电影在线| 色偷偷久久人人79超碰人人澡| 精品一区二区三区在线视频| 亚洲成人在线免费| 亚洲美女一区二区三区| 日本一区二区三区四区在线视频| 欧美一区二区三区啪啪| 91成人网在线| 不卡欧美aaaaa| 国产精品一级片| 免费观看在线综合色| 一区2区3区在线看| 亚洲欧美日韩国产综合在线| 欧美国产一区二区在线观看| 精品成人私密视频| 欧美精品18+| 欧美精品一二三| 欧美三区免费完整视频在线观看| 一本到一区二区三区| 成人黄色777网| 成人动漫精品一区二区| 国产91对白在线观看九色| 国产一区二区三区综合| 国产一区二区三区在线观看精品| 美女一区二区三区| 裸体歌舞表演一区二区| 日韩主播视频在线| 亚洲h精品动漫在线观看| 亚洲综合一区二区三区| 亚洲最新在线观看| 亚洲亚洲精品在线观看| 亚洲午夜视频在线观看| 日韩av在线免费观看不卡| 奇米在线7777在线精品 | 中文字幕av一区二区三区| 26uuu精品一区二区| 久久午夜国产精品| 国产亚洲欧美日韩俺去了| 久久久久久毛片| 欧美国产精品一区二区| 国产精品美女久久久久高潮| 亚洲人午夜精品天堂一二香蕉| 亚洲欧美日韩在线| 亚洲综合久久久久| 五月天婷婷综合| 久久er精品视频| 国产成人免费在线观看| 91免费版在线看| 欧美日韩综合在线免费观看| 欧美一区二区精美| 欧美精品一区二区三区蜜桃视频 | 粉嫩aⅴ一区二区三区四区| 成人av在线影院| 在线日韩国产精品| 日韩一区二区三区电影在线观看| 国产色产综合色产在线视频| 国产精品久久777777| 亚洲电影你懂得| 精品一区二区三区免费毛片爱| 成人高清视频在线| 欧美性大战xxxxx久久久| 91精品免费观看| 国产拍欧美日韩视频二区| 一区二区三区在线免费观看| 免费观看在线综合色| 国产超碰在线一区| 欧美综合色免费| 欧美精品一区二区久久久| 中文字幕一区二区三区在线不卡| 午夜亚洲福利老司机| 国产精品一区二区久久不卡| 欧洲一区二区三区在线| 日韩欧美成人午夜| 亚洲欧洲精品一区二区三区 | 国产一区二区三区香蕉| youjizz国产精品| 在线不卡欧美精品一区二区三区| 国产色产综合色产在线视频| 亚洲成人激情综合网| 高清日韩电视剧大全免费| 欧美肥妇毛茸茸| 国产精品三级av在线播放| 丝袜美腿亚洲色图| 成人久久视频在线观看| 欧美福利视频导航| 中文字幕在线观看一区| 久久国产精品露脸对白| 91精彩视频在线| 国产三级欧美三级日产三级99 | 欧美美女网站色| 国产精品久久久一本精品 | 一区二区三区四区av| 精品亚洲成a人| 欧美日韩国产精品自在自线| 中文字幕+乱码+中文字幕一区| 秋霞电影网一区二区| www.日韩精品| 欧美精品一区二区三区蜜臀| 午夜精品免费在线| 色婷婷一区二区三区四区| 久久青草国产手机看片福利盒子| 日韩成人伦理电影在线观看| 91国在线观看| 成人欧美一区二区三区白人| 国产乱对白刺激视频不卡| 欧美一级免费大片| 亚瑟在线精品视频| 欧洲视频一区二区| 亚洲欧美激情视频在线观看一区二区三区 | 国产欧美精品一区二区色综合| 日韩在线一二三区| 欧美视频中文字幕| 亚洲国产综合在线| 色婷婷久久99综合精品jk白丝| 国产精品热久久久久夜色精品三区| 激情综合网天天干| 日韩免费高清av| 人人爽香蕉精品| 欧美一级日韩一级| 日产国产欧美视频一区精品| 欧美日韩一区二区三区高清| 亚洲一区二区不卡免费| 色综合久久综合网欧美综合网| 亚洲欧洲国产专区| av高清久久久| 亚洲精品视频免费观看| 色综合久久99| 亚洲国产精品一区二区久久恐怖片 | 欧美成人精品福利| 蜜臀久久99精品久久久久宅男| 制服.丝袜.亚洲.中文.综合| 婷婷丁香激情综合| 日韩一区二区在线看片| 精品在线你懂的| 精品乱人伦小说| 成人在线综合网| 亚洲免费观看高清在线观看| 日本精品免费观看高清观看| 亚洲国产精品久久久久婷婷884 | 亚洲蜜桃精久久久久久久| 欧美优质美女网站| 日韩一区精品字幕| 精品成人佐山爱一区二区| 国产馆精品极品| 最近中文字幕一区二区三区| 欧美在线视频日韩| 免费看日韩精品| 中文字幕二三区不卡| 91一区二区在线观看| 亚洲成av人片| 精品福利一二区| 97se亚洲国产综合自在线观| 亚洲v日本v欧美v久久精品| 欧美大片免费久久精品三p| 国产成人免费视频| 综合自拍亚洲综合图不卡区| 欧美日韩免费观看一区二区三区| 免费看欧美美女黄的网站| 国产精品天天摸av网| 日本韩国视频一区二区| 麻豆成人综合网| 国产精品欧美一区喷水| 欧美三级视频在线播放| 久久精品99国产精品| 亚洲男同性恋视频| 日韩欧美另类在线| 91在线视频免费观看| 日韩精品福利网| 国产精品久久毛片a| 91精品国产综合久久久久久久 | 日韩精品1区2区3区| 国产精品网站在线观看| 欧美一区二区三区爱爱| 成人午夜电影网站| 日韩和的一区二区| 国产精品九色蝌蚪自拍| 日韩三级视频中文字幕| 91一区二区在线观看| 激情成人午夜视频| 亚洲一区精品在线| 国产欧美日韩在线| 欧美一区中文字幕| 91玉足脚交白嫩脚丫在线播放| 免费在线一区观看| 亚洲一区二区美女| 中文字幕av在线一区二区三区|