/* 
 *  @OPENGROUP_COPYRIGHT@
 *  COPYRIGHT NOTICE
 *  Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
 *  Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group
 *  ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
 *  the full copyright text.
 *  
 *  This software is subject to an open license. It may only be
 *  used on, with or for operating systems which are themselves open
 *  source systems. You must contact The Open Group for a license
 *  allowing distribution and sublicensing of this software on, with,
 *  or for operating systems which are not Open Source programs.
 *  
 *  See http://www.opengroup.org/openmotif/license for full
 *  details of the license agreement. Any use, reproduction, or
 *  distribution of the program constitutes recipient's acceptance of
 *  this agreement.
 *  
 *  EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
 *  PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
 *  WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
 *  OR FITNESS FOR A PARTICULAR PURPOSE
 *  
 *  EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
 *  NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
 *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 *  DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
 *  AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 *  ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
 *  EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
 *  POSSIBILITY OF SUCH DAMAGES.
 */ 
/* $TOG: Xm.h /main/38 1999/10/18 14:50:22 samborn $
 *
 * (c) Copyright 1996 Digital Equipment Corporation.
 * (c) Copyright 1987-1992,1996 Hewlett-Packard Company.
 * (c) Copyright 1996 International Business Machines Corp.
 * (c) Copyright 1996 Sun Microsystems, Inc.
 * (c) Copyright 1996 Novell, Inc. 
 * (c) Copyright 1996 FUJITSU LIMITED.
 * (c) Copyright 1996 Hitachi.
 */

#ifndef _Xm_h
#define _Xm_h

#if    !defined(__STDC__) \
    && !defined(__cplusplus) && !defined(c_plusplus) \
    && !defined(FUNCPROTO) && !defined(XTFUNCPROTO) && !defined(XMFUNCPROTO)
#define _NO_PROTO
#endif /* __STDC__ */

#include <X11/Intrinsic.h>
#include <X11/Shell.h>
#include <X11/Xatom.h>
#include <X11/extensions/Print.h>
#include <Xm/XmStrDefs.h>
#include <Xm/VirtKeys.h>
#include <Xm/Transfer.h>
#include <Xm/Primitive.h>
#include <Xm/Manager.h>
#include <Xm/Gadget.h>

