/usr/lib/perl5/Tk/pTk/tkCanvas.h is in perl-tk 1:804.031-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 | /*
* tkCanvas.h --
*
* Declarations shared among all the files that implement
* canvas widgets.
*
* Copyright (c) 1991-1994 The Regents of the University of California.
* Copyright (c) 1994-1995 Sun Microsystems, Inc.
* Copyright (c) 1998 by Scriptics Corporation.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
* RCS: @(#) $Id: tkCanvas.h,v 1.7 2003/01/08 23:02:33 drh Exp $
*/
#ifndef _TKCANVAS
#define _TKCANVAS
#ifndef _TK
#include "tk.h"
#endif
#ifndef USE_OLD_TAG_SEARCH
typedef struct TagSearchExpr_s TagSearchExpr;
struct TagSearchExpr_s {
TagSearchExpr *next; /* for linked lists of expressions - used in bindings */
Tk_Uid uid; /* the uid of the whole expression */
Tk_Uid *uids; /* expresion compiled to an array of uids */
int allocated; /* available space for array of uids */
int length; /* length of expression */
int index; /* current position in expression evaluation */
int match; /* this expression matches event's item's tags*/
};
#endif /* not USE_OLD_TAG_SEARCH */
/*
* The record below describes a canvas widget. It is made available
* to the item procedures so they can access certain shared fields such
* as the overall displacement and scale factor for the canvas.
*/
typedef struct TkCanvas {
Tk_Window tkwin; /* Window that embodies the canvas. NULL
* means that the window has been destroyed
* but the data structures haven't yet been
* cleaned up.*/
Display *display; /* Display containing widget; needed, among
* other things, to release resources after
* tkwin has already gone away. */
Tcl_Interp *interp; /* Interpreter associated with canvas. */
Tcl_Command widgetCmd; /* Token for canvas's widget command. */
Tk_Item *firstItemPtr; /* First in list of all items in canvas,
* or NULL if canvas empty. */
Tk_Item *lastItemPtr; /* Last in list of all items in canvas,
* or NULL if canvas empty. */
/*
* Information used when displaying widget:
*/
int borderWidth; /* Width of 3-D border around window. */
Tk_3DBorder bgBorder; /* Used for canvas background. */
int relief; /* Indicates whether window as a whole is
* raised, sunken, or flat. */
int highlightWidth; /* Width in pixels of highlight to draw
* around widget when it has the focus.
* <= 0 means don't draw a highlight. */
XColor *highlightBgColorPtr;
/* Color for drawing traversal highlight
* area when highlight is off. */
XColor *highlightColorPtr; /* Color for drawing traversal highlight. */
int inset; /* Total width of all borders, including
* traversal highlight and 3-D border.
* Indicates how much interior stuff must
* be offset from outside edges to leave
* room for borders. */
GC pixmapGC; /* Used to copy bits from a pixmap to the
* screen and also to clear the pixmap. */
int width, height; /* Dimensions to request for canvas window,
* specified in pixels. */
int redrawX1, redrawY1; /* Upper left corner of area to redraw,
* in pixel coordinates. Border pixels
* are included. Only valid if
* REDRAW_PENDING flag is set. */
int redrawX2, redrawY2; /* Lower right corner of area to redraw,
* in integer canvas coordinates. Border
* pixels will *not* be redrawn. */
int confine; /* Non-zero means constrain view to keep
* as much of canvas visible as possible. */
/*
* Information used to manage the selection and insertion cursor:
*/
Tk_CanvasTextInfo textInfo; /* Contains lots of fields; see tk.h for
* details. This structure is shared with
* the code that implements individual items. */
int insertOnTime; /* Number of milliseconds cursor should spend
* in "on" state for each blink. */
int insertOffTime; /* Number of milliseconds cursor should spend
* in "off" state for each blink. */
Tcl_TimerToken insertBlinkHandler;
/* Timer handler used to blink cursor on and
* off. */
/*
* Transformation applied to canvas as a whole: to compute screen
* coordinates (X,Y) from canvas coordinates (x,y), do the following:
*
* X = x - xOrigin;
* Y = y - yOrigin;
*/
int xOrigin, yOrigin; /* Canvas coordinates corresponding to
* upper-left corner of window, given in
* canvas pixel units. */
int drawableXOrigin, drawableYOrigin;
/* During redisplay, these fields give the
* canvas coordinates corresponding to
* the upper-left corner of the drawable
* where items are actually being drawn
* (typically a pixmap smaller than the
* whole window). */
/*
* Information used for event bindings associated with items.
*/
Tk_BindingTable bindingTable;
/* Table of all bindings currently defined
* for this canvas. NULL means that no
* bindings exist, so the table hasn't been
* created. Each "object" used for this
* table is either a Tk_Uid for a tag or
* the address of an item named by id. */
Tk_Item *currentItemPtr; /* The item currently containing the mouse
* pointer, or NULL if none. */
Tk_Item *newCurrentPtr; /* The item that is about to become the
* current one, or NULL. This field is
* used to detect deletions of the new
* current item pointer that occur during
* Leave processing of the previous current
* item. */
double closeEnough; /* The mouse is assumed to be inside an
* item if it is this close to it. */
XEvent pickEvent; /* The event upon which the current choice
* of currentItem is based. Must be saved
* so that if the currentItem is deleted,
* can pick another. */
int state; /* Last known modifier state. Used to
* defer picking a new current object
* while buttons are down. */
/*
* Information used for managing scrollbars:
*/
LangCallback *xScrollCmd; /* Command prefix for communicating with
* horizontal scrollbar. NULL means no
* horizontal scrollbar. Malloc'ed*/
LangCallback *yScrollCmd; /* Command prefix for communicating with
* vertical scrollbar. NULL means no
* vertical scrollbar. Malloc'ed*/
int scrollX1, scrollY1, scrollX2, scrollY2;
/* These four coordinates define the region
* that is the 100% area for scrolling (i.e.
* these numbers determine the size and
* location of the sliders on scrollbars).
* Units are pixels in canvas coords. */
Tcl_Obj * regionArg; /* The option string from which scrollX1
* etc. are derived. Malloc'ed. */
int xScrollIncrement; /* If >0, defines a grid for horizontal
* scrolling. This is the size of the "unit",
* and the left edge of the screen will always
* lie on an even unit boundary. */
int yScrollIncrement; /* If >0, defines a grid for horizontal
* scrolling. This is the size of the "unit",
* and the left edge of the screen will always
* lie on an even unit boundary. */
/*
* 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:
*/
Tk_Cursor cursor; /* Current cursor for window, or None. */
char *takeFocus; /* Value of -takefocus option; not used in
* the C code, but used by keyboard traversal
* scripts. Malloc'ed, but may be NULL. */
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_PostscriptInfo psInfo;
/* Pointer to information used for generating
* Postscript for the canvas. NULL means
* no Postscript is currently being
* generated. */
Tcl_HashTable idTable; /* Table of integer indices. */
/*
* Additional information, added by the 'dash'-patch
*/
Tk_State canvas_state; /* state of canvas */
Tk_Tile tile;
Tk_Tile disabledTile;
Tk_TSOffset tsoffset;
#ifndef USE_OLD_TAG_SEARCH
TagSearchExpr *bindTagExprs; /* linked list of tag expressions used in bindings */
#endif
/* pTk additions */
Tk_Item *activeGroup; /* Which group item is active */
Tcl_Obj *updateCmds;
} TkCanvas;
/*
* Flag bits for canvases:
*
* REDRAW_PENDING - 1 means a DoWhenIdle handler has already
* been created to redraw some or all of the
* canvas.
* REDRAW_BORDERS - 1 means that the borders need to be redrawn
* during the next redisplay operation.
* 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
* and traversal highlight.
* 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.
* LEFT_GRABBED_ITEM - 1 means that the mouse left the current
* item while a grab was in effect, so we
* didn't change canvasPtr->currentItemPtr.
* REPICK_IN_PROGRESS - 1 means PickCurrentItem is currently
* executing. If it should be called recursively,
* it should simply return immediately.
* BBOX_NOT_EMPTY - 1 means that the bounding box of the area
* that should be redrawn is not empty.
*/
#define REDRAW_PENDING 1
#define REDRAW_BORDERS 2
#define REPICK_NEEDED 4
#define GOT_FOCUS 8
#define CURSOR_ON 0x10
#define UPDATE_SCROLLBARS 0x20
#define LEFT_GRABBED_ITEM 0x40
#define REPICK_IN_PROGRESS 0x100
#define BBOX_NOT_EMPTY 0x200
/*
* Flag bits for canvas items (redraw_flags):
*
* FORCE_REDRAW - 1 means that the new coordinates of some
* item are not yet registered using
* Tk_CanvasEventuallyRedraw(). It should still
* be done by the general canvas code.
*/
#define FORCE_REDRAW 8
#define NEEDS_DISPLAY 16
/*
* Canvas-related procedures that are shared among Tk modules but not
* exported to the outside world:
*/
extern int TkCanvPostscriptCmd _ANSI_ARGS_((TkCanvas *canvasPtr,
Tcl_Interp *interp, int argc, CONST84 Tcl_Obj *CONST *objv));
/*
* Other procedures that are shared among Tk canvas modules but not exported
* to the outside world:
*/
extern int TkCanvTranslatePath _ANSI_ARGS_((TkCanvas *canvPtr,
int numVertex, double *coordPtr, int closed,
XPoint *outPtr));
#define Tk_CanvasActiveGroup(canvas) ((TkCanvas *) (canvas))->activeGroup
#define Tk_CanvasGroupHidden(canvas,itemPtr) ( \
( Tk_CanvasActiveGroup(canvas) && \
(itemPtr)->group != Tk_CanvasActiveGroup(canvas)) || \
( (itemPtr)->group && \
(itemPtr)->group != Tk_CanvasActiveGroup(canvas) && \
(itemPtr)->group->state != TK_STATE_ACTIVE ))
#define Tk_GetItemState(canvas,itemPtr) \
( \
(0 && Tk_CanvasGroupHidden(canvas,itemPtr)) \
? TK_STATE_HIDDEN \
: (((itemPtr)->state == TK_STATE_NULL) \
? ((TkCanvas *)(canvas))->canvas_state \
: (itemPtr)->state \
) \
)
EXTERN void TkGroupRemoveItem _ANSI_ARGS_((Tk_Item *item));
#endif /* _TKCANVAS */
|