x11 0.0.1a2 → 0.0.1a3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. data/lib/X11/X.rb +14 -9
  2. data/lib/X11/X/c.rb +21 -20
  3. data/lib/X11/XKBlib.rb +29 -0
  4. data/lib/X11/Xatom.rb +152 -136
  5. data/lib/X11/Xatom/c.rb +15 -15
  6. data/lib/X11/Xdefs.rb +7 -7
  7. data/lib/X11/Xdefs/c.rb +20 -20
  8. data/lib/X11/Xlib.rb +19 -7
  9. data/lib/X11/Xlib/c.rb +21 -8
  10. data/lib/X11/Xlib/c/functions.rb +373 -27
  11. data/lib/X11/Xlib/c/type/any_event.rb +13 -13
  12. data/lib/X11/Xlib/c/type/button_event.rb +23 -23
  13. data/lib/X11/Xlib/c/type/circulate_event.rb +15 -15
  14. data/lib/X11/Xlib/c/type/circulate_request_event.rb +15 -15
  15. data/lib/X11/Xlib/c/type/client_message_event.rb +22 -22
  16. data/lib/X11/Xlib/c/type/colormap_event.rb +16 -16
  17. data/lib/X11/Xlib/c/type/configure_event.rb +21 -21
  18. data/lib/X11/Xlib/c/type/configure_request_event.rb +22 -22
  19. data/lib/X11/Xlib/c/type/create_window_event.rb +20 -20
  20. data/lib/X11/Xlib/c/type/crossing_event.rb +25 -25
  21. data/lib/X11/Xlib/c/type/destroy_window_event.rb +14 -14
  22. data/lib/X11/Xlib/c/type/display.rb +52 -52
  23. data/lib/X11/Xlib/c/type/error_event.rb +15 -15
  24. data/lib/X11/Xlib/c/type/event.rb +43 -43
  25. data/lib/X11/Xlib/c/type/expose_event.rb +18 -18
  26. data/lib/X11/Xlib/c/type/focus_change_event.rb +15 -15
  27. data/lib/X11/Xlib/c/type/gc.rb +10 -10
  28. data/lib/X11/Xlib/c/type/gc_values.rb +54 -0
  29. data/lib/X11/Xlib/c/type/generic_event.rb +14 -14
  30. data/lib/X11/Xlib/c/type/generic_event_cookie.rb +16 -16
  31. data/lib/X11/Xlib/c/type/graphics_expose_event.rb +21 -21
  32. data/lib/X11/Xlib/c/type/gravity_event.rb +16 -16
  33. data/lib/X11/Xlib/c/type/image.rb +56 -0
  34. data/lib/X11/Xlib/c/type/key_event.rb +23 -23
  35. data/lib/X11/Xlib/c/type/key_sym.rb +15 -15
  36. data/lib/X11/Xlib/c/type/keymap_event.rb +14 -14
  37. data/lib/X11/Xlib/c/type/map_event.rb +15 -15
  38. data/lib/X11/Xlib/c/type/map_request_event.rb +18 -18
  39. data/lib/X11/Xlib/c/type/mapping_event.rb +16 -16
  40. data/lib/X11/Xlib/c/type/motion_event.rb +23 -23
  41. data/lib/X11/Xlib/c/type/no_expose_event.rb +15 -15
  42. data/lib/X11/Xlib/c/type/point.rb +33 -0
  43. data/lib/X11/Xlib/c/type/property_event.rb +16 -16
  44. data/lib/X11/Xlib/c/type/reparent_event.rb +18 -18
  45. data/lib/X11/Xlib/c/type/resize_request_event.rb +15 -15
  46. data/lib/X11/Xlib/c/type/screen.rb +27 -27
  47. data/lib/X11/Xlib/c/type/selection_clear_event.rb +15 -15
  48. data/lib/X11/Xlib/c/type/selection_event.rb +17 -17
  49. data/lib/X11/Xlib/c/type/selection_request_event.rb +18 -18
  50. data/lib/X11/Xlib/c/type/status.rb +15 -15
  51. data/lib/X11/Xlib/c/type/unmap_event.rb +15 -15
  52. data/lib/X11/Xlib/c/type/visibility_event.rb +14 -14
  53. data/lib/X11/Xlib/c/type/visual.rb +16 -16
  54. data/lib/X11/Xlib/c/type/window_attributes.rb +31 -31
  55. data/lib/X11/Xlib/c/types.rb +9 -7
  56. data/lib/X11/Xlib/display.rb +257 -174
  57. data/lib/X11/Xlib/display/extensions.rb +56 -0
  58. data/lib/X11/Xlib/drawable.rb +48 -0
  59. data/lib/X11/Xlib/error.rb +100 -0
  60. data/lib/X11/Xlib/event.rb +66 -37
  61. data/lib/X11/Xlib/event/any.rb +8 -10
  62. data/lib/X11/Xlib/event/button_press.rb +9 -20
  63. data/lib/X11/Xlib/event/button_release.rb +9 -20
  64. data/lib/X11/Xlib/event/circulate_notify.rb +11 -12
  65. data/lib/X11/Xlib/event/circulate_request.rb +11 -12
  66. data/lib/X11/Xlib/event/client_message.rb +11 -13
  67. data/lib/X11/Xlib/event/colormap_notify.rb +12 -13
  68. data/lib/X11/Xlib/event/configure_notify.rb +17 -18
  69. data/lib/X11/Xlib/event/configure_request.rb +18 -19
  70. data/lib/X11/Xlib/event/create_notify.rb +16 -17
  71. data/lib/X11/Xlib/event/destroy_notify.rb +10 -11
  72. data/lib/X11/Xlib/event/enter_notify.rb +10 -8
  73. data/lib/X11/Xlib/event/expose.rb +15 -16
  74. data/lib/X11/Xlib/event/focus_in.rb +9 -12
  75. data/lib/X11/Xlib/event/focus_out.rb +9 -12
  76. data/lib/X11/Xlib/event/generic.rb +35 -0
  77. data/lib/X11/Xlib/event/generic/button.rb +46 -0
  78. data/lib/X11/Xlib/event/generic/crossing.rb +48 -0
  79. data/lib/X11/Xlib/{window/properties/property/class.rb → event/generic/focus_change.rb} +16 -14
  80. data/lib/X11/Xlib/event/generic/key.rb +46 -0
  81. data/lib/X11/Xlib/event/generic/motion.rb +46 -0
  82. data/lib/X11/Xlib/event/generic_event.rb +12 -14
  83. data/lib/X11/Xlib/event/graphics_expose.rb +15 -14
  84. data/lib/X11/Xlib/event/gravity_notify.rb +12 -13
  85. data/lib/X11/Xlib/event/helper.rb +123 -91
  86. data/lib/X11/Xlib/event/key_press.rb +9 -20
  87. data/lib/X11/Xlib/event/key_release.rb +9 -20
  88. data/lib/X11/Xlib/event/keymap_notify.rb +13 -14
  89. data/lib/X11/Xlib/event/leave_notify.rb +10 -20
  90. data/lib/X11/Xlib/event/map_notify.rb +11 -12
  91. data/lib/X11/Xlib/event/map_request.rb +10 -11
  92. data/lib/X11/Xlib/event/mapping_notify.rb +11 -13
  93. data/lib/X11/Xlib/event/motion_notify.rb +10 -20
  94. data/lib/X11/Xlib/event/no_expose.rb +8 -9
  95. data/lib/X11/Xlib/event/property_notify.rb +12 -13
  96. data/lib/X11/Xlib/event/reparent_notify.rb +14 -15
  97. data/lib/X11/Xlib/event/resize_request.rb +11 -12
  98. data/lib/X11/Xlib/event/selection_clear.rb +10 -12
  99. data/lib/X11/Xlib/event/selection_notify.rb +13 -15
  100. data/lib/X11/Xlib/event/selection_request.rb +14 -16
  101. data/lib/X11/Xlib/event/unmap_notify.rb +11 -12
  102. data/lib/X11/Xlib/event/visibility_notify.rb +10 -11
  103. data/lib/X11/Xlib/events.rb +11 -7
  104. data/lib/X11/Xlib/exceptions.rb +10 -10
  105. data/lib/X11/Xlib/graphic_context.rb +69 -0
  106. data/lib/X11/Xlib/graphic_context/functions.rb +50 -0
  107. data/lib/X11/Xlib/{window/properties/property/command.rb → graphic_context/values.rb} +17 -13
  108. data/lib/X11/Xlib/hints.rb +19 -18
  109. data/lib/X11/Xlib/hints/flags.rb +15 -15
  110. data/lib/X11/Xlib/hints/icon.rb +14 -16
  111. data/lib/X11/Xlib/id.rb +75 -0
  112. data/lib/X11/Xlib/image.rb +64 -0
  113. data/lib/X11/Xlib/keysym.rb +53 -26
  114. data/lib/X11/Xlib/mask.rb +81 -55
  115. data/lib/X11/Xlib/pixmap.rb +60 -0
  116. data/lib/X11/Xlib/planes.rb +50 -0
  117. data/lib/X11/Xlib/revert_to.rb +10 -10
  118. data/lib/X11/Xlib/screen.rb +48 -31
  119. data/lib/X11/Xlib/status.rb +56 -56
  120. data/lib/X11/Xlib/transform.rb +25 -25
  121. data/lib/X11/Xlib/visual.rb +19 -19
  122. data/lib/X11/Xlib/window.rb +399 -188
  123. data/lib/X11/Xlib/window/attributes.rb +74 -41
  124. data/lib/X11/Xlib/window/properties.rb +57 -38
  125. data/lib/X11/Xlib/window/properties/property.rb +135 -70
  126. data/lib/X11/Xlib/window/properties/property/net_virtual_root.rb +13 -13
  127. data/lib/X11/Xlib/window/properties/property/parser.rb +45 -35
  128. data/lib/X11/Xlib/window/properties/property/parser/arc.rb +18 -16
  129. data/lib/X11/Xlib/window/properties/property/parser/atom.rb +14 -10
  130. data/lib/X11/Xlib/window/properties/property/parser/cardinal.rb +14 -9
  131. data/lib/X11/Xlib/window/properties/property/parser/hints.rb +17 -16
  132. data/lib/X11/Xlib/window/properties/property/parser/integer.rb +39 -0
  133. data/lib/X11/Xlib/window/properties/property/parser/state.rb +39 -0
  134. data/lib/X11/Xlib/window/properties/property/parser/string.rb +59 -0
  135. data/lib/X11/Xlib/window/properties/property/parser/window.rb +39 -0
  136. data/lib/X11/Xmd.rb +7 -7
  137. data/lib/X11/Xmd/c.rb +19 -19
  138. data/lib/X11/Xregion.rb +32 -0
  139. data/lib/X11/Xregion/c.rb +29 -0
  140. data/lib/X11/Xregion/c/type/box.rb +35 -0
  141. data/lib/X11/Xregion/c/type/point_block.rb +33 -0
  142. data/lib/X11/Xregion/c/type/rectangle.rb +35 -0
  143. data/lib/X11/Xregion/c/type/region.rb +35 -0
  144. data/lib/X11/Xregion/c/types.rb +32 -0
  145. data/lib/X11/Xutil.rb +12 -17
  146. data/lib/X11/Xutil/c.rb +7 -10
  147. data/lib/X11/Xutil/c/functions.rb +7 -7
  148. data/lib/X11/Xutil/c/type/class_hint.rb +10 -10
  149. data/lib/X11/Xutil/c/type/region.rb +31 -0
  150. data/lib/X11/Xutil/c/type/text_property.rb +12 -12
  151. data/lib/X11/Xutil/c/types.rb +8 -7
  152. data/lib/X11/Xutil/state.rb +43 -0
  153. data/lib/X11/Xutil/window.rb +28 -28
  154. data/lib/X11/cursorfont.rb +7 -7
  155. data/lib/X11/cursorfont/c.rb +8 -8
  156. data/lib/X11/cursorfont/font.rb +113 -113
  157. data/lib/X11/extension.rb +65 -0
  158. data/lib/X11/extensions.rb +105 -126
  159. data/lib/X11/extensions/Xrandr.rb +49 -0
  160. data/lib/X11/extensions/Xrandr/c.rb +30 -0
  161. data/lib/X11/extensions/Xrandr/c/functions.rb +106 -0
  162. data/lib/X11/extensions/Xrandr/c/type/crtc_gamma.rb +35 -0
  163. data/lib/X11/extensions/Xrandr/c/type/crtc_info.rb +43 -0
  164. data/lib/X11/extensions/Xrandr/c/type/crtc_transform_attributes.rb +39 -0
  165. data/lib/X11/extensions/Xrandr/c/type/mode_info.rb +45 -0
  166. data/lib/X11/extensions/Xrandr/c/type/output_info.rb +46 -0
  167. data/lib/X11/extensions/Xrandr/c/type/panning.rb +44 -0
  168. data/lib/X11/extensions/Xrandr/c/type/property_info.rb +36 -0
  169. data/lib/X11/extensions/Xrandr/c/type/screen_resources.rb +39 -0
  170. data/lib/X11/extensions/Xrandr/c/type/screen_size.rb +35 -0
  171. data/lib/X11/extensions/Xrandr/c/types.rb +48 -0
  172. data/lib/X11/extensions/Xrandr/crtc.rb +70 -0
  173. data/lib/X11/extensions/Xrandr/crtc/gamma.rb +100 -0
  174. data/lib/X11/extensions/Xrandr/crtc/info.rb +62 -0
  175. data/lib/X11/extensions/Xrandr/crtc/panning.rb +74 -0
  176. data/lib/X11/extensions/Xrandr/event.rb +29 -0
  177. data/lib/X11/extensions/Xrandr/output.rb +59 -0
  178. data/lib/X11/extensions/Xrandr/output/info.rb +105 -0
  179. data/lib/X11/extensions/Xrandr/output/properties.rb +78 -0
  180. data/lib/X11/extensions/Xrandr/output/properties/property.rb +161 -0
  181. data/lib/X11/extensions/Xrandr/output/properties/property/info.rb +73 -0
  182. data/lib/X11/extensions/Xrandr/output/properties/property/parser.rb +73 -0
  183. data/lib/X11/extensions/Xrandr/output/properties/property/parser/atom.rb +39 -0
  184. data/lib/X11/extensions/Xrandr/output/properties/property/parser/integer.rb +43 -0
  185. data/lib/X11/extensions/Xrandr/screen.rb +49 -0
  186. data/lib/X11/extensions/Xrandr/screen/backlight.rb +76 -0
  187. data/lib/X11/extensions/Xrandr/screen_resources.rb +81 -0
  188. data/lib/X11/extensions/Xrandr/window.rb +41 -0
  189. data/lib/X11/extensions/Xrender.rb +34 -0
  190. data/lib/X11/extensions/Xrender/c.rb +30 -0
  191. data/lib/X11/extensions/Xrender/c/functions.rb +50 -0
  192. data/lib/X11/extensions/Xrender/c/type/anim_cursor.rb +33 -0
  193. data/lib/X11/extensions/Xrender/c/type/circle.rb +34 -0
  194. data/lib/X11/extensions/Xrender/c/type/conical_gradient.rb +33 -0
  195. data/lib/X11/extensions/Xrender/c/type/filters.rb +35 -0
  196. data/lib/X11/extensions/Xrender/c/type/glyph_elt16.rb +36 -0
  197. data/lib/X11/extensions/Xrender/c/type/glyph_elt32.rb +36 -0
  198. data/lib/X11/extensions/Xrender/c/type/glyph_elt8.rb +36 -0
  199. data/lib/X11/extensions/Xrender/c/type/glyph_info.rb +37 -0
  200. data/lib/X11/extensions/Xrender/c/type/index_value.rb +36 -0
  201. data/lib/X11/extensions/Xrender/c/type/line_fixed.rb +33 -0
  202. data/lib/X11/extensions/Xrender/c/type/linear_gradient.rb +33 -0
  203. data/lib/X11/extensions/Xrender/c/type/point_double.rb +33 -0
  204. data/lib/X11/extensions/Xrender/c/type/point_fixed.rb +33 -0
  205. data/lib/X11/extensions/Xrender/c/type/radial_gradient.rb +33 -0
  206. data/lib/X11/extensions/Xrender/c/type/render_color.rb +35 -0
  207. data/lib/X11/extensions/Xrender/c/type/render_direct_format.rb +39 -0
  208. data/lib/X11/extensions/Xrender/c/type/render_pict_format.rb +36 -0
  209. data/lib/X11/extensions/Xrender/c/type/render_picture_attributes.rb +44 -0
  210. data/lib/X11/extensions/Xrender/c/type/span_fix.rb +34 -0
  211. data/lib/X11/extensions/Xrender/c/type/transform.rb +32 -0
  212. data/lib/X11/extensions/Xrender/c/type/trap.rb +33 -0
  213. data/lib/X11/extensions/Xrender/c/type/trapezoid.rb +35 -0
  214. data/lib/X11/extensions/Xrender/c/type/triangle.rb +34 -0
  215. data/lib/X11/extensions/Xrender/c/types.rb +56 -0
  216. data/lib/X11/extensions/Xrender/mask.rb +48 -0
  217. data/lib/X11/extensions/randr.rb +29 -0
  218. data/lib/X11/extensions/randr/c.rb +38 -0
  219. data/lib/X11/extensions/render.rb +29 -0
  220. data/lib/X11/extensions/render/c.rb +34 -0
  221. data/lib/X11/extensions/xf86vmode.rb +42 -0
  222. data/lib/X11/extensions/xf86vmode/c.rb +30 -0
  223. data/lib/X11/extensions/xf86vmode/c/functions.rb +59 -0
  224. data/lib/X11/extensions/xf86vmode/c/type/gamma.rb +34 -0
  225. data/lib/X11/extensions/xf86vmode/c/type/mode_info.rb +44 -0
  226. data/lib/X11/extensions/xf86vmode/c/type/mode_line.rb +43 -0
  227. data/lib/X11/extensions/xf86vmode/c/type/monitor.rb +38 -0
  228. data/lib/X11/extensions/xf86vmode/c/type/sync_range.rb +33 -0
  229. data/lib/X11/extensions/xf86vmode/c/types.rb +36 -0
  230. data/lib/X11/extensions/xf86vmode/screen.rb +53 -0
  231. data/lib/X11/extensions/xf86vmode/screen/gamma.rb +79 -0
  232. data/lib/X11/extensions/xf86vmode/screen/gamma/ramp.rb +86 -0
  233. data/lib/X11/keysym.rb +7 -25
  234. data/lib/X11/misc/temperature.rb +458 -0
  235. data/lib/X11/simple.rb +8 -7
  236. data/lib/X11/simple/display.rb +35 -37
  237. data/lib/X11/simple/window.rb +39 -19
  238. data/lib/X11/window_manager.rb +32 -0
  239. data/lib/X11/window_manager/desktops.rb +82 -0
  240. data/lib/X11/window_manager/desktops/desktop.rb +78 -0
  241. data/lib/X11/window_manager/supports.rb +56 -0
  242. data/lib/X11/window_manager/supports/feature.rb +46 -0
  243. data/lib/X11/window_manager/window.rb +102 -0
  244. data/lib/X11/window_manager/window_manager.rb +73 -0
  245. metadata +216 -66