#ifdef __cplusplus
extern "C" {
#endif

#define XmVERSION	2
#define XmREVISION	1
#define XmUPDATE_LEVEL	30
#define XmVersion	(XmVERSION * 1000 + XmREVISION)
#define XmVERSION_STRING "@(#)Motif Version 2.1.30"

externalref int xmUseVersion;


/* define used to denote an unspecified pixmap  */

#define	XmUNSPECIFIED_PIXMAP		2

/* define for an unspecified position */

#define XmUNSPECIFIED_POSITION          -1

/*******************
 *  
 * Defines for resources to be defaulted by vendors.
 * String are initialized in Xmos.c
 *
 ****************/

#define	XmSTRING_OS_CHARSET		XmSTRING_ISO8859_1
#ifndef	XmFALLBACK_CHARSET
#define	XmFALLBACK_CHARSET		XmSTRING_ISO8859_1
#endif

#define XmDEFAULT_FONT                  _XmSDEFAULT_FONT
#define XmDEFAULT_BACKGROUND            _XmSDEFAULT_BACKGROUND
#define XmDEFAULT_DARK_THRESHOLD        20
#define XmDEFAULT_LIGHT_THRESHOLD       93
#define XmDEFAULT_FOREGROUND_THRESHOLD  70

externalref  char    _XmSDEFAULT_FONT[];            /* In Xmos.c */
externalref  char    _XmSDEFAULT_BACKGROUND[];      /* In Xmos.c */

typedef unsigned char	XmDirection;

#define XmDIRECTION_IGNORED            0x30

#define XmRIGHT_TO_LEFT_MASK           0x01 /* 0x01 for bc */
#define XmLEFT_TO_RIGHT_MASK           0x02
#define XmHORIZONTAL_MASK              0x03
#define XmTOP_TO_BOTTOM_MASK           0x04
#define XmBOTTOM_TO_TOP_MASK           0x08
#define XmVERTICAL_MASK                0x0c
#define XmPRECEDENCE_HORIZ_MASK        0x40
#define XmPRECEDENCE_VERT_MASK         0x80
#define XmPRECEDENCE_MASK              0xc0

enum {
  XmRIGHT_TO_LEFT_TOP_TO_BOTTOM = 
      XmRIGHT_TO_LEFT_MASK | XmTOP_TO_BOTTOM_MASK | XmPRECEDENCE_HORIZ_MASK,
  XmLEFT_TO_RIGHT_TOP_TO_BOTTOM = 
      XmLEFT_TO_RIGHT_MASK | XmTOP_TO_BOTTOM_MASK | XmPRECEDENCE_HORIZ_MASK,
  XmRIGHT_TO_LEFT_BOTTOM_TO_TOP = 
      XmRIGHT_TO_LEFT_MASK | XmBOTTOM_TO_TOP_MASK | XmPRECEDENCE_HORIZ_MASK,
  XmLEFT_TO_RIGHT_BOTTOM_TO_TOP = 
      XmLEFT_TO_RIGHT_MASK | XmBOTTOM_TO_TOP_MASK | XmPRECEDENCE_HORIZ_MASK,
  XmTOP_TO_BOTTOM_RIGHT_TO_LEFT = 
      XmRIGHT_TO_LEFT_MASK | XmTOP_TO_BOTTOM_MASK | XmPRECEDENCE_VERT_MASK,
  XmTOP_TO_BOTTOM_LEFT_TO_RIGHT = 
      XmLEFT_TO_RIGHT_MASK | XmTOP_TO_BOTTOM_MASK | XmPRECEDENCE_VERT_MASK,
  XmBOTTOM_TO_TOP_RIGHT_TO_LEFT = 
      XmRIGHT_TO_LEFT_MASK | XmBOTTOM_TO_TOP_MASK | XmPRECEDENCE_VERT_MASK,
  XmBOTTOM_TO_TOP_LEFT_TO_RIGHT = 
      XmLEFT_TO_RIGHT_MASK | XmBOTTOM_TO_TOP_MASK | XmPRECEDENCE_VERT_MASK,
  XmTOP_TO_BOTTOM = 
      XmTOP_TO_BOTTOM_MASK | XmHORIZONTAL_MASK | XmPRECEDENCE_MASK,
  XmBOTTOM_TO_TOP = 
      XmBOTTOM_TO_TOP_MASK | XmHORIZONTAL_MASK | XmPRECEDENCE_MASK,
  XmRIGHT_TO_LEFT = 
      XmRIGHT_TO_LEFT_MASK | XmVERTICAL_MASK | XmPRECEDENCE_MASK,
  XmLEFT_TO_RIGHT = 
      XmLEFT_TO_RIGHT_MASK | XmVERTICAL_MASK | XmPRECEDENCE_MASK,
  XmDEFAULT_DIRECTION = 0xff
  };


extern Boolean XmDirectionMatch(XmDirection d1, 
				XmDirection d2);
extern Boolean XmDirectionMatchPartial(XmDirection d1, 
				       XmDirection d2, 
				       XmDirection dmask);

/****************
 *
 * XmString structure defines. These must be here (at the start of the file) 
 * becaused they are used later on.
 *
 ****************/
typedef enum{ XmFONT_IS_FONT, XmFONT_IS_FONTSET
	      } XmFontType;

enum { XmSTRING_DIRECTION_L_TO_R,
       XmSTRING_DIRECTION_R_TO_L,
       XmSTRING_DIRECTION_UNSET = 3,
       XmSTRING_DIRECTION_DEFAULT = XmDEFAULT_DIRECTION
       };

typedef unsigned char 	XmStringDirection;
typedef union __XmStringRec	*XmString;		/* opaque to outside */
typedef XmString *	XmStringTable;		/* opaque to outside */
typedef char *		XmStringCharSet;	/* Null term string */
typedef char *		XmStringTag;		/* Null term string */
typedef unsigned char	XmStringComponentType;	/* component tags */

typedef struct __XmRenditionRec	     **XmFontListEntry; /* opaque to outside */
typedef struct __XmRenderTableRec    **XmFontList;      /* opaque to outside */
typedef struct _XmFontListContextRec *XmFontContext;   /* opaque to outside */

typedef struct __XmStringContextRec *_XmStringContext; /* opaque to outside */
typedef union __XmStringRec        *_XmString;        /* opaque to outside */
typedef struct __XmStringContextRec *XmStringContext;  /* opaque to outside */

enum{	XmSTRING_COMPONENT_UNKNOWN,	  XmSTRING_COMPONENT_CHARSET,
	XmSTRING_COMPONENT_TEXT,	  XmSTRING_COMPONENT_DIRECTION,
        XmSTRING_COMPONENT_SEPARATOR,     XmSTRING_COMPONENT_LOCALE_TEXT,
	XmSTRING_COMPONENT_LOCALE,        XmSTRING_COMPONENT_WIDECHAR_TEXT,
	XmSTRING_COMPONENT_LAYOUT_PUSH,   XmSTRING_COMPONENT_LAYOUT_POP,
	XmSTRING_COMPONENT_RENDITION_BEGIN, XmSTRING_COMPONENT_RENDITION_END,
	XmSTRING_COMPONENT_TAB
	/* 13-125 reserved */
	} ;

#define XmSTRING_COMPONENT_FONTLIST_ELEMENT_TAG	XmSTRING_COMPONENT_CHARSET

#define XmSTRING_COMPONENT_TAG		XmSTRING_COMPONENT_CHARSET

#define XmSTRING_COMPONENT_END		((XmStringComponentType) 126)

#define XmSTRING_COMPONENT_USER_BEGIN	((XmStringComponentType) 128)
			/* 128-255 are user tags */
#define XmSTRING_COMPONENT_USER_END	((XmStringComponentType) 255)

typedef enum {
    XmCHARSET_TEXT,			XmMULTIBYTE_TEXT,
    XmWIDECHAR_TEXT,                    XmNO_TEXT
    } XmTextType;

typedef enum {
    XmOUTPUT_ALL,			XmOUTPUT_BETWEEN,
    XmOUTPUT_BEGINNING,			XmOUTPUT_END,
    XmOUTPUT_BOTH
    } XmParseModel;

typedef unsigned char XmIncludeStatus;
enum {
  XmINSERT,	XmTERMINATE,	XmINVOKE
  };

/* We are making an attempt (perhaps unnecessaryily) to keep our style
   constants the same as the equivalent Xlib style constants. The first
   Motif specific style constant starts at 32 so that the consortium can
   add constants to their list without overlapping with ours. */
typedef enum {
    XmSTYLE_STRING = XStringStyle,
    XmSTYLE_COMPOUND_TEXT = XCompoundTextStyle,
    XmSTYLE_TEXT = XTextStyle,
    XmSTYLE_STANDARD_ICC_TEXT = XStdICCTextStyle,
    XmSTYLE_LOCALE = 32,
    XmSTYLE_COMPOUND_STRING
    } XmICCEncodingStyle;

/****************
 *
 * XmParseTable structure defines. These must be here (at the start of
 * the file) because they are used later on.
 *
 ****************/

typedef struct __XmParseMappingRec *XmParseMapping;	/* opaque */
typedef XmParseMapping             *XmParseTable;

/* A special pattern used to match a change of character direction. */
#define XmDIRECTION_CHANGE	NULL


typedef XmIncludeStatus (*XmParseProc) (XtPointer     *in_out,
					XtPointer      text_end,
					XmTextType     type,
					XmStringTag    locale_tag,
					XmParseMapping entry,
					int            pattern_length,
					XmString      *str_include,
					XtPointer      call_data);


/****************
 *
 * XmTabList structure defines. These must be here (at the start of the file) 
 * becaused they are used later on.
 *
 ****************/
typedef enum { 
  XmABSOLUTE,		XmRELATIVE
  } XmOffsetModel;

typedef struct __XmTabRec	*XmTab;		  /* opaque */
typedef struct __XmTabListRec	*XmTabList;	  /* opaque */


/****************
 *
 * XmRenderTable structure defines. These must be here (at the start of the file) 
 * becaused they are used later on.
 *
 ****************/
/* XmRendition declarations */
typedef struct __XmRenditionRec		**XmRendition;   /* opaque */
typedef struct __XmRenderTableRec	**XmRenderTable; /* opaque */

typedef enum { 
  XmSKIP,		XmMERGE_REPLACE,
  XmMERGE_OLD,		XmMERGE_NEW, 
  XmDUPLICATE	/* For XmFontListAdd and XmFontListAppendEntry. */
  } XmMergeMode; 

#define XmAS_IS			255
#define XmFORCE_COLOR		1

#define XmUNSPECIFIED_PIXEL	 ((Pixel) (~0))
#define XmDEFAULT_SELECT_COLOR   XmUNSPECIFIED_PIXEL	
#define XmREVERSED_GROUND_COLORS (XmDEFAULT_SELECT_COLOR - 1)	
#define XmHIGHLIGHT_COLOR        (XmREVERSED_GROUND_COLORS - 1)	

enum { XmUNSPECIFIED_LOAD_MODEL, XmLOAD_DEFERRED, XmLOAD_IMMEDIATE }; 



/************************************************************************
 *  Primitive Resources and define values
 ************************************************************************/

/* size policy values  */

enum{	XmCHANGE_ALL,			XmCHANGE_NONE,
	XmCHANGE_WIDTH,			XmCHANGE_HEIGHT
	} ;

/*  unit type values  */

enum{	XmPIXELS,			Xm100TH_MILLIMETERS,
	Xm1000TH_INCHES,		Xm100TH_POINTS,
	Xm100TH_FONT_UNITS,		XmINCHES,
        XmCENTIMETERS,                  XmMILLIMETERS,
        XmPOINTS,                       XmFONT_UNITS
	} ;

/* DeleteResponse values */

enum{	XmDESTROY,			XmUNMAP,
	XmDO_NOTHING
	} ;
enum{	XmEXPLICIT,			XmPOINTER
	} ;
/************************************************************************
 *  Navigation defines 
 ************************************************************************/

enum{	XmNONE,				XmTAB_GROUP,
	XmSTICKY_TAB_GROUP,		XmEXCLUSIVE_TAB_GROUP
	} ;

#define	XmDYNAMIC_DEFAULT_TAB_GROUP	(255)

/************************************************************************
 * Audible warning
 ************************************************************************/

enum{	/* XmNONE */			XmBELL = 1
	} ;

/************************************************************************
 * Input Manager defines
 ************************************************************************/

enum {
        XmPER_SHELL,			XmPER_WIDGET,
        XmINHERIT_POLICY = 255
	} ;

typedef unsigned char XmInputPolicy;

/************************************************************************
 *  Menu defines
 ************************************************************************/

enum{	XmNO_ORIENTATION,		XmVERTICAL,
	XmHORIZONTAL
	} ;
enum{	XmWORK_AREA,			XmMENU_BAR,
	XmMENU_PULLDOWN,		XmMENU_POPUP,
	XmMENU_OPTION
	} ;
enum{	XmNO_PACKING,			XmPACK_TIGHT,
	XmPACK_COLUMN,			XmPACK_NONE
	} ;
enum{/* XmALIGNMENT_BASELINE_TOP,	XmALIGNMENT_CENTER,
	XmALIGNMENT_BASELINE_BOTTOM, */	XmALIGNMENT_CONTENTS_TOP = 3,
	XmALIGNMENT_CONTENTS_BOTTOM
	} ;
enum{	XmTEAR_OFF_ENABLED,		XmTEAR_OFF_DISABLED
	} ;
enum{	XmUNPOST,		 	XmUNPOST_AND_REPLAY
	} ;
enum{   XmLAST_POSITION = -1,           XmFIRST_POSITION
	} ;
enum{	XmPOPUP_DISABLED = 0,	XmPOPUP_KEYBOARD = 1,
	XmPOPUP_AUTOMATIC,	XmPOPUP_AUTOMATIC_RECURSIVE };

/************************************************************************
 *  ComboBox defines
 ************************************************************************/

enum{	XmCOMBO_BOX=0,		XmDROP_DOWN_COMBO_BOX,
	XmDROP_DOWN_LIST
	} ;

enum{	/* XmNONE */ XmQUICK_NAVIGATE = 1, XmINVALID_MATCH_BEHAVIOR
	} ;

enum{   XmZERO_BASED,		XmONE_BASED
        } ;

#define XmINVALID_POSITION -1

/************************************************************************
 *  Label/Frame defines
 ************************************************************************/

enum{	XmALIGNMENT_BEGINNING,		XmALIGNMENT_CENTER,
	XmALIGNMENT_END
	} ;
enum{   XmALIGNMENT_BASELINE_TOP,    /* XmALIGNMENT_CENTER, */
	XmALIGNMENT_BASELINE_BOTTOM = 2, XmALIGNMENT_WIDGET_TOP,
	XmALIGNMENT_WIDGET_BOTTOM
   	} ;
/* new enum introduced in 2.0 to clear up the confusion in
   widget top/bottom attachment */
#define XmALIGNMENT_CHILD_TOP XmALIGNMENT_WIDGET_BOTTOM
#define XmALIGNMENT_CHILD_BOTTOM XmALIGNMENT_WIDGET_TOP

/************************************************************************
 *  Frame defines
 ************************************************************************/

enum{	XmFRAME_GENERIC_CHILD,          XmFRAME_WORKAREA_CHILD,
        XmFRAME_TITLE_CHILD
	} ;
/************************************************************************
 *  ToggleButton  defines
 ************************************************************************/

enum{	XmN_OF_MANY = 1,		XmONE_OF_MANY,
	XmONE_OF_MANY_ROUND,		XmONE_OF_MANY_DIAMOND
	} ;
/************************************************************************
 *  Form defines
 ************************************************************************/

enum{	XmATTACH_NONE,			XmATTACH_FORM,
	XmATTACH_OPPOSITE_FORM,		XmATTACH_WIDGET,
	XmATTACH_OPPOSITE_WIDGET,	XmATTACH_POSITION,
	XmATTACH_SELF
	} ;
enum{	XmRESIZE_NONE,			XmRESIZE_GROW,
	XmRESIZE_ANY
	} ;

/****************************************************************************
 *  Callback reasons 
 ****************************************************************************/

enum{	XmCR_NONE,			XmCR_HELP,
	XmCR_VALUE_CHANGED,		XmCR_INCREMENT,
	XmCR_DECREMENT,			XmCR_PAGE_INCREMENT,
	XmCR_PAGE_DECREMENT,		XmCR_TO_TOP,
	XmCR_TO_BOTTOM,			XmCR_DRAG,
	XmCR_ACTIVATE,			XmCR_ARM,
	XmCR_DISARM,			XmCR_MAP = 16,
	XmCR_UNMAP,			XmCR_FOCUS,
	XmCR_LOSING_FOCUS,		XmCR_MODIFYING_TEXT_VALUE,
	XmCR_MOVING_INSERT_CURSOR,	XmCR_EXECUTE,
	XmCR_SINGLE_SELECT,		XmCR_MULTIPLE_SELECT,
	XmCR_EXTENDED_SELECT,		XmCR_BROWSE_SELECT,
	XmCR_DEFAULT_ACTION,		XmCR_CLIPBOARD_DATA_REQUEST,
	XmCR_CLIPBOARD_DATA_DELETE,	XmCR_CASCADING,
	XmCR_OK,			XmCR_CANCEL,
	XmCR_APPLY = 34,		XmCR_NO_MATCH,
	XmCR_COMMAND_ENTERED,		XmCR_COMMAND_CHANGED,
	XmCR_EXPOSE,			XmCR_RESIZE,
	XmCR_INPUT,			XmCR_GAIN_PRIMARY,
	XmCR_LOSE_PRIMARY,		XmCR_CREATE,
	XmCR_TEAR_OFF_ACTIVATE,		XmCR_TEAR_OFF_DEACTIVATE,
	XmCR_OBSCURED_TRAVERSAL,	XmCR_FOCUS_MOVED,
	XmCR_REPOST = 54,		XmCR_COLLAPSED,
	XmCR_EXPANDED,			XmCR_SELECT,
	XmCR_DRAG_START,		XmCR_NO_FONT,
	XmCR_NO_RENDITION,		XmCR_POST,
	XmCR_SPIN_NEXT,			XmCR_SPIN_PRIOR,
	XmCR_SPIN_FIRST,		XmCR_SPIN_LAST,
	XmCR_PAGE_SCROLLER_INCREMENT,   XmCR_PAGE_SCROLLER_DECREMENT,
	XmCR_MAJOR_TAB,                 XmCR_MINOR_TAB,
	XmCR_START_JOB,			XmCR_END_JOB,
	XmCR_PAGE_SETUP,		XmCR_PDM_NONE,
	XmCR_PDM_UP,			XmCR_PDM_START_ERROR,
	XmCR_PDM_START_VXAUTH,		XmCR_PDM_START_PXAUTH, 
	XmCR_PDM_OK,			XmCR_PDM_CANCEL,
	XmCR_PDM_EXIT_ERROR,
	XmCR_PROTOCOLS = 6666 /* required for BC. See CR 9158 */
	} ;

/************************************************************************
 *  new ScrollBar showArrows  define
 ************************************************************************/

enum{	/* XmNONE */		XmEACH_SIDE = 1,
	XmMAX_SIDE,             XmMIN_SIDE
	} ;


/************************************************************************
 *  Sliding mode
 ************************************************************************/

enum{	XmSLIDER,		XmTHERMOMETER} ;


/************************************************************************
 *  Slider Visual
 ************************************************************************/

enum{	XmBACKGROUND_COLOR,     XmFOREGROUND_COLOR, 
        XmTROUGH_COLOR,         XmSHADOWED_BACKGROUND} ;


/************************************************************************
 *  Slider Mark
 ************************************************************************/

enum{	/* XmNONE, */           XmETCHED_LINE = 1, 
        XmTHUMB_MARK,     XmROUND_MARK } ;


/************************************************************************
 *  new Scale showValue 
 ************************************************************************/

enum{	/* XmNONE */		XmNEAR_SLIDER = 1,
	XmNEAR_BORDER
	} ;


/************************************************************************
 *  new ScrolledWindow/MainWindow chidType
 ************************************************************************/

/* XmWORK_AREA, XmMENU_BAR and XmSEPARATOR have to match the existing ones */
enum{	/* XmWORK_AREA = 0, XmMENU_BAR = 1, */ 
        XmHOR_SCROLLBAR = 2, 
	XmVERT_SCROLLBAR,
	XmCOMMAND_WINDOW, 
        /* XmSEPARATOR = 5 */
        XmMESSAGE_WINDOW = 6,
        XmSCROLL_HOR, XmSCROLL_VERT, XmNO_SCROLL,
	XmCLIP_WINDOW, XmGENERIC_CHILD
	} ;

/************************************************************************
 *  new ScrolledWindow auto drag enum
 ************************************************************************/

enum{	XmAUTO_DRAG_ENABLED,		XmAUTO_DRAG_DISABLED
	} ;

/************************************************************************
 *  new Display enable warp enum
 ************************************************************************/

enum{	XmENABLE_WARP_ON,		XmENABLE_WARP_OFF
	} ;

/************************************************************************
 *  new Display enable btn1 transfer enum
 ************************************************************************/

enum{   XmOFF,				XmBUTTON2_ADJUST,
	XmBUTTON2_TRANSFER };

/************************************************************************
 * auto_selection_type
 ************************************************************************/

enum{   XmAUTO_UNSET,                   XmAUTO_BEGIN,
        XmAUTO_MOTION,                  XmAUTO_CANCEL,
        XmAUTO_NO_CHANGE,               XmAUTO_CHANGE
        };

/************************************************************************
 *  Callback structures 
 ************************************************************************/

typedef struct
{
    int     reason;
    XEvent  *event;
} XmAnyCallbackStruct;

typedef struct
{
    int     reason;
    XEvent  *event;
    int	    click_count;
} XmArrowButtonCallbackStruct;

typedef struct _XmDragStartCallbackStruct {
    int                 reason;
    XEvent              *event;
    Widget              widget;
    Boolean             doit;
} XmDragStartCallbackStruct, *XmDragStartCallback;

typedef struct
{
    int     reason;
    XEvent  *event;
    XmString item_or_text;
    int     item_position;
} XmComboBoxCallbackStruct;

typedef struct
{
    int     reason;
    XEvent  *event;
    Window  window;
} XmDrawingAreaCallbackStruct;

typedef struct
{
    int     reason;
    XEvent  *event;
    Window  window;
    int	    click_count;
} XmDrawnButtonCallbackStruct;

typedef struct
{
    int     reason;
    XEvent  *event;
    int	    click_count;
} XmPushButtonCallbackStruct;

typedef struct
{
    int     reason;
    XEvent  *event;
    Widget  widget;
    char    *data;
    char    *callbackstruct;
} XmRowColumnCallbackStruct;

typedef struct
{
   int reason;
   XEvent * event;
   int value;
   int pixel;
} XmScrollBarCallbackStruct;

typedef struct
{
   int reason;
   XEvent * event;
   int set;
} XmToggleButtonCallbackStruct;

typedef struct
{
   int 	     reason;
   XEvent    *event;
   XmString  item;
   int       item_length;
   int       item_position;
   XmString  *selected_items;
   int       selected_item_count;
   int       *selected_item_positions;
   char      selection_type;
   char	     auto_selection_type;
} XmListCallbackStruct;

typedef struct
{
    int reason;
    XEvent	*event;
    XmString	value;
    int		length;
} XmSelectionBoxCallbackStruct;

typedef struct
{
    int reason;
    XEvent	*event;
    XmString	value;
    int		length;
} XmCommandCallbackStruct;

typedef struct
{
    int 	reason;
    XEvent	*event;
    XmString	value;
    int		length;
    XmString	mask;
    int		mask_length;
    XmString	dir ;
    int		dir_length ;
    XmString    pattern ;
    int		pattern_length ;
} XmFileSelectionBoxCallbackStruct;


typedef struct 
{
   int reason;
   XEvent * event;
   int value;
} XmScaleCallbackStruct;

typedef struct
{
  int      reason;
  XEvent   *event;
  Widget   menuToPost;
  Boolean  postIt;
  Widget   target;
} XmPopupHandlerCallbackStruct;

typedef struct
{
  int         reason;
  XEvent      *event;
  Widget      item;
  unsigned char       new_outline_state;
} XmContainerOutlineCallbackStruct;

typedef struct
{
  int             reason;
  XEvent          *event;
  WidgetList      selected_items;
  int             selected_item_count;
  unsigned char   auto_selection_type;
} XmContainerSelectCallbackStruct;

typedef struct
{
  int         reason;
  XEvent      *event;
  int         page_number;
  Widget      page_widget;
  int         prev_page_number;
  Widget      prev_page_widget;
} XmNotebookCallbackStruct;

typedef struct
{
    int     		reason;
    XEvent  		*event;
    XmRendition		rendition;
    char		*font_name;
    XmRenderTable	render_table;
    XmStringTag		tag;
} XmDisplayCallbackStruct;

typedef struct
{
    int		reason;	   /* XmCR_START_JOB, XmCR_END_JOB, XmCR_PAGE_SETUP */
    XEvent	*event;
    XPContext	context;
    Boolean	last_page; /* in_out */
    XtPointer	detail;
} XmPrintShellCallbackStruct;


/************************************************************************
 *  PushButton defines
 ************************************************************************/

enum{	XmMULTICLICK_DISCARD,		XmMULTICLICK_KEEP
	} ;
/************************************************************************
 *  DrawnButton defines
 ************************************************************************/

enum{	XmSHADOW_IN = 7,		XmSHADOW_OUT
	} ;
/************************************************************************
 *  Arrow defines
 ************************************************************************/

enum{	XmARROW_UP,			XmARROW_DOWN,
	XmARROW_LEFT,			XmARROW_RIGHT
	} ;
/************************************************************************
 *  Separator defines
 *  Note: XmINVALID_SEPARATOR_TYPE marks the last+1 separator type
 ************************************************************************/

enum{	XmNO_LINE,			XmSINGLE_LINE,
	XmDOUBLE_LINE,			XmSINGLE_DASHED_LINE,
	XmDOUBLE_DASHED_LINE,		XmSHADOW_ETCHED_IN,
	XmSHADOW_ETCHED_OUT,		XmSHADOW_ETCHED_IN_DASH,
	XmSHADOW_ETCHED_OUT_DASH,	XmINVALID_SEPARATOR_TYPE
	} ;

enum{	XmPIXMAP = 1,			XmSTRING
	} ;

/************************************************************************
 *  Drag and Drop defines
 ************************************************************************/

enum{	XmWINDOW,		     /* XmPIXMAP, */
	XmCURSOR = 2,		     XmDRAG_WINDOW = 3
	} ;

/************************************************************************
 *  ScrollBar defines
 ************************************************************************/

enum{	XmMAX_ON_TOP,			XmMAX_ON_BOTTOM,
	XmMAX_ON_LEFT,			XmMAX_ON_RIGHT
	} ;
/************************************************************************
 *									*
 * List Widget defines							*
 *									*
 ************************************************************************/

enum{	XmSINGLE_SELECT,		XmMULTIPLE_SELECT,
	XmEXTENDED_SELECT,		XmBROWSE_SELECT
	} ;
enum{	XmSTATIC,			XmDYNAMIC
	} ;
enum{ XmNORMAL_MODE,			XmADD_MODE
        } ;
/************************************************************************
 *                                                                      *
 * Container Widget defines                                             *
 *                                                                      *
 ************************************************************************/

        /* XmRAutomaticSelection */
enum {  XmNO_AUTO_SELECT,
        XmAUTO_SELECT
        };

        /* XmRLineStyle */
enum {  /* XmNO_LINE */
        XmSINGLE = 1
        };

        /* XmREntryViewType */
enum {  /* XmLARGE_ICON */
        /* XmSMALL_ICON */
        XmANY_ICON = 2
        };

        /* XmRSpatialIncludeModel */
enum {  XmAPPEND,
        XmCLOSEST,
        XmFIRST_FIT
        };

        /* XmRLayoutType */
enum {  XmOUTLINE,
        XmSPATIAL,
	XmDETAIL
        };

	/* XmNoutlineButtonPolicy */
enum {	XmOUTLINE_BUTTON_PRESENT,
	XmOUTLINE_BUTTON_ABSENT
	};

        /* XmRSpatialPlaceStyle */
enum {  /* XmNONE */
	XmGRID = 1,
	XmCELLS
        };

	/* XmRPrimaryOwnership */
enum {	XmOWN_NEVER,
	XmOWN_ALWAYS,
	XmOWN_MULTIPLE,
	XmOWN_POSSIBLE_MULTIPLE
	};

        /* XmRSpatialResizeModel */
enum {  XmGROW_MINOR,
	XmGROW_MAJOR,
        XmGROW_BALANCED
        };

        /* XmRSelectionTechnique */
enum {  XmMARQUEE,
        XmMARQUEE_EXTEND_START,
        XmMARQUEE_EXTEND_BOTH,
        XmTOUCH_ONLY,
        XmTOUCH_OVER
        };

        /* XmRSpatialSnapModel */
enum {  /* XmNONE */
        XmSNAP_TO_GRID = 1,
        XmCENTER
        };

        /* XmROutlineState */
enum {  XmCOLLAPSED,
        XmEXPANDED
        };

/************************************************************************
 *                                                                      *
 * IconGadget defines                                                   *
 *                                                                      *
 ************************************************************************/

        /* XmRViewType */
enum {  XmLARGE_ICON,
        XmSMALL_ICON
        };

        /* XmRVisualEmphasis */
enum {  XmSELECTED,
        XmNOT_SELECTED
        };

/************************************************************************
 *                                                                      *
 * Notebook Widget defines                                              *
 *                                                                      *
 ************************************************************************/

#define XmUNSPECIFIED_PAGE_NUMBER       (-32768)

        /* XmRBindingType */
enum {  /* XmNONE */
        /* XmPIXMAP */
        XmSOLID = 2,
        XmSPIRAL,
        XmPIXMAP_OVERLAP_ONLY
        };

        /* XmRNBChildType */
enum {  /* XmNONE */
        XmPAGE = 1,
        XmMAJOR_TAB,
        XmMINOR_TAB,
        XmSTATUS_AREA,
        XmPAGE_SCROLLER
        };

/************************************************************************
 *									*
 * Spin button defines.							*
 *									*
 ************************************************************************/

/* XmNarrowOrientation */
enum
{
    XmARROWS_VERTICAL,
    XmARROWS_HORIZONTAL
};

/* XmNarrowLayout */
enum
{
    XmARROWS_END,
    XmARROWS_BEGINNING,
    XmARROWS_SPLIT,
    XmARROWS_FLAT_END,
    XmARROWS_FLAT_BEGINNING
};

/* XmNarrowSensitivity and XmNdefaultArrowSensitivity */
/* Please note that these arrows form the proper values 
   for a bit mask. */
enum
{
    XmARROWS_INSENSITIVE,
    XmARROWS_INCREMENT_SENSITIVE,
    XmARROWS_DECREMENT_SENSITIVE,
    XmARROWS_SENSITIVE,
    XmARROWS_DEFAULT_SENSITIVITY
};

/* XmNpositionType */
enum
{
    XmPOSITION_INDEX,
    XmPOSITION_VALUE
};

/* XmNspinButtonChildType */
enum
{
    /* XmPIXMAP = 1 */
    /* XmSTRING */
    XmNUMERIC = 3
};

/* Return values for Xm[Simple]SpinBoxValidatePosition */
enum
{
    XmVALID_VALUE,
    XmCURRENT_VALUE,
    XmMAXIMUM_VALUE,
    XmMINIMUM_VALUE,
    XmINCREMENT_VALUE
};

typedef struct
{
    int		reason;
    XEvent	*event;
    Widget      widget;
    Boolean     doit;
    int		position;
    XmString	value;
    Boolean	crossed_boundary;
} XmSpinBoxCallbackStruct;


/************************************************************************
 *									*
 * Scrolled Window defines.						*
 *									*
 ************************************************************************/

enum{	XmVARIABLE,			XmCONSTANT,
	XmRESIZE_IF_POSSIBLE
	} ;
enum{	XmAUTOMATIC,			XmAPPLICATION_DEFINED
	} ;
enum{	/* XmSTATIC */			XmAS_NEEDED = 1
	} ;

#define SW_TOP		1
#define SW_BOTTOM	0
#define SW_LEFT		2
#define SW_RIGHT	0

#define XmTOP_LEFT	(SW_TOP | SW_LEFT)
#define XmBOTTOM_LEFT	(SW_BOTTOM  | SW_LEFT)
#define XmTOP_RIGHT	(SW_TOP | SW_RIGHT)
#define XmBOTTOM_RIGHT	(SW_BOTTOM  | SW_RIGHT)

/************************************************************************
 *									*
 * MainWindow Resources                                                 *
 *									*
 ************************************************************************/

enum{	XmCOMMAND_ABOVE_WORKSPACE,	XmCOMMAND_BELOW_WORKSPACE
	} ;
/************************************************************************
 *									*
 * Text Widget defines							*
 *									*
 ************************************************************************/

enum{	XmMULTI_LINE_EDIT,		XmSINGLE_LINE_EDIT
	} ;

typedef enum{
	XmTEXT_FORWARD,
	XmTEXT_BACKWARD
	} XmTextDirection;

typedef long XmTextPosition;
typedef Atom XmTextFormat;

#define XmFMT_8_BIT	((XmTextFormat) XA_STRING)	/* 8-bit text. */
#define XmFMT_16_BIT	((XmTextFormat) 2)		/* 16-bit text. */

#define FMT8BIT		XmFMT_8_BIT	/* For backwards compatibility only.*/
#define FMT16BIT	XmFMT_16_BIT	/* For backwards compatibility only.*/

typedef enum{
	XmSELECT_POSITION,		XmSELECT_WHITESPACE,
	XmSELECT_WORD,			XmSELECT_LINE,
	XmSELECT_ALL,			XmSELECT_PARAGRAPH,
	XmSELECT_OUT_LINE
	} XmTextScanType ;

typedef enum{
	XmHIGHLIGHT_NORMAL,		XmHIGHLIGHT_SELECTED,
	XmHIGHLIGHT_SECONDARY_SELECTED,	XmSEE_DETAIL
	} XmHighlightMode ;

/* XmTextBlock's are used to pass text around. */

typedef struct {
    char *ptr;                  /* Pointer to data. */
    int length;                 /* Number of bytes of data. */
    XmTextFormat format;       /* Representations format */
} XmTextBlockRec, *XmTextBlock;

typedef struct
{
    int reason;
    XEvent  *event;
    Boolean doit;
    long currInsert, newInsert;
    long startPos, endPos;
    XmTextBlock text;
} XmTextVerifyCallbackStruct, *XmTextVerifyPtr;

/* XmTextBlockWcs's are used in 1.2 modifyVerifyWcs callbacks for Text[Field]
 * widgets. */

typedef struct {
    wchar_t *wcsptr;            /* Pointer to data. */
    int length;                 /* Number of characters (not bytes) of data. */
} XmTextBlockRecWcs, *XmTextBlockWcs;

typedef struct
{
    int reason;
    XEvent  *event;
    Boolean doit;
    long currInsert, newInsert;
    long startPos, endPos;
    XmTextBlockWcs text;
} XmTextVerifyCallbackStructWcs, *XmTextVerifyPtrWcs;

/* functions renamed after 1.0 release due to resource name overlap */
#define XmTextGetTopPosition                XmTextGetTopCharacter
#define XmTextSetTopPosition                XmTextSetTopCharacter

#define XmCOPY_FAILED		0
#define XmCOPY_SUCCEEDED	1
#define XmCOPY_TRUNCATED	2

/************************************************************************
 *									*
 *  DIALOG defines..  BulletinBoard and things common to its subclasses *
 *          CommandBox    MessageBox    Selection    FileSelection      *
 *									*
 ************************************************************************/

/* child type defines for Xm...GetChild() */

enum{	XmDIALOG_NONE,			XmDIALOG_APPLY_BUTTON,
	XmDIALOG_CANCEL_BUTTON,		XmDIALOG_DEFAULT_BUTTON,
	XmDIALOG_OK_BUTTON,		XmDIALOG_FILTER_LABEL,
	XmDIALOG_FILTER_TEXT,		XmDIALOG_HELP_BUTTON,
	XmDIALOG_LIST,			XmDIALOG_LIST_LABEL,
	XmDIALOG_MESSAGE_LABEL,		XmDIALOG_SELECTION_LABEL,
	XmDIALOG_SYMBOL_LABEL,		XmDIALOG_TEXT,
	XmDIALOG_SEPARATOR,		XmDIALOG_DIR_LIST,
	XmDIALOG_DIR_LIST_LABEL
	} ;

#define XmDIALOG_HISTORY_LIST     	XmDIALOG_LIST
#define XmDIALOG_PROMPT_LABEL     	XmDIALOG_SELECTION_LABEL
#define XmDIALOG_VALUE_TEXT       	XmDIALOG_TEXT
#define XmDIALOG_COMMAND_TEXT     	XmDIALOG_TEXT
#define XmDIALOG_FILE_LIST        	XmDIALOG_LIST
#define XmDIALOG_FILE_LIST_LABEL  	XmDIALOG_LIST_LABEL

/*  dialog style defines  */

enum{	XmDIALOG_MODELESS,		XmDIALOG_PRIMARY_APPLICATION_MODAL,
	XmDIALOG_FULL_APPLICATION_MODAL,XmDIALOG_SYSTEM_MODAL
	} ;

/* The following is for compatibility only. Its use is deprecated.
 */
#define XmDIALOG_APPLICATION_MODAL	XmDIALOG_PRIMARY_APPLICATION_MODAL

/************************************************************************
 * XmSelectionBox, XmFileSelectionBox and XmCommand - misc. stuff       *
 ***********************************************************************/

/* Defines for Selection child placement
*/
enum{	XmPLACE_TOP,			XmPLACE_ABOVE_SELECTION,
	XmPLACE_BELOW_SELECTION
	} ;

/* Defines for file type mask:
*/
#define XmFILE_DIRECTORY (1 << 0)
#define XmFILE_REGULAR   (1 << 1)
#define XmFILE_ANY_TYPE  (XmFILE_DIRECTORY | XmFILE_REGULAR)

/* Defines for selection dialog type:
*/
enum{	XmDIALOG_WORK_AREA,		XmDIALOG_PROMPT,
	XmDIALOG_SELECTION,		XmDIALOG_COMMAND,
	XmDIALOG_FILE_SELECTION
	} ;

/************************************************************************
 *  XmMessageBox           stuff not common to other dialogs            *
 ***********************************************************************/

/* defines for dialog type */

enum{	XmDIALOG_TEMPLATE,		XmDIALOG_ERROR,
	XmDIALOG_INFORMATION,		XmDIALOG_MESSAGE,
	XmDIALOG_QUESTION,		XmDIALOG_WARNING,
	XmDIALOG_WORKING
	} ;

/*  Traversal types  */

typedef enum{
	XmVISIBILITY_UNOBSCURED,	XmVISIBILITY_PARTIALLY_OBSCURED,
	XmVISIBILITY_FULLY_OBSCURED
	} XmVisibility ;


typedef enum{
	XmTRAVERSE_CURRENT,		XmTRAVERSE_NEXT,
	XmTRAVERSE_PREV,		XmTRAVERSE_HOME,
	XmTRAVERSE_NEXT_TAB_GROUP,	XmTRAVERSE_PREV_TAB_GROUP,
	XmTRAVERSE_UP,			XmTRAVERSE_DOWN,
	XmTRAVERSE_LEFT,		XmTRAVERSE_RIGHT,
	XmTRAVERSE_GLOBALLY_FORWARD,	XmTRAVERSE_GLOBALLY_BACKWARD
	} XmTraversalDirection ;

typedef struct _XmTraverseObscuredCallbackStruct
{	int			reason ;
	XEvent *		event ;
	Widget			traversal_destination ;
	XmTraversalDirection	direction ;
	} XmTraverseObscuredCallbackStruct ;

typedef unsigned char   XmNavigationType;


/***********************************************************************
 *
 * SimpleMenu declarations and definitions.
 *
 ***********************************************************************/

typedef unsigned char XmButtonType;
typedef XmButtonType * XmButtonTypeTable;
typedef KeySym * XmKeySymTable;
typedef XmStringCharSet * XmStringCharSetTable;

enum{	XmPUSHBUTTON = 1,		XmTOGGLEBUTTON,
	XmRADIOBUTTON,			XmCASCADEBUTTON,
	XmSEPARATOR,			XmDOUBLE_SEPARATOR,
	XmTITLE
	} ;
#define XmCHECKBUTTON			XmTOGGLEBUTTON


/***********************************************************************
 *
 * BitmapConversionModel
 *
 ***********************************************************************/

enum{	XmMATCH_DEPTH, XmDYNAMIC_DEPTH } ;


/************************************************************************
 *  PrintShell defines
 ************************************************************************/

enum { XmPDM_NOTIFY_FAIL, XmPDM_NOTIFY_SUCCESS } ;


/* This one cannot be put at the beginning because it needs 
   XmStringTable */
#include <Xm/TxtPropCv.h>


/********    BaseClass.c    ********/
typedef XtPointer	(*XmResourceBaseProc)( Widget, XtPointer) ;

typedef struct _XmSecondaryResourceDataRec{
    XmResourceBaseProc	base_proc;
    XtPointer		client_data;
    String		name;
    String		res_class;
    XtResourceList	resources;
    Cardinal		num_resources;
}XmSecondaryResourceDataRec, *XmSecondaryResourceData;

/********    Public Function Declarations for BaseClass.c    ********/

extern Cardinal XmGetSecondaryResourceData( 
                        WidgetClass w_class,
                        XmSecondaryResourceData **secondaryDataRtn) ;

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for ImageCache.c    ********/

extern Boolean XmInstallImage( 
                        XImage *image,
                        char *image_name) ;
extern Boolean XmUninstallImage( 
                        XImage *image) ;
extern Pixmap XmGetPixmap( 
                        Screen *screen,
                        char *image_name,
                        Pixel foreground,
                        Pixel background) ;
extern Pixmap XmGetPixmapByDepth( 
                        Screen *screen,
                        char *image_name,
                        Pixel foreground,
                        Pixel background,
			int depth) ;
extern Boolean XmDestroyPixmap( 
                        Screen *screen,
                        Pixmap pixmap) ;

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for Resolve.c    ********/
/*-- XmeResolvePartOffsets is defined in XmP.h.
     These also belong there but for source compatibility, we let 
     them here --- */

typedef long XmOffset;
typedef XmOffset *XmOffsetPtr;



extern void XmResolveAllPartOffsets( 
                        WidgetClass w_class,
                        XmOffsetPtr *offset,
                        XmOffsetPtr *constraint_offset) ;
extern void XmResolvePartOffsets( 
                        WidgetClass w_class,
                        XmOffsetPtr *offset) ;

/********    End Public Function Declarations    ********/



/********    Public Function Declarations for Xm.c    ********/


extern void XmUpdateDisplay( 
                        Widget w) ;
extern Widget XmObjectAtPoint(
			Widget wid,
			Position x,
			Position y ) ;

extern Boolean XmWidgetGetBaselines(
                        Widget wid,
                        Dimension **baselines,
                        int *line_count);
extern Boolean XmWidgetGetDisplayRect(
                        Widget wid,
                        XRectangle *displayrect);

/********    End Public Function Declarations    ********/



/********    Primitive.c    ********/

/********    Public Function Declarations for Primitive.c    ********/

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for ResConvert.c    ********/

extern void XmCvtStringToUnitType( 
                        XrmValuePtr args,
                        Cardinal *num_args,
                        XrmValue *from_val,
                        XrmValue *to_val) ;
extern char * XmRegisterSegmentEncoding( 
                        char *fontlist_tag,
                        char *ct_encoding) ;
extern char * XmMapSegmentEncoding( 
                        char *fontlist_tag) ;
extern XmString XmCvtCTToXmString( 
                        char *text) ;
extern Boolean XmCvtTextToXmString( 
                        Display *display,
                        XrmValuePtr args,
                        Cardinal *num_args,
                        XrmValue *from_val,
                        XrmValue *to_val,
                        XtPointer *converter_data) ;
extern char * XmCvtXmStringToCT( 
                        XmString string) ;
extern Boolean XmCvtXmStringToText( 
                        Display *display,
                        XrmValuePtr args,
                        Cardinal *num_args,
                        XrmValue *from_val,
                        XrmValue *to_val,
                        XtPointer *converter_data) ;

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for ResInd.c    ********/

extern int XmConvertStringToUnits(
				  Screen *screen, 
				  String spec,
				  int orientation,
				  int to_type,
				  XtEnum *parse_error);
extern int XmConvertUnits( 
                        Widget widget,
                        int dimension,
                        register int from_type,
                        register int from_val,
                        register int to_type) ;
extern int XmCvtToHorizontalPixels( 
                        Screen *screen,
                        register int from_val,
                        register int from_type) ;
extern int XmCvtToVerticalPixels( 
                        Screen *screen,
                        register int from_val,
                        register int from_type) ;
extern int XmCvtFromHorizontalPixels( 
                        Screen *screen,
                        register int from_val,
                        register int to_type) ;
extern int XmCvtFromVerticalPixels( 
                        Screen *screen,
                        register int from_val,
                        register int to_type) ;
extern void XmSetFontUnits( 
                        Display *display,
                        int h_value,
                        int v_value) ;
extern void XmSetFontUnit( 
                        Display *display,
                        int value) ;

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for MenuUtil.c    ********/

extern void XmSetMenuCursor( 
                        Display *display,
                        Cursor cursorId) ;
extern Cursor XmGetMenuCursor( 
                        Display *display) ;

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for Simple.c    ********/

extern Widget XmCreateSimpleMenuBar( 
                        Widget parent,
                        String name,
                        ArgList args,
                        Cardinal arg_count) ;
extern Widget XmCreateSimplePopupMenu( 
                        Widget parent,
                        String name,
                        ArgList args,
                        Cardinal arg_count) ;
extern Widget XmCreateSimplePulldownMenu( 
                        Widget parent,
                        String name,
                        ArgList args,
                        Cardinal arg_count) ;
extern Widget XmCreateSimpleOptionMenu( 
                        Widget parent,
                        String name,
                        ArgList args,
                        Cardinal arg_count) ;
extern Widget XmCreateSimpleRadioBox( 
                        Widget parent,
                        String name,
                        ArgList args,
                        Cardinal arg_count) ;
extern Widget XmCreateSimpleCheckBox( 
                        Widget parent,
                        String name,
                        ArgList args,
                        Cardinal arg_count) ;

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for VaSimple.c   ********/
extern Widget XmVaCreateSimpleMenuBar( 
			Widget parent,
			String name,
			...) ;
extern Widget XmVaCreateSimplePopupMenu(
			Widget parent,
			String name,
			XtCallbackProc callback,
			...) ;
extern Widget XmVaCreateSimplePulldownMenu( 
			Widget parent,
			String name,
			int post_from_button,
			XtCallbackProc callback,
			...) ;
extern Widget XmVaCreateSimpleOptionMenu(
			Widget parent,
			String name,
                        XmString option_label,
                        KeySym option_mnemonic,
                        int button_set,
                        XtCallbackProc callback,
			...) ;
extern Widget XmVaCreateSimpleRadioBox( 
			Widget parent,
			String name,
			int button_set,
			XtCallbackProc callback,
			...) ;
extern Widget XmVaCreateSimpleCheckBox( 
			Widget parent,
			String name,
			XtCallbackProc callback,
			...) ;
/********    End Public Function Declarations    ********/

/********    Public Function Declarations for TrackLoc.c    ********/

extern Widget XmTrackingEvent( 
                        Widget widget,
                        Cursor cursor,
#if NeedWidePrototypes
                        int confineTo,
#else
                        Boolean confineTo,
#endif /* NeedWidePrototypes */
                        XEvent *pev) ;
extern Widget XmTrackingLocate( 
                        Widget widget,
                        Cursor cursor,
#if NeedWidePrototypes
                        int confineTo) ;
#else
                        Boolean confineTo) ;
