libx11 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -5
  3. data/.travis.yml +1 -1
  4. data/Rakefile +1 -9
  5. data/example/aliases.rb +2 -0
  6. data/example/create_window.rb +15 -13
  7. data/example/window_manager.rb +30 -22
  8. data/lib/libx11.rb +4 -2
  9. data/lib/libx11/keysymdef.rb +2272 -0
  10. data/lib/libx11/version.rb +1 -1
  11. data/lib/libx11/x.rb +148 -0
  12. data/lib/libx11/xlib.rb +42 -0
  13. data/lib/libx11/xlib/display.rb +52 -0
  14. data/lib/libx11/xlib/xany_event.rb +13 -0
  15. data/lib/libx11/xlib/xbutton_event.rb +23 -0
  16. data/lib/libx11/xlib/xcirculate_event.rb +15 -0
  17. data/lib/libx11/xlib/xcirculate_request_event.rb +15 -0
  18. data/lib/libx11/xlib/xclient_message_event.rb +24 -0
  19. data/lib/libx11/xlib/xcolormap_event.rb +16 -0
  20. data/lib/libx11/xlib/xconfigure_event.rb +21 -0
  21. data/lib/libx11/xlib/xconfigure_request_event.rb +22 -0
  22. data/lib/libx11/xlib/xcreate_window_event.rb +20 -0
  23. data/lib/libx11/xlib/xcrossing_event.rb +25 -0
  24. data/lib/libx11/xlib/xdestroy_window_event.rb +14 -0
  25. data/lib/libx11/xlib/xerror_event.rb +15 -0
  26. data/lib/libx11/xlib/xevent.rb +77 -0
  27. data/lib/libx11/xlib/xexpose_event.rb +18 -0
  28. data/lib/libx11/xlib/xfocus_change_event.rb +15 -0
  29. data/lib/libx11/xlib/xgeneric_event.rb +14 -0
  30. data/lib/libx11/xlib/xgeneric_event_cookie.rb +16 -0
  31. data/lib/libx11/xlib/xgraphics_expose_event.rb +21 -0
  32. data/lib/libx11/xlib/xgravity_event.rb +16 -0
  33. data/lib/libx11/xlib/xkey_event.rb +23 -0
  34. data/lib/libx11/xlib/xkeymap_event.rb +14 -0
  35. data/lib/libx11/xlib/xmap_event.rb +15 -0
  36. data/lib/libx11/xlib/xmap_request_event.rb +18 -0
  37. data/lib/libx11/xlib/xmapping_event.rb +16 -0
  38. data/lib/libx11/xlib/xmotion_event.rb +23 -0
  39. data/lib/libx11/xlib/xno_expose_event.rb +15 -0
  40. data/lib/libx11/xlib/xproperty_event.rb +16 -0
  41. data/lib/libx11/xlib/xreparent_event.rb +18 -0
  42. data/lib/libx11/xlib/xresize_request_event.rb +15 -0
  43. data/lib/libx11/xlib/xselection_clear_event.rb +15 -0
  44. data/lib/libx11/xlib/xselection_event.rb +17 -0
  45. data/lib/libx11/xlib/xselection_request_event.rb +18 -0
  46. data/lib/libx11/xlib/xunmap_event.rb +15 -0
  47. data/lib/libx11/xlib/xvisibility_event.rb +14 -0
  48. data/libx11.gemspec +1 -1
  49. metadata +56 -13
  50. data/HACKING.md +0 -14
  51. data/ext/libx11_ruby/constants.c +0 -182
  52. data/ext/libx11_ruby/display.c +0 -197
  53. data/ext/libx11_ruby/extconf.rb +0 -6
  54. data/ext/libx11_ruby/libx11_ruby.c +0 -13
  55. data/ext/libx11_ruby/libx11_ruby.h +0 -14
  56. data/ext/libx11_ruby/window.c +0 -33
  57. data/ext/libx11_ruby/xerror_event.c +0 -104
  58. data/ext/libx11_ruby/xevent.c +0 -134
