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

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

?? link.c

?? 一個(gè)很有名的瀏覽器
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	assert(doc_view && doc_view->vs);	if_assert_failed return 0;	link = get_current_link(doc_view);	return (link && link_in_view(doc_view, link));}/* Look for the first and the last link currently visible in our * viewport. */static voidget_visible_links_range(struct document_view *doc_view, int *first, int *last){	struct document *document = doc_view->document;	int height = int_min(doc_view->vs->y + doc_view->box.height,	                     document->height);	int y;	*first = document->nlinks - 1;	*last = 0;	for (y = int_max(0, doc_view->vs->y); y < height; y++) {		if (document->lines1[y])			int_upper_bound(first, document->lines1[y]					       - document->links);		if (document->lines2[y])			int_lower_bound(last, document->lines2[y]					      - document->links);	}}intnext_link_in_view(struct document_view *doc_view, int current, int direction,	          int (*fn)(struct document_view *, struct link *),	          void (*cntr)(struct document_view *, struct link *)){	struct document *document;	struct view_state *vs;	int start, end;	assert(doc_view && doc_view->document && doc_view->vs && fn);	if_assert_failed return 0;	document = doc_view->document;	vs = doc_view->vs;	get_visible_links_range(doc_view, &start, &end);	current_link_blur(doc_view);	/* Go from the @current link in @direction until either	 * fn() is happy or we would leave the current viewport. */	while (current >= start && current <= end) {		if (fn(doc_view, &document->links[current])) {			vs->current_link = current;			if (cntr) cntr(doc_view, &document->links[current]);			current_link_hover(doc_view);			return 1;		}		current += direction;	}	vs->current_link = -1;	return 0;}/* Get the bounding columns of @link at line @y (or all lines if @y == -1). */static voidget_link_x_bounds(struct link *link, int y, int *min_x, int *max_x){	int point;	if (min_x) *min_x = INT_MAX;	if (max_x) *max_x = 0;	for (point = 0; point < link->npoints; point++) {		if (y >= 0 && link->points[point].y != y)			continue;		if (min_x) int_upper_bound(min_x, link->points[point].x);		if (max_x) int_lower_bound(max_x, link->points[point].x);	}}/* Check whether there is any point between @min_x and @max_x at the line @y * in link @link. */static intget_link_x_intersect(struct link *link, int y, int min_x, int max_x){	int point;	for (point = 0; point < link->npoints; point++) {		if (link->points[point].y != y)			continue;		if (link->points[point].x >= min_x		    && link->points[point].x <= max_x)			return link->points[point].x + 1;	}	return 0;}/* Check whether there is any point between @min_y and @max_y in the column @x * in link @link. */static intget_link_y_intersect(struct link *link, int x, int min_y, int max_y){	int point;	for (point = 0; point < link->npoints; point++) {		if (link->points[point].x != x)			continue;		if (link->points[point].y >= min_y		    && link->points[point].y <= max_y)			return link->points[point].y + 1;	}	return 0;}intnext_link_in_dir(struct document_view *doc_view, int dir_x, int dir_y){	struct document *document;	struct view_state *vs;	struct link *link;	int min_x = INT_MAX, max_x = 0;	int min_y, max_y;	assert(doc_view && doc_view->document && doc_view->vs);	if_assert_failed return 0;	assert(dir_x || dir_y);	if_assert_failed return 0;	document = doc_view->document;	vs = doc_view->vs;	link = get_current_link(doc_view);	if (!link) return 0;	/* Find the link's "bounding box" coordinates. */	get_link_x_bounds(link, -1, &min_x, &max_x);	min_y = link->points[0].y;	max_y = link->points[link->npoints - 1].y;	/* Now go from the bounding box edge in the appropriate	 * direction and find the nearest link. */	if (dir_y) {		/* Vertical movement */		/* The current line number */		int y = (dir_y > 0 ? max_y : min_y) + dir_y;		/* The bounding line numbers */		int top = int_max(0, doc_view->vs->y);		int bottom = int_min(doc_view->vs->y + doc_view->box.height,				     document->height);		for (; dir_y > 0 ? y < bottom : y >= top; y += dir_y) {			/* @backup points to the nearest link from the left			 * to the desired position. */			struct link *backup = NULL;			link = document->lines1[y];			if (!link) continue;			/* Go through all the links on line. */			for (; link <= document->lines2[y]; link++) {				int l_min_x, l_max_x;				/* Some links can be totally out of order here,				 * ie. in tables or when using tabindex. */				if (y < link->points[0].y				    || y > link->points[link->npoints - 1].y)					continue;				get_link_x_bounds(link, y, &l_min_x, &l_max_x);				if (l_min_x > max_x) {					/* This link is too at the right. */					if (!backup)						backup = link;					continue;				}				if (l_max_x < min_x) {					/* This link is too at the left. */					backup = link;					continue;				}				/* This link is aligned with the current one. */				goto chose_link;			}			if (backup) {				link = backup;				goto chose_link;			}		}		if (!y || y == document->height) {			/* We just stay at the same place, do not invalidate			 * the link number. */			return 0;		}	} else {		/* Horizontal movement */		/* The current column number */		int x = (dir_x > 0 ? max_x : min_x) + dir_x;		/* How many lines are already past their last link */		int last = 0;		while ((last < max_y - min_y + 1) && (x += dir_x) >= 0) {			int y;			last = 0;			/* Go through all the lines */			for (y = min_y; y <= max_y; y++) {				link = document->lines1[y];				if (!link) continue;				/* Go through all the links on line. */				while (link <= document->lines2[y]) {					if (get_link_y_intersect(link, x,					                         min_y,					                         max_y))						goto chose_link;					link++;				}				/* Check if we already aren't past the last				 * link on this line. */				if (!get_link_x_intersect(document->lines2[y],				                          y, x, INT_MAX))					last++;			}		}		/* We just stay  */		return 0;	}	current_link_blur(doc_view);	vs->current_link = -1;	return 0;chose_link:	/* The link is in bounds, take it. */	current_link_blur(doc_view);	vs->current_link = get_link_index(document, link);	set_pos_x(doc_view, link);	current_link_hover(doc_view);	return 1;}voidset_pos_x(struct document_view *doc_view, struct link *link){	int xm = 0;	int xl = INT_MAX;	int i;	assert(doc_view && link);	if_assert_failed return;	for (i = 0; i < link->npoints; i++) {		int y = link->points[i].y - doc_view->vs->y;		if (y >= 0 && y < doc_view->box.height) {			int_lower_bound(&xm, link->points[i].x + 1);			int_upper_bound(&xl, link->points[i].x);		}	}	if (xl != INT_MAX)		int_bounds(&doc_view->vs->x, xm - doc_view->box.width, xl);}voidset_pos_y(struct document_view *doc_view, struct link *link){	int ym = 0;	int height;	int i;	assert(doc_view && doc_view->document && doc_view->vs && link);	if_assert_failed return;	height = doc_view->document->height;	for (i = 0; i < link->npoints; i++) {		int_lower_bound(&ym, link->points[i].y + 1);		int_upper_bound(&height, link->points[i].y);	}	doc_view->vs->y = (ym + height - doc_view->box.height) / 2;	int_bounds(&doc_view->vs->y, 0,		   doc_view->document->height - doc_view->box.height);}/* direction == 1 -> DOWN * direction == -1 -> UP */static voidfind_link(struct document_view *doc_view, int direction, int page_mode){	struct link **line;	struct link *link = NULL;	int link_pos;	int y, ymin, ymax;	assert(doc_view && doc_view->document && doc_view->vs);	if_assert_failed return;	if (direction == -1) {		/* UP */		line = doc_view->document->lines2;		if (!line) goto nolink;		y = doc_view->vs->y + doc_view->box.height - 1;		int_upper_bound(&y, doc_view->document->height - 1);		if (y < 0) goto nolink;	} else {		/* DOWN */		line = doc_view->document->lines1;		if (!line) goto nolink;		y = doc_view->vs->y;		int_lower_bound(&y, 0);		if (y >= doc_view->document->height) goto nolink;	}	ymin = int_max(0, doc_view->vs->y);	ymax = int_min(doc_view->document->height,		       doc_view->vs->y + doc_view->box.height);	if (direction == -1) {		/* UP */		do {			struct link *cur = line[y--];			if (cur && (!link || cur > link))				link = cur;		} while (y >= ymin && y < ymax);	} else {		/* DOWN */		do {			struct link *cur = line[y++];			if (cur && (!link || cur < link))				link = cur;		} while (y >= ymin && y < ymax);	}	if (!link) goto nolink;	link_pos = link - doc_view->document->links;	if (page_mode) {		/* PAGE */		next_link_in_view(doc_view, link_pos, direction, link_in_view, NULL);		return;	}	current_link_blur(doc_view);	doc_view->vs->current_link = link_pos;	set_pos_x(doc_view, link);	current_link_hover(doc_view);	return;nolink:	current_link_blur(doc_view);	doc_view->vs->current_link = -1;}voidfind_link_up(struct document_view *doc_view){	find_link(doc_view, -1, 0);}voidfind_link_page_up(struct document_view *doc_view){	find_link(doc_view, -1, 1);}voidfind_link_down(struct document_view *doc_view){	find_link(doc_view, 1, 0);}voidfind_link_page_down(struct document_view *doc_view){	find_link(doc_view, 1, 1);}struct uri *get_link_uri(struct session *ses, struct document_view *doc_view,	     struct link *link){	assert(ses && doc_view && link);	if_assert_failed return NULL;	switch (link->type) {		case LINK_HYPERTEXT:		case LINK_MAP:			if (link->where) return get_uri(link->where, 0);			return get_uri(link->where_img, 0);		case LINK_BUTTON:		case LINK_FIELD:			return get_form_uri(ses, doc_view,					    get_link_form_control(link));		default:			return NULL;	}}struct link *goto_current_link(struct session *ses, struct document_view *doc_view, int do_reload){	struct link *link;	struct uri *uri;	assert(doc_view && ses);	if_assert_failed return NULL;	link = get_current_link(doc_view);	if (!link) return NULL;	if (link_is_form(link))		uri = get_form_uri(ses, doc_view, get_link_form_control(link));	else

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网站在线观看视频| ww亚洲ww在线观看国产| 99国产精品99久久久久久| 亚洲1区2区3区视频| 美女被吸乳得到大胸91| 石原莉奈在线亚洲二区| 国产精品三级av在线播放| 日韩欧美一区二区免费| 9191久久久久久久久久久| 91日韩精品一区| 成人手机电影网| 国产成人免费视频网站 | 亚洲国产精品av| 久久午夜羞羞影院免费观看| 7777女厕盗摄久久久| 制服丝袜一区二区三区| 777欧美精品| 久久综合久久久久88| 欧美mv日韩mv亚洲| 日本一区二区三区四区| 亚洲成人免费在线| 国产成人精品www牛牛影视| 欧美日高清视频| 亚洲精品视频在线看| 国产一区在线观看视频| 欧美亚洲高清一区二区三区不卡| 8x8x8国产精品| 香港成人在线视频| 国产福利精品一区| 精品三级在线看| 日韩电影免费一区| 欧美在线观看视频一区二区| 精品国产123| 免费观看在线综合色| 欧美色电影在线| 亚洲午夜免费视频| 欧美精品免费视频| 欧美激情一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 色欧美乱欧美15图片| 中文字幕一区二区三区av| 国产成人免费视频精品含羞草妖精 | 丰满少妇久久久久久久| 色偷偷88欧美精品久久久| 欧美mv日韩mv| 一级中文字幕一区二区| 国产精品一二一区| 3d动漫精品啪啪一区二区竹菊| 国产精品人妖ts系列视频| 日本免费在线视频不卡一不卡二| 国产高清成人在线| 久久久久久久久久久电影| 樱桃视频在线观看一区| 97成人超碰视| 国产精品系列在线| 国产精品一卡二| 久久久久国产精品麻豆ai换脸| 蜜桃视频在线观看一区| 欧美精品视频www在线观看| 麻豆精品视频在线观看视频| 亚洲主播在线观看| 成人精品亚洲人成在线| 欧美日韩不卡视频| 免费在线观看精品| 久久久不卡影院| 99久久精品国产观看| 亚洲成人自拍网| 国产亚洲一区二区三区四区| 国产成人高清视频| 免费高清在线视频一区·| 色综合久久久网| 日韩电影在线观看电影| 国产欧美日韩视频在线观看| 国产精品亚洲第一区在线暖暖韩国| 在线欧美小视频| 亚洲一级片在线观看| 91国内精品野花午夜精品| 亚洲视频在线一区二区| 色综合中文字幕| 亚洲一区二区三区中文字幕| 色婷婷激情久久| 亚洲国产精品一区二区久久| 色激情天天射综合网| 亚洲免费av高清| 欧美福利视频一区| 黄页网站大全一区二区| 国产亚洲污的网站| 色综合久久久久久久久久久| 一区二区激情小说| 欧美一区二区在线免费观看| 国产一区二区免费视频| 国产精品免费免费| 在线播放/欧美激情| 国产精品香蕉一区二区三区| 欧美高清在线一区二区| 91福利区一区二区三区| 麻豆国产欧美一区二区三区| 国产欧美一区二区精品仙草咪| 色偷偷久久人人79超碰人人澡| 免费成人在线观看| 亚洲另类在线视频| 国产清纯白嫩初高生在线观看91| 色综合咪咪久久| 国产一区二区三区久久久| 亚洲国产欧美在线人成| 欧美一区二区在线播放| 91视频观看免费| 国产成人精品一区二区三区网站观看| 中文字幕一区二区三区精华液| 欧美高清你懂得| 色综合天天综合在线视频| 国产成人精品亚洲777人妖| 日韩成人午夜电影| 亚洲国产欧美在线| 亚洲欧美日本韩国| 国产精品久久网站| 欧美激情一区二区三区蜜桃视频| 日韩视频一区二区在线观看| 在线欧美日韩精品| 精品视频一区 二区 三区| 99re成人精品视频| 91丨porny丨国产入口| 国产69精品久久99不卡| 国模大尺度一区二区三区| 免费在线成人网| 蜜臀av性久久久久蜜臀av麻豆| 亚洲大片在线观看| 亚洲大型综合色站| 天堂一区二区在线| 日韩av在线发布| 韩国精品在线观看| 国产精品1区2区| 成人av一区二区三区| 色综合一区二区三区| 在线观看91视频| 在线成人av影院| 精品剧情在线观看| 国产精品久久久久精k8 | 久久综合九色综合欧美98| 精品国产乱码久久久久久浪潮| 日韩精品一区二区三区四区视频| 日韩免费电影网站| 国产精品国产三级国产普通话99| 国产精品福利av| 青青青伊人色综合久久| 国产精品伊人色| 不卡的电视剧免费网站有什么| 国内外成人在线| 麻豆精品国产传媒mv男同 | 中文字幕成人av| 日本欧美一区二区三区乱码| 精品夜夜嗨av一区二区三区| av成人免费在线| 日韩精品一区二区在线观看| 国产精品久久福利| 麻豆一区二区三| 欧美三级电影网站| 国产人久久人人人人爽| 亚洲电影你懂得| 91在线免费播放| 国产欧美日韩久久| 久久爱另类一区二区小说| 色婷婷国产精品| 亚洲视频一区在线| 国产成人av一区二区三区在线| 欧美日韩国产三级| 一区二区日韩av| 欧美午夜免费电影| 亚洲欧美日本韩国| 色综合一区二区三区| 国产精品国产三级国产有无不卡| 国产一区二区看久久| 欧美大片在线观看| 人人爽香蕉精品| 欧美一级片在线观看| 日韩有码一区二区三区| 欧美日韩国产一区| 午夜一区二区三区在线观看| 欧洲国内综合视频| 亚洲国产成人av网| 欧美在线三级电影| 日韩精品电影一区亚洲| 欧美人与z0zoxxxx视频| 免费精品视频在线| 国产人成亚洲第一网站在线播放| 国产不卡在线一区| 日韩美女精品在线| 欧美伦理电影网| 久久99精品国产麻豆婷婷| 国产欧美精品区一区二区三区| 国产精品一二一区| 亚洲一区日韩精品中文字幕| 欧美日韩在线播放三区四区| 成人一区二区视频| 亚洲欧美综合另类在线卡通| 在线影院国内精品| 九一久久久久久| 有码一区二区三区| 久久先锋影音av| 欧美日韩中文字幕一区|