#endif /* NeedWidePrototypes */

/********    End Public Function Declarations    ********/

/********    Visual.c    ********/
typedef void (*XmColorProc) (XColor *bg_color, XColor *fg_color,
	XColor *sel_color, XColor *ts_color, XColor *bs_color);

/********    Public Function Declarations for Visual.c    ********/

extern XmColorProc XmSetColorCalculation( 
                        XmColorProc proc) ;
extern XmColorProc XmGetColorCalculation( void ) ;
extern void XmGetColors( 
                        Screen *screen,
                        Colormap color_map,
                        Pixel background,
                        Pixel *foreground_ret,
                        Pixel *top_shadow_ret,
                        Pixel *bottom_shadow_ret,
                        Pixel *select_ret) ;
extern void XmChangeColor(
                        Widget widget,
                        Pixel background) ;

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for XmString.c    ********/

extern XmString XmStringCreate( 
                        char *text,
                        XmStringCharSet charset) ;
extern XmString XmStringCreateSimple( 
                        char *text) ;
extern XmString XmStringCreateLocalized( 
                        String text) ;
extern XmString XmStringDirectionCreate( 
#if NeedWidePrototypes
                        int direction) ;
#else
                        XmStringDirection direction) ;
#endif /* NeedWidePrototypes */
extern XmString XmStringSeparatorCreate( void ) ;
extern XmString XmStringSegmentCreate( 
                        char *text,
                        XmStringCharSet charset,
#if NeedWidePrototypes
                        int direction,
                        int separator) ;
