/*      @(#)server.h 20.61 93/06/28 SMI      */

/*
 *  (c) Copyright 1989 Sun Microsystems, Inc. Sun design patents
 *  pending in the U.S. and foreign countries. See LEGAL_NOTICE
 *  file for terms of the license.
 */

#ifndef xview_server_DEFINED
#define xview_server_DEFINED

/*
 ***********************************************************************
 *          Include Files
 ***********************************************************************
 */

#include <xview/generic.h>

/*
 ***********************************************************************
 *          Definitions and Macros
 ***********************************************************************
 */

/*
 * PUBLIC #defines
 */

#ifndef XV_ATTRIBUTES_ONLY
#define SERVER              &xv_server_pkg
#endif /* ~XV_ATTRIBUTES_ONLY */

/*
 * PRIVATE #defines
 */

#define RECT_STRUCT_SIZE        4
#define SERVER_ATTR(type, ordinal)  ATTR(ATTR_PKG_SERVER, type, ordinal)

/*
 ***********************************************************************
 *      Typedefs, Enumerations, and Structures
 ***********************************************************************
 */

typedef enum kbd_cmds_values
{
    KBD_CMDS_SUNVIEW1 = 0,
    KBD_CMDS_BASIC = 1,
    KBD_CMDS_FULL = 2
} Kbd_cmds_value;

#ifndef XV_ATTRIBUTES_ONLY

typedef Xv_opaque   Xv_Server;
typedef Xv_opaque   Xv_server;

typedef struct
{
    Xv_generic_struct   parent;
    Xv_opaque       private_data;
} Xv_server_struct;

#endif /* ~XV_ATTRIBUTES_ONLY */

