📄 tkcanvas.h
字号:
* these numbers determine the size and * location of the sliders on scrollbars). * Units are pixels in canvas coords. */ char *regionString; /* The option string from which scrollX1 * etc. are derived. Malloc'ed. */ int scrollIncrement; /* The number of canvas units that the * picture shifts when a scrollbar up or * down arrow is pressed. */ /* * Information used for scanning: */ int scanX; /* X-position at which scan started (e.g. * button was pressed here). */ int scanXOrigin; /* Value of xOrigin field when scan started. */ int scanY; /* Y-position at which scan started (e.g. * button was pressed here). */ int scanYOrigin; /* Value of yOrigin field when scan started. */ /* * Information used to speed up searches by remembering the last item * created or found with an item id search. */ Tk_Item *hotPtr; /* Pointer to "hot" item (one that's been * recently used. NULL means there's no * hot item. */ Tk_Item *hotPrevPtr; /* Pointer to predecessor to hotPtr (NULL * means item is first in list). This is * only a hint and may not really be hotPtr's * predecessor. */ /* * Miscellaneous information: */ Cursor cursor; /* Current cursor for window, or None. */ double pixelsPerMM; /* Scale factor between MM and pixels; * used when converting coordinates. */ int flags; /* Various flags; see below for * definitions. */ int nextId; /* Number to use as id for next item * created in widget. */} Tk_Canvas;/* * Flag bits for canvases: * * REDRAW_PENDING - 1 means a DoWhenIdle handler has already * been created to redraw some or all of the * canvas. * REPICK_NEEDED - 1 means DisplayCanvas should pick a new * current item before redrawing the canvas. * GOT_FOCUS - 1 means the focus is currently in this * widget, so should draw the insertion cursor. * CURSOR_ON - 1 means the insertion cursor is in the "on" * phase of its blink cycle. 0 means either * we don't have the focus or the cursor is in * the "off" phase of its cycle. * UPDATE_SCROLLBARS - 1 means the scrollbars should get updated * as part of the next display operation. */#define REDRAW_PENDING 1#define REPICK_NEEDED 2#define GOT_FOCUS 4#define CURSOR_ON 8#define UPDATE_SCROLLBARS 0x10/* * Records of the following type are used to describe a type of * item (e.g. lines, circles, etc.) that can form part of a * canvas widget. */typedef int Tk_ItemCreateProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv));typedef int Tk_ItemConfigureProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv, int flags));typedef int Tk_ItemCoordProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv));typedef void Tk_ItemDeleteProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr));typedef void Tk_ItemDisplayProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, Drawable dst));typedef double Tk_ItemPointProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *pointPtr));typedef int Tk_ItemAreaProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *rectPtr));typedef int Tk_ItemPostscriptProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, Tk_PostscriptInfo *psInfoPtr));typedef void Tk_ItemScaleProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double originX, double originY, double scaleX, double scaleY));typedef void Tk_ItemTranslateProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double deltaX, double deltaY));typedef int Tk_ItemIndexProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, char *indexString, int *indexPtr));typedef void Tk_ItemCursorProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int index));typedef int Tk_ItemSelectionProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int offset, char *buffer, int maxBytes));typedef int Tk_ItemInsertProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int beforeThis, char *string));typedef int Tk_ItemDCharsProc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int first, int last));typedef struct Tk_ItemType { char *name; /* The name of this type of item, such * as "line". */ int itemSize; /* Total amount of space needed for * item's record. */ Tk_ItemCreateProc *createProc; /* Procedure to create a new item of * this type. */ Tk_ConfigSpec *configSpecs; /* Pointer to array of configuration * specs for this type. Used for * returning configuration info. */ Tk_ItemConfigureProc *configProc; /* Procedure to call to change * configuration options. */ Tk_ItemCoordProc *coordProc; /* Procedure to call to get and set * the item's coordinates. */ Tk_ItemDeleteProc *deleteProc; /* Procedure to delete existing item of * this type. */ Tk_ItemDisplayProc *displayProc; /* Procedure to display items of * this type. */ int alwaysRedraw; /* Non-zero means displayProc should * be called even when the item has * been moved off-screen. */ Tk_ItemPointProc *pointProc; /* Computes distance from item to * a given point. */ Tk_ItemAreaProc *areaProc; /* Computes whether item is inside, * outside, or overlapping an area. */ Tk_ItemPostscriptProc *postscriptProc; /* Procedure to write a Postscript * description for items of this * type. */ Tk_ItemScaleProc *scaleProc; /* Procedure to rescale items of * this type. */ Tk_ItemTranslateProc *translateProc;/* Procedure to translate items of * this type. */ Tk_ItemIndexProc *indexProc; /* Procedure to determine index of * indicated character. NULL if * item doesn't support indexing. */ Tk_ItemCursorProc *icursorProc; /* Procedure to set insert cursor pos. * to just before a given position. */ Tk_ItemSelectionProc *selectionProc;/* Procedure to return selection (in * STRING format) when it is in this * item. */ Tk_ItemInsertProc *insertProc; /* Procedure to insert something into * an item. */ Tk_ItemDCharsProc *dCharsProc; /* Procedure to delete characters * from an item. */ struct Tk_ItemType *nextPtr; /* Used to link types together into * a list. */} Tk_ItemType;/* * Macros to transform a point from double-precision canvas coordinates * to integer pixel coordinates in the pixmap where redisplay is being * done. */#define SCREEN_X(canvasPtr, x) \ (((int) ((x) + (((x) > 0) ? 0.5 : -0.5))) - (canvasPtr)->drawableXOrigin)#define SCREEN_Y(canvasPtr, y) \ (((int) ((y) + (((y) > 0) ? 0.5 : -0.5))) - (canvasPtr)->drawableYOrigin)/* * Canvas-related variables that are shared among Tk modules but not * exported to the outside world: */extern Tk_CustomOption tkCanvasTagsOption;/* * Canvas-related procedures that are shared among Tk modules but not * exported to the outside world: */extern void TkBezierScreenPoints _ANSI_ARGS_((Tk_Canvas *canvasPtr, double control[], int numSteps, XPoint *xPointPtr));extern int TkCanvPostscriptCmd _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tcl_Interp *interp, int argc, char **argv));extern int TkCanvPsBitmap _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_PostscriptInfo *psInfoPtr, Pixmap bitmap));extern int TkCanvPsColor _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_PostscriptInfo *psInfoPtr, XColor *colorPtr));extern int TkCanvPsFont _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_PostscriptInfo *psInfoPtr, XFontStruct *fontStructPtr));extern void TkCanvPsPath _ANSI_ARGS_((Tcl_Interp *interp, double *coordPtr, int numPoints, Tk_PostscriptInfo *psInfoPtr));extern int TkCanvPsStipple _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_PostscriptInfo *psInfoPtr, Pixmap bitmap, int filled));extern double TkCanvPsY _ANSI_ARGS_((Tk_PostscriptInfo *psInfoPtr, double y));extern void TkFillPolygon _ANSI_ARGS_((Tk_Canvas *canvasPtr, double *coordPtr, int numPoints, Drawable drawable, GC gc));extern int TkGetCanvasCoord _ANSI_ARGS_((Tk_Canvas *canvasPtr, char *string, double *doublePtr));extern void TkIncludePoint _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *pointPtr));extern int TkMakeBezierCurve _ANSI_ARGS_((Tk_Canvas *canvasPtr, double *pointPtr, int numPoints, int numSteps, XPoint xPoints[], double dblPoints[]));#endif /* _TKCANVAS */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -