gdk3 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/Rakefile +53 -0
  2. data/ext/gdk3/depend +11 -0
  3. data/ext/gdk3/extconf.rb +127 -0
  4. data/ext/gdk3/gdk3.def +12 -0
  5. data/ext/gdk3/init.c +35 -0
  6. data/ext/gdk3/rbgdk.c +540 -0
  7. data/ext/gdk3/rbgdk3.h +71 -0
  8. data/ext/gdk3/rbgdk3conversions.h +118 -0
  9. data/ext/gdk3/rbgdk3private.h +93 -0
  10. data/ext/gdk3/rbgdkatom.c +122 -0
  11. data/ext/gdk3/rbgdkcairo.c +95 -0
  12. data/ext/gdk3/rbgdkcolor.c +137 -0
  13. data/ext/gdk3/rbgdkconst.c +33 -0
  14. data/ext/gdk3/rbgdkcursor.c +99 -0
  15. data/ext/gdk3/rbgdkdevice.c +197 -0
  16. data/ext/gdk3/rbgdkdisplay.c +482 -0
  17. data/ext/gdk3/rbgdkdisplaymanager.c +55 -0
  18. data/ext/gdk3/rbgdkdragcontext.c +191 -0
  19. data/ext/gdk3/rbgdkdraw.c +520 -0
  20. data/ext/gdk3/rbgdkevent.c +926 -0
  21. data/ext/gdk3/rbgdkgeometry.c +252 -0
  22. data/ext/gdk3/rbgdkkeymap.c +151 -0
  23. data/ext/gdk3/rbgdkkeyval.c +108 -0
  24. data/ext/gdk3/rbgdkpango.c +197 -0
  25. data/ext/gdk3/rbgdkpangorenderer.c +144 -0
  26. data/ext/gdk3/rbgdkpixbuf.c +176 -0
  27. data/ext/gdk3/rbgdkproperty.c +305 -0
  28. data/ext/gdk3/rbgdkrectangle.c +140 -0
  29. data/ext/gdk3/rbgdkrgb.c +199 -0
  30. data/ext/gdk3/rbgdkrgba.c +142 -0
  31. data/ext/gdk3/rbgdkscreen.c +443 -0
  32. data/ext/gdk3/rbgdkselection.c +146 -0
  33. data/ext/gdk3/rbgdkthreads.c +77 -0
  34. data/ext/gdk3/rbgdktimecoord.c +133 -0
  35. data/ext/gdk3/rbgdkvisual.c +251 -0
  36. data/ext/gdk3/rbgdkwindow.c +1044 -0
  37. data/ext/gdk3/rbgdkwindowattr.c +191 -0
  38. data/ext/gdk3/rbgdkx11.c +102 -0
  39. data/ext/gdk3/rbgdkx11x11window.c +66 -0
  40. data/extconf.rb +49 -0
  41. data/lib/gdk3.rb +3 -0
  42. data/lib/gdk3/base.rb +50 -0
  43. data/lib/gdk3/deprecated.rb +152 -0
  44. metadata +156 -0
