comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/tkScrollbar.h @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
comparison
equal deleted inserted replaced
67:0e9998148a16 69:33d812a61356
1 /*
2 * tkScrollbar.h --
3 *
4 * Declarations of types and functions used to implement the scrollbar
5 * widget.
6 *
7 * Copyright (c) 1996 by Sun Microsystems, Inc.
8 *
9 * See the file "license.terms" for information on usage and redistribution of
10 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
11 */
12
13 #ifndef _TKSCROLLBAR
14 #define _TKSCROLLBAR
15
16 #ifndef _TKINT
17 #include "tkInt.h"
18 #endif
19
20 /*
21 * A data structure of the following type is kept for each scrollbar widget.
22 */
23
24 typedef struct TkScrollbar {
25 Tk_Window tkwin; /* Window that embodies the scrollbar. NULL
26 * means that the window has been destroyed
27 * but the data structures haven't yet been
28 * cleaned up.*/
29 Display *display; /* Display containing widget. Used, among
30 * other things, so that resources can be
31 * freed even after tkwin has gone away. */
32 Tcl_Interp *interp; /* Interpreter associated with scrollbar. */
33 Tcl_Command widgetCmd; /* Token for scrollbar's widget command. */
34 int vertical; /* Non-zero means vertical orientation
35 * requested, zero means horizontal. */
36 int width; /* Desired narrow dimension of scrollbar, in
37 * pixels. */
38 char *command; /* Command prefix to use when invoking
39 * scrolling commands. NULL means don't invoke
40 * commands. Malloc'ed. */
41 int commandSize; /* Number of non-NULL bytes in command. */
42 int repeatDelay; /* How long to wait before auto-repeating on
43 * scrolling actions (in ms). */
44 int repeatInterval; /* Interval between autorepeats (in ms). */
45 int jump; /* Value of -jump option. */
46
47 /*
48 * Information used when displaying widget:
49 */
50
51 int borderWidth; /* Width of 3-D borders. */
52 Tk_3DBorder bgBorder; /* Used for drawing background (all flat
53 * surfaces except for trough). */
54 Tk_3DBorder activeBorder; /* For drawing backgrounds when active (i.e.
55 * when mouse is positioned over element). */
56 XColor *troughColorPtr; /* Color for drawing trough. */
57 int relief; /* Indicates whether window as a whole is
58 * raised, sunken, or flat. */
59 int highlightWidth; /* Width in pixels of highlight to draw around
60 * widget when it has the focus. <= 0 means
61 * don't draw a highlight. */
62 XColor *highlightBgColorPtr;
63 /* Color for drawing traversal highlight area
64 * when highlight is off. */
65 XColor *highlightColorPtr; /* Color for drawing traversal highlight. */
66 int inset; /* Total width of all borders, including
67 * traversal highlight and 3-D border.
68 * Indicates how much interior stuff must be
69 * offset from outside edges to leave room for
70 * borders. */
71 int elementBorderWidth; /* Width of border to draw around elements
72 * inside scrollbar (arrows and slider). -1
73 * means use borderWidth. */
74 int arrowLength; /* Length of arrows along long dimension of
75 * scrollbar, including space for a small gap
76 * between the arrow and the slider.
77 * Recomputed on window size changes. */
78 int sliderFirst; /* Pixel coordinate of top or left edge of
79 * slider area, including border. */
80 int sliderLast; /* Coordinate of pixel just after bottom or
81 * right edge of slider area, including
82 * border. */
83 int activeField; /* Names field to be displayed in active
84 * colors, such as TOP_ARROW, or 0 for no
85 * field. */
86 int activeRelief; /* Value of -activeRelief option: relief to
87 * use for active element. */
88
89 /*
90 * Information describing the application related to the scrollbar. This
91 * information is provided by the application by invoking the "set" widget
92 * command. This information can now be provided in two ways: the "old"
93 * form (totalUnits, windowUnits, firstUnit, and lastUnit), or the "new"
94 * form (firstFraction and lastFraction). FirstFraction and lastFraction
95 * will always be valid, but the old-style information is only valid if
96 * the NEW_STYLE_COMMANDS flag is 0.
97 */
98
99 int totalUnits; /* Total dimension of application, in units.
100 * Valid only if the NEW_STYLE_COMMANDS flag
101 * isn't set. */
102 int windowUnits; /* Maximum number of units that can be
103 * displayed in the window at once. Valid only
104 * if the NEW_STYLE_COMMANDS flag isn't set. */
105 int firstUnit; /* Number of last unit visible in
106 * application's window. Valid only if the
107 * NEW_STYLE_COMMANDS flag isn't set. */
108 int lastUnit; /* Index of last unit visible in window.
109 * Valid only if the NEW_STYLE_COMMANDS flag
110 * isn't set. */
111 double firstFraction; /* Position of first visible thing in window,
112 * specified as a fraction between 0 and
113 * 1.0. */
114 double lastFraction; /* Position of last visible thing in window,
115 * specified as a fraction between 0 and
116 * 1.0. */
117
118 /*
119 * Miscellaneous information:
120 */
121
122 Tk_Cursor cursor; /* Current cursor for window, or NULL. */
123 char *takeFocus; /* Value of -takefocus option; not used in the
124 * C code, but used by keyboard traversal
125 * scripts. Malloc'ed, but may be NULL. */
126 int flags; /* Various flags; see below for
127 * definitions. */
128 } TkScrollbar;
129
130 /*
131 * Legal values for "activeField" field of Scrollbar structures. These are
132 * also the return values from the ScrollbarPosition function.
133 */
134
135 #define OUTSIDE 0
136 #define TOP_ARROW 1
137 #define TOP_GAP 2
138 #define SLIDER 3
139 #define BOTTOM_GAP 4
140 #define BOTTOM_ARROW 5
141
142 /*
143 * Flag bits for scrollbars:
144 *
145 * REDRAW_PENDING: Non-zero means a DoWhenIdle handler has
146 * already been queued to redraw this window.
147 * NEW_STYLE_COMMANDS: Non-zero means the new style of commands
148 * should be used to communicate with the widget:
149 * ".t yview scroll 2 lines", instead of
150 * ".t yview 40", for example.
151 * GOT_FOCUS: Non-zero means this window has the input
152 * focus.
153 */
154
155 #define REDRAW_PENDING 1
156 #define NEW_STYLE_COMMANDS 2
157 #define GOT_FOCUS 4
158
159 /*
160 * Declaration of scrollbar class functions structure
161 * and default scrollbar width, for use in configSpec.
162 */
163
164 MODULE_SCOPE const Tk_ClassProcs tkpScrollbarProcs;
165 MODULE_SCOPE char tkDefScrollbarWidth[TCL_INTEGER_SPACE];
166
167 /*
168 * Declaration of functions used in the implementation of the scrollbar
169 * widget.
170 */
171
172 MODULE_SCOPE void TkScrollbarEventProc(ClientData clientData,
173 XEvent *eventPtr);
174 MODULE_SCOPE void TkScrollbarEventuallyRedraw(TkScrollbar *scrollPtr);
175 MODULE_SCOPE void TkpComputeScrollbarGeometry(TkScrollbar *scrollPtr);
176 MODULE_SCOPE TkScrollbar *TkpCreateScrollbar(Tk_Window tkwin);
177 MODULE_SCOPE void TkpDestroyScrollbar(TkScrollbar *scrollPtr);
178 MODULE_SCOPE void TkpDisplayScrollbar(ClientData clientData);
179 MODULE_SCOPE void TkpConfigureScrollbar(TkScrollbar *scrollPtr);
180 MODULE_SCOPE int TkpScrollbarPosition(TkScrollbar *scrollPtr,
181 int x, int y);
182
183 #endif /* _TKSCROLLBAR */