tkInt.h

Go to the documentation of this file.
00001 /*
00002  * tkInt.h --
00003  *
00004  *      Declarations for things used internally by the Tk
00005  *      procedures but not exported outside the module.
00006  *
00007  * Copyright (c) 1990-1994 The Regents of the University of California.
00008  * Copyright (c) 1994-1997 Sun Microsystems, Inc.
00009  * Copyright (c) 1998 by Scriptics Corporation.
00010  *
00011  * See the file "license.terms" for information on usage and redistribution
00012  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
00013  *
00014  * RCS: $Id: tkInt.h,v 14.1 2004/11/16 19:42:10 morrison Exp $ 
00015  */
00016 
00017 #ifndef _TKINT
00018 #define _TKINT
00019 
00020 #ifndef _TK
00021 #include "tk.h"
00022 #endif
00023 #ifndef _TCL
00024 #include "tcl.h"
00025 #endif
00026 #ifndef _TKPORT
00027 #include <tkPort.h>
00028 #endif
00029 
00030 /*
00031  * Opaque type declarations:
00032  */
00033 
00034 typedef struct TkColormap TkColormap;
00035 typedef struct TkGrabEvent TkGrabEvent;
00036 typedef struct TkpCursor_ *TkpCursor;
00037 typedef struct TkRegion_ *TkRegion;
00038 typedef struct TkStressedCmap TkStressedCmap;
00039 typedef struct TkBindInfo_ *TkBindInfo;
00040 
00041 /*
00042  * Procedure types.
00043  */
00044 
00045 typedef int (TkBindEvalProc) _ANSI_ARGS_((ClientData clientData,
00046         Tcl_Interp *interp, XEvent *eventPtr, Tk_Window tkwin,
00047         KeySym keySym));
00048 typedef void (TkBindFreeProc) _ANSI_ARGS_((ClientData clientData));
00049 
00050 /*
00051  * One of the following structures is maintained for each cursor in
00052  * use in the system.  This structure is used by tkCursor.c and the
00053  * various system specific cursor files.
00054  */
00055 
00056 typedef struct TkCursor {
00057     Tk_Cursor cursor;           /* System specific identifier for cursor. */
00058     Display *display;           /* Display containing cursor. Needed for
00059                                  * disposal and retrieval of cursors. */
00060     int resourceRefCount;       /* Number of active uses of this cursor (each
00061                                  * active use corresponds to a call to
00062                                  * Tk_AllocPreserveFromObj or Tk_Preserve).
00063                                  * If this count is 0, then this structure
00064                                  * is no longer valid and it isn't present
00065                                  * in a hash table: it is being kept around
00066                                  * only because there are objects referring
00067                                  * to it.  The structure is freed when
00068                                  * resourceRefCount and objRefCount are
00069                                  * both 0. */
00070     int objRefCount;            /* Number of Tcl objects that reference
00071                                  * this structure.. */
00072     Tcl_HashTable *otherTable;  /* Second table (other than idTable) used
00073                                  * to index this entry. */
00074     Tcl_HashEntry *hashPtr;     /* Entry in otherTable for this structure
00075                                  * (needed when deleting). */
00076     Tcl_HashEntry *idHashPtr;   /* Entry in idTable for this structure
00077                                  * (needed when deleting). */
00078     struct TkCursor *nextPtr;   /* Points to the next TkCursor structure with
00079                                  * the same name.  Cursors with the same
00080                                  * name but different displays are chained
00081                                  * together off a single hash table entry. */
00082 } TkCursor;
00083 
00084 /*
00085  * This defines whether we should try to use XIM over-the-spot style
00086  * input.  Allow users to override it.  It is a much more elegant use
00087  * of XIM, but uses a bit more memory.
00088  */
00089 
00090 #ifndef TK_XIM_SPOT
00091 #   define TK_XIM_SPOT  1
00092 #endif
00093 
00094 /*
00095  * The following structure is kept one-per-TkDisplay to maintain information
00096  * about the caret (cursor location) on this display.  This is used to
00097  * dictate global focus location (Windows Accessibility guidelines) and to
00098  * position the IME or XIM over-the-spot window.
00099  */
00100 
00101 typedef struct TkCaret {
00102     struct TkWindow *winPtr;    /* the window on which we requested caret
00103                                  * placement */
00104     int x;                      /* relative x coord of the caret */
00105     int y;                      /* relative y coord of the caret */
00106     int height;                 /* specified height of the window */
00107 } TkCaret;
00108 
00109 /*
00110  * One of the following structures is maintained for each display
00111  * containing a window managed by Tk.  In part, the structure is 
00112  * used to store thread-specific data, since each thread will have 
00113  * its own TkDisplay structure.
00114  */
00115 
00116 typedef struct TkDisplay {
00117     Display *display;           /* Xlib's info about display. */
00118     struct TkDisplay *nextPtr;  /* Next in list of all displays. */
00119     char *name;                 /* Name of display (with any screen
00120                                  * identifier removed).  Malloc-ed. */
00121     Time lastEventTime;         /* Time of last event received for this
00122                                  * display. */
00123 
00124     /*
00125      * Information used primarily by tk3d.c:
00126      */
00127 
00128     int borderInit;             /* 0 means borderTable needs initializing. */
00129     Tcl_HashTable borderTable;  /* Maps from color name to TkBorder 
00130                                  * structure. */
00131 
00132     /*
00133      * Information used by tkAtom.c only:
00134      */
00135 
00136     int atomInit;               /* 0 means stuff below hasn't been
00137                                  * initialized yet. */
00138     Tcl_HashTable nameTable;    /* Maps from names to Atom's. */
00139     Tcl_HashTable atomTable;    /* Maps from Atom's back to names. */
00140 
00141     /*
00142      * Information used primarily by tkBind.c:
00143      */
00144 
00145     int bindInfoStale;          /* Non-zero means the variables in this
00146                                  * part of the structure are potentially
00147                                  * incorrect and should be recomputed. */
00148     unsigned int modeModMask;   /* Has one bit set to indicate the modifier
00149                                  * corresponding to "mode shift".  If no
00150                                  * such modifier, than this is zero. */
00151     unsigned int metaModMask;   /* Has one bit set to indicate the modifier
00152                                  * corresponding to the "Meta" key.  If no
00153                                  * such modifier, then this is zero. */
00154     unsigned int altModMask;    /* Has one bit set to indicate the modifier
00155                                  * corresponding to the "Meta" key.  If no
00156                                  * such modifier, then this is zero. */
00157     enum {LU_IGNORE, LU_CAPS, LU_SHIFT} lockUsage;
00158                                 /* Indicates how to interpret lock modifier. */
00159     int numModKeyCodes;         /* Number of entries in modKeyCodes array
00160                                  * below. */
00161     KeyCode *modKeyCodes;       /* Pointer to an array giving keycodes for
00162                                  * all of the keys that have modifiers
00163                                  * associated with them.  Malloc'ed, but
00164                                  * may be NULL. */
00165 
00166     /*
00167      * Information used by tkBitmap.c only:
00168      */
00169   
00170     int bitmapInit;             /* 0 means tables above need initializing. */
00171     int bitmapAutoNumber;       /* Used to number bitmaps. */
00172     Tcl_HashTable bitmapNameTable;    
00173                                 /* Maps from name of bitmap to the first 
00174                                  * TkBitmap record for that name. */
00175     Tcl_HashTable bitmapIdTable;/* Maps from bitmap id to the TkBitmap
00176                                  * structure for the bitmap. */
00177     Tcl_HashTable bitmapDataTable;    
00178                                 /* Used by Tk_GetBitmapFromData to map from
00179                                  * a collection of in-core data about a 
00180                                  * bitmap to a reference giving an auto-
00181                                  * matically-generated name for the bitmap. */
00182 
00183     /*
00184      * Information used by tkCanvas.c only:
00185      */
00186 
00187     int numIdSearches;          
00188     int numSlowSearches;
00189 
00190     /*
00191      * Used by tkColor.c only:
00192      */
00193 
00194     int colorInit;              /* 0 means color module needs initializing. */
00195     TkStressedCmap *stressPtr;  /* First in list of colormaps that have
00196                                  * filled up, so we have to pick an
00197                                  * approximate color. */
00198     Tcl_HashTable colorNameTable;
00199                                 /* Maps from color name to TkColor structure
00200                                  * for that color. */
00201     Tcl_HashTable colorValueTable;
00202                                 /* Maps from integer RGB values to TkColor
00203                                  * structures. */
00204 
00205     /*
00206      * Used by tkCursor.c only:
00207      */
00208 
00209     int cursorInit;             /* 0 means cursor module need initializing. */
00210     Tcl_HashTable cursorNameTable;
00211                                 /* Maps from a string name to a cursor to the
00212                                  * TkCursor record for the cursor. */
00213     Tcl_HashTable cursorDataTable;
00214                                 /* Maps from a collection of in-core data
00215                                  * about a cursor to a TkCursor structure. */
00216     Tcl_HashTable cursorIdTable;
00217                                 /* Maps from a cursor id to the TkCursor
00218                                  * structure for the cursor. */
00219     char cursorString[20];      /* Used to store a cursor id string. */
00220     Font cursorFont;            /* Font to use for standard cursors.
00221                                  * None means font not loaded yet. */
00222 
00223     /*
00224      * Information used by tkError.c only:
00225      */
00226 
00227     struct TkErrorHandler *errorPtr;
00228                                 /* First in list of error handlers
00229                                  * for this display.  NULL means
00230                                  * no handlers exist at present. */
00231     int deleteCount;            /* Counts # of handlers deleted since
00232                                  * last time inactive handlers were
00233                                  * garbage-collected.  When this number
00234                                  * gets big, handlers get cleaned up. */
00235 
00236     /*
00237      * Used by tkEvent.c only:
00238      */
00239 
00240     struct TkWindowEvent *delayedMotionPtr;
00241                                 /* Points to a malloc-ed motion event
00242                                  * whose processing has been delayed in
00243                                  * the hopes that another motion event
00244                                  * will come along right away and we can
00245                                  * merge the two of them together.  NULL
00246                                  * means that there is no delayed motion
00247                                  * event. */
00248 
00249     /*
00250      * Information used by tkFocus.c only:
00251      */
00252 
00253     int focusDebug;             /* 1 means collect focus debugging 
00254                                  * statistics. */
00255     struct TkWindow *implicitWinPtr;
00256                                 /* If the focus arrived at a toplevel window
00257                                  * implicitly via an Enter event (rather
00258                                  * than via a FocusIn event), this points
00259                                  * to the toplevel window.  Otherwise it is
00260                                  * NULL. */
00261     struct TkWindow *focusPtr;  /* Points to the window on this display that
00262                                  * should be receiving keyboard events.  When
00263                                  * multiple applications on the display have
00264                                  * the focus, this will refer to the
00265                                  * innermost window in the innermost
00266                                  * application.  This information isn't used
00267                                  * under Unix or Windows, but it's needed on
00268                                  * the Macintosh. */
00269 
00270     /*
00271      * Information used by tkGC.c only:
00272      */
00273     
00274     Tcl_HashTable gcValueTable; /* Maps from a GC's values to a TkGC structure
00275                                  * describing a GC with those values. */
00276     Tcl_HashTable gcIdTable;    /* Maps from a GC to a TkGC. */ 
00277     int gcInit;                 /* 0 means the tables below need 
00278                                  * initializing. */
00279 
00280     /*
00281      * Information used by tkGeometry.c only:
00282      */
00283 
00284     Tcl_HashTable maintainHashTable;
00285                                 /* Hash table that maps from a master's 
00286                                  * Tk_Window token to a list of slaves
00287                                  * managed by that master. */
00288     int geomInit;    
00289 
00290     /*
00291      * Information used by tkGet.c only:
00292      */
00293   
00294     Tcl_HashTable uidTable;     /* Stores all Tk_Uid  used in a thread. */
00295     int uidInit;                /* 0 means uidTable needs initializing. */
00296 
00297     /*
00298      * Information used by tkGrab.c only:
00299      */
00300 
00301     struct TkWindow *grabWinPtr;
00302                                 /* Window in which the pointer is currently
00303                                  * grabbed, or NULL if none. */
00304     struct TkWindow *eventualGrabWinPtr;
00305                                 /* Value that grabWinPtr will have once the
00306                                  * grab event queue (below) has been
00307                                  * completely emptied. */
00308     struct TkWindow *buttonWinPtr;
00309                                 /* Window in which first mouse button was
00310                                  * pressed while grab was in effect, or NULL
00311                                  * if no such press in effect. */
00312     struct TkWindow *serverWinPtr;
00313                                 /* If no application contains the pointer then
00314                                  * this is NULL.  Otherwise it contains the
00315                                  * last window for which we've gotten an
00316                                  * Enter or Leave event from the server (i.e.
00317                                  * the last window known to have contained
00318                                  * the pointer).  Doesn't reflect events
00319                                  * that were synthesized in tkGrab.c. */
00320     TkGrabEvent *firstGrabEventPtr;
00321                                 /* First in list of enter/leave events
00322                                  * synthesized by grab code.  These events
00323                                  * must be processed in order before any other
00324                                  * events are processed.  NULL means no such
00325                                  * events. */
00326     TkGrabEvent *lastGrabEventPtr;
00327                                 /* Last in list of synthesized events, or NULL
00328                                  * if list is empty. */
00329     int grabFlags;              /* Miscellaneous flag values.  See definitions
00330                                  * in tkGrab.c. */
00331 
00332     /*
00333      * Information used by tkGrid.c only:
00334      */
00335 
00336     int gridInit;               /* 0 means table below needs initializing. */
00337     Tcl_HashTable gridHashTable;/* Maps from Tk_Window tokens to 
00338                                  * corresponding Grid structures. */
00339 
00340     /*
00341      * Information used by tkImage.c only:
00342      */
00343 
00344     int imageId;                /* Value used to number image ids. */
00345 
00346     /*
00347      * Information used by tkMacWinMenu.c only:
00348      */
00349 
00350     int postCommandGeneration;  
00351 
00352     /*
00353      * Information used by tkOption.c only.
00354      */
00355 
00356 
00357 
00358     /*
00359      * Information used by tkPack.c only.
00360      */
00361 
00362     int packInit;              /* 0 means table below needs initializing. */
00363     Tcl_HashTable packerHashTable;
00364                                /* Maps from Tk_Window tokens to 
00365                                 * corresponding Packer structures. */
00366     
00367 
00368     /*
00369      * Information used by tkPlace.c only.
00370      */
00371 
00372     int placeInit;              /* 0 means tables below need initializing. */
00373     Tcl_HashTable masterTable;  /* Maps from Tk_Window toke to the Master
00374                                  * structure for the window, if it exists. */
00375     Tcl_HashTable slaveTable;   /* Maps from Tk_Window toke to the Slave
00376                                  * structure for the window, if it exists. */
00377 
00378     /*
00379      * Information used by tkSelect.c and tkClipboard.c only:
00380      */
00381 
00382     struct TkSelectionInfo *selectionInfoPtr;
00383                                 /* First in list of selection information
00384                                  * records.  Each entry contains information
00385                                  * about the current owner of a particular
00386                                  * selection on this display. */
00387     Atom multipleAtom;          /* Atom for MULTIPLE.  None means
00388                                  * selection stuff isn't initialized. */
00389     Atom incrAtom;              /* Atom for INCR. */
00390     Atom targetsAtom;           /* Atom for TARGETS. */
00391     Atom timestampAtom;         /* Atom for TIMESTAMP. */
00392     Atom textAtom;              /* Atom for TEXT. */
00393     Atom compoundTextAtom;      /* Atom for COMPOUND_TEXT. */
00394     Atom applicationAtom;       /* Atom for TK_APPLICATION. */
00395     Atom windowAtom;            /* Atom for TK_WINDOW. */
00396     Atom clipboardAtom;         /* Atom for CLIPBOARD. */
00397     Atom utf8Atom;              /* Atom for UTF8_STRING. */
00398 
00399     Tk_Window clipWindow;       /* Window used for clipboard ownership and to
00400                                  * retrieve selections between processes. NULL
00401                                  * means clipboard info hasn't been
00402                                  * initialized. */
00403     int clipboardActive;        /* 1 means we currently own the clipboard
00404                                  * selection, 0 means we don't. */
00405     struct TkMainInfo *clipboardAppPtr;
00406                                 /* Last application that owned clipboard. */
00407     struct TkClipboardTarget *clipTargetPtr;
00408                                 /* First in list of clipboard type information
00409                                  * records.  Each entry contains information
00410                                  * about the buffers for a given selection
00411                                  * target. */
00412 
00413     /*
00414      * Information used by tkSend.c only:
00415      */
00416 
00417     Tk_Window commTkwin;        /* Window used for communication
00418                                  * between interpreters during "send"
00419                                  * commands.  NULL means send info hasn't
00420                                  * been initialized yet. */
00421     Atom commProperty;          /* X's name for comm property. */
00422     Atom registryProperty;      /* X's name for property containing
00423                                  * registry of interpreter names. */
00424     Atom appNameProperty;       /* X's name for property used to hold the
00425                                  * application name on each comm window. */
00426 
00427     /*
00428      * Information used by tkXId.c only:
00429      */
00430 
00431     struct TkIdStack *idStackPtr;
00432                                 /* First in list of chunks of free resource
00433                                  * identifiers, or NULL if there are no free
00434                                  * resources. */
00435     XID (*defaultAllocProc) _ANSI_ARGS_((Display *display));
00436                                 /* Default resource allocator for display. */
00437     struct TkIdStack *windowStackPtr;
00438                                 /* First in list of chunks of window
00439                                  * identifers that can't be reused right
00440                                  * now. */
00441     Tcl_TimerToken idCleanupScheduled;
00442                                 /* If set, it means a call to WindowIdCleanup
00443                                  * has already been scheduled, 0 means it
00444                                  * hasn't. */
00445 
00446     /*
00447      * Information used by tkUnixWm.c and tkWinWm.c only:
00448      */
00449 
00450     struct TkWmInfo *firstWmPtr;  /* Points to first top-level window. */
00451     struct TkWmInfo *foregroundWmPtr;    
00452                                 /* Points to the foreground window. */
00453 
00454     /*
00455      * Information maintained by tkWindow.c for use later on by tkXId.c:
00456      */
00457 
00458 
00459     int destroyCount;           /* Number of Tk_DestroyWindow operations
00460                                  * in progress. */
00461     unsigned long lastDestroyRequest;
00462                                 /* Id of most recent XDestroyWindow request;
00463                                  * can re-use ids in windowStackPtr when
00464                                  * server has seen this request and event
00465                                  * queue is empty. */
00466 
00467     /*
00468      * Information used by tkVisual.c only:
00469      */
00470 
00471     TkColormap *cmapPtr;        /* First in list of all non-default colormaps
00472                                  * allocated for this display. */
00473 
00474     /*
00475      * Miscellaneous information:
00476      */
00477 
00478 #ifdef TK_USE_INPUT_METHODS
00479     XIM inputMethod;            /* Input method for this display */
00480 #if TK_XIM_SPOT
00481     XFontSet inputXfs;          /* XFontSet cached for over-the-spot XIM. */
00482 #endif
00483 #endif /* TK_USE_INPUT_METHODS */
00484     Tcl_HashTable winTable;     /* Maps from X window ids to TkWindow ptrs. */
00485 
00486     int refCount;               /* Reference count of how many Tk applications
00487                                  * are using this display. Used to clean up
00488                                  * the display when we no longer have any
00489                                  * Tk applications using it.
00490                                  */
00491     /*
00492      * The following field were all added for Tk8.3
00493      */
00494     int mouseButtonState;       /* current mouse button state for this
00495                                  * display */
00496     Window mouseButtonWindow;   /* Window the button state was set in,
00497                                  * added in Tk 8.4. */
00498     Window warpWindow;
00499     int warpX;
00500     int warpY;
00501 
00502     /*
00503      * The following field(s) were all added for Tk8.4
00504      */
00505     unsigned int flags;         /* Various flag values:  these are all
00506                                  * defined in below. */
00507     TkCaret caret;              /* information about the caret for this
00508                                  * display.  This is not a pointer. */
00509 } TkDisplay;
00510 
00511 /*
00512  * Flag values for TkDisplay flags.
00513  *  TK_DISPLAY_COLLAPSE_MOTION_EVENTS:  (default on)
00514  *      Indicates that we should collapse motion events on this display
00515  *  TK_DISPLAY_USE_IM:                  (default on, set via tk.tcl)
00516  *      Whether to use input methods for this display
00517  *  TK_DISPLAY_XIM_SPOT:                (default off)
00518  *      Indicates that we should use over-the-spot XIM on this display
00519  *  TK_DISPLAY_WM_TRACING:              (default off)
00520  *      Whether we should do wm tracing on this display.
00521  *  TK_DISPLAY_IN_WARP:                 (default off)
00522  *      Indicates that we are in a pointer warp
00523  */
00524 
00525 #define TK_DISPLAY_COLLAPSE_MOTION_EVENTS       (1 << 0)
00526 #define TK_DISPLAY_USE_IM                       (1 << 1)
00527 #define TK_DISPLAY_XIM_SPOT                     (1 << 2)
00528 #define TK_DISPLAY_WM_TRACING                   (1 << 3)
00529 #define TK_DISPLAY_IN_WARP                      (1 << 4)
00530 
00531 /*
00532  * One of the following structures exists for each error handler
00533  * created by a call to Tk_CreateErrorHandler.  The structure
00534  * is managed by tkError.c.
00535  */
00536 
00537 typedef struct TkErrorHandler {
00538     TkDisplay *dispPtr;         /* Display to which handler applies. */
00539     unsigned long firstRequest; /* Only errors with serial numbers
00540                                  * >= to this are considered. */
00541     unsigned long lastRequest;  /* Only errors with serial numbers
00542                                  * <= to this are considered.  This
00543                                  * field is filled in when XUnhandle
00544                                  * is called.  -1 means XUnhandle
00545                                  * hasn't been called yet. */
00546     int error;                  /* Consider only errors with this
00547                                  * error_code (-1 means consider
00548                                  * all errors). */
00549     int request;                /* Consider only errors with this
00550                                  * major request code (-1 means
00551                                  * consider all major codes). */
00552     int minorCode;              /* Consider only errors with this
00553                                  * minor request code (-1 means
00554                                  * consider all minor codes). */
00555     Tk_ErrorProc *errorProc;    /* Procedure to invoke when a matching
00556                                  * error occurs.  NULL means just ignore
00557                                  * errors. */
00558     ClientData clientData;      /* Arbitrary value to pass to
00559                                  * errorProc. */
00560     struct TkErrorHandler *nextPtr;
00561                                 /* Pointer to next older handler for
00562                                  * this display, or NULL for end of
00563                                  * list. */
00564 } TkErrorHandler;
00565 
00566 
00567 /*
00568  * One of the following structures exists for each event handler
00569  * created by calling Tk_CreateEventHandler.  This information
00570  * is used by tkEvent.c only.
00571  */
00572 
00573 typedef struct TkEventHandler {
00574     unsigned long mask;         /* Events for which to invoke
00575                                  * proc. */
00576     Tk_EventProc *proc;         /* Procedure to invoke when an event
00577                                  * in mask occurs. */
00578     ClientData clientData;      /* Argument to pass to proc. */
00579     struct TkEventHandler *nextPtr;
00580                                 /* Next in list of handlers
00581                                  * associated with window (NULL means
00582                                  * end of list). */
00583 } TkEventHandler;
00584 
00585 /*
00586  * Tk keeps one of the following data structures for each main
00587  * window (created by a call to TkCreateMainWindow).  It stores
00588  * information that is shared by all of the windows associated
00589  * with a particular main window.
00590  */
00591 
00592 typedef struct TkMainInfo {
00593     int refCount;               /* Number of windows whose "mainPtr" fields
00594                                  * point here.  When this becomes zero, can
00595                                  * free up the structure (the reference
00596                                  * count is zero because windows can get
00597                                  * deleted in almost any order;  the main
00598                                  * window isn't necessarily the last one
00599                                  * deleted). */
00600     struct TkWindow *winPtr;    /* Pointer to main window. */
00601     Tcl_Interp *interp;         /* Interpreter associated with application. */
00602     Tcl_HashTable nameTable;    /* Hash table mapping path names to TkWindow
00603                                  * structs for all windows related to this
00604                                  * main window.  Managed by tkWindow.c. */
00605     long deletionEpoch;         /* Incremented by window deletions */
00606     Tk_BindingTable bindingTable;
00607                                 /* Used in conjunction with "bind" command
00608                                  * to bind events to Tcl commands. */
00609     TkBindInfo bindInfo;        /* Information used by tkBind.c on a per
00610                                  * application basis. */
00611     struct TkFontInfo *fontInfoPtr;
00612                                 /* Information used by tkFont.c on a per
00613                                  * application basis. */
00614 
00615     /*
00616      * Information used only by tkFocus.c and tk*Embed.c:
00617      */
00618 
00619     struct TkToplevelFocusInfo *tlFocusPtr;
00620                                 /* First in list of records containing focus
00621                                  * information for each top-level in the
00622                                  * application.  Used only by tkFocus.c. */
00623     struct TkDisplayFocusInfo *displayFocusPtr;
00624                                 /* First in list of records containing focus
00625                                  * information for each display that this
00626                                  * application has ever used.  Used only
00627                                  * by tkFocus.c. */
00628 
00629     struct ElArray *optionRootPtr;
00630                                 /* Top level of option hierarchy for this
00631                                  * main window.  NULL means uninitialized.
00632                                  * Managed by tkOption.c. */
00633     Tcl_HashTable imageTable;   /* Maps from image names to Tk_ImageMaster
00634                                  * structures.  Managed by tkImage.c. */
00635     int strictMotif;            /* This is linked to the tk_strictMotif
00636                                  * global variable. */
00637     struct TkMainInfo *nextPtr; /* Next in list of all main windows managed by
00638                                  * this process. */
00639 } TkMainInfo;
00640 
00641 /*
00642  * Tk keeps the following data structure for each of it's builtin
00643  * bitmaps.  This structure is only used by tkBitmap.c and other
00644  * platform specific bitmap files.
00645  */
00646 
00647 typedef struct {
00648     CONST char *source;         /* Bits for bitmap. */
00649     int width, height;          /* Dimensions of bitmap. */
00650     int native;                 /* 0 means generic (X style) bitmap,
00651                                  * 1 means native style bitmap. */
00652 } TkPredefBitmap;
00653 
00654 /*
00655  * Tk keeps one of the following structures for each window.
00656  * Some of the information (like size and location) is a shadow
00657  * of information managed by the X server, and some is special
00658  * information used here, such as event and geometry management
00659  * information.  This information is (mostly) managed by tkWindow.c.
00660  * WARNING: the declaration below must be kept consistent with the
00661  * Tk_FakeWin structure in tk.h.  If you change one, be sure to
00662  * change the other!!
00663  */
00664 
00665 typedef struct TkWindow {
00666 
00667     /*
00668      * Structural information:
00669      */
00670 
00671     Display *display;           /* Display containing window. */
00672     TkDisplay *dispPtr;         /* Tk's information about display
00673                                  * for window. */
00674     int screenNum;              /* Index of screen for window, among all
00675                                  * those for dispPtr. */
00676     Visual *visual;             /* Visual to use for window.  If not default,
00677                                  * MUST be set before X window is created. */
00678     int depth;                  /* Number of bits/pixel. */
00679     Window window;              /* X's id for window.   NULL means window
00680                                  * hasn't actually been created yet, or it's
00681                                  * been deleted. */
00682     struct TkWindow *childList; /* First in list of child windows,
00683                                  * or NULL if no children.  List is in
00684                                  * stacking order, lowest window first.*/
00685     struct TkWindow *lastChildPtr;
00686                                 /* Last in list of child windows (highest
00687                                  * in stacking order), or NULL if no
00688                                  * children. */
00689     struct TkWindow *parentPtr; /* Pointer to parent window (logical
00690                                  * parent, not necessarily X parent).  NULL
00691                                  * means either this is the main window, or
00692                                  * the window's parent has already been
00693                                  * deleted. */
00694     struct TkWindow *nextPtr;   /* Next higher sibling (in stacking order)
00695                                  * in list of children with same parent.  NULL
00696                                  * means end of list. */
00697     TkMainInfo *mainPtr;        /* Information shared by all windows
00698                                  * associated with a particular main
00699                                  * window.  NULL means this window is
00700                                  * a rogue that isn't associated with
00701                                  * any application (at present, this
00702                                  * only happens for the dummy windows
00703                                  * used for "send" communication).  */
00704 
00705     /*
00706      * Name and type information for the window:
00707      */
00708 
00709     char *pathName;             /* Path name of window (concatenation
00710                                  * of all names between this window and
00711                                  * its top-level ancestor).  This is a
00712                                  * pointer into an entry in
00713                                  * mainPtr->nameTable.  NULL means that
00714                                  * the window hasn't been completely
00715                                  * created yet. */
00716     Tk_Uid nameUid;             /* Name of the window within its parent
00717                                  * (unique within the parent). */
00718     Tk_Uid classUid;            /* Class of the window.  NULL means window
00719                                  * hasn't been given a class yet. */
00720 
00721     /*
00722      * Geometry and other attributes of window.  This information
00723      * may not be updated on the server immediately;  stuff that
00724      * hasn't been reflected in the server yet is called "dirty".
00725      * At present, information can be dirty only if the window
00726      * hasn't yet been created.
00727      */
00728 
00729     XWindowChanges changes;     /* Geometry and other info about
00730                                  * window. */
00731     unsigned int dirtyChanges;  /* Bits indicate fields of "changes"
00732                                  * that are dirty. */
00733     XSetWindowAttributes atts;  /* Current attributes of window. */
00734     unsigned long dirtyAtts;    /* Bits indicate fields of "atts"
00735                                  * that are dirty. */
00736 
00737     unsigned int flags;         /* Various flag values:  these are all
00738                                  * defined in tk.h (confusing, but they're
00739                                  * needed there for some query macros). */
00740 
00741     /*
00742      * Information kept by the event manager (tkEvent.c):
00743      */
00744 
00745     TkEventHandler *handlerList;/* First in list of event handlers
00746                                  * declared for this window, or
00747                                  * NULL if none. */
00748 #ifdef TK_USE_INPUT_METHODS
00749     XIC inputContext;           /* XIM input context. */
00750 #endif /* TK_USE_INPUT_METHODS */
00751 
00752     /*
00753      * Information used for event bindings (see "bind" and "bindtags"
00754      * commands in tkCmds.c):
00755      */
00756 
00757     ClientData *tagPtr;         /* Points to array of tags used for bindings
00758                                  * on this window.  Each tag is a Tk_Uid.
00759                                  * Malloc'ed.  NULL means no tags. */
00760     int numTags;                /* Number of tags at *tagPtr. */
00761 
00762     /*
00763      * Information used by tkOption.c to manage options for the
00764      * window.
00765      */
00766 
00767     int optionLevel;            /* -1 means no option information is
00768                                  * currently cached for this window.
00769                                  * Otherwise this gives the level in
00770                                  * the option stack at which info is
00771                                  * cached. */
00772     /*
00773      * Information used by tkSelect.c to manage the selection.
00774      */
00775 
00776     struct TkSelHandler *selHandlerList;
00777                                 /* First in list of handlers for
00778                                  * returning the selection in various
00779                                  * forms. */
00780 
00781     /*
00782      * Information used by tkGeometry.c for geometry management.
00783      */
00784 
00785     Tk_GeomMgr *geomMgrPtr;     /* Information about geometry manager for
00786                                  * this window. */
00787     ClientData geomData;        /* Argument for geometry manager procedures. */
00788     int reqWidth, reqHeight;    /* Arguments from last call to
00789                                  * Tk_GeometryRequest, or 0's if
00790                                  * Tk_GeometryRequest hasn't been
00791                                  * called. */
00792     int internalBorderLeft;     /* Width of internal border of window
00793                                  * (0 means no internal border).  Geometry
00794                                  * managers should not normally place children
00795                                  * on top of the border. 
00796                                  * Fields for the other three sides are found 
00797                                  * below. */
00798 
00799     /*
00800      * Information maintained by tkWm.c for window manager communication.
00801      */
00802 
00803     struct TkWmInfo *wmInfoPtr; /* For top-level windows (and also
00804                                  * for special Unix menubar and wrapper
00805                                  * windows), points to structure with
00806                                  * wm-related info (see tkWm.c).  For
00807                                  * other windows, this is NULL. */
00808 
00809     /*
00810      * Information used by widget classes.
00811      */
00812 
00813     Tk_ClassProcs *classProcsPtr;
00814     ClientData instanceData;
00815 
00816     /*
00817      * Platform specific information private to each port.
00818      */
00819 
00820     struct TkWindowPrivate *privatePtr;
00821 
00822     /*
00823      * More information used by tkGeometry.c for geometry management.
00824      */
00825 
00826     /* The remaining fields of internal border. */
00827     int internalBorderRight; 
00828     int internalBorderTop;
00829     int internalBorderBottom;
00830     
00831     int minReqWidth;            /* Minimum requested width. */
00832     int minReqHeight;           /* Minimum requested height. */
00833 } TkWindow;
00834 
00835 /*
00836  * The following structure is used as a two way map between integers
00837  * and strings, usually to map between an internal C representation
00838  * and the strings used in Tcl.
00839  */
00840 
00841 typedef struct TkStateMap {
00842     int numKey;                 /* Integer representation of a value. */
00843     char *strKey;               /* String representation of a value. */
00844 } TkStateMap;
00845 
00846 /*
00847  * This structure is used by the Mac and Window porting layers as
00848  * the internal representation of a clip_mask in a GC.
00849  */
00850 
00851 typedef struct TkpClipMask {
00852     int type;                   /* One of TKP_CLIP_PIXMAP or TKP_CLIP_REGION */
00853     union {
00854         Pixmap pixmap;
00855         TkRegion region;
00856     } value;
00857 } TkpClipMask;
00858 
00859 #define TKP_CLIP_PIXMAP 0
00860 #define TKP_CLIP_REGION 1
00861 
00862 /*
00863  * Pointer to first entry in list of all displays currently known.
00864  */
00865 
00866 extern TkDisplay *tkDisplayList;
00867 
00868 /*
00869  * Return values from TkGrabState:
00870  */
00871 
00872 #define TK_GRAB_NONE            0
00873 #define TK_GRAB_IN_TREE         1
00874 #define TK_GRAB_ANCESTOR        2
00875 #define TK_GRAB_EXCLUDED        3
00876 
00877 /*
00878  * The macro below is used to modify a "char" value (e.g. by casting
00879  * it to an unsigned character) so that it can be used safely with
00880  * macros such as isspace.
00881  */
00882 
00883 #define UCHAR(c) ((unsigned char) (c))
00884 
00885 /*
00886  * The following symbol is used in the mode field of FocusIn events
00887  * generated by an embedded application to request the input focus from
00888  * its container.
00889  */
00890 
00891 #define EMBEDDED_APP_WANTS_FOCUS (NotifyNormal + 20)
00892 
00893 /*
00894  * The following special modifier mask bits are defined, to indicate
00895  * logical modifiers such as Meta and Alt that may float among the
00896  * actual modifier bits.
00897  */
00898 
00899 #define META_MASK       (AnyModifier<<1)
00900 #define ALT_MASK        (AnyModifier<<2)
00901 
00902 /*
00903  * Object types not declared in tkObj.c need to be mentioned here so
00904  * they can be properly registered with Tcl:
00905  */
00906 
00907 extern Tcl_ObjType tkBorderObjType;
00908 extern Tcl_ObjType tkBitmapObjType;
00909 extern Tcl_ObjType tkColorObjType;
00910 extern Tcl_ObjType tkCursorObjType;
00911 extern Tcl_ObjType tkFontObjType;
00912 extern Tcl_ObjType tkOptionObjType;
00913 extern Tcl_ObjType tkStateKeyObjType;
00914 
00915 /*
00916  * Miscellaneous variables shared among Tk modules but not exported
00917  * to the outside world:
00918  */
00919 
00920 extern Tk_SmoothMethod          tkBezierSmoothMethod;
00921 extern Tk_ImageType             tkBitmapImageType;
00922 extern Tk_PhotoImageFormat      tkImgFmtGIF;
00923 extern void                     (*tkHandleEventProc) _ANSI_ARGS_((
00924                                     XEvent* eventPtr));
00925 extern Tk_PhotoImageFormat      tkImgFmtPPM;
00926 extern TkMainInfo               *tkMainWindowList;
00927 extern Tk_ImageType             tkPhotoImageType;
00928 extern Tcl_HashTable            tkPredefBitmapTable;
00929 extern int                      tkSendSerial;
00930 
00931 #include "tkIntDecls.h"
00932 
00933 #ifdef BUILD_tk
00934 # undef TCL_STORAGE_CLASS
00935 # define TCL_STORAGE_CLASS DLLEXPORT
00936 #endif
00937 
00938 /*
00939  * Internal procedures shared among Tk modules but not exported
00940  * to the outside world:
00941  */
00942 
00943 EXTERN int              Tk_BellObjCmd _ANSI_ARGS_((ClientData clientData,
00944                             Tcl_Interp *interp, int objc, 
00945                             Tcl_Obj *CONST objv[]));
00946 EXTERN int              Tk_BindObjCmd _ANSI_ARGS_((ClientData clientData,
00947                             Tcl_Interp *interp, int objc,
00948                             Tcl_Obj *CONST objv[]));
00949 EXTERN int              Tk_BindtagsObjCmd _ANSI_ARGS_((ClientData clientData,
00950                             Tcl_Interp *interp, int objc,
00951                             Tcl_Obj *CONST objv[]));
00952 EXTERN int              Tk_ButtonObjCmd _ANSI_ARGS_((ClientData clientData,
00953                             Tcl_Interp *interp, int objc,
00954                             Tcl_Obj *CONST objv[]));
00955 EXTERN int              Tk_CanvasObjCmd _ANSI_ARGS_((ClientData clientData,
00956                             Tcl_Interp *interp, int argc,
00957                             Tcl_Obj *CONST objv[]));
00958 EXTERN int              Tk_CheckbuttonObjCmd _ANSI_ARGS_((
00959                             ClientData clientData,
00960                             Tcl_Interp *interp, int objc,
00961                             Tcl_Obj *CONST objv[]));
00962 EXTERN int              Tk_ClipboardObjCmd _ANSI_ARGS_((
00963                             ClientData clientData, Tcl_Interp *interp,
00964                             int objc, Tcl_Obj *CONST objv[]));
00965 EXTERN int              Tk_ChooseColorObjCmd _ANSI_ARGS_((
00966                             ClientData clientData, Tcl_Interp *interp,
00967                             int objc, Tcl_Obj *CONST objv[]));
00968 EXTERN int              Tk_ChooseDirectoryObjCmd _ANSI_ARGS_((
00969                             ClientData clientData, Tcl_Interp *interp,
00970                             int objc, Tcl_Obj *CONST objv[]));
00971 EXTERN int              Tk_ChooseFontObjCmd _ANSI_ARGS_((ClientData clientData,
00972                             Tcl_Interp *interp, int objc, 
00973                             Tcl_Obj *CONST objv[]));
00974 EXTERN int              Tk_DestroyObjCmd _ANSI_ARGS_((ClientData clientData,
00975                             Tcl_Interp *interp, int objc, 
00976                             Tcl_Obj *CONST objv[]));
00977 EXTERN int              Tk_EntryObjCmd _ANSI_ARGS_((ClientData clientData,
00978                             Tcl_Interp *interp, int objc, 
00979                             Tcl_Obj *CONST objv[]));
00980 EXTERN int              Tk_EventObjCmd _ANSI_ARGS_((ClientData clientData,
00981                             Tcl_Interp *interp, int objc,
00982                             Tcl_Obj *CONST objv[]));
00983 EXTERN int              Tk_FileeventCmd _ANSI_ARGS_((ClientData clientData,
00984                             Tcl_Interp *interp, int argc, char **argv));
00985 EXTERN int              Tk_FrameObjCmd _ANSI_ARGS_((ClientData clientData,
00986                             Tcl_Interp *interp, int objc,
00987                             Tcl_Obj *CONST objv[]));
00988 EXTERN int              Tk_FocusObjCmd _ANSI_ARGS_((ClientData clientData,
00989                             Tcl_Interp *interp, int objc, 
00990                             Tcl_Obj *CONST objv[]));
00991 EXTERN int              Tk_FontObjCmd _ANSI_ARGS_((ClientData clientData,
00992                             Tcl_Interp *interp, int objc, 
00993                             Tcl_Obj *CONST objv[]));
00994 EXTERN int              Tk_GetOpenFileObjCmd _ANSI_ARGS_((
00995                             ClientData clientData,
00996                             Tcl_Interp *interp, int objc, 
00997                             Tcl_Obj *CONST objv[]));
00998 EXTERN int              Tk_GetSaveFileObjCmd _ANSI_ARGS_((
00999                             ClientData clientData,
01000                             Tcl_Interp *interp, int objc, 
01001                             Tcl_Obj *CONST objv[]));
01002 EXTERN int              Tk_GrabObjCmd _ANSI_ARGS_((ClientData clientData,
01003                             Tcl_Interp *interp, int objc,
01004                             Tcl_Obj *CONST objv[]));
01005 EXTERN int              Tk_GridObjCmd _ANSI_ARGS_((ClientData clientData,
01006                             Tcl_Interp *interp, int objc,
01007                             Tcl_Obj *CONST objv[]));
01008 EXTERN int              Tk_ImageObjCmd _ANSI_ARGS_((ClientData clientData,
01009                             Tcl_Interp *interp, int objc, 
01010                             Tcl_Obj *CONST objv[]));
01011 EXTERN int              Tk_LabelObjCmd _ANSI_ARGS_((ClientData clientData,
01012                             Tcl_Interp *interp, int objc,
01013                             Tcl_Obj *CONST objv[]));
01014 EXTERN int              Tk_LabelframeObjCmd _ANSI_ARGS_((ClientData clientData,
01015                             Tcl_Interp *interp, int objc,
01016                             Tcl_Obj *CONST objv[]));
01017 EXTERN int              Tk_ListboxObjCmd _ANSI_ARGS_((ClientData clientData,
01018                             Tcl_Interp *interp, int objc,
01019                             Tcl_Obj *CONST objv[]));
01020 EXTERN int              Tk_LowerObjCmd _ANSI_ARGS_((ClientData clientData,
01021                             Tcl_Interp *interp, int objc,
01022                             Tcl_Obj *CONST objv[]));
01023 EXTERN int              Tk_MenubuttonObjCmd _ANSI_ARGS_((ClientData clientData,
01024                             Tcl_Interp *interp, int objc, 
01025                             Tcl_Obj *CONST objv[]));
01026 EXTERN int              Tk_MessageBoxObjCmd _ANSI_ARGS_((ClientData clientData,
01027                             Tcl_Interp *interp, int objc, 
01028                             Tcl_Obj *CONST objv[]));
01029 EXTERN int              Tk_MessageObjCmd _ANSI_ARGS_((ClientData clientData,
01030                             Tcl_Interp *interp, int objc,
01031                             Tcl_Obj *CONST objv[]));
01032 EXTERN int              Tk_PanedWindowObjCmd _ANSI_ARGS_((
01033                             ClientData clientData,
01034                             Tcl_Interp *interp, int objc,
01035                             Tcl_Obj *CONST objv[]));
01036 EXTERN int              Tk_OptionObjCmd _ANSI_ARGS_((ClientData clientData,
01037                             Tcl_Interp *interp, int objc,
01038                             Tcl_Obj *CONST objv[]));
01039 EXTERN int              Tk_PackObjCmd _ANSI_ARGS_((ClientData clientData,
01040                             Tcl_Interp *interp, int objc,
01041                             Tcl_Obj *CONST objv[]));
01042 EXTERN int              Tk_PlaceObjCmd _ANSI_ARGS_((ClientData clientData,
01043                             Tcl_Interp *interp, int objc,
01044                             Tcl_Obj *CONST objv[]));
01045 EXTERN int              Tk_RadiobuttonObjCmd _ANSI_ARGS_((
01046                             ClientData clientData,
01047                             Tcl_Interp *interp, int objc,
01048                             Tcl_Obj *CONST objv[]));
01049 EXTERN int              Tk_RaiseObjCmd _ANSI_ARGS_((ClientData clientData,
01050                             Tcl_Interp *interp, int objc,
01051                             Tcl_Obj *CONST objv[]));
01052 EXTERN int              Tk_ScaleObjCmd _ANSI_ARGS_((ClientData clientData,
01053                             Tcl_Interp *interp, int objc, 
01054                             Tcl_Obj *CONST objv[]));
01055 EXTERN int              Tk_ScrollbarCmd _ANSI_ARGS_((ClientData clientData,
01056                             Tcl_Interp *interp, int argc, CONST char **argv));
01057 EXTERN int              Tk_SelectionObjCmd _ANSI_ARGS_((ClientData clientData,
01058                             Tcl_Interp *interp, int objc,
01059                             Tcl_Obj *CONST objv[]));
01060 EXTERN int              Tk_SendCmd _ANSI_ARGS_((ClientData clientData,
01061                             Tcl_Interp *interp, int argc, CONST char **argv));
01062 EXTERN int              Tk_SendObjCmd _ANSI_ARGS_((ClientData clientData,
01063                             Tcl_Interp *interp, int objc, 
01064                             Tcl_Obj *CONST objv[]));
01065 EXTERN int              Tk_SpinboxObjCmd _ANSI_ARGS_((ClientData clientData,
01066                             Tcl_Interp *interp, int objc, 
01067                             Tcl_Obj *CONST objv[]));
01068 EXTERN int              Tk_TextCmd _ANSI_ARGS_((ClientData clientData,
01069                             Tcl_Interp *interp, int argc, CONST char **argv));
01070 EXTERN int              Tk_TkObjCmd _ANSI_ARGS_((ClientData clientData,
01071                             Tcl_Interp *interp, int objc,
01072                             Tcl_Obj *CONST objv[]));
01073 EXTERN int              Tk_TkwaitObjCmd _ANSI_ARGS_((ClientData clientData,
01074                             Tcl_Interp *interp, int objc,
01075                             Tcl_Obj *CONST objv[]));
01076 EXTERN int              Tk_ToplevelObjCmd _ANSI_ARGS_((ClientData clientData,
01077                             Tcl_Interp *interp, int objc,
01078                             Tcl_Obj *CONST objv[]));
01079 EXTERN int              Tk_UpdateObjCmd _ANSI_ARGS_((ClientData clientData,
01080                             Tcl_Interp *interp, int objc, 
01081                             Tcl_Obj *CONST objv[]));
01082 EXTERN int              Tk_WinfoObjCmd _ANSI_ARGS_((ClientData clientData,
01083                             Tcl_Interp *interp, int objc,
01084                             Tcl_Obj *CONST objv[]));
01085 EXTERN int              Tk_WmObjCmd _ANSI_ARGS_((ClientData clientData,
01086                             Tcl_Interp *interp, int objc,
01087                             Tcl_Obj *CONST objv[]));
01088 
01089 EXTERN void             TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,
01090                             int devId, CONST char *buffer, long size));
01091 
01092 EXTERN void             TkEventInit _ANSI_ARGS_((void));
01093 
01094 EXTERN void             TkRegisterObjTypes _ANSI_ARGS_((void));
01095 
01096 EXTERN int              TkCreateMenuCmd _ANSI_ARGS_((Tcl_Interp *interp));
01097 EXTERN int              TkDeadAppCmd _ANSI_ARGS_((ClientData clientData,
01098                             Tcl_Interp *interp, int argc, CONST char **argv));
01099 
01100 EXTERN int              TkpTestembedCmd _ANSI_ARGS_((ClientData clientData,
01101                             Tcl_Interp *interp, int argc, CONST char **argv));
01102 EXTERN int              TkCanvasGetCoordObj _ANSI_ARGS_((Tcl_Interp *interp,
01103                             Tk_Canvas canvas, Tcl_Obj *obj,
01104                             double *doublePtr));
01105 EXTERN int              TkCanvasDashParseProc _ANSI_ARGS_((
01106                             ClientData clientData, Tcl_Interp *interp,
01107                             Tk_Window tkwin, CONST char *value, char *widgRec,
01108                             int offset));
01109 EXTERN char *           TkCanvasDashPrintProc _ANSI_ARGS_((
01110                             ClientData clientData, Tk_Window tkwin,
01111                             char *widgRec, int offset,
01112                             Tcl_FreeProc **freeProcPtr));
01113 EXTERN int              TkGetDoublePixels _ANSI_ARGS_((Tcl_Interp *interp,
01114                             Tk_Window tkwin, CONST char *string,
01115                             double *doublePtr));
01116 EXTERN int              TkOffsetParseProc _ANSI_ARGS_((
01117                             ClientData clientData, Tcl_Interp *interp,
01118                             Tk_Window tkwin, CONST char *value, char *widgRec,
01119                             int offset));
01120 EXTERN char *           TkOffsetPrintProc _ANSI_ARGS_((
01121                             ClientData clientData, Tk_Window tkwin,
01122                             char *widgRec, int offset,
01123                             Tcl_FreeProc **freeProcPtr));
01124 EXTERN int              TkOrientParseProc _ANSI_ARGS_((
01125                             ClientData clientData, Tcl_Interp *interp,
01126                             Tk_Window tkwin, CONST char *value,
01127                             char *widgRec, int offset));
01128 EXTERN char *           TkOrientPrintProc _ANSI_ARGS_((
01129                             ClientData clientData, Tk_Window tkwin,
01130                             char *widgRec, int offset,
01131                             Tcl_FreeProc **freeProcPtr));
01132 EXTERN int              TkPixelParseProc _ANSI_ARGS_((
01133                             ClientData clientData, Tcl_Interp *interp,
01134                             Tk_Window tkwin, CONST char *value, char *widgRec,
01135                             int offset));
01136 EXTERN char *           TkPixelPrintProc _ANSI_ARGS_((
01137                             ClientData clientData, Tk_Window tkwin,
01138                             char *widgRec, int offset,
01139                             Tcl_FreeProc **freeProcPtr));
01140 EXTERN int              TkPostscriptImage _ANSI_ARGS_((Tcl_Interp *interp,
01141                             Tk_Window tkwin, Tk_PostscriptInfo psInfo,
01142                             XImage *ximage, int x, int y, int width,
01143                             int height));
01144 EXTERN int              TkSmoothParseProc _ANSI_ARGS_((ClientData clientData,
01145                             Tcl_Interp *interp, Tk_Window tkwin,
01146                             CONST char *value, char *recordPtr, int offset));
01147 EXTERN char *           TkSmoothPrintProc _ANSI_ARGS_((ClientData clientData,
01148                             Tk_Window tkwin, char *recordPtr, int offset,
01149                             Tcl_FreeProc **freeProcPtr));
01150 EXTERN int              TkStateParseProc _ANSI_ARGS_((
01151                             ClientData clientData, Tcl_Interp *interp,
01152                             Tk_Window tkwin, CONST char *value,
01153                             char *widgRec, int offset));
01154 EXTERN char *           TkStatePrintProc _ANSI_ARGS_((
01155                             ClientData clientData, Tk_Window tkwin,
01156                             char *widgRec, int offset,
01157                             Tcl_FreeProc **freeProcPtr));
01158 EXTERN int              TkTileParseProc _ANSI_ARGS_((
01159                             ClientData clientData, Tcl_Interp *interp,
01160                             Tk_Window tkwin, CONST char *value, char *widgRec,
01161                             int offset));
01162 EXTERN char *           TkTilePrintProc _ANSI_ARGS_((
01163                             ClientData clientData, Tk_Window tkwin,
01164                             char *widgRec, int offset,
01165                             Tcl_FreeProc **freeProcPtr));
01166 
01167 /* 
01168  * Unsupported commands.
01169  */
01170 EXTERN int              TkUnsupported1Cmd _ANSI_ARGS_((ClientData clientData,
01171                             Tcl_Interp *interp, int argc, CONST char **argv));
01172 
01173 # undef TCL_STORAGE_CLASS
01174 # define TCL_STORAGE_CLASS DLLIMPORT
01175 
01176 #endif  /* _TKINT */
01177 
01178 /*
01179  * Local Variables:
01180  * mode: C
01181  * tab-width: 8
01182  * c-basic-offset: 4
01183  * indent-tabs-mode: t
01184  * End:
01185  * ex: shiftwidth=4 tabstop=8
01186  */

Generated on Mon Sep 18 01:24:45 2006 for BRL-CAD by  doxygen 1.4.6