⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tkcanvas.c

📁 linux系统下的音频通信
💻 C
📖 第 1 页 / 共 5 页
字号:
	if (argc == 4) {	    tag = Tk_GetUid(argv[3]);	} else {	    tag = Tk_GetUid(argv[2]);	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    for (i = itemPtr->numTags-1; i >= 0; i--) {		if (itemPtr->tagPtr[i] == tag) {		    itemPtr->tagPtr[i] = itemPtr->tagPtr[itemPtr->numTags-1];		    itemPtr->numTags--;		}	    }	}    } else if ((c == 'f') && (strncmp(argv[1], "find", length) == 0)	    && (length >= 2)) {	if (argc < 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " find searchCommand ?arg arg ...?\"",		    (char *) NULL);	    goto error;	}	result = FindItems(interp, canvasPtr, argc-2, argv+2, (char *) NULL,		argv[0]," find");    } else if ((c == 'f') && (strncmp(argv[1], "focus", length) == 0)	    && (length >= 2)) {	if (argc > 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " focus ?tagOrId?\"",		    (char *) NULL);	    goto error;	}	itemPtr = canvasPtr->textInfo.focusItemPtr;	if (argc == 2) {	    if (itemPtr != NULL) {		sprintf(interp->result, "%d", itemPtr->id);	    }	    goto done;	}	if ((itemPtr != NULL) && (canvasPtr->textInfo.gotFocus)) {	    Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,		    itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);	}	if (argv[2][0] == 0) {	    canvasPtr->textInfo.focusItemPtr = NULL;	    goto done;	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    if (itemPtr->typePtr->icursorProc != NULL) {		break;	    }	}	if (itemPtr == NULL) {	    goto done;	}	canvasPtr->textInfo.focusItemPtr = itemPtr;	if (canvasPtr->textInfo.gotFocus) {	    Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,		    itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);	}    } else if ((c == 'g') && (strncmp(argv[1], "gettags", length) == 0)) {	if (argc != 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " gettags tagOrId\"", (char *) NULL);	    goto error;	}	itemPtr = StartTagSearch(canvasPtr, argv[2], &search);	if (itemPtr != NULL) {	    int i;	    for (i = 0; i < itemPtr->numTags; i++) {		Tcl_AppendElement(interp, (char *) itemPtr->tagPtr[i]);	    }	}    } else if ((c == 'i') && (strncmp(argv[1], "icursor", length) == 0)	    && (length >= 2)) {	int index;	if (argc != 4) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " icursor tagOrId index\"",		    (char *) NULL);	    goto error;	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    if ((itemPtr->typePtr->indexProc == NULL)		    || (itemPtr->typePtr->icursorProc == NULL)) {		goto done;	    }	    if ((*itemPtr->typePtr->indexProc)(interp, (Tk_Canvas) canvasPtr,		    itemPtr, argv[3], &index) != TCL_OK) {		goto error;	    }	    (*itemPtr->typePtr->icursorProc)((Tk_Canvas) canvasPtr, itemPtr,		    index);	    if ((itemPtr == canvasPtr->textInfo.focusItemPtr)		    && (canvasPtr->textInfo.cursorOn)) {		Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,			itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);	    }	}    } else if ((c == 'i') && (strncmp(argv[1], "index", length) == 0)	    && (length >= 3)) {	int index;	if (argc != 4) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " index tagOrId string\"",		    (char *) NULL);	    goto error;	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    if (itemPtr->typePtr->indexProc != NULL) {		break;	    }	}	if (itemPtr == NULL) {	    Tcl_AppendResult(interp, "can't find an indexable item \"",		    argv[2], "\"", (char *) NULL);	    goto error;	}	if ((*itemPtr->typePtr->indexProc)(interp, (Tk_Canvas) canvasPtr,		itemPtr, argv[3], &index) != TCL_OK) {	    goto error;	}	sprintf(interp->result, "%d", index);    } else if ((c == 'i') && (strncmp(argv[1], "insert", length) == 0)	    && (length >= 3)) {	int beforeThis;	if (argc != 5) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " insert tagOrId beforeThis string\"",		    (char *) NULL);	    goto error;	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    if ((itemPtr->typePtr->indexProc == NULL)		    || (itemPtr->typePtr->insertProc == NULL)) {		continue;	    }	    if ((*itemPtr->typePtr->indexProc)(interp, (Tk_Canvas) canvasPtr,		    itemPtr, argv[3], &beforeThis) != TCL_OK) {		goto error;	    }	    /*	     * Redraw both item's old and new areas:  it's possible	     * that an insertion could result in a new area either	     * larger or smaller than the old area.	     */	    Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,		    itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);	    (*itemPtr->typePtr->insertProc)((Tk_Canvas) canvasPtr,		    itemPtr, beforeThis, argv[4]);	    Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr, itemPtr->x1,		    itemPtr->y1, itemPtr->x2, itemPtr->y2);	}    } else if ((c == 'i') && (strncmp(argv[1], "itemcget", length) == 0)	    && (length >= 6)) {	if (argc != 4) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " itemcget tagOrId option\"",		    (char *) NULL);	    return TCL_ERROR;	}	itemPtr = StartTagSearch(canvasPtr, argv[2], &search);	if (itemPtr != NULL) {	    result = Tk_ConfigureValue(canvasPtr->interp, canvasPtr->tkwin,		    itemPtr->typePtr->configSpecs, (char *) itemPtr,		    argv[3], 0);	}    } else if ((c == 'i') && (strncmp(argv[1], "itemconfigure", length) == 0)	    && (length >= 6)) {	if (argc < 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " itemconfigure tagOrId ?option value ...?\"",		    (char *) NULL);	    goto error;	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    if (argc == 3) {		result = Tk_ConfigureInfo(canvasPtr->interp, canvasPtr->tkwin,			itemPtr->typePtr->configSpecs, (char *) itemPtr,			(char *) NULL, 0);	    } else if (argc == 4) {		result = Tk_ConfigureInfo(canvasPtr->interp, canvasPtr->tkwin,			itemPtr->typePtr->configSpecs, (char *) itemPtr,			argv[3], 0);	    } else {		Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,			itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);		result = (*itemPtr->typePtr->configProc)(interp,			(Tk_Canvas) canvasPtr, itemPtr, argc-3, argv+3,			TK_CONFIG_ARGV_ONLY);		Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,			itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);		canvasPtr->flags |= REPICK_NEEDED;	    }	    if ((result != TCL_OK) || (argc < 5)) {		break;	    }	}    } else if ((c == 'l') && (strncmp(argv[1], "lower", length) == 0)) {	Tk_Item *prevPtr;	if ((argc != 3) && (argc != 4)) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " lower tagOrId ?belowThis?\"",		    (char *) NULL);	    goto error;	}	/*	 * First find the item just after which we'll insert the	 * named items.	 */	if (argc == 3) {	    prevPtr = NULL;	} else {	    prevPtr = StartTagSearch(canvasPtr, argv[3], &search);	    if (prevPtr != NULL) {		prevPtr = search.prevPtr;	    } else {		Tcl_AppendResult(interp, "tag \"", argv[3],			"\" doesn't match any items", (char *) NULL);		goto error;	    }	}	RelinkItems(canvasPtr, argv[2], prevPtr);    } else if ((c == 'm') && (strncmp(argv[1], "move", length) == 0)) {	double xAmount, yAmount;	if (argc != 5) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " move tagOrId xAmount yAmount\"",		    (char *) NULL);	    goto error;	}	if ((Tk_CanvasGetCoord(interp, (Tk_Canvas) canvasPtr, argv[3],		&xAmount) != TCL_OK) || (Tk_CanvasGetCoord(interp,		(Tk_Canvas) canvasPtr, argv[4], &yAmount) != TCL_OK)) {	    goto error;	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,		    itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);	    (void) (*itemPtr->typePtr->translateProc)((Tk_Canvas) canvasPtr,		    itemPtr,  xAmount, yAmount);	    Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,		    itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);	    canvasPtr->flags |= REPICK_NEEDED;	}    } else if ((c == 'p') && (strncmp(argv[1], "postscript", length) == 0)) {	result = TkCanvPostscriptCmd(canvasPtr, interp, argc, argv);    } else if ((c == 'r') && (strncmp(argv[1], "raise", length) == 0)) {	Tk_Item *prevPtr;	if ((argc != 3) && (argc != 4)) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " raise tagOrId ?aboveThis?\"",		    (char *) NULL);	    goto error;	}	/*	 * First find the item just after which we'll insert the	 * named items.	 */	if (argc == 3) {	    prevPtr = canvasPtr->lastItemPtr;	} else {	    prevPtr = NULL;	    for (itemPtr = StartTagSearch(canvasPtr, argv[3], &search);		    itemPtr != NULL; itemPtr = NextItem(&search)) {		prevPtr = itemPtr;	    }	    if (prevPtr == NULL) {		Tcl_AppendResult(interp, "tagOrId \"", argv[3],			"\" doesn't match any items", (char *) NULL);		goto error;	    }	}	RelinkItems(canvasPtr, argv[2], prevPtr);    } else if ((c == 's') && (strncmp(argv[1], "scale", length) == 0)	    && (length >= 3)) {	double xOrigin, yOrigin, xScale, yScale;	if (argc != 7) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " scale tagOrId xOrigin yOrigin xScale yScale\"",		    (char *) NULL);	    goto error;	}	if ((Tk_CanvasGetCoord(interp, (Tk_Canvas) canvasPtr,		    argv[3], &xOrigin) != TCL_OK)		|| (Tk_CanvasGetCoord(interp, (Tk_Canvas) canvasPtr,		    argv[4], &yOrigin) != TCL_OK)		|| (Tcl_GetDouble(interp, argv[5], &xScale) != TCL_OK)		|| (Tcl_GetDouble(interp, argv[6], &yScale) != TCL_OK)) {	    goto error;	}	if ((xScale == 0.0) || (yScale == 0.0)) {	    interp->result = "scale factor cannot be zero";	    goto error;	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,		    itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);	    (void) (*itemPtr->typePtr->scaleProc)((Tk_Canvas) canvasPtr,		    itemPtr, xOrigin, yOrigin, xScale, yScale);	    Tk_CanvasEventuallyRedraw((Tk_Canvas) canvasPtr,		    itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2);	    canvasPtr->flags |= REPICK_NEEDED;	}    } else if ((c == 's') && (strncmp(argv[1], "scan", length) == 0)	    && (length >= 3)) {	int x, y;	if (argc != 5) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " scan mark|dragto x y\"", (char *) NULL);	    goto error;	}	if ((Tcl_GetInt(interp, argv[3], &x) != TCL_OK)		|| (Tcl_GetInt(interp, argv[4], &y) != TCL_OK)){	    goto error;	}	if ((argv[2][0] == 'm')		&& (strncmp(argv[2], "mark", strlen(argv[2])) == 0)) {	    canvasPtr->scanX = x;	    canvasPtr->scanXOrigin = canvasPtr->xOrigin;	    canvasPtr->scanY = y;	    canvasPtr->scanYOrigin = canvasPtr->yOrigin;	} else if ((argv[2][0] == 'd')		&& (strncmp(argv[2], "dragto", strlen(argv[2])) == 0)) {	    int newXOrigin, newYOrigin, tmp;	    /*	     * Compute a new view origin for the canvas, amplifying the	     * mouse motion.	     */	    tmp = canvasPtr->scanXOrigin - 10*(x - canvasPtr->scanX)		    - canvasPtr->scrollX1;	    newXOrigin = canvasPtr->scrollX1 + tmp;	    tmp = canvasPtr->scanYOrigin - 10*(y - canvasPtr->scanY)		    - canvasPtr->scrollY1;	    newYOrigin = canvasPtr->scrollY1 + tmp;	    CanvasSetOrigin(canvasPtr, newXOrigin, newYOrigin);	} else {	    Tcl_AppendResult(interp, "bad scan option \"", argv[2],		    "\": must be mark or dragto", (char *) NULL);	    goto error;	}    } else if ((c == 's') && (strncmp(argv[1], "select", length) == 0)	    && (length >= 2)) {	int index;	if (argc < 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " select option ?tagOrId? ?arg?\"", (char *) NULL);	    goto error;	}	if (argc >= 4) {	    for (itemPtr = StartTagSearch(canvasPtr, argv[3], &search);		    itemPtr != NULL; itemPtr = NextItem(&search)) {		if ((itemPtr->typePtr->indexProc != NULL)			&& (itemPtr->typePtr->selectionProc != NULL)){		    break;		}	    }	    if (itemPtr == NULL) {		Tcl_AppendResult(interp,			"can't find an indexable and selectable item \"",			argv[3], "\"", (char *) NULL);		goto error;	    }	}	if (argc == 5) {	    if ((*itemPtr->typePtr->indexProc)(interp, (Tk_Canvas) canvasPtr,		    itemPtr, argv[4], &index) != TCL_OK) {		goto error;	    }	}	length = strlen(argv[2]);	c = argv[2][0];	if ((c == 'a') && (strncmp(argv[2], "adjust", length) == 0)) {	    if (argc != 5) {		Tcl_AppendResult(interp, "wrong # args: should be \"",			argv[0], " select adjust tagOrId index\"",			(char *) NULL);		goto error;	    }	    if (canvasPtr->textInfo.selItemPtr == itemPtr) {		if (index < (canvasPtr->textInfo.selectFirst			+ canvasPtr->textInfo.selectLast)/2) {		    canvasPtr->textInfo.selectAnchor =			    canvasPtr->textInfo.selectLast + 1;		} else {		    canvasPtr->textInfo.selectAnchor =

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -