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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 42 - (hide annotations) (download)
Fri Oct 14 01:50:00 2016 UTC (7 years, 7 months ago) by dashley
Original Path: projs/trunk/shared_source/tk_base/tkcanvas.h
File MIME type: text/plain
File size: 12518 byte(s)
Move shared source code to commonize.
1 dashley 25 /* $Header: /cvsroot/esrg/sfesrg/esrgpcpj/shared/tk_base/tkcanvas.h,v 1.1.1.1 2001/06/13 04:56:06 dtashley Exp $ */
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    
317     /* $History: tkCanvas.h $
318     *
319     * ***************** Version 1 *****************
320     * User: Dtashley Date: 1/02/01 Time: 2:36a
321     * Created in $/IjuScripter, IjuConsole/Source/Tk Base
322     * Initial check-in.
323     */
324    
325     /* End of TKCANVAS.H */

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25