/* 
 * @(#) olgx.h 1.48 93/06/28 
 */

/*
 * OPEN LOOK object drawing package
 * Sun Microsystems, Inc.,
 */

#ifndef OL_PUBLIC_DEFINED
#define OL_PUBLIC_DEFINED

#include <X11/Xlib.h>
#ifdef OW_I18N
#if ! defined(XlibSpecificationRelease) || XlibSpecificationRelease < 5
#include <X11/XlibR5.h>          
#endif
#endif

/*
 * Package constant definitions
 */


/*
 * Monitor dependent  definitons  
 */

#define OLGX_2D                0
#define OLGX_3D_COLOR          1
#define OLGX_3D_MONO           2




/* 	GC number definitions 	*/

#define NONE		       -1	/* means "don't draw in this color" */
#define OLGX_WHITE		0
#define OLGX_BLACK		1
#define OLGX_BG1		2
#define OLGX_BG2		3
#define OLGX_BG3		4
#define OLGX_NUM_COLORS		5	/* 1 more than last *color* GC */

#define OLGX_TEXTGC		5
#define OLGX_GREY_OUT    	6       /* Inactive GC  */
#define OLGX_BUSYGC		7
#define OLGX_SCROLL_GREY_GC     8       /* Special GC for 50% black cable */
#define OLGX_NUM_GCS		9	/* always 1 more than last GC */

/* 2D gc definitions */

#define OLGX_TEXTGC_REV         2      /* Is used only for 2D hence
					  substituted for OLGX_BG1 
					*/
/*
 * State Flag Definitions
 */
#define OLGX_NORMAL		0x0000	/* normal button */
#define OLGX_INVOKED		0x0001	/* invoked button */
#define OLGX_MENU_ITEM		0x0002	/* menu item */
#define	OLGX_ERASE		0x0004	/* erase first (only for menu items) */
#define OLGX_BUSY		0x0008	/* busy item */
#define OLGX_DEFAULT		0x0010	/* default item */
#define OLGX_INACTIVE		0x0020	/* inactive item */
#define OLGX_VERT_MENU_MARK	0x0040	/* include a vertical menu mark */
#define OLGX_HORIZ_MENU_MARK	0x0080	/* include a horizontal menu mark */
#define OLGX_VERT_BACK_MENU_MARK 0x2000	/* include a vertical menu mark */
#define OLGX_HORIZ_BACK_MENU_MARK 0x4000/* include a horizontal menu mark */
#define OLGX_DIAMOND_MARK       0x8000  /* include a diamond mark */
#define OLGX_MENU_MARK		0x00c0	/* VERT_MENU_MARK | HORIZ_MENU_MARK */
#define OLGX_LABEL_IS_PIXMAP	0x0200	/* button label is a pixmap */
#define OLGX_LABEL_IS_XIMAGE	0x2000	/* button label is an ximage */
#define OLGX_LABEL_HAS_UNDERLINE 0x0800	/* button label has underline */
#define OLGX_LABEL_HAS_HIGHLIGHT 0x1000	/* button label has highlight */
#ifdef OW_I18N
#define OLGX_LABEL_IS_WCS      0x10000 /* button label is a wide char str */
#endif
#define OLGX_VERTICAL 		0x0800	/* orientation is vertical */
#define OLGX_HORIZONTAL 	0x1000	/* orientation is horizontal */
#define OLGX_PUSHPIN_OUT	0x2000	/* pushpin is in */
#define OLGX_PUSHPIN_IN		0x4000	/* pushpin is out */
#define OLGX_UPDATE		0x8000	/* object is to be updated */
#define OLGX_ABBREV		0x0100	/* object is abbreviated */
#define OLGX_CHECKED		0x0002	/* object is checked (check boxes) */
#define OLGX_MORE_ARROW         0x0400  /* more arrow added for truncated text */

/* scrollbar -2d stateflag defns */

#define OLGX_SCROLL_FORWARD		0x0002	/*scroll forward */
#define OLGX_SCROLL_BACKWARD		0x2000	/*scroll backward */
#define OLGX_SCROLL_ABSOLUTE		0x4000	/*scroll absolute-
						  center darkened  */
