text: 
  /*	$Id: tixInt.h,v 1.1.1.1 2000/05/17 11:08:42 idiscovery Exp $	*/
  
  /*
   * tixInt.h --
   *
   *	Defines internal data types and functions used by the Tix library.
   *
   * Copyright (c) 1996, Expert Interface Technologies
   *
   * See the file "license.terms" for information on usage and redistribution
   * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
   *
   */
  #ifndef _TIX
  #include "tix.h"
  #endif
  #ifndef _TIXINT
  #define _TIXINT
  #define _TIX_INT_H_
  
  /*----------------------------------------------------------------------
   *
   *		Tix Display Item Types
   *
   *----------------------------------------------------------------------
   */
  
  #define TIX_DITEM_NONE			0
  #define TIX_DITEM_TEXT			1
  #define TIX_DITEM_IMAGETEXT		2
  #define TIX_DITEM_WINDOW		3
  #define TIX_DITEM_IMAGE			4
  
  /*
   * The flags for drawing DItems
   */
  
  #define TIX_DITEM_NORMAL_BG		(0x1 <<	 0)
  #define TIX_DITEM_ACTIVE_BG		(0x1 <<	 1)
  #define TIX_DITEM_SELECTED_BG		(0x1 <<	 2)
  #define TIX_DITEM_DISABLED_BG		(0x1 <<	 3)
  #define TIX_DITEM_NORMAL_FG		(0x1 <<	 4)
  #define TIX_DITEM_ACTIVE_FG		(0x1 <<	 5)
  #define TIX_DITEM_SELECTED_FG		(0x1 <<	 6)
  #define TIX_DITEM_DISABLED_FG		(0x1 <<	 7)
  #define TIX_DITEM_FONT			(0x1 <<	 8)
  #define TIX_DITEM_PADX			(0x1 <<	 9)
  #define TIX_DITEM_PADY			(0x1 << 10)
  
  #define TIX_DONT_CALL_CONFIG		TK_CONFIG_USER_BIT
  
  /*
   * These values are used ONLY for indexing the color array in
   * Tix_StyleTemplate
   */
  
  #define TIX_DITEM_NORMAL		0
  #define TIX_DITEM_ACTIVE		1
  #define TIX_DITEM_SELECTED		2
  #define TIX_DITEM_DISABLED		3
  
  /*
   * Flags for MultiInfo
   */
  #define TIX_CONFIG_INFO			1
  #define TIX_CONFIG_VALUE		2
  
  typedef union  Tix_DItem		Tix_DItem;
  typedef union  Tix_DItemStyle		Tix_DItemStyle;
  typedef struct Tix_DItemInfo		Tix_DItemInfo;
  typedef struct Tix_DispData		Tix_DispData;
  typedef struct Tix_StyleTemplate	Tix_StyleTemplate;
  
  typedef void		Tix_DItemCalculateSizeProc  _ANSI_ARGS_((
  			    Tix_DItem * iPtr));
  typedef char *		Tix_DItemComponentProc _ANSI_ARGS_((
  			    Tix_DItem * iPtr, int x, int y));
  typedef int		Tix_DItemConfigureProc _ANSI_ARGS_((
  			    Tix_DItem * iPtr, int argc, Tcl_Obj *CONST *objv,
  			    int flags));
  typedef Tix_DItem *	Tix_DItemCreateProc _ANSI_ARGS_((
  			    Tix_DispData * ddPtr,
  			    Tix_DItemInfo * diTypePtr));
  typedef void		Tix_DItemDisplayProc  _ANSI_ARGS_((
  			    Pixmap pixmap, GC gc, Tix_DItem * iPtr,
  			    int x, int y, int width, int height, int flag));
  typedef void		Tix_DItemFreeProc  _ANSI_ARGS_((Tix_DItem * diPtr));
  typedef void		Tix_DItemSizeChangedProc  _ANSI_ARGS_((
  			    Tix_DItem * iPtr));
  
  typedef void		Tix_DItemStyleChangedProc  _ANSI_ARGS_((
  			    Tix_DItem * iPtr));
  typedef void		Tix_DItemLostStyleProc	_ANSI_ARGS_((
  			    Tix_DItem * iPtr));
  typedef int		Tix_DItemStyleConfigureProc _ANSI_ARGS_((
  			    Tix_DItemStyle* style, int argc, Tcl_Obj *CONST *objv,
  			    int flags));
  typedef Tix_DItemStyle*	Tix_DItemStyleCreateProc _ANSI_ARGS_((
  			    Tcl_Interp * interp, Tk_Window tkwin,
  			    Tix_DItemInfo * diTypePtr, char * name));
  typedef void		Tix_DItemStyleFreeProc _ANSI_ARGS_((
  			    Tix_DItemStyle* style));
  typedef void		Tix_DItemStyleSetTemplateProc _ANSI_ARGS_((
  			    Tix_DItemStyle* style,
  			    Tix_StyleTemplate * tmplPtr));
  
  /*
   * These are debugging routines
   */
  
  typedef int		Tix_DItemRefCountProc _ANSI_ARGS_(());
  typedef int		Tix_DItemStyleRefCountProc _ANSI_ARGS_(());
  
  /*----------------------------------------------------------------------
   * Tix_DItemInfo --
   *
   *	This structure is used to register a new display item (call
   *	Tix_AddDItemType).
   *----------------------------------------------------------------------
   */
  struct Tix_DItemInfo {
      char * name;
      int type;
  
      /*
       * These procedures communicate with the items
       */
      Tix_DItemCreateProc * createProc;
      Tix_DItemConfigureProc * configureProc;
      Tix_DItemCalculateSizeProc * calculateSizeProc;
      Tix_DItemComponentProc * componentProc;
      Tix_DItemDisplayProc * displayProc;
      Tix_DItemFreeProc * freeProc;
      Tix_DItemStyleChangedProc *styleChangedProc;
      Tix_DItemLostStyleProc * lostStyleProc;
  
      /*
       * These procedures communicate with the styles
       */
      Tix_DItemStyleCreateProc * styleCreateProc;
      Tix_DItemStyleConfigureProc * styleConfigureProc;
      Tix_DItemStyleFreeProc * styleFreeProc;
      Tix_DItemStyleSetTemplateProc * styleSetTemplateProc;
  
      Tk_ConfigSpec * itemConfigSpecs;
      Tk_ConfigSpec * styleConfigSpecs;
      struct Tix_DItemInfo * next;
  };
  
  /*----------------------------------------------------------------------
   * Tix_DispData --
   *
   *	Information needed by the display types to display the item in
   *	an X drawable.
   *----------------------------------------------------------------------
   */
  struct Tix_DispData {
      Display * display;
      Tcl_Interp * interp;
      Tk_Window tkwin;
      Tix_DItemSizeChangedProc * sizeChangedProc;
  };
  
  /*----------------------------------------------------------------------
   * Tix_StyleTemplate --
   *
   *	A StyleTemplate is used to set the values of the default styles
   *	associated with a widget
   *----------------------------------------------------------------------
   */
  struct Tix_StyleTemplate {
      int flags;			/* determines which field is valid */
  
      struct {
  	XColor * bg;
  	XColor * fg;
      } colors[4];		/* colors for the four basic modes*/
  
      int pad[2];
  #if 0
      /* %bordercolor not used */
      XColor * borderColor;
      Tix_Relief relief;
      int borderWidth;
  #endif
      TixFont font;
  };
  
  /*----------------------------------------------------------------------
   *
   *
   *			Display Item Types
   *
   *
   *----------------------------------------------------------------------
   */
  
  /*
   *  Display Styles
   */
  typedef struct TixBaseStyle		TixBaseStyle;
  typedef struct TixImageTextStyle	TixImageTextStyle;
  typedef struct TixImageStyle		TixImageStyle;
  typedef struct TixTextStyle		TixTextStyle;
  typedef struct TixWindowStyle		TixWindowStyle;
  
  typedef struct TixBaseItem		TixBaseItem;
  typedef struct TixColorStyle		TixColorStyle;
  typedef struct TixImageTextItem		TixImageTextItem;
  typedef struct TixImageItem		TixImageItem;
  typedef struct TixTextItem		TixTextItem;
  typedef struct TixWindowItem		TixWindowItem;
  
  /*----------------------------------------------------------------------
   * TixBaseItem --
   *
   *	This is the abstract base class for all display items. All
   *	display items should have the data members defined in the
   *	BaseItem structure
   *----------------------------------------------------------------------
   */
  #define ITEM_COMMON_MEMBERS \
      Tix_DItemInfo * diTypePtr; \
      Tix_DispData * ddPtr; \
      ClientData clientData; \
      int size[2]			/* Size of this element */ \
  
  struct TixBaseItem {
      ITEM_COMMON_MEMBERS;
      TixBaseStyle * stylePtr;
  };
  
  /*----------------------------------------------------------------------
   * TixBaseStyle --
   *
   *	This is the abstract base class for all display styles. All
   *	display items should have the data members defined in the
   *	BaseStyle structure.  The common members are initialized by
   *	tixDiStyle.c
   *
   *----------------------------------------------------------------------
   */
  
  #define STYLE_COMMON_MEMBERS \
      Tcl_Command styleCmd;	/* Token for style's command. */ \
      Tcl_HashTable items;	/* Ditems affected by this style */ \
      int refCount;		/* Number of ditems affected by this style */\
      int flags;			/* Various attributes */ \
      Tcl_Interp *interp;		/* Interpreter associated with style. */ \
      Tk_Window tkwin;		/* Window associated with this style */ \
      Tix_DItemInfo * diTypePtr; \
      Tk_Anchor anchor;		/* Anchor information */ \
      char * name;		/* Name of this style */ \
      int pad[2]			/* paddings */
  
  
  #if 0
      Tix_Relief relief
      /* %bordercolor not used */
      int borderWidth;
      XColor * borderColor;	/* color of the border when it is displayed
  				 * in "flat border" mode
  				 */
      GC borderGC
  #endif
  
  #define STYLE_COLOR_MEMBERS \
      struct { \
  	XColor * bg; \
  	XColor * fg; \
  	GC foreGC;   \
  	GC backGC;   \
      } colors[4]			/* colors and GC's for the four basic modes*/
  
  struct TixBaseStyle {
      STYLE_COMMON_MEMBERS;
  };
  
  #define TIX_STYLE_DELETED 1
  #define TIX_STYLE_DEFAULT 2
  
  /*
   * Abstract type for all styles that have a color element
   */
  struct TixColorStyle {
      STYLE_COMMON_MEMBERS;
      STYLE_COLOR_MEMBERS;
  };
  
  /*----------------------------------------------------------------------
   * ImageTextItem --
   *
   *	Display an image together with a text string
   *----------------------------------------------------------------------
   */
  struct TixImageTextItem {
      ITEM_COMMON_MEMBERS;
  
      TixImageTextStyle *stylePtr;
  	/*-------------------------*/
  	/*	 Bitmap		   */
  	/*-------------------------*/
      Pixmap bitmap;
      int bitmapW, bitmapH;	/* Size of bitmap */
  
  	/*-------------------------*/
  	/*	 Image		   */
  	/*-------------------------*/
      char *imageString;		/* Name of image to display (malloc'ed), or
  				 * NULL.  If non-NULL, bitmap, text, and
  				 * textVarName are ignored. */
      Tk_Image image;
      int imageW, imageH;		/* Size of image */
  
  	/*-------------------------*/
  	/*	 Text		  */
  	/*-------------------------*/
  
      Tcl_Obj * text;		/* Show descriptive text */
      size_t numChars;		/* Size of text */
      int textW, textH;
      int wrapLength;
      Tk_Justify justify;		/* Justification to use for multi-line text. */
      int underline;		/* Index of character to underline.  < 0 means
  				 * don't underline anything. */
  
      int showImage, showText;
  };
  
  struct TixImageTextStyle {
      STYLE_COMMON_MEMBERS;
      STYLE_COLOR_MEMBERS;
      int wrapLength;
      Tk_Justify justify;		/* Justification to use for multi-line text. */
      TixFont font;
      int gap;			/* Gap between text and image */
      Tk_Anchor textanchor;	/* Text anchor information */
  };
  
  /*----------------------------------------------------------------------
   * ImageItem --
   *
   *	Displays an image
   *----------------------------------------------------------------------
   */
  struct TixImageItem {
      ITEM_COMMON_MEMBERS;
  
      TixImageStyle *stylePtr;
  
  	/*-------------------------*/
  	/*	 Image		   */
  	/*-------------------------*/
      char *imageString;		/* Name of image to display (malloc'ed), or
  				 * NULL.  If non-NULL, bitmap, text, and
  				 * textVarName are ignored. */
      Tk_Image image;
      int imageW, imageH;		/* Size of image */
  };
  
  struct TixImageStyle {
      STYLE_COMMON_MEMBERS;
      STYLE_COLOR_MEMBERS;
  };
  /*----------------------------------------------------------------------
   * TextItem --
   *
   *	Displays a text string.
   *----------------------------------------------------------------------
   */
  struct TixTextItem {
      ITEM_COMMON_MEMBERS;
  
      TixTextStyle *stylePtr;
  	/*-------------------------*/
  	/*	 Text		  */
  	/*-------------------------*/
  
      Tcl_Obj * text;		/* Show descriptive text */
      size_t numChars;		/* Size of text */
      int textW, textH;
      int underline;		/* Index of character to underline.  < 0 means
  				 * don't underline anything. */
  };
  
  struct TixTextStyle {
      STYLE_COMMON_MEMBERS;
      STYLE_COLOR_MEMBERS;
      int wrapLength;
      Tk_Justify justify;		/* Justification to use for multi-line text. */
      TixFont font;
  };
  
  /*----------------------------------------------------------------------
   * WindowItem --
   *
   *	Displays a window.
   *----------------------------------------------------------------------
   */
  struct TixWindowItem {
      ITEM_COMMON_MEMBERS;
      TixWindowStyle *stylePtr;
      Tk_Window tkwin;
      struct TixWindowItem * next;
      int serial;
  };
  
  struct TixWindowStyle {
      STYLE_COMMON_MEMBERS;
  };
  
  /*----------------------------------------------------------------------
   * Tix_DItem and Tix_DItemStyle --
   *
   *	These unions just make it easy to address the internals of the
   *	structures of the display items and styles. If you create a new
   *	display item, you will need to do you type casting yourself.
   *----------------------------------------------------------------------
   */
  union Tix_DItem {
      TixBaseItem		base;
      TixImageTextItem	imagetext;
      TixTextItem		text;
      TixWindowItem	window;
      TixImageItem	image;
  };
  
  union Tix_DItemStyle {
      TixBaseStyle	base;
      TixColorStyle	color;
      TixImageTextStyle	imagetext;
      TixTextStyle	text;
      TixWindowStyle	window;
      TixImageStyle	image;
  };
  
  #define Tix_DItemType(x)	((x)->base.diTypePtr->type)
  #define Tix_DItemTypeName(x)	((x)->base.diTypePtr->name)
  #define Tix_DItemWidth(x)	((x)->base.size[0])
  #define Tix_DItemHeight(x)	((x)->base.size[1])
  #define Tix_DItemConfigSpecs(x) ((x)->base.diTypePtr->itemConfigSpecs)
  #define Tix_DItemPadX(x)	((x)->base.stylePtr->pad[0])
  #define Tix_DItemPadY(x)	((x)->base.stylePtr->pad[1])
  
  #define TIX_WIDTH  0
  #define TIX_HEIGHT 1
  
  /*----------------------------------------------------------------------
   * Tix_ArgumentList --
   *
   *	This data structure is used to split command arguments for
   *	the display item types
   *----------------------------------------------------------------------
   */
  #define FIXED_SIZE 4
  typedef struct {
      int argc;
      Tcl_Obj **objv;
  } Tix_Argument;
  
  typedef struct {
      Tix_Argument * arg;
      int numLists;
      Tix_Argument preAlloc[FIXED_SIZE];
  } Tix_ArgumentList;
  
  /*----------------------------------------------------------------------
   * Tix_ScrollInfo --
   *
   *	This data structure encapsulates all the necessary operations
   *	for scrolling widgets
   *----------------------------------------------------------------------
   */
  #define TIX_SCROLL_INT		1
  #define TIX_SCROLL_DOUBLE	2
  
  /* abstract type */
  typedef struct Tix_ScrollInfo {
      int type;		/* TIX_SCROLL_INT or TIX_SCROLL_DOUBLE */
      LangCallback *command;
      /* place holder for actual space - double must be mentioned
         to force alignment for too-clever-by-half compilers
       */
      union {
       int    iscroll[4];
       double dscroll[4];
      } info;
  } Tix_ScrollInfo;
  
  typedef struct Tix_IntScrollInfo {
      int type;		/* TIX_SCROLL_INT */
      LangCallback *command;
  
      int total;		/* total size (width or height) of the widget*/
      int window;		/* visible size */
      int offset;		/* The top/left side of the scrolled widget */
      int unit;		/* How much should we scroll when the user
  			 * press the arrow on a scrollbar? */
  
  } Tix_IntScrollInfo;
  
  typedef struct Tix_DoubleScrollInfo {
      int type;		/* TIX_SCROLL_DOUBLE */
      LangCallback *command;
  
      double total;	/* total size (width or height) of the widget*/
      double window;	/* visible size */
      double offset;	/* The top/left side of the scrolled widget */
      double unit;	/* How much should we scroll when the user
  			 * press the arrow on a scrollbar? */
  } Tix_DoubleScrollInfo;
  
  /*----------------------------------------------------------------------
   *
   *		Global variables
   *
   * Should be used only in the Tix library. Some systems don't support
   * exporting of global variables from shared libraries.
   *
   *----------------------------------------------------------------------
   */
  EXTERN Tk_Uid tixNormalUid;
  EXTERN Tk_Uid tixDisabledUid;
  EXTERN Tk_Uid tixCellUid;
  EXTERN Tk_Uid tixRowUid;
  EXTERN Tk_Uid tixColumnUid;
  
  #define FLAG_READONLY	0
  #define FLAG_STATIC	1
  #define FLAG_FORCECALL	2
  
  /*----------------------------------------------------------------------
   *
   *
   *		    MEGA-WIDGET CONFIG HANDLING
   *
   *
   *----------------------------------------------------------------------
   */
  typedef struct _TixConfigSpec		TixConfigSpec;
  typedef struct _TixConfigAlias		TixConfigAlias;
  typedef struct _TixClassRecord		TixClassRecord;
  
  struct _TixConfigSpec {
      unsigned int isAlias	: 1;
      unsigned int readOnly	: 1;
      unsigned int isStatic	: 1;
      unsigned int forceCall	: 1;
  
      char * argvName;
      char * defValue;
  
      char * dbName;		/* The additional parts of a */
      char * dbClass;		/* TixWidgetConfigSpec structure */
  
      char *verifyCmd;
  
      TixConfigSpec * realPtr;	/* valid only if this option is an alias */
  };
  
  /*
   * Controls the access of root widget and subwidget commands and options
   */
  typedef struct _Tix_ExportSpec {
      Tix_LinkList exportCmds;
      Tix_LinkList restrictCmds;
      Tix_LinkList exportOpts;
      Tix_LinkList restrictOpts;
  } Tix_ExportSpec;
  
  typedef struct _Tix_SubWidgetSpec {
      struct _Tix_SubWidgetSpec * next;
      char * name;
      Tix_ExportSpec export;
  } Tix_SubWidgetSpec;
  
  typedef struct _Tix_StringLink {
      struct _Tix_StringLink *next;
      char * string;
  } Tix_StringLink;
  
  typedef struct _Tix_SubwidgetDef {
      struct _TixSubwidgetDef * next;
      char * spec;
      char * value;
  } Tix_SubwidgetDef;
  
  typedef struct _TixClassParseStruct {
      char * alias;
      char * ClassName;
      char * configSpec;
      char * def;
      char * flag;
      char * forceCall;
      char * method;
      char * readOnly;
      char * isStatic;
      char * superClass;
      char * subWidget;
      char * isVirtual;
  
      int	    optArgc;
      char ** optArgv;
  } TixClassParseStruct;
  
  struct _TixClassRecord {
      TixClassRecord    * next;		/* Chains to the next class record in
  					 * a superClass's unInitSubCls list */
      TixClassRecord    * superClass;	/* The superclass of this class. Is
  					 * NULL if this class does not have
  					 * a superclass. */
      unsigned int	isWidget;	/* TRUE iff this class is created by
  					 * the "tixWidgetClass" command */
      char	      * className;	/* Instiantiation command */
      char	      * ClassName;	/* used in TK option database */
  
      int			nSpecs;
      TixConfigSpec    ** specs;
      int			nMethods;
      char	     ** methods;
      Tk_Window		mainWindow;	/* This variable is essentially
  					 * a cached variable so that
  					 * we can advoid calling
  					 * Tk_MainWindow() */
      int			isVirtual;	/* is this a virtual base class
  					 * (shouldn't be instantiated)*/
      TixClassParseStruct*parsePtr;	/* Information supplied by the
  					 * tixClass or tixWidgetClass
  					 * commands */
      Tix_LinkList	unInitSubCls;	/* The subclasses that have not been
  					 * initialized. */
      int			initialized;	/* Is this class initialized? A class
  					 * is not initialized if it has been
  					 * defined but some its superclass
  					 * is not initialized.
  					 */
      Tix_LinkList	subWDefs;	/* the -defaults option */
  #if USE_ACCESS_CONTROL
      Tix_LinkList	subWidgets;
      Tix_ExportSpec	exportSpec;	/* controls the export status
  					 * of the commands and options
  					 * of the root widget */
  #endif
  };
  
  typedef struct _TixInterpState {
      char * result;
      char * errorInfo;
      char * errorCode;
  } TixInterpState;
  
  /*----------------------------------------------------------------------
   *
   *		Internal procedures
   *
   *----------------------------------------------------------------------
   */
  
  EXTERN int		Tix_CallConfigMethod _ANSI_ARGS_((
  			    Tcl_Interp *interp, TixClassRecord *cPtr,
  			    char * widRec, TixConfigSpec *spec, char * value));
  EXTERN int		Tix_CallMethod _ANSI_ARGS_((Tcl_Interp *interp,
  			    char *context, char *widRec, char *method,
  			    int argc, Tcl_Obj *CONST *objv));
  EXTERN int		Tix_ChangeOneOption _ANSI_ARGS_((
  			    Tcl_Interp *interp, TixClassRecord *cPtr,
  			    char * widRec, TixConfigSpec *spec, char * value,
  			    int isDefault, int isInit));
  EXTERN int		Tix_ChangeOptions _ANSI_ARGS_((
  			    Tcl_Interp *interp, TixClassRecord *cPtr,
  			    char * widRec, int argc, Tcl_Obj *CONST *objv));
  EXTERN TixConfigSpec *	Tix_FindConfigSpecByName _ANSI_ARGS_((
  			    Tcl_Interp * interp,
  			    TixClassRecord * cPtr, char * name));
  EXTERN char  *		Tix_FindMethod _ANSI_ARGS_((Tcl_Interp *interp,
  			    char *context, char *method));
  EXTERN char *		Tix_FindPublicMethod _ANSI_ARGS_((
  			    Tcl_Interp *interp, TixClassRecord * cPtr,
  			    char * method));
  EXTERN int		Tix_GetChars _ANSI_ARGS_((Tcl_Interp *interp,
  			    char *string, double *doublePtr));
  EXTERN char  *		Tix_GetConfigSpecFullName _ANSI_ARGS_((char *clasRec,
  			    char *flag));
  EXTERN char *		Tix_GetContext _ANSI_ARGS_((
  			    Tcl_Interp * interp, char * widRec));
  EXTERN char  *		Tix_GetMethodFullName _ANSI_ARGS_((char *context,
  			    char *method));
  EXTERN void		Tix_GetPublicMethods _ANSI_ARGS_((Tcl_Interp *interp,
  			    char *widRec, int *numMethods,
  			    char *** validMethods));
  EXTERN int		Tix_GetWidgetOption _ANSI_ARGS_((
  			    Tcl_Interp *interp, Tk_Window tkwin,
  			    char *argvName, char *dbName, char *dbClass,
  			    char *defValue, int argc, Tcl_Obj *CONST *objv,
  			    int type, char *ptr));
  EXTERN int		Tix_GetVar _ANSI_ARGS_((
  			    Tcl_Interp *interp, TixClassRecord *cPtr,
  			    char * widRec, char * flag));
  EXTERN int		Tix_QueryAllOptions _ANSI_ARGS_((
  			    Tcl_Interp *interp, TixClassRecord * cPtr,
  			    char *widRec));
  EXTERN int		Tix_QueryOneOption _ANSI_ARGS_((
  			    Tcl_Interp *interp, TixClassRecord *cPtr,
  			    char *widRec, char *flag));
  EXTERN int		Tix_SuperClass _ANSI_ARGS_((Tcl_Interp *interp,
  			    char *widClass, char ** superClass_ret));
  EXTERN int		Tix_UnknownPublicMethodError _ANSI_ARGS_((
  			    Tcl_Interp *interp, TixClassRecord * cPtr,
  			    char * widRec, char * method));
  EXTERN int		Tix_ValueMissingError _ANSI_ARGS_((Tcl_Interp *interp,
  			    char *spec));
  EXTERN void		Tix_AddDItemType _ANSI_ARGS_((
  			    Tix_DItemInfo * diTypePtr));
  EXTERN int		Tix_ConfigureInfo2 _ANSI_ARGS_((
  			    Tcl_Interp *interp, Tk_Window tkwin,
  			    char *entRec, Tk_ConfigSpec *entConfigSpecs,
  			    Tix_DItem * iPtr, char *argvName, int flags));
  EXTERN int		Tix_ConfigureValue2 _ANSI_ARGS_((Tcl_Interp *interp,
  			    Tk_Window tkwin, char * entRec,
  			    Tk_ConfigSpec *entConfigSpecs, Tix_DItem * iPtr,
  			    char *argvName, int flags));
  EXTERN void		Tix_DItemCalculateSize _ANSI_ARGS_((
  			    Tix_DItem * iPtr));
  EXTERN char *		Tix_DItemComponent _ANSI_ARGS_((Tix_DItem * diPtr,
  			    int x, int y));
  EXTERN int		Tix_DItemConfigure _ANSI_ARGS_((
  			    Tix_DItem * diPtr, int argc,
  			    Tcl_Obj *CONST *objv, int flags));
  EXTERN Tix_DItem *	Tix_DItemCreate _ANSI_ARGS_((Tix_DispData * ddPtr,
  			    char * type));
  EXTERN void		Tix_DItemDrawBackground _ANSI_ARGS_((
  			    Pixmap pixmap, GC gc, Tix_DItem * iPtr,
  			    int x, int y, int width, int height, int flags));
  EXTERN void		Tix_DItemDisplay _ANSI_ARGS_((
  			    Pixmap pixmap, GC gc, Tix_DItem * iPtr,
  			    int x, int y, int width, int height, int flag));
  EXTERN void		Tix_DItemFree _ANSI_ARGS_((
  			    Tix_DItem * iPtr));
  EXTERN void		TixDItemStyleChanged _ANSI_ARGS_((
  			    Tix_DItemInfo * diTypePtr,
  			    Tix_DItemStyle * stylePtr));
  EXTERN void		TixDItemStyleFree  _ANSI_ARGS_((Tix_DItem *iPtr,
  			    Tix_DItemStyle * stylePtr));
  EXTERN void		TixDItemGetAnchor _ANSI_ARGS_((Tk_Anchor anchor,
  			    int x, int y, int cav_w, int cav_h,
  			    int width, int height, int * x_ret, int * y_ret));
  EXTERN void		Tix_FreeArgumentList _ANSI_ARGS_((
  			    Tix_ArgumentList *argListPtr));
  EXTERN void		TixGetColorDItemGC _ANSI_ARGS_((
  			    Tix_DItem * iPtr, GC * backGC_ret,
  			    GC * foreGC_ret, int flags));
  EXTERN Tix_DItemStyle*	TixGetDefaultDItemStyle _ANSI_ARGS_((
  			    Tix_DispData * ddPtr, Tix_DItemInfo * diTypePtr,
  			    Tix_DItem *iPtr, Tix_DItemStyle* oldStylePtr));
  EXTERN Tix_DItemInfo *	Tix_GetDItemType _ANSI_ARGS_((
  			    Tcl_Interp * interp, char *type));
  EXTERN void		Tix_GetScrollFractions _ANSI_ARGS_((
  			    Tix_ScrollInfo * siPtr,
  			    double * first_ret, double * last_ret));
  EXTERN void		Tix_InitScrollInfo  _ANSI_ARGS_((
  			    Tix_ScrollInfo * siPtr, int type));
  EXTERN int		Tix_MultiConfigureInfo _ANSI_ARGS_((
  			    Tcl_Interp * interp,
  			    Tk_Window tkwin, Tk_ConfigSpec **specsList,
  			    int numLists, char **widgRecList, char *argvName,
  			    int flags, int request));
  EXTERN void		Tix_SetDefaultStyleTemplate _ANSI_ARGS_((
  			    Tk_Window tkwin, Tix_StyleTemplate * tmplPtr));
  EXTERN int		Tix_SetScrollBarView _ANSI_ARGS_((
  			    Tcl_Interp *interp, Tix_ScrollInfo * siPtr,
  			    int argc, Tcl_Obj *CONST *objv, int compat));
  EXTERN void		Tix_SetWindowItemSerial _ANSI_ARGS_((
  			    Tix_LinkList * lPtr, Tix_DItem * iPtr,
  			    int serial));
  EXTERN int		Tix_SplitConfig _ANSI_ARGS_((Tcl_Interp * interp,
  			    Tk_Window tkwin, Tk_ConfigSpec  ** specsList,
  			    int numLists, int argc, Tcl_Obj *CONST *objv,
  			    Tix_ArgumentList * argListPtr));
  EXTERN void		Tix_UnmapInvisibleWindowItems _ANSI_ARGS_((
  			    Tix_LinkList * lPtr, int serial));
  EXTERN void		Tix_UpdateScrollBar  _ANSI_ARGS_((
  			    Tcl_Interp *interp, Tix_ScrollInfo * siPtr));
  EXTERN int		Tix_WidgetConfigure2 _ANSI_ARGS_((
  			    Tcl_Interp *interp, Tk_Window tkwin, char * entRec,
  			    Tk_ConfigSpec *entConfigSpecs,
  			    Tix_DItem * iPtr, int argc, Tcl_Obj *CONST *objv,
  			    int flags, int forced, int * sizeChanged_ret));
  EXTERN void		Tix_WindowItemListRemove  _ANSI_ARGS_((
  			    Tix_LinkList * lPtr, Tix_DItem * iPtr));
  
  typedef struct _TixpSubRegion TixpSubRegion;
  
  struct _TixpSubRegion {
      Pixmap pixmap;
      int origX, origY;
      int x, y;
      int width, height;
  };
  
  /*
   * Functions that should be used by Tix only. Functions prefixed by "Tix"
   * are generic functions that has one implementation for all platforms.
   * Functions prefixed with "Tixp" requires one implementation on each
   * platform.
   */
  
  extern int		TixInitSam _ANSI_ARGS_((Tcl_Interp * interp));
  extern int		TixLoadLibrary _ANSI_ARGS_((Tcl_Interp * interp));
  extern void		TixRestoreInterpState _ANSI_ARGS_((
  			    Tcl_Interp * interp, TixInterpState * statePtr));
  extern void		TixSaveInterpState _ANSI_ARGS_((Tcl_Interp * interp,
  			    TixInterpState * statePtr));
  
  extern void		TixpDrawAnchorLines _ANSI_ARGS_((Display *display,
  			    Drawable drawable, GC gc, int x, int y,
  			    int w, int h));
  extern void		TixpDrawTmpLine _ANSI_ARGS_((int x1, int y1,
  			    int x2, int y2, Tk_Window tkwin));
  extern void		TixpEndSubRegionDraw _ANSI_ARGS_((Display *display,
  			     Drawable drawable, GC gc,
  			     TixpSubRegion * subRegPtr));
  extern int		TixpSetWindowParent _ANSI_ARGS_((Tcl_Interp * interp,
  			    Tk_Window tkwin, Tk_Window newParent,
  			    int parentId));
  extern void		TixpStartSubRegionDraw _ANSI_ARGS_((Tix_DispData *ddPtr,
  			     Drawable drawable, GC gc,
  			     TixpSubRegion * subRegPtr, int origX,
  			     int origY, int x, int y, int width, int height,
  			     int needWidth, int needHeight));
  extern void		TixpSubRegDisplayText _ANSI_ARGS_((Display *display,
  			    Drawable drawable, GC gc,
  			    TixpSubRegion * subRegPtr,
  			    TixFont font, char *string,
  			    int numChars, int x, int y, int length,
  			    Tk_Justify justify, int underline));
  extern void		TixpSubRegDrawBitmap _ANSI_ARGS_((Display *display,
  			    Drawable drawable, GC gc,
  			    TixpSubRegion * subRegPtr, Pixmap bitmap,
  			    int src_x, int src_y, int width, int height,
  			    int dest_x, int dest_y, unsigned long plane));
  extern void 		TixpSubRegDrawImage _ANSI_ARGS_((
  			    TixpSubRegion * subRegPtr, Tk_Image image,
  			    int imageX, int imageY, int width, int height,
  			    Drawable drawable, int drawableX, int drawableY));
  extern void		TixpSubRegFillRectangle _ANSI_ARGS_((Display *display,
  			    Drawable drawable, GC gc,
  			    TixpSubRegion * subRegPtr, int x, int y,
  			    int width, int height));
  
  /* These functions are also, and originaly declared in tixPort.h but
   * that would mean even more Vtables
   */
  
  EXTERN void		TixComputeTextGeometry _ANSI_ARGS_((
  			    TixFont fontStructPtr, char *string,
  			    int numChars, int wrapLength, int *widthPtr,
  			    int *heightPtr));
  EXTERN void		TixDisplayText _ANSI_ARGS_((Display *display,
  			    Drawable drawable, TixFont font,
  			    char *string, int numChars, int x, int y,
  			    int length, Tk_Justify justify, int underline,
  			    GC gc));
  EXTERN Tcl_HashTable *	TixGetHashTable _ANSI_ARGS_((Tcl_Interp * interp,
  			    char * name, Tcl_InterpDeleteProc *deleteProc));
  
  /*
   * built-in strdup is not compatible with the tcl memory allocator. We
   * replace all strdup calls with tixStrDup.
   */
  #define NO_STRDUP 1
  extern char *tixStrDup _ANSI_ARGS_(( CONST char * s));
  
  /*
   * Console Stuff
   * (these are declared with the EXTERN in win/winMain.c but without it
   * in generic/tkConsole.c)
   */
  EXTERN void		TkConsoleCreate _ANSI_ARGS_((void));
  EXTERN int		TkConsoleInit _ANSI_ARGS_((Tcl_Interp *interp));
  
  #define TixConsoleCreate(x)	TkConsoleCreate()
  #define TixConsoleInit(x)	TkConsoleInit(x)
  
  #endif /* _TIXINT */
  
  