1 |
/* $Header$ */ |
2 |
|
3 |
/* |
4 |
* tkInt.h -- |
5 |
* |
6 |
* Declarations for things used internally by the Tk |
7 |
* procedures but not exported outside the module. |
8 |
* |
9 |
* Copyright (c) 1990-1994 The Regents of the University of California. |
10 |
* Copyright (c) 1994-1997 Sun Microsystems, Inc. |
11 |
* Copyright (c) 1998 by Scriptics Corporation. |
12 |
* |
13 |
* See the file "license.terms" for information on usage and redistribution |
14 |
* of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
15 |
* |
16 |
* RCS: $Id: tkint.h,v 1.1.1.1 2001/06/13 05:03:44 dtashley Exp $ |
17 |
*/ |
18 |
|
19 |
#ifndef _TKINT |
20 |
#define _TKINT |
21 |
|
22 |
#ifndef _TK |
23 |
#include "tk.h" |
24 |
#endif |
25 |
#ifndef _TCL |
26 |
#include "tcl.h" |
27 |
#endif |
28 |
#ifndef _TKPORT |
29 |
#include "tkPort.h" |
30 |
#endif |
31 |
|
32 |
/* |
33 |
* Opaque type declarations: |
34 |
*/ |
35 |
|
36 |
typedef struct TkColormap TkColormap; |
37 |
typedef struct TkGrabEvent TkGrabEvent; |
38 |
typedef struct TkpCursor_ *TkpCursor; |
39 |
typedef struct TkRegion_ *TkRegion; |
40 |
typedef struct TkStressedCmap TkStressedCmap; |
41 |
typedef struct TkBindInfo_ *TkBindInfo; |
42 |
|
43 |
/* |
44 |
* Procedure types. |
45 |
*/ |
46 |
|
47 |
typedef int (TkBindEvalProc) _ANSI_ARGS_((ClientData clientData, |
48 |
Tcl_Interp *interp, XEvent *eventPtr, Tk_Window tkwin, |
49 |
KeySym keySym)); |
50 |
typedef void (TkBindFreeProc) _ANSI_ARGS_((ClientData clientData)); |
51 |
typedef Window (TkClassCreateProc) _ANSI_ARGS_((Tk_Window tkwin, |
52 |
Window parent, ClientData instanceData)); |
53 |
typedef void (TkClassGeometryProc) _ANSI_ARGS_((ClientData instanceData)); |
54 |
typedef void (TkClassModalProc) _ANSI_ARGS_((Tk_Window tkwin, |
55 |
XEvent *eventPtr)); |
56 |
|
57 |
|
58 |
/* |
59 |
* Widget class procedures used to implement platform specific widget |
60 |
* behavior. |
61 |
*/ |
62 |
|
63 |
typedef struct TkClassProcs { |
64 |
TkClassCreateProc *createProc; |
65 |
/* Procedure to invoke when the |
66 |
platform-dependent window needs to be |
67 |
created. */ |
68 |
TkClassGeometryProc *geometryProc; |
69 |
/* Procedure to invoke when the geometry of a |
70 |
window needs to be recalculated as a result |
71 |
of some change in the system. */ |
72 |
TkClassModalProc *modalProc; |
73 |
/* Procedure to invoke after all bindings on a |
74 |
widget have been triggered in order to |
75 |
handle a modal loop. */ |
76 |
} TkClassProcs; |
77 |
|
78 |
/* |
79 |
* One of the following structures is maintained for each cursor in |
80 |
* use in the system. This structure is used by tkCursor.c and the |
81 |
* various system specific cursor files. |
82 |
*/ |
83 |
|
84 |
typedef struct TkCursor { |
85 |
Tk_Cursor cursor; /* System specific identifier for cursor. */ |
86 |
Display *display; /* Display containing cursor. Needed for |
87 |
* disposal and retrieval of cursors. */ |
88 |
int resourceRefCount; /* Number of active uses of this cursor (each |
89 |
* active use corresponds to a call to |
90 |
* Tk_AllocPreserveFromObj or Tk_Preserve). |
91 |
* If this count is 0, then this structure |
92 |
* is no longer valid and it isn't present |
93 |
* in a hash table: it is being kept around |
94 |
* only because there are objects referring |
95 |
* to it. The structure is freed when |
96 |
* resourceRefCount and objRefCount are |
97 |
* both 0. */ |
98 |
int objRefCount; /* Number of Tcl objects that reference |
99 |
* this structure.. */ |
100 |
Tcl_HashTable *otherTable; /* Second table (other than idTable) used |
101 |
* to index this entry. */ |
102 |
Tcl_HashEntry *hashPtr; /* Entry in otherTable for this structure |
103 |
* (needed when deleting). */ |
104 |
Tcl_HashEntry *idHashPtr; /* Entry in idTable for this structure |
105 |
* (needed when deleting). */ |
106 |
struct TkCursor *nextPtr; /* Points to the next TkCursor structure with |
107 |
* the same name. Cursors with the same |
108 |
* name but different displays are chained |
109 |
* together off a single hash table entry. */ |
110 |
} TkCursor; |
111 |
|
112 |
/* |
113 |
* One of the following structures is maintained for each display |
114 |
* containing a window managed by Tk. In part, the structure is |
115 |
* used to store thread-specific data, since each thread will have |
116 |
* its own TkDisplay structure. |
117 |
*/ |
118 |
|
119 |
typedef struct TkDisplay { |
120 |
Display *display; /* Xlib's info about display. */ |
121 |
struct TkDisplay *nextPtr; /* Next in list of all displays. */ |
122 |
char *name; /* Name of display (with any screen |
123 |
* identifier removed). Malloc-ed. */ |
124 |
Time lastEventTime; /* Time of last event received for this |
125 |
* display. */ |
126 |
|
127 |
/* |
128 |
* Information used primarily by tk3d.c: |
129 |
*/ |
130 |
|
131 |
int borderInit; /* 0 means borderTable needs initializing. */ |
132 |
Tcl_HashTable borderTable; /* Maps from color name to TkBorder |
133 |
* structure. */ |
134 |
|
135 |
/* |
136 |
* Information used by tkAtom.c only: |
137 |
*/ |
138 |
|
139 |
int atomInit; /* 0 means stuff below hasn't been |
140 |
* initialized yet. */ |
141 |
Tcl_HashTable nameTable; /* Maps from names to Atom's. */ |
142 |
Tcl_HashTable atomTable; /* Maps from Atom's back to names. */ |
143 |
|
144 |
/* |
145 |
* Information used primarily by tkBind.c: |
146 |
*/ |
147 |
|
148 |
int bindInfoStale; /* Non-zero means the variables in this |
149 |
* part of the structure are potentially |
150 |
* incorrect and should be recomputed. */ |
151 |
unsigned int modeModMask; /* Has one bit set to indicate the modifier |
152 |
* corresponding to "mode shift". If no |
153 |
* such modifier, than this is zero. */ |
154 |
unsigned int metaModMask; /* Has one bit set to indicate the modifier |
155 |
* corresponding to the "Meta" key. If no |
156 |
* such modifier, then this is zero. */ |
157 |
unsigned int altModMask; /* Has one bit set to indicate the modifier |
158 |
* corresponding to the "Meta" key. If no |
159 |
* such modifier, then this is zero. */ |
160 |
enum {LU_IGNORE, LU_CAPS, LU_SHIFT} lockUsage; |
161 |
/* Indicates how to interpret lock modifier. */ |
162 |
int numModKeyCodes; /* Number of entries in modKeyCodes array |
163 |
* below. */ |
164 |
KeyCode *modKeyCodes; /* Pointer to an array giving keycodes for |
165 |
* all of the keys that have modifiers |
166 |
* associated with them. Malloc'ed, but |
167 |
* may be NULL. */ |
168 |
|
169 |
/* |
170 |
* Information used by tkBitmap.c only: |
171 |
*/ |
172 |
|
173 |
int bitmapInit; /* 0 means tables above need initializing. */ |
174 |
int bitmapAutoNumber; /* Used to number bitmaps. */ |
175 |
Tcl_HashTable bitmapNameTable; |
176 |
/* Maps from name of bitmap to the first |
177 |
* TkBitmap record for that name. */ |
178 |
Tcl_HashTable bitmapIdTable;/* Maps from bitmap id to the TkBitmap |
179 |
* structure for the bitmap. */ |
180 |
Tcl_HashTable bitmapDataTable; |
181 |
/* Used by Tk_GetBitmapFromData to map from |
182 |
* a collection of in-core data about a |
183 |
* bitmap to a reference giving an auto- |
184 |
* matically-generated name for the bitmap. */ |
185 |
|
186 |
/* |
187 |
* Information used by tkCanvas.c only: |
188 |
*/ |
189 |
|
190 |
int numIdSearches; |
191 |
int numSlowSearches; |
192 |
|
193 |
/* |
194 |
* Used by tkColor.c only: |
195 |
*/ |
196 |
|
197 |
int colorInit; /* 0 means color module needs initializing. */ |
198 |
TkStressedCmap *stressPtr; /* First in list of colormaps that have |
199 |
* filled up, so we have to pick an |
200 |
* approximate color. */ |
201 |
Tcl_HashTable colorNameTable; |
202 |
/* Maps from color name to TkColor structure |
203 |
* for that color. */ |
204 |
Tcl_HashTable colorValueTable; |
205 |
/* Maps from integer RGB values to TkColor |
206 |
* structures. */ |
207 |
|
208 |
/* |
209 |
* Used by tkCursor.c only: |
210 |
*/ |
211 |
|
212 |
int cursorInit; /* 0 means cursor module need initializing. */ |
213 |
Tcl_HashTable cursorNameTable; |
214 |
/* Maps from a string name to a cursor to the |
215 |
* TkCursor record for the cursor. */ |
216 |
Tcl_HashTable cursorDataTable; |
217 |
/* Maps from a collection of in-core data |
218 |
* about a cursor to a TkCursor structure. */ |
219 |
Tcl_HashTable cursorIdTable; |
220 |
/* Maps from a cursor id to the TkCursor |
221 |
* structure for the cursor. */ |
222 |
char cursorString[20]; /* Used to store a cursor id string. */ |
223 |
Font cursorFont; /* Font to use for standard cursors. |
224 |
* None means font not loaded yet. */ |
225 |
|
226 |
/* |
227 |
* Information used by tkError.c only: |
228 |
*/ |
229 |
|
230 |
struct TkErrorHandler *errorPtr; |
231 |
/* First in list of error handlers |
232 |
* for this display. NULL means |
233 |
* no handlers exist at present. */ |
234 |
int deleteCount; /* Counts # of handlers deleted since |
235 |
* last time inactive handlers were |
236 |
* garbage-collected. When this number |
237 |
* gets big, handlers get cleaned up. */ |
238 |
|
239 |
/* |
240 |
* Used by tkEvent.c only: |
241 |
*/ |
242 |
|
243 |
struct TkWindowEvent *delayedMotionPtr; |
244 |
/* Points to a malloc-ed motion event |
245 |
* whose processing has been delayed in |
246 |
* the hopes that another motion event |
247 |
* will come along right away and we can |
248 |
* merge the two of them together. NULL |
249 |
* means that there is no delayed motion |
250 |
* event. */ |
251 |
|
252 |
/* |
253 |
* Information used by tkFocus.c only: |
254 |
*/ |
255 |
|
256 |
int focusDebug; /* 1 means collect focus debugging |
257 |
* statistics. */ |
258 |
struct TkWindow *implicitWinPtr; |
259 |
/* If the focus arrived at a toplevel window |
260 |
* implicitly via an Enter event (rather |
261 |
* than via a FocusIn event), this points |
262 |
* to the toplevel window. Otherwise it is |
263 |
* NULL. */ |
264 |
struct TkWindow *focusPtr; /* Points to the window on this display that |
265 |
* should be receiving keyboard events. When |
266 |
* multiple applications on the display have |
267 |
* the focus, this will refer to the |
268 |
* innermost window in the innermost |
269 |
* application. This information isn't used |
270 |
* under Unix or Windows, but it's needed on |
271 |
* the Macintosh. */ |
272 |
|
273 |
/* |
274 |
* Information used by tkGC.c only: |
275 |
*/ |
276 |
|
277 |
Tcl_HashTable gcValueTable; /* Maps from a GC's values to a TkGC structure |
278 |
* describing a GC with those values. */ |
279 |
Tcl_HashTable gcIdTable; /* Maps from a GC to a TkGC. */ |
280 |
int gcInit; /* 0 means the tables below need |
281 |
* initializing. */ |
282 |
|
283 |
/* |
284 |
* Information used by tkGeometry.c only: |
285 |
*/ |
286 |
|
287 |
Tcl_HashTable maintainHashTable; |
288 |
/* Hash table that maps from a master's |
289 |
* Tk_Window token to a list of slaves |
290 |
* managed by that master. */ |
291 |
int geomInit; |
292 |
|
293 |
/* |
294 |
* Information used by tkGet.c only: |
295 |
*/ |
296 |
|
297 |
Tcl_HashTable uidTable; /* Stores all Tk_Uid used in a thread. */ |
298 |
int uidInit; /* 0 means uidTable needs initializing. */ |
299 |
|
300 |
/* |
301 |
* Information used by tkGrab.c only: |
302 |
*/ |
303 |
|
304 |
struct TkWindow *grabWinPtr; |
305 |
/* Window in which the pointer is currently |
306 |
* grabbed, or NULL if none. */ |
307 |
struct TkWindow *eventualGrabWinPtr; |
308 |
/* Value that grabWinPtr will have once the |
309 |
* grab event queue (below) has been |
310 |
* completely emptied. */ |
311 |
struct TkWindow *buttonWinPtr; |
312 |
/* Window in which first mouse button was |
313 |
* pressed while grab was in effect, or NULL |
314 |
* if no such press in effect. */ |
315 |
struct TkWindow *serverWinPtr; |
316 |
/* If no application contains the pointer then |
317 |
* this is NULL. Otherwise it contains the |
318 |
* last window for which we've gotten an |
319 |
* Enter or Leave event from the server (i.e. |
320 |
* the last window known to have contained |
321 |
* the pointer). Doesn't reflect events |
322 |
* that were synthesized in tkGrab.c. */ |
323 |
TkGrabEvent *firstGrabEventPtr; |
324 |
/* First in list of enter/leave events |
325 |
* synthesized by grab code. These events |
326 |
* must be processed in order before any other |
327 |
* events are processed. NULL means no such |
328 |
* events. */ |
329 |
TkGrabEvent *lastGrabEventPtr; |
330 |
/* Last in list of synthesized events, or NULL |
331 |
* if list is empty. */ |
332 |
int grabFlags; /* Miscellaneous flag values. See definitions |
333 |
* in tkGrab.c. */ |
334 |
|
335 |
/* |
336 |
* Information used by tkGrid.c only: |
337 |
*/ |
338 |
|
339 |
int gridInit; /* 0 means table below needs initializing. */ |
340 |
Tcl_HashTable gridHashTable;/* Maps from Tk_Window tokens to |
341 |
* corresponding Grid structures. */ |
342 |
|
343 |
/* |
344 |
* Information used by tkImage.c only: |
345 |
*/ |
346 |
|
347 |
int imageId; /* Value used to number image ids. */ |
348 |
|
349 |
/* |
350 |
* Information used by tkMacWinMenu.c only: |
351 |
*/ |
352 |
|
353 |
int postCommandGeneration; |
354 |
|
355 |
/* |
356 |
* Information used by tkOption.c only. |
357 |
*/ |
358 |
|
359 |
|
360 |
|
361 |
/* |
362 |
* Information used by tkPack.c only. |
363 |
*/ |
364 |
|
365 |
int packInit; /* 0 means table below needs initializing. */ |
366 |
Tcl_HashTable packerHashTable; |
367 |
/* Maps from Tk_Window tokens to |
368 |
* corresponding Packer structures. */ |
369 |
|
370 |
|
371 |
/* |
372 |
* Information used by tkPlace.c only. |
373 |
*/ |
374 |
|
375 |
int placeInit; /* 0 means tables below need initializing. */ |
376 |
Tcl_HashTable masterTable; /* Maps from Tk_Window toke to the Master |
377 |
* structure for the window, if it exists. */ |
378 |
Tcl_HashTable slaveTable; /* Maps from Tk_Window toke to the Slave |
379 |
* structure for the window, if it exists. */ |
380 |
|
381 |
/* |
382 |
* Information used by tkSelect.c and tkClipboard.c only: |
383 |
*/ |
384 |
|
385 |
struct TkSelectionInfo *selectionInfoPtr; |
386 |
/* First in list of selection information |
387 |
* records. Each entry contains information |
388 |
* about the current owner of a particular |
389 |
* selection on this display. */ |
390 |
Atom multipleAtom; /* Atom for MULTIPLE. None means |
391 |
* selection stuff isn't initialized. */ |
392 |
Atom incrAtom; /* Atom for INCR. */ |
393 |
Atom targetsAtom; /* Atom for TARGETS. */ |
394 |
Atom timestampAtom; /* Atom for TIMESTAMP. */ |
395 |
Atom textAtom; /* Atom for TEXT. */ |
396 |
Atom compoundTextAtom; /* Atom for COMPOUND_TEXT. */ |
397 |
Atom applicationAtom; /* Atom for TK_APPLICATION. */ |
398 |
Atom windowAtom; /* Atom for TK_WINDOW. */ |
399 |
Atom clipboardAtom; /* Atom for CLIPBOARD. */ |
400 |
|
401 |
Tk_Window clipWindow; /* Window used for clipboard ownership and to |
402 |
* retrieve selections between processes. NULL |
403 |
* means clipboard info hasn't been |
404 |
* initialized. */ |
405 |
int clipboardActive; /* 1 means we currently own the clipboard |
406 |
* selection, 0 means we don't. */ |
407 |
struct TkMainInfo *clipboardAppPtr; |
408 |
/* Last application that owned clipboard. */ |
409 |
struct TkClipboardTarget *clipTargetPtr; |
410 |
/* First in list of clipboard type information |
411 |
* records. Each entry contains information |
412 |
* about the buffers for a given selection |
413 |
* target. */ |
414 |
|
415 |
/* |
416 |
* Information used by tkSend.c only: |
417 |
*/ |
418 |
|
419 |
Tk_Window commTkwin; /* Window used for communication |
420 |
* between interpreters during "send" |
421 |
* commands. NULL means send info hasn't |
422 |
* been initialized yet. */ |
423 |
Atom commProperty; /* X's name for comm property. */ |
424 |
Atom registryProperty; /* X's name for property containing |
425 |
* registry of interpreter names. */ |
426 |
Atom appNameProperty; /* X's name for property used to hold the |
427 |
* application name on each comm window. */ |
428 |
|
429 |
/* |
430 |
* Information used by tkXId.c only: |
431 |
*/ |
432 |
|
433 |
struct TkIdStack *idStackPtr; |
434 |
/* First in list of chunks of free resource |
435 |
* identifiers, or NULL if there are no free |
436 |
* resources. */ |
437 |
XID (*defaultAllocProc) _ANSI_ARGS_((Display *display)); |
438 |
/* Default resource allocator for display. */ |
439 |
struct TkIdStack *windowStackPtr; |
440 |
/* First in list of chunks of window |
441 |
* identifers that can't be reused right |
442 |
* now. */ |
443 |
int idCleanupScheduled; /* 1 means a call to WindowIdCleanup has |
444 |
* already been scheduled, 0 means it |
445 |
* hasn't. */ |
446 |
|
447 |
/* |
448 |
* Information used by tkUnixWm.c and tkWinWm.c only: |
449 |
*/ |
450 |
|
451 |
int wmTracing; /* Used to enable or disable tracing in |
452 |
* this module. If tracing is enabled, |
453 |
* then information is printed on |
454 |
* standard output about interesting |
455 |
* interactions with the window manager. */ |
456 |
struct TkWmInfo *firstWmPtr; /* Points to first top-level window. */ |
457 |
struct TkWmInfo *foregroundWmPtr; |
458 |
/* Points to the foreground window. */ |
459 |
|
460 |
/* |
461 |
* Information maintained by tkWindow.c for use later on by tkXId.c: |
462 |
*/ |
463 |
|
464 |
|
465 |
int destroyCount; /* Number of Tk_DestroyWindow operations |
466 |
* in progress. */ |
467 |
unsigned long lastDestroyRequest; |
468 |
/* Id of most recent XDestroyWindow request; |
469 |
* can re-use ids in windowStackPtr when |
470 |
* server has seen this request and event |
471 |
* queue is empty. */ |
472 |
|
473 |
/* |
474 |
* Information used by tkVisual.c only: |
475 |
*/ |
476 |
|
477 |
TkColormap *cmapPtr; /* First in list of all non-default colormaps |
478 |
* allocated for this display. */ |
479 |
|
480 |
/* |
481 |
* Miscellaneous information: |
482 |
*/ |
483 |
|
484 |
#ifdef TK_USE_INPUT_METHODS |
485 |
XIM inputMethod; /* Input method for this display */ |
486 |
#endif /* TK_USE_INPUT_METHODS */ |
487 |
Tcl_HashTable winTable; /* Maps from X window ids to TkWindow ptrs. */ |
488 |
|
489 |
int refCount; /* Reference count of how many Tk applications |
490 |
* are using this display. Used to clean up |
491 |
* the display when we no longer have any |
492 |
* Tk applications using it. |
493 |
*/ |
494 |
/* |
495 |
* The following field were all added for Tk8.3 |
496 |
*/ |
497 |
int mouseButtonState; /* current mouse button state for this |
498 |
* display */ |
499 |
int warpInProgress; |
500 |
Window warpWindow; |
501 |
int warpX; |
502 |
int warpY; |
503 |
int useInputMethods; /* Whether to use input methods */ |
504 |
} TkDisplay; |
505 |
|
506 |
/* |
507 |
* One of the following structures exists for each error handler |
508 |
* created by a call to Tk_CreateErrorHandler. The structure |
509 |
* is managed by tkError.c. |
510 |
*/ |
511 |
|
512 |
typedef struct TkErrorHandler { |
513 |
TkDisplay *dispPtr; /* Display to which handler applies. */ |
514 |
unsigned long firstRequest; /* Only errors with serial numbers |
515 |
* >= to this are considered. */ |
516 |
unsigned long lastRequest; /* Only errors with serial numbers |
517 |
* <= to this are considered. This |
518 |
* field is filled in when XUnhandle |
519 |
* is called. -1 means XUnhandle |
520 |
* hasn't been called yet. */ |
521 |
int error; /* Consider only errors with this |
522 |
* error_code (-1 means consider |
523 |
* all errors). */ |
524 |
int request; /* Consider only errors with this |
525 |
* major request code (-1 means |
526 |
* consider all major codes). */ |
527 |
int minorCode; /* Consider only errors with this |
528 |
* minor request code (-1 means |
529 |
* consider all minor codes). */ |
530 |
Tk_ErrorProc *errorProc; /* Procedure to invoke when a matching |
531 |
* error occurs. NULL means just ignore |
532 |
* errors. */ |
533 |
ClientData clientData; /* Arbitrary value to pass to |
534 |
* errorProc. */ |
535 |
struct TkErrorHandler *nextPtr; |
536 |
/* Pointer to next older handler for |
537 |
* this display, or NULL for end of |
538 |
* list. */ |
539 |
} TkErrorHandler; |
540 |
|
541 |
|
542 |
|
543 |
|
544 |
/* |
545 |
* One of the following structures exists for each event handler |
546 |
* created by calling Tk_CreateEventHandler. This information |
547 |
* is used by tkEvent.c only. |
548 |
*/ |
549 |
|
550 |
typedef struct TkEventHandler { |
551 |
unsigned long mask; /* Events for which to invoke |
552 |
* proc. */ |
553 |
Tk_EventProc *proc; /* Procedure to invoke when an event |
554 |
* in mask occurs. */ |
555 |
ClientData clientData; /* Argument to pass to proc. */ |
556 |
struct TkEventHandler *nextPtr; |
557 |
/* Next in list of handlers |
558 |
* associated with window (NULL means |
559 |
* end of list). */ |
560 |
} TkEventHandler; |
561 |
|
562 |
/* |
563 |
* Tk keeps one of the following data structures for each main |
564 |
* window (created by a call to TkCreateMainWindow). It stores |
565 |
* information that is shared by all of the windows associated |
566 |
* with a particular main window. |
567 |
*/ |
568 |
|
569 |
typedef struct TkMainInfo { |
570 |
int refCount; /* Number of windows whose "mainPtr" fields |
571 |
* point here. When this becomes zero, can |
572 |
* free up the structure (the reference |
573 |
* count is zero because windows can get |
574 |
* deleted in almost any order; the main |
575 |
* window isn't necessarily the last one |
576 |
* deleted). */ |
577 |
struct TkWindow *winPtr; /* Pointer to main window. */ |
578 |
Tcl_Interp *interp; /* Interpreter associated with application. */ |
579 |
Tcl_HashTable nameTable; /* Hash table mapping path names to TkWindow |
580 |
* structs for all windows related to this |
581 |
* main window. Managed by tkWindow.c. */ |
582 |
Tk_BindingTable bindingTable; |
583 |
/* Used in conjunction with "bind" command |
584 |
* to bind events to Tcl commands. */ |
585 |
TkBindInfo bindInfo; /* Information used by tkBind.c on a per |
586 |
* application basis. */ |
587 |
struct TkFontInfo *fontInfoPtr; |
588 |
/* Information used by tkFont.c on a per |
589 |
* application basis. */ |
590 |
|
591 |
/* |
592 |
* Information used only by tkFocus.c and tk*Embed.c: |
593 |
*/ |
594 |
|
595 |
struct TkToplevelFocusInfo *tlFocusPtr; |
596 |
/* First in list of records containing focus |
597 |
* information for each top-level in the |
598 |
* application. Used only by tkFocus.c. */ |
599 |
struct TkDisplayFocusInfo *displayFocusPtr; |
600 |
/* First in list of records containing focus |
601 |
* information for each display that this |
602 |
* application has ever used. Used only |
603 |
* by tkFocus.c. */ |
604 |
|
605 |
struct ElArray *optionRootPtr; |
606 |
/* Top level of option hierarchy for this |
607 |
* main window. NULL means uninitialized. |
608 |
* Managed by tkOption.c. */ |
609 |
Tcl_HashTable imageTable; /* Maps from image names to Tk_ImageMaster |
610 |
* structures. Managed by tkImage.c. */ |
611 |
int strictMotif; /* This is linked to the tk_strictMotif |
612 |
* global variable. */ |
613 |
struct TkMainInfo *nextPtr; /* Next in list of all main windows managed by |
614 |
* this process. */ |
615 |
} TkMainInfo; |
616 |
|
617 |
/* |
618 |
* Tk keeps the following data structure for each of it's builtin |
619 |
* bitmaps. This structure is only used by tkBitmap.c and other |
620 |
* platform specific bitmap files. |
621 |
*/ |
622 |
|
623 |
typedef struct { |
624 |
char *source; /* Bits for bitmap. */ |
625 |
int width, height; /* Dimensions of bitmap. */ |
626 |
int native; /* 0 means generic (X style) bitmap, |
627 |
* 1 means native style bitmap. */ |
628 |
} TkPredefBitmap; |
629 |
|
630 |
/* |
631 |
* Tk keeps one of the following structures for each window. |
632 |
* Some of the information (like size and location) is a shadow |
633 |
* of information managed by the X server, and some is special |
634 |
* information used here, such as event and geometry management |
635 |
* information. This information is (mostly) managed by tkWindow.c. |
636 |
* WARNING: the declaration below must be kept consistent with the |
637 |
* Tk_FakeWin structure in tk.h. If you change one, be sure to |
638 |
* change the other!! |
639 |
*/ |
640 |
|
641 |
typedef struct TkWindow { |
642 |
|
643 |
/* |
644 |
* Structural information: |
645 |
*/ |
646 |
|
647 |
Display *display; /* Display containing window. */ |
648 |
TkDisplay *dispPtr; /* Tk's information about display |
649 |
* for window. */ |
650 |
int screenNum; /* Index of screen for window, among all |
651 |
* those for dispPtr. */ |
652 |
Visual *visual; /* Visual to use for window. If not default, |
653 |
* MUST be set before X window is created. */ |
654 |
int depth; /* Number of bits/pixel. */ |
655 |
Window window; /* X's id for window. NULL means window |
656 |
* hasn't actually been created yet, or it's |
657 |
* been deleted. */ |
658 |
struct TkWindow *childList; /* First in list of child windows, |
659 |
* or NULL if no children. List is in |
660 |
* stacking order, lowest window first.*/ |
661 |
struct TkWindow *lastChildPtr; |
662 |
/* Last in list of child windows (highest |
663 |
* in stacking order), or NULL if no |
664 |
* children. */ |
665 |
struct TkWindow *parentPtr; /* Pointer to parent window (logical |
666 |
* parent, not necessarily X parent). NULL |
667 |
* means either this is the main window, or |
668 |
* the window's parent has already been |
669 |
* deleted. */ |
670 |
struct TkWindow *nextPtr; /* Next higher sibling (in stacking order) |
671 |
* in list of children with same parent. NULL |
672 |
* means end of list. */ |
673 |
TkMainInfo *mainPtr; /* Information shared by all windows |
674 |
* associated with a particular main |
675 |
* window. NULL means this window is |
676 |
* a rogue that isn't associated with |
677 |
* any application (at present, this |
678 |
* only happens for the dummy windows |
679 |
* used for "send" communication). */ |
680 |
|
681 |
/* |
682 |
* Name and type information for the window: |
683 |
*/ |
684 |
|
685 |
char *pathName; /* Path name of window (concatenation |
686 |
* of all names between this window and |
687 |
* its top-level ancestor). This is a |
688 |
* pointer into an entry in |
689 |
* mainPtr->nameTable. NULL means that |
690 |
* the window hasn't been completely |
691 |
* created yet. */ |
692 |
Tk_Uid nameUid; /* Name of the window within its parent |
693 |
* (unique within the parent). */ |
694 |
Tk_Uid classUid; /* Class of the window. NULL means window |
695 |
* hasn't been given a class yet. */ |
696 |
|
697 |
/* |
698 |
* Geometry and other attributes of window. This information |
699 |
* may not be updated on the server immediately; stuff that |
700 |
* hasn't been reflected in the server yet is called "dirty". |
701 |
* At present, information can be dirty only if the window |
702 |
* hasn't yet been created. |
703 |
*/ |
704 |
|
705 |
XWindowChanges changes; /* Geometry and other info about |
706 |
* window. */ |
707 |
unsigned int dirtyChanges; /* Bits indicate fields of "changes" |
708 |
* that are dirty. */ |
709 |
XSetWindowAttributes atts; /* Current attributes of window. */ |
710 |
unsigned long dirtyAtts; /* Bits indicate fields of "atts" |
711 |
* that are dirty. */ |
712 |
|
713 |
unsigned int flags; /* Various flag values: these are all |
714 |
* defined in tk.h (confusing, but they're |
715 |
* needed there for some query macros). */ |
716 |
|
717 |
/* |
718 |
* Information kept by the event manager (tkEvent.c): |
719 |
*/ |
720 |
|
721 |
TkEventHandler *handlerList;/* First in list of event handlers |
722 |
* declared for this window, or |
723 |
* NULL if none. */ |
724 |
#ifdef TK_USE_INPUT_METHODS |
725 |
XIC inputContext; /* Input context (for input methods). */ |
726 |
#endif /* TK_USE_INPUT_METHODS */ |
727 |
|
728 |
/* |
729 |
* Information used for event bindings (see "bind" and "bindtags" |
730 |
* commands in tkCmds.c): |
731 |
*/ |
732 |
|
733 |
ClientData *tagPtr; /* Points to array of tags used for bindings |
734 |
* on this window. Each tag is a Tk_Uid. |
735 |
* Malloc'ed. NULL means no tags. */ |
736 |
int numTags; /* Number of tags at *tagPtr. */ |
737 |
|
738 |
/* |
739 |
* Information used by tkOption.c to manage options for the |
740 |
* window. |
741 |
*/ |
742 |
|
743 |
int optionLevel; /* -1 means no option information is |
744 |
* currently cached for this window. |
745 |
* Otherwise this gives the level in |
746 |
* the option stack at which info is |
747 |
* cached. */ |
748 |
/* |
749 |
* Information used by tkSelect.c to manage the selection. |
750 |
*/ |
751 |
|
752 |
struct TkSelHandler *selHandlerList; |
753 |
/* First in list of handlers for |
754 |
* returning the selection in various |
755 |
* forms. */ |
756 |
|
757 |
/* |
758 |
* Information used by tkGeometry.c for geometry management. |
759 |
*/ |
760 |
|
761 |
Tk_GeomMgr *geomMgrPtr; /* Information about geometry manager for |
762 |
* this window. */ |
763 |
ClientData geomData; /* Argument for geometry manager procedures. */ |
764 |
int reqWidth, reqHeight; /* Arguments from last call to |
765 |
* Tk_GeometryRequest, or 0's if |
766 |
* Tk_GeometryRequest hasn't been |
767 |
* called. */ |
768 |
int internalBorderWidth; /* Width of internal border of window |
769 |
* (0 means no internal border). Geometry |
770 |
* managers should not normally place children |
771 |
* on top of the border. */ |
772 |
|
773 |
/* |
774 |
* Information maintained by tkWm.c for window manager communication. |
775 |
*/ |
776 |
|
777 |
struct TkWmInfo *wmInfoPtr; /* For top-level windows (and also |
778 |
* for special Unix menubar and wrapper |
779 |
* windows), points to structure with |
780 |
* wm-related info (see tkWm.c). For |
781 |
* other windows, this is NULL. */ |
782 |
|
783 |
/* |
784 |
* Information used by widget classes. |
785 |
*/ |
786 |
|
787 |
TkClassProcs *classProcsPtr; |
788 |
ClientData instanceData; |
789 |
|
790 |
/* |
791 |
* Platform specific information private to each port. |
792 |
*/ |
793 |
|
794 |
struct TkWindowPrivate *privatePtr; |
795 |
} TkWindow; |
796 |
|
797 |
/* |
798 |
* The following structure is used as a two way map between integers |
799 |
* and strings, usually to map between an internal C representation |
800 |
* and the strings used in Tcl. |
801 |
*/ |
802 |
|
803 |
typedef struct TkStateMap { |
804 |
int numKey; /* Integer representation of a value. */ |
805 |
char *strKey; /* String representation of a value. */ |
806 |
} TkStateMap; |
807 |
|
808 |
/* |
809 |
* This structure is used by the Mac and Window porting layers as |
810 |
* the internal representation of a clip_mask in a GC. |
811 |
*/ |
812 |
|
813 |
typedef struct TkpClipMask { |
814 |
int type; /* One of TKP_CLIP_PIXMAP or TKP_CLIP_REGION */ |
815 |
union { |
816 |
Pixmap pixmap; |
817 |
TkRegion region; |
818 |
} value; |
819 |
} TkpClipMask; |
820 |
|
821 |
#define TKP_CLIP_PIXMAP 0 |
822 |
#define TKP_CLIP_REGION 1 |
823 |
|
824 |
/* |
825 |
* Pointer to first entry in list of all displays currently known. |
826 |
*/ |
827 |
|
828 |
extern TkDisplay *tkDisplayList; |
829 |
|
830 |
/* |
831 |
* Return values from TkGrabState: |
832 |
*/ |
833 |
|
834 |
#define TK_GRAB_NONE 0 |
835 |
#define TK_GRAB_IN_TREE 1 |
836 |
#define TK_GRAB_ANCESTOR 2 |
837 |
#define TK_GRAB_EXCLUDED 3 |
838 |
|
839 |
/* |
840 |
* The macro below is used to modify a "char" value (e.g. by casting |
841 |
* it to an unsigned character) so that it can be used safely with |
842 |
* macros such as isspace. |
843 |
*/ |
844 |
|
845 |
#define UCHAR(c) ((unsigned char) (c)) |
846 |
|
847 |
/* |
848 |
* The following symbol is used in the mode field of FocusIn events |
849 |
* generated by an embedded application to request the input focus from |
850 |
* its container. |
851 |
*/ |
852 |
|
853 |
#define EMBEDDED_APP_WANTS_FOCUS (NotifyNormal + 20) |
854 |
|
855 |
/* |
856 |
* The following special modifier mask bits are defined, to indicate |
857 |
* logical modifiers such as Meta and Alt that may float among the |
858 |
* actual modifier bits. |
859 |
*/ |
860 |
|
861 |
#define META_MASK (AnyModifier<<1) |
862 |
#define ALT_MASK (AnyModifier<<2) |
863 |
|
864 |
/* |
865 |
* Miscellaneous variables shared among Tk modules but not exported |
866 |
* to the outside world: |
867 |
*/ |
868 |
|
869 |
extern Tk_SmoothMethod tkBezierSmoothMethod; |
870 |
extern Tk_ImageType tkBitmapImageType; |
871 |
extern Tk_PhotoImageFormat tkImgFmtGIF; |
872 |
extern void (*tkHandleEventProc) _ANSI_ARGS_(( |
873 |
XEvent* eventPtr)); |
874 |
extern Tk_PhotoImageFormat tkImgFmtPPM; |
875 |
extern TkMainInfo *tkMainWindowList; |
876 |
extern Tk_ImageType tkPhotoImageType; |
877 |
extern Tcl_HashTable tkPredefBitmapTable; |
878 |
extern int tkSendSerial; |
879 |
|
880 |
#include "tkIntDecls.h" |
881 |
|
882 |
#ifdef BUILD_tk |
883 |
# undef TCL_STORAGE_CLASS |
884 |
# define TCL_STORAGE_CLASS DLLEXPORT |
885 |
#endif |
886 |
|
887 |
/* |
888 |
* Internal procedures shared among Tk modules but not exported |
889 |
* to the outside world: |
890 |
*/ |
891 |
|
892 |
extern int Tk_AfterCmd _ANSI_ARGS_((ClientData clientData, |
893 |
Tcl_Interp *interp, int argc, char **argv)); |
894 |
extern int Tk_BellObjCmd _ANSI_ARGS_((ClientData clientData, |
895 |
Tcl_Interp *interp, int objc, |
896 |
Tcl_Obj *CONST objv[])); |
897 |
extern int Tk_BindCmd _ANSI_ARGS_((ClientData clientData, |
898 |
Tcl_Interp *interp, int argc, char **argv)); |
899 |
extern int Tk_BindtagsCmd _ANSI_ARGS_((ClientData clientData, |
900 |
Tcl_Interp *interp, int argc, char **argv)); |
901 |
extern int Tk_ButtonObjCmd _ANSI_ARGS_((ClientData clientData, |
902 |
Tcl_Interp *interp, int objc, |
903 |
Tcl_Obj *CONST objv[])); |
904 |
extern int Tk_CanvasObjCmd _ANSI_ARGS_((ClientData clientData, |
905 |
Tcl_Interp *interp, int argc, Tcl_Obj *CONST objv[])); |
906 |
extern int Tk_CheckbuttonObjCmd _ANSI_ARGS_((ClientData clientData, |
907 |
Tcl_Interp *interp, int objc, |
908 |
Tcl_Obj *CONST objv[])); |
909 |
extern int Tk_ClipboardCmd _ANSI_ARGS_((ClientData clientData, |
910 |
Tcl_Interp *interp, int argc, char **argv)); |
911 |
extern int Tk_ChooseColorObjCmd _ANSI_ARGS_(( |
912 |
ClientData clientData, Tcl_Interp *interp, |
913 |
int objc, Tcl_Obj *CONST objv[])); |
914 |
extern int Tk_ChooseDirectoryObjCmd _ANSI_ARGS_(( |
915 |
ClientData clientData, Tcl_Interp *interp, |
916 |
int objc, Tcl_Obj *CONST objv[])); |
917 |
extern int Tk_ChooseFontObjCmd _ANSI_ARGS_((ClientData clientData, |
918 |
Tcl_Interp *interp, int objc, |
919 |
Tcl_Obj *CONST objv[])); |
920 |
extern int Tk_DestroyObjCmd _ANSI_ARGS_((ClientData clientData, |
921 |
Tcl_Interp *interp, int objc, |
922 |
Tcl_Obj *CONST objv[])); |
923 |
extern int Tk_EntryObjCmd _ANSI_ARGS_((ClientData clientData, |
924 |
Tcl_Interp *interp, int objc, |
925 |
Tcl_Obj *CONST objv[])); |
926 |
extern int Tk_EventObjCmd _ANSI_ARGS_((ClientData clientData, |
927 |
Tcl_Interp *interp, int objc, |
928 |
Tcl_Obj *CONST objv[])); |
929 |
extern int Tk_FileeventCmd _ANSI_ARGS_((ClientData clientData, |
930 |
Tcl_Interp *interp, int argc, char **argv)); |
931 |
extern int Tk_FrameObjCmd _ANSI_ARGS_((ClientData clientData, |
932 |
Tcl_Interp *interp, int objc, |
933 |
Tcl_Obj *CONST objv[])); |
934 |
extern int Tk_FocusObjCmd _ANSI_ARGS_((ClientData clientData, |
935 |
Tcl_Interp *interp, int objc, |
936 |
Tcl_Obj *CONST objv[])); |
937 |
extern int Tk_FontObjCmd _ANSI_ARGS_((ClientData clientData, |
938 |
Tcl_Interp *interp, int objc, |
939 |
Tcl_Obj *CONST objv[])); |
940 |
extern int Tk_GetOpenFileObjCmd _ANSI_ARGS_((ClientData clientData, |
941 |
Tcl_Interp *interp, int objc, |
942 |
Tcl_Obj *CONST objv[])); |
943 |
extern int Tk_GetSaveFileObjCmd _ANSI_ARGS_((ClientData clientData, |
944 |
Tcl_Interp *interp, int objc, |
945 |
Tcl_Obj *CONST objv[])); |
946 |
extern int Tk_GrabCmd _ANSI_ARGS_((ClientData clientData, |
947 |
Tcl_Interp *interp, int argc, char **argv)); |
948 |
extern int Tk_GridCmd _ANSI_ARGS_((ClientData clientData, |
949 |
Tcl_Interp *interp, int argc, char **argv)); |
950 |
extern int Tk_ImageObjCmd _ANSI_ARGS_((ClientData clientData, |
951 |
Tcl_Interp *interp, int objc, |
952 |
Tcl_Obj *CONST objv[])); |
953 |
extern int Tk_LabelObjCmd _ANSI_ARGS_((ClientData clientData, |
954 |
Tcl_Interp *interp, int objc, |
955 |
Tcl_Obj *CONST objv[])); |
956 |
extern int Tk_ListboxObjCmd _ANSI_ARGS_((ClientData clientData, |
957 |
Tcl_Interp *interp, int objc, |
958 |
Tcl_Obj *CONST objv[])); |
959 |
extern int Tk_LowerObjCmd _ANSI_ARGS_((ClientData clientData, |
960 |
Tcl_Interp *interp, int objc, |
961 |
Tcl_Obj *CONST objv[])); |
962 |
extern int Tk_MenubuttonObjCmd _ANSI_ARGS_((ClientData clientData, |
963 |
Tcl_Interp *interp, int objc, |
964 |
Tcl_Obj *CONST objv[])); |
965 |
extern int Tk_MessageBoxObjCmd _ANSI_ARGS_((ClientData clientData, |
966 |
Tcl_Interp *interp, int objc, |
967 |
Tcl_Obj *CONST objv[])); |
968 |
extern int Tk_MessageCmd _ANSI_ARGS_((ClientData clientData, |
969 |
Tcl_Interp *interp, int argc, char **argv)); |
970 |
extern int Tk_OptionObjCmd _ANSI_ARGS_((ClientData clientData, |
971 |
Tcl_Interp *interp, int objc, |
972 |
Tcl_Obj *CONST objv[])); |
973 |
extern int Tk_PackCmd _ANSI_ARGS_((ClientData clientData, |
974 |
Tcl_Interp *interp, int argc, char **argv)); |
975 |
extern int Tk_PlaceCmd _ANSI_ARGS_((ClientData clientData, |
976 |
Tcl_Interp *interp, int argc, char **argv)); |
977 |
extern int Tk_RadiobuttonObjCmd _ANSI_ARGS_((ClientData clientData, |
978 |
Tcl_Interp *interp, int objc, |
979 |
Tcl_Obj *CONST objv[])); |
980 |
extern int Tk_RaiseObjCmd _ANSI_ARGS_((ClientData clientData, |
981 |
Tcl_Interp *interp, int objc, |
982 |
Tcl_Obj *CONST objv[])); |
983 |
extern int Tk_ScaleObjCmd _ANSI_ARGS_((ClientData clientData, |
984 |
Tcl_Interp *interp, int objc, |
985 |
Tcl_Obj *CONST objv[])); |
986 |
extern int Tk_ScrollbarCmd _ANSI_ARGS_((ClientData clientData, |
987 |
Tcl_Interp *interp, int argc, char **argv)); |
988 |
extern int Tk_SelectionCmd _ANSI_ARGS_((ClientData clientData, |
989 |
Tcl_Interp *interp, int argc, char **argv)); |
990 |
extern int Tk_SendCmd _ANSI_ARGS_((ClientData clientData, |
991 |
Tcl_Interp *interp, int argc, char **argv)); |
992 |
extern int Tk_SendObjCmd _ANSI_ARGS_((ClientData clientData, |
993 |
Tcl_Interp *interp, int objc, |
994 |
Tcl_Obj *CONST objv[])); |
995 |
extern int Tk_TextCmd _ANSI_ARGS_((ClientData clientData, |
996 |
Tcl_Interp *interp, int argc, char **argv)); |
997 |
extern int Tk_TkObjCmd _ANSI_ARGS_((ClientData clientData, |
998 |
Tcl_Interp *interp, int objc, |
999 |
Tcl_Obj *CONST objv[])); |
1000 |
extern int Tk_TkwaitCmd _ANSI_ARGS_((ClientData clientData, |
1001 |
Tcl_Interp *interp, int argc, char **argv)); |
1002 |
extern int Tk_ToplevelObjCmd _ANSI_ARGS_((ClientData clientData, |
1003 |
Tcl_Interp *interp, int objc, |
1004 |
Tcl_Obj *CONST objv[])); |
1005 |
extern int Tk_UpdateObjCmd _ANSI_ARGS_((ClientData clientData, |
1006 |
Tcl_Interp *interp, int objc, |
1007 |
Tcl_Obj *CONST objv[])); |
1008 |
extern int Tk_WinfoObjCmd _ANSI_ARGS_((ClientData clientData, |
1009 |
Tcl_Interp *interp, int objc, |
1010 |
Tcl_Obj *CONST objv[])); |
1011 |
extern int Tk_WmCmd _ANSI_ARGS_((ClientData clientData, |
1012 |
Tcl_Interp *interp, int argc, char **argv)); |
1013 |
|
1014 |
void TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp, |
1015 |
int devId, char *buffer, long size)); |
1016 |
|
1017 |
extern void TkEventInit _ANSI_ARGS_((void)); |
1018 |
|
1019 |
extern int TkCreateMenuCmd _ANSI_ARGS_((Tcl_Interp *interp)); |
1020 |
extern int TkDeadAppCmd _ANSI_ARGS_((ClientData clientData, |
1021 |
Tcl_Interp *interp, int argc, char **argv)); |
1022 |
|
1023 |
extern int TkpTestembedCmd _ANSI_ARGS_((ClientData clientData, |
1024 |
Tcl_Interp *interp, int argc, char **argv)); |
1025 |
extern int TkCanvasGetCoordObj _ANSI_ARGS_((Tcl_Interp *interp, |
1026 |
Tk_Canvas canvas, Tcl_Obj *obj, |
1027 |
double *doublePtr)); |
1028 |
extern int TkCanvasDashParseProc _ANSI_ARGS_(( |
1029 |
ClientData clientData, Tcl_Interp *interp, |
1030 |
Tk_Window tkwin, CONST char *value, char *widgRec, |
1031 |
int offset)); |
1032 |
extern char * TkCanvasDashPrintProc _ANSI_ARGS_(( |
1033 |
ClientData clientData, Tk_Window tkwin, |
1034 |
char *widgRec, int offset, |
1035 |
Tcl_FreeProc **freeProcPtr)); |
1036 |
extern int TkGetDoublePixels _ANSI_ARGS_((Tcl_Interp *interp, |
1037 |
Tk_Window tkwin, CONST char *string, |
1038 |
double *doublePtr)); |
1039 |
extern int TkOffsetParseProc _ANSI_ARGS_(( |
1040 |
ClientData clientData, Tcl_Interp *interp, |
1041 |
Tk_Window tkwin, CONST char *value, char *widgRec, |
1042 |
int offset)); |
1043 |
extern char * TkOffsetPrintProc _ANSI_ARGS_(( |
1044 |
ClientData clientData, Tk_Window tkwin, |
1045 |
char *widgRec, int offset, |
1046 |
Tcl_FreeProc **freeProcPtr)); |
1047 |
extern int TkOrientParseProc _ANSI_ARGS_(( |
1048 |
ClientData clientData, Tcl_Interp *interp, |
1049 |
Tk_Window tkwin, CONST char *value, |
1050 |
char *widgRec, int offset)); |
1051 |
extern char * TkOrientPrintProc _ANSI_ARGS_(( |
1052 |
ClientData clientData, Tk_Window tkwin, |
1053 |
char *widgRec, int offset, |
1054 |
Tcl_FreeProc **freeProcPtr)); |
1055 |
extern int TkPixelParseProc _ANSI_ARGS_(( |
1056 |
ClientData clientData, Tcl_Interp *interp, |
1057 |
Tk_Window tkwin, CONST char *value, char *widgRec, |
1058 |
int offset)); |
1059 |
extern char * TkPixelPrintProc _ANSI_ARGS_(( |
1060 |
ClientData clientData, Tk_Window tkwin, |
1061 |
char *widgRec, int offset, |
1062 |
Tcl_FreeProc **freeProcPtr)); |
1063 |
extern int TkPostscriptImage _ANSI_ARGS_((Tcl_Interp *interp, |
1064 |
Tk_Window tkwin, Tk_PostscriptInfo psInfo, |
1065 |
XImage *ximage, int x, int y, int width, |
1066 |
int height)); |
1067 |
extern int TkSmoothParseProc _ANSI_ARGS_((ClientData clientData, |
1068 |
Tcl_Interp *interp, Tk_Window tkwin, |
1069 |
CONST char *value, char *recordPtr, int offset)); |
1070 |
extern char * TkSmoothPrintProc _ANSI_ARGS_((ClientData clientData, |
1071 |
Tk_Window tkwin, char *recordPtr, int offset, |
1072 |
Tcl_FreeProc **freeProcPtr)); |
1073 |
extern int TkStateParseProc _ANSI_ARGS_(( |
1074 |
ClientData clientData, Tcl_Interp *interp, |
1075 |
Tk_Window tkwin, CONST char *value, |
1076 |
char *widgRec, int offset)); |
1077 |
extern char * TkStatePrintProc _ANSI_ARGS_(( |
1078 |
ClientData clientData, Tk_Window tkwin, |
1079 |
char *widgRec, int offset, |
1080 |
Tcl_FreeProc **freeProcPtr)); |
1081 |
extern int TkTileParseProc _ANSI_ARGS_(( |
1082 |
ClientData clientData, Tcl_Interp *interp, |
1083 |
Tk_Window tkwin, CONST char *value, char *widgRec, |
1084 |
int offset)); |
1085 |
extern char * TkTilePrintProc _ANSI_ARGS_(( |
1086 |
ClientData clientData, Tk_Window tkwin, |
1087 |
char *widgRec, int offset, |
1088 |
Tcl_FreeProc **freeProcPtr)); |
1089 |
|
1090 |
/* |
1091 |
* Unsupported commands. |
1092 |
*/ |
1093 |
extern int TkUnsupported1Cmd _ANSI_ARGS_((ClientData clientData, |
1094 |
Tcl_Interp *interp, int argc, char **argv)); |
1095 |
|
1096 |
# undef TCL_STORAGE_CLASS |
1097 |
# define TCL_STORAGE_CLASS DLLIMPORT |
1098 |
|
1099 |
#endif /* _TKINT */ |
1100 |
|
1101 |
/* End of tkint.h */ |