@@ -0,0 +1,56 @@
1
+ #--
2
+ # Copyleft meh. [http://meh.paranoid.pk | meh@paranoici.org]
3
+ #
4
+ # Redistribution and use in source and binary forms, with or without modification, are
5
+ # permitted provided that the following conditions are met:
6
+ #
7
+ # 1. Redistributions of source code must retain the above copyright notice, this list of
8
+ # conditions and the following disclaimer.
9
+ #
10
+ # 2. Redistributions in binary form must reproduce the above copyright notice, this list
11
+ # of conditions and the following disclaimer in the documentation and/or other materials
12
+ # provided with the distribution.
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY meh ''AS IS'' AND ANY EXPRESS OR IMPLIED
15
+ # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16
+ # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL meh OR
17
+ # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20
+ # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22
+ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
+ #
24
+ # The views and conclusions contained in the software and documentation are those of the
25
+ # authors and should not be interpreted as representing official policies, either expressed
26
+ # or implied.
27
+ #++
28
+
29
+ module X11; class Display
30
+
31
+ class Extensions < Array
32
+ attr_reader :display
33
+
34
+ def initialize (display)
35
+ @display = display
36
+ end
37
+
38
+ def load (extension)
39
+ self << extension.apply(display)
40
+ end
41
+
42
+ memoize
43
+ def [] (name)
44
+ find {|extension|
45
+ extension.name.downcase == name.to_s.downcase
46
+ }
47
+ end
48
+
49
+ def available
50
+ Enumerator.new do |e|
51
+
52
+ end
53
+ end
54
+ end
55
+
56
+ end; end
@@ -0,0 +1,48 @@
1
+ #--
2
+ # Copyleft meh. [http://meh.paranoid.pk | meh@paranoici.org]
3
+ #
4
+ # Redistribution and use in source and binary forms, with or without modification, are
5
+ # permitted provided that the following conditions are met:
6
+ #
7
+ # 1. Redistributions of source code must retain the above copyright notice, this list of
8
+ # conditions and the following disclaimer.
9
+ #
10
+ # 2. Redistributions in binary form must reproduce the above copyright notice, this list
11
+ # of conditions and the following disclaimer in the documentation and/or other materials
12
+ # provided with the distribution.
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY meh ''AS IS'' AND ANY EXPRESS OR IMPLIED
15
+ # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16
+ # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL meh OR
17
+ # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20
+ # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22
+ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
+ #
24
+ # The views and conclusions contained in the software and documentation are those of the
25
+ # authors and should not be interpreted as representing official policies, either expressed
26
+ # or implied.
27
+ #++
28
+
29
+ module X11
30
+
31
+ class Drawable < ID
32
+ named :x, :y, :width, :height, :to, :destination, :gc, :optional => 0 .. -1
33
+ def copy (x=nil, y=nil, width=nil, height=nil, to=nil, destination=nil, gc=nil)
34
+ x ||= 0
35
+ y ||= 0
36
+ width ||= self.width
37
+ height ||= self.height
38
+ to ||= [0, 0]
39
+ destination ||= Pixmap.create(to_ffi, width, height)
40
+ gc ||= GraphicContext.new
41
+
42
+ C::XCopyArea(display.to_ffi, to_ffi, destination.to_ffi, gc.to_ffi, x, y, width, height, to.first, to.last)
43
+
44
+ destination
45
+ end
46
+ end
47
+
48
+ end
@@ -0,0 +1,100 @@
1
+ # Redistribution and use in source and binary forms, with or without modification, are
2
+ # permitted provided that the following conditions are met:
3
+ #
4
+ # 1. Redistributions of source code must retain the above copyright notice, this list of
5
+ # conditions and the following disclaimer.
6
+ #
7
+ # 2. Redistributions in binary form must reproduce the above copyright notice, this list
8
+ # of conditions and the following disclaimer in the documentation and/or other materials
9
+ # provided with the distribution.
10
+ #
11
+ # THIS SOFTWARE IS PROVIDED BY meh ''AS IS'' AND ANY EXPRESS OR IMPLIED
12
+ # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
13
+ # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL meh OR
14
+ # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
15
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
17
+ # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
18
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
19
+ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20
+ #
21
+ # The views and conclusions contained in the software and documentation are those of the
22
+ # authors and should not be interpreted as representing official policies, either expressed
23
+ # or implied.
24
+ #++
25
+
26
+ module X11
27
+
28
+ class Error < Exception
29
+ def self.from (event)
30
+ X11::const_get(Status.new(event[:error_code]).to_sym).new(event)
31
+ end
32
+
33
+ def self.raise (exception)
34
+ @error = exception
35
+ end
36
+
37
+ def self.pop
38
+ return unless @error
39
+
40
+ @error.tap {
41
+ @error = nil
42
+ }
43
+ end
44
+
45
+ attr_reader :type, :display, :resource, :serial, :error, :request, :minor
46
+
47
+ def initialize (event=nil)
48
+ return super(self.class.name[/\w+$/]) unless event
49
+
50
+ @type = event[:type]
51
+ @display = X11::Display.new(event[:display])
52
+ @resource = event[:resourceid]
53
+ @serial = event[:serial]
54
+ @error = event[:error_code]
55
+ @request = event[:request_code]
56
+ @minor = event[:minor_code]
57
+
58
+ FFI::MemoryPointer.new(512).tap {|string|
59
+ C::XGetErrorText(@display.to_ffi, @error, string, string.size)
60
+
61
+ super(string.typecast(:string))
62
+ }
63
+ end
64
+
65
+ def to_sym
66
+ self.class.name[/\w+$/].to_sym
67
+ end
68
+
69
+ def inspect
70
+ "#<#{to_sym}: 0x#{resource.to_s(16)} #{request}:#{error}.#{minor}>"
71
+ end
72
+ end
73
+
74
+ BadRequest = Class.new(Error)
75
+ BadValue = Class.new(Error)
76
+ BadWindow = Class.new(Error)
77
+ BadPixmap = Class.new(Error)
78
+ BadAtom = Class.new(Error)
79
+ BadCursor = Class.new(Error)
80
+ BadFont = Class.new(Error)
81
+ BadMatch = Class.new(Error)
82
+ BadDrawable = Class.new(Error)
83
+ BadAccess = Class.new(Error)
84
+ BadAlloc = Class.new(Error)
85
+ BadColor = Class.new(Error)
86
+ BadGC = Class.new(Error)
87
+ BadIDChoice = Class.new(Error)
88
+ BadName = Class.new(Error)
89
+ BadLength = Class.new(Error)
90
+ BadImplementation = Class.new(Error)
91
+
92
+ C::XSetErrorHandler(X11::ErrorHandler = FFI::Function.new(:int, [:pointer, :pointer]) {|display, event|
93
+ Error.raise Error.from(C::XErrorEvent.new(event)); 1
94
+ })
95
+
96
+ C::XSetIOErrorHandler(X11::IOErrorHandler = FFI::Function.new(:int, [:pointer]) {|display|
97
+ Error.raise IOError.new('fatal X IO error'); 1
98
+ })
99
+
100
+ end
@@ -1,26 +1,26 @@
1
1
  #--