#else
                        XmStringDirection direction,
                        Boolean separator) ;
#endif /* NeedWidePrototypes */
extern XmString XmStringLtoRCreate( 
                        char *text,
                        XmStringCharSet charset) ;
extern XmString XmStringCreateLtoR( 
                        char *text,
                        XmStringCharSet charset) ;
extern Boolean XmStringInitContext( 
                        XmStringContext *context,
                        XmString string) ;
extern void XmStringFreeContext( 
                        XmStringContext context) ;
extern XmStringComponentType XmStringGetNextComponent( 
                        XmStringContext context,
                        char **text,
                        XmStringCharSet *charset,
                        XmStringDirection *direction,
                        XmStringComponentType *unknown_tag,
                        unsigned short *unknown_length,
                        unsigned char **unknown_value) ;
extern XmStringComponentType XmStringPeekNextComponent( 
                        XmStringContext context) ;
extern Boolean XmStringGetNextSegment( 
                        XmStringContext context,
                        char **text,
                        XmStringCharSet *charset,
                        XmStringDirection *direction,
                        Boolean *separator) ;
extern Boolean XmStringGetLtoR( 
                        XmString string,
                        XmStringCharSet charset,
                        char **text) ;
extern XmFontListEntry XmFontListEntryCreate( 
                        char *tag,
                        XmFontType type,
                        XtPointer font) ;