@@ -0,0 +1,146 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002-2004 Masao Mutoh
5
+ *
6
+ * This library is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
+ * MA 02110-1301 USA
20
+ */
21
+
22
+ #include "rbgdk3private.h"
23
+
24
+ #define RG_TARGET_NAMESPACE mSelection
25
+
26
+ static VALUE
27
+ rg_s_owner_set(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self)
28
+ {
29
+ VALUE owner, selection, time, send_event;
30
+ int ret;
31
+
32
+ if (argc == 4){
33
+ rb_scan_args(argc, argv, "40", &owner, &selection, &time, &send_event);
34
+ ret = gdk_selection_owner_set(RVAL2GDKWINDOW(owner),
35
+ RVAL2ATOM(selection),
36
+ NUM2UINT(time), RVAL2CBOOL(send_event));
37
+ } else {
38
+ VALUE display = Qnil;
39
+ rb_scan_args(argc, argv, "50", &display, &owner, &selection, &time, &send_event);
40
+ ret = gdk_selection_owner_set_for_display(RVAL2GDKDISPLAYOBJECT(display),
41
+ RVAL2GDKWINDOW(owner),
42
+ RVAL2ATOM(selection),
43
+ NUM2UINT(time), RVAL2CBOOL(send_event));
44
+ }
45
+ return CBOOL2RVAL(ret);
46
+ }
47
+
48
+ static VALUE
49
+ rg_s_owner_get(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self)
50
+ {
51
+ VALUE selection;
52
+
53
+ if (argc == 1) {
54
+ rb_scan_args(argc, argv, "10", &selection);
55
+ return GOBJ2RVAL(gdk_selection_owner_get(RVAL2ATOM(selection)));
56
+ } else {
57
+ VALUE display = Qnil;
58
+ rb_scan_args(argc, argv, "20", &display, &selection);
59
+ return GOBJ2RVAL(gdk_selection_owner_get_for_display(RVAL2GDKDISPLAYOBJECT(display),
60
+ RVAL2ATOM(selection)));
61
+ }
62
+ }
63
+
64
+ static VALUE
65
+ rg_s_convert(VALUE self, VALUE requestor, VALUE selection, VALUE target, VALUE time)
66
+ {
67
+ gdk_selection_convert(RVAL2GDKWINDOW(requestor),
68
+ RVAL2ATOM(selection),
69
+ RVAL2ATOM(target), NUM2INT(time));
70
+ return self;
71
+ }
72
+
73
+ static VALUE
74
+ rg_s_property_get(G_GNUC_UNUSED VALUE self, VALUE requestor)
75
+ {
76
+ guchar *data;
77
+ GdkAtom prop_type;
78
+ gint prop_format;
79
+ VALUE ary;
80
+
81
+ gdk_selection_property_get(RVAL2GDKWINDOW(requestor), &data,
82
+ &prop_type, &prop_format);
83
+
84
+ ary = rb_ary_new3(3, CSTR2RVAL((const char*)data), GDKATOM2RVAL(prop_type),
85
+ INT2NUM(prop_format));
86
+ g_free(data);
87
+ return ary;
88
+ }
89
+
90
+ static VALUE
91
+ rg_s_send_notify(int argc, VALUE *argv, VALUE self)
92
+ {
93
+ VALUE requestor, selection, target, property, time;
94
+
95
+ if (argc == 5) {
96
+ rb_scan_args(argc, argv, "50", &requestor, &selection, &target, &property, &time);
97
+ gdk_selection_send_notify(RVAL2GDKWINDOW(requestor), RVAL2ATOM(selection),
98
+ RVAL2ATOM(target),
99
+ NIL_P(property) ? GDK_NONE : RVAL2ATOM(property),
100
+ NUM2INT(time));
101
+ } else {
102
+ VALUE display = Qnil;
103
+ rb_scan_args(argc, argv, "60", &display, &requestor, &selection, &target, &property, &time);
104
+ gdk_selection_send_notify_for_display(RVAL2GDKDISPLAYOBJECT(display),
105
+ RVAL2GDKWINDOW(requestor), RVAL2ATOM(selection),
106
+ RVAL2ATOM(target),
107
+ NIL_P(property) ? GDK_NONE : RVAL2ATOM(property),
108
+ NUM2INT(time));
109
+ }
110
+ return self;
111
+ }
112
+
113
+ void
114
+ Init_gdk_selection(VALUE mGdk)
115
+ {
116
+ VALUE RG_TARGET_NAMESPACE = rb_define_module_under(mGdk, "Selection");
117
+
118
+ RG_DEF_SMETHOD(owner_set, -1);
119
+ RG_DEF_SMETHOD(owner_get, -1);
120
+ RG_DEF_SMETHOD(convert, 4);
121
+ RG_DEF_SMETHOD(property_get, 1);
122
+ RG_DEF_SMETHOD(send_notify, -1);
123
+
124
+ /* Constants */
125
+ rb_define_const(RG_TARGET_NAMESPACE, "PRIMARY", GDKATOM2RVAL(GDK_SELECTION_PRIMARY));
126
+ rb_define_const(RG_TARGET_NAMESPACE, "SECONDARY", GDKATOM2RVAL(GDK_SELECTION_SECONDARY));
127
+ rb_define_const(RG_TARGET_NAMESPACE, "CLIPBOARD", GDKATOM2RVAL(GDK_SELECTION_CLIPBOARD));
128
+
129
+ /* GdkSelectionType */
130
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_ATOM", GDKATOM2RVAL(GDK_SELECTION_TYPE_ATOM));
131
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_BITMAP", GDKATOM2RVAL(GDK_SELECTION_TYPE_BITMAP));
132
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_COLORMAP", GDKATOM2RVAL(GDK_SELECTION_TYPE_COLORMAP));
133
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_DRAWABLE", GDKATOM2RVAL(GDK_SELECTION_TYPE_DRAWABLE));
134
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_INTEGER", GDKATOM2RVAL(GDK_SELECTION_TYPE_INTEGER));
135
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_PIXMAP", GDKATOM2RVAL(GDK_SELECTION_TYPE_PIXMAP));
136
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_WINDOW", GDKATOM2RVAL(GDK_SELECTION_TYPE_WINDOW));
137
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_STRING", GDKATOM2RVAL(GDK_SELECTION_TYPE_STRING));
138
+
139
+ /* GdkTarget */
140
+ rb_define_const(RG_TARGET_NAMESPACE, "TARGET_BITMAP", GDKATOM2RVAL(GDK_TARGET_BITMAP));
141
+ rb_define_const(RG_TARGET_NAMESPACE, "TARGET_COLORMAP", GDKATOM2RVAL(GDK_TARGET_COLORMAP));
142
+ rb_define_const(RG_TARGET_NAMESPACE, "TARGET_DRAWABLE", GDKATOM2RVAL(GDK_TARGET_DRAWABLE));
143
+ rb_define_const(RG_TARGET_NAMESPACE, "TARGET_PIXMAP", GDKATOM2RVAL(GDK_TARGET_PIXMAP));
144
+ rb_define_const(RG_TARGET_NAMESPACE, "TARGET_STRING", GDKATOM2RVAL(GDK_TARGET_STRING));
145
+
146
+ }
@@ -0,0 +1,77 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2003-2005 Masao Mutoh
5
+ *
6
+ * This library is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
+ * MA 02110-1301 USA
20
+ */
21
+
22
+ #include "rbgdk3private.h"
23
+
24
+ #ifdef G_THREADS_ENABLED
25
+
26
+ #define RG_TARGET_NAMESPACE mThreads
27
+
28
+ static VALUE
29
+ rg_s_init(VALUE self)
30
+ {
31
+ #ifndef GDK_WINDOWING_WIN32
32
+ if (!g_thread_supported()){
33
+ g_thread_init(NULL);
34
+ }
35
+ gdk_threads_init();
36
+ #endif
37
+ return self;
38
+ }
39
+
40
+ static VALUE
41
+ rg_s_enter(VALUE self)
42
+ {
43
+ gdk_threads_enter();
44
+ return self;
45
+ }
46
+
47
+ static VALUE
48
+ rg_s_leave(VALUE self)
49
+ {
50
+ gdk_threads_leave();
51
+ return self;
52
+ }
53
+
54
+ static VALUE
55
+ rg_s_synchronize(G_GNUC_UNUSED VALUE self)
56
+ {
57
+ VALUE func = rb_block_proc();
58
+ gdk_threads_enter();
59
+ func = rb_block_proc();
60
+ rb_funcall(func, id_call, 0);
61
+ gdk_threads_leave();
62
+ return Qnil;
63
+ }
64
+ #endif
65
+
66
+ void
67
+ Init_gdk_threads(VALUE mGdk)
68
+ {
69
+ #ifdef G_THREADS_ENABLED
70
+ VALUE RG_TARGET_NAMESPACE = rb_define_module_under(mGdk, "Threads");
71
+
72
+ RG_DEF_SMETHOD(init, 0);
73
+ RG_DEF_SMETHOD(enter, 0);
74
+ RG_DEF_SMETHOD(leave, 0);
75
+ RG_DEF_SMETHOD(synchronize, 0);
76
+ #endif
77
+ }
@@ -0,0 +1,133 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2003 Masao Mutoh
5
+ *
6
+ * This library is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
+ * MA 02110-1301 USA
20
+ */
21
+
22
+ #include "rbgdk3private.h"
23
+
24
+ #define RG_TARGET_NAMESPACE cTimeCoord
25
+ #define _SELF(s) (RVAL2GDKTIMECOORD(s))
26
+
27
+ /**********************************/
28
+ static GdkTimeCoord*
29
+ timecoord_copy(const GdkTimeCoord* val)
30
+ {
31
+ GdkTimeCoord* new_val;
32
+ g_return_val_if_fail (val != NULL, NULL);
33
+ new_val = g_new(GdkTimeCoord, 1);
34
+ *new_val = *val;
35
+ return new_val;
36
+ }
37
+
38
+ GType
39
+ gdk_timecoord_get_type(void)
40
+ {
41
+ static GType our_type = 0;
42
+
43
+ if (our_type == 0)
44
+ our_type = g_boxed_type_register_static ("GdkTimeCoord",
45
+ (GBoxedCopyFunc)timecoord_copy,
46
+ (GBoxedFreeFunc)g_free);
47
+ return our_type;
48
+ }
49
+ /**********************************/
50
+
51
+ static VALUE
52
+ rg_initialize(VALUE self, VALUE rbtime, VALUE rbaxes)
53
+ {
54
+ guint32 time = NUM2UINT(rbtime);
55
+ long n;
56
+ gdouble *axes = RVAL2GDOUBLES(rbaxes, n);
57
+ GdkTimeCoord *coord;
58
+
59
+ if (n > GDK_MAX_TIMECOORD_AXES) {
60
+ g_free(axes);
61
+
62
+ rb_raise(rb_eArgError,
63
+ "axes out of range: %ld (0..%d)",
64
+ n, GDK_MAX_TIMECOORD_AXES);
65
+ }
66
+
67
+ coord = g_new(GdkTimeCoord, 1);
68
+ coord->time = time;
69
+ MEMCPY(coord->axes, axes, gdouble, n);
70
+
71
+ g_free(axes);
72
+
73
+ G_INITIALIZE(self, coord);
74
+
75
+ return Qnil;
76
+ }
77
+
78
+ static VALUE
79
+ rg_time(VALUE self)
80
+ {
81
+ return UINT2NUM(_SELF(self)->time);
82
+ }
83
+
84
+ static VALUE
85
+ rg_set_time(VALUE self, VALUE time)
86
+ {
87
+ _SELF(self)->time = NUM2UINT(time);
88
+ return self;
89
+ }
90
+
91
+ static VALUE
92
+ rg_axes(VALUE self)
93
+ {
94
+ VALUE ary = rb_ary_new();
95
+ int i;
96
+ for (i = 0; i < GDK_MAX_TIMECOORD_AXES; i++){
97
+ rb_ary_push(ary, rb_float_new(_SELF(self)->axes[i]));
98
+ }
99
+ return ary;
100
+ }
101
+
102
+ static VALUE
103
+ rg_set_axes(VALUE self, VALUE rbaxes)
104
+ {
105
+ GdkTimeCoord *coord = _SELF(self);
106
+ VALUE axes = rb_ary_to_ary(rbaxes);
107
+ long i;
108
+ long n = RARRAY_LEN(axes);
109
+
110
+ if (n < 0 || n > GDK_MAX_TIMECOORD_AXES)
111
+ rb_raise(rb_eArgError,
112
+ "axes out of range: %ld (0..%d)",
113
+ n, GDK_MAX_TIMECOORD_AXES);
114
+
115
+ for (i = 0; i < n; i++)
116
+ coord->axes[i] = NUM2DBL(RARRAY_PTR(axes)[i]);
117
+
118
+ return self;
119
+ }
120
+
121
+ void
122
+ Init_gdk_timecoord(VALUE mGdk)
123
+ {
124
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_TIME_COORD, "TimeCoord", mGdk);
125
+
126
+ RG_DEF_METHOD(initialize, 2);
127
+ RG_DEF_METHOD(time, 0);
128
+ RG_DEF_METHOD(set_time, 1);
129
+ RG_DEF_METHOD(axes, 0);
130
+ RG_DEF_METHOD(set_axes, 1);
131
+
132
+ rb_define_const(RG_TARGET_NAMESPACE, "MAX_AXES", INT2NUM(GDK_MAX_TIMECOORD_AXES));
133
+ }
@@ -0,0 +1,251 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002-2004 Masao Mutoh
5
+ * Copyright (C) 1998-2000 Yukihiro Matsumoto,
6
+ * Daisuke Kanda,
7
+ * Hiroshi Igarashi
8
+ *
9
+ * This library is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU Lesser General Public
11
+ * License as published by the Free Software Foundation; either
12
+ * version 2.1 of the License, or (at your option) any later version.
13
+ *
14
+ * This library is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ * Lesser General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Lesser General Public
20
+ * License along with this library; if not, write to the Free Software
21
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22
+ * MA 02110-1301 USA
23
+ */
24
+
25
+ #include "rbgdk3private.h"
26
+
27
+ #define RG_TARGET_NAMESPACE cVisual
28
+ #define _SELF(self) (RVAL2GDKVISUAL(self))
29
+
30
+ static VALUE
31
+ rg_s_query_depths(G_GNUC_UNUSED VALUE self)
32
+ {
33
+ gint *depth;
34
+ gint count;
35
+ VALUE ary;
36
+ int i;
37
+
38
+ gdk_query_depths(&depth, &count);
39
+ ary = rb_ary_new2(count);
40
+ for (i = 0; i < count; i++) {
41
+ rb_ary_push(ary, INT2NUM((depth)[i]));
42
+ }
43
+ return ary;
44
+ }
45
+
46
+ static VALUE
47
+ rg_s_query_visual_types(G_GNUC_UNUSED VALUE self)
48
+ {
49
+ GdkVisualType *visual_types;
50
+ gint count;
51
+ VALUE ary;
52
+ int i;
53
+
54
+ gdk_query_visual_types(&visual_types, &count);
55
+ ary = rb_ary_new2(count);
56
+ for (i = 0; i < count; i++) {
57
+ rb_ary_push(ary, GDKVISUALTYPE2RVAL((visual_types)[i]));
58
+ }
59
+ return ary;
60
+ }
61
+
62
+ static VALUE
63
+ rg_s_visuals(G_GNUC_UNUSED VALUE self)
64
+ {
65
+ GList *list = gdk_list_visuals(), *cur;
66
+ VALUE ary = rb_ary_new();
67
+
68
+ for (cur = list; cur != NULL; cur = cur->next) {
69
+ rb_ary_push(ary, GOBJ2RVAL((GdkVisual *)cur->data));
70
+ }
71
+ g_list_free(list);
72
+ return ary;
73
+ }
74
+
75
+ static VALUE
76
+ rg_s_best_depth(G_GNUC_UNUSED VALUE self)
77
+ {
78
+ return INT2NUM(gdk_visual_get_best_depth());
79
+ }
80
+
81
+ static VALUE
82
+ rg_s_best_type(G_GNUC_UNUSED VALUE self)
83
+ {
84
+ return INT2NUM(gdk_visual_get_best_type());
85
+ }
86
+
87
+ static VALUE
88
+ rg_s_system(G_GNUC_UNUSED VALUE self)
89
+ {
90
+ return GOBJ2RVAL(gdk_visual_get_system());
91
+ }
92
+
93
+ static VALUE
94
+ rg_s_best(G_GNUC_UNUSED VALUE self)
95
+ {
96
+ return GOBJ2RVAL(gdk_visual_get_best());
97
+ }
98
+
99
+ static VALUE
100
+ rg_s_best_with_depth(G_GNUC_UNUSED VALUE self, VALUE depth)
101
+ {
102
+ return GOBJ2RVAL(gdk_visual_get_best_with_depth(NUM2INT(depth)));
103
+ }
104
+
105
+ static VALUE
106
+ rg_s_best_with_type(G_GNUC_UNUSED VALUE self, VALUE type)
107
+ {
108
+ return GOBJ2RVAL(gdk_visual_get_best_with_depth(
109
+ (GdkVisualType)GDKVISUALTYPE2RVAL(type)));
110
+ }
111
+
112
+ static VALUE
113
+ rg_s_best_with_both(G_GNUC_UNUSED VALUE self, VALUE depth, VALUE type)
114
+ {
115
+ return GOBJ2RVAL(gdk_visual_get_best_with_both(
116
+ NUM2INT(depth),
117
+ (GdkVisualType)RVAL2GDKVISUALTYPE(type)));
118
+ }
119
+
120
+ static VALUE
121
+ rg_screen(VALUE self)
122
+ {
123
+ return GOBJ2RVAL(gdk_visual_get_screen(_SELF(self)));
124
+ }
125
+
126
+ /* Structure accessors */
127
+ static VALUE
128
+ rg_visual_type(VALUE self)
129
+ {
130
+ return GDKVISUALTYPE2RVAL(gdk_visual_get_visual_type(_SELF(self)));
131
+ }
132
+
133
+ static VALUE
134
+ rg_depth(VALUE self)
135
+ {
136
+ return INT2FIX(gdk_visual_get_depth(_SELF(self)));
137
+ }
138
+
139
+ static VALUE
140
+ rg_byte_order(VALUE self)
141
+ {
142
+ return GDKBYTEORDER2RVAL(gdk_visual_get_byte_order(_SELF(self)));
143
+ }
144
+
145
+ static VALUE
146
+ rg_colormap_size(VALUE self)
147
+ {
148
+ return INT2FIX(gdk_visual_get_colormap_size(_SELF(self)));
149
+ }
150
+
151
+ static VALUE
152
+ rg_bits_per_rgb(VALUE self)
153
+ {
154
+ return INT2FIX(gdk_visual_get_bits_per_rgb(_SELF(self)));
155
+ }
156
+
157
+ /* TODO
158
+ static VALUE
159
+ rg_red_mask(VALUE self)
160
+ {
161
+ return INT2FIX(_SELF(self)->red_mask);
162
+ }
163
+
164
+ static VALUE
165
+ rg_red_shift(VALUE self)
166
+ {
167
+ return INT2FIX(_SELF(self)->red_shift);
168
+ }
169
+
170
+ static VALUE
171
+ rg_red_prec(VALUE self)
172
+ {
173
+ return INT2FIX(_SELF(self)->red_prec);
174
+ }
175
+
176
+ static VALUE
177
+ rg_green_mask(VALUE self)
178
+ {
179
+ return INT2FIX(_SELF(self)->green_mask);
180
+ }
181
+
182
+ static VALUE
183
+ rg_green_shift(VALUE self)
184
+ {
185
+ return INT2FIX(_SELF(self)->green_shift);
186
+ }
187
+
188
+ static VALUE
189
+ rg_green_prec(VALUE self)
190
+ {
191
+ return INT2FIX(_SELF(self)->green_prec);
192
+ }
193
+
194
+ static VALUE
195
+ rg_blue_mask(VALUE self)
196
+ {
197
+ return INT2FIX(_SELF(self)->blue_mask);
198
+ }
199
+
200
+ static VALUE
201
+ rg_blue_shift(VALUE self)
202
+ {
203
+ return INT2FIX(_SELF(self)->blue_shift);
204
+ }
205
+
206
+ static VALUE
207
+ rg_blue_prec(VALUE self)
208
+ {
209
+ return INT2FIX(_SELF(self)->blue_prec);
210
+ }
211
+ */
212
+
213
+ void
214
+ Init_gdk_visual(VALUE mGdk)
215
+ {
216
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_VISUAL, "Visual", mGdk);
217
+
218
+ /* class methods */
219
+ RG_DEF_SMETHOD(query_depths, 0);
220
+ RG_DEF_SMETHOD(query_visual_types, 0);
221
+ RG_DEF_SMETHOD(visuals, 0);
222
+ RG_DEF_SMETHOD(best_depth, 0);
223
+ RG_DEF_SMETHOD(best_type, 0);
224
+ RG_DEF_SMETHOD(system, 0);
225
+ RG_DEF_SMETHOD(best, 0);
226
+ RG_DEF_SMETHOD(best_with_depth, 1);
227
+ RG_DEF_SMETHOD(best_with_type, 1);
228
+ RG_DEF_SMETHOD(best_with_both, 2);
229
+
230
+ /* instance methods */
231
+ RG_DEF_METHOD(screen, 0);
232
+ RG_DEF_METHOD(visual_type, 0);
233
+ RG_DEF_METHOD(depth, 0);
234
+ RG_DEF_METHOD(byte_order, 0);
235
+ RG_DEF_METHOD(colormap_size, 0);
236
+ RG_DEF_METHOD(bits_per_rgb, 0);
237
+ /* TODO
238
+ RG_DEF_METHOD(red_mask, 0);
239
+ RG_DEF_METHOD(red_shift, 0);
240
+ RG_DEF_METHOD(red_prec, 0);
241
+ RG_DEF_METHOD(green_mask, 0);
242
+ RG_DEF_METHOD(green_shift, 0);
243
+ RG_DEF_METHOD(green_prec, 0);
244
+ RG_DEF_METHOD(blue_mask, 0);
245
+ RG_DEF_METHOD(blue_shift, 0);
246
+ RG_DEF_METHOD(blue_prec, 0);
247
+ */
248
+
249
+ G_DEF_CLASS(GDK_TYPE_VISUAL_TYPE, "Type", RG_TARGET_NAMESPACE);
250
+ G_DEF_CLASS(GDK_TYPE_BYTE_ORDER, "ByteOrder", RG_TARGET_NAMESPACE);
251
+ }