typedef enum
{
    /* Public attributes */
    SERVER_ATOM         = SERVER_ATTR(ATTR_LONG,    108),
    SERVER_ATOM_NAME        = SERVER_ATTR(ATTR_OPAQUE,  109),
    SERVER_ATOM_DATA        = SERVER_ATTR(ATTR_OPAQUE,  113),
    SERVER_CHORDING_TIMEOUT     = SERVER_ATTR(ATTR_INT,     242),
    SERVER_CHORD_MENU       = SERVER_ATTR(ATTR_INT,     244),
    SERVER_EXTENSION_PROC       = SERVER_ATTR(ATTR_FUNCTION_PTR, 4),
    SERVER_NTH_SCREEN       = SERVER_ATTR(ATTR_INT_PAIR,     2),
    SERVER_RESOURCE_DB              = SERVER_ATTR(ATTR_OPAQUE,      246),
    SERVER_SYNC         = SERVER_ATTR(ATTR_BOOLEAN, 32),
    SERVER_SYNC_AND_PROCESS_EVENTS  = SERVER_ATTR(ATTR_NO_VALUE,    33),
    SERVER_EXTERNAL_XEVENT_PROC     = SERVER_ATTR(ATTR_OPAQUE_PAIR, 20),
    SERVER_EXTERNAL_XEVENT_MASK     = SERVER_ATTR(ATTR_OPAQUE_TRIPLE, 22),

    /* Private attributes */
    SERVER_ASCII_KEYSTATE       = SERVER_ATTR(ATTR_OPAQUE,   7),
    SERVER_ASCII_MAP        = SERVER_ATTR(ATTR_OPAQUE,  12),
    SERVER_ASCII_TO_KEYCODE_MAP = SERVER_ATTR(ATTR_OPAQUE,   6),
    SERVER_CUT_KEYSYM       = SERVER_ATTR(ATTR_INT,     10),
    SERVER_FONT_WITH_NAME       = SERVER_ATTR(ATTR_STRING,   11),
    SERVER_JOURNAL_SYNC_EVENT   = SERVER_ATTR(ATTR_INT,     38),
    SERVER_JOURNALLING      = SERVER_ATTR(ATTR_BOOLEAN, 36),
    SERVER_KEY_EVENTS_MAP       = SERVER_ATTR(ATTR_OPAQUE,   5),
    SERVER_NONASCII_KEYSTATE    = SERVER_ATTR(ATTR_OPAQUE,   8),
    SERVER_PASTE_KEYSYM     = SERVER_ATTR(ATTR_INT,     16),
    SERVER_SEMANTIC_MAP     = SERVER_ATTR(ATTR_OPAQUE,  14),
    SERVER_XV_MAP           = SERVER_ATTR(ATTR_OPAQUE,  13),
    SERVER_COMPOSE_STATUS           = SERVER_ATTR(ATTR_OPAQUE,      15),
    SERVER_PRIVATE_XEVENT_PROC      = SERVER_ATTR(ATTR_OPAQUE_PAIR, 23),
    SERVER_PRIVATE_XEVENT_MASK      = SERVER_ATTR(ATTR_OPAQUE_TRIPLE, 24),
    SERVER_CLEAR_MODIFIERS      = SERVER_ATTR(ATTR_INT,     50),
    /* ACC_XVIEW */
    SERVER_ACCELERATOR_MAP      = SERVER_ATTR(ATTR_OPAQUE,  101),
    SERVER_ADD_ACCELERATOR_MAP  = SERVER_ATTR(ATTR_OPAQUE_PAIR, 104),
    SERVER_REMOVE_ACCELERATOR_MAP   = SERVER_ATTR(ATTR_OPAQUE_PAIR, 106),
    /* ACC_XVIEW */
    SERVER_DISPLAY_CONTEXT      = SERVER_ATTR(ATTR_INT,     111),
#ifdef OW_I18N
    SERVER_COMPOUND_TEXT            = SERVER_ATTR(ATTR_OPAQUE,  249),
#endif /* OW_I18N */

    /* Private attributes that may be deleted in future revisions */
    SERVER_WM_RESCALE       = SERVER_ATTR(ATTR_OPAQUE,  25),
    SERVER_WM_RESCALE_STATE     = SERVER_ATTR(ATTR_OPAQUE,  17),
    SERVER_WM_STATE         = SERVER_ATTR(ATTR_OPAQUE,  21),
    SERVER_WM_TAKE_FOCUS        = SERVER_ATTR(ATTR_OPAQUE,  30),
    SERVER_WM_WINDOW_MOVED      = SERVER_ATTR(ATTR_OPAQUE,  28),
    SERVER_WM_WIN_ATTR      = SERVER_ATTR(ATTR_OPAQUE,  34),
    SERVER_WM_ADD_DECOR     = SERVER_ATTR(ATTR_OPAQUE,  35),
    SERVER_WM_DELETE_DECOR      = SERVER_ATTR(ATTR_OPAQUE,  40),
    SERVER_WM_DECOR_CLOSE       = SERVER_ATTR(ATTR_OPAQUE,  45),
    SERVER_WM_DECOR_FOOTER      = SERVER_ATTR(ATTR_OPAQUE,  55),
    SERVER_WM_DECOR_RESIZE      = SERVER_ATTR(ATTR_OPAQUE,  60),
    SERVER_WM_DECOR_HEADER      = SERVER_ATTR(ATTR_OPAQUE,  65),
    SERVER_WM_DECOR_OK      = SERVER_ATTR(ATTR_OPAQUE,  70),
    SERVER_WM_DECOR_PIN     = SERVER_ATTR(ATTR_OPAQUE,  75),
    SERVER_WM_SCALE_SMALL       = SERVER_ATTR(ATTR_OPAQUE,  80),
    SERVER_WM_SCALE_MEDIUM      = SERVER_ATTR(ATTR_OPAQUE,  85),
    SERVER_WM_SCALE_LARGE       = SERVER_ATTR(ATTR_OPAQUE,  90),
    SERVER_WM_SCALE_XLARGE      = SERVER_ATTR(ATTR_OPAQUE,  95),
    SERVER_WM_PIN_STATE     = SERVER_ATTR(ATTR_OPAQUE,  100),
    SERVER_WM_WIN_BUSY      = SERVER_ATTR(ATTR_OPAQUE,  105),
    SERVER_DND_ACK_KEY      = SERVER_ATTR(ATTR_INT,     107),
    SERVER_WM_WINMSG_STATE      = SERVER_ATTR(ATTR_OPAQUE,  110),
    SERVER_WM_WINMSG_ERROR      = SERVER_ATTR(ATTR_OPAQUE,  115),
    SERVER_WM_WT_BASE       = SERVER_ATTR(ATTR_OPAQUE,  121),
    SERVER_WM_WT_CMD        = SERVER_ATTR(ATTR_OPAQUE,  125),
    SERVER_WM_WT_PROP       = SERVER_ATTR(ATTR_OPAQUE,  130),
    SERVER_WM_WT_HELP       = SERVER_ATTR(ATTR_OPAQUE,  135),
    SERVER_WM_WT_NOTICE     = SERVER_ATTR(ATTR_OPAQUE,  140),
    SERVER_WM_WT_OTHER      = SERVER_ATTR(ATTR_OPAQUE,  145),
    SERVER_WM_MENU_FULL     = SERVER_ATTR(ATTR_OPAQUE,  150),
    SERVER_WM_MENU_LIMITED      = SERVER_ATTR(ATTR_OPAQUE,  155),
    SERVER_WM_NONE          = SERVER_ATTR(ATTR_OPAQUE,  160),
    SERVER_WM_PIN_IN        = SERVER_ATTR(ATTR_OPAQUE,  165),
    SERVER_WM_PIN_OUT       = SERVER_ATTR(ATTR_OPAQUE,  170),
    SERVER_DO_DRAG_MOVE     = SERVER_ATTR(ATTR_OPAQUE,  120),
    SERVER_DO_DRAG_COPY     = SERVER_ATTR(ATTR_OPAQUE,  122),
    SERVER_DO_DRAG_LOAD     = SERVER_ATTR(ATTR_OPAQUE,  123),
    SERVER_JOURNAL_SYNC_ATOM    = SERVER_ATTR(ATTR_INT,     125),
    SERVER_WM_DISMISS       = SERVER_ATTR(ATTR_OPAQUE,  200),
    SERVER_WM_SAVE_YOURSELF     = SERVER_ATTR(ATTR_OPAQUE,  210),
    SERVER_WM_DEFAULT_BUTTON        = SERVER_ATTR(ATTR_OPAQUE,      220),
    SERVER_WM_PROTOCOLS     = SERVER_ATTR(ATTR_OPAQUE,  225),
    SERVER_WM_DELETE_WINDOW     = SERVER_ATTR(ATTR_OPAQUE,  230),
    SERVER_WM_COMMAND       = SERVER_ATTR(ATTR_OPAQUE,  235),
    SERVER_WM_CHANGE_STATE      = SERVER_ATTR(ATTR_OPAQUE,  240),
    SERVER_MOUSE_BUTTONS        = SERVER_ATTR(ATTR_SHORT,       250),
    SERVER_BUTTON2_MOD      = SERVER_ATTR(ATTR_INT,     252),
    SERVER_BUTTON3_MOD      = SERVER_ATTR(ATTR_INT,     254),
    SERVER_META_MOD_MASK        = SERVER_ATTR(ATTR_INT,       9),
    SERVER_ALT_MOD_MASK     = SERVER_ATTR(ATTR_INT,     248),
    SERVER_NUM_LOCK_MOD_MASK    = SERVER_ATTR(ATTR_INT,     247),
    SERVER_SEL_MOD_MASK     = SERVER_ATTR(ATTR_INT,     251),
    SERVER_FOCUS_TIMESTAMP      = SERVER_ATTR(ATTR_INT,     203)
} Server_attr;

/*
 ***********************************************************************
 *              Globals
 ***********************************************************************
 */

/*
 * PUBLIC variables
 */
extern Xv_Server    xv_default_server;

/*
 * PRIVATE variables
 */
#ifndef XV_ATTRIBUTES_ONLY
extern Xv_pkg       xv_server_pkg;
#endif /* ~XV_ATTRIBUTES_ONLY */

#endif /* ~xview_server_DEFINED */
