File: XimpData.h

package info (click to toggle)
ami 1.2.3-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 3,444 kB
  • ctags: 3,429
  • sloc: ansic: 27,145; sh: 8,668; makefile: 676; yacc: 316; sed: 16
file content (361 lines) | stat: -rw-r--r-- 9,226 bytes parent folder | download | duplicates (4)
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
/******************************************************************
 
         Copyright 1994, 1995 by Sun Microsystems, Inc.
         Copyright 1993, 1994 by Hewlett-Packard Company
 
Permission to use, copy, modify, distribute, and sell this software
and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and
that both that copyright notice and this permission notice appear
in supporting documentation, and that the name of Sun Microsystems, Inc.
and Hewlett-Packard not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior permission.
Sun Microsystems, Inc. and Hewlett-Packard make no representations about
the suitability of this software for any purpose.  It is provided "as is"
without express or implied warranty.
 
SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
  Author: Hiromu Inukai (inukai@Japan.Sun.COM) Sun Microsystems, Inc.
          Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc.
 
******************************************************************/

#ifndef _XIMPDATA_H_
#define _XIMPDATA_H_
#include <X11/Xlib.h>
#define XIMP_40
#include "XIMProto.h"
#include "IMdkit.h"

#define IS_VERSION_40(client) \
		(((XimpClient *)client)->proto_version == XIMP_VERSION_40)

/* XIMP Valid Attribute Name Definition */
#define XIMPVersion		"ximpVersion"
#define XIMPType		"ximpType"
#define XIMPServerVersion	"ximpServerVersion"
#define XIMPVendorName		"ximpVendorName"

#define	XIMPExtension		"ximpExtension"
#define	XIMPExtStatusWin	"ximpExtStatusWin"
#define	XIMPExtBackFront	"ximpExtBackFront"
#define	XIMPExtConversion	"ximpExtConversion"

#define XIMP_OPEN	0
#define XIMP_SET	1
#define XIMP_GET	2
/*
 * Used in supporting extensions
 */
#define EXT_STATUS	(1L<<0)
#define EXT_BACKFRONT	(1L<<1)
#define EXT_CONV	(1L<<2)

/*
 * Active filters on focus window
 */
#define FLT_NONE	(0L)
#define FLT_KEYPRESS	(1L<<0)
#define FLT_KEYRELEASE	(1L<<1)
#define FLT_DESTROY	(1L<<2)

typedef enum {
    XIMP_VERSION_35,
    XIMP_VERSION_40
} XimpProtocolVersion;

#define LONG_ENOUGH 250

typedef enum {
    RESET_NOTHING = 0,
    RESET_BY_CMSG,
    RESET_BY_PROP
} XimpResetFlag;

/*
 * Data interchange structures
 */

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
} XIMPAnyStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    CARD32	keycode;
    CARD32	state;
    CARD32	time;
} XIMPKeyEventStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    CARD32	input_style;
    CARD32	attr_mask;
    Ximp_PreeditPropRec4 *pre_values;
    Ximp_StatusPropRec4  *sts_values;
    char	*pre_font;
    char	*sts_font;
} XIMPICValuesStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    Window	new_client_win;
    long	new_fwin_mask;
} XIMPClientWindowStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    Window	new_focus_win;
    long	new_fwin_mask;
} XIMPFocusWindowStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    INT32	x;
    INT32	y;
} XIMPMoveStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    long	new_fwin_sel_mask;
} XIMPEventMaskNotifyStruct;

typedef struct {
    INT32 operation;
    INT32 mode;
} XimpExtConv;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    long	ext_type;
    union {
	unsigned long back_front; /* for _XIMP_EXT_BACK_FRONT */
	XimpExtConv conversion;	/* for _XIMP_EXT_CONVERSION */
    } todo;
} XIMPExtensionStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    Atom	stored;
} XIMPReadPropStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    char	*ctext;
} XIMPResetStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    char	*ctext;
} XIMPCommitStringStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    INT32	err_req;
    INT32	err_detail;
    INT32	extended;
} XIMPErrorStruct;

/* Callbacks */
typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    union {
	int return_value;			/* PreeditStart */
	XIMPreeditDrawCallbackStruct draw;	/* PreeditDraw */
	XIMPreeditCaretCallbackStruct caret; 	/* PreeditCaret */
    } todo;
} XIMPPreeditCBStruct;