#define OLGX_SCROLL_NO_FORWARD          0x0040  /* no scroll forward */
#define OLGX_SCROLL_NO_BACKWARD         0x0080  /* no scroll backward */

/*
 * corner definitions
 */

#define OLGX_UPPER_LEFT		0
#define OLGX_UPPER_RIGHT	1
#define OLGX_LOWER_RIGHT	2
#define OLGX_LOWER_LEFT		3

/*
 * Special Definition !!
 *
 */

#define OLGX_SPECIAL            1

/*
 * character definitions
 */
#define OLG_VSB_ELEVATOR                        1
#define OLG_VSB_ELEVATOR_LINE_BACKWARD          2
#define OLG_VSB_ELEVATOR_ABSOLUTE               3
#define OLG_VSB_ELEVATOR_LINE_FORWARD           4
#define OLG_VSB_REDUCED_ELEVATOR                5
#define OLG_VSB_REDUCED_ELEVATOR_LINE_BACKWARD  6
#define OLG_VSB_REDUCED_ELEVATOR_LINE_FORWARD   7
#define OLG_VSB_ANCHOR                          8
#define OLG_VSB_ANCHOR_INVERTED                 9
#define OLG_HSB_ELEVATOR                        10
#define OLG_HSB_ELEVATOR_LINE_BACKWARD          11
#define OLG_HSB_ELEVATOR_ABSOLUTE               12
#define OLG_HSB_ELEVATOR_LINE_FORWARD           13
#define OLG_HSB_REDUCED_ELEVATOR                14
#define OLG_HSB_REDUCED_ELEVATOR_LINE_BACKWARD  15
#define OLG_HSB_REDUCED_ELEVATOR_LINE_FORWARD   16
#define OLG_HSB_ANCHOR                          17
#define OLG_HSB_ANCHOR_INVERTED                 18
#define OLG_MENU_PIN_OUT                        19
#define OLG_MENU_PIN_IN                         20
#define OLG_MENU_DEFAULT_PIN_OUT                21
#define OLG_ABBREV_MENU_BUTTON                  22
#define OLG_ABBREV_MENU_BUTTON_INVERTED         23
/* new extension */
#define BUTTON_UL				24
#define BUTTON_LL				25
#define BUTTON_LEFT_ENDCAP_FILL			26
#define BUTTON_LR				27
#define BUTTON_UR				28
#define BUTTON_RIGHT_ENDCAP_FILL		29
#define BUTTON_TOP_1				30
#define BUTTON_TOP_2				31
#define BUTTON_TOP_4				32
#define BUTTON_TOP_8				33
#define BUTTON_TOP_16				34
#define BUTTON_BOTTOM_1				35
#define BUTTON_BOTTOM_2				36
#define BUTTON_BOTTOM_4				37
#define BUTTON_BOTTOM_8				38
#define BUTTON_BOTTOM_16			39
#define BUTTON_FILL_1				40
#define BUTTON_FILL_2				41
#define BUTTON_FILL_4				42
#define BUTTON_FILL_8				43
#define BUTTON_FILL_16				44
#define VERT_MENU_MARK_UL			45
#define VERT_MENU_MARK_LR			46
#define VERT_MENU_MARK_FILL			47
#define HORIZ_MENU_MARK_UL			48
#define HORIZ_MENU_MARK_LR			49
#define HORIZ_MENU_MARK_FILL			50
#define ABBREV_MENU_UL				51
#define ABBREV_MENU_LR				52
#define ABBREV_MENU_FILL			53
#define VERT_SB_UL				54
#define VERT_SB_LR				55
#define VERT_SB_TOPBOX_FILL			56
#define HORIZ_SB_UL				57
#define HORIZ_SB_LR				58
#define VERT_SB_BOTBOX_FILL			59
#define HORIZ_SLIDER_CONTROL_UL			60
#define HORIZ_SLIDER_CONTROL_LR			61
#define HORIZ_SLIDER_CONTROL_FILL		62
#define HORIZ_SLIDER_UL				63
#define HORIZ_SLIDER_LL				64
#define HORIZ_SLIDER_UR				65
#define HORIZ_SLIDER_LR				66
#define HORIZ_SLIDER_BOTTOM_1			67
#define HORIZ_SLIDER_BOTTOM_2			68
#define HORIZ_SLIDER_BOTTOM_4			69
#define HORIZ_SLIDER_BOTTOM_8			70
#define HORIZ_SLIDER_BOTTOM_16			71
#define HORIZ_SLIDER_FILL_1			72
#define HORIZ_SLIDER_FILL_2			73
#define HORIZ_SLIDER_FILL_4			74
#define HORIZ_SLIDER_FILL_8			75
#define HORIZ_SLIDER_FILL_16			76
#define HORIZ_SLIDER_LEFT_ENDCAP_FILL		77
#define HORIZ_SLIDER_RIGHT_ENDCAP_FILL		78
#define VERT_SLIDER_UL				79
#define VERT_SLIDER_UR				80
#define VERT_SLIDER_TOP_ENDCAP_FILL		81
#define VERT_SLIDER_LL				82
#define VERT_SLIDER_LR				83
#define VERT_SLIDER_BOTTOM_ENDCAP_FILL		84
#define VERT_SLIDER_CONTROL_UL			85
#define VERT_SLIDER_CONTROL_LR			86
#define VERT_SLIDER_CONTROL_FILL		87
#define UL_RESIZE_UL				88
#define UL_RESIZE_LR				89
#define UL_RESIZE_FILL				90
#define UR_RESIZE_UL				91
#define UR_RESIZE_LR				92
#define UR_RESIZE_FILL				93
#define LR_RESIZE_UL				94
#define LR_RESIZE_LR				95
#define LR_RESIZE_FILL				96
#define LL_RESIZE_UL				97
#define LL_RESIZE_LR				98
#define LL_RESIZE_FILL				99
#define PUSHPIN_OUT_TOP				100
#define PUSHPIN_OUT_BOTTOM			101
#define PUSHPIN_OUT_MIDDLE			102
#define PUSHPIN_IN_TOP				103
#define PUSHPIN_IN_BOTTOM			104
#define PUSHPIN_IN_MIDDLE			105
#define DFLT_BUTTON_LEFT_ENDCAP			106
#define DFLT_BUTTON_RIGHT_ENDCAP		107
#define DFLT_BUTTON_MIDDLE_1			108
#define DFLT_BUTTON_MIDDLE_2			109
#define DFLT_BUTTON_MIDDLE_4			110
#define DFLT_BUTTON_MIDDLE_8			111
#define DFLT_BUTTON_MIDDLE_16			112
#define BASE_OFF_SPECIALCHAR			113 /*special char */
#define UNCHECKED_BOX_UL			114
#define UNCHECKED_BOX_LR			115
#define UNCHECKED_BOX_FILL			116
#define CHECK_MARK				117
#define CHECKED_BOX_FILL			118
#define UNCHECKED_BOX_OUTLINE			119
#define HORIZ_GAUGE_UL				120
#define HORIZ_GAUGE_LL				121
#define HORIZ_GAUGE_UR				122
#define HORIZ_GAUGE_LR				123
#define HORIZ_GAUGE_BOTTOM_1			124
#define HORIZ_GAUGE_BOTTOM_2			125
#define HORIZ_GAUGE_BOTTOM_4			126
#define HORIZ_GAUGE_BOTTOM_8			127
#define HORIZ_GAUGE_BOTTOM_16			128
#define VERT_GAUGE_UL				129
#define VERT_GAUGE_UR				130
#define VERT_GAUGE_LL				131
#define VERT_GAUGE_LR				132
#define VERT_ABBREV_SB_UL			133
#define VERT_ABBREV_SB_LR			134
#define HORIZ_SB_RIGHTBOX_FILL			135
#define HORIZ_ABBREV_SB_UL			136
#define HORIZ_ABBREV_SB_LR			137
#define HORIZ_SB_LEFTBOX_FILL			138
#define BUTTON_OUTLINE_LEFT_ENDCAP		139
#define BUTTON_OUTLINE_RIGHT_ENDCAP		140
#define BUTTON_OUTLINE_MIDDLE_1			141
#define BUTTON_OUTLINE_MIDDLE_2			142
#define BUTTON_OUTLINE_MIDDLE_4			143
#define BUTTON_OUTLINE_MIDDLE_8			144
#define BUTTON_OUTLINE_MIDDLE_16		145
#define BUTTON_FILL_2D_LEFTENDCAP		146
#define BUTTON_FILL_2D_RIGHTENDCAP      	147
#define BUTTON_FILL_2D_MIDDLE_1     		148
#define BUTTON_FILL_2D_MIDDLE_2 		149
#define BUTTON_FILL_2D_MIDDLE_4 		150
#define BUTTON_FILL_2D_MIDDLE_8 		151
#define BUTTON_FILL_2D_MIDDLE_16		152
#define MENU_DFLT_OUTLINE_LEFT_ENDCAP           153
#define MENU_DFLT_OUTLINE_RIGHT_ENDCAP          154
#define MENU_DFLT_OUTLINE_MIDDLE_1              155
#define MENU_DFLT_OUTLINE_MIDDLE_2              156
#define MENU_DFLT_OUTLINE_MIDDLE_4              157
#define MENU_DFLT_OUTLINE_MIDDLE_8              158
#define MENU_DFLT_OUTLINE_MIDDLE_16             159
#define PIXLABEL_BUTTON_UL			160 
#define PIXLABEL_BUTTON_LL			161
#define UL_RESIZE_OUTLINE			162
#define UR_RESIZE_OUTLINE			163
#define LR_RESIZE_OUTLINE			164
#define LL_RESIZE_OUTLINE			165
#define VERT_SB_NO_BACK_OUTLINE                 166
#define VERT_SB_NO_FWD_OUTLINE                  167
#define VERT_SB_INACTIVE_OUTLINE                168
#define HORIZ_SB_NO_BACK_OUTLINE                169
#define HORIZ_SB_NO_FWD_OUTLINE                 170
#define HORIZ_SB_INACTIVE_OUTLINE               171
#define HORIZ_SLIDER_CONTROL_OUTLINE		172
#define HORIZ_SLIDER_LEFT_ENDCAP_OUTLINE	173
#define	HORIZ_SLIDER_RIGHT_ENDCAP_OUTLINE	174
#define HORIZ_SLIDER_OUTLINE_1			175
#define HORIZ_SLIDER_OUTLINE_2			176
#define HORIZ_SLIDER_OUTLINE_4			177
#define HORIZ_SLIDER_OUTLINE_8			178
#define HORIZ_SLIDER_OUTLINE_16			179
#define VERT_SLIDER_TOP_ENDCAP_OUTLINE		180
#define VERT_SLIDER_BOTTOM_ENDCAP_OUTLINE	181
#define VERT_SLIDER_CONTROL_OUTLINE		182
#define PUSHPIN_OUT_DEFAULT_TOP 		183
#define PUSHPIN_OUT_DEFAULT_BOTTOM 		184
#define PUSHPIN_OUT_DEFAULT_MIDDLE 		185
#define HORIZ_GAUGE_LEFT_ENDCAP_OUTLINE		186
#define HORIZ_GAUGE_RIGHT_ENDCAP_OUTLINE	187
#define HORIZ_GAUGE_OUTLINE_MIDDLE_1		188
#define HORIZ_GAUGE_OUTLINE_MIDDLE_2		189
#define HORIZ_GAUGE_OUTLINE_MIDDLE_4		190
#define HORIZ_GAUGE_OUTLINE_MIDDLE_8		191
#define HORIZ_GAUGE_OUTLINE_MIDDLE_16		192
#define CHECK_BOX_CLEAR_FILL			193
#define VERT_SB_BOX_UL 				194
#define VERT_SB_BOX_LR 				195
#define DIMPLE_UL				196
#define DIMPLE_LR				197
#define DIMPLE_FILL				198
#define SLIDER_CHANNEL_OFFSET			199 /* special char */
#define HORIZ_SB_BOX_UL				200
#define HORIZ_SB_BOX_LR				201
#define VERT_BACK_MENU_MARK_UL			202
#define VERT_BACK_MENU_MARK_LR			203
#define VERT_BACK_MENU_MARK_FILL		204
#define HORIZ_BACK_MENU_MARK_UL			205
#define HORIZ_BACK_MENU_MARK_LR			206
#define HORIZ_BACK_MENU_MARK_FILL		207
#define	OLGX_ACTIVE_CARET			208
#define OLGX_INACTIVE_CARET			209
#define VERT_GAUGE_TOPENDCAP   			210
#define VERT_GAUGE_BOTENDCAP   			211
#define PIXLABEL_BUTTON_UR   			212
#define PIXLABEL_BUTTON_LR   			213
#define PIXLABEL_BUTTON_2D_LR 			214
#define PIXLABEL_DEF_BUTTON_UL 			215
#define PIXLABEL_DEF_BUTTON_LL 			216
#define PIXLABEL_DEF_BUTTON_UR 			217
#define PIXLABEL_DEF_BUTTON_LR 			218
#define HORIZ_GAUGE_LEFT_ENDFILL                219
#define HORIZ_GAUGE_MIDDLE_FILL_1               220
#define HORIZ_GAUGE_MIDDLE_FILL_2               221
#define HORIZ_GAUGE_MIDDLE_FILL_4               222
#define HORIZ_GAUGE_MIDDLE_FILL_8               223
#define HORIZ_GAUGE_MIDDLE_FILL_16              224
#define HORIZ_GAUGE_RIGHT_ENDFILL               225
#define VERT_GAUGE_TOP_FILL                     226
#define VERT_GAUGE_BOT_FILL                     227
#define TEXTSCROLLBUTTON_LEFT                   228
#define TEXTSCROLLBUTTON_RIGHT                  229
#define TEXTSCROLLBUTTON_LEFT_INV               230
#define TEXTSCROLLBUTTON_RIGHT_INV              231
#define NUMERIC_SCROLL_BUTTON_NORMAL            232
#define NUMERIC_SCROLL_BUTTON_LEFT_INV          233
#define NUMERIC_SCROLL_BUTTON_RIGHT_INV         234


