859 lines
28 KiB
C
859 lines
28 KiB
C
/*
|
||
* tixInt.h --
|
||
*
|
||
* Defines internal data types and functions used by the Tix library.
|
||
*
|
||
* Copyright (c) 1993-1999 Ioi Kim Lam.
|
||
* Copyright (c) 2000-2001 Tix Project Group.
|
||
*
|
||
* See the file "license.terms" for information on usage and redistribution
|
||
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||
*
|
||
* $Id: tixInt.h,v 1.7 2008/02/28 04:29:17 hobbs Exp $
|
||
*/
|
||
|
||
#ifndef _TIX_INT_H_
|
||
#define _TIX_INT_H_
|
||
|
||
#ifndef _TIX_H_
|
||
#include <tix.h>
|
||
#endif
|
||
|
||
#ifndef _TIX_PORT_H_
|
||
#include <tixPort.h>
|
||
#endif
|
||
|
||
/*----------------------------------------------------------------------
|
||
*
|
||
* 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 following 12 values can be OR'ed to passed as the flags
|
||
* parameter to Tix_DItemDisplay().
|
||
*/
|
||
|
||
#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_DITEM_ANCHOR (0x1 << 11)
|
||
|
||
#define TIX_DITEM_OTHER_BG \
|
||
(TIX_DITEM_ACTIVE_BG|TIX_DITEM_SELECTED_BG|TIX_DITEM_DISABLED_BG)
|
||
|
||
#define TIX_DITEM_ALL_BG \
|
||
(TIX_DITEM_NORMAL_BG|TIX_DITEM_OTHER_BG)
|
||
|
||
#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(Tix_DItem * iPtr);
|
||
typedef char * Tix_DItemComponentProc(Tix_DItem * iPtr, int x, int y);
|
||
typedef int Tix_DItemConfigureProc(Tix_DItem * iPtr,
|
||
int argc, CONST84 char **argv, int flags);
|
||
typedef Tix_DItem * Tix_DItemCreateProc(Tix_DispData * ddPtr,
|
||
Tix_DItemInfo * diTypePtr);
|
||
typedef void Tix_DItemDisplayProc(Drawable drawable,
|
||
Tix_DItem * iPtr,
|
||
int x, int y, int width, int height,
|
||
int xOffset, int yOffset, int flag);
|
||
typedef void Tix_DItemFreeProc(Tix_DItem * diPtr);
|
||
typedef void Tix_DItemSizeChangedProc(Tix_DItem * iPtr);
|
||
|
||
typedef void Tix_DItemStyleChangedProc(Tix_DItem * iPtr);
|
||
typedef void Tix_DItemLostStyleProc(Tix_DItem * iPtr);
|
||
typedef int Tix_DItemStyleConfigureProc(Tix_DItemStyle* style,
|
||
int argc, CONST84 char **argv, int flags);
|
||
typedef Tix_DItemStyle* Tix_DItemStyleCreateProc(Tcl_Interp * interp,
|
||
Tk_Window tkwin,
|
||
Tix_DItemInfo * diTypePtr, char * name);
|
||
typedef void Tix_DItemStyleFreeProc(Tix_DItemStyle* style);
|
||
typedef void Tix_DItemStyleSetTemplateProc(Tix_DItemStyle* style,
|
||
Tix_StyleTemplate * tmplPtr);
|
||
|
||
/*
|
||
* These are debugging routines
|
||
*/
|
||
|
||
typedef int Tix_DItemRefCountProc();
|
||
typedef int Tix_DItemStyleRefCountProc();
|
||
|
||
/*----------------------------------------------------------------------
|
||
* 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 */ \
|
||
int selX, selY, selW, selH /* Location of the selection highlight */
|
||
|
||
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 */ \
|
||
\
|
||
struct { \
|
||
XColor * bg; \
|
||
XColor * fg; \
|
||
GC foreGC; \
|
||
GC backGC; \
|
||
GC anchorGC; \
|
||
} colors[4] /* colors and GC's for the four basic modes*/
|
||
|
||
|
||
#define STYLE_COLOR_MEMBERS /* Backwards-cimpatibility */
|
||
|
||
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;
|
||
};
|
||
|
||
/*----------------------------------------------------------------------
|
||
* 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 */
|
||
/*-------------------------*/
|
||
|
||
char * 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;
|
||
int wrapLength;
|
||
Tk_Justify justify; /* Justification to use for multi-line text. */
|
||
TixFont font;
|
||
int gap; /* Gap between text and image */
|
||
};
|
||
|
||
/*----------------------------------------------------------------------
|
||
* 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;
|
||
};
|
||
/*----------------------------------------------------------------------
|
||
* TextItem --
|
||
*
|
||
* Displays a text string.
|
||
*----------------------------------------------------------------------
|
||
*/
|
||
struct TixTextItem {
|
||
ITEM_COMMON_MEMBERS;
|
||
|
||
TixTextStyle *stylePtr;
|
||
/*-------------------------*/
|
||
/* Text */
|
||
/*-------------------------*/
|
||
|
||
char * text; /* Show descriptive text */
|
||
int 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;
|
||
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
|
||
|
||
typedef struct _TixpSubRegion TixpSubRegion;
|
||
|
||
/*----------------------------------------------------------------------
|
||
* Tix_ArgumentList --
|
||
*
|
||
* This data structure is used to split command arguments for
|
||
* the display item types
|
||
*----------------------------------------------------------------------
|
||
*/
|
||
#define FIXED_SIZE 4
|
||
typedef struct {
|
||
int argc;
|
||
CONST84 char **argv;
|
||
} 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 */
|
||
char * command;
|
||
} Tix_ScrollInfo;
|
||
|
||
typedef struct Tix_IntScrollInfo {
|
||
int type; /* TIX_SCROLL_INT */
|
||
char * 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 */
|
||
char * 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;
|
||
CONST84 char * name;
|
||
Tix_ExportSpec export;
|
||
} Tix_SubWidgetSpec;
|
||
|
||
typedef struct _Tix_StringLink {
|
||
struct _Tix_StringLink *next;
|
||
CONST84 char * string;
|
||
} Tix_StringLink;
|
||
|
||
typedef struct _Tix_SubwidgetDef {
|
||
struct _TixSubwidgetDef * next;
|
||
CONST84 char * spec;
|
||
CONST84 char * value;
|
||
} Tix_SubwidgetDef;
|
||
|
||
typedef struct _TixClassParseStruct {
|
||
CONST84 char * alias;
|
||
CONST84 char * ClassName;
|
||
CONST84 char * configSpec;
|
||
CONST84 char * def;
|
||
CONST84 char * flag;
|
||
CONST84 char * forceCall;
|
||
CONST84 char * method;
|
||
CONST84 char * readOnly;
|
||
CONST84 char * isStatic;
|
||
CONST84 char * superClass;
|
||
CONST84 char * subWidget;
|
||
CONST84 char * isVirtual;
|
||
|
||
int optArgc;
|
||
CONST84 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(
|
||
Tcl_Interp *interp, TixClassRecord *cPtr,
|
||
CONST84 char * widRec, TixConfigSpec *spec, CONST84 char * value);
|
||
EXTERN int Tix_CallMethod(Tcl_Interp *interp,
|
||
CONST84 char *context, CONST84 char *widRec, CONST84 char *method,
|
||
int argc, CONST84 char **argv, int *foundPtr);
|
||
EXTERN int Tix_ChangeOneOption(
|
||
Tcl_Interp *interp, TixClassRecord *cPtr,
|
||
CONST84 char * widRec, TixConfigSpec *spec, CONST84 char * value,
|
||
int isDefault, int isInit);
|
||
EXTERN int Tix_ChangeOptions(
|
||
Tcl_Interp *interp, TixClassRecord *cPtr,
|
||
CONST84 char * widRec, int argc, CONST84 char **argv);
|
||
EXTERN TixConfigSpec * Tix_FindConfigSpecByName(
|
||
Tcl_Interp * interp,
|
||
TixClassRecord * cPtr, CONST84 char * name);
|
||
EXTERN CONST84 char * Tix_FindMethod(Tcl_Interp *interp,
|
||
CONST84 char *context, CONST84 char *method);
|
||
EXTERN char * Tix_FindPublicMethod(
|
||
Tcl_Interp *interp, TixClassRecord * cPtr,
|
||
CONST84 char * method);
|
||
EXTERN int Tix_GetChars(Tcl_Interp *interp,
|
||
CONST84 char *string, double *doublePtr);
|
||
EXTERN CONST84 char * Tix_GetConfigSpecFullName(CONST84 char *clasRec,
|
||
CONST84 char *flag);
|
||
EXTERN CONST84 char * Tix_GetContext(
|
||
Tcl_Interp * interp, CONST84 char * widRec);
|
||
EXTERN CONST84 char * Tix_GetMethodFullName(CONST84 char *context,
|
||
CONST84 char *method);
|
||
EXTERN void Tix_GetPublicMethods(Tcl_Interp *interp,
|
||
CONST84 char *widRec, int *numMethods,
|
||
char *** validMethods);
|
||
EXTERN int Tix_GetWidgetOption(
|
||
Tcl_Interp *interp, Tk_Window tkwin,
|
||
CONST84 char *argvName, CONST84 char *dbName, CONST84 char *dbClass,
|
||
CONST84 char *defValue, int argc, CONST84 char **argv,
|
||
int type, char *ptr);
|
||
EXTERN int Tix_GetVar(
|
||
Tcl_Interp *interp, TixClassRecord *cPtr,
|
||
CONST84 char * widRec, CONST84 char * flag);
|
||
EXTERN int Tix_QueryAllOptions(
|
||
Tcl_Interp *interp, TixClassRecord * cPtr,
|
||
CONST84 char *widRec);
|
||
EXTERN int Tix_QueryOneOption(
|
||
Tcl_Interp *interp, TixClassRecord *cPtr,
|
||
CONST84 char *widRec, CONST84 char *flag);
|
||
EXTERN int Tix_SuperClass(Tcl_Interp *interp,
|
||
CONST84 char *widClass, CONST84 char ** superClass_ret);
|
||
EXTERN int Tix_UnknownPublicMethodError(
|
||
Tcl_Interp *interp, TixClassRecord * cPtr,
|
||
CONST84 char * widRec, CONST84 char * method);
|
||
EXTERN int Tix_ValueMissingError(Tcl_Interp *interp,
|
||
CONST84 char *spec);
|
||
EXTERN void Tix_AddDItemType(
|
||
Tix_DItemInfo * diTypePtr);
|
||
EXTERN int Tix_ConfigureInfo2(
|
||
Tcl_Interp *interp, Tk_Window tkwin,
|
||
CONST84 char *entRec, Tk_ConfigSpec *entConfigSpecs,
|
||
Tix_DItem * iPtr, CONST84 char *argvName, int flags);
|
||
EXTERN int Tix_ConfigureValue2(Tcl_Interp *interp,
|
||
Tk_Window tkwin, CONST84 char * entRec,
|
||
Tk_ConfigSpec *entConfigSpecs, Tix_DItem * iPtr,
|
||
CONST84 char *argvName, int flags);
|
||
EXTERN void Tix_DItemCalculateSize(
|
||
Tix_DItem * iPtr);
|
||
EXTERN char * Tix_DItemComponent(Tix_DItem * diPtr,
|
||
int x, int y);
|
||
EXTERN int Tix_DItemConfigure(
|
||
Tix_DItem * diPtr, int argc,
|
||
CONST84 char **argv, int flags);
|
||
EXTERN Tix_DItem * Tix_DItemCreate(Tix_DispData * ddPtr,
|
||
CONST84 char * type);
|
||
EXTERN void Tix_DItemDrawBackground(Drawable drawable,
|
||
TixpSubRegion *subRegPtr, Tix_DItem * iPtr,
|
||
int x, int y, int width, int height,
|
||
int xOffset, int yOffset, int flags);
|
||
EXTERN void Tix_DItemDisplay(
|
||
Drawable drawable, Tix_DItem * iPtr,
|
||
int x, int y, int width, int height,
|
||
int xOffset, int yOffset, int flag);
|
||
EXTERN int Tix_DItemFillNormalBG(Drawable drawable,
|
||
TixpSubRegion *subRegPtr, Tix_DItem * iPtr,
|
||
int x, int y, int width, int height,
|
||
int xOffset, int yOffset, int flags);
|
||
EXTERN void Tix_DItemFree(
|
||
Tix_DItem * iPtr);
|
||
EXTERN void TixDItemStyleChanged(
|
||
Tix_DItemInfo * diTypePtr,
|
||
Tix_DItemStyle * stylePtr);
|
||
EXTERN void TixDItemStyleConfigureGCs(
|
||
Tix_DItemStyle *style);
|
||
EXTERN void TixDItemStyleFree(Tix_DItem *iPtr,
|
||
Tix_DItemStyle * stylePtr);
|
||
EXTERN void TixDItemGetAnchor(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(
|
||
Tix_ArgumentList *argListPtr);
|
||
EXTERN void TixGetColorDItemGC(
|
||
Tix_DItem * iPtr, GC * backGC_ret,
|
||
GC * foreGC_ret, GC * anchorGC_ret, int flags);
|
||
EXTERN Tix_DItemStyle* TixGetDefaultDItemStyle(
|
||
Tix_DispData * ddPtr, Tix_DItemInfo * diTypePtr,
|
||
Tix_DItem *iPtr, Tix_DItemStyle* oldStylePtr);
|
||
EXTERN Tix_DItemInfo * Tix_GetDItemType(
|
||
Tcl_Interp * interp, CONST84 char *type);
|
||
EXTERN void Tix_GetScrollFractions(
|
||
Tix_ScrollInfo * siPtr,
|
||
double * first_ret, double * last_ret);
|
||
EXTERN void Tix_InitScrollInfo(
|
||
Tix_ScrollInfo * siPtr, int type);
|
||
EXTERN int Tix_MultiConfigureInfo(
|
||
Tcl_Interp * interp,
|
||
Tk_Window tkwin, Tk_ConfigSpec **specsList,
|
||
int numLists, CONST84 char **widgRecList, CONST84 char *argvName,
|
||
int flags, int request);
|
||
EXTERN void Tix_SetDefaultStyleTemplate(
|
||
Tk_Window tkwin, Tix_StyleTemplate * tmplPtr);
|
||
EXTERN int Tix_SetScrollBarView(
|
||
Tcl_Interp *interp, Tix_ScrollInfo * siPtr,
|
||
int argc, CONST84 char **argv, int compat);
|
||
EXTERN void Tix_SetWindowItemSerial(
|
||
Tix_LinkList * lPtr, Tix_DItem * iPtr,
|
||
int serial);
|
||
EXTERN int Tix_SplitConfig(Tcl_Interp * interp,
|
||
Tk_Window tkwin, Tk_ConfigSpec ** specsList,
|
||
int numLists, int argc, CONST84 char **argv,
|
||
Tix_ArgumentList * argListPtr);
|
||
EXTERN void Tix_UnmapInvisibleWindowItems(
|
||
Tix_LinkList * lPtr, int serial);
|
||
EXTERN void Tix_UpdateScrollBar(
|
||
Tcl_Interp *interp, Tix_ScrollInfo * siPtr);
|
||
EXTERN int Tix_WidgetConfigure2(
|
||
Tcl_Interp *interp, Tk_Window tkwin, CONST84 char * entRec,
|
||
Tk_ConfigSpec *entConfigSpecs,
|
||
Tix_DItem * iPtr, int argc, CONST84 char **argv,
|
||
int flags, int forced, int * sizeChanged_ret);
|
||
EXTERN void Tix_WindowItemListRemove(
|
||
Tix_LinkList * lPtr, Tix_DItem * iPtr);
|
||
/*
|
||
* 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 void TixInitializeDisplayItems(void);
|
||
extern void TixpDrawAnchorLines(Display *display,
|
||
Drawable drawable, GC gc, int x, int y,
|
||
int w, int h);
|
||
extern void TixpDrawTmpLine(int x1, int y1,
|
||
int x2, int y2, Tk_Window tkwin);
|
||
extern void TixpEndSubRegionDraw(Display *display,
|
||
Drawable drawable, GC gc,
|
||
TixpSubRegion * subRegPtr);
|
||
extern int TixpSetWindowParent(Tcl_Interp * interp,
|
||
Tk_Window tkwin, Tk_Window newParent,
|
||
int parentId);
|
||
extern void TixpStartSubRegionDraw(Display *display,
|
||
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(Display *display,
|
||
Drawable drawable, GC gc,
|
||
TixpSubRegion * subRegPtr,
|
||
TixFont font, CONST84 char *string,
|
||
int numChars, int x, int y, int length,
|
||
Tk_Justify justify, int underline);
|
||
extern void TixpSubRegDrawBitmap(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(
|
||
TixpSubRegion * subRegPtr, Tk_Image image,
|
||
int imageX, int imageY, int width, int height,
|
||
Drawable drawable, int drawableX, int drawableY);
|
||
extern void TixpSubRegDrawAnchorLines(
|
||
Display *display, Drawable drawable,
|
||
GC gc, TixpSubRegion * subRegPtr,
|
||
int x, int y, int w, int h);
|
||
extern void TixpSubRegFillRectangle(Display *display,
|
||
Drawable drawable, GC gc,
|
||
TixpSubRegion * subRegPtr, int x, int y,
|
||
int width, int height);
|
||
extern void TixpSubRegSetClip(
|
||
Display *display, TixpSubRegion * subRegPtr,
|
||
GC gc);
|
||
extern void TixpSubRegUnsetClip(
|
||
Display *display, TixpSubRegion * subRegPtr,
|
||
GC gc);
|
||
extern char * tixStrDup( CONST char * s);
|
||
extern int TixMwmProtocolHandler(
|
||
ClientData clientData, XEvent *eventPtr);
|
||
|
||
/*
|
||
* Image types implemented by Tix.
|
||
*/
|
||
|
||
extern Tk_ImageType tixPixmapImageType;
|
||
extern Tk_ImageType tixCompoundImageType;
|
||
|
||
/*
|
||
* Display Items implemented in the Tix core.
|
||
*/
|
||
|
||
extern Tix_DItemInfo tix_ImageTextItemType;
|
||
extern Tix_DItemInfo tix_TextItemType;
|
||
extern Tix_DItemInfo tix_WindowItemType;
|
||
extern Tix_DItemInfo tix_ImageItemType;
|
||
|
||
#endif /* _TIX_INT_H_ */
|