x11 0.0.1a2 → 0.0.1a3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/X11/X.rb +14 -9
- data/lib/X11/X/c.rb +21 -20
- data/lib/X11/XKBlib.rb +29 -0
- data/lib/X11/Xatom.rb +152 -136
- data/lib/X11/Xatom/c.rb +15 -15
- data/lib/X11/Xdefs.rb +7 -7
- data/lib/X11/Xdefs/c.rb +20 -20
- data/lib/X11/Xlib.rb +19 -7
- data/lib/X11/Xlib/c.rb +21 -8
- data/lib/X11/Xlib/c/functions.rb +373 -27
- data/lib/X11/Xlib/c/type/any_event.rb +13 -13
- data/lib/X11/Xlib/c/type/button_event.rb +23 -23
- data/lib/X11/Xlib/c/type/circulate_event.rb +15 -15
- data/lib/X11/Xlib/c/type/circulate_request_event.rb +15 -15
- data/lib/X11/Xlib/c/type/client_message_event.rb +22 -22
- data/lib/X11/Xlib/c/type/colormap_event.rb +16 -16
- data/lib/X11/Xlib/c/type/configure_event.rb +21 -21
- data/lib/X11/Xlib/c/type/configure_request_event.rb +22 -22
- data/lib/X11/Xlib/c/type/create_window_event.rb +20 -20
- data/lib/X11/Xlib/c/type/crossing_event.rb +25 -25
- data/lib/X11/Xlib/c/type/destroy_window_event.rb +14 -14
- data/lib/X11/Xlib/c/type/display.rb +52 -52
- data/lib/X11/Xlib/c/type/error_event.rb +15 -15
- data/lib/X11/Xlib/c/type/event.rb +43 -43
- data/lib/X11/Xlib/c/type/expose_event.rb +18 -18
- data/lib/X11/Xlib/c/type/focus_change_event.rb +15 -15
- data/lib/X11/Xlib/c/type/gc.rb +10 -10
- data/lib/X11/Xlib/c/type/gc_values.rb +54 -0
- data/lib/X11/Xlib/c/type/generic_event.rb +14 -14
- data/lib/X11/Xlib/c/type/generic_event_cookie.rb +16 -16
- data/lib/X11/Xlib/c/type/graphics_expose_event.rb +21 -21
- data/lib/X11/Xlib/c/type/gravity_event.rb +16 -16
- data/lib/X11/Xlib/c/type/image.rb +56 -0
- data/lib/X11/Xlib/c/type/key_event.rb +23 -23
- data/lib/X11/Xlib/c/type/key_sym.rb +15 -15
- data/lib/X11/Xlib/c/type/keymap_event.rb +14 -14
- data/lib/X11/Xlib/c/type/map_event.rb +15 -15
- data/lib/X11/Xlib/c/type/map_request_event.rb +18 -18
- data/lib/X11/Xlib/c/type/mapping_event.rb +16 -16
- data/lib/X11/Xlib/c/type/motion_event.rb +23 -23
- data/lib/X11/Xlib/c/type/no_expose_event.rb +15 -15
- data/lib/X11/Xlib/c/type/point.rb +33 -0
- data/lib/X11/Xlib/c/type/property_event.rb +16 -16
- data/lib/X11/Xlib/c/type/reparent_event.rb +18 -18
- data/lib/X11/Xlib/c/type/resize_request_event.rb +15 -15
- data/lib/X11/Xlib/c/type/screen.rb +27 -27
- data/lib/X11/Xlib/c/type/selection_clear_event.rb +15 -15
- data/lib/X11/Xlib/c/type/selection_event.rb +17 -17
- data/lib/X11/Xlib/c/type/selection_request_event.rb +18 -18
- data/lib/X11/Xlib/c/type/status.rb +15 -15
- data/lib/X11/Xlib/c/type/unmap_event.rb +15 -15
- data/lib/X11/Xlib/c/type/visibility_event.rb +14 -14
- data/lib/X11/Xlib/c/type/visual.rb +16 -16
- data/lib/X11/Xlib/c/type/window_attributes.rb +31 -31
- data/lib/X11/Xlib/c/types.rb +9 -7
- data/lib/X11/Xlib/display.rb +257 -174
- data/lib/X11/Xlib/display/extensions.rb +56 -0
- data/lib/X11/Xlib/drawable.rb +48 -0
- data/lib/X11/Xlib/error.rb +100 -0
- data/lib/X11/Xlib/event.rb +66 -37
- data/lib/X11/Xlib/event/any.rb +8 -10
- data/lib/X11/Xlib/event/button_press.rb +9 -20
- data/lib/X11/Xlib/event/button_release.rb +9 -20
- data/lib/X11/Xlib/event/circulate_notify.rb +11 -12
- data/lib/X11/Xlib/event/circulate_request.rb +11 -12
- data/lib/X11/Xlib/event/client_message.rb +11 -13
- data/lib/X11/Xlib/event/colormap_notify.rb +12 -13
- data/lib/X11/Xlib/event/configure_notify.rb +17 -18
- data/lib/X11/Xlib/event/configure_request.rb +18 -19
- data/lib/X11/Xlib/event/create_notify.rb +16 -17
- data/lib/X11/Xlib/event/destroy_notify.rb +10 -11
- data/lib/X11/Xlib/event/enter_notify.rb +10 -8
- data/lib/X11/Xlib/event/expose.rb +15 -16
- data/lib/X11/Xlib/event/focus_in.rb +9 -12
- data/lib/X11/Xlib/event/focus_out.rb +9 -12
- data/lib/X11/Xlib/event/generic.rb +35 -0
- data/lib/X11/Xlib/event/generic/button.rb +46 -0
- data/lib/X11/Xlib/event/generic/crossing.rb +48 -0
- data/lib/X11/Xlib/{window/properties/property/class.rb → event/generic/focus_change.rb} +16 -14
- data/lib/X11/Xlib/event/generic/key.rb +46 -0
- data/lib/X11/Xlib/event/generic/motion.rb +46 -0
- data/lib/X11/Xlib/event/generic_event.rb +12 -14
- data/lib/X11/Xlib/event/graphics_expose.rb +15 -14
- data/lib/X11/Xlib/event/gravity_notify.rb +12 -13
- data/lib/X11/Xlib/event/helper.rb +123 -91
- data/lib/X11/Xlib/event/key_press.rb +9 -20
- data/lib/X11/Xlib/event/key_release.rb +9 -20
- data/lib/X11/Xlib/event/keymap_notify.rb +13 -14
- data/lib/X11/Xlib/event/leave_notify.rb +10 -20
- data/lib/X11/Xlib/event/map_notify.rb +11 -12
- data/lib/X11/Xlib/event/map_request.rb +10 -11
- data/lib/X11/Xlib/event/mapping_notify.rb +11 -13
- data/lib/X11/Xlib/event/motion_notify.rb +10 -20
- data/lib/X11/Xlib/event/no_expose.rb +8 -9
- data/lib/X11/Xlib/event/property_notify.rb +12 -13
- data/lib/X11/Xlib/event/reparent_notify.rb +14 -15
- data/lib/X11/Xlib/event/resize_request.rb +11 -12
- data/lib/X11/Xlib/event/selection_clear.rb +10 -12
- data/lib/X11/Xlib/event/selection_notify.rb +13 -15
- data/lib/X11/Xlib/event/selection_request.rb +14 -16
- data/lib/X11/Xlib/event/unmap_notify.rb +11 -12
- data/lib/X11/Xlib/event/visibility_notify.rb +10 -11
- data/lib/X11/Xlib/events.rb +11 -7
- data/lib/X11/Xlib/exceptions.rb +10 -10
- data/lib/X11/Xlib/graphic_context.rb +69 -0
- data/lib/X11/Xlib/graphic_context/functions.rb +50 -0
- data/lib/X11/Xlib/{window/properties/property/command.rb → graphic_context/values.rb} +17 -13
- data/lib/X11/Xlib/hints.rb +19 -18
- data/lib/X11/Xlib/hints/flags.rb +15 -15
- data/lib/X11/Xlib/hints/icon.rb +14 -16
- data/lib/X11/Xlib/id.rb +75 -0
- data/lib/X11/Xlib/image.rb +64 -0
- data/lib/X11/Xlib/keysym.rb +53 -26
- data/lib/X11/Xlib/mask.rb +81 -55
- data/lib/X11/Xlib/pixmap.rb +60 -0
- data/lib/X11/Xlib/planes.rb +50 -0
- data/lib/X11/Xlib/revert_to.rb +10 -10
- data/lib/X11/Xlib/screen.rb +48 -31
- data/lib/X11/Xlib/status.rb +56 -56
- data/lib/X11/Xlib/transform.rb +25 -25
- data/lib/X11/Xlib/visual.rb +19 -19
- data/lib/X11/Xlib/window.rb +399 -188
- data/lib/X11/Xlib/window/attributes.rb +74 -41
- data/lib/X11/Xlib/window/properties.rb +57 -38
- data/lib/X11/Xlib/window/properties/property.rb +135 -70
- data/lib/X11/Xlib/window/properties/property/net_virtual_root.rb +13 -13
- data/lib/X11/Xlib/window/properties/property/parser.rb +45 -35
- data/lib/X11/Xlib/window/properties/property/parser/arc.rb +18 -16
- data/lib/X11/Xlib/window/properties/property/parser/atom.rb +14 -10
- data/lib/X11/Xlib/window/properties/property/parser/cardinal.rb +14 -9
- data/lib/X11/Xlib/window/properties/property/parser/hints.rb +17 -16
- data/lib/X11/Xlib/window/properties/property/parser/integer.rb +39 -0
- data/lib/X11/Xlib/window/properties/property/parser/state.rb +39 -0
- data/lib/X11/Xlib/window/properties/property/parser/string.rb +59 -0
- data/lib/X11/Xlib/window/properties/property/parser/window.rb +39 -0
- data/lib/X11/Xmd.rb +7 -7
- data/lib/X11/Xmd/c.rb +19 -19
- data/lib/X11/Xregion.rb +32 -0
- data/lib/X11/Xregion/c.rb +29 -0
- data/lib/X11/Xregion/c/type/box.rb +35 -0
- data/lib/X11/Xregion/c/type/point_block.rb +33 -0
- data/lib/X11/Xregion/c/type/rectangle.rb +35 -0
- data/lib/X11/Xregion/c/type/region.rb +35 -0
- data/lib/X11/Xregion/c/types.rb +32 -0
- data/lib/X11/Xutil.rb +12 -17
- data/lib/X11/Xutil/c.rb +7 -10
- data/lib/X11/Xutil/c/functions.rb +7 -7
- data/lib/X11/Xutil/c/type/class_hint.rb +10 -10
- data/lib/X11/Xutil/c/type/region.rb +31 -0
- data/lib/X11/Xutil/c/type/text_property.rb +12 -12
- data/lib/X11/Xutil/c/types.rb +8 -7
- data/lib/X11/Xutil/state.rb +43 -0
- data/lib/X11/Xutil/window.rb +28 -28
- data/lib/X11/cursorfont.rb +7 -7
- data/lib/X11/cursorfont/c.rb +8 -8
- data/lib/X11/cursorfont/font.rb +113 -113
- data/lib/X11/extension.rb +65 -0
- data/lib/X11/extensions.rb +105 -126
- data/lib/X11/extensions/Xrandr.rb +49 -0
- data/lib/X11/extensions/Xrandr/c.rb +30 -0
- data/lib/X11/extensions/Xrandr/c/functions.rb +106 -0
- data/lib/X11/extensions/Xrandr/c/type/crtc_gamma.rb +35 -0
- data/lib/X11/extensions/Xrandr/c/type/crtc_info.rb +43 -0
- data/lib/X11/extensions/Xrandr/c/type/crtc_transform_attributes.rb +39 -0
- data/lib/X11/extensions/Xrandr/c/type/mode_info.rb +45 -0
- data/lib/X11/extensions/Xrandr/c/type/output_info.rb +46 -0
- data/lib/X11/extensions/Xrandr/c/type/panning.rb +44 -0
- data/lib/X11/extensions/Xrandr/c/type/property_info.rb +36 -0
- data/lib/X11/extensions/Xrandr/c/type/screen_resources.rb +39 -0
- data/lib/X11/extensions/Xrandr/c/type/screen_size.rb +35 -0
- data/lib/X11/extensions/Xrandr/c/types.rb +48 -0
- data/lib/X11/extensions/Xrandr/crtc.rb +70 -0
- data/lib/X11/extensions/Xrandr/crtc/gamma.rb +100 -0
- data/lib/X11/extensions/Xrandr/crtc/info.rb +62 -0
- data/lib/X11/extensions/Xrandr/crtc/panning.rb +74 -0
- data/lib/X11/extensions/Xrandr/event.rb +29 -0
- data/lib/X11/extensions/Xrandr/output.rb +59 -0
- data/lib/X11/extensions/Xrandr/output/info.rb +105 -0
- data/lib/X11/extensions/Xrandr/output/properties.rb +78 -0
- data/lib/X11/extensions/Xrandr/output/properties/property.rb +161 -0
- data/lib/X11/extensions/Xrandr/output/properties/property/info.rb +73 -0
- data/lib/X11/extensions/Xrandr/output/properties/property/parser.rb +73 -0
- data/lib/X11/extensions/Xrandr/output/properties/property/parser/atom.rb +39 -0
- data/lib/X11/extensions/Xrandr/output/properties/property/parser/integer.rb +43 -0
- data/lib/X11/extensions/Xrandr/screen.rb +49 -0
- data/lib/X11/extensions/Xrandr/screen/backlight.rb +76 -0
- data/lib/X11/extensions/Xrandr/screen_resources.rb +81 -0
- data/lib/X11/extensions/Xrandr/window.rb +41 -0
- data/lib/X11/extensions/Xrender.rb +34 -0
- data/lib/X11/extensions/Xrender/c.rb +30 -0
- data/lib/X11/extensions/Xrender/c/functions.rb +50 -0
- data/lib/X11/extensions/Xrender/c/type/anim_cursor.rb +33 -0
- data/lib/X11/extensions/Xrender/c/type/circle.rb +34 -0
- data/lib/X11/extensions/Xrender/c/type/conical_gradient.rb +33 -0
- data/lib/X11/extensions/Xrender/c/type/filters.rb +35 -0
- data/lib/X11/extensions/Xrender/c/type/glyph_elt16.rb +36 -0
- data/lib/X11/extensions/Xrender/c/type/glyph_elt32.rb +36 -0
- data/lib/X11/extensions/Xrender/c/type/glyph_elt8.rb +36 -0
- data/lib/X11/extensions/Xrender/c/type/glyph_info.rb +37 -0
- data/lib/X11/extensions/Xrender/c/type/index_value.rb +36 -0
- data/lib/X11/extensions/Xrender/c/type/line_fixed.rb +33 -0
- data/lib/X11/extensions/Xrender/c/type/linear_gradient.rb +33 -0
- data/lib/X11/extensions/Xrender/c/type/point_double.rb +33 -0
- data/lib/X11/extensions/Xrender/c/type/point_fixed.rb +33 -0
- data/lib/X11/extensions/Xrender/c/type/radial_gradient.rb +33 -0
- data/lib/X11/extensions/Xrender/c/type/render_color.rb +35 -0
- data/lib/X11/extensions/Xrender/c/type/render_direct_format.rb +39 -0
- data/lib/X11/extensions/Xrender/c/type/render_pict_format.rb +36 -0
- data/lib/X11/extensions/Xrender/c/type/render_picture_attributes.rb +44 -0
- data/lib/X11/extensions/Xrender/c/type/span_fix.rb +34 -0
- data/lib/X11/extensions/Xrender/c/type/transform.rb +32 -0
- data/lib/X11/extensions/Xrender/c/type/trap.rb +33 -0
- data/lib/X11/extensions/Xrender/c/type/trapezoid.rb +35 -0
- data/lib/X11/extensions/Xrender/c/type/triangle.rb +34 -0
- data/lib/X11/extensions/Xrender/c/types.rb +56 -0
- data/lib/X11/extensions/Xrender/mask.rb +48 -0
- data/lib/X11/extensions/randr.rb +29 -0
- data/lib/X11/extensions/randr/c.rb +38 -0
- data/lib/X11/extensions/render.rb +29 -0
- data/lib/X11/extensions/render/c.rb +34 -0
- data/lib/X11/extensions/xf86vmode.rb +42 -0
- data/lib/X11/extensions/xf86vmode/c.rb +30 -0
- data/lib/X11/extensions/xf86vmode/c/functions.rb +59 -0
- data/lib/X11/extensions/xf86vmode/c/type/gamma.rb +34 -0
- data/lib/X11/extensions/xf86vmode/c/type/mode_info.rb +44 -0
- data/lib/X11/extensions/xf86vmode/c/type/mode_line.rb +43 -0
- data/lib/X11/extensions/xf86vmode/c/type/monitor.rb +38 -0
- data/lib/X11/extensions/xf86vmode/c/type/sync_range.rb +33 -0
- data/lib/X11/extensions/xf86vmode/c/types.rb +36 -0
- data/lib/X11/extensions/xf86vmode/screen.rb +53 -0
- data/lib/X11/extensions/xf86vmode/screen/gamma.rb +79 -0
- data/lib/X11/extensions/xf86vmode/screen/gamma/ramp.rb +86 -0
- data/lib/X11/keysym.rb +7 -25
- data/lib/X11/misc/temperature.rb +458 -0
- data/lib/X11/simple.rb +8 -7
- data/lib/X11/simple/display.rb +35 -37
- data/lib/X11/simple/window.rb +39 -19
- data/lib/X11/window_manager.rb +32 -0
- data/lib/X11/window_manager/desktops.rb +82 -0
- data/lib/X11/window_manager/desktops/desktop.rb +78 -0
- data/lib/X11/window_manager/supports.rb +56 -0
- data/lib/X11/window_manager/supports/feature.rb +46 -0
- data/lib/X11/window_manager/window.rb +102 -0
- data/lib/X11/window_manager/window_manager.rb +73 -0
- metadata +216 -66
@@ -0,0 +1,29 @@
|
|
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
|
+
#require 'X11/extensions/Xrandr/events'
|
@@ -0,0 +1,59 @@
|
|
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
|
+
require 'X11/extensions/Xrandr/output/info'
|
30
|
+
require 'X11/extensions/Xrandr/output/properties'
|
31
|
+
|
32
|
+
module X11; module Xrandr
|
33
|
+
|
34
|
+
class Output < ID
|
35
|
+
extend Forwardable
|
36
|
+
|
37
|
+
attr_reader :resources
|
38
|
+
def_delegators :@resources, :screen
|
39
|
+
|
40
|
+
def initialize (resources, id)
|
41
|
+
if resources.is_a?(Display)
|
42
|
+
super(resorces, id)
|
43
|
+
else
|
44
|
+
super(resources.screen.display, id)
|
45
|
+
|
46
|
+
@resources = resources
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def info
|
51
|
+
Output::Info.get(self)
|
52
|
+
end
|
53
|
+
|
54
|
+
def properties
|
55
|
+
Properties.new(self)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end; end
|
@@ -0,0 +1,105 @@
|
|
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; module Xrandr; class Output < ID
|
30
|
+
|
31
|
+
class Info
|
32
|
+
def self.finalizer (pointer)
|
33
|
+
proc {
|
34
|
+
C::XRRFreeOutputInfo(pointer)
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.get (output)
|
39
|
+
new(output, C::XRRGetOutputInfo(output.display.to_ffi, output.resources.to_ffi, output.to_ffi)).tap {|info|
|
40
|
+
ObjectSpace.define_finalizer info, finalizer(info.to_ffi)
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
attr_reader :output
|
45
|
+
|
46
|
+
def initialize (output, pointer)
|
47
|
+
@output = output
|
48
|
+
@internal = pointer.is_a?(C::XRROutputInfo) ? pointer : C::XRROutputInfo.new(pointer)
|
49
|
+
end
|
50
|
+
|
51
|
+
C::XRROutputInfo.layout.members.each {|name|
|
52
|
+
define_method name do
|
53
|
+
@internal[name]
|
54
|
+
end
|
55
|
+
}
|
56
|
+
|
57
|
+
alias width mm_width
|
58
|
+
alias height mm_height
|
59
|
+
|
60
|
+
def name
|
61
|
+
@internal[:name].read_bytes(@internal[:nameLen])
|
62
|
+
end
|
63
|
+
|
64
|
+
def crtc
|
65
|
+
Crtc.new(output.resources, @internal[:crtc])
|
66
|
+
end
|
67
|
+
|
68
|
+
def crtcs
|
69
|
+
Enumerator.new do |e|
|
70
|
+
@internal[:crtcs].read_array_of(:RRCrtc, @internal[:ncrtc]).each {|crtc|
|
71
|
+
e << Crtc.new(self, crtc)
|
72
|
+
}
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def clones
|
77
|
+
Enumerator.new do |e|
|
78
|
+
@internal[:clones].read_array_of(:RROutput, @internal[:nclone]).each {|clone|
|
79
|
+
e << Output.new(self, clone)
|
80
|
+
}
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def modes
|
85
|
+
Enumerator.new do |e|
|
86
|
+
@internal[:modes].read_array_of(:RRMode, @internal[:nmode]).each {|mode|
|
87
|
+
e << Mode.new(self, mode)
|
88
|
+
}
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def preferred
|
93
|
+
Enumerator.new do |e|
|
94
|
+
@internal[:modes].read_array_of(:RRMode, @internal[:npreferred]).each {|mode|
|
95
|
+
e << Mode.new(self, mode)
|
96
|
+
}
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def to_ffi
|
101
|
+
@internal.pointer
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
end; end; end
|
@@ -0,0 +1,78 @@
|
|
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
|
+
require 'X11/extensions/Xrandr/output/properties/property'
|
30
|
+
|
31
|
+
module X11; module Xrandr; class Output < ID
|
32
|
+
|
33
|
+
class Properties
|
34
|
+
include Enumerable
|
35
|
+
extend Forwardable
|
36
|
+
|
37
|
+
attr_reader :output
|
38
|
+
def_delegators :@output, :display
|
39
|
+
|
40
|
+
def initialize (output)
|
41
|
+
@output = output
|
42
|
+
end
|
43
|
+
|
44
|
+
def [] (atom)
|
45
|
+
if !(property = Property.new(output, Atom[atom, display])).nil?
|
46
|
+
property
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def []= (atom, value, type=nil)
|
51
|
+
Property.new(output, Atom[atom, display]).value = value, type
|
52
|
+
end
|
53
|
+
|
54
|
+
def has? (atom)
|
55
|
+
!!self[atom]
|
56
|
+
end
|
57
|
+
|
58
|
+
def delete (atom)
|
59
|
+
C::XRRDeleteOutputProperty(display.to_ffi, output.to_ffi, Atom[atom, display].to_ffi)
|
60
|
+
end
|
61
|
+
|
62
|
+
def each (&block)
|
63
|
+
number = FFI::MemoryPointer.new :int
|
64
|
+
list = C::XRRListOutputProperties(display.to_ffi, output.to_ffi, number)
|
65
|
+
|
66
|
+
return self if list.null?
|
67
|
+
|
68
|
+
list.read_array_of(:Atom, number.typecast(:int)).each {|atom|
|
69
|
+
block.call Property.new(output, Atom.new(atom.to_i, display))
|
70
|
+
}
|
71
|
+
|
72
|
+
C::XFree(list)
|
73
|
+
|
74
|
+
self
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end; end; end
|
@@ -0,0 +1,161 @@
|
|
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
|
+
require 'X11/extensions/Xrandr/output/properties/property/parser'
|
30
|
+
require 'X11/extensions/Xrandr/output/properties/property/info'
|
31
|
+
|
32
|
+
module X11; module Xrandr; class Output < ID; class Properties
|
33
|
+
|
34
|
+
class Property
|
35
|
+
module Mode
|
36
|
+
Replace = 0
|
37
|
+
Prepend = 1
|
38
|
+
Append = 2
|
39
|
+
|
40
|
+
def self.[] (what)
|
41
|
+
what.is_a?(Integer) ? what : const_get(what.to_s.downcase.capitalize)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
Transforms = {
|
46
|
+
:default => Transform.new(:default) {
|
47
|
+
output do |property, data|
|
48
|
+
data
|
49
|
+
end
|
50
|
+
|
51
|
+
input do |property, value, type|
|
52
|
+
[value, type]
|
53
|
+
end
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
def self.register (name, &block)
|
58
|
+
Transforms[name.to_s] = Transform.new(name, &block)
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.transform (property)
|
62
|
+
(Transforms[property.name] || Transforms[:default]).for(property)
|
63
|
+
end
|
64
|
+
|
65
|
+
MaxLength = 500000
|
66
|
+
|
67
|
+
extend Forwardable
|
68
|
+
|
69
|
+
attr_reader :output, :value
|
70
|
+
def_delegators :@output, :display
|
71
|
+
def_delegators :@atom, :to_s, :to_i, :to_ffi
|
72
|
+
def_delegator :@atom, :to_s, :name
|
73
|
+
|
74
|
+
def initialize (output, name)
|
75
|
+
@output = output
|
76
|
+
@atom = name
|
77
|
+
end
|
78
|
+
|
79
|
+
def nil?
|
80
|
+
value.nil?
|
81
|
+
end
|
82
|
+
|
83
|
+
def info
|
84
|
+
Info.new(self, C::XRRQueryOutputProperty(display.to_ffi, output.to_ffi, to_ffi))
|
85
|
+
end
|
86
|
+
|
87
|
+
def value
|
88
|
+
type = FFI::MemoryPointer.new :Atom
|
89
|
+
format = FFI::MemoryPointer.new :int
|
90
|
+
length = FFI::MemoryPointer.new :ulong
|
91
|
+
after = FFI::MemoryPointer.new :ulong
|
92
|
+
property = FFI::MemoryPointer.new :pointer
|
93
|
+
|
94
|
+
return unless C::XRRGetOutputProperty(display.to_ffi, output.to_ffi, to_ffi,
|
95
|
+
0, (MaxLength + 3) / 4, false, false, AnyProperty, type, format, length, after, property).ok?
|
96
|
+
|
97
|
+
return if property.typecast(:pointer).null?
|
98
|
+
|
99
|
+
Property.transform(self).output(Property::Parser.parse(self).output(
|
100
|
+
property.typecast(:pointer).read_string(
|
101
|
+
[length.typecast(:ulong) * FFI.type_size(
|
102
|
+
{ 0 => :void, 8 => :char, 16 => :short, 32 => :long }[format.typecast(:int)]), MaxLength].min)))
|
103
|
+
end
|
104
|
+
|
105
|
+
def value= (value, type=nil, mode=:replace)
|
106
|
+
type ||= self.type
|
107
|
+
|
108
|
+
format, data, length = Property::Parser.parse(self).input(*Property.transform(self).input(
|
109
|
+
value.is_a?(Array) ? value : [value], type))
|
110
|
+
|
111
|
+
C::XRRChangeOutputProperty(display.to_ffi, output.to_ffi, to_ffi, type.to_ffi, format, Mode[mode], data, length)
|
112
|
+
|
113
|
+
display.flush
|
114
|
+
end
|
115
|
+
|
116
|
+
def << (value, type=nil)
|
117
|
+
self.value = value, type, :append
|
118
|
+
end
|
119
|
+
|
120
|
+
def >> (value, type=nil)
|
121
|
+
self.value = value, type, :prepend
|
122
|
+
end
|
123
|
+
|
124
|
+
def type
|
125
|
+
@type ? @type : type?
|
126
|
+
end
|
127
|
+
|
128
|
+
def type?
|
129
|
+
type = FFI::MemoryPointer.new :Atom
|
130
|
+
format = FFI::MemoryPointer.new :int
|
131
|
+
length = FFI::MemoryPointer.new :ulong
|
132
|
+
after = FFI::MemoryPointer.new :ulong
|
133
|
+
property = FFI::MemoryPointer.new :pointer
|
134
|
+
|
135
|
+
return unless C::XRRGetOutputProperty(display.to_ffi, output.to_ffi, to_ffi,
|
136
|
+
0, (MaxLength + 3) / 4, false, false, AnyProperty, type, format, length, after, property).ok?
|
137
|
+
|
138
|
+
return if property.typecast(:pointer).null?
|
139
|
+
|
140
|
+
Atom.new(type.typecast(:Atom).to_i, display)
|
141
|
+
end
|
142
|
+
|
143
|
+
def type!
|
144
|
+
@type = nil
|
145
|
+
type?
|
146
|
+
end
|
147
|
+
|
148
|
+
def type= (type)
|
149
|
+
@type = type
|
150
|
+
end
|
151
|
+
|
152
|
+
def inspect
|
153
|
+
if nil?
|
154
|
+
"#<X11::Xrandr::Output::Property(#{name})>"
|
155
|
+
else
|
156
|
+
"#<X11::Xrandr::Output::Property(#{name}#{", #{info}" unless info.nil?}): #{type}#{" #{value.inspect}" unless value.nil?}>"
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
end; end; end; end
|
@@ -0,0 +1,73 @@
|
|
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; module Xrandr; class Output < ID; class Properties; class Property
|
30
|
+
|
31
|
+
class Info
|
32
|
+
include ForwardTo
|
33
|
+
|
34
|
+
attr_reader :property
|
35
|
+
forward_to :@instance
|
36
|
+
|
37
|
+
def initialize (property, pointer)
|
38
|
+
@property = property
|
39
|
+
@internal = pointer.is_a?(C::XRRPropertyInfo) ? pointer : C::XRRPropertyInfo.new(pointer)
|
40
|
+
|
41
|
+
return if nil?
|
42
|
+
|
43
|
+
if range?
|
44
|
+
@instance = Range.new(*@internal[:values].read_array_of(:long, 2))
|
45
|
+
else
|
46
|
+
@instance = @internal[:values].read_array_of(:long, @internal[:num_values])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def nil?
|
51
|
+
@internal[:values].null?
|
52
|
+
end
|
53
|
+
|
54
|
+
def range?
|
55
|
+
@internal[:range]
|
56
|
+
end
|
57
|
+
|
58
|
+
def pending?
|
59
|
+
@internal[:pending]
|
60
|
+
end
|
61
|
+
|
62
|
+
def immutable?
|
63
|
+
@internal[:immutable]
|
64
|
+
end
|
65
|
+
|
66
|
+
undef_method :inspect, :to_s
|
67
|
+
|
68
|
+
def to_ffi
|
69
|
+
@internal.pointer
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end; end; end; end; end
|