tkInt4.1.h
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:29k
源码类别:

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