/*
 * Definitions needed for XView 
 */


#define OLGX_VAR_HEIGHT_BTN_MARGIN              10
#define OLGX_CHOICE_MARGIN                      10
#define OLGX_VAR_HEIGHT_BTN_ENDCAP_WIDTH        5


#ifdef OW_I18N

/*
 * Definision for the Graphics Info flag (Olgx_Flags)
 */

#define	OLGX_FONTSET	(1<<0)

#endif

 /*
 * Type and Structure Definitions
 */


typedef struct _GC_rec {
  GC gc;
  short ref_count;
  int   num_cliprects;          /* Information to set clip rectangles
  XID   clipmask;                * or clipmasks on the GCs
  int   clip_flag;               */
  unsigned long valuemask;      /* what fields are being used */
  XGCValues values;             /* Values stored  */
  struct _GC_rec * next;	/* Pointer to the next gc_info in the list */
  int      depth;
} GC_rec;

typedef struct pixlabel {
  Pixmap pixmap;
  int width,height;
} Pixlabel;

typedef struct ximlabel {
  XImage *ximage;
  int width,height;
} Ximlabel;

typedef struct underlinelabel {
  void *label;
  int position;
} Underlinelabel;

#ifdef OW_I18N
typedef union olgx_font_or_fs{
    XFontSet     fontset;		/* ptr to text font set info */
    XFontStruct *fontstruct;		/* ptr to text font info */
} Olgx_font_or_fs;
#endif