extern XmFontListEntry XmFontListEntryCreate_r(
                        char *tag,
                        XmFontType type,
                        XtPointer font,
                        Widget wid) ;
extern void XmFontListEntryFree( 
                        XmFontListEntry *entry) ;
extern XtPointer XmFontListEntryGetFont( 
                        XmFontListEntry entry,
                        XmFontType *typeReturn) ;
extern char * XmFontListEntryGetTag( 
                        XmFontListEntry entry) ;
extern XmFontList XmFontListAppendEntry( 
                        XmFontList old,
                        XmFontListEntry entry) ;
extern XmFontListEntry XmFontListNextEntry( 
                        XmFontContext context) ;
extern XmFontList XmFontListRemoveEntry( 
                        XmFontList old,
                        XmFontListEntry entry) ;
extern XmFontListEntry XmFontListEntryLoad( 
                        Display *display,
                        char *fontName,
                        XmFontType type,
                        char *tag) ;
extern XmFontList XmFontListCreate( 
                        XFontStruct *font,
                        XmStringCharSet charset) ;
extern XmFontList XmFontListCreate_r(
                        XFontStruct *font,
                        XmStringCharSet charset,
                        Widget wid) ;
extern XmFontList XmStringCreateFontList( 
                        XFontStruct *font,
                        XmStringCharSet charset) ;
