/usr/include/xview_private/ei.h is in xviewg-dev 3.2p1.4-28.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | /* @(#)ei.h 20.21 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 suntool_entity_interpreter_DEFINED
#define suntool_entity_interpreter_DEFINED
/*
* This defines the programmer interface to the entity interpreter abstraction.
*
* Each instance of an entity interpreter is expected to be paired with an
* instance of an entity stream.
*/
# ifndef pr_rop
#include <pixrect/pixrect.h>
# endif
# ifndef rect_right
#include <xview/rect.h>
# endif
# ifndef sunwindow_attr_DEFINED
#include <xview/attrol.h>
# endif
# ifndef suntool_entity_stream_DEFINED
#include <xview_private/es.h>
# endif
struct ei_object {
struct ei_ops *ops;
caddr_t data;
};
typedef struct ei_object *Ei_handle;
struct ei_process_result {
struct pr_pos pos; /* origin of next char */
struct rect bounds; /* boundary of ink */
unsigned long break_reason;
Es_index last_plus_one; /* 1st char not painted */
Es_index considered; /* last char considered for paint */
};
/*
* Flag bits returned in ei_process_result.break_reason.
* More than one bit may be on, thus break_reason acts as a mask of
* status bits rather than a single status.
*/
#define EI_PR_END_OF_STREAM 0x00000001
/* Forward scan exhausted the entity stream. */
#define EI_PR_BUF_EMPTIED 0x00000002
/* Forward scan exhausted the buffer or exceeded specified limit. */
#define EI_PR_NEWLINE 0x00000004
/* A character in the newline class was encountered. */
#define EI_PR_BUF_FULL 0x00000008
/* In ei_expand(), the output buffer filled up */
#define EI_PR_HIT_LEFT 0x00000010
#define EI_PR_HIT_TOP 0x00000020
#define EI_PR_HIT_RIGHT 0x00000040
#define EI_PR_HIT_BOTTOM 0x00000080
/*
* Above four reasons indicate attempt to paint ink in violation of
* the corresponding boundary of the bounds rectangle.
*/
#define EI_PR_NEXT_FREE 0x00000100
#define EI_PR_CLIENT_REASON(client_mask) \
( (unsigned long)(0x80000000|client_mask) )
/*
* Client code must test for client defined reasons (using == or !=) before
* applying bit tests (e.g., reason & EI_PR_NEWLINE) in order to avoid
* false matches (e.g., above test would match EI_PR_CLIENT_REASON(4)).
*/
#define EI_OP_CHAR 0x00000001
#define EI_OP_WORD 0x00000002
#define EI_OP_DARK_GRAY 0x00000010
#define EI_OP_LIGHT_GRAY 0x00000020
#define EI_OP_STRIKE_THRU 0x00000040
#define EI_OP_DOTS_UNDER 0x00000080
#define EI_OP_STRIKE_UNDER 0x00000100
#define EI_OP_INVERT 0x00000200
#define EI_OP_CLEAR_FRONT 0x01000000 /* default has caller clear */
#define EI_OP_CLEAR_INTERIOR 0x02000000 /* default has caller clear */
#define EI_OP_CLEAR_BACK 0x04000000 /* default has caller clear */
#define EI_OP_CLEARED_RECT 0x08000000 /* caller pre-cleared */
#define EI_OP_MEASURE 0x80000000 /* default is paint */
struct ei_span_result {
Es_index first;
Es_index last_plus_one;
unsigned flags;
};
#define EI_SPAN_NOT_IN_CLASS 0x00000001
#define EI_SPAN_RIGHT_HIT_NEXT_LEVEL 0x00000002
#define EI_SPAN_LEFT_HIT_NEXT_LEVEL 0x00000004
#define EI_SPAN_HIT_NEXT_LEVEL \
(EI_SPAN_RIGHT_HIT_NEXT_LEVEL|EI_SPAN_LEFT_HIT_NEXT_LEVEL)
struct ei_ops {
Ei_handle (*destroy)();
caddr_t (*get)();
int (*line_height)();
int (*lines_in_rect)();
struct ei_process_result (*process)();
int (*set)();
struct ei_span_result (*span_of_group)();
struct ei_process_result (*expand)();
};
#define EI_SPAN_INFO_MASK 0x0000000F
#define EI_SPAN_CLASS_MASK 0x000000F0
#define EI_SPAN_RIGHT_ONLY 0x00000001
#define EI_SPAN_LEFT_ONLY 0x00000002
#define EI_SPAN_IN_CLASS_ONLY 0x00000004
#define EI_SPAN_NOT_CLASS_ONLY 0x00000008
#define EI_SPAN_CHAR 0x00000010
#define EI_SPAN_MORPHENE 0x00000020
#define EI_SPAN_WORD 0x00000030
#define EI_SPAN_PATH_NAME 0x00000040
#define EI_SPAN_LINE 0x00000050
#define EI_SPAN_SENTENCE 0x00000060
#define EI_SPAN_PARAGRAPH 0x00000070
#define EI_SPAN_SECTION 0x00000080
#define EI_SPAN_CHAPTER 0x00000090
#define EI_SPAN_DOCUMENT 0x000000A0
#define EI_SPAN_SP_AND_TAB 0x000000B0
#define EI_SPAN_CLIENT1 0x000000C0
#define EI_SPAN_CLIENT2 0x000000D0
#define EI_SPAN_POINT 0x000000E0 /* laf */
/* Valid attributes for ei_get/set */
#define EI_ATTR(type, ordinal) ATTR(ATTR_PKG_ENTITY, type, ordinal)
#define EI_ATTR_LIST(ltype, type, ordinal) \
EI_ATTR(ATTR_LIST_INLINE((ltype), (type)), (ordinal))
typedef enum {
EI_CONTROL_CHARS_USE_FONT = EI_ATTR(ATTR_BOOLEAN, 10),
EI_FONT = EI_ATTR(ATTR_PIXFONT_PTR, 20),
#ifdef OW_I18N
EI_LOCALE_IS_ALE = EI_ATTR(ATTR_INT, 25),
#ifdef FULL_R5
EI_LINE_SPACE = EI_ATTR(ATTR_INT, 26),
#endif /* FULL_R5 */
#endif /* OW_I18N */
EI_SPANW = EI_ATTR(ATTR_OPAQUE, 30),
EI_SPAN1 = EI_ATTR(ATTR_OPAQUE, 40),
EI_SPAN2 = EI_ATTR(ATTR_OPAQUE, 50),
EI_TAB_WIDTH = EI_ATTR(ATTR_INT, 60),
EI_TAB_WIDTHS = EI_ATTR_LIST(ATTR_NULL, ATTR_INT, 70)
} Ei_attribute;
#define ei_destroy(eih) \
(*(eih)->ops->destroy)(eih)
#define ei_get(eih, attr) \
(*(eih)->ops->get)(eih, attr)
#define ei_line_height(eih) \
(*(eih)->ops->line_height)(eih)
#define ei_lines_in_rect(eih, rect) \
(*(eih)->ops->lines_in_rect)(eih, rect)
#define ei_process(eih, op, esbuf, x, y, rop, pw, rect, tab_origin) \
(*(eih)->ops->process)(eih, op, esbuf, x, y, rop, pw, rect, tab_origin)
#define ei_expand(eih, esbuf, rect, x, obuf, obuf_len, tab_origin) \
(*(eih)->ops->expand)(eih, esbuf, rect, x, obuf, obuf_len, tab_origin)
/* VARARGS */
EXTERN_FUNCTION( int ei_set, (Ei_handle eih, DOTDOTDOT));
#define ei_span_of_group(eih, esbuf, group_spec, index) \
(*(eih)->ops->span_of_group)(eih, esbuf, group_spec, index)
#endif
|