/*
 * Graphics information structure
 */
typedef struct graphics_info {
  Display *dpy;
  int scrn;
  unsigned int depth;	        	/* depth in which we are drawing */
  XFontStruct *glyphfont;		/* ptr to glyph font info*/
#ifdef OW_I18N
  Olgx_font_or_fs utextfont;
#else
  XFontStruct *textfont;		/* ptr to text font info */
#endif
  short  	three_d;		/* Either one of OLGX_2D,
					 * OLGX_3D_COLOR,OLGX_3D_MONO
					 */
						
  GC_rec 	* gc_rec[OLGX_NUM_GCS];

      /* OLGX_3D_MONO has been nuked....
       * info->stipple_pixmaps[3] has been changed to info->drawable[3]
       * and info->drawable[0] is used for storing the drawable associated
       * with the ginfo. In other words, since stipple_pixmaps is no
       * longer going to be used, we are using up this space to
       * avoid binary compatiblity problem between 2.0 and 3.0 
       * info->drawable[1-2] are still blank.
       */
#ifdef OW_I18N
      /*
       * with OW_I18N, info->drawable[1] is redefined to be Olgx_Flags
       * (macro).  This Olgx_Flags being used to distinguish between
       * i18n/fontset and main/fontstruct instance.
       */
#define	_Olgx_Flags	drawable[1]
#endif
  Pixmap        drawable[3];
  unsigned long pixvals[OLGX_NUM_COLORS];
  
  /*
   * important OPEN LOOK values associated with this glyph font
   */

  short	button_height;			/* height of buttons */
  short	endcap_width;			/* size of button endcap */
  short	sb_width, sb_height;		/* scrollbar elevator size */
  short	abbrev_width;         	        /* abbrev menu button size */
  short	slider_width, slider_height;	/* slider control size */
  short	se_width, se_height;		/* slider endcap size */
  short	mm_width, mm_height;		/* menu mark size */
  short base_off           ;            /* Text base_off */
  short slider_offset           ;       /*SliderChanneloffset */
  short	cb_width, cb_height;		/* check box size */
  short	pp_width, pp_height;		/* push pin  size*/
  short gauge_width,gauge_height ;      /* gauge width& height*/
  short textscbu_width ;                /* text scroll button width */
  short gauge_endcapOffset ;            /* Offset between the endcap and gauge
					 * channel
					 */
  short numscbu_width;                  /* Number Scrolling button Width */
  short resize_arm_width;               /* Resize Corner Width  */
  short abbsb_height ;                  /* Abbreviated Scrollbar Height */
  short cable_offset    ;               /* Cable offset distance from
					 * the Scrollbar origin */
  short cable_width  ;                  /* Width of the Cable */
  short point_size   ;		        /* Pixel Point size of the Font */
  short dtarget_height;                 /* Drop Target Height */
  short dtarget_width;                  /* Drop Target Width */
  short dtarget_swidth;                 /* Drop Target Stroke Width */
  short dtarget_ewidth;                 /* Drop Target Edge Width */


} Graphics_info;


