tkInt.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:42k
源码类别:

通讯编程

开发平台:

Visual C++

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