tkInt8.0p2.h
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:36k
源码类别:

3D图形编程

开发平台:

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