/* Public macro definitions to get info from the Ginfo struct  */


#define ScrollbarElevator_Height(info)   	\
  (info->three_d)?((info)->sb_height-1):((info)->sb_height)		

#define ScrollbarElevator_Width(info)   	\
  (info->three_d)?((info)->sb_width-1):((info) ->sb_width)		


#define HorizSliderControl_Width(info)  ((info)->slider_width)
#define HorizSliderControl_Height(info) ((info)->slider_height)
#define SliderEndCap_Width(info)   	((info)->se_width)
#define SliderEndCap_Height(info)   	((info)->se_height)
#define CheckBox_Height(info)   	((info)->cb_height)
#define CheckBox_Width(info)    	((info)->cb_width)
#define PushPinIn_Width(info)           ((info)->pp_height)
#define PushPinOut_Width(info)    	((info)->pp_width)
#define PushPinOut_Height(info)    	((info)->pp_height)
#define ButtonEndcap_Width(info) 	((info)->endcap_width)
#define Button_Height(info)   	\
  ((info->three_d)?((info)->button_height-1):((info)->button_height))
#define MenuMark_Width(info) 		((info)->mm_width)
#define MenuMark_Height(info) 		((info)->mm_height)
#define Abbrev_MenuButton_Height(info) 	((info)->abbrev_width -1)
#define Abbrev_MenuButton_Width(info) 	((info)->abbrev_width)
#define Gauge_EndCapWidth(info)	 	((info)->gauge_width)
#define Gauge_EndCapHeight(info)       	((info)->gauge_height)
#define Gauge_EndCapOffset(info)   	((info)->gauge_endcapOffset)
#define TextScrollButton_Width(info)    ((info)->textscbu_width)
#define TextScrollButton_Height(info)   ((info)->textscbu_width)
#define NumScrollButton_Width(info)     ((info)->numscbu_width)
#define NumScrollButton_Height(info)    ((info)->textscbu_width)
#define ResizeArm_Width(info)           ((info)->resize_arm_width)
#define ResizeArm_Height(info)          ((info)->resize_arm_width)
#ifdef OW_I18N
#define Ascent_of_TextFont(info)        ((info)->utextfont.fontstruct->ascent)
#define Descent_of_TextFont(info)       ((info)->utextfont.fontstruct->descent)
#else
#define Ascent_of_TextFont(info)        ((info)->textfont->ascent)
#define Descent_of_TextFont(info)       ((info)->textfont->descent)
#endif
#define Ascent_of_GlyphFont(info)       ((info)->glyphfont->ascent)
#define Descent_of_GlyphFont(info)      ((info)->glyphfont->descent)
#define Pointsize_Glyph(info)           ((info)->point_size)
#define Vertsb_Endbox_Height(info)      (SliderEndCap_Height(info) + 1)
#define Vertsb_Endbox_Width(info)       (ScrollbarElevator_Width(info))
#define Dimension(info)                 ((info)->three_d)
#ifdef OW_I18N
#define TextFont_Struct(info)           ((info)->utextfont.fontstruct)
#define TextFont_Set(info)              ((info)->utextfont.fontset)
#define	Olgx_Flags(info)		((info)->_Olgx_Flags)
#else
#define TextFont_Struct(info)           ((info)->textfont)
#endif
#define GlyphFont_Struct(info)          ((info)->glyphfont)
#define AbbScrollbar_Height(ginfo)      ((info)->abbsb_height)
#define DropTarget_Width(info)          ((info)->dtarget_width)
#define DropTarget_Height(info)         ((info)->dtarget_height)