extern XmFontList XmStringCreateFontList_r(
                        XFontStruct *font,
                        XmStringCharSet charset,
                        Widget wid) ;
extern void XmFontListFree( 
                        XmFontList fontlist) ;
extern XmFontList XmFontListAdd( 
                        XmFontList old,
                        XFontStruct *font,
                        XmStringCharSet charset) ;
extern XmFontList XmFontListCopy( 
                        XmFontList fontlist) ;
extern Boolean XmFontListInitFontContext( 
                        XmFontContext *context,
                        XmFontList fontlist) ;
extern Boolean XmFontListGetNextFont( 
                        XmFontContext context,
                        XmStringCharSet *charset,
                        XFontStruct **font) ;
extern void XmFontListFreeFontContext( 
                        XmFontContext context) ;
extern XmString XmStringConcat( 
                        XmString a,
                        XmString b) ;
extern XmString XmStringConcatAndFree(
			XmString a, 
			XmString b) ;
extern XmString XmStringNConcat( 
                        XmString first,
                        XmString second,
                        int n) ;
extern XmString XmStringCopy( 
                        XmString string) ;
extern XmString XmStringNCopy( 
                        XmString str,
                        int n) ;
extern Boolean XmStringByteCompare( 
                        XmString a1,
                        XmString b1) ;
