ROOT  6.05/03
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
gdk.c
Go to the documentation of this file.
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19 
20 /*
21  * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS
22  * file for a list of people on the GTK+ Team. See the ChangeLog
23  * files for a list of changes. These files are distributed with
24  * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
25  */
26 
27 #include "config.h"
28 
29 #include <string.h>
30 #include <stdlib.h>
31 
32 #include "gdk.h"
33 #include "gdkprivate.h"
34 
35 #ifndef HAVE_XCONVERTCASE
36 #include "gdkkeysyms.h"
37 #endif
38 
39 typedef struct _GdkPredicate GdkPredicate;
40 typedef struct _GdkErrorTrap GdkErrorTrap;
41 
42 struct _GdkPredicate {
44  gpointer data;
45 };
46 
47 struct _GdkErrorTrap {
48  gint error_warnings;
49  gint error_code;
50 };
51 
52 /*
53  * Private function declarations
54  */
55 static void gdk_exit_func(void);
56 
58  GdkEvent * event, gpointer data);
59 
60 /* Private variable declarations
61  */
62 static int gdk_initialized = 0; /* 1 if the library is initialized,
63  * 0 otherwise.
64  */
65 
66 static GSList *gdk_error_traps = NULL; /* List of error traps */
67 static GSList *gdk_error_trap_free_list = NULL; /* Free list */
68 
69 #ifdef G_ENABLE_DEBUG
70 static const GDebugKey gdk_debug_keys[] = {
71  {"events", GDK_DEBUG_EVENTS},
72  {"misc", GDK_DEBUG_MISC},
73  {"dnd", GDK_DEBUG_DND},
74  {"color-context", GDK_DEBUG_COLOR_CONTEXT},
75  {"xim", GDK_DEBUG_XIM}
76 };
77 
78 static const int gdk_ndebug_keys =
79  sizeof(gdk_debug_keys) / sizeof(GDebugKey);
80 
81 #endif /* G_ENABLE_DEBUG */
82 
84 {
86  result->tables = g_ptr_array_new();
87  result->cb_data = cb_data;
88 
89  return result;
90 }
91 
93 {
94  g_ptr_array_free(context->tables, TRUE);
95  g_free(context);
96 }
97 
99 {
100  g_ptr_array_add(context->tables, table);
101 }
102 
103 void
104 gdk_arg_context_parse(GdkArgContext * context, gint * argc, gchar *** argv)
105 {
106  int i, j, k;
107 
108  /* Save a copy of the original argc and argv */
109  if (argc && argv) {
110  for (i = 1; i < *argc; i++) {
111  char *arg;
112 
113  if (!(*argv)[i][0] == '-' && (*argv)[i][1] == '-')
114  continue;
115 
116  arg = (*argv)[i] + 2;
117 
118  /* '--' terminates list of arguments */
119  if (arg == 0) {
120  (*argv)[i] = NULL;
121  break;
122  }
123 
124  for (j = 0; j < (int)context->tables->len; j++) {
125  GdkArgDesc *table = context->tables->pdata[j];
126  for (k = 0; table[k].name; k++) {
127  switch (table[k].type) {
128  case GDK_ARG_STRING:
129  case GDK_ARG_CALLBACK:
130  case GDK_ARG_INT:
131  {
132  int len = strlen(table[k].name);
133 
134  if (strncmp(arg, table[k].name, len) == 0 &&
135  (arg[len] == '=' || argc[len] == 0)) {
136  char *value = NULL;
137 
138  (*argv)[i] = NULL;
139 
140  if (arg[len] == '=')
141  value = arg + len + 1;
142  else if (i < *argc - 1) {
143  value = (*argv)[i + 1];
144  (*argv)[i + 1] = NULL;
145  i++;
146  } else
147  value = "";
148 
149  switch (table[k].type) {
150  case GDK_ARG_STRING:
151  *(gchar **) table[k].location = g_strdup(value);
152  break;
153  case GDK_ARG_INT:
154  *(gint *) table[k].location = atoi(value);
155  break;
156  case GDK_ARG_CALLBACK:
157  (*table[k].callback) (table[k].name, value,
158  context->cb_data);
159  break;
160  default:
161  ;
162  }
163 
164  goto next_arg;
165  }
166  break;
167  }
168  case GDK_ARG_BOOL:
169  case GDK_ARG_NOBOOL:
170  if (strcmp(arg, table[k].name) == 0) {
171  (*argv)[i] = NULL;
172 
173  *(gboolean *) table[k].location =
174  (table[k].type == GDK_ARG_BOOL) ? TRUE : FALSE;
175  goto next_arg;
176  }
177  }
178  }
179  }
180  next_arg:
181  ;
182  }
183 
184  for (i = 1; i < *argc; i++) {
185  for (k = i; k < *argc; k++)
186  if ((*argv)[k] != NULL)
187  break;
188 
189  if (k > i) {
190  k -= i;
191  for (j = i + k; j < *argc; j++)
192  (*argv)[j - k] = (*argv)[j];
193  *argc -= k;
194  }
195  }
196  }
197 }
198 
199 static void
200 gdk_arg_debug_cb(const char *key, const char *value, gpointer user_data)
201 {
203  (GDebugKey *) gdk_debug_keys,
204  gdk_ndebug_keys);
205 }
206 
207 static void
208 gdk_arg_no_debug_cb(const char *key, const char *value, gpointer user_data)
209 {
211  (GDebugKey *) gdk_debug_keys,
212  gdk_ndebug_keys);
213 }
214 
215 static void
216 gdk_arg_name_cb(const char *key, const char *value, gpointer user_data)
217 {
218  g_set_prgname(value);
219 }
220 
221 static GdkArgDesc gdk_args[] = {
222  {"name", GDK_ARG_STRING, NULL, gdk_arg_name_cb},
223 #ifdef G_ENABLE_DEBUG
224  {"gdk-debug", GDK_ARG_CALLBACK, NULL, gdk_arg_debug_cb},
225  {"gdk-no-debug", GDK_ARG_CALLBACK, NULL, gdk_arg_no_debug_cb},
226 #endif /* G_ENABLE_DEBUG */
227  {NULL}
228 };
229 
230 /*
231  *--------------------------------------------------------------
232  * gdk_init_check
233  *
234  * Initialize the library for use.
235  *
236  * Arguments:
237  * "argc" is the number of arguments.
238  * "argv" is an array of strings.
239  *
240  * Results:
241  * "argc" and "argv" are modified to reflect any arguments
242  * which were not handled. (Such arguments should either
243  * be handled by the application or dismissed). If initialization
244  * fails, returns FALSE, otherwise TRUE.
245  *
246  * Side effects:
247  * The library is initialized.
248  *
249  *--------------------------------------------------------------
250  */
251 
252 gboolean gdk_init_check(int *argc, char ***argv)
253 {
254  gchar **argv_orig = NULL;
255  gint argc_orig = 0;
256  GdkArgContext *arg_context;
258  int i;
259 
260  if (gdk_initialized)
261  return TRUE;
262 
263  if (g_thread_supported())
265 
266  if (argc && argv) {
267  argc_orig = *argc;
268 
269  argv_orig = g_malloc((argc_orig + 1) * sizeof(char *));
270  for (i = 0; i < argc_orig; i++)
271  argv_orig[i] = g_strdup((*argv)[i]);
272  argv_orig[argc_orig] = NULL;
273 
274  if (*argc > 0) {
275  gchar *d;
276 
277  d = strrchr((*argv)[0], '/');
278  if (d != NULL)
279  g_set_prgname(d + 1);
280  else
281  g_set_prgname((*argv)[0]);
282  }
283  }
284 
285 #ifdef G_ENABLE_DEBUG
286  {
287  gchar *debug_string = getenv("GDK_DEBUG");
288  if (debug_string != NULL)
289  gdk_debug_flags = g_parse_debug_string(debug_string,
290  (GDebugKey *) gdk_debug_keys,
291  gdk_ndebug_keys);
292  }
293 #endif /* G_ENABLE_DEBUG */
294 
295  arg_context = gdk_arg_context_new(NULL);
296  gdk_arg_context_add_table(arg_context, gdk_args);
298  gdk_arg_context_parse(arg_context, argc, argv);
299  gdk_arg_context_destroy(arg_context);
300 
301  GDK_NOTE(MISC, g_message("progname: \"%s\"", g_get_prgname()));
302 
303  result = _gdk_windowing_init_check(argc_orig, argv_orig);
304 
305  for (i = 0; i < argc_orig; i++)
306  g_free(argv_orig[i]);
307  g_free(argv_orig);
308 
309  if (!result)
310  return FALSE;
311 
313 
314  gdk_events_init();
315  gdk_visual_init();
316  gdk_window_init();
317  gdk_image_init();
318  gdk_input_init();
319  gdk_dnd_init();
320 
321 #ifdef USE_XIM
322  gdk_im_open();
323 #endif
324 
325  gdk_initialized = 1;
326 
327  return TRUE;
328 }
329 
330 void gdk_init(int *argc, char ***argv)
331 {
332  if (!gdk_init_check(argc, argv)) {
333  g_warning("cannot open display: %s", gdk_get_display());
334  exit(1);
335  }
336 }
337 
338 /*
339  *--------------------------------------------------------------
340  * gdk_exit
341  *
342  * Restores the library to an un-itialized state and exits
343  * the program using the "exit" system call.
344  *
345  * Arguments:
346  * "errorcode" is the error value to pass to "exit".
347  *
348  * Results:
349  * Allocated structures are freed and the program exits
350  * cleanly.
351  *
352  * Side effects:
353  *
354  *--------------------------------------------------------------
355  */
356 
357 void gdk_exit(gint errorcode)
358 {
359  /* de-initialisation is done by the gdk_exit_funct(),
360  no need to do this here (Alex J.) */
361  exit(errorcode);
362 }
363 
364 /*
365  *--------------------------------------------------------------
366  * gdk_exit_func
367  *
368  * This is the "atexit" function that makes sure the
369  * library gets a chance to cleanup.
370  *
371  * Arguments:
372  *
373  * Results:
374  *
375  * Side effects:
376  * The library is un-initialized and the program exits.
377  *
378  *--------------------------------------------------------------
379  */
380 
381 static void gdk_exit_func(void)
382 {
383  static gboolean in_gdk_exit_func = FALSE;
384 
385  /* This is to avoid an infinite loop if a program segfaults in
386  an atexit() handler (and yes, it does happen, especially if a program
387  has trounced over memory too badly for even g_message to work) */
388  if (in_gdk_exit_func == TRUE)
389  return;
390  in_gdk_exit_func = TRUE;
391 
392  if (gdk_initialized) {
393 #ifdef USE_XIM
394  /* cleanup IC */
395  gdk_ic_cleanup();
396  /* close IM */
397  gdk_im_close();
398 #endif
399  gdk_image_exit();
400  gdk_input_exit();
402 
403  gdk_initialized = 0;
404  }
405 }
406 
407 /*************************************************************
408  * gdk_error_trap_push:
409  * Push an error trap. X errors will be trapped until
410  * the corresponding gdk_error_pop(), which will return
411  * the error code, if any.
412  * arguments:
413  *
414  * results:
415  *************************************************************/
416 
418 {
419  GSList *node;
420  GdkErrorTrap *trap;
421 
422  if (gdk_error_trap_free_list) {
424  gdk_error_trap_free_list = gdk_error_trap_free_list->next;
425  } else {
426  node = g_slist_alloc();
427  node->data = g_new(GdkErrorTrap, 1);
428  }
429 
430  node->next = gdk_error_traps;
431  gdk_error_traps = node;
432 
433  trap = node->data;
434  trap->error_code = gdk_error_code;
435  trap->error_warnings = gdk_error_warnings;
436 
437  gdk_error_code = 0;
438  gdk_error_warnings = 0;
439 }
440 
441 /*************************************************************
442  * gdk_error_trap_pop:
443  * Pop an error trap added with gdk_error_push()
444  * arguments:
445  *
446  * results:
447  * 0, if no error occured, otherwise the error code.
448  *************************************************************/
449 
451 {
452  GSList *node;
453  GdkErrorTrap *trap;
454  gint result;
455 
456  g_return_val_if_fail(gdk_error_traps != NULL, 0);
457 
458  node = gdk_error_traps;
459  gdk_error_traps = gdk_error_traps->next;
460 
461  node->next = gdk_error_trap_free_list;
462  gdk_error_trap_free_list = node;
463 
464  result = gdk_error_code;
465 
466  trap = node->data;
467  gdk_error_code = trap->error_code;
468  gdk_error_warnings = trap->error_warnings;
469 
470  return result;
471 }
472 
473 #ifndef HAVE_XCONVERTCASE
474 /* compatibility function from X11R6.3, since XConvertCase is not
475  * supplied by X11R5.
476  */
478 {
479  guint xlower = symbol;
480  guint xupper = symbol;
481 
482  switch (symbol >> 8) {
483 #if defined (GDK_A) && defined (GDK_Ooblique)
484  case 0: /* Latin 1 */
485  if ((symbol >= GDK_A) && (symbol <= GDK_Z))
486  xlower += (GDK_a - GDK_A);
487  else if ((symbol >= GDK_a) && (symbol <= GDK_z))
488  xupper -= (GDK_a - GDK_A);
489  else if ((symbol >= GDK_Agrave) && (symbol <= GDK_Odiaeresis))
490  xlower += (GDK_agrave - GDK_Agrave);
491  else if ((symbol >= GDK_agrave) && (symbol <= GDK_odiaeresis))
492  xupper -= (GDK_agrave - GDK_Agrave);
493  else if ((symbol >= GDK_Ooblique) && (symbol <= GDK_Thorn))
494  xlower += (GDK_oslash - GDK_Ooblique);
495  else if ((symbol >= GDK_oslash) && (symbol <= GDK_thorn))
496  xupper -= (GDK_oslash - GDK_Ooblique);
497  break;
498 #endif /* LATIN1 */
499 
500 #if defined (GDK_Aogonek) && defined (GDK_tcedilla)
501  case 1: /* Latin 2 */
502  /* Assume the KeySym is a legal value (ignore discontinuities) */
503  if (symbol == GDK_Aogonek)
504  xlower = GDK_aogonek;
505  else if (symbol >= GDK_Lstroke && symbol <= GDK_Sacute)
506  xlower += (GDK_lstroke - GDK_Lstroke);
507  else if (symbol >= GDK_Scaron && symbol <= GDK_Zacute)
508  xlower += (GDK_scaron - GDK_Scaron);
509  else if (symbol >= GDK_Zcaron && symbol <= GDK_Zabovedot)
510  xlower += (GDK_zcaron - GDK_Zcaron);
511  else if (symbol == GDK_aogonek)
512  xupper = GDK_Aogonek;
513  else if (symbol >= GDK_lstroke && symbol <= GDK_sacute)
514  xupper -= (GDK_lstroke - GDK_Lstroke);
515  else if (symbol >= GDK_scaron && symbol <= GDK_zacute)
516  xupper -= (GDK_scaron - GDK_Scaron);
517  else if (symbol >= GDK_zcaron && symbol <= GDK_zabovedot)
518  xupper -= (GDK_zcaron - GDK_Zcaron);
519  else if (symbol >= GDK_Racute && symbol <= GDK_Tcedilla)
520  xlower += (GDK_racute - GDK_Racute);
521  else if (symbol >= GDK_racute && symbol <= GDK_tcedilla)
522  xupper -= (GDK_racute - GDK_Racute);
523  break;
524 #endif /* LATIN2 */
525 
526 #if defined (GDK_Hstroke) && defined (GDK_Cabovedot)
527  case 2: /* Latin 3 */
528  /* Assume the KeySym is a legal value (ignore discontinuities) */
529  if (symbol >= GDK_Hstroke && symbol <= GDK_Hcircumflex)
530  xlower += (GDK_hstroke - GDK_Hstroke);
531  else if (symbol >= GDK_Gbreve && symbol <= GDK_Jcircumflex)
532  xlower += (GDK_gbreve - GDK_Gbreve);
533  else if (symbol >= GDK_hstroke && symbol <= GDK_hcircumflex)
534  xupper -= (GDK_hstroke - GDK_Hstroke);
535  else if (symbol >= GDK_gbreve && symbol <= GDK_jcircumflex)
536  xupper -= (GDK_gbreve - GDK_Gbreve);
537  else if (symbol >= GDK_Cabovedot && symbol <= GDK_Scircumflex)
538  xlower += (GDK_cabovedot - GDK_Cabovedot);
539  else if (symbol >= GDK_cabovedot && symbol <= GDK_scircumflex)
540  xupper -= (GDK_cabovedot - GDK_Cabovedot);
541  break;
542 #endif /* LATIN3 */
543 
544 #if defined (GDK_Rcedilla) && defined (GDK_Amacron)
545  case 3: /* Latin 4 */
546  /* Assume the KeySym is a legal value (ignore discontinuities) */
547  if (symbol >= GDK_Rcedilla && symbol <= GDK_Tslash)
548  xlower += (GDK_rcedilla - GDK_Rcedilla);
549  else if (symbol >= GDK_rcedilla && symbol <= GDK_tslash)
550  xupper -= (GDK_rcedilla - GDK_Rcedilla);
551  else if (symbol == GDK_ENG)
552  xlower = GDK_eng;
553  else if (symbol == GDK_eng)
554  xupper = GDK_ENG;
555  else if (symbol >= GDK_Amacron && symbol <= GDK_Umacron)
556  xlower += (GDK_amacron - GDK_Amacron);
557  else if (symbol >= GDK_amacron && symbol <= GDK_umacron)
558  xupper -= (GDK_amacron - GDK_Amacron);
559  break;
560 #endif /* LATIN4 */
561 
562 #if defined (GDK_Serbian_DJE) && defined (GDK_Cyrillic_yu)
563  case 6: /* Cyrillic */
564  /* Assume the KeySym is a legal value (ignore discontinuities) */
565  if (symbol >= GDK_Serbian_DJE && symbol <= GDK_Serbian_DZE)
566  xlower -= (GDK_Serbian_DJE - GDK_Serbian_dje);
567  else if (symbol >= GDK_Serbian_dje && symbol <= GDK_Serbian_dze)
568  xupper += (GDK_Serbian_DJE - GDK_Serbian_dje);
569  else if (symbol >= GDK_Cyrillic_YU
570  && symbol <= GDK_Cyrillic_HARDSIGN)
571  xlower -= (GDK_Cyrillic_YU - GDK_Cyrillic_yu);
572  else if (symbol >= GDK_Cyrillic_yu
573  && symbol <= GDK_Cyrillic_hardsign)
574  xupper += (GDK_Cyrillic_YU - GDK_Cyrillic_yu);
575  break;
576 #endif /* CYRILLIC */
577 
578 #if defined (GDK_Greek_ALPHAaccent) && defined (GDK_Greek_finalsmallsigma)
579  case 7: /* Greek */
580  /* Assume the KeySym is a legal value (ignore discontinuities) */
581  if (symbol >= GDK_Greek_ALPHAaccent
582  && symbol <= GDK_Greek_OMEGAaccent)
584  else if (symbol >= GDK_Greek_alphaaccent
585  && symbol <= GDK_Greek_omegaaccent
586  && symbol != GDK_Greek_iotaaccentdieresis
587  && symbol != GDK_Greek_upsilonaccentdieresis)
589  else if (symbol >= GDK_Greek_ALPHA && symbol <= GDK_Greek_OMEGA)
590  xlower += (GDK_Greek_alpha - GDK_Greek_ALPHA);
591  else if (symbol >= GDK_Greek_alpha && symbol <= GDK_Greek_omega &&
592  symbol != GDK_Greek_finalsmallsigma)
593  xupper -= (GDK_Greek_alpha - GDK_Greek_ALPHA);
594  break;
595 #endif /* GREEK */
596  }
597 
598  if (lower)
599  *lower = xlower;
600  if (upper)
601  *upper = xupper;
602 }
603 #endif
604 
606 {
607  guint result;
608 
609  gdk_keyval_convert_case(keyval, NULL, &result);
610 
611  return result;
612 }
613 
615 {
616  guint result;
617 
618  gdk_keyval_convert_case(keyval, &result, NULL);
619 
620  return result;
621 }
622 
624 {
625  if (keyval) {
626  guint upper_val = 0;
627 
628  gdk_keyval_convert_case(keyval, NULL, &upper_val);
629  return upper_val == keyval;
630  }
631  return FALSE;
632 }
633 
635 {
636  if (keyval) {
637  guint lower_val = 0;
638 
639  gdk_keyval_convert_case(keyval, &lower_val, NULL);
640  return lower_val == keyval;
641  }
642  return FALSE;
643 }
644 
646 {
648 }
649 
651 {
653 }
#define GDK_Amacron
Definition: gdkkeysyms.h:593
void g_ptr_array_add(GPtrArray *farray, gpointer data)
Definition: garray.c:556
void gdk_image_init(void)
#define GDK_Agrave
Definition: gdkkeysyms.h:432
void gdk_key_repeat_restore(void)
#define GDK_Gbreve
Definition: gdkkeysyms.h:558
#define GDK_lstroke
Definition: gdkkeysyms.h:511
#define GDK_Serbian_dze
Definition: gdkkeysyms.h:756
#define GDK_hcircumflex
Definition: gdkkeysyms.h:561
unsigned int guint
Definition: g_types.h:51
#define GDK_Greek_ALPHAaccent
Definition: gdkkeysyms.h:843
#define GDK_Cabovedot
Definition: gdkkeysyms.h:565
void gdk_window_init(void)
void gdk_events_init(void)
#define GDK_gbreve
Definition: gdkkeysyms.h:563
#define g_return_val_if_fail(expr, val)
Definition: gmessages.h:300
#define GDK_cabovedot
Definition: gdkkeysyms.h:571
#define GDK_Hcircumflex
Definition: gdkkeysyms.h:556
#define GDK_amacron
Definition: gdkkeysyms.h:603
#define GDK_Thorn
Definition: gdkkeysyms.h:464
#define GDK_NOTE(type, action)
Definition: gdkprivate.h:276
guint gdk_keyval_to_lower(guint keyval)
Definition: gdk.c:614
#define GDK_THREADS_LEAVE()
Definition: gdk.h:164
#define GDK_Scaron
Definition: gdkkeysyms.h:503
gpointer g_malloc(gulong n_bytes)
Definition: gmem.c:130
#define GDK_Greek_iotaaccentdieresis
Definition: gdkkeysyms.h:859
gint gdk_error_trap_pop(void)
Definition: gdk.c:450
#define GDK_A
Definition: gdkkeysyms.h:337
#define GDK_Tslash
Definition: gdkkeysyms.h:584
const char * name
Definition: gdkprivate.h:174
GSList * g_slist_alloc(void)
Definition: gslist.c:149
#define GDK_racute
Definition: gdkkeysyms.h:538
void gdk_arg_context_destroy(GdkArgContext *context)
Definition: gdk.c:92
#define GDK_zabovedot
Definition: gdkkeysyms.h:521
#define GDK_Serbian_DZE
Definition: gdkkeysyms.h:778
void gdk_input_init(void)
static const float upper
Definition: main.cpp:49
G_BEGIN_DECLS typedef char gchar
Definition: g_types.h:41
void gdk_dnd_init(void)
Definition: gdkdnd-win32.c:659
#define g_thread_supported()
Definition: gthread.h:182
#define GDK_Cyrillic_HARDSIGN
Definition: gdkkeysyms.h:842
#define GDK_eng
Definition: gdkkeysyms.h:592
static void gdk_arg_debug_cb(const char *key, const char *value, gpointer user_data)
Definition: gdk.c:200
#define GDK_thorn
Definition: gdkkeysyms.h:496
#define GDK_Cyrillic_YU
Definition: gdkkeysyms.h:811
gpointer cb_data
Definition: gdkprivate.h:170
GPtrArray * tables
Definition: gdkprivate.h:169
gboolean gdk_keyval_is_lower(guint keyval)
Definition: gdk.c:634
gint gdk_error_warnings
Definition: gdkglobals.c:35
static void g_message(const gchar *format,...)
Definition: gmessages.h:137
#define GDK_Scircumflex
Definition: gdkkeysyms.h:570
#define GDK_Greek_alphaaccent
Definition: gdkkeysyms.h:854
gint gboolean
Definition: g_types.h:45
#define g_mutex_new()
Definition: gthread.h:183
void g_set_prgname(const gchar *prgname)
Definition: gutils.c:1021
#define GDK_Cyrillic_hardsign
Definition: gdkkeysyms.h:810
#define GDK_Greek_omegaaccent
Definition: gdkkeysyms.h:864
gint gdk_error_code
Definition: gdkglobals.c:34
#define GDK_Zabovedot
Definition: gdkkeysyms.h:508
void gdk_image_exit(void)
#define GDK_rcedilla
Definition: gdkkeysyms.h:585
#define GDK_odiaeresis
Definition: gdkkeysyms.h:488
#define GDK_zcaron
Definition: gdkkeysyms.h:520
#define GDK_scircumflex
Definition: gdkkeysyms.h:576
void gdk_threads_leave()
Definition: gdk.c:650
static void gdk_arg_no_debug_cb(const char *key, const char *value, gpointer user_data)
Definition: gdk.c:208
#define GDK_Sacute
Definition: gdkkeysyms.h:502
#define GDK_Jcircumflex
Definition: gdkkeysyms.h:559
#define GDK_Z
Definition: gdkkeysyms.h:362
#define GDK_Zacute
Definition: gdkkeysyms.h:506
#define GDK_Tcedilla
Definition: gdkkeysyms.h:537
typedefG_BEGIN_DECLS struct _GSList GSList
Definition: gslist.h:34
#define GDK_Greek_omega
Definition: gdkkeysyms.h:915
GdkArgContext * gdk_arg_context_new(gpointer cb_data)
Definition: gdk.c:83
#define GDK_Greek_ALPHA
Definition: gdkkeysyms.h:865
#define g_new(struct_type, n_structs)
Definition: gmem.h:60
static GSList * gdk_error_trap_free_list
Definition: gdk.c:67
int gint
Definition: g_types.h:44
void GdkXEvent
Definition: gdkevents.h:38
#define GDK_Greek_OMEGA
Definition: gdkkeysyms.h:889
gboolean _gdk_windowing_init_check(int argc, char **argv)
Definition: gdkmain-win32.c:64
static int gdk_initialized
Definition: gdk.c:62
#define FALSE
Definition: gmacros.h:126
#define GDK_tcedilla
Definition: gdkkeysyms.h:553
#define GDK_sacute
Definition: gdkkeysyms.h:513
#define GDK_z
Definition: gdkkeysyms.h:395
#define GDK_Aogonek
Definition: gdkkeysyms.h:498
void * gpointer
Definition: g_types.h:67
gchar * gdk_get_display(void)
#define GDK_Greek_OMEGAaccent
Definition: gdkkeysyms.h:851
void gdk_arg_context_parse(GdkArgContext *context, gint *argc, gchar ***argv)
Definition: gdk.c:104
#define GDK_aogonek
Definition: gdkkeysyms.h:509
guint gdk_keyval_to_upper(guint keyval)
Definition: gdk.c:605
GDKVAR GMutex * gdk_threads_mutex
Definition: gdk.h:148
#define GDK_oslash
Definition: gdkkeysyms.h:490
guint g_parse_debug_string(const gchar *string, const GDebugKey *keys, guint nkeys)
Definition: gutils.c:427
void gdk_init(int *argc, char ***argv)
Definition: gdk.c:330
#define GDK_agrave
Definition: gdkkeysyms.h:466
#define GDK_a
Definition: gdkkeysyms.h:370
#define GDK_Greek_upsilonaccentdieresis
Definition: gdkkeysyms.h:863
#define GDK_THREADS_ENTER()
Definition: gdk.h:163
gchar data[7]
void g_free(gpointer mem)
Definition: gmem.c:183
#define GDK_Cyrillic_yu
Definition: gdkkeysyms.h:779
#define GDK_umacron
Definition: gdkkeysyms.h:612
#define GDK_Zcaron
Definition: gdkkeysyms.h:507
GdkArgFunc callback
Definition: gdkprivate.h:177
#define GDK_Rcedilla
Definition: gdkkeysyms.h:579
#define GDK_Ooblique
Definition: gdkkeysyms.h:457
#define GDK_tslash
Definition: gdkkeysyms.h:590
int type
Definition: TGX11.cxx:116
GdkArgDesc _gdk_windowing_args[]
Definition: gdkmain-win32.c:45
double func(double *x, double *p)
Definition: stressTF1.cxx:213
#define GDK_zacute
Definition: gdkkeysyms.h:518
guint gdk_debug_flags
Definition: gdkglobals.c:32
struct _GdkErrorTrap GdkErrorTrap
Definition: gdk.c:40
guint len
Definition: garray.h:53
unsigned int len
Definition: cp1255.h:87
static GSList * gdk_error_traps
Definition: gdk.c:66
gboolean gdk_init_check(int *argc, char ***argv)
Definition: gdk.c:252
#define GDK_Serbian_DJE
Definition: gdkkeysyms.h:758
#define name(a, b)
Definition: linkTestLib0.cpp:5
#define GDK_scaron
Definition: gdkkeysyms.h:515
#define GDK_Umacron
Definition: gdkkeysyms.h:602
static void g_warning(const gchar *format,...)
Definition: gmessages.h:155
static void gdk_exit_func(void)
Definition: gdk.c:381
#define GDK_Greek_alpha
Definition: gdkkeysyms.h:890
void(* GdkEventFunc)(GdkEvent *event, gpointer data)
Definition: gdkevents.h:34
void g_atexit(GVoidFunc func)
Definition: gutils.c:118
#define TRUE
Definition: gmacros.h:130
static void gdk_arg_name_cb(const char *key, const char *value, gpointer user_data)
Definition: gdk.c:216
void gdk_threads_enter()
Definition: gdk.c:645
void gdk_keyval_convert_case(guint symbol, guint *lower, guint *upper)
Definition: gdk.c:477
gpointer * g_ptr_array_free(GPtrArray *array, gboolean free_segment)
Definition: garray.c:388
#define NULL
Definition: Rtypes.h:82
void gdk_error_trap_push(void)
Definition: gdk.c:417
void gdk_exit(gint errorcode)
Definition: gdk.c:357
GdkFilterReturn gdk_wm_protocols_filter(GdkXEvent *xev, GdkEvent *event, gpointer data)
gchar * g_get_prgname(void)
Definition: gutils.c:1009
gpointer * pdata
Definition: garray.h:52
void gdk_arg_context_add_table(GdkArgContext *context, GdkArgDesc *table)
Definition: gdk.c:98
double result[121]
#define GDK_jcircumflex
Definition: gdkkeysyms.h:564
#define GDK_hstroke
Definition: gdkkeysyms.h:560
#define GDK_Hstroke
Definition: gdkkeysyms.h:555
#define GDK_Greek_finalsmallsigma
Definition: gdkkeysyms.h:909
GPtrArray * g_ptr_array_new(void)
Definition: garray.c:358
float value
Definition: math.cpp:443
gchar * g_strdup(const gchar *str)
Definition: gstrfuncs.c:82
struct _GdkPredicate GdkPredicate
Definition: gdk.c:39
gboolean gdk_keyval_is_upper(guint keyval)
Definition: gdk.c:623
void gdk_input_exit(void)
#define GDK_Lstroke
Definition: gdkkeysyms.h:500
GdkFilterReturn
Definition: gdkevents.h:40
void gdk_visual_init(void)
static const float lower
Definition: main.cpp:48
#define GDK_Racute
Definition: gdkkeysyms.h:522
#define GDK_ENG
Definition: gdkkeysyms.h:591
#define GDK_Serbian_dje
Definition: gdkkeysyms.h:736
#define GDK_Odiaeresis
Definition: gdkkeysyms.h:455