@@ -1,6 +0,0 @@
1
- require 'mkmf'
2
-
3
- $CFLAGS << ' -Wall -Wextra'
4
- abort 'Cannot find libx11' unless have_library('X11')
5
-
6
- create_makefile('libx11/libx11_ruby')
@@ -1,13 +0,0 @@
1
- #include "libx11_ruby.h"
2
-
3
- void
4
- Init_libx11_ruby(void)
5
- {
6
- rb_mLibX11 = rb_define_module("LibX11");
7
-
8
- Init_libx11_constants();
9
- Init_libx11_display();
10
- Init_libx11_window();
11
- Init_libx11_xerror_event();
12
- Init_libx11_xevent();
13
- }
@@ -1,14 +0,0 @@
1
- #ifndef LIBX11_RUBY_H
2
- #define LIBX11_RUBY_H 1
3
-
4
- #include "ruby.h"
5
-
6
- VALUE rb_mLibX11;
7
-
8
- void Init_libx11_constants(void);
9
- void Init_libx11_display(void);
10
- void Init_libx11_window(void);
11
- void Init_libx11_xerror_event(void);
12
- void Init_libx11_xevent(void);
13
-
14
- #endif /* LIBX11_RUBY_H */
@@ -1,33 +0,0 @@
1
- #include "libx11_ruby.h"
2
- #include <X11/Xlib.h>
3
-
4
- extern Display* get_display_struct(VALUE);
5
-
6
- /*
7
- * Xlib XCreateSimpleWindow
8
- */
9
- static VALUE
10
- rb_libx11_xcreate_simple_window(VALUE self, VALUE display_obj, VALUE parent_window, VALUE x, VALUE y,
11
- VALUE width, VALUE height, VALUE border_width, VALUE border_color, VALUE background_color)
12
- {
13
- Window ret = XCreateSimpleWindow(get_display_struct(display_obj), NUM2ULONG(parent_window), NUM2INT(x), NUM2INT(y),
14
- NUM2UINT(width), NUM2UINT(height), FIX2UINT(border_width), NUM2ULONG(border_color), NUM2ULONG(background_color));
15
- return ULONG2NUM(ret);
16
- }
17
-
18
- /*
19
- * Xlib XDestroyWindow
20
- */
21
- static VALUE
22
- rb_libx11_xdestroy_window(VALUE self, VALUE display_obj, VALUE window)
23
- {
24
- int ret = XDestroyWindow(get_display_struct(display_obj), NUM2ULONG(window));
25
- return INT2NUM(ret);
26
- }
27
-
28
- void
29
- Init_libx11_window(void)
30
- {
31
- rb_define_singleton_method(rb_mLibX11, "xcreate_simple_window", rb_libx11_xcreate_simple_window, 9);
32
- rb_define_singleton_method(rb_mLibX11, "xdestroy_window", rb_libx11_xdestroy_window, 2);
33
- }
@@ -1,104 +0,0 @@
1
- #include "libx11_ruby.h"
2
- #include <X11/Xlib.h>
3
-
4
- extern VALUE rb_cDisplay;
5
- VALUE rb_cXErrorEvent;
6
-
7
- extern rb_data_type_t display_type;
8
-
9
- static size_t
10
- xerror_event_dsize(const void *arg)
11
- {
12
- const XErrorEvent *event = arg;
13
- return sizeof(event);
14
- }
15
-
16
- const rb_data_type_t xerror_event_type = {
17
- .wrap_struct_name = "libx11_xerror_event",
18
- .function = {
19
- .dmark = NULL,
20
- .dfree = NULL,
21
- .dsize = xerror_event_dsize,
22
- .reserved = { NULL, NULL },
23
- },
24
- .parent = NULL,
25
- .data = NULL,
26
- .flags = RUBY_TYPED_FREE_IMMEDIATELY,
27
- };
28
-
29
- static VALUE error_handler_proc = Qnil;
30
-
31
- static int
32
- error_handler_func(Display *display, XErrorEvent *event)
33
- {
34
- if (NIL_P(error_handler_proc)) {
35
- return 1;
36
- } else {
37
- VALUE args = rb_ary_new();
38
- rb_ary_push(args, TypedData_Wrap_Struct(rb_cDisplay, &display_type, display));
39
- rb_ary_push(args, TypedData_Wrap_Struct(rb_cXErrorEvent, &xerror_event_type, event));
40
- rb_proc_call(error_handler_proc, args);
41
- return 0;
42
- }
43
- }
44
-
45
- /*
46
- * Xlib XSetErrorHandler
47
- */
48
- static VALUE
49
- rb_libx11_xset_error_handler(int argc, VALUE *argv, VALUE self)
50
- {
51
- rb_check_arity(argc, 0, 0);
52
- rb_scan_args(argc, argv, "00&", &error_handler_proc);
53
-
54
- XSetErrorHandler(error_handler_func);
55
- return Qnil;
56
- }
57
-
58
- static VALUE
59
- rb_xerror_event_error_code(VALUE self)
60
- {
61
- XErrorEvent *event;
62
- TypedData_Get_Struct(self, XErrorEvent, &xerror_event_type, event);
63
- return INT2FIX(event->error_code);
64
- }
65
-
66
- static VALUE
67
- rb_xerror_event_type(VALUE self)
68
- {
69
- XErrorEvent *event;
70
- TypedData_Get_Struct(self, XErrorEvent, &xerror_event_type, event);
71
- return INT2FIX(event->type);
72
- }
73
-
74
- void
75
- Init_libx11_xerror_event(void)
76
- {
77
- rb_define_singleton_method(rb_mLibX11, "xset_error_handler", rb_libx11_xset_error_handler, -1);
78
-
79
- rb_cXErrorEvent = rb_define_class_under(rb_mLibX11, "XErrorEvent", rb_cData);
80
- rb_define_method(rb_cXErrorEvent, "error_code", rb_xerror_event_error_code, 0);
81
- rb_define_method(rb_cXErrorEvent, "type", rb_xerror_event_type, 0);
82
-
83
- // error codes
84
- rb_define_const(rb_cXErrorEvent, "SUCCESS", INT2FIX(Success));
85
- rb_define_const(rb_cXErrorEvent, "BAD_REQUEST", INT2FIX(BadRequest));
86
- rb_define_const(rb_cXErrorEvent, "BAD_VALUE", INT2FIX(BadValue));
87
- rb_define_const(rb_cXErrorEvent, "BAD_WINDOW", INT2FIX(BadWindow));
88
- rb_define_const(rb_cXErrorEvent, "BAD_PIXMAP", INT2FIX(BadPixmap));
89
- rb_define_const(rb_cXErrorEvent, "BAD_ATOM", INT2FIX(BadAtom));
90
- rb_define_const(rb_cXErrorEvent, "BAD_CURSOR", INT2FIX(BadCursor));
91
- rb_define_const(rb_cXErrorEvent, "BAD_FONT", INT2FIX(BadFont));
92
- rb_define_const(rb_cXErrorEvent, "BAD_MATCH", INT2FIX(BadMatch));
93
- rb_define_const(rb_cXErrorEvent, "BAD_DRAWABLE", INT2FIX(BadDrawable));
94
- rb_define_const(rb_cXErrorEvent, "BAD_ACCESS", INT2FIX(BadAccess));
95
- rb_define_const(rb_cXErrorEvent, "BAD_ALLOC", INT2FIX(BadAlloc));
96
- rb_define_const(rb_cXErrorEvent, "BAD_COLOR", INT2FIX(BadColor));
97
- rb_define_const(rb_cXErrorEvent, "BAD_GC", INT2FIX(BadGC));
98
- rb_define_const(rb_cXErrorEvent, "BAD_ID_CHOICE", INT2FIX(BadIDChoice));
99
- rb_define_const(rb_cXErrorEvent, "BAD_NAME", INT2FIX(BadName));
100
- rb_define_const(rb_cXErrorEvent, "BAD_LENGTH", INT2FIX(BadLength));
101
- rb_define_const(rb_cXErrorEvent, "BAD_IMPLEMENTATION", INT2FIX(BadImplementation));
102
- rb_define_const(rb_cXErrorEvent, "FIRST_EXTENSION_ERROR", INT2FIX(FirstExtensionError));
103
- rb_define_const(rb_cXErrorEvent, "LAST_EXTENSION_ERROR", INT2FIX(LastExtensionError));
104
- }
@@ -1,134 +0,0 @@
1
- #include "libx11_ruby.h"
2
- #include <X11/Xlib.h>
3
-
4
- VALUE rb_cXEvent, rb_cXKeyEvent;
5
-
6
- extern Display* get_display_struct(VALUE);
7
-
8
- static void
9
- xevent_dfree(void *arg)
10
- {
11
- XEvent *event = arg;
12
- free(event);
13
- }
14
-
15
- static size_t
16
- xevent_dsize(const void *arg)
17
- {
18
- const XEvent *event = arg;
19
- return sizeof(event);
20
- }
21
-
22
- const rb_data_type_t xevent_type = {
23
- .wrap_struct_name = "libx11_xevent",
24
- .function = {
25
- .dmark = NULL,
26
- .dfree = xevent_dfree,
27
- .dsize = xevent_dsize,
28
- .reserved = { NULL, NULL },
29
- },
30
- .parent = NULL,
31
- .data = NULL,
32
- .flags = RUBY_TYPED_FREE_IMMEDIATELY,
33
- };
34
-
35
- /*
36
- * Xlib XNextEvent
37
- */
38
- static VALUE
39
- rb_libx11_xnext_event(VALUE self, VALUE obj)
40
- {
41
- XEvent *event = (XEvent *)malloc(sizeof(XEvent));
42
- XNextEvent(get_display_struct(obj), event);
43
- switch (event->type) {
44
- case KeyPress:
45
- return TypedData_Wrap_Struct(rb_cXKeyEvent, &xevent_type, event);
46
- default:
47
- return TypedData_Wrap_Struct(rb_cXEvent, &xevent_type, event);
48
- }
49
- }
50
-
51
- static VALUE
52
- rb_xevent_type(VALUE self)
53
- {
54
- XEvent *event;
55
-
56
- TypedData_Get_Struct(self, XEvent, &xevent_type, event);
57
- return INT2NUM(event->type);
58
- }
59
-
60
- static VALUE
61
- rb_xkey_event_state(VALUE self)
62
- {
63
- XEvent *event;
64
-
65
- TypedData_Get_Struct(self, XEvent, &xevent_type, event);
66
- return UINT2NUM(event->xkey.state);
67
- }
68
-
69
- /*
70
- * KeySym XLookupKeysym(
71
- * XKeyEvent* key_event,
72
- * int index
73
- * );
74
- */
75
- static VALUE
76
- rb_libx11_xlookup_keysym(VALUE self, VALUE event_obj, VALUE index)
77
- {
78
- XEvent *event;
79
- unsigned long keysym;
80
-
81
- TypedData_Get_Struct(event_obj, XEvent, &xevent_type, event);
82
- keysym = XLookupKeysym(&event->xkey, NUM2INT(index));
83
- return ULONG2NUM(keysym);
84
- }
85
-
86
- void
87
- Init_libx11_xevent(void)
88
- {
89
- rb_define_singleton_method(rb_mLibX11, "xnext_event", rb_libx11_xnext_event, 1);
90
- rb_define_singleton_method(rb_mLibX11, "xlookup_keysym", rb_libx11_xlookup_keysym, 2);
91
-
92
- rb_cXEvent = rb_define_class_under(rb_mLibX11, "XEvent", rb_cData);
93
- rb_define_method(rb_cXEvent, "type", rb_xevent_type, 0);
94
-
95
- rb_cXKeyEvent = rb_define_class_under(rb_mLibX11, "XKeyEvent", rb_cXEvent);
96
- rb_define_method(rb_cXKeyEvent, "state", rb_xkey_event_state, 0);
97
-
98
- // event
99
- rb_define_const(rb_cXEvent, "KEY_PRESS", INT2FIX(KeyPress));
100
- rb_define_const(rb_cXEvent, "KEY_RELEASE", INT2FIX(KeyRelease));
101
- rb_define_const(rb_cXEvent, "BUTTON_PRESS", INT2FIX(ButtonPress));
102
- rb_define_const(rb_cXEvent, "BUTTON_RELEASE", INT2FIX(ButtonRelease));
103
- rb_define_const(rb_cXEvent, "MOTION_NOTIFY", INT2FIX(MotionNotify));
104
- rb_define_const(rb_cXEvent, "ENTER_NOTIFY", INT2FIX(EnterNotify));
105
- rb_define_const(rb_cXEvent, "LEAVE_NOTIFY", INT2FIX(LeaveNotify));
106
- rb_define_const(rb_cXEvent, "FOCUS_IN", INT2FIX(FocusIn));
107
- rb_define_const(rb_cXEvent, "FOCUS_OUT", INT2FIX(FocusOut));
108
- rb_define_const(rb_cXEvent, "KEYMAP_NOTIFY", INT2FIX(KeymapNotify));
109
- rb_define_const(rb_cXEvent, "EXPOSE", INT2FIX(Expose));
110
- rb_define_const(rb_cXEvent, "GRAPHICS_EXPOSE", INT2FIX(GraphicsExpose));
111
- rb_define_const(rb_cXEvent, "NO_EXPOSE", INT2FIX(NoExpose));
112
- rb_define_const(rb_cXEvent, "VISIBILITY_NOTIFY", INT2FIX(VisibilityNotify));
113
- rb_define_const(rb_cXEvent, "CREATE_NOTIFY", INT2FIX(CreateNotify));
114
- rb_define_const(rb_cXEvent, "DESTROY_NOTIFY", INT2FIX(DestroyNotify));
115
- rb_define_const(rb_cXEvent, "UNMAP_NOTIFY", INT2FIX(UnmapNotify));
116
- rb_define_const(rb_cXEvent, "MAP_NOTIFY", INT2FIX(MapNotify));
117
- rb_define_const(rb_cXEvent, "MAP_REQUEST", INT2FIX(MapRequest));
118
- rb_define_const(rb_cXEvent, "REPARENT_NOTIFY", INT2FIX(ReparentNotify));
119
- rb_define_const(rb_cXEvent, "CONFIGURE_NOTIFY", INT2FIX(ConfigureNotify));
120
- rb_define_const(rb_cXEvent, "CONFIGURE_REQUEST", INT2FIX(ConfigureRequest));
121
- rb_define_const(rb_cXEvent, "GRAVITY_NOTIFY", INT2FIX(GravityNotify));
122
- rb_define_const(rb_cXEvent, "RESIZE_REQUEST", INT2FIX(ResizeRequest));
123
- rb_define_const(rb_cXEvent, "CIRCULATE_NOTIFY", INT2FIX(CirculateNotify));
124
- rb_define_const(rb_cXEvent, "CIRCULATE_REQUEST", INT2FIX(CirculateRequest));
125
- rb_define_const(rb_cXEvent, "PROPERTY_NOTIFY", INT2FIX(PropertyNotify));
126
- rb_define_const(rb_cXEvent, "SELECTION_CLEAR", INT2FIX(SelectionClear));
127
- rb_define_const(rb_cXEvent, "SELECTION_REQUEST", INT2FIX(SelectionRequest));
128
- rb_define_const(rb_cXEvent, "SELKECTION_NOTIFY", INT2FIX(SelectionNotify));
129
- rb_define_const(rb_cXEvent, "COLORMAP_NOTIFY", INT2FIX(ColormapNotify));
130
- rb_define_const(rb_cXEvent, "CLIENT_MESSAGE", INT2FIX(ClientMessage));
131
- rb_define_const(rb_cXEvent, "MAPPING_NOTIFY", INT2FIX(MappingNotify));
132
- rb_define_const(rb_cXEvent, "GENERIC_EVENT", INT2FIX(GenericEvent));
133
- rb_define_const(rb_cXEvent, "LAST_EVENT", INT2FIX(LASTEvent));
134
- }