/[dtapublic]/projs/trunk/shared_source/c_tk_base_7_5_w_mods/tkcanvas.h
ViewVC logotype

Contents of /projs/trunk/shared_source/c_tk_base_7_5_w_mods/tkcanvas.h

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:keywords Header

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25