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

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

?? tkunixcursor.c

?? linux系統(tǒng)下的音頻通信
?? C
字號:
/*  * tkUnixCursor.c -- * *	This file contains X specific cursor manipulation routines. * * Copyright (c) 1995 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * SCCS: @(#) tkUnixCursor.c 1.4 96/10/08 09:33:08 */#include "tkPort.h"#include "tkInt.h"/* * The following data structure is a superset of the TkCursor structure * defined in tkCursor.c.  Each system specific cursor module will define * a different cursor structure.  All of these structures must have the * same header consisting of the fields in TkCursor. */typedef struct {    TkCursor info;		/* Generic cursor info used by tkCursor.c */    Display *display;		/* Display for which cursor is valid. */} TkUnixCursor;/* * The table below is used to map from the name of a cursor to its * index in the official cursor font: */static struct CursorName {    char		*name;    unsigned int	shape;} cursorNames[] = {    {"X_cursor",		XC_X_cursor},    {"arrow",			XC_arrow},    {"based_arrow_down",	XC_based_arrow_down},    {"based_arrow_up",		XC_based_arrow_up},    {"boat",			XC_boat},    {"bogosity",		XC_bogosity},    {"bottom_left_corner",	XC_bottom_left_corner},    {"bottom_right_corner",	XC_bottom_right_corner},    {"bottom_side",		XC_bottom_side},    {"bottom_tee",		XC_bottom_tee},    {"box_spiral",		XC_box_spiral},    {"center_ptr",		XC_center_ptr},    {"circle",			XC_circle},    {"clock",			XC_clock},    {"coffee_mug",		XC_coffee_mug},    {"cross",			XC_cross},    {"cross_reverse",		XC_cross_reverse},    {"crosshair",		XC_crosshair},    {"diamond_cross",		XC_diamond_cross},    {"dot",			XC_dot},    {"dotbox",			XC_dotbox},    {"double_arrow",		XC_double_arrow},    {"draft_large",		XC_draft_large},    {"draft_small",		XC_draft_small},    {"draped_box",		XC_draped_box},    {"exchange",		XC_exchange},    {"fleur",			XC_fleur},    {"gobbler",			XC_gobbler},    {"gumby",			XC_gumby},    {"hand1",			XC_hand1},    {"hand2",			XC_hand2},    {"heart",			XC_heart},    {"icon",			XC_icon},    {"iron_cross",		XC_iron_cross},    {"left_ptr",		XC_left_ptr},    {"left_side",		XC_left_side},    {"left_tee",		XC_left_tee},    {"leftbutton",		XC_leftbutton},    {"ll_angle",		XC_ll_angle},    {"lr_angle",		XC_lr_angle},    {"man",			XC_man},    {"middlebutton",		XC_middlebutton},    {"mouse",			XC_mouse},    {"pencil",			XC_pencil},    {"pirate",			XC_pirate},    {"plus",			XC_plus},    {"question_arrow",		XC_question_arrow},    {"right_ptr",		XC_right_ptr},    {"right_side",		XC_right_side},    {"right_tee",		XC_right_tee},    {"rightbutton",		XC_rightbutton},    {"rtl_logo",		XC_rtl_logo},    {"sailboat",		XC_sailboat},    {"sb_down_arrow",		XC_sb_down_arrow},    {"sb_h_double_arrow",	XC_sb_h_double_arrow},    {"sb_left_arrow",		XC_sb_left_arrow},    {"sb_right_arrow",		XC_sb_right_arrow},    {"sb_up_arrow",		XC_sb_up_arrow},    {"sb_v_double_arrow",	XC_sb_v_double_arrow},    {"shuttle",			XC_shuttle},    {"sizing",			XC_sizing},    {"spider",			XC_spider},    {"spraycan",		XC_spraycan},    {"star",			XC_star},    {"target",			XC_target},    {"tcross",			XC_tcross},    {"top_left_arrow",		XC_top_left_arrow},    {"top_left_corner",		XC_top_left_corner},    {"top_right_corner",	XC_top_right_corner},    {"top_side",		XC_top_side},    {"top_tee",			XC_top_tee},    {"trek",			XC_trek},    {"ul_angle",		XC_ul_angle},    {"umbrella",		XC_umbrella},    {"ur_angle",		XC_ur_angle},    {"watch",			XC_watch},    {"xterm",			XC_xterm},    {NULL,			0}};/* * Font to use for cursors: */#ifndef CURSORFONT#define CURSORFONT "cursor"#endif/* *---------------------------------------------------------------------- * * TkGetCursorByName -- * *	Retrieve a cursor by name.  Parse the cursor name into fields *	and create a cursor, either from the standard cursor font or *	from bitmap files. * * Results: *	Returns a new cursor, or NULL on errors.   * * Side effects: *	Allocates a new cursor. * *---------------------------------------------------------------------- */TkCursor *TkGetCursorByName(interp, tkwin, string)    Tcl_Interp *interp;		/* Interpreter to use for error reporting. */    Tk_Window tkwin;		/* Window in which cursor will be used. */    Tk_Uid string;		/* Description of cursor.  See manual entry				 * for details on legal syntax. */{    TkUnixCursor *cursorPtr = NULL;    Cursor cursor = None;    int argc;    char **argv = NULL;    Pixmap source = None;    Pixmap mask = None;    Display *display = Tk_Display(tkwin);    if (Tcl_SplitList(interp, string, &argc, &argv) != TCL_OK) {	return NULL;    }    if (argc == 0) {	goto badString;    }    if (argv[0][0] != '@') {	XColor fg, bg;	unsigned int maskIndex;	register struct CursorName *namePtr;	TkDisplay *dispPtr;	/*	 * The cursor is to come from the standard cursor font.  If one	 * arg, it is cursor name (use black and white for fg and bg).	 * If two args, they are name and fg color (ignore mask).  If	 * three args, they are name, fg, bg.  Some of the code below	 * is stolen from the XCreateFontCursor Xlib procedure.	 */	if (argc > 3) {	    goto badString;	}	for (namePtr = cursorNames; ; namePtr++) {	    if (namePtr->name == NULL) {		goto badString;	    }	    if ((namePtr->name[0] == argv[0][0])		    && (strcmp(namePtr->name, argv[0]) == 0)) {		break;	    }	}	maskIndex = namePtr->shape + 1;	if (argc == 1) {	    fg.red = fg.green = fg.blue = 0;	    bg.red = bg.green = bg.blue = 65535;	} else {	    if (XParseColor(display, Tk_Colormap(tkwin), argv[1],		    &fg) == 0) {		Tcl_AppendResult(interp, "invalid color name \"", argv[1],			"\"", (char *) NULL);		goto cleanup;	    }	    if (argc == 2) {		bg.red = bg.green = bg.blue = 0;		maskIndex = namePtr->shape;	    } else {		if (XParseColor(display, Tk_Colormap(tkwin), argv[2],			&bg) == 0) {		    Tcl_AppendResult(interp, "invalid color name \"", argv[2],			    "\"", (char *) NULL);		    goto cleanup;		}	    }	}	dispPtr = ((TkWindow *) tkwin)->dispPtr;	if (dispPtr->cursorFont == None) {	    dispPtr->cursorFont = XLoadFont(display, CURSORFONT);	    if (dispPtr->cursorFont == None) {		interp->result = "couldn't load cursor font";		goto cleanup;	    }	}	cursor = XCreateGlyphCursor(display, dispPtr->cursorFont,		dispPtr->cursorFont, namePtr->shape, maskIndex,		&fg, &bg);    } else {	int width, height, maskWidth, maskHeight;	int xHot, yHot, dummy1, dummy2;	XColor fg, bg;        /*         * Prevent file system access in safe interpreters.         */        if (Tcl_IsSafe(interp)) {            Tcl_AppendResult(interp, "can't get cursor from a file in",                    " a safe interpreter", (char *) NULL);            cursorPtr = NULL;            goto cleanup;        }        	/*	 * The cursor is to be created by reading bitmap files.  There	 * should be either two elements in the list (source, color) or	 * four (source mask fg bg).	 */	if ((argc != 2) && (argc != 4)) {	    goto badString;	}	if (TkReadBitmapFile(display,		RootWindowOfScreen(Tk_Screen(tkwin)), &argv[0][1],		(unsigned int *) &width, (unsigned int *) &height,		&source, &xHot, &yHot) != BitmapSuccess) {	    Tcl_AppendResult(interp, "cleanup reading bitmap file \"",		    &argv[0][1], "\"", (char *) NULL);	    goto cleanup;	}	if ((xHot < 0) || (yHot < 0) || (xHot >= width) || (yHot >= height)) {	    Tcl_AppendResult(interp, "bad hot spot in bitmap file \"",		    &argv[0][1], "\"", (char *) NULL);	    goto cleanup;	}	if (argc == 2) {	    if (XParseColor(display, Tk_Colormap(tkwin), argv[1],		    &fg) == 0) {		Tcl_AppendResult(interp, "invalid color name \"",			argv[1], "\"", (char *) NULL);		goto cleanup;	    }	    cursor = XCreatePixmapCursor(display, source, source,		    &fg, &fg, (unsigned) xHot, (unsigned) yHot);	} else {	    if (TkReadBitmapFile(display,		    RootWindowOfScreen(Tk_Screen(tkwin)), argv[1],		    (unsigned int *) &maskWidth, (unsigned int *) &maskHeight,		    &mask, &dummy1, &dummy2) != BitmapSuccess) {		Tcl_AppendResult(interp, "cleanup reading bitmap file \"",			argv[1], "\"", (char *) NULL);		goto cleanup;	    }	    if ((maskWidth != width) && (maskHeight != height)) {		interp->result =			"source and mask bitmaps have different sizes";		goto cleanup;	    }	    if (XParseColor(display, Tk_Colormap(tkwin), argv[2],		    &fg) == 0) {		Tcl_AppendResult(interp, "invalid color name \"", argv[2],			"\"", (char *) NULL);		goto cleanup;	    }	    if (XParseColor(display, Tk_Colormap(tkwin), argv[3],		    &bg) == 0) {		Tcl_AppendResult(interp, "invalid color name \"", argv[3],			"\"", (char *) NULL);		goto cleanup;	    }	    cursor = XCreatePixmapCursor(display, source, mask,		    &fg, &bg, (unsigned) xHot, (unsigned) yHot);	}    }    if (cursor != None) {	cursorPtr = (TkUnixCursor *) ckalloc(sizeof(TkUnixCursor));	cursorPtr->info.cursor = (Tk_Cursor) cursor;	cursorPtr->display = display;    }    cleanup:    if (argv != NULL) {	ckfree((char *) argv);    }    if (source != None) {	Tk_FreePixmap(display, source);    }    if (mask != None) {	Tk_FreePixmap(display, mask);    }    return (TkCursor *) cursorPtr;    badString:    Tcl_AppendResult(interp, "bad cursor spec \"", string, "\"",	    (char *) NULL);    return NULL;}/* *---------------------------------------------------------------------- * * TkCreateCursorFromData -- * *	Creates a cursor from the source and mask bits. * * Results: *	Returns a new cursor, or NULL on errors. * * Side effects: *	Allocates a new cursor. * *---------------------------------------------------------------------- */TkCursor *TkCreateCursorFromData(tkwin, source, mask, width, height, xHot, yHot,	fgColor, bgColor)    Tk_Window tkwin;		/* Window in which cursor will be used. */    char *source;		/* Bitmap data for cursor shape. */    char *mask;			/* Bitmap data for cursor mask. */    int width, height;		/* Dimensions of cursor. */    int xHot, yHot;		/* Location of hot-spot in cursor. */    XColor fgColor;		/* Foreground color for cursor. */    XColor bgColor;		/* Background color for cursor. */{    Cursor cursor;    Pixmap sourcePixmap, maskPixmap;    TkUnixCursor *cursorPtr = NULL;    Display *display = Tk_Display(tkwin);    sourcePixmap = XCreateBitmapFromData(display,	    RootWindowOfScreen(Tk_Screen(tkwin)), source, (unsigned) width,	    (unsigned) height);    maskPixmap = XCreateBitmapFromData(display, 	    RootWindowOfScreen(Tk_Screen(tkwin)), mask, (unsigned) width,	    (unsigned) height);    cursor = XCreatePixmapCursor(display, sourcePixmap,	    maskPixmap, &fgColor, &bgColor, (unsigned) xHot, (unsigned) yHot);    Tk_FreePixmap(display, sourcePixmap);    Tk_FreePixmap(display, maskPixmap);    if (cursor != None) {	cursorPtr = (TkUnixCursor *) ckalloc(sizeof(TkUnixCursor));	cursorPtr->info.cursor = (Tk_Cursor) cursor;	cursorPtr->display = display;    }    return (TkCursor *) cursorPtr;}/* *---------------------------------------------------------------------- * * TkFreeCursor -- * *	This procedure is called to release a cursor allocated by *	TkGetCursorByName. * * Results: *	None. * * Side effects: *	The cursor data structure is deallocated. * *---------------------------------------------------------------------- */voidTkFreeCursor(cursorPtr)    TkCursor *cursorPtr;{    TkUnixCursor *unixCursorPtr = (TkUnixCursor *) cursorPtr;    XFreeCursor(unixCursorPtr->display, (Cursor) unixCursorPtr->info.cursor);    Tk_FreeXId(unixCursorPtr->display, (XID) unixCursorPtr->info.cursor);    ckfree((char *) unixCursorPtr);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产乱码久久蜜臀| 国产精品久久久久影院亚瑟| 欧美电影免费观看高清完整版在 | 精品对白一区国产伦| 亚洲欧洲美洲综合色网| 精品一区二区在线播放| 欧洲生活片亚洲生活在线观看| 久久久蜜桃精品| 免费精品视频在线| 欧美影院精品一区| 免费看黄色91| 91精品福利视频| 中国色在线观看另类| 国产综合久久久久久久久久久久| 欧美日韩一区在线观看| 亚洲激情av在线| 91在线观看污| 国产精品不卡在线观看| 国产一区二区三区蝌蚪| 欧美成人a在线| 天天操天天干天天综合网| 91国偷自产一区二区开放时间| 久久精品亚洲精品国产欧美| 精品一区二区三区免费观看| 欧美一区二区三区视频在线观看 | 国产精品黄色在线观看| 精品在线视频一区| 91精品国产91热久久久做人人| 亚洲国产精品一区二区久久恐怖片 | 国产乱人伦偷精品视频免下载 | 久久色成人在线| 理论片日本一区| 欧美一区二区精品久久911| 天堂影院一区二区| 欧美精品少妇一区二区三区| 亚洲韩国精品一区| 欧美高清视频一二三区| 天天综合天天做天天综合| 欧美日韩中文字幕一区二区| 欧美视频精品在线| 免费成人性网站| 国产精品久久二区二区| 一片黄亚洲嫩模| 97se亚洲国产综合自在线观| 亚洲欧美在线视频观看| 色88888久久久久久影院野外| 亚洲精品伦理在线| 欧美综合一区二区三区| 亚洲第一激情av| 日韩亚洲欧美成人一区| 国产一区二区精品久久| 一区视频在线播放| 在线观看亚洲精品| 日本sm残虐另类| 久久久久久电影| 色婷婷av一区二区三区之一色屋| 亚洲综合精品自拍| 日韩精品中文字幕一区二区三区| 国产不卡视频在线播放| 一区二区三区四区国产精品| 日韩一区二区在线观看视频| 国产suv精品一区二区6| 亚洲伦理在线免费看| 欧美一区二区三区在线| 成人h精品动漫一区二区三区| 一区二区三区四区视频精品免费 | 欧美大尺度电影在线| 国产成人精品在线看| 一区二区在线电影| 日韩欧美区一区二| 色婷婷激情一区二区三区| 麻豆精品在线看| 亚洲视频免费在线| 日韩视频不卡中文| 91蝌蚪国产九色| 国模套图日韩精品一区二区| 亚洲激情在线播放| 国产午夜精品美女毛片视频| 欧美色老头old∨ideo| 国产精品一品二品| 日韩一区精品视频| 亚洲免费色视频| 国产亚洲欧洲997久久综合| 在线亚洲免费视频| 成人自拍视频在线| 久久国产剧场电影| 午夜欧美2019年伦理| 日本一区二区三区视频视频| 制服视频三区第一页精品| 高清成人在线观看| 国内欧美视频一区二区 | 亚洲国产精品成人综合 | 日韩av电影天堂| 亚洲日本va午夜在线影院| 日韩美女视频在线| 欧美一级二级三级蜜桃| 欧美日韩亚洲综合在线 | www.成人网.com| 国产一区二区三区高清播放| 日产国产高清一区二区三区| 亚洲精品免费一二三区| 欧美极品美女视频| 久久久一区二区三区| 精品88久久久久88久久久| 7777精品伊人久久久大香线蕉最新版 | 欧美色图免费看| 91老师国产黑色丝袜在线| 99精品黄色片免费大全| 成人高清免费观看| 成人性生交大片免费看中文| 国产精品自产自拍| 国产一区福利在线| 国产在线精品一区二区三区不卡| 麻豆精品一区二区av白丝在线| 婷婷中文字幕综合| 日韩成人精品视频| 美国一区二区三区在线播放| 秋霞av亚洲一区二区三| 另类调教123区| 国产乱码精品1区2区3区| 国产成人精品免费在线| 国产原创一区二区| 成人一级黄色片| 91美女视频网站| 欧美日韩在线免费视频| 欧美一区二区视频在线观看 | 欧美一区二区网站| 日韩欧美在线影院| 久久九九99视频| 国产精品久久久久久久久果冻传媒| 国产精品高潮呻吟久久| 一区二区三区四区在线播放| 午夜影视日本亚洲欧洲精品| 久久99热狠狠色一区二区| 国产一区二区精品久久| 成年人午夜久久久| 精品视频一区二区不卡| 欧美大片顶级少妇| 国产精品乱码久久久久久| 夜夜精品浪潮av一区二区三区| 午夜精品久久久| 国产精品白丝av| 在线观看亚洲a| 亚洲精品在线三区| 亚洲另类在线视频| 欧美a级一区二区| 成人激情免费电影网址| 欧洲在线/亚洲| 久久青草欧美一区二区三区| 一区二区三区久久久| 极品少妇xxxx精品少妇| 色综合中文字幕国产 | 日韩精品一级二级 | 欧美精品自拍偷拍| 亚洲国产精品激情在线观看| 亚洲成人精品一区二区| 国产成人av电影在线| 欧美日韩精品系列| 国产拍欧美日韩视频二区| 亚洲国产成人精品视频| 风间由美中文字幕在线看视频国产欧美| 色婷婷精品大视频在线蜜桃视频| 亚洲精品一区二区在线观看| 亚洲已满18点击进入久久| 成人国产精品免费网站| 欧美成人官网二区| 午夜久久电影网| 99精品国产热久久91蜜凸| 久久综合狠狠综合久久综合88| 亚洲小说春色综合另类电影| 岛国精品一区二区| 欧美成人精品3d动漫h| 一区二区三区四区不卡在线| 国产成人福利片| 欧美成人一区二区| 视频在线观看91| 欧美性高清videossexo| 中文字幕一区二区三| 成人免费视频一区二区| 久久亚洲二区三区| 日本在线观看不卡视频| 欧美日韩卡一卡二| 亚洲午夜久久久久久久久久久| 成人动漫av在线| 中文字幕精品在线不卡| 国产一本一道久久香蕉| 精品日韩在线一区| 久久er精品视频| 亚洲精品在线免费播放| 乱一区二区av| 欧美电视剧免费观看| 美腿丝袜一区二区三区| 日韩三级视频在线看| 日本va欧美va精品| 日韩欧美在线123| 久久精品国产网站| 精品欧美一区二区在线观看| 美腿丝袜在线亚洲一区| 日韩精品一区二区在线| 久久97超碰色|