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

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

?? tool_display.c

?? 操作系統(tǒng)SunOS 4.1.3版本的源碼
?? C
字號:
#ifndef lint#ifdef sccsstatic	char sccsid[] = "@(#)tool_display.c 1.1 92/07/30 Copyr 1984 Sun Micro";#endif#endif/* * Copyright (c) 1983 by Sun Microsystems, Inc. *//* * Handle tool displaying and size changes. */#include <sys/types.h>#include <sys/time.h>#include <signal.h>#include <strings.h>#include <pixrect/pixrect.h>#include <pixrect/pixfont.h>#include <pixrect/pr_util.h>#include <pixrect/memvar.h>#include <sunwindow/notify.h>#include <sunwindow/rect.h>#include <sunwindow/rectlist.h>#include <sunwindow/pixwin.h>#include <sunwindow/win_struct.h>#include <sunwindow/win_input.h>#include <sunwindow/cms.h>#include <sunwindow/cms_mono.h> #include <sunwindow/win_screen.h>#include <sunwindow/win_ioctl.h>#include <suntool/icon.h>#include <suntool/tool.h>#include <suntool/tool_impl.h>#include <suntool/wmgr.h>#include <suntool/tool_commons.h>extern	struct pixfont *pf_sys;static void flushline();tool_handlesigwinchstd(tool)	register struct	tool *tool;{	struct	rect rect;	int	flags;	tool->tl_flags &= ~TOOL_SIGWINCHPENDING;	flags = win_getuserflags(tool->tl_windowfd);	(void)win_getsize(tool->tl_windowfd, &rect);	if ((flags&WMGR_ICONIC) && (~tool->tl_flags&TOOL_ICONIC)) {		/*		 * Tool has just gone iconic, so, add y offset to sws		 * to move them out of the picture.		 */		(void)_tool_addyoffsettosws(tool, 2048);		tool->tl_flags |= TOOL_ICONIC;		tool->tl_rectcache = rect;	} else if ((~flags&WMGR_ICONIC) && (tool->tl_flags&TOOL_ICONIC)) {		/*		 * Tool has just gone from iconic to normal, so, subtract		 * y offset from sws to move them into the picture again.		 */		tool->tl_flags &= ~TOOL_ICONIC;		(void)_tool_addyoffsettosws(tool, -2048);		tool->tl_rectcache = rect;	} if (!rect_equal(&tool->tl_rectcache, &rect)) {		/*		 * Size changed so adjust subwindows		 */		tool->tl_rectcache = rect;		(void)tool_layoutsubwindows(tool);	}	/*	 * Refresh tool now	 */	(void)pw_damaged(tool->tl_pixwin);#ifdef solidborder	(void)_tool_display(tool, FALSE);#endif	(void)pw_donedamaged(tool->tl_pixwin);#ifndef solidborder	(void)_tool_display(tool, FALSE);#endif	/*	 * Refresh subwindows now	 */	(void)_tool_subwindowshandlesigwinch(tool);	return;}tool_display(tool)	struct	tool *tool;{	tool->tl_flags &= ~TOOL_REPAINT_LOCK;	(void)_tool_display(tool, TRUE);	return;}tool_displayicon(tool)	register struct	tool *tool;{	if (tool->tl_flags&TOOL_ICONIC) {		tool->tl_flags &= ~TOOL_REPAINT_LOCK;		if (tool->tl_icon)			icon_display(tool->tl_icon, tool->tl_pixwin, 0, 0);		else			(void)_tool_displaydefaulticon(tool);	}}tool_displaynamestripe(tool)	register struct	tool *tool;{	if (tool->tl_flags&TOOL_ICONIC) {		/* Tag on icon may have changed */		(void)tool_displayicon(tool);		return;	}	if (tool->tl_flags&TOOL_NAMESTRIPE) {		tool->tl_flags &= ~TOOL_REPAINT_LOCK;		(void)pw_writebackground(tool->tl_pixwin, 0, 0,		    tool->tl_rectcache.r_width,		    tool_headerheight(tool->tl_flags&TOOL_NAMESTRIPE),		    PIX_SET);		if (tool->tl_name) {		    (void)pw_text(tool->tl_pixwin,			    TOOL_BORDERWIDTH-				pf_sys->pf_char[*(tool->tl_name)].pc_home.x+1,			    0-pf_sys->pf_char[*(tool->tl_name)].pc_home.y+1,			    PIX_NOT(PIX_SRC), pf_sys, tool->tl_name);		    if (tool->tl_flags&TOOL_EMBOLDEN_LABEL)			(void)pw_text(tool->tl_pixwin,				TOOL_BORDERWIDTH-				 pf_sys->pf_char[*(tool->tl_name)].pc_home.x+2,				0-pf_sys->pf_char[*(tool->tl_name)].pc_home.y+1,				PIX_NOT(PIX_SRC)&PIX_DST,				pf_sys, tool->tl_name);		}	}}tool_displaytoolonly(tool)	register struct	tool *tool;{	if (tool->tl_flags&TOOL_ICONIC) {		(void)tool_displayicon(tool);		return;	}	tool->tl_flags &= ~TOOL_REPAINT_LOCK;	(void)pw_lock(tool->tl_pixwin, &tool->tl_rectcache);	(void)_tool_displayborders(tool);	(void)tool_displaynamestripe(tool);	(void)pw_unlock(tool->tl_pixwin);	return;}/* * Utilities */_tool_addyoffsettosws(tool, yoffset)	struct	tool *tool;	short	yoffset;{	register struct	toolsw *sw;	struct	rect swrect;	(void)win_lockdata(tool->tl_windowfd);	for (sw = tool->tl_sw;sw;sw = sw->ts_next) {		(void)win_getrect(sw->ts_windowfd, &swrect);		swrect.r_top += yoffset;		(void)win_setrect(sw->ts_windowfd, &swrect);	}	(void)win_unlockdata(tool->tl_windowfd);	return;}_tool_display(tool, swstoo)	register struct	tool *tool;	bool	swstoo;{	if (tool->tl_flags&TOOL_ICONIC)		(void)tool_displayicon(tool);	else {		if (swstoo==TRUE)			(void)_tool_subwindowshandlesigwinch(tool);		(void)tool_displaytoolonly(tool);	}	return;}_tool_displayborders(tool)	register struct	tool *tool;{	struct	rect rect;	short	stht = tool_stripeheight(tool);	register struct	toolsw *sw;	rect = tool->tl_rectcache;	if (tool->tl_flags&TOOL_NAMESTRIPE) {		rect.r_top += stht;		rect.r_height -= stht;	}		    	(void)pw_lock(tool->tl_pixwin, &rect);	(void)_tool_draw_box(tool->tl_pixwin, PIX_SET, &rect, 2, BLACK);	rect_marginadjust(&rect, -2);	(void)pw_writebackground(tool->tl_pixwin, rect.r_left, rect.r_top,	    rect.r_width, rect.r_height, PIX_CLR);	for (sw = tool->tl_sw;sw;sw = sw->ts_next) {		if (((Toolsw_priv *)(LINT_CAST(sw->ts_priv)))->have_kbd_focus != TRUE) {			(void)_tool_displayswborders(tool, sw);		}	}	for (sw = tool->tl_sw;sw;sw = sw->ts_next) {		if (((Toolsw_priv *)(LINT_CAST(sw->ts_priv)))->have_kbd_focus == TRUE) {			(void)_tool_displayswborders(tool, sw);		}	}	(void)pw_unlock(tool->tl_pixwin);}/* *  display borders of subwindow sw. *  if sw has keyboard focus, highlight the border. */_tool_displayswborders(tool, sw)	register struct	tool	*tool;	register struct	toolsw	*sw;{        struct  rect rect;        short   stht = tool_stripeheight(tool);        short	hdrht = tool_headerheight(tool->tl_flags&TOOL_NAMESTRIPE);        int	width;	Toolsw_priv	*sw_priv;                (void)win_getrect(sw->ts_windowfd, &rect);	rect_marginadjust(&rect, 3);	sw_priv = (Toolsw_priv *)(LINT_CAST(sw->ts_priv));	        if (tool->tl_flags&TOOL_NAMESTRIPE && rect.r_top+3 == hdrht) {		rect.r_height -= 3;		rect.r_top += 3;		draw_3sides(tool->tl_pixwin, PIX_CLR, &rect, 1, WHITE);		rect.r_height += 3;		rect.r_top -= 3;	} else {		(void)_tool_draw_box(tool->tl_pixwin, PIX_CLR, &rect, 1, WHITE);	}		if (sw_priv != (Toolsw_priv *)0 && sw_priv->have_kbd_focus == TRUE) {        	width = 3;	} else {        	rect_marginadjust(&rect, -1);        	width = 2;	}        if (tool->tl_flags&TOOL_NAMESTRIPE && rect.r_top < stht) {		draw_3sides(tool->tl_pixwin, PIX_SET, &rect, width, BLACK);        } else {		(void)_tool_draw_box(tool->tl_pixwin, PIX_SET, &rect, width, BLACK);        }}_tool_subwindowshandlesigwinch(tool)	struct	tool *tool;{	register struct	toolsw *sw;	for (sw = tool->tl_sw;sw;sw = sw->ts_next) {		if (sw->ts_io.tio_handlesigwinch)			sw->ts_io.tio_handlesigwinch(sw->ts_data);		/* Notifier based subwindows are handled separately */	}	return;}_tool_displaydefaulticon(tool)	register struct	tool *tool;{	struct	rect rect;	rect = tool->tl_rectcache;	(void)pw_writebackground(tool->tl_pixwin, rect.r_left, rect.r_top,	    rect.r_width, rect.r_height, PIX_SET);	rect_marginadjust(&rect, -tool_borderwidth(tool));	(void)pw_writebackground(tool->tl_pixwin, rect.r_left, rect.r_top,	    rect.r_width, rect.r_height, PIX_CLR);	rect_marginadjust(&rect, -tool_borderwidth(tool));	(void)formatstringtorect(tool->tl_pixwin, tool->tl_name, pf_sys, &rect);	return;}/* * Display utilities.  Note: Belongs somewhere else. */#define	newline(x, y, w, h, chrht, rect) \	{ *x = rect->r_left; \	  *y += chrht; \	  *h -= chrht; \	  *w = rect->r_width; \	}formatstringtorect(pixwin, s, font, rect)	struct	pixwin *pixwin;	char	*s;	struct	pixfont *font;	register struct	rect *rect;{	register char *charptr, *lineptr, *breakptr, c;	short	x, y, w, h, chrht, chrwth;	extern	PIXFONT *pw_pfnull();#ifdef lint	short dummy;#endif	if (s == 0)		return;	/* Use default system font if none supplied */	font = pw_pfnull(font);	x = rect->r_left;#ifdef lint	dummy = x;	x = dummy;#endif	y = rect->r_top;	w = rect->r_width;	h = rect->r_height;	chrht = font->pf_defaultsize.y;	breakptr = lineptr = s;	for (charptr = s;*charptr!='\0';charptr++) {		c = (*charptr)&127;		/*		 * Setup to wrap on blanks		 * Note: Need better break test.		 */		 if (c==' ') {			breakptr = charptr;		 }		chrwth = font->pf_char[c].pc_adv.x;		/*		 * Wrap when not enough room for next char		 */	 	if (w<chrwth) {			if (breakptr != lineptr) {				flushline(pixwin, rect->r_left, y,				    lineptr, breakptr, font);				charptr = breakptr;				lineptr = ++breakptr;				continue;			} else {				flushline(pixwin, rect->r_left, y,				    lineptr, charptr, font);				breakptr = lineptr = charptr;			}			newline(&x, &y, &w, &h, chrht, rect);		}		/*		 * Punt when run out of vertical space		 */		if (h<chrht)			break;		w -= chrwth;		x += chrwth;	}	flushline(pixwin, rect->r_left, y, lineptr, charptr, font);	/*	 * Note: We should release default font if null font was specified	 * (using pw_pfsysclose).  However, there is such an extreme	 * performance problem if continually opening and closing the	 * default font that we don't do this.  The reason that we can	 * justify this is that the default font is usually shared between	 * multiple packages, and once opened, is not a drain on resources.	 */}static voidflushline(pixwin, x, y, lineptr, charptr, font)	struct	pixwin *pixwin;	int	x, y;	char	*lineptr, *charptr;	struct	pixfont *font;{#define	STRBUF_LEN	1000	char	strbuf[STRBUF_LEN], *strbufptr = &strbuf[0];	int	len = charptr - lineptr;	if (charptr==0 || lineptr==0 || len > STRBUF_LEN)		return;	(void)strncpy(strbufptr, lineptr, len);	*(strbufptr+len) = '\0';	(void)pw_text(pixwin, x-font->pf_char[*strbufptr].pc_home.x,	    y-font->pf_char[*strbufptr].pc_home.y, PIX_SRC, font, strbufptr);}/*ARGSUSED*/_tool_draw_box(pixwin, op, r, w, color)	register struct	pixwin *pixwin;	register int	op;	register struct rect *r;	register int	w;	int	color;{	struct rect rectlock;	/*	 * Draw top, left, right then bottom.	 * Note: should be pw_writebackground.	 */	rectlock = *r;	rect_marginadjust(&rectlock, w);	(void)pw_lock(pixwin, &rectlock);	(void)pw_writebackground(	    pixwin, r->r_left, r->r_top, r->r_width, w, op);	(void)pw_writebackground(pixwin, r->r_left, r->r_top + w,	    w, r->r_height - 2*w, op);	(void)pw_writebackground(pixwin, r->r_left + r->r_width - w, r->r_top + w,	    w, r->r_height - 2*w, op);	(void)pw_writebackground(pixwin, r->r_left, r->r_top + r->r_height - w,	    r->r_width, w, op);	(void)pw_unlock(pixwin);	return;}/* * Draw the lower 3 sides of a box. *//*ARGSUSED*/staticdraw_3sides(pixwin, op, r, w, color)	register struct	pixwin *pixwin;	int	op;	register struct rect *r;	register int	w;	int	color;{	struct rect rectlock;	/*	 * Draw left, right then bottom.	 */	rectlock = *r;	rect_marginadjust(&rectlock, w);	(void)pw_lock(pixwin, &rectlock);	(void)pw_writebackground(pixwin, r->r_left, r->r_top,	    w, r->r_height - w, op);	(void)pw_writebackground(pixwin, r->r_left + r->r_width - w, r->r_top,	    w, r->r_height - w, op);	(void)pw_writebackground(pixwin, r->r_left, r->r_top + r->r_height - w,	    r->r_width, w, op);	(void)pw_unlock(pixwin);	return;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜理伦三级在线观看| 国产美女在线精品| 色综合久久六月婷婷中文字幕| 久久蜜桃一区二区| 久久国产三级精品| 欧美一区二区三区不卡| 亚洲a一区二区| 欧美日韩国产在线播放网站| 夜夜嗨av一区二区三区| 欧美性猛交xxxx黑人交| 亚洲午夜激情网站| 欧美日韩高清一区| 久久激五月天综合精品| 亚洲精品一区二区三区影院 | 国产一区在线看| 91成人在线精品| 亚洲mv在线观看| 欧美一区二区高清| 经典一区二区三区| 亚洲欧洲www| 欧美日韩一区三区| 久久99精品一区二区三区三区| 亚洲精品一区二区三区影院 | 亚洲gay无套男同| 日韩一区二区在线观看| 国产乱理伦片在线观看夜一区| 国产精品久久久久久久久快鸭 | 成人免费视频视频在线观看免费 | 国产成人免费xxxxxxxx| 日韩美女精品在线| 欧美一级在线观看| 91天堂素人约啪| 免费看日韩a级影片| 中文字幕av一区二区三区高| 欧美日韩在线亚洲一区蜜芽| 美女国产一区二区三区| 自拍偷拍欧美精品| 久久久久久久久久久久久久久99 | 国产不卡视频一区二区三区| 亚洲一级二级三级| 久久久av毛片精品| 91国偷自产一区二区开放时间 | 精品美女被调教视频大全网站| 不卡区在线中文字幕| 日韩高清一级片| 亚洲精品免费在线播放| 久久久一区二区三区捆绑**| 欧美日韩免费高清一区色橹橹 | 国产精品亚洲一区二区三区妖精| 一级做a爱片久久| 国产精品久久久久久久久果冻传媒| 欧美日韩在线不卡| 色综合天天综合狠狠| 成人自拍视频在线观看| 国产在线观看一区二区| 婷婷成人激情在线网| 亚洲一区二区精品久久av| 亚洲丝袜精品丝袜在线| 欧美性淫爽ww久久久久无| 国内精品伊人久久久久影院对白| 亚洲成人av在线电影| 日本美女一区二区| 亚洲综合色自拍一区| 日韩理论片一区二区| 久久九九国产精品| 91精品国产91久久久久久最新毛片| 色婷婷综合久久| av亚洲精华国产精华| 国产91对白在线观看九色| 国产精品一区二区你懂的| 激情综合五月天| 免费亚洲电影在线| 奇米精品一区二区三区四区| 五月婷婷激情综合| 日日嗨av一区二区三区四区| 日韩精品中文字幕一区| 国产a区久久久| 东方aⅴ免费观看久久av| 国产精品综合二区| 国产电影精品久久禁18| 国产毛片精品国产一区二区三区| 久久66热re国产| 丁香亚洲综合激情啪啪综合| 99精品桃花视频在线观看| 99精品欧美一区二区三区综合在线| 成人av资源站| 色视频成人在线观看免| 欧美美女视频在线观看| 欧美一区二区三区在线看| 久久久蜜桃精品| 亚洲精品日韩综合观看成人91| 亚洲成人精品一区| 国产精品一区二区你懂的| 972aa.com艺术欧美| 欧美日韩国产综合一区二区三区 | 亚洲一区二区av在线| 精品一区二区三区免费视频| 国产伦理精品不卡| 99精品视频中文字幕| 91精品福利在线一区二区三区 | 久久影音资源网| 国产精品国产三级国产普通话三级 | 丁香天五香天堂综合| 91一区二区三区在线观看| 欧美蜜桃一区二区三区| 精品久久久久久久一区二区蜜臀| 国产精品麻豆视频| 日韩高清在线观看| 91福利国产成人精品照片| 国产偷国产偷亚洲高清人白洁| 国产精品盗摄一区二区三区| 日本不卡视频在线| 蜜乳av一区二区| 欧美综合亚洲图片综合区| 国产丝袜在线精品| 久久精品国产澳门| 91国偷自产一区二区开放时间 | 中文字幕一区三区| 国产高清不卡一区二区| 4438成人网| 亚洲动漫第一页| 在线观看日韩国产| 亚洲一区中文日韩| 99国产精品久久久久久久久久久 | 日韩电影在线观看网站| 91视视频在线观看入口直接观看www | 一区二区免费视频| 91亚洲精品一区二区乱码| 欧美激情一区二区三区蜜桃视频| 免费成人在线网站| 日韩久久精品一区| 久久99国产精品尤物| 精品91自产拍在线观看一区| 国产老肥熟一区二区三区| 国产天堂亚洲国产碰碰| 国产在线播放一区| 久久久噜噜噜久久人人看| 国产精品影视在线| 国产精品青草综合久久久久99| 成人永久免费视频| 亚洲欧美另类小说视频| 欧洲色大大久久| 久久精品国内一区二区三区| 久久综合久久99| 99精品欧美一区二区蜜桃免费| 亚洲免费在线观看| 日韩精品中文字幕在线不卡尤物| 国产曰批免费观看久久久| 26uuu精品一区二区三区四区在线| 韩日av一区二区| 国产精品视频看| 欧美视频中文字幕| 国产精品亚洲视频| 日韩美女久久久| 4438成人网| aaa亚洲精品一二三区| 亚洲mv在线观看| 亚洲精品一区二区三区蜜桃下载| 波多野结衣在线aⅴ中文字幕不卡| 亚洲视频一区在线观看| 欧美日韩国产一二三| 国v精品久久久网| 麻豆免费精品视频| 亚洲欧美日韩成人高清在线一区| 欧美大尺度电影在线| 色婷婷亚洲精品| 国产一区二区视频在线播放| 亚洲成人自拍网| 国产精品少妇自拍| 欧美岛国在线观看| 欧美精品少妇一区二区三区| 成人福利视频网站| 韩国女主播一区| 久久超级碰视频| 秋霞午夜鲁丝一区二区老狼| 亚洲品质自拍视频| ...av二区三区久久精品| 国产精品福利一区二区| 亚洲国产精品ⅴa在线观看| 国产精品久久久久永久免费观看| 中文字幕在线不卡一区二区三区| 国产精品久久久久国产精品日日 | 精品国产乱码久久久久久蜜臀| 日韩一级欧美一级| 欧美成人aa大片| 中文字幕一区日韩精品欧美| 亚洲精品久久嫩草网站秘色| 亚洲国产成人porn| 免费人成在线不卡| 国产曰批免费观看久久久| 国产精品996| 欧美主播一区二区三区| 91麻豆精品国产91久久久| 91精品国产综合久久香蕉麻豆| 久久精品视频一区二区三区| 欧美电影免费观看高清完整版| 国产精品欧美一级免费| 亚洲美腿欧美偷拍| 麻豆成人免费电影| 高清不卡在线观看|