/*
 * Public macros to calculate the positions for menu accelerators`
 */

#define ButtonSpace_Width(info)         ((info)->mm_width)
#define MainLabel_Pos(info,x)           (x + (info)->endcap_width)
#define ButtonMark_Pos(info,m_pos,max_mlabel_length,max_qlabel_length) \
      (m_pos+ButtonSpace_Width(info)*3+(max_mlabel_length)+(max_qlabel_length))
#define KeyLabel_Pos(info,mark_pos)     (mark_pos + ButtonSpace_Width(info)*2)
#define QualifierLabel_Pos(info,mark_pos,qlabel_length) \
        (mark_pos - ButtonSpace_Width(info) - qlabel_length)
#define Button_Width(info,x,key_pos,max_klabel_length) \
        (key_pos + (info)->endcap_width + max_klabel_length -x)

/*
 * Public function declarations
 */


Graphics_info *   olgx_main_initialize();
#ifdef OW_I18N
Graphics_info *   olgx_i18n_initialize();
#endif
Graphics_info *   olgx_initialize();
void              olgx_calculate_3Dcolors();
unsigned long     olgx_get_single_color();
void          olgx_closedown();
void          olgx_destroy();


#define olgx_draw_accel_text   olgx_draw_accel_label

void	
  olgx_set_text_font(),
#ifdef OW_I18N
  olgx_set_text_fontset(),
#endif
  olgx_set_glyph_font(),
  olgx_set_single_color(),
  olgx_stipple_rect(),
  olgx_scroll_stipple_rects(),
  olgx_draw_accel_button(),
  olgx_draw_accel_choice_item(),
  olgx_draw_accel_label(),
  olgx_draw_elevator(),
  olgx_draw_button(),
  olgx_draw_choice_item(),
  olgx_draw_scrollbar(),
  olgx_draw_menu_mark(),
  olgx_draw_abbrev_button(),
  olgx_draw_slider(),
  olgx_draw_horizontal_slider(),
  olgx_draw_vertical_slider(),
  olgx_draw_resize_corner(),
  olgx_draw_textscroll_button(),
  olgx_draw_numscroll_button(),
  olgx_draw_gauge(),
  olgx_draw_horiz_gauge(),
  olgx_draw_vertical_gauge(),
  olgx_draw_pushpin(),
  olgx_draw_box(),
  olgx_draw_text(),
  olgx_draw_text_ledge(),
  olgx_draw_check_box();


#endif