typedef struct {
    INT32	type;
    CARD32	icid;
    Window	focus_win;
    long	fwin_sel_mask;
    CARD32	ximp_type_mask;
    Window	client_win;
    union {
	XIMStatusDrawCallbackStruct draw;	/* StatusDraw */
    } todo;
} XIMPStatusCBStruct;

typedef union _IMPProtocol {
    int				type;
    XIMPAnyStruct		any;
    XIMPKeyEventStruct		keyevent;
    XIMPICValuesStruct		create;
    XIMPICValuesStruct		setvalue;
    XIMPICValuesStruct		getvalue;
    XIMPAnyStruct		destroy;
    XIMPAnyStruct		regkey;
    XIMPAnyStruct		setfocus;
    XIMPAnyStruct		unsetfocus;
    XIMPClientWindowStruct	clientwin;
    XIMPFocusWindowStruct	focuswin;
    XIMPMoveStruct		move;
    XIMPEventMaskNotifyStruct	evmasknotify;
    XIMPExtensionStruct		extension;
    XIMPReadPropStruct		readprop;
    XIMPResetStruct		reset;
    XIMPCommitStringStruct	commitstring;
    XIMPErrorStruct		error;
    XIMPAnyStruct		geometry_cb;
    XIMPPreeditCBStruct		preedit_cb;
    XIMPStatusCBStruct		status_cb;
    long			pad[24];
} IMPProtocol;

typedef int (*IMProtoHandler)(
#if NeedFunctionPrototypes
    XIMS, IMPProtocol*
#endif
			      );

typedef struct _XimpClient {
    CARD32 id;		/* client ID */
    Window focus_window;
    Window client_window;
    long ev_flow_type;		/* event flow type */
    XimpProtocolVersion proto_version;	/* protocol version: 3.5 or 4.0 */
    Bool is_conv_on;	/* holds current conversion state */
    long ev_masks;	/* holds client's interest masks */
    CARD32 og_code;	/* holds keycode to keep matching */
    CARD32 og_state;	/* holds keystate to keep matching */
    long filters;
    struct _XimpClient *next;
} XimpClient;

typedef struct _XIMPTypeRec {
    int	num_of_types;
    unsigned long *types;
} XIMPTypeRec;

typedef struct _XIMPAtoms {
    Atom selection_owner;
    Atom selection_owner2;
    Atom ctext_type;
    Atom version;
    Atom supported_styles;
    Atom supported_types;
    Atom server_name;
    Atom server_version;
    Atom vendor_name;
    Atom keys;
    Atom sproc_started_keys;
    Atom sproc_stopped_keys;
    Atom focus;
    Atom preedit;
    Atom status;
    Atom preedit_font;
    Atom status_font;
    /* for XIMP_EXTENSION */
    Atom extensions;
    Atom ext_statuswin;
    Atom ext_backfront;
    Atom ext_conversion;
    /* for Callbacks */
    Atom preedit_draw_data;
    Atom feedbacks;
} XIMPAtoms;

/* XimpCoreRec structure */
typedef struct _XIMPCoreRec {
    Display	*display;
    int		screen;
    Atom	ximp_request;	/* Ximp message type */
    /* common IM Values */
    long	imvalue_mask;
    Window	im_window;	/* IMServerWindow */
    char	*im_name;	/* IMServerName */
    char	*im_locale;	/* IMLocale */
    XIMStyles	styles;		/* IMInputStyles */
    XIMTriggerKeys start_keys;	/* IMOnKeysList */
    XIMTriggerKeys stop_keys;	/* IMOffKeysList */
    IMProtoHandler improto;	/* IMProtoHandler */
    /* XIMProtocol Dependent IM Values */
    char	*ximp_version;	/* XIMPVersion */
    XIMPTypeRec	ximp_type;	/* XIMPType */
    char	*im_version;	/* XIMPServerVersion */
    char	*vendor;	/* XIMPVendorName */
    /* Atoms */
    XIMPAtoms   atoms;
    /* XIMPExtension */
    CARD32	ext_flag;	/* flag for supported_extensions */
    long	ext_backfront;	/* XIMPExtBackFront value */
    /* clients table */
    XimpClient *clients;
    XimpClient *free_clients;
} XIMPCoreRec, *XIMPCore;
#endif /* _XIMPDATA_H_ */