2
2
  # Copyleft meh. [http://meh.paranoid.pk | meh@paranoici.org]
3
- #
3
+ #
4
4
  # Redistribution and use in source and binary forms, with or without modification, are
5
5
  # permitted provided that the following conditions are met:
6
- #
6
+ #
7
7
  # 1. Redistributions of source code must retain the above copyright notice, this list of
8
8
  # conditions and the following disclaimer.
9
- #
9
+ #
10
10
  # 2. Redistributions in binary form must reproduce the above copyright notice, this list
11
11
  # of conditions and the following disclaimer in the documentation and/or other materials
12
12
  # provided with the distribution.
13
- #
14
- # THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR IMPLIED
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY meh ''AS IS'' AND ANY EXPRESS OR IMPLIED
15
15
  # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16
- # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
16
+ # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL meh OR
17
17
  # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
18
  # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
19
  # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20
20
  # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21
21
  # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22
22
  # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
- #
23
+ #
24
24
  # The views and conclusions contained in the software and documentation are those of the
25
25
  # authors and should not be interpreted as representing official policies, either expressed
26
26
  # or implied.
@@ -31,40 +31,69 @@ require 'X11/Xlib/events'
31
31
  module X11
32
32
 
33
33
  class Event
34
- module Mode
35
- AsyncPointer = 0
36
- SyncPointer = 1
37
- ReplayPointer = 2
38
- AsyncKeyboard = 3
39
- SyncKeyboard = 4
40
- ReplayKeyboard = 5
41
- AsyncBoth = 6
42
- SyncBoth = 7
43
-
44
- def self.[] (name)
45
- const_get name
46
- end
47
- end
48
-
49
- def self.index (event)
50
- Events.to_a.index(event)
51
- end
52
-
53
- def self.new (event)
54
- event = event.typecast(C::XEvent) unless event.is_a?(C::XEvent)
55
-
56
- (Events[event[:type]] || Any).new(event)
57
- end
34
+ module Mode
35
+ AsyncPointer = 0
36
+ SyncPointer = 1
37
+ ReplayPointer = 2
38
+ AsyncKeyboard = 3
39
+ SyncKeyboard = 4
40
+ ReplayKeyboard = 5
41
+ AsyncBoth = 6
42
+ SyncBoth = 7
43
+
44
+ def self.[] (name)
45
+ const_get name
46
+ end
47
+ end
48
+
49
+ def self.index (name)
50
+ Events.each_with_index {|event, index|
51
+ next if event.nil?
52
+
53
+ return index if event.name[/[^:]*$/] == name.to_s
54
+ }
55
+ end
56
+
57
+ def self.new (event)
58
+ event = event.typecast(C::XEvent) unless event.is_a?(C::XEvent)
59
+
60
+ (Events[event[:type]] || Any).new(event)
61
+ end
62
+
63
+ def self.mask_for (what)
64
+ case what
65
+ when Array
66
+ what.inject(Mask::Event[]) {|a, b| mask_for(a) + mask_for(b) }
67
+
68
+ when Symbol
69
+ Mask::Event[*(Events.find {|event|
70
+ event && event.name[/[^:]*$/].to_sym == what
71
+ }.mask rescue [])]
72
+
73
+ when Bitmap::Value
74
+ what
75
+
76
+ when Regexp
77
+ Mask::Event[*Events.select {|event|
78
+ event && event.name[/[^:]*$/].match(what)
79
+ }.map {|event|
80
+ event.mask
81
+ }.flatten.compact.uniq]
82
+
83
+ when nil
84
+ Mask::Event.all
85
+ end
86
+ end
58
87
  end