extern Boolean XmStringCompare( 
                        XmString a,
                        XmString b) ;
extern int XmStringLength( 
                        XmString string) ;
extern Boolean XmStringEmpty( 
                        XmString string) ;
extern Boolean XmStringIsVoid(XmString string); 
extern Boolean XmStringHasSubstring( 
                        XmString string,
                        XmString substring) ;
extern void XmStringFree( 
                        XmString string) ;
extern Dimension XmStringBaseline( 
                        XmFontList fontlist,
                        XmString string) ;
extern Dimension XmStringWidth( 
                        XmFontList fontlist,
                        XmString string) ;
extern Dimension XmStringHeight( 
                        XmFontList fontlist,
                        XmString string) ;
extern void XmStringExtent( 
                        XmFontList fontlist,
                        XmString string,
                        Dimension *width,
                        Dimension *height) ;
extern int XmStringLineCount( 
                        XmString string) ;
extern void XmStringDraw( 
                        Display *d,
                        Window w,
                        XmFontList fontlist,
                        XmString string,
                        GC gc,
#if NeedWidePrototypes
                        int x,
                        int y,
                        int width,
                        unsigned int align,
                        unsigned int lay_dir,
#else
                        Position x,
                        Position y,
                        Dimension width,
                        unsigned char align,
                        unsigned char lay_dir,
#endif /* NeedWidePrototypes */
                        XRectangle *clip) ;
extern void XmStringDrawImage( 
                        Display *d,
                        Window w,
                        XmFontList fontlist,
                        XmString string,
                        GC gc,
#if NeedWidePrototypes
                        int x,
                        int y,
                        int width,
                        unsigned int align,
                        unsigned int lay_dir,
#else
                        Position x,
                        Position y,
                        Dimension width,
                        unsigned char align,
                        unsigned char lay_dir,
#endif /* NeedWidePrototypes */
                        XRectangle *clip) ;
extern void XmStringDrawUnderline( 
                        Display *d,
                        Window w,
                        XmFontList fntlst,
                        XmString str,
                        GC gc,
#if NeedWidePrototypes
                        int x,
                        int y,
                        int width,
                        unsigned int align,
                        unsigned int lay_dir,
#else
                        Position x,
                        Position y,
                        Dimension width,
                        unsigned char align,
                        unsigned char lay_dir,
#endif /* NeedWidePrototypes */
                        XRectangle *clip,
                        XmString under) ;
extern unsigned int XmCvtXmStringToByteStream(
			XmString string,
        	        unsigned char **prop_return);
extern XmString XmCvtByteStreamToXmString(
        	        unsigned char *property);
extern unsigned int XmStringByteStreamLength(unsigned char *string);
extern XmStringComponentType XmStringPeekNextTriple(XmStringContext context);
extern XmStringComponentType XmStringGetNextTriple(XmStringContext context,
						   unsigned int *length,
						   XtPointer *value);
