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

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

?? httree.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
字號:
/*  *	HT Editor *	httree.cc * *	Copyright (C) 1999-2002 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 <stdlib.h>#include "string.h"#include "htdialog.h"#include "htpal.h"#include "keyb.h"#include "strtools.h"#include "httree.h"#include "stream.h"void ht_treeview::init(Bounds *b, const char *d){	ht_view::init(b, VO_SELECTABLE | VO_BROWSABLE/* <- FIXME */ | VO_RESIZE, d);	VIEW_DEBUG_NAME("ht_treeview");	growmode = MK_GM(GMH_FIT, GMV_FIT);	foc = 0;	delta_x = delta_y = 0;	maxsize_y = 5;	selected = NULL;}void ht_treeview::done(){	ht_view::done();}void ht_treeview::adjust_focus(int Focus){	if (Focus < 0) Focus = 0; else if (Focus >= maxsize_y) Focus = maxsize_y - 1;	if (foc != Focus) has_focused(Focus);	if (Focus < delta_y) scroll_to(delta_x, Focus);		else if ((Focus - size.h) >= delta_y) scroll_to(delta_x, Focus - size.h + 1);}int  ht_treeview::create_graph(AbstractChar *s, void *node, int level, int lines, int width, int endwidth, const AbstractChar *Chars){// Chars: space, vbar, T, last L,hbar,+,-,[,]	for (int i=0; i < level; i++) {		s[i*width] = (lines&(1<<i)) ? Chars[1] : Chars[0];		for (int j=1; j<(width); j++) s[i*width+j] = Chars[0];	}	int p = level*width;	s[p] = (get_next_node(node)) ? Chars[2]: Chars[3];	if (has_children(node)) {		s[p+1] = Chars[7];		s[p+2] = (is_expanded(node)) ? Chars[6]: Chars[5];		s[p+3] = Chars[8];	} else {		s[p+1] = Chars[4];		s[p+2] = Chars[4];		s[p+3] = Chars[4];	}	s[p+4].codepage = CP_DEVICE;	s[p+4].chr = ' ';	p += 5;	char *text=get_text(node);	while (*text) {		s[p].codepage = CP_DEVICE;		s[p++].chr = *(text++);	}	s[p].codepage = CP_INVALID;	return p;}int	ht_treeview::count_children(void *node){	int i = 0;	if (!is_expanded(node)) return 0;	void *p = get_child(node, 1);	while (p) {		i+=count_children(p);		p = get_next_node(p);		i++;	}	return i;}void ht_treeview::collapse_all(void *node){	if (has_children(node)) {		adjust(node, false);		void *tmp = get_child(node, 1);		while (tmp) {			collapse_all(tmp);			tmp = get_next_node(tmp);		}	}}void ht_treeview::draw_r(void *node, int level, int *pos, uint32 lines){	vcp normal_color, sel_color, foc_color, color;	normal_color = getcolor(palidx_generic_list_unfocused_unselected);	foc_color = getcolor(palidx_generic_list_focused_selected);	sel_color = getcolor(palidx_generic_list_unfocused_selected);	AbstractChar s[1024];	while (node) {		if (*pos >= delta_y) {			if (*pos >= (delta_y+size.h)) break;			if (is_selected(*pos)) {				selected = node; // only for getdata()				if (focused) color=foc_color; else color=sel_color;				fill(0, *pos-delta_y, size.w, 1, color, ' ');			} else color = normal_color;			if (get_graph(s, node, level, lines) > delta_x)				buf->nprintW(0, *pos-delta_y, color, &s[delta_x], size.w);		}		(*pos)++;		if (has_children(node) && is_expanded(node)) {			draw_r(get_child(node, 1), level+1, pos, (get_next_node(node)) ? lines|(1<<level) : lines);		}		node = get_next_node(node);	}}void ht_treeview::draw(){	clear(getcolor(palidx_generic_list_unfocused_unselected));	int p = 0;	draw_r(get_root(), 0, &p, 0);}void ht_treeview::expand_all(void *node){	if (has_children(node)) {		adjust(node, true);		void *tmp = get_child(node, 1);		while (tmp) {			expand_all(tmp);			tmp = get_next_node(tmp);		}	}}/* *	stub */void ht_treeview::getdata(ObjectStream &s){	PUT_INT32D(s, (long)selected);}/* *	void *ht_treeview::get_child(void *node, int i) *	get i. child of node */int  ht_treeview::get_graph(AbstractChar *s, void *node, int level, int lines){	static const AbstractChar graph[10] = {		{CP_DEVICE, ' '},		{CP_GRAPHICAL, GC_1VLINE},		{CP_GRAPHICAL, GC_1RTEE},		{CP_GRAPHICAL, GC_1CORNER2},		{CP_GRAPHICAL, GC_1HLINE},		{CP_DEVICE, '+'},		{CP_DEVICE, '-'},		{CP_DEVICE, '['},		{CP_DEVICE, ']'},	};	return create_graph(s, node, level, lines, 5, 5, graph);}void *ht_treeview::get_node_r(void *node, int *i){	while ((node) && (--(*i))) {		if (has_children(node) && is_expanded(node)) {			void *tmp = get_node_r(get_child(node, 1), i);			if (!(*i)) return tmp;		}		node = get_next_node(node);	}	return node;}/* *   get i. node *	i==1 => 1. node */void *ht_treeview::get_node(int i){	if (i <= 0) return 0;	void *Node = get_root();	return get_node_r(Node, &i);}void	ht_treeview::handlemsg(htmsg *msg){	ht_view::handlemsg(msg);	if (msg->msg==msg_keypressed) {		int Foc = foc;		switch (msg->data1.integer) {		case K_Up:			Foc--;			break;		case K_Down:			Foc++;			break;		case K_Control_Right:			if (delta_x < maxsize_x-1) delta_x++;			break;		case K_Control_Left:			if (delta_x > 0) delta_x--;			break;		case K_PageUp:			Foc -= size.h-1;			break;		case K_PageDown:			Foc += size.h-1;			break;		case K_Control_PageUp:			Foc = 0;			break;		case K_Control_PageDown:			Foc = maxsize_y - 1;			break;		case '+':		case K_Right: {			void *p = get_node(Foc+1);			if (has_children(p)) adjust(p, true);			break;		}		case '-':			adjust(get_node(Foc+1), false);			break;		case K_Left: {			void *n = get_node(Foc+1);			if (is_expanded(n)) {				adjust(n, false);			} else {				if (Foc) {					do {						Foc-=count_children(n)+1;						n = get_prev_node(n);					} while (n);					adjust(get_node(Foc+1), false);				}			}			break;		}		case '*':			expand_all(get_node(Foc+1));			break;		case '/':			collapse_all(get_node(Foc+1));			break;		case K_Return: {			void *n = get_node(Foc+1);			if (has_children(n)) {				adjust(n, !is_expanded(n));			} else {				select_node(n);			}			break;		}		default:			return;		}		update();		adjust_focus(Foc);		dirtyview();		clearmsg(msg);	}}void	ht_treeview::has_focused(int i){	foc = i;}/* *	can be overwritten to handle mutiple selections */bool	ht_treeview::is_selected(int i){	return (foc == i);}void	ht_treeview::scroll_to(int x, int y){	delta_x = x;	delta_y = y;}/* *	stub */void ht_treeview::setdata(ObjectStream &s){}/* *	called whenever a node is being selected *	can be overwritten */void	ht_treeview::select_node(void *node){}void	ht_treeview::set_limit(int x, int y){	maxsize_x = x;	maxsize_y = y;}void	ht_treeview::update_r(void *node, int level, int *pos, int *x){	AbstractChar s[2048];	while (node) {		int l = get_graph(s, node, level, 0);		if (l > *x) *x = l;		(*pos)++;		if (has_children(node) && is_expanded(node)) {			update_r(get_child(node, 1), level+1, pos, x);		}		node = get_next_node(node);	}}/* *   must be called whenever the data of the tree has changed */void	ht_treeview::update(){	int count = 0, maxx = 0;	update_r(get_root(), 0, &count, &maxx);	set_limit(maxx, count);	adjust_focus(foc);}/****************************************************************************/void ht_static_treeview::init(Bounds *b, const char *desc){	ht_treeview::init(b, desc);	VIEW_DEBUG_NAME("ht_static_treeview");	root=0;}void ht_static_treeviewdone_r(static_node *node){	while (node) {		ht_static_treeviewdone_r(node->child);		free(node->text);		if (node->data) {			node->data->done();			delete node->data;		}		static_node *temp = node->next;		free(node);		node = temp;	}}void ht_static_treeview::done(){	ht_static_treeviewdone_r(root);	ht_treeview::done();}void *ht_static_treeview::add_child(void *node, const char *text, Object *Data){	if (node) {		return add_node(&((static_node *)node)->child, text, Data);	} else {		if (root) {			return add_node(&root, text, Data);		} else {			root=create_node(text, NULL, Data);			return root;		}	}}void	*ht_static_treeview::add_node(static_node **node, const char *text, Object *Data){	static_node **p = node;	static_node *prev = NULL;	if (*p) {		while (*p) {			prev = *p;			p = &(*p)->next;		}	}	*p=create_node(text, prev, Data);	return *p;}void	ht_static_treeview::adjust(void *node, bool expand){	((static_node *)node)->expanded = expand;}static_node *ht_static_treeview::create_node(const char *text, static_node *prev, Object *Data){	static_node *node = ht_malloc(sizeof(static_node));	node->text = ht_strdup(text);	node->next = NULL;	node->prev = prev;	node->child = NULL;	node->expanded = false;	node->data = Data;	return node;}void *ht_static_treeview::get_child(void *node, int i){	static_node *p;	if (node) {		p = ((static_node *)node)->child;	} else {		p = root;	}	while (p && (--i)) p = p->next;	return p;}void	*ht_static_treeview::get_next_node(void *node){	return ((static_node *)node)->next;}void	*ht_static_treeview::get_prev_node(void *node){	return ((static_node *)node)->prev;}void	*ht_static_treeview::get_root(){	return root;}char	*ht_static_treeview::get_text(void *node){	return ((static_node *)node)->text;}void	*ht_static_treeview::get_cursor_node(){// FIXME: said to be the wrong thing, works however	return selected;}void	ht_static_treeview::goto_node(void *node){}bool	ht_static_treeview::has_children(void *node){	return (((static_node *)node)->child);}bool	ht_static_treeview::is_expanded(void *node){	return (((static_node *)node)->expanded);}void	ht_static_treeview::select_node(void *node){}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合久久久久久| 国产美女av一区二区三区| 奇米影视一区二区三区小说| 国产一区在线不卡| 欧美性极品少妇| 国产精品欧美精品| 久久国产精品无码网站| 欧美影视一区二区三区| 中文字幕一区日韩精品欧美| 极品少妇一区二区| 在线播放91灌醉迷j高跟美女| 国产欧美一区二区精品性色超碰| 日韩精彩视频在线观看| 91丨porny丨户外露出| 国产日韩欧美不卡| 寂寞少妇一区二区三区| 欧美一区二区网站| 日韩专区中文字幕一区二区| 欧洲av在线精品| 亚洲精品国产无天堂网2021 | av不卡免费电影| xfplay精品久久| 人人爽香蕉精品| 欧美色偷偷大香| 亚洲一区影音先锋| 在线亚洲一区二区| 亚洲激情六月丁香| 一本久久a久久免费精品不卡| 中文字幕一区二区三区四区不卡| 成人一级黄色片| 国产欧美中文在线| 成人av资源在线| 亚洲国产高清不卡| 成人av免费在线观看| 国产精品网站在线观看| 国产69精品久久久久777| 国产欧美精品一区二区色综合朱莉 | 亚洲国产一区在线观看| 在线视频欧美区| 天堂在线一区二区| 日韩无一区二区| 激情六月婷婷综合| 久久精品夜色噜噜亚洲aⅴ| 国产jizzjizz一区二区| 亚洲色图制服诱惑| 在线免费不卡电影| 亚洲电影你懂得| 欧美一区二区三区四区视频| 精品一区二区在线视频| 久久品道一品道久久精品| 成人教育av在线| 亚洲一区二区在线视频| 日韩欧美色综合| 大胆欧美人体老妇| 亚洲国产精品久久艾草纯爱| 91精品免费在线| 国产+成+人+亚洲欧洲自线| 亚洲人成伊人成综合网小说| 欧美电影一区二区| 国产不卡在线播放| 亚洲成a人片在线观看中文| 精品国产一区二区三区不卡 | 韩国精品免费视频| 国产精品视频一二| 精品视频999| 国产九色sp调教91| 亚洲自拍偷拍九九九| 欧美一区二区在线视频| 成熟亚洲日本毛茸茸凸凹| 亚洲成人动漫av| 久久免费视频色| 欧美唯美清纯偷拍| 国产一区二区美女诱惑| 一区二区三区视频在线观看| 精品捆绑美女sm三区| 色综合天天天天做夜夜夜夜做| 日韩激情中文字幕| 亚洲精品老司机| 国产日韩视频一区二区三区| 欧美久久久久中文字幕| 成人av在线网站| 精品在线亚洲视频| 天天色综合天天| 亚洲欧洲成人精品av97| 欧美精品一区视频| 欧美色男人天堂| 91在线精品一区二区| 国产精品自拍网站| 看电影不卡的网站| 午夜在线成人av| 亚洲免费观看高清完整| 国产三级欧美三级| 精品欧美一区二区久久| 欧美性淫爽ww久久久久无| caoporn国产精品| 国产成人精品1024| 久久国产尿小便嘘嘘| 日韩**一区毛片| 亚洲风情在线资源站| 怡红院av一区二区三区| 国产精品高潮呻吟久久| 国产区在线观看成人精品| 精品久久国产字幕高潮| 51久久夜色精品国产麻豆| 欧亚一区二区三区| 欧美性猛交xxxxxxxx| 91久久精品国产91性色tv| 99久久综合狠狠综合久久| 国产精品99久久久久久久女警| 美女久久久精品| 蜜桃视频免费观看一区| 久久69国产一区二区蜜臀 | 亚洲自拍欧美精品| 亚洲精品久久久蜜桃| 亚洲伦理在线精品| 亚洲免费av高清| 亚洲愉拍自拍另类高清精品| 一区二区三区四区av| 亚洲第一精品在线| 天天综合天天综合色| 男女激情视频一区| 狂野欧美性猛交blacked| 国产在线精品国自产拍免费| 国产伦精品一区二区三区免费 | 91精品一区二区三区在线观看| 欧美视频在线观看一区| 4438x成人网最大色成网站| 欧美一区二区三区不卡| 制服丝袜中文字幕亚洲| 欧美本精品男人aⅴ天堂| 久久久综合视频| 国产精品乱人伦中文| 一区二区三区在线免费播放| 亚洲成a人v欧美综合天堂下载| 日韩精品久久理论片| 91免费在线播放| 在线观看日韩国产| 日韩欧美国产综合一区| 国产拍揄自揄精品视频麻豆| 亚洲免费电影在线| 麻豆国产精品官网| 波多野结衣中文字幕一区 | 99国产欧美另类久久久精品 | 久久美女高清视频| 国产精品久久精品日日| 夜夜嗨av一区二区三区四季av| 日本vs亚洲vs韩国一区三区二区| 国产乱码精品一区二区三区五月婷 | 日本在线不卡视频一二三区| 麻豆国产精品777777在线| 成人av网站免费观看| 欧美日本一区二区三区四区| 久久香蕉国产线看观看99| 亚洲欧美日韩国产综合在线| 日韩av成人高清| 91亚洲永久精品| 日韩精品最新网址| 一区二区三区在线观看欧美 | 99久久婷婷国产综合精品电影 | 中日韩av电影| 青青草97国产精品免费观看| 成人亚洲一区二区一| 91精品国产色综合久久不卡电影| 中文字幕精品—区二区四季| 日日夜夜一区二区| 91在线小视频| 久久精品在线观看| 日本成人超碰在线观看| 在线视频国内一区二区| 欧美高清在线一区二区| 精品一区二区三区欧美| 欧美少妇性性性| 中文字幕在线不卡视频| 国产一区二区网址| 51精品久久久久久久蜜臀| 一区二区三区日韩欧美| 丁香五精品蜜臀久久久久99网站| 国产欧美一区二区三区在线老狼 | 一区二区三区鲁丝不卡| 国产福利精品一区| 2017欧美狠狠色| 美女视频网站久久| 51久久夜色精品国产麻豆| 亚洲激情自拍偷拍| 91香蕉视频mp4| 国产精品久久久久久久久免费丝袜| 国产一区二区在线看| 欧美一级爆毛片| 日韩—二三区免费观看av| 欧美亚洲国产一区在线观看网站| 亚洲欧洲三级电影| 99久久er热在这里只有精品15| 久久综合狠狠综合| 久久91精品久久久久久秒播| 日韩一区二区免费在线电影| 日本一区中文字幕| 日韩一级欧美一级| 麻豆91在线观看| www亚洲一区| 国产精品18久久久|