diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Tk/pTk/tixInt.h')
-rwxr-xr-x | Master/tlpkg/tlperl/lib/Tk/pTk/tixInt.h | 886 |
1 files changed, 886 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Tk/pTk/tixInt.h b/Master/tlpkg/tlperl/lib/Tk/pTk/tixInt.h new file mode 100755 index 00000000000..d1dad2b88e6 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Tk/pTk/tixInt.h @@ -0,0 +1,886 @@ + +/* $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 */ + |