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

📄 tkcanvas.c

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 C
📖 第 1 页 / 共 5 页
字号:
	    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)(canvasPtr, itemPtr,		    argv[3], &index) != TCL_OK) {		goto error;	    }	    (*itemPtr->typePtr->icursorProc)(canvasPtr, itemPtr, index);	    if ((itemPtr == canvasPtr->focusItemPtr)		    && (canvasPtr->flags & CURSOR_ON)) {		EventuallyRedrawArea(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)(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)(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.	     */	    EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1,		    itemPtr->x2, itemPtr->y2);	    result = (*itemPtr->typePtr->insertProc)(canvasPtr, itemPtr,		    beforeThis, argv[4]);	    EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1,		    itemPtr->x2, itemPtr->y2);	    if (result != TCL_OK) {		goto error;	    }	}    } else if ((c == 'i') && (strncmp(argv[1], "itemconfigure", length) == 0)	    && (length >= 2)) {	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 {		EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1,			itemPtr->x2, itemPtr->y2);		result = (*itemPtr->typePtr->configProc)(canvasPtr, itemPtr,			argc-3, argv+3, TK_CONFIG_ARGV_ONLY);		EventuallyRedrawArea(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 ((TkGetCanvasCoord(canvasPtr, argv[3], &xAmount) != TCL_OK)		|| (TkGetCanvasCoord(canvasPtr, argv[4], &yAmount) != TCL_OK)) {	    goto error;	}	for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search);		itemPtr != NULL; itemPtr = NextItem(&search)) {	    EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1,		itemPtr->x2, itemPtr->y2);	    (void) (*itemPtr->typePtr->translateProc)(canvasPtr, itemPtr,		    xAmount, yAmount);	    EventuallyRedrawArea(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 ((TkGetCanvasCoord(canvasPtr, argv[3], &xOrigin) != TCL_OK)		|| (TkGetCanvasCoord(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)) {	    EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1,		itemPtr->x2, itemPtr->y2);	    (void) (*itemPtr->typePtr->scaleProc)(canvasPtr, itemPtr,		    xOrigin, yOrigin, xScale, yScale);	    EventuallyRedrawArea(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 and rounding to the nearest multiple of the	     * scroll increment.	     */	    tmp = canvasPtr->scanXOrigin - 10*(x - canvasPtr->scanX)		    - canvasPtr->scrollX1;	    if (tmp >= 0) {		tmp = (tmp + canvasPtr->scrollIncrement/2)			/canvasPtr->scrollIncrement;	    } else {		tmp = -(((-tmp) + canvasPtr->scrollIncrement/2)			/canvasPtr->scrollIncrement);	    }	    newXOrigin = canvasPtr->scrollX1 + tmp*canvasPtr->scrollIncrement;	    tmp = canvasPtr->scanYOrigin - 10*(y - canvasPtr->scanY)		    - canvasPtr->scrollY1;	    if (tmp >= 0) {		tmp = (tmp + canvasPtr->scrollIncrement/2)			/canvasPtr->scrollIncrement;	    } else {		tmp = -(((-tmp) + canvasPtr->scrollIncrement/2)			/canvasPtr->scrollIncrement);	    }	    newYOrigin = canvasPtr->scrollY1 + tmp*canvasPtr->scrollIncrement;	    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)(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->selItemPtr == itemPtr) {		if (index < (canvasPtr->selectFirst			+ canvasPtr->selectLast)/2) {		    canvasPtr->selectAnchor = canvasPtr->selectLast + 1;		} else {		    canvasPtr->selectAnchor = canvasPtr->selectFirst;		}	    }	    CanvasSelectTo(canvasPtr, itemPtr, index);	} else if ((c == 'c') && (argv[2] != NULL)		&& (strncmp(argv[2], "clear", length) == 0)) {	    if (argc != 3) {		Tcl_AppendResult(interp, "wrong # args: should be \"",			argv[0], " select clear\"", (char *) NULL);		goto error;	    }	    if (canvasPtr->selItemPtr != NULL) {		EventuallyRedrawArea(canvasPtr, canvasPtr->selItemPtr->x1,		    canvasPtr->selItemPtr->y1, canvasPtr->selItemPtr->x2,		    canvasPtr->selItemPtr->y2);		canvasPtr->selItemPtr = NULL;	    }	    goto done;	} else if ((c == 'f') && (strncmp(argv[2], "from", length) == 0)) {	    if (argc != 5) {		Tcl_AppendResult(interp, "wrong # args: should be \"",			argv[0], " select from tagOrId index\"",			(char *) NULL);		goto error;	    }	    canvasPtr->anchorItemPtr = itemPtr;	    canvasPtr->selectAnchor = index;	} else if ((c == 'i') && (strncmp(argv[2], "item", length) == 0)) {	    if (argc != 3) {		Tcl_AppendResult(interp, "wrong # args: should be \"",			argv[0], " select item\"", (char *) NULL);		goto error;	    }	    if (canvasPtr->selItemPtr != NULL) {		sprintf(interp->result, "%d", canvasPtr->selItemPtr->id);	    }	} else if ((c == 't') && (strncmp(argv[2], "to", length) == 0)) {	    if (argc != 5) {		Tcl_AppendResult(interp, "wrong # args: should be \"",			argv[0], " select to tagOrId index\"",			(char *) NULL);		goto error;	    }	    CanvasSelectTo(canvasPtr, itemPtr, index);	} else {	    Tcl_AppendResult(interp, "bad select option \"", argv[2],		    "\": must be adjust, clear, from, item, or to",		    (char *) NULL);	    goto error;	}    } else if ((c == 't') && (strncmp(argv[1], "type", length) == 0)) {	if (argc != 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " type tag\"", (char *) NULL);	    goto error;	}	itemPtr = StartTagSearch(canvasPtr, argv[2], &search);	if (itemPtr != NULL) {	    interp->result = itemPtr->typePtr->name;	}    } else if ((c == 'x') && (strncmp(argv[1], "xview", length) == 0)) {	int index;	if (argc != 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " xview index\"", (char *) NULL);	    goto error;	}	if (Tcl_GetInt(canvasPtr->interp, argv[2], &index) != TCL_OK) {	    goto error;	}	CanvasSetOrigin(canvasPtr,		(canvasPtr->scrollX1 + index*canvasPtr->scrollIncrement),		canvasPtr->yOrigin);    } else if ((c == 'y') && (strncmp(argv[1], "yview", length) == 0)) {	int index;	if (argc != 3) {	    Tcl_AppendResult(interp, "wrong # args: should be \"",		    argv[0], " yview index\"", (char *) NULL);	    goto error;	}	if (Tcl_GetInt(canvasPtr->interp, argv[2], &index) != TCL_OK) {	    goto error;	}	CanvasSetOrigin(canvasPtr, canvasPtr->xOrigin,		(canvasPtr->scrollY1 + index*canvasPtr->scrollIncrement));    } else {	Tcl_AppendResult(interp, "bad option \"", argv[1],

⌨️ 快捷键说明

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