Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / sun4-solaris / Tk / pTk / tkInt.h
CommitLineData
86530b38
AT
1/*
2 * tkInt.h --
3 *
4 * Declarations for things used internally by the Tk
5 * procedures but not exported outside the module.
6 *
7 * Copyright (c) 1990-1994 The Regents of the University of California.
8 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
9 * Copyright (c) 1998 by Scriptics Corporation.
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 * RCS: $Id: tkInt.h,v 1.8 1998/09/30 19:01:20 rjohnson Exp $
15 */
16
17#ifndef _TKINT
18#define _TKINT
19
20#ifndef _TK
21#include "tk.h"
22#endif
23#ifdef BUILD_tk
24# undef TCL_STORAGE_CLASS
25# define TCL_STORAGE_CLASS DLLEXPORT
26#endif
27
28/*
29 * Opaque type declarations:
30 */
31
32typedef struct TkColormap TkColormap;
33typedef struct TkGrabEvent TkGrabEvent;
34typedef struct TkpCursor_ *TkpCursor;
35typedef struct TkRegion_ *TkRegion;
36typedef struct TkStressedCmap TkStressedCmap;
37typedef struct TkBindInfo_ *TkBindInfo;
38
39/*
40 * Procedure types.
41 */
42
43typedef int (TkBindEvalProc) _ANSI_ARGS_((ClientData clientData,
44 Tcl_Interp *interp, XEvent *eventPtr, Tk_Window tkwin,
45 KeySym keySym));
46typedef void (TkBindFreeProc) _ANSI_ARGS_((ClientData clientData));
47typedef Window (TkClassCreateProc) _ANSI_ARGS_((Tk_Window tkwin,
48 Window parent, ClientData instanceData));
49typedef void (TkClassGeometryProc) _ANSI_ARGS_((ClientData instanceData));
50typedef void (TkClassModalProc) _ANSI_ARGS_((Tk_Window tkwin,
51 XEvent *eventPtr));
52
53
54/*
55 * Widget class procedures used to implement platform specific widget
56 * behavior.
57 */
58
59typedef struct TkClassProcs {
60 TkClassCreateProc *createProc;
61 /* Procedure to invoke when the
62 platform-dependent window needs to be
63 created. */
64 TkClassGeometryProc *geometryProc;
65 /* Procedure to invoke when the geometry of a
66 window needs to be recalculated as a result
67 of some change in the system. */
68 TkClassModalProc *modalProc;
69 /* Procedure to invoke after all bindings on a
70 widget have been triggered in order to
71 handle a modal loop. */
72} TkClassProcs;
73
74/*
75 * One of the following structures is maintained for each cursor in
76 * use in the system. This structure is used by tkCursor.c and the
77 * various system specific cursor files.
78 */
79
80typedef struct TkCursor {
81 Tk_Cursor cursor; /* System specific identifier for cursor. */
82 int refCount; /* Number of active uses of cursor. */
83 Tcl_HashTable *otherTable; /* Second table (other than idTable) used
84 * to index this entry. */
85 Tcl_HashEntry *hashPtr; /* Entry in otherTable for this structure
86 * (needed when deleting). */
87} TkCursor;
88
89/*
90 * One of the following structures is maintained for each display
91 * containing a window managed by Tk:
92 */
93
94typedef struct TkDisplay {
95 Display *display; /* Xlib's info about display. */
96 struct TkDisplay *nextPtr; /* Next in list of all displays. */
97 char *name; /* Name of display (with any screen
98 * identifier removed). Malloc-ed. */
99 Time lastEventTime; /* Time of last event received for this
100 * display. */
101
102 /*
103 * Information used primarily by tkBind.c:
104 */
105
106 int bindInfoStale; /* Non-zero means the variables in this
107 * part of the structure are potentially
108 * incorrect and should be recomputed. */
109 unsigned int modeModMask; /* Has one bit set to indicate the modifier
110 * corresponding to "mode shift". If no
111 * such modifier, than this is zero. */
112 unsigned int metaModMask; /* Has one bit set to indicate the modifier
113 * corresponding to the "Meta" key. If no
114 * such modifier, then this is zero. */
115 unsigned int altModMask; /* Has one bit set to indicate the modifier
116 * corresponding to the "Meta" key. If no
117 * such modifier, then this is zero. */
118 enum {LU_IGNORE, LU_CAPS, LU_SHIFT} lockUsage;
119 /* Indicates how to interpret lock modifier. */
120 int numModKeyCodes; /* Number of entries in modKeyCodes array
121 * below. */
122 KeyCode *modKeyCodes; /* Pointer to an array giving keycodes for
123 * all of the keys that have modifiers
124 * associated with them. Malloc'ed, but
125 * may be NULL. */
126
127 /*
128 * Information used by tkError.c only:
129 */
130
131 struct TkErrorHandler *errorPtr;
132 /* First in list of error handlers
133 * for this display. NULL means
134 * no handlers exist at present. */
135 int deleteCount; /* Counts # of handlers deleted since
136 * last time inactive handlers were
137 * garbage-collected. When this number
138 * gets big, handlers get cleaned up. */
139
140 /*
141 * Information used by tkSend.c only:
142 */
143
144 Tk_Window commTkwin; /* Window used for communication
145 * between interpreters during "send"
146 * commands. NULL means send info hasn't
147 * been initialized yet. */
148 Atom commProperty; /* X's name for comm property. */
149 Atom registryProperty; /* X's name for property containing
150 * registry of interpreter names. */
151 Atom appNameProperty; /* X's name for property used to hold the
152 * application name on each comm window. */
153
154 /*
155 * Information used by tkSelect.c and tkClipboard.c only:
156 */
157
158 struct TkSelectionInfo *selectionInfoPtr;
159 /* First in list of selection information
160 * records. Each entry contains information
161 * about the current owner of a particular
162 * selection on this display. */
163 Atom multipleAtom; /* Atom for MULTIPLE. None means
164 * selection stuff isn't initialized. */
165 Atom incrAtom; /* Atom for INCR. */
166 Atom targetsAtom; /* Atom for TARGETS. */
167 Atom timestampAtom; /* Atom for TIMESTAMP. */
168 Atom textAtom; /* Atom for TEXT. */
169 Atom compoundTextAtom; /* Atom for COMPOUND_TEXT. */
170 Atom applicationAtom; /* Atom for TK_APPLICATION. */
171 Atom windowAtom; /* Atom for TK_WINDOW. */
172 Atom clipboardAtom; /* Atom for CLIPBOARD. */
173
174 Tk_Window clipWindow; /* Window used for clipboard ownership and to
175 * retrieve selections between processes. NULL
176 * means clipboard info hasn't been
177 * initialized. */
178 int clipboardActive; /* 1 means we currently own the clipboard
179 * selection, 0 means we don't. */
180 struct TkMainInfo *clipboardAppPtr;
181 /* Last application that owned clipboard. */
182 struct TkClipboardTarget *clipTargetPtr;
183 /* First in list of clipboard type information
184 * records. Each entry contains information
185 * about the buffers for a given selection
186 * target. */
187
188 /*
189 * Information used by tkAtom.c only:
190 */
191
192 int atomInit; /* 0 means stuff below hasn't been
193 * initialized yet. */
194 Tcl_HashTable nameTable; /* Maps from names to Atom's. */
195 Tcl_HashTable atomTable; /* Maps from Atom's back to names. */
196
197 /*
198 * Information used by tkCursor.c only:
199 */
200
201 Font cursorFont; /* Font to use for standard cursors.
202 * None means font not loaded yet. */
203
204 /*
205 * Information used by tkGrab.c only:
206 */
207
208 struct TkWindow *grabWinPtr;
209 /* Window in which the pointer is currently
210 * grabbed, or NULL if none. */
211 struct TkWindow *eventualGrabWinPtr;
212 /* Value that grabWinPtr will have once the
213 * grab event queue (below) has been
214 * completely emptied. */
215 struct TkWindow *buttonWinPtr;
216 /* Window in which first mouse button was
217 * pressed while grab was in effect, or NULL
218 * if no such press in effect. */
219 struct TkWindow *serverWinPtr;
220 /* If no application contains the pointer then
221 * this is NULL. Otherwise it contains the
222 * last window for which we've gotten an
223 * Enter or Leave event from the server (i.e.
224 * the last window known to have contained
225 * the pointer). Doesn't reflect events
226 * that were synthesized in tkGrab.c. */
227 TkGrabEvent *firstGrabEventPtr;
228 /* First in list of enter/leave events
229 * synthesized by grab code. These events
230 * must be processed in order before any other
231 * events are processed. NULL means no such
232 * events. */
233 TkGrabEvent *lastGrabEventPtr;
234 /* Last in list of synthesized events, or NULL
235 * if list is empty. */
236 int grabFlags; /* Miscellaneous flag values. See definitions
237 * in tkGrab.c. */
238
239 /*
240 * Information used by tkXId.c only:
241 */
242
243 struct TkIdStack *idStackPtr;
244 /* First in list of chunks of free resource
245 * identifiers, or NULL if there are no free
246 * resources. */
247 XID (*defaultAllocProc) _ANSI_ARGS_((Display *display));
248 /* Default resource allocator for display. */
249 struct TkIdStack *windowStackPtr;
250 /* First in list of chunks of window
251 * identifers that can't be reused right
252 * now. */
253 int idCleanupScheduled; /* 1 means a call to WindowIdCleanup has
254 * already been scheduled, 0 means it
255 * hasn't. */
256
257 /*
258 * Information maintained by tkWindow.c for use later on by tkXId.c:
259 */
260
261
262 int destroyCount; /* Number of Tk_DestroyWindow operations
263 * in progress. */
264 unsigned long lastDestroyRequest;
265 /* Id of most recent XDestroyWindow request;
266 * can re-use ids in windowStackPtr when
267 * server has seen this request and event
268 * queue is empty. */
269
270 /*
271 * Information used by tkVisual.c only:
272 */
273
274 TkColormap *cmapPtr; /* First in list of all non-default colormaps
275 * allocated for this display. */
276
277 /*
278 * Information used by tkFocus.c only:
279 */
280
281 struct TkWindow *implicitWinPtr;
282 /* If the focus arrived at a toplevel window
283 * implicitly via an Enter event (rather
284 * than via a FocusIn event), this points
285 * to the toplevel window. Otherwise it is
286 * NULL. */
287 struct TkWindow *focusPtr; /* Points to the window on this display that
288 * should be receiving keyboard events. When
289 * multiple applications on the display have
290 * the focus, this will refer to the
291 * innermost window in the innermost
292 * application. This information isn't used
293 * under Unix or Windows, but it's needed on
294 * the Macintosh. */
295
296 /*
297 * Used by tkColor.c only:
298 */
299
300 TkStressedCmap *stressPtr; /* First in list of colormaps that have
301 * filled up, so we have to pick an
302 * approximate color. */
303
304 /*
305 * Used by tkEvent.c only:
306 */
307
308 struct TkWindowEvent *delayedMotionPtr;
309 /* Points to a malloc-ed motion event
310 * whose processing has been delayed in
311 * the hopes that another motion event
312 * will come along right away and we can
313 * merge the two of them together. NULL
314 * means that there is no delayed motion
315 * event. */
316
317 /*
318 * Miscellaneous information:
319 */
320
321#ifdef TK_USE_INPUT_METHODS
322 XIM inputMethod; /* Input method for this display */
323#endif /* TK_USE_INPUT_METHODS */
324 Tcl_HashTable winTable; /* Maps from X window ids to TkWindow ptrs. */
325
326 int refCount; /* Reference count of how many Tk applications
327 * are using this display. Used to clean up
328 * the display when we no longer have any
329 * Tk applications using it.
330 */
331 int mouseButtonState; /* current mouse button state for this
332 * display */
333 int warpInProgress;
334 Window warpWindow;
335 int warpX;
336 int warpY;
337} TkDisplay;
338
339/*
340 * One of the following structures exists for each error handler
341 * created by a call to Tk_CreateErrorHandler. The structure
342 * is managed by tkError.c.
343 */
344
345typedef struct TkErrorHandler {
346 TkDisplay *dispPtr; /* Display to which handler applies. */
347 unsigned long firstRequest; /* Only errors with serial numbers
348 * >= to this are considered. */
349 unsigned long lastRequest; /* Only errors with serial numbers
350 * <= to this are considered. This
351 * field is filled in when XUnhandle
352 * is called. -1 means XUnhandle
353 * hasn't been called yet. */
354 int error; /* Consider only errors with this
355 * error_code (-1 means consider
356 * all errors). */
357 int request; /* Consider only errors with this
358 * major request code (-1 means
359 * consider all major codes). */
360 int minorCode; /* Consider only errors with this
361 * minor request code (-1 means
362 * consider all minor codes). */
363 Tk_ErrorProc *errorProc; /* Procedure to invoke when a matching
364 * error occurs. NULL means just ignore
365 * errors. */
366 ClientData clientData; /* Arbitrary value to pass to
367 * errorProc. */
368 struct TkErrorHandler *nextPtr;
369 /* Pointer to next older handler for
370 * this display, or NULL for end of
371 * list. */
372} TkErrorHandler;
373
374/*
375 * One of the following structures exists for each event handler
376 * created by calling Tk_CreateEventHandler. This information
377 * is used by tkEvent.c only.
378 */
379
380typedef struct TkEventHandler {
381 unsigned long mask; /* Events for which to invoke
382 * proc. */
383 Tk_EventProc *proc; /* Procedure to invoke when an event
384 * in mask occurs. */
385 ClientData clientData; /* Argument to pass to proc. */
386 struct TkEventHandler *nextPtr;
387 /* Next in list of handlers
388 * associated with window (NULL means
389 * end of list). */
390} TkEventHandler;
391
392/*
393 * Tk keeps one of the following data structures for each main
394 * window (created by a call to Tk_CreateMainWindow). It stores
395 * information that is shared by all of the windows associated
396 * with a particular main window.
397 */
398
399typedef struct TkMainInfo {
400 int refCount; /* Number of windows whose "mainPtr" fields
401 * point here. When this becomes zero, can
402 * free up the structure (the reference
403 * count is zero because windows can get
404 * deleted in almost any order; the main
405 * window isn't necessarily the last one
406 * deleted). */
407 struct TkWindow *winPtr; /* Pointer to main window. */
408 Tcl_Interp *interp; /* Interpreter associated with application. */
409 Tcl_HashTable nameTable; /* Hash table mapping path names to TkWindow
410 * structs for all windows related to this
411 * main window. Managed by tkWindow.c. */
412 Tk_BindingTable bindingTable;
413 /* Used in conjunction with "bind" command
414 * to bind events to Tcl commands. */
415 TkBindInfo bindInfo; /* Information used by tkBind.c on a per
416 * interpreter basis. */
417 struct TkFontInfo *fontInfoPtr;
418 /* Hold named font tables. Used only by
419 * tkFont.c. */
420
421 /*
422 * Information used only by tkFocus.c and tk*Embed.c:
423 */
424
425 struct TkToplevelFocusInfo *tlFocusPtr;
426 /* First in list of records containing focus
427 * information for each top-level in the
428 * application. Used only by tkFocus.c. */
429 struct TkDisplayFocusInfo *displayFocusPtr;
430 /* First in list of records containing focus
431 * information for each display that this
432 * application has ever used. Used only
433 * by tkFocus.c. */
434
435 struct ElArray *optionRootPtr;
436 /* Top level of option hierarchy for this
437 * main window. NULL means uninitialized.
438 * Managed by tkOption.c. */
439 Tcl_HashTable imageTable; /* Maps from image names to Tk_ImageMaster
440 * structures. Managed by tkImage.c. */
441 int strictMotif; /* This is linked to the tk_strictMotif
442 * global variable. */
443 struct TkMainInfo *nextPtr; /* Next in list of all main windows managed by
444 * this process. */
445} TkMainInfo;
446
447/*
448 * Tk keeps the following data structure for each of it's builtin
449 * bitmaps. This structure is only used by tkBitmap.c and other
450 * platform specific bitmap files.
451 */
452
453typedef struct {
454 char *source; /* Bits for bitmap. */
455 int width, height; /* Dimensions of bitmap. */
456 int native; /* 0 means generic (X style) bitmap,
457 * 1 means native style bitmap. */
458} TkPredefBitmap;
459
460/*
461 * Tk keeps one of the following structures for each window.
462 * Some of the information (like size and location) is a shadow
463 * of information managed by the X server, and some is special
464 * information used here, such as event and geometry management
465 * information. This information is (mostly) managed by tkWindow.c.
466 * WARNING: the declaration below must be kept consistent with the
467 * Tk_FakeWin structure in tk.h. If you change one, be sure to
468 * change the other!!
469 */
470
471typedef struct TkWindow {
472
473 /*
474 * Structural information:
475 */
476
477 Display *display; /* Display containing window. */
478 TkDisplay *dispPtr; /* Tk's information about display
479 * for window. */
480 int screenNum; /* Index of screen for window, among all
481 * those for dispPtr. */
482 Visual *visual; /* Visual to use for window. If not default,
483 * MUST be set before X window is created. */
484 int depth; /* Number of bits/pixel. */
485 Window window; /* X's id for window. NULL means window
486 * hasn't actually been created yet, or it's
487 * been deleted. */
488 struct TkWindow *childList; /* First in list of child windows,
489 * or NULL if no children. List is in
490 * stacking order, lowest window first.*/
491 struct TkWindow *lastChildPtr;
492 /* Last in list of child windows (highest
493 * in stacking order), or NULL if no
494 * children. */
495 struct TkWindow *parentPtr; /* Pointer to parent window (logical
496 * parent, not necessarily X parent). NULL
497 * means either this is the main window, or
498 * the window's parent has already been
499 * deleted. */
500 struct TkWindow *nextPtr; /* Next higher sibling (in stacking order)
501 * in list of children with same parent. NULL
502 * means end of list. */
503 TkMainInfo *mainPtr; /* Information shared by all windows
504 * associated with a particular main
505 * window. NULL means this window is
506 * a rogue that isn't associated with
507 * any application (at present, this
508 * only happens for the dummy windows
509 * used for "send" communication). */
510
511 /*
512 * Name and type information for the window:
513 */
514
515 char *pathName; /* Path name of window (concatenation
516 * of all names between this window and
517 * its top-level ancestor). This is a
518 * pointer into an entry in
519 * mainPtr->nameTable. NULL means that
520 * the window hasn't been completely
521 * created yet. */
522 Tk_Uid nameUid; /* Name of the window within its parent
523 * (unique within the parent). */
524 Tk_Uid classUid; /* Class of the window. NULL means window
525 * hasn't been given a class yet. */
526
527 /*
528 * Geometry and other attributes of window. This information
529 * may not be updated on the server immediately; stuff that
530 * hasn't been reflected in the server yet is called "dirty".
531 * At present, information can be dirty only if the window
532 * hasn't yet been created.
533 */
534
535 XWindowChanges changes; /* Geometry and other info about
536 * window. */
537 unsigned int dirtyChanges; /* Bits indicate fields of "changes"
538 * that are dirty. */
539 XSetWindowAttributes atts; /* Current attributes of window. */
540 unsigned long dirtyAtts; /* Bits indicate fields of "atts"
541 * that are dirty. */
542
543 unsigned int flags; /* Various flag values: these are all
544 * defined in tk.h (confusing, but they're
545 * needed there for some query macros). */
546
547 /*
548 * Information kept by the event manager (tkEvent.c):
549 */
550
551 TkEventHandler *handlerList;/* First in list of event handlers
552 * declared for this window, or
553 * NULL if none. */
554#ifdef TK_USE_INPUT_METHODS
555 XIC inputContext; /* Input context (for input methods). */
556#endif /* TK_USE_INPUT_METHODS */
557
558 /*
559 * Information used for event bindings (see "bind" and "bindtags"
560 * commands in tkCmds.c):
561 */
562
563 ClientData *tagPtr; /* Points to array of tags used for bindings
564 * on this window. Each tag is a Tk_Uid.
565 * Malloc'ed. NULL means no tags. */
566 int numTags; /* Number of tags at *tagPtr. */
567
568 /*
569 * Information used by tkOption.c to manage options for the
570 * window.
571 */
572
573 int optionLevel; /* -1 means no option information is
574 * currently cached for this window.
575 * Otherwise this gives the level in
576 * the option stack at which info is
577 * cached. */
578 /*
579 * Information used by tkSelect.c to manage the selection.
580 */
581
582 struct TkSelHandler *selHandlerList;
583 /* First in list of handlers for
584 * returning the selection in various
585 * forms. */
586
587 /*
588 * Information used by tkGeometry.c for geometry management.
589 */
590
591 Tk_GeomMgr *geomMgrPtr; /* Information about geometry manager for
592 * this window. */
593 ClientData geomData; /* Argument for geometry manager procedures. */
594 int reqWidth, reqHeight; /* Arguments from last call to
595 * Tk_GeometryRequest, or 0's if
596 * Tk_GeometryRequest hasn't been
597 * called. */
598 int internalBorderWidth; /* Width of internal border of window
599 * (0 means no internal border). Geometry
600 * managers should not normally place children
601 * on top of the border. */
602
603 /*
604 * Information maintained by tkWm.c for window manager communication.
605 */
606
607 struct TkWmInfo *wmInfoPtr; /* For top-level windows (and also
608 * for special Unix menubar and wrapper
609 * windows), points to structure with
610 * wm-related info (see tkWm.c). For
611 * other windows, this is NULL. */
612
613 /*
614 * Information used by widget classes.
615 */
616
617 TkClassProcs *classProcsPtr;
618 ClientData instanceData;
619
620 /*
621 * Platform specific information private to each port.
622 */
623
624 struct TkWindowPrivate *privatePtr;
625} TkWindow;
626
627/*
628 * The following structure is used as a two way map between integers
629 * and strings, usually to map between an internal C representation
630 * and the strings used in Tcl.
631 */
632
633typedef struct TkStateMap {
634 int numKey; /* Integer representation of a value. */
635 char *strKey; /* String representation of a value. */
636} TkStateMap;
637
638/*
639 * This structure is used by the Mac and Window porting layers as
640 * the internal representation of a clip_mask in a GC.
641 */
642
643typedef struct TkpClipMask {
644 int type; /* One of TKP_CLIP_PIXMAP or TKP_CLIP_REGION */
645 union {
646 Pixmap pixmap;
647 TkRegion region;
648 } value;
649} TkpClipMask;
650
651#define TKP_CLIP_PIXMAP 0
652#define TKP_CLIP_REGION 1
653
654/*
655 * Pointer to first entry in list of all displays currently known.
656 */
657
658extern TkDisplay *tkDisplayList;
659
660/*
661 * Return values from TkGrabState:
662 */
663
664#define TK_GRAB_NONE 0
665#define TK_GRAB_IN_TREE 1
666#define TK_GRAB_ANCESTOR 2
667#define TK_GRAB_EXCLUDED 3
668
669/*
670 * The macro below is used to modify a "char" value (e.g. by casting
671 * it to an unsigned character) so that it can be used safely with
672 * macros such as isspace.
673 */
674
675#define UCHAR(c) ((unsigned char) (c))
676
677/*
678 * The following symbol is used in the mode field of FocusIn events
679 * generated by an embedded application to request the input focus from
680 * its container.
681 */
682
683#define EMBEDDED_APP_WANTS_FOCUS (NotifyNormal + 20)
684
685/*
686 * Miscellaneous variables shared among Tk modules but not exported
687 * to the outside world:
688 */
689typedef void TkDelayedEventProc _ANSI_ARGS_((void));
690typedef void tkHandleEventProc_t _ANSI_ARGS_((XEvent* eventPtr));
691
692extern Tk_Uid tkActiveUid;
693extern Tk_SmoothMethod tkBezierSmoothMethod;
694EXTERN Tk_ImageType tkBitmapImageType;
695EXTERN Tk_ImageType tkPixmapImageType;
696extern Tk_Uid tkDisabledUid;
697EXTERN Tk_PhotoImageFormat tkImgFmtGIF;
698extern tkHandleEventProc_t *tkHandleEventProc;
699EXTERN Tk_PhotoImageFormat tkImgFmtPPM;
700extern TkMainInfo *tkMainWindowList;
701extern Tk_Uid tkNormalUid;
702EXTERN Tk_ImageType tkPhotoImageType;
703extern Tcl_HashTable tkPredefBitmapTable;
704extern int tkSendSerial;
705
706/*
707 * Internal procedures shared among Tk modules but not exported
708 * to the outside world:
709 */
710
711EXTERN char * TkAlignImageData _ANSI_ARGS_((XImage *image,
712 int alignment, int bitOrder));
713EXTERN TkWindow * TkAllocWindow _ANSI_ARGS_((TkDisplay *dispPtr,
714 int screenNum, TkWindow *parentPtr));
715EXTERN void TkBezierPoints _ANSI_ARGS_((double control[],
716 int numSteps, double *coordPtr));
717EXTERN void TkBezierScreenPoints _ANSI_ARGS_((Tk_Canvas canvas,
718 double control[], int numSteps,
719 XPoint *xPointPtr));
720EXTERN void TkBindDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
721EXTERN void TkBindEventProc _ANSI_ARGS_((TkWindow *winPtr,
722 XEvent *eventPtr));
723EXTERN void TkBindFree _ANSI_ARGS_((TkMainInfo *mainPtr));
724EXTERN void TkBindInit _ANSI_ARGS_((TkMainInfo *mainPtr));
725EXTERN int TkCanvasGetCoordObj _ANSI_ARGS_((Tcl_Interp *interp,
726 Tk_Canvas canvas, Tcl_Obj *obj,
727 double *doublePtr));
728EXTERN void TkChangeEventWindow _ANSI_ARGS_((XEvent *eventPtr,
729 TkWindow *winPtr));
730EXTERN void TkClassOption _ANSI_ARGS_((Tk_Window tkwin,
731 char *defaultname, int *argcp, Arg **argvp));
732EXTERN void TkClassOptionObj _ANSI_ARGS_((Tk_Window tkwin,
733 char *defaultname, int *objcp, Tcl_Obj * CONST **objvp));
734#ifndef TkClipBox
735EXTERN void TkClipBox _ANSI_ARGS_((TkRegion rgn,
736 XRectangle* rect_return));
737#endif
738EXTERN int TkClipInit _ANSI_ARGS_((Tcl_Interp *interp,
739 TkDisplay *dispPtr));
740EXTERN void TkComputeAnchor _ANSI_ARGS_((Tk_Anchor anchor,
741 Tk_Window tkwin, int padX, int padY,
742 int innerWidth, int innerHeight, int *xPtr,
743 int *yPtr));
744EXTERN int TkCopyAndGlobalEval _ANSI_ARGS_((Tcl_Interp *interp,
745 char *script));
746EXTERN unsigned long TkCreateBindingProcedure _ANSI_ARGS_((
747 Tcl_Interp *interp, Tk_BindingTable bindingTable,
748 ClientData object, char *eventString,
749 TkBindEvalProc *evalProc, TkBindFreeProc *freeProc,
750 ClientData clientData));
751EXTERN TkCursor * TkCreateCursorFromData _ANSI_ARGS_((Tk_Window tkwin,
752 char *source, char *mask, int width, int height,
753 int xHot, int yHot, XColor fg, XColor bg));
754EXTERN int TkCreateFrame _ANSI_ARGS_((ClientData clientData,
755 Tcl_Interp *interp, int argc, Tcl_Obj **objv,
756 int toplevel, char *appName));
757EXTERN Tk_Window TkCreateMainWindow _ANSI_ARGS_((Tcl_Interp *interp,
758 char *screenName, char *baseName));
759#ifndef TkCreateRegion
760EXTERN TkRegion TkCreateRegion _ANSI_ARGS_((void));
761#endif
762EXTERN Time TkCurrentTime _ANSI_ARGS_((TkDisplay *dispPtr));
763EXTERN int TkDeadAppCmd _ANSI_ARGS_((ClientData clientData,
764 Tcl_Interp *interp, int argc, Tcl_Obj **objv));
765EXTERN void TkDeleteAllImages _ANSI_ARGS_((TkMainInfo *mainPtr));
766#ifndef TkDestroyRegion
767EXTERN void TkDestroyRegion _ANSI_ARGS_((TkRegion rgn));
768#endif
769EXTERN void TkDoConfigureNotify _ANSI_ARGS_((TkWindow *winPtr));
770EXTERN void TkDrawInsetFocusHighlight _ANSI_ARGS_((
771 Tk_Window tkwin, GC gc, int width,
772 Drawable drawable, int padding));
773EXTERN void TkEventDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
774EXTERN void TkFillPolygon _ANSI_ARGS_((Tk_Canvas canvas,
775 double *coordPtr, int numPoints, Display *display,
776 Drawable drawable, GC gc, GC outlineGC));
777EXTERN int TkFindStateNum _ANSI_ARGS_((Tcl_Interp *interp,
778 CONST char *option, CONST TkStateMap *mapPtr,
779 CONST char *strKey));
780EXTERN int TkFindStateNumObj _ANSI_ARGS_((Tcl_Interp *interp,
781 Tcl_Obj *optionPtr, CONST TkStateMap *mapPtr,
782 Tcl_Obj *keyPtr));
783EXTERN char * TkFindStateString _ANSI_ARGS_((
784 CONST TkStateMap *mapPtr, int numKey));
785EXTERN void TkFocusDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
786EXTERN int TkFocusFilterEvent _ANSI_ARGS_((TkWindow *winPtr,
787 XEvent *eventPtr));
788EXTERN TkWindow * TkFocusKeyEvent _ANSI_ARGS_((TkWindow *winPtr,
789 XEvent *eventPtr));
790EXTERN void TkFontPkgInit _ANSI_ARGS_((TkMainInfo *mainPtr));
791EXTERN void TkFontPkgFree _ANSI_ARGS_((TkMainInfo *mainPtr));
792EXTERN void TkFreeBindingTags _ANSI_ARGS_((TkWindow *winPtr));
793EXTERN void TkFreeCursor _ANSI_ARGS_((TkCursor *cursorPtr));
794EXTERN void TkFreeWindowId _ANSI_ARGS_((TkDisplay *dispPtr,
795 Window w));
796EXTERN void TkGenerateActivateEvents _ANSI_ARGS_((
797 TkWindow *winPtr, int active));
798EXTERN char * TkGetBitmapData _ANSI_ARGS_((Tcl_Interp *interp,
799 char *string, char *fileName, int *widthPtr,
800 int *heightPtr, int *hotXPtr, int *hotYPtr));
801EXTERN void TkGetButtPoints _ANSI_ARGS_((double p1[], double p2[],
802 double width, int project, double m1[],
803 double m2[]));
804EXTERN TkCursor * TkGetCursorByName _ANSI_ARGS_((Tcl_Interp *interp,
805 Tk_Window tkwin, Arg string));
806EXTERN char * TkGetDefaultScreenName _ANSI_ARGS_((Tcl_Interp *interp,
807 char *screenName));
808EXTERN TkDisplay * TkGetDisplay _ANSI_ARGS_((Display *display));
809EXTERN int TkGetDisplayOf _ANSI_ARGS_((Tcl_Interp *interp,
810 int objc, Tcl_Obj *CONST objv[],
811 Tk_Window *tkwinPtr));
812EXTERN TkWindow * TkGetFocusWin _ANSI_ARGS_((TkWindow *winPtr));
813EXTERN int TkGetInterpNames _ANSI_ARGS_((Tcl_Interp *interp,
814 Tk_Window tkwin));
815EXTERN int TkGetMiterPoints _ANSI_ARGS_((double p1[], double p2[],
816 double p3[], double width, double m1[],
817 double m2[]));
818EXTERN int TkGetPixelsFromObj _ANSI_ARGS_((Tcl_Interp *interp,
819 Tk_Window tkwin, Tcl_Obj *obj, int *intPtr));
820EXTERN void TkGetPointerCoords _ANSI_ARGS_((Tk_Window tkwin,
821 int *xPtr, int *yPtr));
822EXTERN int TkGetProlog _ANSI_ARGS_((Tcl_Interp *interp));
823EXTERN int TkGetScreenMMFromObj _ANSI_ARGS_((Tcl_Interp *interp,
824 Tk_Window tkwin, Tcl_Obj *obj, double *doublePtr));
825EXTERN void TkGetServerInfo _ANSI_ARGS_((Tcl_Interp *interp,
826 Tk_Window tkwin));
827EXTERN void TkGrabDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
828EXTERN int TkGrabState _ANSI_ARGS_((TkWindow *winPtr));
829EXTERN void TkIncludePoint _ANSI_ARGS_((Tk_Item *itemPtr,
830 double *pointPtr));
831EXTERN void TkInitXId _ANSI_ARGS_((TkDisplay *dispPtr));
832EXTERN void TkInOutEvents _ANSI_ARGS_((XEvent *eventPtr,
833 TkWindow *sourcePtr, TkWindow *destPtr,
834 int leaveType, int enterType,
835 Tcl_QueuePosition position));
836EXTERN void TkInstallFrameMenu _ANSI_ARGS_((Tk_Window tkwin));
837#ifndef TkIntersectRegion
838EXTERN void TkIntersectRegion _ANSI_ARGS_((TkRegion sra,
839 TkRegion srcb, TkRegion dr_return));
840#endif
841EXTERN char * TkKeysymToString _ANSI_ARGS_((KeySym keysym));
842EXTERN int TkLineToArea _ANSI_ARGS_((double end1Ptr[2],
843 double end2Ptr[2], double rectPtr[4]));
844EXTERN double TkLineToPoint _ANSI_ARGS_((double end1Ptr[2],
845 double end2Ptr[2], double pointPtr[2]));
846EXTERN int TkMakeBezierCurve _ANSI_ARGS_((Tk_Canvas canvas,
847 double *pointPtr, int numPoints, int numSteps,
848 XPoint xPoints[], double dblPoints[]));
849EXTERN void TkMakeBezierPostscript _ANSI_ARGS_((Tcl_Interp *interp,
850 Tk_Canvas canvas, double *pointPtr,
851 int numPoints, int numSteps));
852EXTERN void TkOptionClassChanged _ANSI_ARGS_((TkWindow *winPtr));
853EXTERN void TkOptionDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
854EXTERN int TkOvalToArea _ANSI_ARGS_((double *ovalPtr,
855 double *rectPtr));
856EXTERN double TkOvalToPoint _ANSI_ARGS_((double ovalPtr[4],
857 double width, int filled, double pointPtr[2]));
858EXTERN int TkpChangeFocus _ANSI_ARGS_((TkWindow *winPtr,
859 int force));
860EXTERN void TkpCloseDisplay _ANSI_ARGS_((TkDisplay *dispPtr));
861EXTERN void TkpClaimFocus _ANSI_ARGS_((TkWindow *topLevelPtr,
862 int force));
863#ifndef TkpCmapStressed
864EXTERN int TkpCmapStressed _ANSI_ARGS_((Tk_Window tkwin,
865 Colormap colormap));
866#endif
867#ifndef TkpCreateNativeBitmap
868EXTERN Pixmap TkpCreateNativeBitmap _ANSI_ARGS_((Display *display,
869 char * source));
870#endif
871#ifndef TkpDefineNativeBitmaps
872EXTERN void TkpDefineNativeBitmaps _ANSI_ARGS_((void));
873#endif
874EXTERN void TkpDisplayWarning _ANSI_ARGS_((char *msg,
875 char *title));
876EXTERN void TkpGetAppName _ANSI_ARGS_((Tcl_Interp *interp,
877 Tcl_DString *name));
878EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
879#ifndef TkpGetNativeAppBitmap
880EXTERN Pixmap TkpGetNativeAppBitmap _ANSI_ARGS_((Display *display,
881 char *name, int *width, int *height));
882#endif
883EXTERN TkWindow * TkpGetOtherWindow _ANSI_ARGS_((TkWindow *winPtr));
884EXTERN TkWindow * TkpGetWrapperWindow _ANSI_ARGS_((TkWindow *winPtr));
885EXTERN int TkpInit _ANSI_ARGS_((Tcl_Interp *interp));
886EXTERN void TkpInitializeMenuBindings _ANSI_ARGS_((
887 Tcl_Interp *interp, Tk_BindingTable bindingTable));
888EXTERN void TkpMakeContainer _ANSI_ARGS_((Tk_Window tkwin));
889EXTERN void TkpMakeMenuWindow _ANSI_ARGS_((Tk_Window tkwin,
890 int transient));
891EXTERN Window TkpMakeWindow _ANSI_ARGS_((TkWindow *winPtr,
892 Window parent));
893EXTERN void TkpMenuNotifyToplevelCreate _ANSI_ARGS_((
894 Tcl_Interp *, char *menuName));
895EXTERN TkDisplay * TkpOpenDisplay _ANSI_ARGS_((char *display_name));
896EXTERN void TkPointerDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
897EXTERN int TkPointerEvent _ANSI_ARGS_((XEvent *eventPtr,
898 TkWindow *winPtr));
899EXTERN int TkPolygonToArea _ANSI_ARGS_((double *polyPtr,
900 int numPoints, double *rectPtr));
901EXTERN double TkPolygonToPoint _ANSI_ARGS_((double *polyPtr,
902 int numPoints, double *pointPtr));
903EXTERN int TkPositionInTree _ANSI_ARGS_((TkWindow *winPtr,
904 TkWindow *treePtr));
905EXTERN int TkPostscriptImage _ANSI_ARGS_((Tcl_Interp *interp,
906 Tk_Window tkwin, Tk_PostscriptInfo psInfo,
907 XImage *ximage, int x, int y, int width,
908 int height));
909
910#ifndef TkpPrintWindowId
911EXTERN void TkpPrintWindowId _ANSI_ARGS_((char *buf,
912 Window window));
913#endif
914EXTERN void TkpRedirectKeyEvent _ANSI_ARGS_((TkWindow *winPtr,
915 XEvent *eventPtr));
916#ifndef TkpScanWindowId
917EXTERN int TkpScanWindowId _ANSI_ARGS_((Tcl_Interp *interp,
918 Arg string, int *idPtr));
919#endif
920EXTERN void TkpSetCapture _ANSI_ARGS_((TkWindow *winPtr));
921EXTERN void TkpSetCursor _ANSI_ARGS_((TkpCursor cursor));
922EXTERN void TkpSetMainMenubar _ANSI_ARGS_((Tcl_Interp *interp,
923 Tk_Window tkwin, char *menuName));
924#ifndef TkpSync
925EXTERN void TkpSync _ANSI_ARGS_((Display *display));
926#endif
927EXTERN int TkpTestembedCmd _ANSI_ARGS_((ClientData clientData,
928 Tcl_Interp *interp, int argc, Tcl_Obj **objv));
929EXTERN int TkpUseWindow _ANSI_ARGS_((Tcl_Interp *interp,
930 Tk_Window tkwin, Arg string));
931#ifndef TkPutImage
932EXTERN void TkPutImage _ANSI_ARGS_((unsigned long *colors,
933 int ncolors, Display* display, Drawable d,
934 GC gc, XImage* image, int src_x, int src_y,
935 int dest_x, int dest_y, unsigned int width,
936 unsigned int height));
937#endif
938EXTERN int TkpWindowWasRecentlyDeleted _ANSI_ARGS_((Window win,
939 TkDisplay *dispPtr));
940EXTERN void TkpWmSetState _ANSI_ARGS_((TkWindow *winPtr,
941 int state));
942EXTERN void TkQueueEventForAllChildren _ANSI_ARGS_((
943 TkWindow *winPtr, XEvent *eventPtr));
944EXTERN int TkReadBitmapFile _ANSI_ARGS_((Tcl_Interp *interp,
945 Display* display,
946 Drawable d, CONST char* filename,
947 unsigned int* width_return,
948 unsigned int* height_return,
949 Pixmap* bitmap_return,
950 int* x_hot_return, int* y_hot_return));
951#ifndef TkRectInRegion
952EXTERN int TkRectInRegion _ANSI_ARGS_((TkRegion rgn,
953 int x, int y, unsigned int width,
954 unsigned int height));
955#endif
956EXTERN int TkScrollWindow _ANSI_ARGS_((Tk_Window tkwin, GC gc,
957 int x, int y, int width, int height, int dx,
958 int dy, TkRegion damageRgn));
959EXTERN void TkSelDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
960EXTERN void TkSelEventProc _ANSI_ARGS_((Tk_Window tkwin,
961 XEvent *eventPtr));
962EXTERN void TkSelInit _ANSI_ARGS_((Tk_Window tkwin));
963EXTERN void TkSelPropProc _ANSI_ARGS_((XEvent *eventPtr));
964EXTERN void TkSetClassProcs _ANSI_ARGS_((Tk_Window tkwin,
965 TkClassProcs *procs, ClientData instanceData));
966#ifndef TkSetPixmapColormap
967EXTERN void TkSetPixmapColormap _ANSI_ARGS_((Pixmap pixmap,
968 Colormap colormap));
969#endif
970#ifndef TkSetRegion
971EXTERN void TkSetRegion _ANSI_ARGS_((Display* display, GC gc,
972 TkRegion rgn));
973#endif
974EXTERN void TkSetWindowMenuBar _ANSI_ARGS_((Tcl_Interp *interp,
975 Tk_Window tkwin, Arg oldMenuName,
976 Arg menuName));
977EXTERN int TkSmoothParseProc _ANSI_ARGS_((ClientData clientData,
978 Tcl_Interp *interp, Tk_Window tkwin,
979 Arg value, char *recordPtr, int offset));
980EXTERN Arg TkSmoothPrintProc _ANSI_ARGS_((ClientData clientData,
981 Tk_Window tkwin, char *recordPtr, int offset,
982 Tcl_FreeProc **freeProcPtr));
983EXTERN KeySym TkStringToKeysym _ANSI_ARGS_((char *name));
984EXTERN int TkThickPolyLineToArea _ANSI_ARGS_((double *coordPtr,
985 int numPoints, double width, int capStyle,
986 int joinStyle, double *rectPtr));
987#ifndef TkUnionRectWithRegion
988EXTERN void TkUnionRectWithRegion _ANSI_ARGS_((XRectangle* rect,
989 TkRegion src, TkRegion dr_return));
990#endif
991EXTERN void TkWmAddToColormapWindows _ANSI_ARGS_((
992 TkWindow *winPtr));
993EXTERN void TkWmDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
994EXTERN TkWindow * TkWmFocusToplevel _ANSI_ARGS_((TkWindow *winPtr));
995EXTERN void TkWmMapWindow _ANSI_ARGS_((TkWindow *winPtr));
996EXTERN void TkWmNewWindow _ANSI_ARGS_((TkWindow *winPtr));
997EXTERN void TkWmProtocolEventProc _ANSI_ARGS_((TkWindow *winPtr,
998 XEvent *evenvPtr));
999EXTERN void TkWmRemoveFromColormapWindows _ANSI_ARGS_((
1000 TkWindow *winPtr));
1001EXTERN void TkWmRestackToplevel _ANSI_ARGS_((TkWindow *winPtr,
1002 int aboveBelow, TkWindow *otherPtr));
1003EXTERN void TkWmSetClass _ANSI_ARGS_((TkWindow *winPtr));
1004EXTERN void TkWmUnmapWindow _ANSI_ARGS_((TkWindow *winPtr));
1005
1006/*
1007 * Unsupported commands.
1008 */
1009EXTERN int TkUnsupported1Cmd _ANSI_ARGS_((ClientData clientData,
1010 Tcl_Interp *interp, int argc, Tcl_Obj **objv));
1011
1012/*
1013 * Canvas-related procedures that are shared among Tk modules but not
1014 * exported to the outside world:
1015 */
1016
1017struct TkCanvas;
1018extern int TkCanvPostscriptCmd _ANSI_ARGS_((struct TkCanvas *canvasPtr,
1019 Tcl_Interp *interp, int argc, Tcl_Obj **objv));
1020
1021# undef TCL_STORAGE_CLASS
1022# define TCL_STORAGE_CLASS DLLIMPORT
1023
1024#endif /* _TKINT */