Mercurial > kinput2.yaz
comparison lib/imlib/im.h @ 0:92745d501b9a
initial import from kinput2-v3.1
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 08 Mar 2010 04:44:30 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:92745d501b9a |
---|---|
1 /* $Id: im.h,v 1.13 2002/01/27 11:33:06 ishisone Exp $ */ | |
2 /* | |
3 * Copyright (c) 1994 Software Research Associates, Inc. | |
4 * | |
5 * Permission to use, copy, modify, and distribute this software and its | |
6 * documentation for any purpose and without fee is hereby granted, provided | |
7 * that the above copyright notice appear in all copies and that both that | |
8 * copyright notice and this permission notice appear in supporting | |
9 * documentation, and that the name of Software Research Associates not be | |
10 * used in advertising or publicity pertaining to distribution of the | |
11 * software without specific, written prior permission. Software Research | |
12 * Associates makes no representations about the suitability of this software | |
13 * for any purpose. It is provided "as is" without express or implied | |
14 * warranty. | |
15 * | |
16 * Author: Makoto Ishisone, Software Research Associates, Inc., Japan | |
17 */ | |
18 | |
19 #ifndef _im_h | |
20 #define _im_h | |
21 | |
22 #include <stdio.h> | |
23 #include <X11/IntrinsicP.h> | |
24 #include <X11/StringDefs.h> | |
25 #include <X11/Xos.h> | |
26 #include <X11/Xfuncs.h> | |
27 | |
28 /* macros defined in the system header file cause problem... */ | |
29 #undef major | |
30 #undef minor | |
31 | |
32 #define EXT_DEBUG_VAR debug_IMProtocol | |
33 #include "DebugPrint.h" | |
34 #include "AsyncErr.h" | |
35 #include "FontBank.h" | |
36 #include "ConvCtrl.h" | |
37 | |
38 #include "imprtype.h" | |
39 #include "imbuf.h" | |
40 #include "imxport.h" | |
41 #include "imconst.h" | |
42 | |
43 /* | |
44 * Restrictions of attributes | |
45 */ | |
46 | |
47 #define MIN_LINE_SPACING 2 | |
48 #define MIN_AREA_WIDTH 16 | |
49 #define MIN_AREA_HEIGHT 10 | |
50 | |
51 /* | |
52 * IMDispatcher -- request dispatcher | |
53 */ | |
54 | |
55 typedef int (*IMDispatcher)(); | |
56 | |
57 | |
58 /* | |
59 * IMConnection | |
60 */ | |
61 | |
62 typedef struct _im_connection_ { | |
63 /* protocol information */ | |
64 int major_protocol_version; | |
65 int minor_protocol_version; | |
66 #ifdef XIM_BC | |
67 int has_length_bug; | |
68 #endif | |
69 int serial; /* connection serial # (for debug) */ | |
70 Widget proto_widget; /* protocol handler widget */ | |
71 | |
72 /* transport information */ | |
73 IMTransport transport; | |
74 | |
75 int byte_order; /* byte order of the client */ | |
76 #define ORDER_UNKNOWN 0 /* order is yet unknown */ | |
77 #define ORDER_BIG 1 /* big endian */ | |
78 #define ORDER_LITTLE 2 /* little endian */ | |
79 | |
80 /* communication buffer */ | |
81 IMBuffer in_buf; /* input buffer */ | |
82 IMBuffer out_buf; /* output buffer */ | |
83 #define IM_INBUF(conn) (&(conn)->in_buf) | |
84 #define IM_OUTBUF(conn) (&(conn)->out_buf) | |
85 | |
86 IMDispatcher dispatcher; /* request dispatch procedure */ | |
87 | |
88 struct _im_im_ *im_list; /* list of IMs on this connection */ | |
89 | |
90 #ifdef notyet | |
91 /* authentication information */ | |
92 IMAuth *server_auth; /* server authentication data */ | |
93 IMAuth *client_auth; /* client authentication data */ | |
94 #endif /* notyet */ | |
95 | |
96 /* scheduler */ | |
97 int schedule; /* type of operation to be performed */ | |
98 #define SCHED_WRITE 1 /* flush output buffer */ | |
99 #define SCHED_CLOSE 2 /* close down connection gently */ | |
100 #define SCHED_SHUTDOWN 4 /* force shut down */ | |
101 struct _im_connection_ *queue_next; /* output/close/shutdown queue */ | |
102 | |
103 struct _im_connection_ *next; | |
104 } IMConnection; | |
105 | |
106 | |
107 /* | |
108 * IMConverter -- information on the conversion engine | |
109 */ | |
110 typedef struct { | |
111 char **supported_locales; /* list of supported locales */ | |
112 int num_locales; | |
113 WidgetClass input_object_class; | |
114 WidgetClass display_object_class; | |
115 } IMConverter; | |
116 | |
117 | |
118 /* | |
119 * IMTriggerKey -- conversion trigger key specification | |
120 */ | |
121 typedef struct { | |
122 KeySym keysym; | |
123 long modifiers; | |
124 long check_modifiers; | |
125 } IMTriggerKey; | |
126 | |
127 | |
128 /* | |
129 * IMExtensionMask -- bit mask of enabled extensions | |
130 */ | |
131 typedef unsigned long IMExtensionMask; /* holds up to 32 extensions */ | |
132 | |
133 | |
134 /* | |
135 * IMIM -- per-IM structure | |
136 */ | |
137 | |
138 typedef struct _im_im_ { | |
139 unsigned int id; /* input-method ID */ | |
140 IMConnection *connection; /* connection this IM is on */ | |
141 struct _im_im_ *next; | |
142 struct _im_im_ *hash_next; /* for hash table */ | |
143 IMConverter *converter; /* conversion engine */ | |
144 IMExtensionMask mask; /* enabled extensions */ | |
145 struct _im_ic_ *ic_list; /* list of all ICs belonging to this IM */ | |
146 } IMIM; | |
147 | |
148 | |
149 /* | |
150 * IMAttributes and IMPSAttributes -- IC attributes structure | |
151 */ | |
152 | |
153 typedef struct { | |
154 unsigned long set_mask; /* shows attrs that have been set */ | |
155 unsigned long change_mask; /* shows attrs that have changed */ | |
156 #define ATTR_MASK_INPUT_STYLE (1<<0) | |
157 #define ATTR_MASK_CLIENT (1<<1) | |
158 #define ATTR_MASK_FOCUS (1<<2) | |
159 #define ATTR_MASK_PREEDIT_STATE (1<<3) | |
160 #define ATTR_MASK_RESET_STATE (1<<4) | |
161 XIMStyle input_style; | |
162 Window client; /* client window */ | |
163 Window focus; /* focus window */ | |
164 unsigned long preedit_state; | |
165 unsigned long reset_state; | |
166 } IMCommonAttributes; | |
167 | |
168 typedef struct { | |
169 unsigned long set_mask; /* shows attrs that have been set */ | |
170 unsigned long change_mask; /* shows attrs that have changed */ | |
171 #define ATTR_MASK_AREA (1<<0) | |
172 #define ATTR_MASK_FOREGROUND (1<<1) | |
173 #define ATTR_MASK_BACKGROUND (1<<2) | |
174 #define ATTR_MASK_COLORMAP (1<<3) | |
175 #define ATTR_MASK_STD_COLORMAP (1<<4) | |
176 #define ATTR_MASK_BG_PIXMAP (1<<5) | |
177 #define ATTR_MASK_LINESPACE (1<<6) | |
178 #define ATTR_MASK_CURSOR (1<<7) | |
179 #define ATTR_MASK_AREA_NEEDED (1<<8) | |
180 #define ATTR_MASK_FONT_SET (1<<9) | |
181 #define ATTR_MASK_SPOT_LOCATION (1<<10) | |
182 XRectangle area; | |
183 Pixel foreground, background; | |
184 Colormap colormap; | |
185 Atom std_colormap; | |
186 Pixmap bg_pixmap; | |
187 Position line_space; | |
188 Cursor cursor; | |
189 XRectangle area_needed; /* width/height member are unused */ | |
190 String font_set; | |
191 XPoint spot_location; /* not used by status attr. */ | |
192 } IMPSAttributes; | |
193 | |
194 | |
195 /* | |
196 * IMPendingEvent -- record of delayed processing event | |
197 */ | |
198 | |
199 typedef struct _im_pending_event_ { | |
200 struct _im_ic_ *ic; | |
201 int synchronous; | |
202 XEvent event; | |
203 struct _im_pending_event_ *next; | |
204 } IMPendingEvent; | |
205 | |
206 | |
207 /* | |
208 * IMWindowProfile -- information about window | |
209 */ | |
210 | |
211 typedef struct { | |
212 Dimension width; | |
213 Dimension height; | |
214 Window root; | |
215 } IMWindowProfile; | |
216 | |
217 | |
218 /* | |
219 * IMIC -- per-IC structure | |
220 */ | |
221 | |
222 typedef struct _im_ic_ { | |
223 unsigned int id; /* input-context ID */ | |
224 IMIM *im; /* IM this IC belongs to */ | |
225 Widget conversion; /* conversion widget attached | |
226 * to this IC */ | |
227 struct _im_ic_ *next; | |
228 struct _im_ic_ *hash_next; /* for hash list */ | |
229 int state; /* current IC state */ | |
230 #define IC_SYNCING 0x01 /* waiting for SYNC_REPLY message */ | |
231 #define IC_CONVERTING 0x02 /* in conversion mode */ | |
232 #define IC_RESETTING 0x04 /* in resetting */ | |
233 #define IC_FORWARDING 0x08 /* in forward event */ | |
234 #define IC_IN_PREEDIT 0x10 /* in preedit (on-the-spot only) */ | |
235 #define IC_IN_STATUS 0x20 /* in status (on-the-spot only) */ | |
236 #define IC_DESTROYING 0x40 /* in process of IC destruction */ | |
237 IMPendingEvent *pending_events; /* pending events */ | |
238 int style; /* input style */ | |
239 #define IMSTYLE_SEPARATE 0 /* root window style */ | |
240 #define IMSTYLE_OVER_THE_SPOT 1 /* over-the-spot style */ | |
241 #define IMSTYLE_OFF_THE_SPOT 2 /* off-the-spot style */ | |
242 #define IMSTYLE_ON_THE_SPOT 3 /* on-the-spot style */ | |
243 IMCommonAttributes common_attr; /* general attributes */ | |
244 IMPSAttributes preedit_attr; /* preedit specific attributes */ | |
245 IMPSAttributes status_attr; /* status specific attributes */ | |
246 IMWindowProfile client_profile; /* client widow profile */ | |
247 IMWindowProfile focus_profile; /* focus window profile */ | |
248 XFontStruct **fonts; | |
249 int num_fonts; | |
250 XFontStruct **status_fonts; | |
251 int num_status_fonts; | |
252 } IMIC; | |
253 | |
254 | |
255 /* | |
256 * IM and IC hash table size | |
257 */ | |
258 | |
259 #define IM_HASH_SIZE 32 | |
260 #define IC_HASH_SIZE 128 | |
261 | |
262 | |
263 /* | |
264 * Public function declarations | |
265 */ | |
266 | |
267 #include "imfuncs.h" | |
268 | |
269 #endif /* _im_h */ |