/* @(#)cursor.h 20.36 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_cursor_DEFINED #define xview_cursor_DEFINED /* *********************************************************************** * Include Files *********************************************************************** */ #include #include #include #include #include #ifdef __STDC__ #ifndef CAT #define CAT(a,b) a ## b #endif #endif #include #include /* *********************************************************************** * Definitions and Macros *********************************************************************** */ #define CURSOR &xv_cursor_pkg #define CURSOR_ATTR(type, ordinal) ATTR(ATTR_PKG_CURSOR, type, ordinal) /* * For Sunview 1 compatibility */ #define CURSOR_MAX_IMAGE_BYTES 32 /* max. # of image bytes */ #define CURSOR_MAX_IMAGE_WORDS 16 #define CUR_MAXIMAGEBYTES CURSOR_MAX_IMAGE_BYTES #define CUR_MAXIMAGEWORDS CURSOR_MAX_IMAGE_WORDS #define NOFONTCURSOR -1 /* * OPEN LOOK Cursor character definitions * * Those marked with "--" are not official OPEN LOOK cursors and should * not be used if possible. */ #define OLC_BASIC_PTR 0 /* pointer */ #define OLC_BASIC_MASK_PTR 1 #define OLC_MOVE_PTR 2 /* move */ #define OLC_MOVE_MASK_PTR 3 #define OLC_COPY_PTR 4 /* copy */ #define OLC_COPY_MASK_PTR 5 #define OLC_BUSY_PTR 6 /* busy */ #define OLC_BUSY_MASK_PTR 7 #define OLC_STOP_PTR 8 /* -- stop */ #define OLC_STOP_MASK_PTR 9 #define OLC_PANNING_PTR 10 /* pan */ #define OLC_PANNING_MASK_PTR 11 #define OLC_NAVIGATION_LEVEL_PTR 12 /* navigation */ #define OLC_NAVIGATION_LEVEL_MASK_PTR 13 /* * WARNING: The following glyphs are not in the MIT X11 R4 distribution. */ #define OLC_BLANK_14 14 /* -- blank at index 14 */ #define OLC_BLANK_15 15 /* -- blank at index 15 */ #define OLC_OTHER_PTR 16 /* -- another basic pointer */ #define OLC_OTHER_MASK_PTR 17 #define OLC_RESIZE 18 /* resize bullseye */ #define OLC_RESIZE_MASK 19 #define OLC_RIGHT_ARROW 20 /* -- right arrow */ #define OLC_RIGHT_ARROW_MASK 21 #define OLC_PLUS 22 /* -- plus sign */ #define OLC_PLUS_MASK 23 #define OLC_MULTIPLY 24 /* -- multiply sign */ #define OLC_MULTIPLY_MASK 25 #define OLC_HOURGLASS 26 /* -- hourglass */ #define OLC_HOURGLASS_MASK 27 #define OLC_DOC 28 /* doc = document */ #define OLC_DOC_MASK 29 #define OLC_DOCS 30 /* docs = document stack */ #define OLC_DOCS_MASK 31 #define OLC_DROP 32 /* drop = drop target */ #define OLC_DROP_MASK 33 #define OLC_DROP_STEM 34 /* drop with stem */ #define OLC_DROP_STEM_MASK 35 #define OLC_COPY 36 /* pointer + copy */ #define OLC_COPY_MASK 37 #define OLC_COPY_EDGE 38 /* copy = copy edge */ #define OLC_COPY_EDGE_MASK 39 #define OLC_DOC_COPY 40 /* doc + copy */ #define OLC_DOC_COPY_MASK 41 #define OLC_DOC_COPY_DRAG 42 /* doc + copy + pointer */ #define OLC_DOC_COPY_DRAG_MASK 43 #define OLC_DOC_COPY_DROP 44 /* doc + copy + drop */ #define OLC_DOC_COPY_DROP_MASK 45 #define OLC_DOC_COPY_NODROP 46 /* doc + copy + nodrop */ #define OLC_DOC_COPY_NODROP_MASK 47 #define OLC_DOCS_COPY 48 /* docs + copy */ #define OLC_DOCS_COPY_MASK 49 #define OLC_DOCS_COPY_DRAG 50 /* docs + copy + pointer */ #define OLC_DOCS_COPY_DRAG_MASK 51 #define OLC_DOCS_COPY_DROP 52 /* docs + copy + drop */ #define OLC_DOCS_COPY_DROP_MASK 53 #define OLC_DOCS_COPY_NODROP 54 /* docs + copy + nodrop */ #define OLC_DOCS_COPY_NODROP_MASK 55 #define OLC_MOVE 56 /* pointer + move */ #define OLC_MOVE_MASK 57 #define OLC_MOVE_EDGE 58 /* move = move edge */ #define OLC_MOVE_EDGE_MASK 59 #define OLC_DOC_MOVE 60 /* doc + move */ #define OLC_DOC_MOVE_MASK 61 #define OLC_DOC_MOVE_DRAG 62 /* doc + move + pointer */ #define OLC_DOC_MOVE_DRAG_MASK 63 #define OLC_DOC_MOVE_DROP 64 /* doc + move + drop */ #define OLC_DOC_MOVE_DROP_MASK 65 #define OLC_DOC_MOVE_NODROP 66 /* doc + move + nodrop */ #define OLC_DOC_MOVE_NODROP_MASK 67 #define OLC_DOCS_MOVE 68 /* docs + move */ #define OLC_DOCS_MOVE_MASK 69 #define OLC_DOCS_MOVE_DRAG 70 /* docs + move + pointer */ #define OLC_DOCS_MOVE_DRAG_MASK 71 #define OLC_DOCS_MOVE_DROP 72 /* docs + move + drop */ #define OLC_DOCS_MOVE_DROP_MASK 73 #define OLC_DOCS_MOVE_NODROP 74 /* docs + move + nodrop */ #define OLC_DOCS_MOVE_NODROP_MASK 75 #define OLC_NODROP 76 /* nodrop */ #define OLC_NODROP_MASK 77 #define OLC_NODROP_STEM 78 /* nodrop with stem */ #define OLC_NODROP_STEM_MASK 79 #define OLC_TEXT_COPY 80 /* text copy */ #define OLC_TEXT_COPY_MASK 81 #define OLC_TEXT_COPY_DRAG 82 /* text copy + pointer */ #define OLC_TEXT_COPY_MOVE_MASK 83 #define OLC_TEXT_COPY_DROP 84 /* text copy + drop */ #define OLC_TEXT_COPY_DROP_MASK 85 #define OLC_TEXT_COPY_NODROP 86 /* text copy + nodrop */ #define OLC_TEXT_COPY_NODROP_MASK 87 #define OLC_TEXT_MOVE 88 /* text move */ #define OLC_TEXT_MOVE_MASK 89 #define OLC_TEXT_MOVE_DRAG 90 /* text move + pointer */ #define OLC_TEXT_MOVE_MOVE_MASK 91 #define OLC_TEXT_MOVE_DROP 92 /* text move + drop */ #define OLC_TEXT_MOVE_DROP_MASK 93 #define OLC_TEXT_MOVE_NODROP 94 /* text move + nodrop */ #define OLC_TEXT_MOVE_NODROP_MASK 95 #define OLC_TEXT_COPY_INSERT 96 /* text copy + insert */ #define OLC_TEXT_COPY_INSERT_MASK 97 #define OLC_TEXT_MOVE_INSERT 98 /* text move + insert */ #define OLC_TEXT_MOVE_INSERT_MASK 99 #define OLC_DATA_COPY_DROP 100 /* data copy + drop */ #define OLC_DATA_COPY_DROP_MASK 101 #define OLC_DATA_COPY_INSERT 102 /* data copy + insert */ #define OLC_DATA_COPY_INSERT_MASK 103 #define OLC_DATA_COPY_NODROP 104 /* data copy + nodrop */ #define OLC_DATA_COPY_NODROP_MASK 105 #define OLC_DATA_MOVE_DROP 106 /* data move + drop */ #define OLC_DATA_MOVE_DROP_MASK 107 #define OLC_DATA_MOVE_INSERT 108 /* data move + insert */ #define OLC_DATA_MOVE_INSERT_MASK 109 #define OLC_DATA_MOVE_NODROP 110 /* data move + nodrop */ #define OLC_DATA_MOVE_NODROP_MASK 111 #define OLC_INSERT 112 /* insert = insert target */ #define OLC_INSERT_MASK 113 #define OLC_INSERT_STEM 114 /* insert with stem */ #define OLC_INSERT_STEM_MASK 115 #define OLC_DATA_MOVE 116 /* data move */ #define OLC_DATA_MOVE_MASK 117 #define OLC_DATA_COPY 118 /* data copy */ #define OLC_DATA_COPY_MASK 119 #define OLC_TEXT_POINTER 120 /* text/data pointer */ #define OLC_TEXT_POINTER_MASK 121 #define OLC_FOLDER 122 /* folder */ #define OLC_FOLDER_MASK 123 #define OLC_FOLDERS 124 /* folders= folder stack */ #define OLC_FOLDERS_MASK 125 #define OLC_BLANK_126 126 /* -- blank at index 126 */ #define OLC_BLANK_127 127 /* -- blank at index 127 */ /* *********************************************************************** * Typedefs, enumerations, and structs *********************************************************************** */ typedef Xv_opaque Xv_Cursor; typedef Xv_opaque Xv_cursor; typedef enum { CURSOR_NEUTRAL = 0, CURSOR_ACCEPT = 1, CURSOR_REJECT = 2 } Cursor_drag_state; typedef enum { CURSOR_MOVE = 0, CURSOR_DUPLICATE = 1 } Cursor_drag_type; typedef enum { /* * Public Attributes */ CURSOR_BACKGROUND_COLOR = CURSOR_ATTR(ATTR_SINGLE_COLOR_PTR, 27), CURSOR_DRAG_STATE = CURSOR_ATTR(ATTR_ENUM, 2), CURSOR_DRAG_TYPE = CURSOR_ATTR(ATTR_ENUM, 3), CURSOR_FOREGROUND_COLOR = CURSOR_ATTR(ATTR_SINGLE_COLOR_PTR, 26), CURSOR_IMAGE = CURSOR_ATTR(ATTR_PIXRECT_PTR, 1), CURSOR_MASK_CHAR = CURSOR_ATTR(ATTR_INT, 5), CURSOR_OP = CURSOR_ATTR(ATTR_INT, 10), CURSOR_SRC_CHAR = CURSOR_ATTR(ATTR_INT, 15), CURSOR_STRING = CURSOR_ATTR(ATTR_STRING, 16), #ifdef OW_I18N CURSOR_STRING_WCS = CURSOR_ATTR(ATTR_WSTRING, 17), #endif CURSOR_XHOT = CURSOR_ATTR(ATTR_INT, 20), CURSOR_YHOT = CURSOR_ATTR(ATTR_INT, 25), /* * OPEN LOOK cursors. Used as index to XV_KEY_DATA on server. */ CURSOR_BASIC_PTR = CURSOR_ATTR(ATTR_OPAQUE, 30), CURSOR_MOVE_PTR = CURSOR_ATTR(ATTR_OPAQUE, 35), CURSOR_COPY_PTR = CURSOR_ATTR(ATTR_OPAQUE, 40), CURSOR_BUSY_PTR = CURSOR_ATTR(ATTR_OPAQUE, 45), CURSOR_PANNING_PTR = CURSOR_ATTR(ATTR_OPAQUE, 50), CURSOR_NAVIGATION_LEVEL_PTR = CURSOR_ATTR(ATTR_OPAQUE, 55), CURSOR_STOP_PTR = CURSOR_ATTR(ATTR_OPAQUE, 60), CURSOR_QUESTION_MARK_PTR = CURSOR_ATTR(ATTR_OPAQUE, 65) } Cursor_attribute; #define CURSOR_SHOW_CURSOR XV_SHOW typedef struct { Xv_generic_struct parent_data; Xv_opaque private_data; } Xv_cursor_struct; /* *********************************************************************** * Globals *********************************************************************** */ extern Xv_pkg xv_cursor_pkg; /* * Public Functions */ EXTERN_FUNCTION (void cursor_set_cursor, (Xv_object window, Xv_Cursor cursor)); /* * For Sunview 1 compatibility */ EXTERN_FUNCTION (Xv_Cursor cursor_create, (Attr_attribute attr1, DOTDOTDOT)); EXTERN_FUNCTION (void cursor_destroy, (Xv_Cursor cursor)); EXTERN_FUNCTION (Xv_Cursor cursor_copy, (Xv_Cursor cursor)); EXTERN_FUNCTION (Xv_opaque cursor_get, (Xv_Cursor cursor, Cursor_attribute attr)); EXTERN_FUNCTION (int cursor_set, (Xv_Cursor cursor, DOTDOTDOT)); #endif /* xview_cursor_DEFINED */