1 /*
2  * tk.h --
3  *
4  *	Declarations for Tk-related things that are visible
5  *	outside of the Tk module itself.
6  *
7  * Copyright (c) 1989-1994 The Regents of the University of California.
8  * Copyright (c) 1994 The Australian National University.
9  * Copyright (c) 1994-1996 Sun Microsystems, Inc.
10  *
11  * See the file "license.terms" for information on usage and redistribution
12  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
13  *
14  * SCCS: @(#) tk.h 1.195 97/01/29 17:45:58
15  */
16 
17 #ifndef _TK
18 #define _TK
19 
20 /*
21  * When version numbers change here, must also go into the following files
22  * and update the version numbers:
23  *
24  * library/tk.tcl
25  * unix/configure.in
26  * unix/Makefile.in
27  * win/makefile.bc
28  * win/makefile.vc
29  *
30  * The release level should be  0 for alpha, 1 for beta, and 2 for
31  * final/patch.  The release serial value is the number that follows the
32  * "a", "b", or "p" in the patch level; for example, if the patch level
33  * is 4.3b2, TK_RELEASE_SERIAL is 2.  It restarts at 1 whenever the
34  * release level is changed, except for the final release, which should
35  * be 0.
36  */
37 
38 #define TK_MAJOR_VERSION   4
39 #define TK_MINOR_VERSION   2
40 #define TK_RELEASE_LEVEL   2
41 #define TK_RELEASE_SERIAL  2
42 
43 #define TK_VERSION "4.2"
44 #define TK_PATCH_LEVEL "4.2p2"
45 
46 /*
47  * A special definition used to allow this header file to be included
48  * in resource files.
49  */
50 
51 #ifndef RESOURCE_INCLUDED
52 
53 /*
54  * The following definitions set up the proper options for Macintosh
55  * compilers.  We use this method because there is no autoconf equivalent.
56  */
57 
58 #ifdef MAC_TCL
59 #   ifndef REDO_KEYSYM_LOOKUP
60 #	define REDO_KEYSYM_LOOKUP
61 #   endif
62 #endif
63 
64 #ifndef _TCL
65 #   include <tcl.h>
66 #endif
67 #ifndef _XLIB_H
68 #   ifdef MAC_TCL
69 #	include <Xlib.h>
70 #	include <X.h>
71 #   else
72 #       if _PACKAGE_ast
73 #	    include <Xlib.h>
74 #	else
75 #	    include <X11/Xlib.h>
76 #	endif
77 #   endif
78 #endif
79 #ifdef __STDC__
80 #   include <stddef.h>
81 #endif
82 
83 /*
84  * Decide whether or not to use input methods.
85  */
86 
87 #ifdef XNQueryInputStyle
88 #define TK_USE_INPUT_METHODS
89 #endif
90 
91 /*
92  * Dummy types that are used by clients:
93  */
94 
95 typedef struct Tk_BindingTable_ *Tk_BindingTable;
96 typedef struct Tk_Canvas_ *Tk_Canvas;
97 typedef struct Tk_Cursor_ *Tk_Cursor;
98 typedef struct Tk_ErrorHandler_ *Tk_ErrorHandler;
99 typedef struct Tk_Image__ *Tk_Image;
100 typedef struct Tk_ImageMaster_ *Tk_ImageMaster;
101 typedef struct Tk_Window_ *Tk_Window;
102 typedef struct Tk_3DBorder_ *Tk_3DBorder;
103 
104 /*
105  * Additional types exported to clients.
106  */
107 
108 typedef char *Tk_Uid;
109 
110 /*
111  * Structure used to specify how to handle argv options.
112  */
113 
114 typedef struct {
115     char *key;		/* The key string that flags the option in the
116 			 * argv array. */
117     int type;		/* Indicates option type;  see below. */
118     char *src;		/* Value to be used in setting dst;  usage
119 			 * depends on type. */
120     char *dst;		/* Address of value to be modified;  usage
121 			 * depends on type. */
122     char *help;		/* Documentation message describing this option. */
123 } Tk_ArgvInfo;
124 
125 /*
126  * Legal values for the type field of a Tk_ArgvInfo: see the user
127  * documentation for details.
128  */
129 
130 #define TK_ARGV_CONSTANT		15
131 #define TK_ARGV_INT			16
132 #define TK_ARGV_STRING			17
133 #define TK_ARGV_UID			18
134 #define TK_ARGV_REST			19
135 #define TK_ARGV_FLOAT			20
136 #define TK_ARGV_FUNC			21
137 #define TK_ARGV_GENFUNC			22
138 #define TK_ARGV_HELP			23
139 #define TK_ARGV_CONST_OPTION		24
140 #define TK_ARGV_OPTION_VALUE		25
141 #define TK_ARGV_OPTION_NAME_VALUE	26
142 #define TK_ARGV_END			27
143 
144 /*
145  * Flag bits for passing to Tk_ParseArgv:
146  */
147 
148 #define TK_ARGV_NO_DEFAULTS		0x1
149 #define TK_ARGV_NO_LEFTOVERS		0x2
150 #define TK_ARGV_NO_ABBREV		0x4
151 #define TK_ARGV_DONT_SKIP_FIRST_ARG	0x8
152 
153 /*
154  * Structure used to describe application-specific configuration
155  * options:  indicates procedures to call to parse an option and
156  * to return a text string describing an option.
157  */
158 
159 typedef int (Tk_OptionParseProc) _ANSI_ARGS_((ClientData clientData,
160 	Tcl_Interp *interp, Tk_Window tkwin, char *value, char *widgRec,
161 	int offset));
162 typedef char *(Tk_OptionPrintProc) _ANSI_ARGS_((ClientData clientData,
163 	Tk_Window tkwin, char *widgRec, int offset,
164 	Tcl_FreeProc **freeProcPtr));
165 
166 typedef struct Tk_CustomOption {
167     Tk_OptionParseProc *parseProc;	/* Procedure to call to parse an
168 					 * option and store it in converted
169 					 * form. */
170     Tk_OptionPrintProc *printProc;	/* Procedure to return a printable
171 					 * string describing an existing
172 					 * option. */
173     ClientData clientData;		/* Arbitrary one-word value used by
174 					 * option parser:  passed to
175 					 * parseProc and printProc. */
176 } Tk_CustomOption;
177 
178 /*
179  * Structure used to specify information for Tk_ConfigureWidget.  Each
180  * structure gives complete information for one option, including
181  * how the option is specified on the command line, where it appears
182  * in the option database, etc.
183  */
184 
185 typedef struct Tk_ConfigSpec {
186     int type;			/* Type of option, such as TK_CONFIG_COLOR;
187 				 * see definitions below.  Last option in
188 				 * table must have type TK_CONFIG_END. */
189     char *argvName;		/* Switch used to specify option in argv.
190 				 * NULL means this spec is part of a group. */
191     char *dbName;		/* Name for option in option database. */
192     char *dbClass;		/* Class for option in database. */
193     char *defValue;		/* Default value for option if not
194 				 * specified in command line or database. */
195     int offset;			/* Where in widget record to store value;
196 				 * use Tk_Offset macro to generate values
197 				 * for this. */
198     int specFlags;		/* Any combination of the values defined
199 				 * below;  other bits are used internally
200 				 * by tkConfig.c. */
201     Tk_CustomOption *customPtr;	/* If type is TK_CONFIG_CUSTOM then this is
202 				 * a pointer to info about how to parse and
203 				 * print the option.  Otherwise it is
204 				 * irrelevant. */
205 } Tk_ConfigSpec;
206 
207 /*
208  * Type values for Tk_ConfigSpec structures.  See the user
209  * documentation for details.
210  */
211 
212 #define TK_CONFIG_BOOLEAN	1
213 #define TK_CONFIG_INT		2
214 #define TK_CONFIG_DOUBLE	3
215 #define TK_CONFIG_STRING	4
216 #define TK_CONFIG_UID		5
217 #define TK_CONFIG_COLOR		6
218 #define TK_CONFIG_FONT		7
219 #define TK_CONFIG_BITMAP	8
220 #define TK_CONFIG_BORDER	9
221 #define TK_CONFIG_RELIEF	10
222 #define TK_CONFIG_CURSOR	11
223 #define TK_CONFIG_ACTIVE_CURSOR	12
224 #define TK_CONFIG_JUSTIFY	13
225 #define TK_CONFIG_ANCHOR	14
226 #define TK_CONFIG_SYNONYM	15
227 #define TK_CONFIG_CAP_STYLE	16
228 #define TK_CONFIG_JOIN_STYLE	17
229 #define TK_CONFIG_PIXELS	18
230 #define TK_CONFIG_MM		19
231 #define TK_CONFIG_WINDOW	20
232 #define TK_CONFIG_CUSTOM	21
233 #define TK_CONFIG_END		22
234 
235 /*
236  * Macro to use to fill in "offset" fields of Tk_ConfigInfos.
237  * Computes number of bytes from beginning of structure to a
238  * given field.
239  */
240 
241 #ifdef offsetof
242 #define Tk_Offset(type, field) ((int) offsetof(type, field))
243 #else
244 #define Tk_Offset(type, field) ((int) ((char *) &((type *) 0)->field))
245 #endif
246 
247 /*
248  * Possible values for flags argument to Tk_ConfigureWidget:
249  */
250 
251 #define TK_CONFIG_ARGV_ONLY	1
252 
253 /*
254  * Possible flag values for Tk_ConfigInfo structures.  Any bits at
255  * or above TK_CONFIG_USER_BIT may be used by clients for selecting
256  * certain entries.  Before changing any values here, coordinate with
257  * tkConfig.c (internal-use-only flags are defined there).
258  */
259 
260 #define TK_CONFIG_COLOR_ONLY		1
261 #define TK_CONFIG_MONO_ONLY		2
262 #define TK_CONFIG_NULL_OK		4
263 #define TK_CONFIG_DONT_SET_DEFAULT	8
264 #define TK_CONFIG_OPTION_SPECIFIED	0x10
265 #define TK_CONFIG_USER_BIT		0x100
266 
267 /*
268  * Enumerated type for describing actions to be taken in response
269  * to a restrictProc established by Tk_RestrictEvents.
270  */
271 
272 typedef enum {
273     TK_DEFER_EVENT, TK_PROCESS_EVENT, TK_DISCARD_EVENT
274 } Tk_RestrictAction;
275 
276 /*
277  * Priority levels to pass to Tk_AddOption:
278  */
279 
280 #define TK_WIDGET_DEFAULT_PRIO	20
281 #define TK_STARTUP_FILE_PRIO	40
282 #define TK_USER_DEFAULT_PRIO	60
283 #define TK_INTERACTIVE_PRIO	80
284 #define TK_MAX_PRIO		100
285 
286 /*
287  * Relief values returned by Tk_GetRelief:
288  */
289 
290 #define TK_RELIEF_RAISED	1
291 #define TK_RELIEF_FLAT		2
292 #define TK_RELIEF_SUNKEN	4
293 #define TK_RELIEF_GROOVE	8
294 #define TK_RELIEF_RIDGE		16
295 
296 /*
297  * "Which" argument values for Tk_3DBorderGC:
298  */
299 
300 #define TK_3D_FLAT_GC		1
301 #define TK_3D_LIGHT_GC		2
302 #define TK_3D_DARK_GC		3
303 
304 /*
305  * Special EnterNotify/LeaveNotify "mode" for use in events
306  * generated by tkShare.c.  Pick a high enough value that it's
307  * unlikely to conflict with existing values (like NotifyNormal)
308  * or any new values defined in the future.
309  */
310 
311 #define TK_NOTIFY_SHARE		20
312 
313 /*
314  * Enumerated type for describing a point by which to anchor something:
315  */
316 
317 typedef enum {
318     TK_ANCHOR_N, TK_ANCHOR_NE, TK_ANCHOR_E, TK_ANCHOR_SE,
319     TK_ANCHOR_S, TK_ANCHOR_SW, TK_ANCHOR_W, TK_ANCHOR_NW,
320     TK_ANCHOR_CENTER
321 } Tk_Anchor;
322 
323 /*
324  * Enumerated type for describing a style of justification:
325  */
326 
327 typedef enum {
328     TK_JUSTIFY_LEFT, TK_JUSTIFY_RIGHT, TK_JUSTIFY_CENTER
329 } Tk_Justify;
330 
331 /*
332  * Each geometry manager (the packer, the placer, etc.) is represented
333  * by a structure of the following form, which indicates procedures
334  * to invoke in the geometry manager to carry out certain functions.
335  */
336 
337 typedef void (Tk_GeomRequestProc) _ANSI_ARGS_((ClientData clientData,
338 	Tk_Window tkwin));
339 typedef void (Tk_GeomLostSlaveProc) _ANSI_ARGS_((ClientData clientData,
340 	Tk_Window tkwin));
341 
342 typedef struct Tk_GeomMgr {
343     char *name;			/* Name of the geometry manager (command
344 				 * used to invoke it, or name of widget
345 				 * class that allows embedded widgets). */
346     Tk_GeomRequestProc *requestProc;
347 				/* Procedure to invoke when a slave's
348 				 * requested geometry changes. */
349     Tk_GeomLostSlaveProc *lostSlaveProc;
350 				/* Procedure to invoke when a slave is
351 				 * taken away from one geometry manager
352 				 * by another.  NULL means geometry manager
353 				 * doesn't care when slaves are lost. */
354 } Tk_GeomMgr;
355 
356 /*
357  * Result values returned by Tk_GetScrollInfo:
358  */
359 
360 #define TK_SCROLL_MOVETO	1
361 #define TK_SCROLL_PAGES		2
362 #define TK_SCROLL_UNITS		3
363 #define TK_SCROLL_ERROR		4
364 
365 /*---------------------------------------------------------------------------
366  *
367  * Extensions to the X event set
368  *
369  *---------------------------------------------------------------------------
370  */
371 
372 #define VirtualEvent	    (LASTEvent)
373 #define ActivateNotify	    (LASTEvent + 1)
374 #define DeactivateNotify    (LASTEvent + 2)
375 #define TK_LASTEVENT	    (LASTEvent + 3)
376 
377 #define VirtualEventMask    (1L << 30)
378 #define ActivateMask	    (1L << 29)
379 
380 
381 /*
382  * A virtual event shares most of its fields with the XKeyEvent and
383  * XButtonEvent structures.  99% of the time a virtual event will be
384  * an abstraction of a key or button event, so this structure provides
385  * the most information to the user.  The only difference is the changing
386  * of the detail field for a virtual event so that it holds the name of the
387  * virtual event being triggered.
388  */
389 
390 typedef struct {
391     int type;
392     unsigned long serial;   /* # of last request processed by server */
393     Bool send_event;	    /* True if this came from a SendEvent request */
394     Display *display;	    /* Display the event was read from */
395     Window event;	    /* Window on which event was requested. */
396     Window root;	    /* root window that the event occured on */
397     Window subwindow;	    /* child window */
398     Time time;		    /* milliseconds */
399     int x, y;		    /* pointer x, y coordinates in event window */
400     int x_root, y_root;	    /* coordinates relative to root */
401     unsigned int state;	    /* key or button mask */
402     Tk_Uid name;	    /* Name of virtual event. */
403     Bool same_screen;	    /* same screen flag */
404 } XVirtualEvent;
405 
406 typedef struct {
407     int type;
408     unsigned long serial;   /* # of last request processed by server */
409     Bool send_event;	    /* True if this came from a SendEvent request */
410     Display *display;	    /* Display the event was read from */
411     Window window;	    /* Window in which event occurred. */
412 } XActivateDeactivateEvent;
413 typedef XActivateDeactivateEvent XActivateEvent;
414 typedef XActivateDeactivateEvent XDeactivateEvent;
415 
416 /*
417  *--------------------------------------------------------------
418  *
419  * Macros for querying Tk_Window structures.  See the
420  * manual entries for documentation.
421  *
422  *--------------------------------------------------------------
423  */
424 
425 #define Tk_Display(tkwin)		(((Tk_FakeWin *) (tkwin))->display)
426 #define Tk_ScreenNumber(tkwin)		(((Tk_FakeWin *) (tkwin))->screenNum)
427 #define Tk_Screen(tkwin)		(ScreenOfDisplay(Tk_Display(tkwin), \
428 	Tk_ScreenNumber(tkwin)))
429 #define Tk_Depth(tkwin)			(((Tk_FakeWin *) (tkwin))->depth)
430 #define Tk_Visual(tkwin)		(((Tk_FakeWin *) (tkwin))->visual)
431 #define Tk_WindowId(tkwin)		(((Tk_FakeWin *) (tkwin))->window)
432 #define Tk_PathName(tkwin) 		(((Tk_FakeWin *) (tkwin))->pathName)
433 #define Tk_Name(tkwin)			(((Tk_FakeWin *) (tkwin))->nameUid)
434 #define Tk_Class(tkwin) 		(((Tk_FakeWin *) (tkwin))->classUid)
435 #define Tk_X(tkwin)			(((Tk_FakeWin *) (tkwin))->changes.x)
436 #define Tk_Y(tkwin)			(((Tk_FakeWin *) (tkwin))->changes.y)
437 #define Tk_Width(tkwin)			(((Tk_FakeWin *) (tkwin))->changes.width)
438 #define Tk_Height(tkwin) \
439     (((Tk_FakeWin *) (tkwin))->changes.height)
440 #define Tk_Changes(tkwin)		(&((Tk_FakeWin *) (tkwin))->changes)
441 #define Tk_Attributes(tkwin)		(&((Tk_FakeWin *) (tkwin))->atts)
442 #define Tk_IsMapped(tkwin) \
443     (((Tk_FakeWin *) (tkwin))->flags & TK_MAPPED)
444 #define Tk_IsTopLevel(tkwin) \
445     (((Tk_FakeWin *) (tkwin))->flags & TK_TOP_LEVEL)
446 #define Tk_ReqWidth(tkwin)		(((Tk_FakeWin *) (tkwin))->reqWidth)
447 #define Tk_ReqHeight(tkwin)		(((Tk_FakeWin *) (tkwin))->reqHeight)
448 #define Tk_InternalBorderWidth(tkwin) \
449     (((Tk_FakeWin *) (tkwin))->internalBorderWidth)
450 #define Tk_Parent(tkwin)		(((Tk_FakeWin *) (tkwin))->parentPtr)
451 #define Tk_Colormap(tkwin)		(((Tk_FakeWin *) (tkwin))->atts.colormap)
452 
453 /*
454  * The structure below is needed by the macros above so that they can
455  * access the fields of a Tk_Window.  The fields not needed by the macros
456  * are declared as "dummyX".  The structure has its own type in order to
457  * prevent applications from accessing Tk_Window fields except using
458  * official macros.  WARNING!! The structure definition must be kept
459  * consistent with the TkWindow structure in tkInt.h.  If you change one,
460  * then change the other.  See the declaration in tkInt.h for
461  * documentation on what the fields are used for internally.
462  */
463 
464 typedef struct Tk_FakeWin {
465     Display *display;
466     char *dummy1;
467     int screenNum;
468     Visual *visual;
469     int depth;
470     Window window;
471     char *dummy2;
472     char *dummy3;
473     Tk_Window parentPtr;
474     char *dummy4;
475     char *dummy5;
476     char *pathName;
477     Tk_Uid nameUid;
478     Tk_Uid classUid;
479     XWindowChanges changes;
480     unsigned int dummy6;
481     XSetWindowAttributes atts;
482     unsigned long dummy7;
483     unsigned int flags;
484     char *dummy8;
485 #ifdef TK_USE_INPUT_METHODS
486     XIC dummy9;
487 #endif /* TK_USE_INPUT_METHODS */
488     ClientData *dummy10;
489     int dummy11;
490     int dummy12;
491     char *dummy13;
492     char *dummy14;
493     ClientData dummy15;
494     int reqWidth, reqHeight;
495     int internalBorderWidth;
496     char *dummy16;
497     char *dummy17;
498 } Tk_FakeWin;
499 
500 /*
501  * Flag values for TkWindow (and Tk_FakeWin) structures are:
502  *
503  * TK_MAPPED:			1 means window is currently mapped,
504  *				0 means unmapped.
505  * TK_TOP_LEVEL:		1 means this is a top-level window (it
506  *				was or will be created as a child of
507  *				a root window).
508  * TK_ALREADY_DEAD:		1 means the window is in the process of
509  *				being destroyed already.
510  * TK_NEED_CONFIG_NOTIFY:	1 means that the window has been reconfigured
511  *				before it was made to exist.  At the time of
512  *				making it exist a ConfigureNotify event needs
513  *				to be generated.
514  * TK_GRAB_FLAG:		Used to manage grabs.  See tkGrab.c for
515  *				details.
516  * TK_CHECKED_IC:		1 means we've already tried to get an input
517  *				context for this window;  if the ic field
518  *				is NULL it means that there isn't a context
519  *				for the field.
520  * TK_PARENT_DESTROYED:		1 means that the window's parent has already
521  *				been destroyed or is in the process of being
522  *				destroyed.
523  * TK_WM_COLORMAP_WINDOW:	1 means that this window has at some time
524  *				appeared in the WM_COLORMAP_WINDOWS property
525  *				for its toplevel, so we have to remove it
526  *				from that property if the window is
527  *				deleted and the toplevel isn't.
528  */
529 
530 #define TK_MAPPED		1
531 #define TK_TOP_LEVEL		2
532 #define TK_ALREADY_DEAD		4
533 #define TK_NEED_CONFIG_NOTIFY	8
534 #define TK_GRAB_FLAG		0x10
535 #define TK_CHECKED_IC		0x20
536 #define TK_PARENT_DESTROYED	0x40
537 #define TK_WM_COLORMAP_WINDOW	0x80
538 
539 /*
540  *--------------------------------------------------------------
541  *
542  * Procedure prototypes and structures used for defining new canvas
543  * items:
544  *
545  *--------------------------------------------------------------
546  */
547 
548 /*
549  * For each item in a canvas widget there exists one record with
550  * the following structure.  Each actual item is represented by
551  * a record with the following stuff at its beginning, plus additional
552  * type-specific stuff after that.
553  */
554 
555 #define TK_TAG_SPACE 3
556 
557 typedef struct Tk_Item  {
558     int id;				/* Unique identifier for this item
559 					 * (also serves as first tag for
560 					 * item). */
561     struct Tk_Item *nextPtr;		/* Next in display list of all
562 					 * items in this canvas.  Later items
563 					 * in list are drawn on top of earlier
564 					 * ones. */
565     Tk_Uid staticTagSpace[TK_TAG_SPACE];/* Built-in space for limited # of
566 					 * tags. */
567     Tk_Uid *tagPtr;			/* Pointer to array of tags.  Usually
568 					 * points to staticTagSpace, but
569 					 * may point to malloc-ed space if
570 					 * there are lots of tags. */
571     int tagSpace;			/* Total amount of tag space available
572 					 * at tagPtr. */
573     int numTags;			/* Number of tag slots actually used
574 					 * at *tagPtr. */
575     struct Tk_ItemType *typePtr;	/* Table of procedures that implement
576 					 * this type of item. */
577     int x1, y1, x2, y2;			/* Bounding box for item, in integer
578 					 * canvas units. Set by item-specific
579 					 * code and guaranteed to contain every
580 					 * pixel drawn in item.  Item area
581 					 * includes x1 and y1 but not x2
582 					 * and y2. */
583 
584     /*
585      *------------------------------------------------------------------
586      * Starting here is additional type-specific stuff;  see the
587      * declarations for individual types to see what is part of
588      * each type.  The actual space below is determined by the
589      * "itemInfoSize" of the type's Tk_ItemType record.
590      *------------------------------------------------------------------
591      */
592 } Tk_Item;
593 
594 /*
595  * Records of the following type are used to describe a type of
596  * item (e.g.  lines, circles, etc.) that can form part of a
597  * canvas widget.
598  */
599 
600 typedef int	Tk_ItemCreateProc _ANSI_ARGS_((Tcl_Interp *interp,
601 		    Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
602 		    char **argv));
603 typedef int	Tk_ItemConfigureProc _ANSI_ARGS_((Tcl_Interp *interp,
604 		    Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
605 		    char **argv, int flags));
606 typedef int	Tk_ItemCoordProc _ANSI_ARGS_((Tcl_Interp *interp,
607 		    Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
608 		    char **argv));
609 typedef void	Tk_ItemDeleteProc _ANSI_ARGS_((Tk_Canvas canvas,
610 		    Tk_Item *itemPtr, Display *display));
611 typedef void	Tk_ItemDisplayProc _ANSI_ARGS_((Tk_Canvas canvas,
612 		    Tk_Item *itemPtr, Display *display, Drawable dst,
613 		    int x, int y, int width, int height));
614 typedef double	Tk_ItemPointProc _ANSI_ARGS_((Tk_Canvas canvas,
615 		    Tk_Item *itemPtr, double *pointPtr));
616 typedef int	Tk_ItemAreaProc _ANSI_ARGS_((Tk_Canvas canvas,
617 		    Tk_Item *itemPtr, double *rectPtr));
618 typedef int	Tk_ItemPostscriptProc _ANSI_ARGS_((Tcl_Interp *interp,
619 		    Tk_Canvas canvas, Tk_Item *itemPtr, int prepass));
620 typedef void	Tk_ItemScaleProc _ANSI_ARGS_((Tk_Canvas canvas,
621 		    Tk_Item *itemPtr, double originX, double originY,
622 		    double scaleX, double scaleY));
623 typedef void	Tk_ItemTranslateProc _ANSI_ARGS_((Tk_Canvas canvas,
624 		    Tk_Item *itemPtr, double deltaX, double deltaY));
625 typedef int	Tk_ItemIndexProc _ANSI_ARGS_((Tcl_Interp *interp,
626 		    Tk_Canvas canvas, Tk_Item *itemPtr, char *indexString,
627 		    int *indexPtr));
628 typedef void	Tk_ItemCursorProc _ANSI_ARGS_((Tk_Canvas canvas,
629 		    Tk_Item *itemPtr, int index));
630 typedef int	Tk_ItemSelectionProc _ANSI_ARGS_((Tk_Canvas canvas,
631 		    Tk_Item *itemPtr, int offset, char *buffer,
632 		    int maxBytes));
633 typedef void	Tk_ItemInsertProc _ANSI_ARGS_((Tk_Canvas canvas,
634 		    Tk_Item *itemPtr, int beforeThis, char *string));
635 typedef void	Tk_ItemDCharsProc _ANSI_ARGS_((Tk_Canvas canvas,
636 		    Tk_Item *itemPtr, int first, int last));
637 
638 typedef struct Tk_ItemType {
639     char *name;				/* The name of this type of item, such
640 					 * as "line". */
641     int itemSize;			/* Total amount of space needed for
642 					 * item's record. */
643     Tk_ItemCreateProc *createProc;	/* Procedure to create a new item of
644 					 * this type. */
645     Tk_ConfigSpec *configSpecs;		/* Pointer to array of configuration
646 					 * specs for this type.  Used for
647 					 * returning configuration info. */
648     Tk_ItemConfigureProc *configProc;	/* Procedure to call to change
649 					 * configuration options. */
650     Tk_ItemCoordProc *coordProc;	/* Procedure to call to get and set
651 					 * the item's coordinates. */
652     Tk_ItemDeleteProc *deleteProc;	/* Procedure to delete existing item of
653 					 * this type. */
654     Tk_ItemDisplayProc *displayProc;	/* Procedure to display items of
655 					 * this type. */
656     int alwaysRedraw;			/* Non-zero means displayProc should
657 					 * be called even when the item has
658 					 * been moved off-screen. */
659     Tk_ItemPointProc *pointProc;	/* Computes distance from item to
660 					 * a given point. */
661     Tk_ItemAreaProc *areaProc;		/* Computes whether item is inside,
662 					 * outside, or overlapping an area. */
663     Tk_ItemPostscriptProc *postscriptProc;
664 					/* Procedure to write a Postscript
665 					 * description for items of this
666 					 * type. */
667     Tk_ItemScaleProc *scaleProc;	/* Procedure to rescale items of
668 					 * this type. */
669     Tk_ItemTranslateProc *translateProc;/* Procedure to translate items of
670 					 * this type. */
671     Tk_ItemIndexProc *indexProc;	/* Procedure to determine index of
672 					 * indicated character.  NULL if
673 					 * item doesn't support indexing. */
674     Tk_ItemCursorProc *icursorProc;	/* Procedure to set insert cursor pos.
675 					 * to just before a given position. */
676     Tk_ItemSelectionProc *selectionProc;/* Procedure to return selection (in
677 					 * STRING format) when it is in this
678 					 * item. */
679     Tk_ItemInsertProc *insertProc;	/* Procedure to insert something into
680 					 * an item. */
681     Tk_ItemDCharsProc *dCharsProc;	/* Procedure to delete characters
682 					 * from an item. */
683     struct Tk_ItemType *nextPtr;	/* Used to link types together into
684 					 * a list. */
685 } Tk_ItemType;
686 
687 /*
688  * The following structure provides information about the selection and
689  * the insertion cursor.  It is needed by only a few items, such as
690  * those that display text.  It is shared by the generic canvas code
691  * and the item-specific code, but most of the fields should be written
692  * only by the canvas generic code.
693  */
694 
695 typedef struct Tk_CanvasTextInfo {
696     Tk_3DBorder selBorder;	/* Border and background for selected
697 				 * characters.  Read-only to items.*/
698     int selBorderWidth;		/* Width of border around selection.
699 				 * Read-only to items. */
700     XColor *selFgColorPtr;	/* Foreground color for selected text.
701 				 * Read-only to items. */
702     Tk_Item *selItemPtr;	/* Pointer to selected item.  NULL means
703 				 * selection isn't in this canvas.
704 				 * Writable by items. */
705     int selectFirst;		/* Index of first selected character.
706 				 * Writable by items. */
707     int selectLast;		/* Index of last selected character.
708 				 * Writable by items. */
709     Tk_Item *anchorItemPtr;	/* Item corresponding to "selectAnchor":
710 				 * not necessarily selItemPtr.   Read-only
711 				 * to items. */
712     int selectAnchor;		/* Fixed end of selection (i.e. "select to"
713 				 * operation will use this as one end of the
714 				 * selection).  Writable by items. */
715     Tk_3DBorder insertBorder;	/* Used to draw vertical bar for insertion
716 				 * cursor.  Read-only to items. */
717     int insertWidth;		/* Total width of insertion cursor.  Read-only
718 				 * to items. */
719     int insertBorderWidth;	/* Width of 3-D border around insert cursor.
720 				 * Read-only to items. */
721     Tk_Item *focusItemPtr;	/* Item that currently has the input focus,
722 				 * or NULL if no such item.  Read-only to
723 				 * items.  */
724     int gotFocus;		/* Non-zero means that the canvas widget has
725 				 * the input focus.  Read-only to items.*/
726     int cursorOn;		/* Non-zero means that an insertion cursor
727 				 * should be displayed in focusItemPtr.
728 				 * Read-only to items.*/
729 } Tk_CanvasTextInfo;
730 
731 /*
732  *--------------------------------------------------------------
733  *
734  * Procedure prototypes and structures used for managing images:
735  *
736  *--------------------------------------------------------------
737  */
738 
739 typedef struct Tk_ImageType Tk_ImageType;
740 typedef int (Tk_ImageCreateProc) _ANSI_ARGS_((Tcl_Interp *interp,
741 	char *name, int argc, char **argv, Tk_ImageType *typePtr,
742 	Tk_ImageMaster master, ClientData *masterDataPtr));
743 typedef ClientData (Tk_ImageGetProc) _ANSI_ARGS_((Tk_Window tkwin,
744 	ClientData masterData));
745 typedef void (Tk_ImageDisplayProc) _ANSI_ARGS_((ClientData instanceData,
746 	Display *display, Drawable drawable, int imageX, int imageY,
747 	int width, int height, int drawableX, int drawableY));
748 typedef void (Tk_ImageFreeProc) _ANSI_ARGS_((ClientData instanceData,
749 	Display *display));
750 typedef void (Tk_ImageDeleteProc) _ANSI_ARGS_((ClientData masterData));
751 typedef void (Tk_ImageChangedProc) _ANSI_ARGS_((ClientData clientData,
752 	int x, int y, int width, int height, int imageWidth,
753 	int imageHeight));
754 
755 /*
756  * The following structure represents a particular type of image
757  * (bitmap, xpm image, etc.).  It provides information common to
758  * all images of that type, such as the type name and a collection
759  * of procedures in the image manager that respond to various
760  * events.  Each image manager is represented by one of these
761  * structures.
762  */
763 
764 struct Tk_ImageType {
765     char *name;			/* Name of image type. */
766     Tk_ImageCreateProc *createProc;
767 				/* Procedure to call to create a new image
768 				 * of this type. */
769     Tk_ImageGetProc *getProc;	/* Procedure to call the first time
770 				 * Tk_GetImage is called in a new way
771 				 * (new visual or screen). */
772     Tk_ImageDisplayProc *displayProc;
773 				/* Call to draw image, in response to
774 				 * Tk_RedrawImage calls. */
775     Tk_ImageFreeProc *freeProc;	/* Procedure to call whenever Tk_FreeImage
776 				 * is called to release an instance of an
777 				 * image. */
778     Tk_ImageDeleteProc *deleteProc;
779 				/* Procedure to call to delete image.  It
780 				 * will not be called until after freeProc
781 				 * has been called for each instance of the
782 				 * image. */
783     struct Tk_ImageType *nextPtr;
784 				/* Next in list of all image types currently
785 				 * known.  Filled in by Tk, not by image
786 				 * manager. */
787 };
788 
789 /*
790  *--------------------------------------------------------------
791  *
792  * Additional definitions used to manage images of type "photo".
793  *
794  *--------------------------------------------------------------
795  */
796 
797 /*
798  * The following type is used to identify a particular photo image
799  * to be manipulated:
800  */
801 
802 typedef void *Tk_PhotoHandle;
803 
804 /*
805  * The following structure describes a block of pixels in memory:
806  */
807 
808 typedef struct Tk_PhotoImageBlock {
809     unsigned char *pixelPtr;	/* Pointer to the first pixel. */
810     int		width;		/* Width of block, in pixels. */
811     int		height;		/* Height of block, in pixels. */
812     int		pitch;		/* Address difference between corresponding
813 				 * pixels in successive lines. */
814     int		pixelSize;	/* Address difference between successive
815 				 * pixels in the same line. */
816     int		offset[3];	/* Address differences between the red, green
817 				 * and blue components of the pixel and the
818 				 * pixel as a whole. */
819 } Tk_PhotoImageBlock;
820 
821 /*
822  * Procedure prototypes and structures used in reading and
823  * writing photo images:
824  */
825 
826 typedef struct Tk_PhotoImageFormat Tk_PhotoImageFormat;
827 typedef int (Tk_ImageFileMatchProc) _ANSI_ARGS_((FILE *f, char *fileName,
828 	char *formatString, int *widthPtr, int *heightPtr));
829 typedef int (Tk_ImageStringMatchProc) _ANSI_ARGS_((char *string,
830 	char *formatString, int *widthPtr, int *heightPtr));
831 typedef int (Tk_ImageFileReadProc) _ANSI_ARGS_((Tcl_Interp *interp,
832 	FILE *f, char *fileName, char *formatString, Tk_PhotoHandle imageHandle,
833 	int destX, int destY, int width, int height, int srcX, int srcY));
834 typedef int (Tk_ImageStringReadProc) _ANSI_ARGS_((Tcl_Interp *interp,
835 	char *string, char *formatString, Tk_PhotoHandle imageHandle,
836 	int destX, int destY, int width, int height, int srcX, int srcY));
837 typedef int (Tk_ImageFileWriteProc) _ANSI_ARGS_((Tcl_Interp *interp,
838 	char *fileName, char *formatString, Tk_PhotoImageBlock *blockPtr));
839 typedef int (Tk_ImageStringWriteProc) _ANSI_ARGS_((Tcl_Interp *interp,
840 	Tcl_DString *dataPtr, char *formatString,
841 	Tk_PhotoImageBlock *blockPtr));
842 
843 /*
844  * The following structure represents a particular file format for
845  * storing images (e.g., PPM, GIF, JPEG, etc.).  It provides information
846  * to allow image files of that format to be recognized and read into
847  * a photo image.
848  */
849 
850 struct Tk_PhotoImageFormat {
851     char *name;			/* Name of image file format */
852     Tk_ImageFileMatchProc *fileMatchProc;
853 				/* Procedure to call to determine whether
854 				 * an image file matches this format. */
855     Tk_ImageStringMatchProc *stringMatchProc;
856 				/* Procedure to call to determine whether
857 				 * the data in a string matches this format. */
858     Tk_ImageFileReadProc *fileReadProc;
859 				/* Procedure to call to read data from
860 				 * an image file into a photo image. */
861     Tk_ImageStringReadProc *stringReadProc;
862 				/* Procedure to call to read data from
863 				 * a string into a photo image. */
864     Tk_ImageFileWriteProc *fileWriteProc;
865 				/* Procedure to call to write data from
866 				 * a photo image to a file. */
867     Tk_ImageStringWriteProc *stringWriteProc;
868 				/* Procedure to call to obtain a string
869 				 * representation of the data in a photo
870 				 * image.*/
871     struct Tk_PhotoImageFormat *nextPtr;
872 				/* Next in list of all photo image formats
873 				 * currently known.  Filled in by Tk, not
874 				 * by image format handler. */
875 };
876 
877 /*
878  *--------------------------------------------------------------
879  *
880  * The definitions below provide backward compatibility for
881  * functions and types related to event handling that used to
882  * be in Tk but have moved to Tcl.
883  *
884  *--------------------------------------------------------------
885  */
886 
887 #define TK_READABLE		TCL_READABLE
888 #define TK_WRITABLE		TCL_WRITABLE
889 #define TK_EXCEPTION		TCL_EXCEPTION
890 
891 #define TK_DONT_WAIT		TCL_DONT_WAIT
892 #define TK_X_EVENTS		TCL_WINDOW_EVENTS
893 #define TK_WINDOW_EVENTS	TCL_WINDOW_EVENTS
894 #define TK_FILE_EVENTS		TCL_FILE_EVENTS
895 #define TK_TIMER_EVENTS		TCL_TIMER_EVENTS
896 #define TK_IDLE_EVENTS		TCL_IDLE_EVENTS
897 #define TK_ALL_EVENTS		TCL_ALL_EVENTS
898 
899 #define Tk_IdleProc		Tcl_IdleProc
900 #define Tk_FileProc		Tcl_FileProc
901 #define Tk_TimerProc		Tcl_TimerProc
902 #define Tk_TimerToken		Tcl_TimerToken
903 
904 #define Tk_BackgroundError	Tcl_BackgroundError
905 #define Tk_CancelIdleCall	Tcl_CancelIdleCall
906 #define Tk_CreateFileHandler(file,mask,proc,data) \
907     Tcl_CreateFileHandler(Tcl_GetFile((ClientData) (file), TCL_UNIX_FD), \
908     (mask), (proc), (data))
909 #define Tk_CreateTimerHandler	Tcl_CreateTimerHandler
910 #define Tk_DeleteFileHandler(file) \
911     Tcl_DeleteFileHandler(Tcl_GetFile((ClientData) (file), TCL_UNIX_FD))
912 #define Tk_DeleteTimerHandler	Tcl_DeleteTimerHandler
913 #define Tk_DoOneEvent		Tcl_DoOneEvent
914 #define Tk_DoWhenIdle		Tcl_DoWhenIdle
915 #define Tk_Sleep		Tcl_Sleep
916 
917 /* Additional stuff that has moved to Tcl: */
918 
919 #define Tk_AfterCmd		Tcl_AfterCmd
920 #define Tk_EventuallyFree	Tcl_EventuallyFree
921 #define Tk_FreeProc		Tcl_FreeProc
922 #define Tk_Preserve		Tcl_Preserve
923 #define Tk_Release		Tcl_Release
924 
925 /*
926  *--------------------------------------------------------------
927  *
928  * Additional procedure types defined by Tk.
929  *
930  *--------------------------------------------------------------
931  */
932 
933 typedef int (Tk_ErrorProc) _ANSI_ARGS_((ClientData clientData,
934 	XErrorEvent *errEventPtr));
935 typedef void (Tk_EventProc) _ANSI_ARGS_((ClientData clientData,
936 	XEvent *eventPtr));
937 typedef int (Tk_GenericProc) _ANSI_ARGS_((ClientData clientData,
938 	XEvent *eventPtr));
939 typedef int (Tk_GetSelProc) _ANSI_ARGS_((ClientData clientData,
940 	Tcl_Interp *interp, char *portion));
941 typedef void (Tk_LostSelProc) _ANSI_ARGS_((ClientData clientData));
942 typedef Tk_RestrictAction (Tk_RestrictProc) _ANSI_ARGS_((
943 	ClientData clientData, XEvent *eventPtr));
944 typedef int (Tk_SelectionProc) _ANSI_ARGS_((ClientData clientData,
945 	int offset, char *buffer, int maxBytes));
946 
947 /*
948  *--------------------------------------------------------------
949  *
950  * Exported procedures and variables.
951  *
952  *--------------------------------------------------------------
953  */
954 
955 #if _BLD_tk && defined(__EXPORT__)
956 #define extern	__EXPORT__
957 #endif
958 
959 EXTERN XColor *		Tk_3DBorderColor _ANSI_ARGS_((Tk_3DBorder border));
960 EXTERN GC		Tk_3DBorderGC _ANSI_ARGS_((Tk_Window tkwin,
961 			    Tk_3DBorder border, int which));
962 EXTERN void		Tk_3DHorizontalBevel _ANSI_ARGS_((Tk_Window tkwin,
963 			    Drawable drawable, Tk_3DBorder border, int x,
964 			    int y, int width, int height, int leftIn,
965 			    int rightIn, int topBevel, int relief));
966 EXTERN void		Tk_3DVerticalBevel _ANSI_ARGS_((Tk_Window tkwin,
967 			    Drawable drawable, Tk_3DBorder border, int x,
968 			    int y, int width, int height, int leftBevel,
969 			    int relief));
970 EXTERN void		Tk_AddOption _ANSI_ARGS_((Tk_Window tkwin, char *name,
971 			    char *value, int priority));
972 EXTERN void		Tk_BindEvent _ANSI_ARGS_((Tk_BindingTable bindingTable,
973 			    XEvent *eventPtr, Tk_Window tkwin, int numObjects,
974 			    ClientData *objectPtr));
975 EXTERN void		Tk_CanvasDrawableCoords _ANSI_ARGS_((Tk_Canvas canvas,
976 			    double x, double y, short *drawableXPtr,
977 			    short *drawableYPtr));
978 EXTERN void		Tk_CanvasEventuallyRedraw _ANSI_ARGS_((
979 			    Tk_Canvas canvas, int x1, int y1, int x2,
980 			    int y2));
981 EXTERN int		Tk_CanvasGetCoord _ANSI_ARGS_((Tcl_Interp *interp,
982 			    Tk_Canvas canvas, char *string,
983 			    double *doublePtr));
984 EXTERN Tk_CanvasTextInfo *Tk_CanvasGetTextInfo _ANSI_ARGS_((Tk_Canvas canvas));
985 EXTERN int		Tk_CanvasPsBitmap _ANSI_ARGS_((Tcl_Interp *interp,
986 			    Tk_Canvas canvas, Pixmap bitmap, int x, int y,
987 			    int width, int height));
988 EXTERN int		Tk_CanvasPsColor _ANSI_ARGS_((Tcl_Interp *interp,
989 			    Tk_Canvas canvas, XColor *colorPtr));
990 EXTERN int		Tk_CanvasPsFont _ANSI_ARGS_((Tcl_Interp *interp,
991 			    Tk_Canvas canvas, XFontStruct *fontStructPtr));
992 EXTERN void		Tk_CanvasPsPath _ANSI_ARGS_((Tcl_Interp *interp,
993 			    Tk_Canvas canvas, double *coordPtr, int numPoints));
994 EXTERN int		Tk_CanvasPsStipple _ANSI_ARGS_((Tcl_Interp *interp,
995 			    Tk_Canvas canvas, Pixmap bitmap));
996 EXTERN double		Tk_CanvasPsY _ANSI_ARGS_((Tk_Canvas canvas, double y));
997 EXTERN void		Tk_CanvasSetStippleOrigin _ANSI_ARGS_((
998 			    Tk_Canvas canvas, GC gc));
999 EXTERN int		Tk_CanvasTagsParseProc _ANSI_ARGS_((
1000 			    ClientData clientData, Tcl_Interp *interp,
1001 			    Tk_Window tkwin, char *value, char *widgRec,
1002 			    int offset));
1003 EXTERN char *		Tk_CanvasTagsPrintProc _ANSI_ARGS_((
1004 			    ClientData clientData, Tk_Window tkwin,
1005 			    char *widgRec, int offset,
1006 			    Tcl_FreeProc **freeProcPtr));
1007 EXTERN Tk_Window	Tk_CanvasTkwin _ANSI_ARGS_((Tk_Canvas canvas));
1008 EXTERN void		Tk_CanvasWindowCoords _ANSI_ARGS_((Tk_Canvas canvas,
1009 			    double x, double y, short *screenXPtr,
1010 			    short *screenYPtr));
1011 EXTERN void		Tk_ChangeWindowAttributes _ANSI_ARGS_((Tk_Window tkwin,
1012 			    unsigned long valueMask,
1013 			    XSetWindowAttributes *attsPtr));
1014 EXTERN void		Tk_ClearSelection _ANSI_ARGS_((Tk_Window tkwin,
1015 			    Atom selection));
1016 EXTERN int		Tk_ClipboardAppend _ANSI_ARGS_((Tcl_Interp *interp,
1017 			    Tk_Window tkwin, Atom target, Atom format,
1018 			    char* buffer));
1019 EXTERN int		Tk_ClipboardClear _ANSI_ARGS_((Tcl_Interp *interp,
1020 			    Tk_Window tkwin));
1021 EXTERN int		Tk_ConfigureInfo _ANSI_ARGS_((Tcl_Interp *interp,
1022 			    Tk_Window tkwin, Tk_ConfigSpec *specs,
1023 			    char *widgRec, char *argvName, int flags));
1024 EXTERN int		Tk_ConfigureValue _ANSI_ARGS_((Tcl_Interp *interp,
1025 			    Tk_Window tkwin, Tk_ConfigSpec *specs,
1026 			    char *widgRec, char *argvName, int flags));
1027 EXTERN int		Tk_ConfigureWidget _ANSI_ARGS_((Tcl_Interp *interp,
1028 			    Tk_Window tkwin, Tk_ConfigSpec *specs,
1029 			    int argc, char **argv, char *widgRec,
1030 			    int flags));
1031 EXTERN void		Tk_ConfigureWindow _ANSI_ARGS_((Tk_Window tkwin,
1032 			    unsigned int valueMask, XWindowChanges *valuePtr));
1033 EXTERN Tk_Window	Tk_CoordsToWindow _ANSI_ARGS_((int rootX, int rootY,
1034 			    Tk_Window tkwin));
1035 EXTERN unsigned long	Tk_CreateBinding _ANSI_ARGS_((Tcl_Interp *interp,
1036 			    Tk_BindingTable bindingTable, ClientData object,
1037 			    char *eventString, char *command, int append));
1038 EXTERN Tk_BindingTable	Tk_CreateBindingTable _ANSI_ARGS_((Tcl_Interp *interp));
1039 EXTERN Tk_ErrorHandler	Tk_CreateErrorHandler _ANSI_ARGS_((Display *display,
1040 			    int errNum, int request, int minorCode,
1041 			    Tk_ErrorProc *errorProc, ClientData clientData));
1042 EXTERN void		Tk_CreateEventHandler _ANSI_ARGS_((Tk_Window token,
1043 			    unsigned long mask, Tk_EventProc *proc,
1044 			    ClientData clientData));
1045 EXTERN void		Tk_CreateGenericHandler _ANSI_ARGS_((
1046 			    Tk_GenericProc *proc, ClientData clientData));
1047 EXTERN void		Tk_CreateImageType _ANSI_ARGS_((
1048 			    Tk_ImageType *typePtr));
1049 EXTERN void		Tk_CreateItemType _ANSI_ARGS_((Tk_ItemType *typePtr));
1050 EXTERN void		Tk_CreatePhotoImageFormat _ANSI_ARGS_((
1051 			    Tk_PhotoImageFormat *formatPtr));
1052 EXTERN void		Tk_CreateSelHandler _ANSI_ARGS_((Tk_Window tkwin,
1053 			    Atom selection, Atom target,
1054 			    Tk_SelectionProc *proc, ClientData clientData,
1055 			    Atom format));
1056 EXTERN Tk_Window	Tk_CreateWindow _ANSI_ARGS_((Tcl_Interp *interp,
1057 			    Tk_Window parent, char *name, char *screenName));
1058 EXTERN Tk_Window	Tk_CreateWindowFromPath _ANSI_ARGS_((
1059 			    Tcl_Interp *interp, Tk_Window tkwin,
1060 			    char *pathName, char *screenName));
1061 EXTERN int		Tk_DefineBitmap _ANSI_ARGS_((Tcl_Interp *interp,
1062 			    Tk_Uid name, char *source, int width,
1063 			    int height));
1064 EXTERN void		Tk_DefineCursor _ANSI_ARGS_((Tk_Window window,
1065 			    Tk_Cursor cursor));
1066 EXTERN void		Tk_DeleteAllBindings _ANSI_ARGS_((
1067 			    Tk_BindingTable bindingTable, ClientData object));
1068 EXTERN int		Tk_DeleteBinding _ANSI_ARGS_((Tcl_Interp *interp,
1069 			    Tk_BindingTable bindingTable, ClientData object,
1070 			    char *eventString));
1071 EXTERN void		Tk_DeleteBindingTable _ANSI_ARGS_((
1072 			    Tk_BindingTable bindingTable));
1073 EXTERN void		Tk_DeleteErrorHandler _ANSI_ARGS_((
1074 			    Tk_ErrorHandler handler));
1075 EXTERN void		Tk_DeleteEventHandler _ANSI_ARGS_((Tk_Window token,
1076 			    unsigned long mask, Tk_EventProc *proc,
1077 			    ClientData clientData));
1078 EXTERN void		Tk_DeleteGenericHandler _ANSI_ARGS_((
1079 			    Tk_GenericProc *proc, ClientData clientData));
1080 EXTERN void		Tk_DeleteImage _ANSI_ARGS_((Tcl_Interp *interp,
1081 			    char *name));
1082 EXTERN void		Tk_DeleteSelHandler _ANSI_ARGS_((Tk_Window tkwin,
1083 			    Atom selection, Atom target));
1084 EXTERN void		Tk_DestroyWindow _ANSI_ARGS_((Tk_Window tkwin));
1085 EXTERN char *		Tk_DisplayName _ANSI_ARGS_((Tk_Window tkwin));
1086 EXTERN void		Tk_Draw3DPolygon _ANSI_ARGS_((Tk_Window tkwin,
1087 			    Drawable drawable, Tk_3DBorder border,
1088 			    XPoint *pointPtr, int numPoints, int borderWidth,
1089 			    int leftRelief));
1090 EXTERN void		Tk_Draw3DRectangle _ANSI_ARGS_((Tk_Window tkwin,
1091 			    Drawable drawable, Tk_3DBorder border, int x,
1092 			    int y, int width, int height, int borderWidth,
1093 			    int relief));
1094 EXTERN void		Tk_DrawFocusHighlight _ANSI_ARGS_((Tk_Window tkwin,
1095 			    GC gc, int width, Drawable drawable));
1096 EXTERN void		Tk_Fill3DPolygon _ANSI_ARGS_((Tk_Window tkwin,
1097 			    Drawable drawable, Tk_3DBorder border,
1098 			    XPoint *pointPtr, int numPoints, int borderWidth,
1099 			    int leftRelief));
1100 EXTERN void		Tk_Fill3DRectangle _ANSI_ARGS_((Tk_Window tkwin,
1101 			    Drawable drawable, Tk_3DBorder border, int x,
1102 			    int y, int width, int height, int borderWidth,
1103 			    int relief));
1104 EXTERN Tk_PhotoHandle	Tk_FindPhoto _ANSI_ARGS_((char *imageName));
1105 EXTERN void		Tk_Free3DBorder _ANSI_ARGS_((Tk_3DBorder border));
1106 EXTERN void		Tk_FreeBitmap _ANSI_ARGS_((Display *display,
1107 			    Pixmap bitmap));
1108 EXTERN void		Tk_FreeColor _ANSI_ARGS_((XColor *colorPtr));
1109 EXTERN void		Tk_FreeColormap _ANSI_ARGS_((Display *display,
1110 			    Colormap colormap));
1111 EXTERN void		Tk_FreeCursor _ANSI_ARGS_((Display *display,
1112 			    Tk_Cursor cursor));
1113 EXTERN void		Tk_FreeFontStruct _ANSI_ARGS_((
1114 			    XFontStruct *fontStructPtr));
1115 EXTERN void		Tk_FreeGC _ANSI_ARGS_((Display *display, GC gc));
1116 EXTERN void		Tk_FreeImage _ANSI_ARGS_((Tk_Image image));
1117 EXTERN void		Tk_FreeOptions _ANSI_ARGS_((Tk_ConfigSpec *specs,
1118 			    char *widgRec, Display *display, int needFlags));
1119 EXTERN void		Tk_FreePixmap _ANSI_ARGS_((Display *display,
1120 			    Pixmap pixmap));
1121 EXTERN void		Tk_FreeXId _ANSI_ARGS_((Display *display, XID xid));
1122 EXTERN GC		Tk_GCForColor _ANSI_ARGS_((XColor *colorPtr,
1123 			    Drawable drawable));
1124 EXTERN void		Tk_GeometryRequest _ANSI_ARGS_((Tk_Window tkwin,
1125 			    int reqWidth,  int reqHeight));
1126 EXTERN Tk_3DBorder	Tk_Get3DBorder _ANSI_ARGS_((Tcl_Interp *interp,
1127 			    Tk_Window tkwin, Tk_Uid colorName));
1128 EXTERN void		Tk_GetAllBindings _ANSI_ARGS_((Tcl_Interp *interp,
1129 			    Tk_BindingTable bindingTable, ClientData object));
1130 EXTERN int		Tk_GetAnchor _ANSI_ARGS_((Tcl_Interp *interp,
1131 			    char *string, Tk_Anchor *anchorPtr));
1132 EXTERN char *		Tk_GetAtomName _ANSI_ARGS_((Tk_Window tkwin,
1133 			    Atom atom));
1134 EXTERN char *		Tk_GetBinding _ANSI_ARGS_((Tcl_Interp *interp,
1135 			    Tk_BindingTable bindingTable, ClientData object,
1136 			    char *eventString));
1137 EXTERN Pixmap		Tk_GetBitmap _ANSI_ARGS_((Tcl_Interp *interp,
1138 			    Tk_Window tkwin, Tk_Uid string));
1139 EXTERN Pixmap		Tk_GetBitmapFromData _ANSI_ARGS_((Tcl_Interp *interp,
1140 			    Tk_Window tkwin, char *source,
1141 			    int width, int height));
1142 EXTERN int		Tk_GetCapStyle _ANSI_ARGS_((Tcl_Interp *interp,
1143 			    char *string, int *capPtr));
1144 EXTERN XColor *		Tk_GetColor _ANSI_ARGS_((Tcl_Interp *interp,
1145 			    Tk_Window tkwin, Tk_Uid name));
1146 EXTERN XColor *		Tk_GetColorByValue _ANSI_ARGS_((Tk_Window tkwin,
1147 			    XColor *colorPtr));
1148 EXTERN Colormap		Tk_GetColormap _ANSI_ARGS_((Tcl_Interp *interp,
1149 			    Tk_Window tkwin, char *string));
1150 EXTERN Tk_Cursor	Tk_GetCursor _ANSI_ARGS_((Tcl_Interp *interp,
1151 			    Tk_Window tkwin, Tk_Uid string));
1152 EXTERN Tk_Cursor	Tk_GetCursorFromData _ANSI_ARGS_((Tcl_Interp *interp,
1153 			    Tk_Window tkwin, char *source, char *mask,
1154 			    int width, int height, int xHot, int yHot,
1155 			    Tk_Uid fg, Tk_Uid bg));
1156 EXTERN XFontStruct *	Tk_GetFontStruct _ANSI_ARGS_((Tcl_Interp *interp,
1157 			    Tk_Window tkwin, Tk_Uid name));
1158 EXTERN GC		Tk_GetGC _ANSI_ARGS_((Tk_Window tkwin,
1159 			    unsigned long valueMask, XGCValues *valuePtr));
1160 EXTERN Tk_Image		Tk_GetImage _ANSI_ARGS_((Tcl_Interp *interp,
1161 			    Tk_Window tkwin, char *name,
1162 			    Tk_ImageChangedProc *changeProc,
1163 			    ClientData clientData));
1164 EXTERN Tk_ItemType *	Tk_GetItemTypes _ANSI_ARGS_((void));
1165 EXTERN int		Tk_GetJoinStyle _ANSI_ARGS_((Tcl_Interp *interp,
1166 			    char *string, int *joinPtr));
1167 EXTERN int		Tk_GetJustify _ANSI_ARGS_((Tcl_Interp *interp,
1168 			    char *string, Tk_Justify *justifyPtr));
1169 EXTERN int		Tk_GetNumMainWindows _ANSI_ARGS_((void));
1170 EXTERN Tk_Uid		Tk_GetOption _ANSI_ARGS_((Tk_Window tkwin, char *name,
1171 			    char *className));
1172 EXTERN int		Tk_GetPixels _ANSI_ARGS_((Tcl_Interp *interp,
1173 			    Tk_Window tkwin, char *string, int *intPtr));
1174 EXTERN Pixmap		Tk_GetPixmap _ANSI_ARGS_((Display *display, Drawable d,
1175 			    int width, int height, int depth));
1176 EXTERN int		Tk_GetRelief _ANSI_ARGS_((Tcl_Interp *interp,
1177 			    char *name, int *reliefPtr));
1178 EXTERN void		Tk_GetRootCoords _ANSI_ARGS_ ((Tk_Window tkwin,
1179 			    int *xPtr, int *yPtr));
1180 EXTERN int		Tk_GetScrollInfo _ANSI_ARGS_((Tcl_Interp *interp,
1181 			    int argc, char **argv, double *dblPtr,
1182 			    int *intPtr));
1183 EXTERN int		Tk_GetScreenMM _ANSI_ARGS_((Tcl_Interp *interp,
1184 			    Tk_Window tkwin, char *string, double *doublePtr));
1185 EXTERN int		Tk_GetSelection _ANSI_ARGS_((Tcl_Interp *interp,
1186 			    Tk_Window tkwin, Atom selection, Atom target,
1187 			    Tk_GetSelProc *proc, ClientData clientData));
1188 EXTERN Tk_Uid		Tk_GetUid _ANSI_ARGS_((char *string));
1189 EXTERN Visual *		Tk_GetVisual _ANSI_ARGS_((Tcl_Interp *interp,
1190 			    Tk_Window tkwin, char *string, int *depthPtr,
1191 			    Colormap *colormapPtr));
1192 EXTERN void		Tk_GetVRootGeometry _ANSI_ARGS_((Tk_Window tkwin,
1193 			    int *xPtr, int *yPtr, int *widthPtr,
1194 			    int *heightPtr));
1195 EXTERN int		Tk_Grab _ANSI_ARGS_((Tcl_Interp *interp,
1196 			    Tk_Window tkwin, int grabGlobal));
1197 EXTERN void		Tk_HandleEvent _ANSI_ARGS_((XEvent *eventPtr));
1198 EXTERN Tk_Window      	Tk_IdToWindow _ANSI_ARGS_((Display *display,
1199 			    Window window));
1200 EXTERN void		Tk_ImageChanged _ANSI_ARGS_((
1201 			    Tk_ImageMaster master, int x, int y,
1202 			    int width, int height, int imageWidth,
1203 			    int imageHeight));
1204 EXTERN int		Tk_Init _ANSI_ARGS_((Tcl_Interp *interp));
1205 EXTERN Atom		Tk_InternAtom _ANSI_ARGS_((Tk_Window tkwin,
1206 			    char *name));
1207 EXTERN void		Tk_Main _ANSI_ARGS_((int argc, char **argv,
1208 			    Tcl_AppInitProc *appInitProc));
1209 EXTERN void		Tk_MainLoop _ANSI_ARGS_((void));
1210 EXTERN void		Tk_MaintainGeometry _ANSI_ARGS_((Tk_Window slave,
1211 			    Tk_Window master, int x, int y, int width,
1212 			    int height));
1213 EXTERN Tk_Window	Tk_MainWindow _ANSI_ARGS_((Tcl_Interp *interp));
1214 EXTERN void		Tk_MakeWindowExist _ANSI_ARGS_((Tk_Window tkwin));
1215 EXTERN void		Tk_ManageGeometry _ANSI_ARGS_((Tk_Window tkwin,
1216 			    Tk_GeomMgr *mgrPtr, ClientData clientData));
1217 EXTERN void		Tk_MapWindow _ANSI_ARGS_((Tk_Window tkwin));
1218 EXTERN void		Tk_MoveResizeWindow _ANSI_ARGS_((Tk_Window tkwin,
1219 			    int x, int y, int width, int height));
1220 EXTERN void		Tk_MoveWindow _ANSI_ARGS_((Tk_Window tkwin, int x,
1221 			    int y));
1222 EXTERN void		Tk_MoveToplevelWindow _ANSI_ARGS_((Tk_Window tkwin,
1223 			    int x, int y));
1224 EXTERN char *		Tk_NameOf3DBorder _ANSI_ARGS_((Tk_3DBorder border));
1225 EXTERN char *		Tk_NameOfAnchor _ANSI_ARGS_((Tk_Anchor anchor));
1226 EXTERN char *		Tk_NameOfBitmap _ANSI_ARGS_((Display *display,
1227 			    Pixmap bitmap));
1228 EXTERN char *		Tk_NameOfCapStyle _ANSI_ARGS_((int cap));
1229 EXTERN char *		Tk_NameOfColor _ANSI_ARGS_((XColor *colorPtr));
1230 EXTERN char *		Tk_NameOfCursor _ANSI_ARGS_((Display *display,
1231 			    Tk_Cursor cursor));
1232 EXTERN char *		Tk_NameOfFontStruct _ANSI_ARGS_((
1233 			    XFontStruct *fontStructPtr));
1234 EXTERN char *		Tk_NameOfImage _ANSI_ARGS_((
1235 			    Tk_ImageMaster imageMaster));
1236 EXTERN char *		Tk_NameOfJoinStyle _ANSI_ARGS_((int join));
1237 EXTERN char *		Tk_NameOfJustify _ANSI_ARGS_((Tk_Justify justify));
1238 EXTERN char *		Tk_NameOfRelief _ANSI_ARGS_((int relief));
1239 EXTERN Tk_Window	Tk_NameToWindow _ANSI_ARGS_((Tcl_Interp *interp,
1240 			    char *pathName, Tk_Window tkwin));
1241 EXTERN void		Tk_OwnSelection _ANSI_ARGS_((Tk_Window tkwin,
1242 			    Atom selection, Tk_LostSelProc *proc,
1243 			    ClientData clientData));
1244 EXTERN int		Tk_ParseArgv _ANSI_ARGS_((Tcl_Interp *interp,
1245 			    Tk_Window tkwin, int *argcPtr, char **argv,
1246 			    Tk_ArgvInfo *argTable, int flags));
1247 EXTERN void		Tk_PhotoPutBlock _ANSI_ARGS_((Tk_PhotoHandle handle,
1248 			    Tk_PhotoImageBlock *blockPtr, int x, int y,
1249 			    int width, int height));
1250 EXTERN void		Tk_PhotoPutZoomedBlock _ANSI_ARGS_((
1251 			    Tk_PhotoHandle handle,
1252 			    Tk_PhotoImageBlock *blockPtr, int x, int y,
1253 			    int width, int height, int zoomX, int zoomY,
1254 			    int subsampleX, int subsampleY));
1255 EXTERN int		Tk_PhotoGetImage _ANSI_ARGS_((Tk_PhotoHandle handle,
1256 			    Tk_PhotoImageBlock *blockPtr));
1257 EXTERN void		Tk_PhotoBlank _ANSI_ARGS_((Tk_PhotoHandle handle));
1258 EXTERN void		Tk_PhotoExpand _ANSI_ARGS_((Tk_PhotoHandle handle,
1259 			    int width, int height ));
1260 EXTERN void		Tk_PhotoGetSize _ANSI_ARGS_((Tk_PhotoHandle handle,
1261 			    int *widthPtr, int *heightPtr));
1262 EXTERN void		Tk_PhotoSetSize _ANSI_ARGS_((Tk_PhotoHandle handle,
1263 			    int width, int height));
1264 EXTERN void		Tk_PreserveColormap _ANSI_ARGS_((Display *display,
1265 			    Colormap colormap));
1266 EXTERN void		Tk_QueueWindowEvent _ANSI_ARGS_((XEvent *eventPtr,
1267 			    Tcl_QueuePosition position));
1268 EXTERN void		Tk_RedrawImage _ANSI_ARGS_((Tk_Image image, int imageX,
1269 			    int imageY, int width, int height,
1270 			    Drawable drawable, int drawableX, int drawableY));
1271 EXTERN void		Tk_ResizeWindow _ANSI_ARGS_((Tk_Window tkwin,
1272 			    int width, int height));
1273 EXTERN int		Tk_RestackWindow _ANSI_ARGS_((Tk_Window tkwin,
1274 			    int aboveBelow, Tk_Window other));
1275 EXTERN Tk_RestrictProc *Tk_RestrictEvents _ANSI_ARGS_((Tk_RestrictProc *proc,
1276 			    ClientData arg, ClientData *prevArgPtr));
1277 EXTERN char *		Tk_SetAppName _ANSI_ARGS_((Tk_Window tkwin,
1278 			    char *name));
1279 EXTERN void		Tk_SetBackgroundFromBorder _ANSI_ARGS_((
1280 			    Tk_Window tkwin, Tk_3DBorder border));
1281 EXTERN void		Tk_SetClass _ANSI_ARGS_((Tk_Window tkwin,
1282 			    char *className));
1283 EXTERN void		Tk_SetGrid _ANSI_ARGS_((Tk_Window tkwin,
1284 			    int reqWidth, int reqHeight, int gridWidth,
1285 			    int gridHeight));
1286 EXTERN void		Tk_SetInternalBorder _ANSI_ARGS_((Tk_Window tkwin,
1287 			    int width));
1288 EXTERN void		Tk_SetWindowBackground _ANSI_ARGS_((Tk_Window tkwin,
1289 			    unsigned long pixel));
1290 EXTERN void		Tk_SetWindowBackgroundPixmap _ANSI_ARGS_((
1291 			    Tk_Window tkwin, Pixmap pixmap));
1292 EXTERN void		Tk_SetWindowBorder _ANSI_ARGS_((Tk_Window tkwin,
1293 			    unsigned long pixel));
1294 EXTERN void		Tk_SetWindowBorderWidth _ANSI_ARGS_((Tk_Window tkwin,
1295 			    int width));
1296 EXTERN void		Tk_SetWindowBorderPixmap _ANSI_ARGS_((Tk_Window tkwin,
1297 			    Pixmap pixmap));
1298 EXTERN void		Tk_SetWindowColormap _ANSI_ARGS_((Tk_Window tkwin,
1299 			    Colormap colormap));
1300 EXTERN int		Tk_SetWindowVisual _ANSI_ARGS_((Tk_Window tkwin,
1301 			    Visual *visual, int depth,
1302 			    Colormap colormap));
1303 EXTERN void		Tk_SizeOfBitmap _ANSI_ARGS_((Display *display,
1304 			    Pixmap bitmap, int *widthPtr,
1305 			    int *heightPtr));
1306 EXTERN void		Tk_SizeOfImage _ANSI_ARGS_((Tk_Image image,
1307 			    int *widthPtr, int *heightPtr));
1308 EXTERN int		Tk_StrictMotif _ANSI_ARGS_((Tk_Window tkwin));
1309 EXTERN void		Tk_UndefineCursor _ANSI_ARGS_((Tk_Window window));
1310 EXTERN void		Tk_Ungrab _ANSI_ARGS_((Tk_Window tkwin));
1311 EXTERN void		Tk_UnmaintainGeometry _ANSI_ARGS_((Tk_Window slave,
1312 			    Tk_Window master));
1313 EXTERN void		Tk_UnmapWindow _ANSI_ARGS_((Tk_Window tkwin));
1314 EXTERN void		Tk_UnsetGrid _ANSI_ARGS_((Tk_Window tkwin));
1315 
1316 /*
1317  * Tcl commands exported by Tk:
1318  */
1319 
1320 EXTERN int		Tk_AfterCmd _ANSI_ARGS_((ClientData clientData,
1321 			    Tcl_Interp *interp, int argc, char **argv));
1322 EXTERN int		Tk_BellCmd _ANSI_ARGS_((ClientData clientData,
1323 			    Tcl_Interp *interp, int argc, char **argv));
1324 EXTERN int		Tk_BindCmd _ANSI_ARGS_((ClientData clientData,
1325 			    Tcl_Interp *interp, int argc, char **argv));
1326 EXTERN int		Tk_BindtagsCmd _ANSI_ARGS_((ClientData clientData,
1327 			    Tcl_Interp *interp, int argc, char **argv));
1328 EXTERN int		Tk_ButtonCmd _ANSI_ARGS_((ClientData clientData,
1329 			    Tcl_Interp *interp, int argc, char **argv));
1330 EXTERN int		Tk_CanvasCmd _ANSI_ARGS_((ClientData clientData,
1331 			    Tcl_Interp *interp, int argc, char **argv));
1332 EXTERN int		Tk_CheckbuttonCmd _ANSI_ARGS_((ClientData clientData,
1333 			    Tcl_Interp *interp, int argc, char **argv));
1334 EXTERN int		Tk_ClipboardCmd _ANSI_ARGS_((ClientData clientData,
1335 			    Tcl_Interp *interp, int argc, char **argv));
1336 EXTERN int              Tk_ChooseColorCmd _ANSI_ARGS_((ClientData clientData,
1337                             Tcl_Interp *interp, int argc, char **argv));
1338 EXTERN int              Tk_ChooseFontCmd _ANSI_ARGS_((ClientData clientData,
1339                             Tcl_Interp *interp, int argc, char **argv));
1340 EXTERN int		Tk_DestroyCmd _ANSI_ARGS_((ClientData clientData,
1341 			    Tcl_Interp *interp, int argc, char **argv));
1342 EXTERN int		Tk_EntryCmd _ANSI_ARGS_((ClientData clientData,
1343 			    Tcl_Interp *interp, int argc, char **argv));
1344 EXTERN int		Tk_EventCmd _ANSI_ARGS_((ClientData clientData,
1345 			    Tcl_Interp *interp, int argc, char **argv));
1346 EXTERN int		Tk_FileeventCmd _ANSI_ARGS_((ClientData clientData,
1347 			    Tcl_Interp *interp, int argc, char **argv));
1348 EXTERN int		Tk_FrameCmd _ANSI_ARGS_((ClientData clientData,
1349 			    Tcl_Interp *interp, int argc, char **argv));
1350 EXTERN int		Tk_FocusCmd _ANSI_ARGS_((ClientData clientData,
1351 			    Tcl_Interp *interp, int argc, char **argv));
1352 EXTERN int              Tk_GetOpenFileCmd _ANSI_ARGS_((ClientData clientData,
1353                             Tcl_Interp *interp, int argc, char **argv));
1354 EXTERN int              Tk_GetSaveFileCmd _ANSI_ARGS_((ClientData clientData,
1355                             Tcl_Interp *interp, int argc, char **argv));
1356 EXTERN int		Tk_GrabCmd _ANSI_ARGS_((ClientData clientData,
1357 			    Tcl_Interp *interp, int argc, char **argv));
1358 EXTERN int		Tk_GridCmd _ANSI_ARGS_((ClientData clientData,
1359 			    Tcl_Interp *interp, int argc, char **argv));
1360 EXTERN int		Tk_ImageCmd _ANSI_ARGS_((ClientData clientData,
1361 			    Tcl_Interp *interp, int argc, char **argv));
1362 EXTERN int		Tk_LabelCmd _ANSI_ARGS_((ClientData clientData,
1363 			    Tcl_Interp *interp, int argc, char **argv));
1364 EXTERN int		Tk_ListboxCmd _ANSI_ARGS_((ClientData clientData,
1365 			    Tcl_Interp *interp, int argc, char **argv));
1366 EXTERN int		Tk_LowerCmd _ANSI_ARGS_((ClientData clientData,
1367 			    Tcl_Interp *interp, int argc, char **argv));
1368 EXTERN int		Tk_MenuCmd _ANSI_ARGS_((ClientData clientData,
1369 			    Tcl_Interp *interp, int argc, char **argv));
1370 EXTERN int		Tk_MenubuttonCmd _ANSI_ARGS_((ClientData clientData,
1371 			    Tcl_Interp *interp, int argc, char **argv));
1372 EXTERN int              Tk_MessageBoxCmd _ANSI_ARGS_((ClientData clientData,
1373                             Tcl_Interp *interp, int argc, char **argv));
1374 EXTERN int		Tk_MessageCmd _ANSI_ARGS_((ClientData clientData,
1375 			    Tcl_Interp *interp, int argc, char **argv));
1376 EXTERN int		Tk_OptionCmd _ANSI_ARGS_((ClientData clientData,
1377 			    Tcl_Interp *interp, int argc, char **argv));
1378 EXTERN int		Tk_PackCmd _ANSI_ARGS_((ClientData clientData,
1379 			    Tcl_Interp *interp, int argc, char **argv));
1380 EXTERN int		Tk_PlaceCmd _ANSI_ARGS_((ClientData clientData,
1381 			    Tcl_Interp *interp, int argc, char **argv));
1382 EXTERN int		Tk_RadiobuttonCmd _ANSI_ARGS_((ClientData clientData,
1383 			    Tcl_Interp *interp, int argc, char **argv));
1384 EXTERN int		Tk_RaiseCmd _ANSI_ARGS_((ClientData clientData,
1385 			    Tcl_Interp *interp, int argc, char **argv));
1386 EXTERN int		Tk_ScaleCmd _ANSI_ARGS_((ClientData clientData,
1387 			    Tcl_Interp *interp, int argc, char **argv));
1388 EXTERN int		Tk_ScrollbarCmd _ANSI_ARGS_((ClientData clientData,
1389 			    Tcl_Interp *interp, int argc, char **argv));
1390 EXTERN int		Tk_SelectionCmd _ANSI_ARGS_((ClientData clientData,
1391 			    Tcl_Interp *interp, int argc, char **argv));
1392 EXTERN int		Tk_SendCmd _ANSI_ARGS_((ClientData clientData,
1393 			    Tcl_Interp *interp, int argc, char **argv));
1394 EXTERN int		Tk_TextCmd _ANSI_ARGS_((ClientData clientData,
1395 			    Tcl_Interp *interp, int argc, char **argv));
1396 EXTERN int		Tk_TkCmd _ANSI_ARGS_((ClientData clientData,
1397 			    Tcl_Interp *interp, int argc, char **argv));
1398 EXTERN int		Tk_TkwaitCmd _ANSI_ARGS_((ClientData clientData,
1399 			    Tcl_Interp *interp, int argc, char **argv));
1400 EXTERN int		Tk_ToplevelCmd _ANSI_ARGS_((ClientData clientData,
1401 			    Tcl_Interp *interp, int argc, char **argv));
1402 EXTERN int		Tk_UpdateCmd _ANSI_ARGS_((ClientData clientData,
1403 			    Tcl_Interp *interp, int argc, char **argv));
1404 EXTERN int		Tk_WinfoCmd _ANSI_ARGS_((ClientData clientData,
1405 			    Tcl_Interp *interp, int argc, char **argv));
1406 EXTERN int		Tk_WmCmd _ANSI_ARGS_((ClientData clientData,
1407 			    Tcl_Interp *interp, int argc, char **argv));
1408 
1409 #undef	extern
1410 
1411 #endif /* RESOURCE_INCLUDED */
1412 #endif /* _TK */
1413