extern XmString XmStringComponentCreate(XmStringComponentType tag,
					unsigned int length,
					XtPointer value);
extern XtPointer XmStringUnparse(XmString string,
				 XmStringTag tag,
				 XmTextType tag_type,
				 XmTextType output_type,
				 XmParseTable parse_table,
				 Cardinal parse_count,
				 XmParseModel parse_model);
extern XmString XmStringParseText(XtPointer text,
				  XtPointer *text_end,
				  XmStringTag tag,
				  XmTextType type,
				  XmParseTable parse_table,
				  Cardinal parse_count,
				  XtPointer call_data);
extern Cardinal XmStringToXmStringTable(XmString string,
					XmString break_comp,
					XmStringTable *table);
extern XmString XmStringTableToXmString(XmStringTable table,
					Cardinal count,
					XmString break_component);
extern XtPointer *XmStringTableUnparse(XmStringTable table,
				       Cardinal count,
				       XmStringTag tag,
				       XmTextType tag_type,
				       XmTextType output_type,
				       XmParseTable parse,
				       Cardinal parse_count,
				       XmParseModel parse_model);
extern XmStringTable XmStringTableParseStringArray(XtPointer *strings,
						   Cardinal count,
						   XmStringTag tag,
						   XmTextType type,
						   XmParseTable parse,
						   Cardinal parse_count,
						   XtPointer call_data);

extern XmStringDirection XmDirectionToStringDirection(XmDirection dir);
extern XmDirection XmStringDirectionToDirection(XmStringDirection dir);

extern XmString XmStringGenerate(XtPointer   text,
				 XmStringTag tag,
				 XmTextType  type,
				 XmStringTag rendition);
extern XmString XmStringPutRendition(XmString string,
				     XmStringTag rendition); 

extern XmParseMapping XmParseMappingCreate(ArgList  arg_list,
					   Cardinal arg_count);
extern void XmParseMappingSetValues(XmParseMapping parse_mapping,
				    ArgList        arg_list,
				    Cardinal       arg_count);
extern void XmParseMappingGetValues(XmParseMapping parse_mapping,
				    ArgList        arg_list,
				    Cardinal       arg_count);
extern void XmParseMappingFree(XmParseMapping parse_mapping);
extern void XmParseTableFree(XmParseTable parse_table,
			     Cardinal     parse_count);

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for XmTabList.c    ********/

extern XmTabList 
  XmStringTableProposeTablist(XmStringTable strings, 
			      Cardinal num_strings,
			      Widget widget,
			      float pad_value,
			      XmOffsetModel offset_model);
extern void XmTabSetValue(XmTab xmtab, float value);
extern float 
  XmTabGetValues(XmTab xmtab, 
		 unsigned char *units, 
		 XmOffsetModel *offset, 
		 unsigned char *alignment, 
		 char **decimal);
extern void XmTabFree(XmTab xmtab);
extern XmTab XmTabCreate(float value, 
			 unsigned char units, 
			 XmOffsetModel offset_model, 
			 unsigned char alignment, 
			 char *decimal);
extern XmTabList 
  XmTabListRemoveTabs(XmTabList oldlist, 
		      Cardinal *position_list, 
		      Cardinal position_count);
extern XmTabList 
  XmTabListReplacePositions(XmTabList oldlist, 
			    Cardinal *position_list, 
			    XmTab *tabs, 
			    Cardinal tab_count);
extern XmTab XmTabListGetTab(XmTabList tablist, Cardinal position);
extern Cardinal XmTabListTabCount(XmTabList tablist);
extern XmTabList XmTabListCopy(XmTabList tablist, int offset, Cardinal count);
extern void XmTabListFree(XmTabList tablist);
extern XmTabList XmTabListInsertTabs(XmTabList oldlist,
				     XmTab *tabs, 
				     Cardinal tab_count, 
				     int position);
/********    End Public Function Declarations    ********/

/********    Public Function Declarations for XmRenderTable.c    ********/

extern XmRenderTable XmRenderTableCvtFromProp(Widget, char *prop, unsigned int len);
extern unsigned int XmRenderTableCvtToProp(Widget, XmRenderTable table, char **prop_return);
extern void XmRenditionUpdate(XmRendition rendition, ArgList arglist, Cardinal argcount);
extern void XmRenditionRetrieve(XmRendition rendition, 
				ArgList arglist,
				Cardinal argcount);
extern void XmRenditionFree(XmRendition rendition);
extern XmRendition XmRenditionCreate(Widget widget,
				     XmStringTag tag,
				     ArgList arglist,
				     Cardinal argcount);
extern XmRendition 
  *XmRenderTableGetRenditions(XmRenderTable table, 
			      XmStringTag *tags,
			      Cardinal tag_count);
extern XmRendition XmRenderTableGetRendition(XmRenderTable table,
					     XmStringTag tag);
extern int XmRenderTableGetTags(XmRenderTable table,
				XmStringTag **tag_list);
extern void XmRenderTableFree(XmRenderTable table);
extern XmRenderTable XmRenderTableCopy(XmRenderTable table,
				       XmStringTag *tags, 
				       int tag_count);
extern XmRenderTable 
  XmRenderTableRemoveRenditions(XmRenderTable oldtable,
				XmStringTag *tags, 
				int tag_count);
extern XmRenderTable 
  XmRenderTableAddRenditions(XmRenderTable oldtable, 
			     XmRendition *renditions, 
			     Cardinal rendition_count, 
			     XmMergeMode merge_mode);

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for Dest.c    ********/

extern Widget XmGetDestination( 
                        Display *display) ;

/********    End Public Function Declarations    ********/

/********    Public Function Declarations for Traversal.c    ********/

extern Boolean XmIsTraversable( 
                        Widget wid) ;
extern XmVisibility XmGetVisibility( 
                        Widget wid) ;
extern Widget XmGetTabGroup( 
                        Widget wid) ;
extern Widget XmGetFocusWidget( 
                        Widget wid) ;
extern Boolean XmProcessTraversal( 
                        Widget w,
                        XmTraversalDirection dir) ;
extern void XmAddTabGroup( 
                        Widget tabGroup) ;
extern void XmRemoveTabGroup( 
                        Widget w) ;

/********    End Public Function Declarations    ********/

/********        ********/

#ifdef __cplusplus
}  /* Close scope of 'extern "C"' declaration which encloses file. */
#endif

/*
 * The following includes are for source compatibility.  They might be
 *    removed at some future time.
 */
#include <Xm/VendorS.h>
#include <Xm/XmIm.h>

#define XmINDICATOR_3D_BOX		0x01
#define XmINDICATOR_FLAT_BOX		0x02
#define XmINDICATOR_CHECK_GLYPH		0x10
#define XmINDICATOR_CROSS_GLYPH		0x20

enum {
  XmINDICATOR_NONE      = 0, 
  XmINDICATOR_FILL      = 1,	/* Treated as _BOX or _CHECK_BOX */
  XmINDICATOR_BOX	= 255,	/* Treated as XmINDICATOR_3D_BOX */
  XmINDICATOR_CHECK     = XmINDICATOR_CHECK_GLYPH,
  XmINDICATOR_CHECK_BOX = XmINDICATOR_CHECK_GLYPH + XmINDICATOR_3D_BOX,
  XmINDICATOR_CROSS     = XmINDICATOR_CROSS_GLYPH,
  XmINDICATOR_CROSS_BOX = XmINDICATOR_CROSS_GLYPH + XmINDICATOR_3D_BOX
};

enum { XmUNSET, XmSET, XmINDETERMINATE };
enum { XmTOGGLE_BOOLEAN, XmTOGGLE_INDETERMINATE };
typedef unsigned char XmToggleButtonState;

/* Shared text enum. */
typedef enum { EditDone, EditError, EditReject } XmTextStatus;

/* XmDisplay.XmNdefaultButtonEmphasis enum */
enum { XmEXTERNAL_HIGHLIGHT, XmINTERNAL_HIGHLIGHT };

/* new for XmString */
#define _MOTIF_DEFAULT_LOCALE "_MOTIF_DEFAULT_LOCALE"

enum { XmPATH_MODE_FULL, XmPATH_MODE_RELATIVE };
enum { XmFILTER_NONE, XmFILTER_HIDDEN_FILES} ;
  
#endif /* _Xm_h */
 /* DON'T ADD STUFF AFTER THIS #endif */