59
88
 
60
89
  class C::XEvent
61
- Events.to_a.compact.each {|type|
62
- next unless type.attribute rescue nil
90
+ Events.to_a.compact.each {|type|
91
+ next unless type.attribute rescue nil
63
92
 
64
- define_method(type.attribute) {
65
- type.new(self)
66
- }
67
- }
93
+ define_method(type.attribute) {
94
+ type.new(self)
95
+ }
96
+ }
68
97
  end
69
98
 
70
99
  end
@@ -1,33 +1,31 @@
1
1
  #--
2
2
  # Copyleft meh. [http://meh.paranoid.pk | meh@paranoici.org]
3
- #
3
+ #
4
4
  # Redistribution and use in source and binary forms, with or without modification, are
5
5
  # permitted provided that the following conditions are met:
6
- #
6
+ #
7
7
  # 1. Redistributions of source code must retain the above copyright notice, this list of
8
8
  # conditions and the following disclaimer.
9
- #
9
+ #
10
10
  # 2. Redistributions in binary form must reproduce the above copyright notice, this list
11
11
  # of conditions and the following disclaimer in the documentation and/or other materials
12
12
  # provided with the distribution.
13
- #
14
- # THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR IMPLIED
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY meh ''AS IS'' AND ANY EXPRESS OR IMPLIED
15
15
  # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16
- # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
16
+ # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL meh OR
17
17
  # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
18
  # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
19
  # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20
20
  # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21
21
  # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22
22
  # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
- #
23
+ #
24
24
  # The views and conclusions contained in the software and documentation are those of the
25
25
  # authors and should not be interpreted as representing official policies, either expressed
26
26
  # or implied.
27
27
  #++
28
28
 
29
29
  class X11::Event::Any < X11::Event::Helper
30
- attribute :xany
31
-
32
- include X11::Event::Common
30
+ attribute :xany
33
31
  end
@@ -1,44 +1,33 @@
1
1
  #--
2
2
  # Copyleft meh. [http://meh.paranoid.pk | meh@paranoici.org]
3
- #
3
+ #
4
4
  # Redistribution and use in source and binary forms, with or without modification, are
5
5
  # permitted provided that the following conditions are met:
6
- #
6
+ #
7
7
  # 1. Redistributions of source code must retain the above copyright notice, this list of
8
8
  # conditions and the following disclaimer.
9
- #
9
+ #
10
10
  # 2. Redistributions in binary form must reproduce the above copyright notice, this list
11
11
  # of conditions and the following disclaimer in the documentation and/or other materials
12
12
  # provided with the distribution.
13
- #
14
- # THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR IMPLIED
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY meh ''AS IS'' AND ANY EXPRESS OR IMPLIED
15
15
  # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16
- # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
16
+ # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL meh OR
17
17
  # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
18
  # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
19
  # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20
20
  # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21
21
  # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22
22
  # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
- #
23
+ #
24
24
  # The views and conclusions contained in the software and documentation are those of the
25
25
  # authors and should not be interpreted as representing official policies, either expressed
26
26
  # or implied.
27
27
  #++
28
28
 
29
29
  class X11::Event::ButtonPress < X11::Event::Helper
30
- attribute :xbutton
30
+ extend X11::Event::Generic::Button
31
31
 
32
- include X11::Event::Common
33
-
34
- manage :root, X11::Event::Window
35
- manage :subwindow, X11::Event::Window
36
- manage :time
37
- manage :x
38
- manage :y
39
- manage :x_root
40
- manage :y_root
41
- manage :state
42
- manage :button
43
- manage [:same_screen, :same_screen?]
32
+ mask :ButtonPress
44
33
  end
@@ -1,44 +1,33 @@
1
1
  #--
2
2
  # Copyleft meh. [http://meh.paranoid.pk | meh@paranoici.org]
3
- #
3
+ #
4
4
  # Redistribution and use in source and binary forms, with or without modification, are
5
5
  # permitted provided that the following conditions are met:
6
- #
6
+ #
7
7
  # 1. Redistributions of source code must retain the above copyright notice, this list of
