Merge from mainline (gomp-merge-2005-02-26).
[official-gcc.git] / libjava / jni / gtk-peer / gtkpeer.h
blob02613c4e3c2a6cc33b026daa7f4fafdf84b79290
1 /* gtkpeer.h -- Some global variables and #defines
2 Copyright (C) 1998, 1999, 2004 Free Software Foundation, Inc.
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307 USA.
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
39 #include <gtk/gtk.h>
40 #include <stdio.h>
41 #include <stdlib.h>
42 #include <string.h>
43 #include <config.h>
44 #include "native_state.h"
46 #include <jni.h>
48 #define RC_FILE ".classpath-gtkrc"
49 #define JVM_SUN
51 #define JVM_JAPHAR
54 #ifndef __GTKPEER_H__
55 #define __GTKPEER_H__
57 #ifndef __GNUC__
58 #define __attribute__(x) /* nothing */
59 #endif
61 #ifdef JVM_SUN
63 extern struct state_table *native_state_table;
64 extern struct state_table *native_global_ref_table;
66 #define NSA_INIT(env, clazz) \
67 do {native_state_table = init_state_table (env, clazz); \
68 native_global_ref_table = init_state_table (env, clazz);} while (0)
70 #define NSA_GET_PTR(env, obj) \
71 get_state (env, obj, native_state_table)
73 #define NSA_SET_PTR(env, obj, ptr) \
74 set_state (env, obj, native_state_table, (void *)ptr)
76 #define NSA_DEL_PTR(env, obj) \
77 remove_state_slot (env, obj, native_state_table)
79 #define NSA_GET_GLOBAL_REF(env, obj) \
80 get_state (env, obj, native_global_ref_table)
82 #define NSA_SET_GLOBAL_REF(env, obj) \
83 do {jobject *globRefPtr; \
84 globRefPtr = (jobject *) malloc (sizeof (jobject)); \
85 *globRefPtr = (*env)->NewGlobalRef (env, obj); \
86 set_state (env, obj, native_global_ref_table, (void *)globRefPtr);} while (0)
88 #define NSA_DEL_GLOBAL_REF(env, obj) \
89 do {jobject *globRefPtr = get_state (env, obj, native_global_ref_table); \
90 remove_state_slot (env, obj, native_global_ref_table); \
91 (*env)->DeleteGlobalRef (env, *globRefPtr); \
92 free (globRefPtr);} while (0)
94 extern struct state_table *native_pixbufdecoder_state_table;
96 #define NSA_PB_INIT(env, clazz) \
97 native_pixbufdecoder_state_table = init_state_table (env, clazz)
99 #define NSA_GET_PB_PTR(env, obj) \
100 get_state (env, obj, native_pixbufdecoder_state_table)
102 #define NSA_SET_PB_PTR(env, obj, ptr) \
103 set_state (env, obj, native_pixbufdecoder_state_table, (void *)ptr)
105 #define NSA_DEL_PB_PTR(env, obj) \
106 remove_state_slot (env, obj, native_pixbufdecoder_state_table)
108 #endif /* JVM_SUN */
110 #define SWAPU32(w) \
111 (((w) << 24) | (((w) & 0xff00) << 8) | (((w) >> 8) & 0xff00) | ((w) >> 24))
113 struct graphics
115 GdkDrawable *drawable;
116 GdkGC *gc;
117 GdkColormap *cm;
118 PangoFontDescription *pango_font;
119 PangoContext *pango_context;
120 PangoLayout *pango_layout;
121 jint x_offset, y_offset;
124 #define AWT_DEFAULT_CURSOR 0
125 #define AWT_CROSSHAIR_CURSOR 1
126 #define AWT_TEXT_CURSOR 2
127 #define AWT_WAIT_CURSOR 3
128 #define AWT_SW_RESIZE_CURSOR 4
129 #define AWT_SE_RESIZE_CURSOR 5
130 #define AWT_NW_RESIZE_CURSOR 6
131 #define AWT_NE_RESIZE_CURSOR 7
132 #define AWT_N_RESIZE_CURSOR 8
133 #define AWT_S_RESIZE_CURSOR 9
134 #define AWT_W_RESIZE_CURSOR 10
135 #define AWT_E_RESIZE_CURSOR 11
136 #define AWT_HAND_CURSOR 12
137 #define AWT_MOVE_CURSOR 13
139 #define SYNTHETIC_EVENT_MASK (1 << 10)
141 #define AWT_SHIFT_DOWN_MASK (1 << 6)
142 #define AWT_CTRL_DOWN_MASK (1 << 7)
143 #define AWT_META_DOWN_MASK (1 << 8)
144 #define AWT_ALT_DOWN_MASK (1 << 9)
146 #define AWT_BUTTON1_DOWN_MASK (1 << 10)
147 #define AWT_BUTTON2_DOWN_MASK (1 << 11)
148 #define AWT_BUTTON3_DOWN_MASK (1 << 12)
150 #define AWT_BUTTON1_MASK (1 << 4)
151 #define AWT_BUTTON2_MASK (1 << 3)
152 #define AWT_BUTTON3_MASK (1 << 2)
154 #define MULTI_CLICK_TIME 250
155 /* as opposed to a MULTI_PASS_TIME :) */
157 #define AWT_MOUSE_CLICKED 500
158 #define AWT_MOUSE_PRESSED 501
159 #define AWT_MOUSE_RELEASED 502
160 #define AWT_MOUSE_MOVED 503
161 #define AWT_MOUSE_ENTERED 504
162 #define AWT_MOUSE_EXITED 505
163 #define AWT_MOUSE_DRAGGED 506
165 #define AWT_ADJUSTMENT_UNIT_INCREMENT 1
166 #define AWT_ADJUSTMENT_UNIT_DECREMENT 2
167 #define AWT_ADJUSTMENT_BLOCK_DECREMENT 3
168 #define AWT_ADJUSTMENT_BLOCK_INCREMENT 4
169 #define AWT_ADJUSTMENT_TRACK 5
171 #define AWT_SCROLLPANE_SCROLLBARS_AS_NEEDED 0
172 #define AWT_SCROLLPANE_SCROLLBARS_ALWAYS 1
173 #define AWT_SCROLLPANE_SCROLLBARS_NEVER 2
175 #define AWT_LABEL_LEFT 0
176 #define AWT_LABEL_CENTER 1
177 #define AWT_LABEL_RIGHT 2
179 #define AWT_TEXTAREA_SCROLLBARS_BOTH 0
180 #define AWT_TEXTAREA_SCROLLBARS_VERTICAL_ONLY 1
181 #define AWT_TEXTAREA_SCROLLBARS_HORIZONTAL_ONLY 2
183 #define AWT_ITEM_SELECTED 1
184 #define AWT_ITEM_DESELECTED 2
186 #define AWT_KEY_TYPED 400
187 #define AWT_KEY_PRESSED 401
188 #define AWT_KEY_RELEASED 402
190 #define AWT_KEY_CHAR_UNDEFINED 0
192 #define AWT_KEY_LOCATION_UNKNOWN 0
193 #define AWT_KEY_LOCATION_STANDARD 1
194 #define AWT_KEY_LOCATION_LEFT 2
195 #define AWT_KEY_LOCATION_RIGHT 3
196 #define AWT_KEY_LOCATION_NUMPAD 4
198 /* Virtual Keys */
199 /* This list should be kept in the same order as the VK_ field
200 declarations in KeyEvent.java. */
201 #define VK_ENTER '\n'
202 #define VK_BACK_SPACE '\b'
203 #define VK_TAB '\t'
204 #define VK_CANCEL 3
205 #define VK_CLEAR 12
206 #define VK_SHIFT 16
207 #define VK_CONTROL 17
208 #define VK_ALT 18
209 #define VK_PAUSE 19
210 #define VK_CAPS_LOCK 20
211 #define VK_ESCAPE 27
212 #define VK_SPACE ' '
213 #define VK_PAGE_UP 33
214 #define VK_PAGE_DOWN 34
215 #define VK_END 35
216 #define VK_HOME 36
217 #define VK_LEFT 37
218 #define VK_UP 38
219 #define VK_RIGHT 39
220 #define VK_DOWN 40
221 #define VK_COMMA ','
222 #define VK_MINUS '-'
223 #define VK_PERIOD '.'
224 #define VK_SLASH '/'
225 #define VK_0 '0'
226 #define VK_1 '1'
227 #define VK_2 '2'
228 #define VK_3 '3'
229 #define VK_4 '4'
230 #define VK_5 '5'
231 #define VK_6 '6'
232 #define VK_7 '7'
233 #define VK_8 '8'
234 #define VK_9 '9'
235 #define VK_SEMICOLON ';'
236 #define VK_EQUALS '='
237 #define VK_A 'A'
238 #define VK_B 'B'
239 #define VK_C 'C'
240 #define VK_D 'D'
241 #define VK_E 'E'
242 #define VK_F 'F'
243 #define VK_G 'G'
244 #define VK_H 'H'
245 #define VK_I 'I'
246 #define VK_J 'J'
247 #define VK_K 'K'
248 #define VK_L 'L'
249 #define VK_M 'M'
250 #define VK_N 'N'
251 #define VK_O 'O'
252 #define VK_P 'P'
253 #define VK_Q 'Q'
254 #define VK_R 'R'
255 #define VK_S 'S'
256 #define VK_T 'T'
257 #define VK_U 'U'
258 #define VK_V 'V'
259 #define VK_W 'W'
260 #define VK_X 'X'
261 #define VK_Y 'Y'
262 #define VK_Z 'Z'
263 #define VK_OPEN_BRACKET '['
264 #define VK_BACK_SLASH '\\'
265 #define VK_CLOSE_BRACKET ']'
266 #define VK_NUMPAD0 96
267 #define VK_NUMPAD1 97
268 #define VK_NUMPAD2 98
269 #define VK_NUMPAD3 99
270 #define VK_NUMPAD4 100
271 #define VK_NUMPAD5 101
272 #define VK_NUMPAD6 102
273 #define VK_NUMPAD7 103
274 #define VK_NUMPAD8 104
275 #define VK_NUMPAD9 105
276 #define VK_MULTIPLY 106
277 #define VK_ADD 107
278 #define VK_SEPARATER 108
279 #define VK_SEPARATOR 108
280 #define VK_SUBTRACT 109
281 #define VK_DECIMAL 110
282 #define VK_DIVIDE 111
283 #define VK_DELETE 127
284 #define VK_NUM_LOCK 144
285 #define VK_SCROLL_LOCK 145
286 #define VK_F1 112
287 #define VK_F2 113
288 #define VK_F3 114
289 #define VK_F4 115
290 #define VK_F5 116
291 #define VK_F6 117
292 #define VK_F7 118
293 #define VK_F8 119
294 #define VK_F9 120
295 #define VK_F10 121
296 #define VK_F11 122
297 #define VK_F12 123
298 #define VK_F13 61440
299 #define VK_F14 61441
300 #define VK_F15 61442
301 #define VK_F16 61443
302 #define VK_F17 61444
303 #define VK_F18 61445
304 #define VK_F19 61446
305 #define VK_F20 61447
306 #define VK_F21 61448
307 #define VK_F22 61449
308 #define VK_F23 61450
309 #define VK_F24 61451
310 #define VK_PRINTSCREEN 154
311 #define VK_INSERT 155
312 #define VK_HELP 156
313 #define VK_META 157
314 #define VK_BACK_QUOTE 192
315 #define VK_QUOTE 222
316 #define VK_KP_UP 224
317 #define VK_KP_DOWN 225
318 #define VK_KP_LEFT 226
319 #define VK_KP_RIGHT 227
320 #define VK_DEAD_GRAVE 128
321 #define VK_DEAD_ACUTE 129
322 #define VK_DEAD_CIRCUMFLEX 130
323 #define VK_DEAD_TILDE 131
324 #define VK_DEAD_MACRON 132
325 #define VK_DEAD_BREVE 133
326 #define VK_DEAD_ABOVEDOT 134
327 #define VK_DEAD_DIAERESIS 135
328 #define VK_DEAD_ABOVERING 136
329 #define VK_DEAD_DOUBLEACUTE 137
330 #define VK_DEAD_CARON 138
331 #define VK_DEAD_CEDILLA 139
332 #define VK_DEAD_OGONEK 140
333 #define VK_DEAD_IOTA 141
334 #define VK_DEAD_VOICED_SOUND 142
335 #define VK_DEAD_SEMIVOICED_SOUND 143
336 #define VK_AMPERSAND 150
337 #define VK_ASTERISK 151
338 #define VK_QUOTEDBL 152
339 #define VK_LESS 153
340 #define VK_GREATER 160
341 #define VK_BRACELEFT 161
342 #define VK_BRACERIGHT 162
343 #define VK_AT 512
344 #define VK_COLON 513
345 #define VK_CIRCUMFLEX 514
346 #define VK_DOLLAR 515
347 #define VK_EURO_SIGN 516
348 #define VK_EXCLAMATION_MARK 517
349 #define VK_INVERTED_EXCLAMATION_MARK 518
350 #define VK_LEFT_PARENTHESIS 519
351 #define VK_NUMBER_SIGN 520
352 #define VK_PLUS 521
353 #define VK_RIGHT_PARENTHESIS 522
354 #define VK_UNDERSCORE 523
355 #define VK_FINAL 24
356 #define VK_CONVERT 28
357 #define VK_NONCONVERT 29
358 #define VK_ACCEPT 30
359 #define VK_MODECHANGE 31
360 #define VK_KANA 21
361 #define VK_KANJI 25
362 #define VK_ALPHANUMERIC 240
363 #define VK_KATAKANA 241
364 #define VK_HIRAGANA 242
365 #define VK_FULL_WIDTH 243
366 #define VK_HALF_WIDTH 244
367 #define VK_ROMAN_CHARACTERS 245
368 #define VK_ALL_CANDIDATES 256
369 #define VK_PREVIOUS_CANDIDATE 257
370 #define VK_CODE_INPUT 258
371 #define VK_JAPANESE_KATAKANA 259
372 #define VK_JAPANESE_HIRAGANA 260
373 #define VK_JAPANESE_ROMAN 261
374 #define VK_KANA_LOCK 262
375 #define VK_INPUT_METHOD_ON_OFF 263
376 #define VK_CUT 65489
377 #define VK_COPY 65485
378 #define VK_PASTE 65487
379 #define VK_UNDO 65483
380 #define VK_AGAIN 65481
381 #define VK_FIND 65488
382 #define VK_PROPS 65482
383 #define VK_STOP 65480
384 #define VK_COMPOSE 65312
385 #define VK_ALT_GRAPH 65406
386 #define VK_UNDEFINED 0
388 #define AWT_FOCUS_GAINED 1004
389 #define AWT_FOCUS_LOST 1005
391 #define AWT_WINDOW_OPENED 200
392 #define AWT_WINDOW_CLOSING 201
393 #define AWT_WINDOW_CLOSED 202
394 #define AWT_WINDOW_ICONIFIED 203
395 #define AWT_WINDOW_DEICONIFIED 204
396 #define AWT_WINDOW_ACTIVATED 205
397 #define AWT_WINDOW_DEACTIVATED 206
398 #define AWT_WINDOW_GAINED_FOCUS 207
399 #define AWT_WINDOW_LOST_FOCUS 208
400 #define AWT_WINDOW_STATE_CHANGED 209
402 #define AWT_FRAME_STATE_NORMAL 0
403 #define AWT_FRAME_STATE_ICONIFIED 1
404 #define AWT_FRAME_STATE_MAXIMIZED_HORIZ 2
405 #define AWT_FRAME_STATE_MAXIMIZED_VERT 4
406 #define AWT_FRAME_STATE_MAXIMIZED_BOTH 6
408 #define AWT_STYLE_PLAIN 0
409 #define AWT_STYLE_BOLD 1
410 #define AWT_STYLE_ITALIC 2
412 /* From java.awt.SystemColor */
413 #define AWT_DESKTOP 0
414 #define AWT_ACTIVE_CAPTION 1
415 #define AWT_ACTIVE_CAPTION_TEXT 2
416 #define AWT_ACTIVE_CAPTION_BORDER 3
417 #define AWT_INACTIVE_CAPTION 4
418 #define AWT_INACTIVE_CAPTION_TEXT 5
419 #define AWT_INACTIVE_CAPTION_BORDER 6
420 #define AWT_WINDOW 7
421 #define AWT_WINDOW_BORDER 8
422 #define AWT_WINDOW_TEXT 9
423 #define AWT_MENU 10
424 #define AWT_MENU_TEXT 11
425 #define AWT_TEXT 12
426 #define AWT_TEXT_TEXT 13
427 #define AWT_TEXT_HIGHLIGHT 14
428 #define AWT_TEXT_HIGHLIGHT_TEXT 15
429 #define AWT_TEXT_INACTIVE_TEXT 16
430 #define AWT_CONTROL 17
431 #define AWT_CONTROL_TEXT 18
432 #define AWT_CONTROL_HIGHLIGHT 19
433 #define AWT_CONTROL_LT_HIGHLIGHT 20
434 #define AWT_CONTROL_SHADOW 21
435 #define AWT_CONTROL_DK_SHADOW 22
436 #define AWT_SCROLLBAR 23
437 #define AWT_INFO 24
438 #define AWT_INFO_TEXT 25
439 #define AWT_NUM_COLORS 26
441 extern jmethodID setBoundsCallbackID;
443 extern jmethodID postActionEventID;
444 extern jmethodID postMenuActionEventID;
445 extern jmethodID postMouseEventID;
446 extern jmethodID postConfigureEventID;
447 extern jmethodID postExposeEventID;
448 extern jmethodID postKeyEventID;
449 extern jmethodID postFocusEventID;
450 extern jmethodID postAdjustmentEventID;
451 extern jmethodID choicePostItemEventID;
452 extern jmethodID postItemEventID;
453 extern jmethodID postListItemEventID;
454 extern jmethodID postTextEventID;
455 extern jmethodID postWindowEventID;
457 extern jmethodID beginNativeRepaintID;
458 extern jmethodID endNativeRepaintID;
460 extern jmethodID initComponentGraphicsID;
461 extern jmethodID initComponentGraphics2DID;
462 extern jmethodID setCursorID;
464 extern jmethodID syncAttrsID;
465 extern jclass gdkColor;
466 extern jmethodID gdkColorID;
468 extern jmethodID postInsetsChangedEventID;
469 extern jmethodID windowGetWidthID;
470 extern jmethodID windowGetHeightID;
472 JNIEnv *gdk_env(void);
474 extern double dpi_conversion_factor;
476 extern GtkWindowGroup *global_gtk_window_group;
478 void awt_event_handler (GdkEvent *event);
480 gboolean pre_event_handler (GtkWidget *widget,
481 GdkEvent *event,
482 jobject peer);
484 void connect_awt_hook (JNIEnv *env, jobject peer_obj, int nwindows, ...);
485 void connect_awt_hook_cb (GtkWidget *widget, jobject peer);
487 void set_visible (GtkWidget *widget, jboolean visible);
488 void set_parent (GtkWidget *widget, GtkContainer *parent);
490 jint keyevent_state_to_awt_mods (GdkEvent *event);
492 guint awt_keycode_to_keysym (jint keyCode, jint keyLocation);
494 struct item_event_hook_info
496 jobject peer_obj;
497 const char *label;
500 /* Union used for type punning. */
501 union widget_union
503 void **void_widget;
504 GtkWidget **widget;
507 #define DEBUG_LOCKING 0
509 #if DEBUG_LOCKING
510 #define gdk_threads_enter() \
512 g_print ("lock: %s, %d\n", __FILE__, __LINE__); \
513 gdk_threads_enter (); \
515 #define gdk_threads_leave() \
517 g_print ("unlock: %s, %d\n", __FILE__, __LINE__); \
518 gdk_threads_leave (); \
520 #endif
522 #endif /* __GTKPEER_H */