home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tkisrc04.zip / tk / os2 / tkInt.h < prev    next >
C/C++ Source or Header  |  1998-08-10  |  30KB  |  809 lines

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