8
8
  # conditions and the following disclaimer.
9
- #
9
+ #
10
10
  # 2. Redistributions in binary form must reproduce the above copyright notice, this list
11
11
  # of conditions and the following disclaimer in the documentation and/or other materials
12
12
  # provided with the distribution.
13
- #
14
- # THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR IMPLIED
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY meh ''AS IS'' AND ANY EXPRESS OR IMPLIED
15
15
  # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16
- # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
16
+ # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL meh OR
17
17
  # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
18
  # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
19
  # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20
20
  # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21
21
  # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22
22
  # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
- #
23
+ #
24
24
  # The views and conclusions contained in the software and documentation are those of the
25
25
  # authors and should not be interpreted as representing official policies, either expressed
26
26
  # or implied.
27
27
  #++
28
28
 
29
29
  class X11::Event::ButtonRelease < X11::Event::Helper
30
- attribute :xbutton
30
+ extend X11::Event::Generic::Button
31
31
 
32
- include X11::Event::Common
33
-
34
- manage :root, X11::Event::Window
35
- manage :subwindow, X11::Event::Window
36
- manage :time
37
- manage :x
38
- manage :y
39
- manage :x_root
40
- manage :y_root
41
- manage :state
42
- manage :button
43
- manage [:same_screen, :same_screen?]
32
+ mask :ButtonRelease
44
33
  end