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

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

?? tktextwind.c

?? linux系統下的音頻通信
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*  * tkTextWind.c -- * *	This file contains code that allows arbitrary windows to be *	nested inside text widgets.  It also implements the "window" *	widget command for texts. * * Copyright (c) 1994 The Regents of the University of California. * Copyright (c) 1994-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: @(#) tkTextWind.c 1.14 97/04/25 16:52:09 */#include "tk.h"#include "tkText.h"#include "tkPort.h"/* * The following structure is the official type record for the * embedded window geometry manager: */static void		EmbWinRequestProc _ANSI_ARGS_((ClientData clientData,			    Tk_Window tkwin));static void		EmbWinLostSlaveProc _ANSI_ARGS_((ClientData clientData,			    Tk_Window tkwin));static Tk_GeomMgr textGeomType = {    "text",			/* name */    EmbWinRequestProc,		/* requestProc */    EmbWinLostSlaveProc,	/* lostSlaveProc */};/* * Definitions for alignment values: */#define ALIGN_BOTTOM		0#define ALIGN_CENTER		1#define ALIGN_TOP		2#define ALIGN_BASELINE		3/* * Macro that determines the size of an embedded window segment: */#define EW_SEG_SIZE ((unsigned) (Tk_Offset(TkTextSegment, body) \	+ sizeof(TkTextEmbWindow)))/* * Prototypes for procedures defined in this file: */static int		AlignParseProc _ANSI_ARGS_((ClientData clientData,			    Tcl_Interp *interp, Tk_Window tkwin, char *value,			    char *widgRec, int offset));static char *		AlignPrintProc _ANSI_ARGS_((ClientData clientData,			    Tk_Window tkwin, char *widgRec, int offset,			    Tcl_FreeProc **freeProcPtr));static TkTextSegment *	EmbWinCleanupProc _ANSI_ARGS_((TkTextSegment *segPtr,			    TkTextLine *linePtr));static void		EmbWinCheckProc _ANSI_ARGS_((TkTextSegment *segPtr,			    TkTextLine *linePtr));static void		EmbWinBboxProc _ANSI_ARGS_((TkTextDispChunk *chunkPtr,			    int index, int y, int lineHeight, int baseline,			    int *xPtr, int *yPtr, int *widthPtr,			    int *heightPtr));static int		EmbWinConfigure _ANSI_ARGS_((TkText *textPtr,			    TkTextSegment *ewPtr, int argc, char **argv));static void		EmbWinDelayedUnmap _ANSI_ARGS_((			    ClientData clientData));static int		EmbWinDeleteProc _ANSI_ARGS_((TkTextSegment *segPtr,			    TkTextLine *linePtr, int treeGone));static void		EmbWinDisplayProc _ANSI_ARGS_((			    TkTextDispChunk *chunkPtr, int x, int y,			    int lineHeight, int baseline, Display *display,			    Drawable dst, int screenY));static int		EmbWinLayoutProc _ANSI_ARGS_((TkText *textPtr,			    TkTextIndex *indexPtr, TkTextSegment *segPtr,			    int offset, int maxX, int maxChars,			    int noCharsYet, Tk_Uid wrapMode,			    TkTextDispChunk *chunkPtr));static void		EmbWinStructureProc _ANSI_ARGS_((ClientData clientData,			    XEvent *eventPtr));static void		EmbWinUndisplayProc _ANSI_ARGS_((TkText *textPtr,			    TkTextDispChunk *chunkPtr));/* * The following structure declares the "embedded window" segment type. */static Tk_SegType tkTextEmbWindowType = {    "window",					/* name */    0,						/* leftGravity */    (Tk_SegSplitProc *) NULL,			/* splitProc */    EmbWinDeleteProc,				/* deleteProc */    EmbWinCleanupProc,				/* cleanupProc */    (Tk_SegLineChangeProc *) NULL,		/* lineChangeProc */    EmbWinLayoutProc,				/* layoutProc */    EmbWinCheckProc				/* checkProc */};/* * Information used for parsing window configuration options: */static Tk_CustomOption alignOption = {AlignParseProc, AlignPrintProc,	(ClientData) NULL};static Tk_ConfigSpec configSpecs[] = {    {TK_CONFIG_CUSTOM, "-align", (char *) NULL, (char *) NULL,	"center", 0, TK_CONFIG_DONT_SET_DEFAULT, &alignOption},    {TK_CONFIG_STRING, "-create", (char *) NULL, (char *) NULL,	(char *) NULL, Tk_Offset(TkTextEmbWindow, create),	TK_CONFIG_DONT_SET_DEFAULT|TK_CONFIG_NULL_OK},    {TK_CONFIG_INT, "-padx", (char *) NULL, (char *) NULL,	"0", Tk_Offset(TkTextEmbWindow, padX),	TK_CONFIG_DONT_SET_DEFAULT},    {TK_CONFIG_INT, "-pady", (char *) NULL, (char *) NULL,	"0", Tk_Offset(TkTextEmbWindow, padY),	TK_CONFIG_DONT_SET_DEFAULT},    {TK_CONFIG_BOOLEAN, "-stretch", (char *) NULL, (char *) NULL,	"0", Tk_Offset(TkTextEmbWindow, stretch),	TK_CONFIG_DONT_SET_DEFAULT},    {TK_CONFIG_WINDOW, "-window", (char *) NULL, (char *) NULL,	(char *) NULL, Tk_Offset(TkTextEmbWindow, tkwin),	TK_CONFIG_DONT_SET_DEFAULT|TK_CONFIG_NULL_OK},    {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL,	(char *) NULL, 0, 0}};/* *-------------------------------------------------------------- * * TkTextWindowCmd -- * *	This procedure implements the "window" widget command *	for text widgets.  See the user documentation for details *	on what it does. * * Results: *	A standard Tcl result or error. * * Side effects: *	See the user documentation. * *-------------------------------------------------------------- */intTkTextWindowCmd(textPtr, interp, argc, argv)    register TkText *textPtr;	/* Information about text widget. */    Tcl_Interp *interp;		/* Current interpreter. */    int argc;			/* Number of arguments. */    char **argv;		/* Argument strings.  Someone else has already				 * parsed this command enough to know that				 * argv[1] is "window". */{    size_t length;    register TkTextSegment *ewPtr;    if (argc < 3) {	Tcl_AppendResult(interp, "wrong # args: should be \"",		argv[0], " window option ?arg arg ...?\"", (char *) NULL);	return TCL_ERROR;    }    length = strlen(argv[2]);    if ((strncmp(argv[2], "cget", length) == 0) && (length >= 2)) {	TkTextIndex index;	TkTextSegment *ewPtr;	if (argc != 5) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " window cget index option\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (TkTextGetIndex(interp, textPtr, argv[3], &index) != TCL_OK) {	    return TCL_ERROR;	}	ewPtr = TkTextIndexToSeg(&index, (int *) NULL);	if (ewPtr->typePtr != &tkTextEmbWindowType) {	    Tcl_AppendResult(interp, "no embedded window at index \"",		    argv[3], "\"", (char *) NULL);	    return TCL_ERROR;	}	return Tk_ConfigureValue(interp, textPtr->tkwin, configSpecs,		(char *) &ewPtr->body.ew, argv[4], 0);    } else if ((strncmp(argv[2], "configure", length) == 0) && (length >= 2)) {	TkTextIndex index;	TkTextSegment *ewPtr;	if (argc < 4) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " window configure index ?option value ...?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (TkTextGetIndex(interp, textPtr, argv[3], &index) != TCL_OK) {	    return TCL_ERROR;	}	ewPtr = TkTextIndexToSeg(&index, (int *) NULL);	if (ewPtr->typePtr != &tkTextEmbWindowType) {	    Tcl_AppendResult(interp, "no embedded window at index \"",		    argv[3], "\"", (char *) NULL);	    return TCL_ERROR;	}	if (argc == 4) {	    return Tk_ConfigureInfo(interp, textPtr->tkwin, configSpecs,		    (char *) &ewPtr->body.ew, (char *) NULL, 0);	} else if (argc == 5) {	    return Tk_ConfigureInfo(interp, textPtr->tkwin, configSpecs,		    (char *) &ewPtr->body.ew, argv[4], 0);	} else {	    TkTextChanged(textPtr, &index, &index);	    return EmbWinConfigure(textPtr, ewPtr, argc-4, argv+4);	}    } else if ((strncmp(argv[2], "create", length) == 0) && (length >= 2)) {	TkTextIndex index;	int lineIndex;	/*	 * Add a new window.  Find where to put the new window, and	 * mark that position for redisplay.	 */	if (argc < 4) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " window create index ?option value ...?\"",		    (char *) NULL);	    return TCL_ERROR;	}	if (TkTextGetIndex(interp, textPtr, argv[3], &index) != TCL_OK) {	    return TCL_ERROR;	}	/*	 * Don't allow insertions on the last (dummy) line of the text.	 */    	lineIndex = TkBTreeLineIndex(index.linePtr);	if (lineIndex == TkBTreeNumLines(textPtr->tree)) {	    lineIndex--;	    TkTextMakeIndex(textPtr->tree, lineIndex, 1000000, &index);	}	/*	 * Create the new window segment and initialize it.	 */	ewPtr = (TkTextSegment *) ckalloc(EW_SEG_SIZE);	ewPtr->typePtr = &tkTextEmbWindowType;	ewPtr->size = 1;	ewPtr->body.ew.textPtr = textPtr;	ewPtr->body.ew.linePtr = NULL;	ewPtr->body.ew.tkwin = NULL;	ewPtr->body.ew.create = NULL;	ewPtr->body.ew.align = ALIGN_CENTER;	ewPtr->body.ew.padX = ewPtr->body.ew.padY = 0;	ewPtr->body.ew.stretch = 0;	ewPtr->body.ew.chunkCount = 0;	ewPtr->body.ew.displayed = 0;	/*	 * Link the segment into the text widget, then configure it (delete	 * it again if the configuration fails).	 */	TkTextChanged(textPtr, &index, &index);	TkBTreeLinkSegment(ewPtr, &index);	if (EmbWinConfigure(textPtr, ewPtr, argc-4, argv+4) != TCL_OK) {	    TkTextIndex index2;	    TkTextIndexForwChars(&index, 1, &index2);	    TkBTreeDeleteChars(&index, &index2);	    return TCL_ERROR;	}    } else if (strncmp(argv[2], "names", length) == 0) {	Tcl_HashSearch search;	Tcl_HashEntry *hPtr;	if (argc != 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " window names\"", (char *) NULL);	    return TCL_ERROR;	}	for (hPtr = Tcl_FirstHashEntry(&textPtr->windowTable, &search);		hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) {	    Tcl_AppendElement(interp,		    Tcl_GetHashKey(&textPtr->markTable, hPtr));	}    } else {	Tcl_AppendResult(interp, "bad window option \"", argv[2],		"\": must be cget, configure, create, or names",		(char *) NULL);	return TCL_ERROR;    }    return TCL_OK;}/* *-------------------------------------------------------------- * * EmbWinConfigure -- * *	This procedure is called to handle configuration options *	for an embedded window, using an argc/argv list. * * Results: *	The return value is a standard Tcl result.  If TCL_ERROR is *	returned, then interp->result contains an error message.. * * Side effects: *	Configuration information for the embedded window changes, *	such as alignment, stretching, or name of the embedded *	window. * *-------------------------------------------------------------- */static intEmbWinConfigure(textPtr, ewPtr, argc, argv)    TkText *textPtr;		/* Information about text widget that				 * contains embedded window. */    TkTextSegment *ewPtr;	/* Embedded window to be configured. */    int argc;			/* Number of strings in argv. */    char **argv;		/* Array of strings describing configuration				 * options. */{    Tk_Window oldWindow;    Tcl_HashEntry *hPtr;    int new;    oldWindow = ewPtr->body.ew.tkwin;    if (Tk_ConfigureWidget(textPtr->interp, textPtr->tkwin, configSpecs,	    argc, argv, (char *) &ewPtr->body.ew, TK_CONFIG_ARGV_ONLY)	    != TCL_OK) {	return TCL_ERROR;    }    if (oldWindow != ewPtr->body.ew.tkwin) {	if (oldWindow != NULL) {	    Tcl_DeleteHashEntry(Tcl_FindHashEntry(&textPtr->windowTable,		    Tk_PathName(oldWindow)));	    Tk_DeleteEventHandler(oldWindow, StructureNotifyMask,		    EmbWinStructureProc, (ClientData) ewPtr);	    Tk_ManageGeometry(oldWindow, (Tk_GeomMgr *) NULL,		    (ClientData) NULL);	    if (textPtr->tkwin != Tk_Parent(oldWindow)) {		Tk_UnmaintainGeometry(oldWindow, textPtr->tkwin);	    } else {		Tk_UnmapWindow(oldWindow);	    }	}	if (ewPtr->body.ew.tkwin != NULL) {	    Tk_Window ancestor, parent;	    /*	     * Make sure that the text is either the parent of the	     * embedded window or a descendant of that parent.  Also,	     * don't allow a top-level window to be managed inside	     * a text.	     */	    parent = Tk_Parent(ewPtr->body.ew.tkwin);	    for (ancestor = textPtr->tkwin; ;		    ancestor = Tk_Parent(ancestor)) {		if (ancestor == parent) {		    break;		}		if (Tk_IsTopLevel(ancestor)) {		    badMaster:		    Tcl_AppendResult(textPtr->interp, "can't embed ",			    Tk_PathName(ewPtr->body.ew.tkwin), " in ",			    Tk_PathName(textPtr->tkwin), (char *) NULL);		    ewPtr->body.ew.tkwin = NULL;		    return TCL_ERROR;		}	    }	    if (Tk_IsTopLevel(ewPtr->body.ew.tkwin)		    || (ewPtr->body.ew.tkwin == textPtr->tkwin)) {		goto badMaster;	    }	    /*	     * Take over geometry management for the window, plus create	     * an event handler to find out when it is deleted.	     */	    Tk_ManageGeometry(ewPtr->body.ew.tkwin, &textGeomType,		    (ClientData) ewPtr);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱理伦片在线观看夜一区| 欧美日韩一级黄| 日本韩国欧美在线| 精品久久久三级丝袜| 亚洲女厕所小便bbb| 国产精品一二三区在线| 欧美日韩1234| 亚洲一区二区三区四区五区黄| 蜜臀99久久精品久久久久久软件| 91免费观看视频在线| 久久亚洲欧美国产精品乐播| 视频一区视频二区在线观看| 99精品视频在线播放观看| 26uuu欧美| 精彩视频一区二区三区| 欧美日韩国产大片| 自拍偷拍国产亚洲| 成人av免费网站| 日本一区二区免费在线| 久久成人久久鬼色| 日韩亚洲欧美成人一区| 丝袜亚洲另类丝袜在线| 欧美日韩成人综合在线一区二区| 日韩理论在线观看| 91免费版在线| 亚洲精品综合在线| 色999日韩国产欧美一区二区| 日本一区二区三区dvd视频在线| 国产真实乱子伦精品视频| 日韩欧美一级二级三级久久久| 亚洲成人久久影院| 欧美日韩激情一区| 日韩精品一卡二卡三卡四卡无卡| 欧美男人的天堂一二区| 香蕉久久夜色精品国产使用方法| 精品视频在线免费看| 亚洲18影院在线观看| 91.麻豆视频| 韩国中文字幕2020精品| 久久精品一区蜜桃臀影院| 国产在线不卡视频| 国产三级一区二区三区| 成人一级视频在线观看| 亚洲人成小说网站色在线| 色呦呦网站一区| 午夜精品视频一区| 欧美一区二区国产| 国产一区二区电影| 中文字幕在线不卡国产视频| 成人美女视频在线观看| 综合亚洲深深色噜噜狠狠网站| 色综合久久88色综合天天免费| 一区二区三区中文字幕| 欧美精品一二三| 极品尤物av久久免费看| 国产精品免费视频网站| 欧美亚洲综合久久| 久久国产婷婷国产香蕉| 国产精品国产三级国产有无不卡| 91久久香蕉国产日韩欧美9色| 日韩av电影免费观看高清完整版| 精品久久久久久久人人人人传媒 | 精品一区二区综合| 久久久久久久久久电影| 色婷婷亚洲精品| 蜜桃久久久久久| 中文字幕一区免费在线观看| 欧美欧美欧美欧美| 成人一级视频在线观看| 亚洲v中文字幕| 日本一区二区成人在线| 欧美色图在线观看| 国产乱码字幕精品高清av| 亚洲综合小说图片| 久久久蜜臀国产一区二区| 欧洲一区在线电影| 国产黄人亚洲片| 午夜精品福利在线| 国产精品久久久久久福利一牛影视 | 久久精品72免费观看| 亚洲视频综合在线| 久久久久久久久一| 欧美女孩性生活视频| www.久久久久久久久| 久久国产精品72免费观看| 一区二区三区不卡视频在线观看| 久久久久久久综合| 日韩一区二区三区视频| 一本大道久久a久久精品综合| 国产自产高清不卡| 蜜桃av一区二区| 亚洲国产一区二区三区青草影视| 国产欧美视频在线观看| 日韩一区二区麻豆国产| 色老头久久综合| av中文字幕在线不卡| 国产成人日日夜夜| 加勒比av一区二区| 麻豆专区一区二区三区四区五区| 亚洲精品国久久99热| 国产精品乱码久久久久久| 久久影视一区二区| 欧美精品一区视频| 日韩视频免费直播| 欧美一区二区三区不卡| 欧美日韩一区二区三区视频 | 91蜜桃网址入口| 成人动漫一区二区| 国产白丝网站精品污在线入口| 久热成人在线视频| 精品一区二区日韩| 奇米777欧美一区二区| 午夜一区二区三区在线观看| 亚洲一区视频在线| 亚洲制服欧美中文字幕中文字幕| 亚洲欧美日韩成人高清在线一区| 亚洲欧美综合另类在线卡通| 国产精品久久99| 中文字幕亚洲区| 亚洲欧美激情一区二区| 亚洲精品国产视频| 亚洲第一久久影院| 日韩成人免费电影| 久久国产剧场电影| 国产精品亚洲人在线观看| 国产.欧美.日韩| 91麻豆福利精品推荐| 欧美在线色视频| 4438x亚洲最大成人网| 日韩视频一区二区在线观看| ww久久中文字幕| 亚洲天堂a在线| 午夜欧美在线一二页| 捆绑紧缚一区二区三区视频| 国产在线视频一区二区| 不卡的电影网站| 欧美一a一片一级一片| 91麻豆精品国产91久久久久| 欧美精品黑人性xxxx| 精品奇米国产一区二区三区| 久久久久久久av麻豆果冻| 国产精品久久久久久户外露出| 亚洲黄网站在线观看| 青青草一区二区三区| 国产成人av电影在线播放| 一本大道av一区二区在线播放| 欧美喷水一区二区| 国产亚洲短视频| 亚洲综合免费观看高清完整版在线 | 欧美精品v国产精品v日韩精品| 日韩欧美自拍偷拍| 亚洲欧洲av色图| 麻豆精品视频在线观看视频| www.久久久久久久久| 日韩一区二区三区av| 综合激情成人伊人| 久久国产麻豆精品| 欧美专区在线观看一区| 久久这里只有精品视频网| 亚洲精品中文在线观看| 国产在线麻豆精品观看| 欧美最新大片在线看| 国产性天天综合网| 日日欢夜夜爽一区| 91麻豆精东视频| 久久综合色播五月| 亚洲国产一二三| 成+人+亚洲+综合天堂| 日韩免费视频一区| 亚洲一区二区三区爽爽爽爽爽| 国产精品996| 日韩欧美激情一区| 五月激情丁香一区二区三区| av一区二区三区四区| 精品国产一区二区在线观看| 亚洲一区免费观看| 91香蕉视频黄| 欧美国产1区2区| 国产一区二区三区在线观看免费 | 亚洲444eee在线观看| 91碰在线视频| 1024精品合集| 成人av影视在线观看| 久久天天做天天爱综合色| 免费在线观看不卡| 欧美日韩国产一区| 亚洲国产另类精品专区| 99久久精品99国产精品| 国产精品人妖ts系列视频| 国产精品66部| 国产三级精品三级| 国产精品12区| 久久久不卡影院| 国产精品一区二区在线看| 精品国产区一区| 国产一区二区三区在线观看免费视频| 欧美日本免费一区二区三区| 亚洲午夜在线电影| 精品视频资源站| 日本aⅴ免费视频一区二区三区|