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,33 @@
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
+ class X11::C::XF86VidModeSyncRange < FFI::Struct
30
+ layout \
31
+ :hi, :float,
32
+ :lo, :float
33
+ end
@@ -0,0 +1,36 @@
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/X'
30
+ require 'X11/Xmd'
31
+
32
+ require 'X11/extensions/xf86vmode/c/type/mode_line'
33
+ require 'X11/extensions/xf86vmode/c/type/mode_info'
34
+ require 'X11/extensions/xf86vmode/c/type/sync_range'
35
+ require 'X11/extensions/xf86vmode/c/type/monitor'
36
+ require 'X11/extensions/xf86vmode/c/type/gamma'
@@ -0,0 +1,53 @@
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/misc/temperature'
30
+
31
+ require 'X11/extensions/xf86vmode/screen/gamma'
32
+
33
+ module X11
34
+
35
+ class Screen
36
+ def gamma
37
+ XF86VidMode::Gamma.new(self)
38
+ end
39
+
40
+ def gamma= (*args)
41
+ gamma.set(*args)
42
+ end
43
+
44
+ named :value, :brightness, :correction, :optional => 1 .. -1
45
+ def temperature (value, brightness=1.0, correction=nil)
46
+ Temperature.gamma(value, gamma.ramp.size, brightness, correction).tap {|ramps|
47
+ gamma.ramp.set(:red => ramps.red, :green => ramps.green, :blue => ramps.blue)
48
+ display.flush
49
+ }
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,79 @@
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/xf86vmode/screen/gamma/ramp'
30
+
31
+ module X11; module XF86VidMode
32
+
33
+ class Gamma
34
+ extend Forwardable
35
+
36
+ attr_reader :screen
37
+ def_delegators :screen, :display
38
+
39
+ def initialize (screen)
40
+ @screen = screen
41
+ end
42
+
43
+ def get
44
+ C::XF86VidModeGamma.new.tap! {|p|
45
+ C::XF86VidModeGetGamma(display.to_ffi, screen.to_i, p)
46
+
47
+ Struct.new(:red, :green, :blue).new(p[:red], p[:green], p[:blue])
48
+ }
49
+ end
50
+
51
+ named :red, :green, :blue, :optional => 0 .. -1
52
+ def set (red=nil, green=nil, blue=nil)
53
+ get.tap {|gamma|
54
+ C::XF86VidModeSetGamma(display.to_ffi, screen.to_i, C::XF86VidModeGamma.new.tap {|p|
55
+ p[:red] = red || gamma.red
56
+ p[:green] = green || gamma.green
57
+ p[:blue] = blue || gamma.blue
58
+ })
59
+
60
+ display.flush
61
+ }
62
+ end
63
+
64
+ [:red, :green, :blue].each {|color|
65
+ define_method color do
66
+ get[color]
67
+ end
68
+
69
+ define_method "#{color}=" do |value|
70
+ set(color => value)[color]
71
+ end
72
+ }
73
+
74
+ def ramp
75
+ Ramp.new(screen)
76
+ end
77
+ end
78
+
79
+ end; end
@@ -0,0 +1,86 @@
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 XF86VidMode; class Gamma
30
+
31
+ class Ramp
32
+ extend Forwardable
33
+
34
+ attr_reader :screen
35
+ def_delegators :screen, :display
36
+
37
+ def initialize (screen)
38
+ @screen = screen
39
+ end
40
+
41
+ def size
42
+ FFI::MemoryPointer.new(:int).tap! {|p|
43
+ C::XF86VidModeGetGammaRampSize(display.to_ffi, screen.to_i, p)
44
+ p.typecast(:int)
45
+ }
46
+ end
47
+
48
+ def get
49
+ red, green, blue = Array.new(3) { FFI::MemoryPointer.new(:ushort, size) }
50
+
51
+ C::XF86VidModeGetGammaRamp(display.to_ffi, screen.to_i, size, red, green, blue)
52
+
53
+ Struct.new(:red, :green, :blue).new(
54
+ red.read_array_of(:ushort, size),
55
+ green.read_array_of(:ushort, size),
56
+ blue.read_array_of(:ushort, size)
57
+ )
58
+ end
59
+
60
+ named :red, :green, :blue, :optional => 0 .. -1
61
+ def set (red=nil, green=nil, blue=nil)
62
+ get.tap {|ramps|
63
+ memory = Struct.new(:red, :green, :blue).new(*Array.new(3) { FFI::MemoryPointer.new(:ushort, size) })
64
+
65
+ memory.red.write_array_of(:ushort, red || ramps.red)
66
+ memory.green.write_array_of(:ushort, green || ramps.green)
67
+ memory.blue.write_array_of(:ushort, blue || ramps.blue)
68
+
69
+ C::XF86VidModeSetGammaRamp(display.to_ffi, screen.to_i, size, memory.red, memory.green, memory.blue)
70
+
71
+ display.flush
72
+ }
73
+ end
74
+
75
+ [:red, :green, :blue].each {|color|
76
+ define_method color do
77
+ get[color]
78
+ end
79
+
80
+ define_method "#{color}=" do |value|
81
+ set(color => value)[color]
82
+ end
83
+ }
84
+ end
85
+
86
+ end; end; end
@@ -1,47 +1,29 @@
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
  require 'X11/Xlib'
30
-
31
- module X11
32
-
33
- class Keysym
34
- def self.const_missing (name)
35
- C::XStringToKeysym(name.to_s)
36
- end
37
-
38
- def self.method_missing (name, *)
39
- C::XStringToKeysym(name.to_s)
40
- end
41
-
42
- def self.[] (what)
43
- what.is_a?(Integer) ? Keysym.new(what) : self.method_missing(what)
44
- end
45
- end
46
-
47
- end
@@ -0,0 +1,458 @@
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 Temperature
32
+ Table = {
33
+ 1000 => [1.0000, 0.0337, 0.0000], # ff3300
34
+ 1100 => [1.0000, 0.0592, 0.0000], # ff4500
35
+ 1200 => [1.0000, 0.0846, 0.0000], # ff5200
36
+ 1300 => [1.0000, 0.1096, 0.0000], # ff5d00
37
+ 1400 => [1.0000, 0.1341, 0.0000], # ff6600
38
+ 1500 => [1.0000, 0.1578, 0.0000], # ff6f00
39
+ 1600 => [1.0000, 0.1806, 0.0000], # ff7600
40
+ 1700 => [1.0000, 0.2025, 0.0000], # ff7c00
41
+ 1800 => [1.0000, 0.2235, 0.0000], # ff8200
42
+ 1900 => [1.0000, 0.2434, 0.0000], # ff8700
43
+ 2000 => [1.0000, 0.2647, 0.0033], # ff8d0b
44
+ 2100 => [1.0000, 0.2889, 0.0120], # ff921d
45
+ 2200 => [1.0000, 0.3126, 0.0219], # ff9829
46
+ 2300 => [1.0000, 0.3360, 0.0331], # ff9d33
47
+ 2400 => [1.0000, 0.3589, 0.0454], # ffa23c
48
+ 2500 => [1.0000, 0.3814, 0.0588], # ffa645
49
+ 2600 => [1.0000, 0.4034, 0.0734], # ffaa4d
50
+ 2700 => [1.0000, 0.4250, 0.0889], # ffae54
51
+ 2800 => [1.0000, 0.4461, 0.1054], # ffb25b
52
+ 2900 => [1.0000, 0.4668, 0.1229], # ffb662
53
+ 3000 => [1.0000, 0.4870, 0.1411], # ffb969
54
+ 3100 => [1.0000, 0.5067, 0.1602], # ffbd6f
55
+ 3200 => [1.0000, 0.5259, 0.1800], # ffc076
56
+ 3300 => [1.0000, 0.5447, 0.2005], # ffc37c
57
+ 3400 => [1.0000, 0.5630, 0.2216], # ffc682
58
+ 3500 => [1.0000, 0.5809, 0.2433], # ffc987
59
+ 3600 => [1.0000, 0.5983, 0.2655], # ffcb8d
60
+ 3700 => [1.0000, 0.6153, 0.2881], # ffce92
61
+ 3800 => [1.0000, 0.6318, 0.3112], # ffd097
62
+ 3900 => [1.0000, 0.6480, 0.3346], # ffd39c
63
+ 4000 => [1.0000, 0.6636, 0.3583], # ffd5a1
64
+ 4100 => [1.0000, 0.6789, 0.3823], # ffd7a6
65
+ 4200 => [1.0000, 0.6938, 0.4066], # ffd9ab
66
+ 4300 => [1.0000, 0.7083, 0.4310], # ffdbaf
67
+ 4400 => [1.0000, 0.7223, 0.4556], # ffddb4
68
+ 4500 => [1.0000, 0.7360, 0.4803], # ffdfb8
69
+ 4600 => [1.0000, 0.7494, 0.5051], # ffe1bc
70
+ 4700 => [1.0000, 0.7623, 0.5299], # ffe2c0
71
+ 4800 => [1.0000, 0.7750, 0.5548], # ffe4c4
72
+ 4900 => [1.0000, 0.7872, 0.5797], # ffe5c8
73
+ 5000 => [1.0000, 0.7992, 0.6045], # ffe7cc
74
+ 5100 => [1.0000, 0.8108, 0.6293], # ffe8d0
75
+ 5200 => [1.0000, 0.8221, 0.6541], # ffead3
76
+ 5300 => [1.0000, 0.8330, 0.6787], # ffebd7
77
+ 5400 => [1.0000, 0.8437, 0.7032], # ffedda
78
+ 5500 => [1.0000, 0.8541, 0.7277], # ffeede
79
+ 5600 => [1.0000, 0.8642, 0.7519], # ffefe1
80
+ 5700 => [1.0000, 0.8740, 0.7760], # fff0e4
81
+ 5800 => [1.0000, 0.8836, 0.8000], # fff1e7
82
+ 5900 => [1.0000, 0.8929, 0.8238], # fff3ea
83
+ 6000 => [1.0000, 0.9019, 0.8473], # fff4ed
84
+ 6100 => [1.0000, 0.9107, 0.8707], # fff5f0
85
+ 6200 => [1.0000, 0.9193, 0.8939], # fff6f3
86
+ 6300 => [1.0000, 0.9276, 0.9168], # fff7f5
87
+ 6400 => [1.0000, 0.9357, 0.9396], # fff8f8
88
+ 6500 => [1.0000, 0.9436, 0.9621], # fff9fb
89
+ 6600 => [1.0000, 0.9513, 0.9844], # fff9fd
90
+ 6700 => [0.9937, 0.9526, 1.0000], # fefaff
91
+ 6800 => [0.9726, 0.9395, 1.0000], # fcf8ff
92
+ 6900 => [0.9526, 0.9270, 1.0000], # faf7ff
93
+ 7000 => [0.9337, 0.9150, 1.0000], # f7f5ff
94
+ 7100 => [0.9157, 0.9035, 1.0000], # f5f4ff
95
+ 7200 => [0.8986, 0.8925, 1.0000], # f3f3ff
96
+ 7300 => [0.8823, 0.8819, 1.0000], # f1f1ff
97
+ 7400 => [0.8668, 0.8718, 1.0000], # eff0ff
98
+ 7500 => [0.8520, 0.8621, 1.0000], # eeefff
99
+ 7600 => [0.8379, 0.8527, 1.0000], # eceeff
100
+ 7700 => [0.8244, 0.8437, 1.0000], # eaedff
101
+ 7800 => [0.8115, 0.8351, 1.0000], # e9ecff
102
+ 7900 => [0.7992, 0.8268, 1.0000], # e7eaff
103
+ 8000 => [0.7874, 0.8187, 1.0000], # e5e9ff
104
+ 8100 => [0.7761, 0.8110, 1.0000], # e4e9ff
105
+ 8200 => [0.7652, 0.8035, 1.0000], # e3e8ff
106
+ 8300 => [0.7548, 0.7963, 1.0000], # e1e7ff
107
+ 8400 => [0.7449, 0.7894, 1.0000], # e0e6ff
108
+ 8500 => [0.7353, 0.7827, 1.0000], # dfe5ff
109
+ 8600 => [0.7260, 0.7762, 1.0000], # dde4ff
110
+ 8700 => [0.7172, 0.7699, 1.0000], # dce3ff
111
+ 8800 => [0.7086, 0.7638, 1.0000], # dbe2ff
112
+ 8900 => [0.7004, 0.7579, 1.0000], # dae2ff
113
+ 9000 => [0.6925, 0.7522, 1.0000], # d9e1ff
114
+ 9100 => [0.6848, 0.7467, 1.0000], # d8e0ff
115
+ 9200 => [0.6774, 0.7414, 1.0000], # d7dfff
116
+ 9300 => [0.6703, 0.7362, 1.0000], # d6dfff
117
+ 9400 => [0.6635, 0.7311, 1.0000], # d5deff
118
+ 9500 => [0.6568, 0.7263, 1.0000], # d4ddff
119
+ 9600 => [0.6504, 0.7215, 1.0000], # d3ddff
120
+ 9700 => [0.6442, 0.7169, 1.0000], # d2dcff
121
+ 9800 => [0.6382, 0.7124, 1.0000], # d1dcff
122
+ 9900 => [0.6324, 0.7081, 1.0000], # d0dbff
123
+ 10000 => [0.6268, 0.7039, 1.0000], # cfdaff
124
+ 10100 => [0.6213, 0.6998, 1.0000], # cfdaff
125
+ 10200 => [0.6161, 0.6958, 1.0000], # ced9ff
126
+ 10300 => [0.6109, 0.6919, 1.0000], # cdd9ff
127
+ 10400 => [0.6060, 0.6881, 1.0000], # ccd8ff
128
+ 10500 => [0.6012, 0.6844, 1.0000], # ccd8ff
129
+ 10600 => [0.5965, 0.6808, 1.0000], # cbd7ff
130
+ 10700 => [0.5919, 0.6773, 1.0000], # cad7ff
131
+ 10800 => [0.5875, 0.6739, 1.0000], # cad6ff
132
+ 10900 => [0.5833, 0.6706, 1.0000], # c9d6ff
133
+ 11000 => [0.5791, 0.6674, 1.0000], # c8d5ff
134
+ 11100 => [0.5750, 0.6642, 1.0000], # c8d5ff
135
+ 11200 => [0.5711, 0.6611, 1.0000], # c7d4ff
136
+ 11300 => [0.5673, 0.6581, 1.0000], # c6d4ff
137
+ 11400 => [0.5636, 0.6552, 1.0000], # c6d4ff
138
+ 11500 => [0.5599, 0.6523, 1.0000], # c5d3ff
139
+ 11600 => [0.5564, 0.6495, 1.0000], # c5d3ff
140
+ 11700 => [0.5530, 0.6468, 1.0000], # c4d2ff
141
+ 11800 => [0.5496, 0.6441, 1.0000], # c4d2ff
142
+ 11900 => [0.5463, 0.6415, 1.0000], # c3d2ff
143
+ 12000 => [0.5431, 0.6389, 1.0000], # c3d1ff
144
+ 12100 => [0.5400, 0.6364, 1.0000], # c2d1ff
145
+ 12200 => [0.5370, 0.6340, 1.0000], # c2d0ff
146
+ 12300 => [0.5340, 0.6316, 1.0000], # c1d0ff
147
+ 12400 => [0.5312, 0.6293, 1.0000], # c1d0ff
148
+ 12500 => [0.5283, 0.6270, 1.0000], # c0cfff
149
+ 12600 => [0.5256, 0.6247, 1.0000], # c0cfff
150
+ 12700 => [0.5229, 0.6225, 1.0000], # bfcfff
151
+ 12800 => [0.5203, 0.6204, 1.0000], # bfceff
152
+ 12900 => [0.5177, 0.6183, 1.0000], # beceff
153
+ 13000 => [0.5152, 0.6162, 1.0000], # beceff
154
+ 13100 => [0.5128, 0.6142, 1.0000], # beceff
155
+ 13200 => [0.5104, 0.6122, 1.0000], # bdcdff
156
+ 13300 => [0.5080, 0.6103, 1.0000], # bdcdff
157
+ 13400 => [0.5057, 0.6084, 1.0000], # bccdff
158
+ 13500 => [0.5035, 0.6065, 1.0000], # bcccff
159
+ 13600 => [0.5013, 0.6047, 1.0000], # bcccff
160
+ 13700 => [0.4991, 0.6029, 1.0000], # bbccff
161
+ 13800 => [0.4970, 0.6012, 1.0000], # bbccff
162
+ 13900 => [0.4950, 0.5994, 1.0000], # bbcbff
163
+ 14000 => [0.4930, 0.5978, 1.0000], # bacbff
164
+ 14100 => [0.4910, 0.5961, 1.0000], # bacbff
165
+ 14200 => [0.4891, 0.5945, 1.0000], # bacbff
166
+ 14300 => [0.4872, 0.5929, 1.0000], # b9caff
167
+ 14400 => [0.4853, 0.5913, 1.0000], # b9caff
168
+ 14500 => [0.4835, 0.5898, 1.0000], # b9caff
169
+ 14600 => [0.4817, 0.5882, 1.0000], # b8caff
170
+ 14700 => [0.4799, 0.5868, 1.0000], # b8c9ff
171
+ 14800 => [0.4782, 0.5853, 1.0000], # b8c9ff
172
+ 14900 => [0.4765, 0.5839, 1.0000], # b8c9ff
173
+ 15000 => [0.4749, 0.5824, 1.0000], # b7c9ff
174
+ 15100 => [0.4733, 0.5811, 1.0000], # b7c9ff
175
+ 15200 => [0.4717, 0.5797, 1.0000], # b7c8ff
176
+ 15300 => [0.4701, 0.5784, 1.0000], # b6c8ff
177
+ 15400 => [0.4686, 0.5770, 1.0000], # b6c8ff
178
+ 15500 => [0.4671, 0.5757, 1.0000], # b6c8ff
179
+ 15600 => [0.4656, 0.5745, 1.0000], # b6c8ff
180
+ 15700 => [0.4641, 0.5732, 1.0000], # b5c7ff
181
+ 15800 => [0.4627, 0.5720, 1.0000], # b5c7ff
182
+ 15900 => [0.4613, 0.5708, 1.0000], # b5c7ff
183
+ 16000 => [0.4599, 0.5696, 1.0000], # b5c7ff
184
+ 16100 => [0.4586, 0.5684, 1.0000], # b4c7ff
185
+ 16200 => [0.4572, 0.5673, 1.0000], # b4c6ff
186
+ 16300 => [0.4559, 0.5661, 1.0000], # b4c6ff
187
+ 16400 => [0.4546, 0.5650, 1.0000], # b4c6ff
188
+ 16500 => [0.4534, 0.5639, 1.0000], # b3c6ff
189
+ 16600 => [0.4521, 0.5628, 1.0000], # b3c6ff
190
+ 16700 => [0.4509, 0.5617, 1.0000], # b3c6ff
191
+ 16800 => [0.4497, 0.5607, 1.0000], # b3c5ff
192
+ 16900 => [0.4485, 0.5597, 1.0000], # b3c5ff
193
+ 17000 => [0.4474, 0.5586, 1.0000], # b2c5ff
194
+ 17100 => [0.4462, 0.5576, 1.0000], # b2c5ff
195
+ 17200 => [0.4451, 0.5566, 1.0000], # b2c5ff
196
+ 17300 => [0.4440, 0.5557, 1.0000], # b2c5ff
197
+ 17400 => [0.4429, 0.5547, 1.0000], # b2c4ff
198
+ 17500 => [0.4418, 0.5538, 1.0000], # b1c4ff
199
+ 17600 => [0.4408, 0.5528, 1.0000], # b1c4ff
200
+ 17700 => [0.4397, 0.5519, 1.0000], # b1c4ff
201
+ 17800 => [0.4387, 0.5510, 1.0000], # b1c4ff
202
+ 17900 => [0.4377, 0.5501, 1.0000], # b1c4ff
203
+ 18000 => [0.4367, 0.5492, 1.0000], # b0c4ff
204
+ 18100 => [0.4357, 0.5483, 1.0000], # b0c3ff
205
+ 18200 => [0.4348, 0.5475, 1.0000], # b0c3ff
206
+ 18300 => [0.4338, 0.5466, 1.0000], # b0c3ff
207
+ 18400 => [0.4329, 0.5458, 1.0000], # b0c3ff
208
+ 18500 => [0.4319, 0.5450, 1.0000], # b0c3ff
209
+ 18600 => [0.4310, 0.5442, 1.0000], # afc3ff
210
+ 18700 => [0.4301, 0.5434, 1.0000], # afc3ff
211
+ 18800 => [0.4293, 0.5426, 1.0000], # afc2ff
212
+ 18900 => [0.4284, 0.5418, 1.0000], # afc2ff
213
+ 19000 => [0.4275, 0.5410, 1.0000], # afc2ff
214
+ 19100 => [0.4267, 0.5403, 1.0000], # afc2ff
215
+ 19200 => [0.4258, 0.5395, 1.0000], # aec2ff
216
+ 19300 => [0.4250, 0.5388, 1.0000], # aec2ff
217
+ 19400 => [0.4242, 0.5381, 1.0000], # aec2ff
218
+ 19500 => [0.4234, 0.5373, 1.0000], # aec2ff
219
+ 19600 => [0.4226, 0.5366, 1.0000], # aec2ff
220
+ 19700 => [0.4218, 0.5359, 1.0000], # aec1ff
221
+ 19800 => [0.4211, 0.5352, 1.0000], # aec1ff
222
+ 19900 => [0.4203, 0.5345, 1.0000], # adc1ff
223
+ 20000 => [0.4196, 0.5339, 1.0000], # adc1ff
224
+ 20100 => [0.4188, 0.5332, 1.0000], # adc1ff
225
+ 20200 => [0.4181, 0.5325, 1.0000], # adc1ff
226
+ 20300 => [0.4174, 0.5319, 1.0000], # adc1ff
227
+ 20400 => [0.4167, 0.5312, 1.0000], # adc1ff
228
+ 20500 => [0.4160, 0.5306, 1.0000], # adc1ff
229
+ 20600 => [0.4153, 0.5300, 1.0000], # adc0ff
230
+ 20700 => [0.4146, 0.5293, 1.0000], # acc0ff
231
+ 20800 => [0.4139, 0.5287, 1.0000], # acc0ff
232
+ 20900 => [0.4133, 0.5281, 1.0000], # acc0ff
233
+ 21000 => [0.4126, 0.5275, 1.0000], # acc0ff
234
+ 21100 => [0.4119, 0.5269, 1.0000], # acc0ff
235
+ 21200 => [0.4113, 0.5264, 1.0000], # acc0ff
236
+ 21300 => [0.4107, 0.5258, 1.0000], # acc0ff
237
+ 21400 => [0.4100, 0.5252, 1.0000], # acc0ff
238
+ 21500 => [0.4094, 0.5246, 1.0000], # abc0ff
239
+ 21600 => [0.4088, 0.5241, 1.0000], # abc0ff
240
+ 21700 => [0.4082, 0.5235, 1.0000], # abbfff
241
+ 21800 => [0.4076, 0.5230, 1.0000], # abbfff
242
+ 21900 => [0.4070, 0.5224, 1.0000], # abbfff
243
+ 22000 => [0.4064, 0.5219, 1.0000], # abbfff
244
+ 22100 => [0.4059, 0.5214, 1.0000], # abbfff
245
+ 22200 => [0.4053, 0.5209, 1.0000], # abbfff
246
+ 22300 => [0.4047, 0.5203, 1.0000], # abbfff
247
+ 22400 => [0.4042, 0.5198, 1.0000], # aabfff
248
+ 22500 => [0.4036, 0.5193, 1.0000], # aabfff
249
+ 22600 => [0.4031, 0.5188, 1.0000], # aabfff
250
+ 22700 => [0.4026, 0.5183, 1.0000], # aabfff
251
+ 22800 => [0.4020, 0.5178, 1.0000], # aabeff
252
+ 22900 => [0.4015, 0.5174, 1.0000], # aabeff
253
+ 23000 => [0.4010, 0.5169, 1.0000], # aabeff
254
+ 23100 => [0.4005, 0.5164, 1.0000], # aabeff
255
+ 23200 => [0.4000, 0.5159, 1.0000], # aabeff
256
+ 23300 => [0.3995, 0.5155, 1.0000], # aabeff
257
+ 23400 => [0.3990, 0.5150, 1.0000], # a9beff
258
+ 23500 => [0.3985, 0.5146, 1.0000], # a9beff
259
+ 23600 => [0.3980, 0.5141, 1.0000], # a9beff
260
+ 23700 => [0.3975, 0.5137, 1.0000], # a9beff
261
+ 23800 => [0.3970, 0.5132, 1.0000], # a9beff
262
+ 23900 => [0.3966, 0.5128, 1.0000], # a9beff
263
+ 24000 => [0.3961, 0.5123, 1.0000], # a9beff
264
+ 24100 => [0.3956, 0.5119, 1.0000], # a9beff
265
+ 24200 => [0.3952, 0.5115, 1.0000], # a9bdff
266
+ 24300 => [0.3947, 0.5111, 1.0000], # a9bdff
267
+ 24400 => [0.3943, 0.5107, 1.0000], # a9bdff
268
+ 24500 => [0.3938, 0.5103, 1.0000], # a8bdff
269
+ 24600 => [0.3934, 0.5098, 1.0000], # a8bdff
270
+ 24700 => [0.3930, 0.5094, 1.0000], # a8bdff
271
+ 24800 => [0.3925, 0.5090, 1.0000], # a8bdff
272
+ 24900 => [0.3921, 0.5086, 1.0000], # a8bdff
273
+ 25000 => [0.3917, 0.5083, 1.0000], # a8bdff
274
+ 25100 => [0.3913, 0.5079, 1.0000], # a8bdff
275
+ 25200 => [0.3909, 0.5075, 1.0000], # a8bdff
276
+ 25300 => [0.3905, 0.5071, 1.0000], # a8bdff
277
+ 25400 => [0.3901, 0.5067, 1.0000], # a8bdff
278
+ 25500 => [0.3897, 0.5064, 1.0000], # a8bdff
279
+ 25600 => [0.3893, 0.5060, 1.0000], # a8bdff
280
+ 25700 => [0.3889, 0.5056, 1.0000], # a7bcff
281
+ 25800 => [0.3885, 0.5053, 1.0000], # a7bcff
282
+ 25900 => [0.3881, 0.5049, 1.0000], # a7bcff
283
+ 26000 => [0.3877, 0.5045, 1.0000], # a7bcff
284
+ 26100 => [0.3874, 0.5042, 1.0000], # a7bcff
285
+ 26200 => [0.3870, 0.5038, 1.0000], # a7bcff
286
+ 26300 => [0.3866, 0.5035, 1.0000], # a7bcff
287
+ 26400 => [0.3863, 0.5032, 1.0000], # a7bcff
288
+ 26500 => [0.3859, 0.5028, 1.0000], # a7bcff
289
+ 26600 => [0.3855, 0.5025, 1.0000], # a7bcff
290
+ 26700 => [0.3852, 0.5021, 1.0000], # a7bcff
291
+ 26800 => [0.3848, 0.5018, 1.0000], # a7bcff
292
+ 26900 => [0.3845, 0.5015, 1.0000], # a7bcff
293
+ 27000 => [0.3841, 0.5012, 1.0000], # a7bcff
294
+ 27100 => [0.3838, 0.5008, 1.0000], # a6bcff
295
+ 27200 => [0.3835, 0.5005, 1.0000], # a6bcff
296
+ 27300 => [0.3831, 0.5002, 1.0000], # a6bcff
297
+ 27400 => [0.3828, 0.4999, 1.0000], # a6bbff
298
+ 27500 => [0.3825, 0.4996, 1.0000], # a6bbff
299
+ 27600 => [0.3821, 0.4993, 1.0000], # a6bbff
300
+ 27700 => [0.3818, 0.4990, 1.0000], # a6bbff
301
+ 27800 => [0.3815, 0.4987, 1.0000], # a6bbff
302
+ 27900 => [0.3812, 0.4984, 1.0000], # a6bbff
303
+ 28000 => [0.3809, 0.4981, 1.0000], # a6bbff
304
+ 28100 => [0.3805, 0.4978, 1.0000], # a6bbff
305
+ 28200 => [0.3802, 0.4975, 1.0000], # a6bbff
306
+ 28300 => [0.3799, 0.4972, 1.0000], # a6bbff
307
+ 28400 => [0.3796, 0.4969, 1.0000], # a6bbff
308
+ 28500 => [0.3793, 0.4966, 1.0000], # a6bbff
309
+ 28600 => [0.3790, 0.4963, 1.0000], # a6bbff
310
+ 28700 => [0.3787, 0.4960, 1.0000], # a5bbff
311
+ 28800 => [0.3784, 0.4958, 1.0000], # a5bbff
312
+ 28900 => [0.3781, 0.4955, 1.0000], # a5bbff
313
+ 29000 => [0.3779, 0.4952, 1.0000], # a5bbff
314
+ 29100 => [0.3776, 0.4949, 1.0000], # a5bbff
315
+ 29200 => [0.3773, 0.4947, 1.0000], # a5bbff
316
+ 29300 => [0.3770, 0.4944, 1.0000], # a5bbff
317
+ 29400 => [0.3767, 0.4941, 1.0000], # a5bbff
318
+ 29500 => [0.3764, 0.4939, 1.0000], # a5baff
319
+ 29600 => [0.3762, 0.4936, 1.0000], # a5baff
320
+ 29700 => [0.3759, 0.4934, 1.0000], # a5baff
321
+ 29800 => [0.3756, 0.4931, 1.0000], # a5baff
322
+ 29900 => [0.3754, 0.4928, 1.0000], # a5baff
323
+ 30000 => [0.3751, 0.4926, 1.0000], # a5baff
324
+ 30100 => [0.3748, 0.4923, 1.0000], # a5baff
325
+ 30200 => [0.3746, 0.4921, 1.0000], # a5baff
326
+ 30300 => [0.3743, 0.4918, 1.0000], # a5baff
327
+ 30400 => [0.3741, 0.4916, 1.0000], # a5baff
328
+ 30500 => [0.3738, 0.4914, 1.0000], # a5baff
329
+ 30600 => [0.3735, 0.4911, 1.0000], # a4baff
330
+ 30700 => [0.3733, 0.4909, 1.0000], # a4baff
331
+ 30800 => [0.3730, 0.4906, 1.0000], # a4baff
332
+ 30900 => [0.3728, 0.4904, 1.0000], # a4baff
333
+ 31000 => [0.3726, 0.4902, 1.0000], # a4baff
334
+ 31100 => [0.3723, 0.4899, 1.0000], # a4baff
335
+ 31200 => [0.3721, 0.4897, 1.0000], # a4baff
336
+ 31300 => [0.3718, 0.4895, 1.0000], # a4baff
337
+ 31400 => [0.3716, 0.4893, 1.0000], # a4baff
338
+ 31500 => [0.3714, 0.4890, 1.0000], # a4baff
339
+ 31600 => [0.3711, 0.4888, 1.0000], # a4baff
340
+ 31700 => [0.3709, 0.4886, 1.0000], # a4baff
341
+ 31800 => [0.3707, 0.4884, 1.0000], # a4baff
342
+ 31900 => [0.3704, 0.4881, 1.0000], # a4baff
343
+ 32000 => [0.3702, 0.4879, 1.0000], # a4b9ff
344
+ 32100 => [0.3700, 0.4877, 1.0000], # a4b9ff
345
+ 32200 => [0.3698, 0.4875, 1.0000], # a4b9ff
346
+ 32300 => [0.3695, 0.4873, 1.0000], # a4b9ff
347
+ 32400 => [0.3693, 0.4871, 1.0000], # a4b9ff
348
+ 32500 => [0.3691, 0.4869, 1.0000], # a4b9ff
349
+ 32600 => [0.3689, 0.4867, 1.0000], # a4b9ff
350
+ 32700 => [0.3687, 0.4864, 1.0000], # a3b9ff
351
+ 32800 => [0.3684, 0.4862, 1.0000], # a3b9ff
352
+ 32900 => [0.3682, 0.4860, 1.0000], # a3b9ff
353
+ 33000 => [0.3680, 0.4858, 1.0000], # a3b9ff
354
+ 33100 => [0.3678, 0.4856, 1.0000], # a3b9ff
355
+ 33200 => [0.3676, 0.4854, 1.0000], # a3b9ff
356
+ 33300 => [0.3674, 0.4852, 1.0000], # a3b9ff
357
+ 33400 => [0.3672, 0.4850, 1.0000], # a3b9ff
358
+ 33500 => [0.3670, 0.4848, 1.0000], # a3b9ff
359
+ 33600 => [0.3668, 0.4847, 1.0000], # a3b9ff
360
+ 33700 => [0.3666, 0.4845, 1.0000], # a3b9ff
361
+ 33800 => [0.3664, 0.4843, 1.0000], # a3b9ff
362
+ 33900 => [0.3662, 0.4841, 1.0000], # a3b9ff
363
+ 34000 => [0.3660, 0.4839, 1.0000], # a3b9ff
364
+ 34100 => [0.3658, 0.4837, 1.0000], # a3b9ff
365
+ 34200 => [0.3656, 0.4835, 1.0000], # a3b9ff
366
+ 34300 => [0.3654, 0.4833, 1.0000], # a3b9ff
367
+ 34400 => [0.3652, 0.4831, 1.0000], # a3b9ff
368
+ 34500 => [0.3650, 0.4830, 1.0000], # a3b9ff
369
+ 34600 => [0.3649, 0.4828, 1.0000], # a3b9ff
370
+ 34700 => [0.3647, 0.4826, 1.0000], # a3b9ff
371
+ 34800 => [0.3645, 0.4824, 1.0000], # a3b9ff
372
+ 34900 => [0.3643, 0.4822, 1.0000], # a3b9ff
373
+ 35000 => [0.3641, 0.4821, 1.0000], # a3b8ff
374
+ 35100 => [0.3639, 0.4819, 1.0000], # a3b8ff
375
+ 35200 => [0.3638, 0.4817, 1.0000], # a2b8ff
376
+ 35300 => [0.3636, 0.4815, 1.0000], # a2b8ff
377
+ 35400 => [0.3634, 0.4814, 1.0000], # a2b8ff
378
+ 35500 => [0.3632, 0.4812, 1.0000], # a2b8ff
379
+ 35600 => [0.3630, 0.4810, 1.0000], # a2b8ff
380
+ 35700 => [0.3629, 0.4809, 1.0000], # a2b8ff
381
+ 35800 => [0.3627, 0.4807, 1.0000], # a2b8ff
382
+ 35900 => [0.3625, 0.4805, 1.0000], # a2b8ff
383
+ 36000 => [0.3624, 0.4804, 1.0000], # a2b8ff
384
+ 36100 => [0.3622, 0.4802, 1.0000], # a2b8ff
385
+ 36200 => [0.3620, 0.4800, 1.0000], # a2b8ff
386
+ 36300 => [0.3619, 0.4799, 1.0000], # a2b8ff
387
+ 36400 => [0.3617, 0.4797, 1.0000], # a2b8ff
388
+ 36500 => [0.3615, 0.4796, 1.0000], # a2b8ff
389
+ 36600 => [0.3614, 0.4794, 1.0000], # a2b8ff
390
+ 36700 => [0.3612, 0.4792, 1.0000], # a2b8ff
391
+ 36800 => [0.3610, 0.4791, 1.0000], # a2b8ff
392
+ 36900 => [0.3609, 0.4789, 1.0000], # a2b8ff
393
+ 37000 => [0.3607, 0.4788, 1.0000], # a2b8ff
394
+ 37100 => [0.3605, 0.4786, 1.0000], # a2b8ff
395
+ 37200 => [0.3604, 0.4785, 1.0000], # a2b8ff
396
+ 37300 => [0.3602, 0.4783, 1.0000], # a2b8ff
397
+ 37400 => [0.3601, 0.4782, 1.0000], # a2b8ff
398
+ 37500 => [0.3599, 0.4780, 1.0000], # a2b8ff
399
+ 37600 => [0.3598, 0.4779, 1.0000], # a2b8ff
400
+ 37700 => [0.3596, 0.4777, 1.0000], # a2b8ff
401
+ 37800 => [0.3595, 0.4776, 1.0000], # a2b8ff
402
+ 37900 => [0.3593, 0.4774, 1.0000], # a2b8ff
403
+ 38000 => [0.3592, 0.4773, 1.0000], # a2b8ff
404
+ 38100 => [0.3590, 0.4771, 1.0000], # a2b8ff
405
+ 38200 => [0.3589, 0.4770, 1.0000], # a2b8ff
406
+ 38300 => [0.3587, 0.4768, 1.0000], # a1b8ff
407
+ 38400 => [0.3586, 0.4767, 1.0000], # a1b8ff
408
+ 38500 => [0.3584, 0.4766, 1.0000], # a1b8ff
409
+ 38600 => [0.3583, 0.4764, 1.0000], # a1b7ff
410
+ 38700 => [0.3581, 0.4763, 1.0000], # a1b7ff
411
+ 38800 => [0.3580, 0.4761, 1.0000], # a1b7ff
412
+ 38900 => [0.3579, 0.4760, 1.0000], # a1b7ff
413
+ 39000 => [0.3577, 0.4759, 1.0000], # a1b7ff
414
+ 39100 => [0.3576, 0.4757, 1.0000], # a1b7ff
415
+ 39200 => [0.3574, 0.4756, 1.0000], # a1b7ff
416
+ 39300 => [0.3573, 0.4755, 1.0000], # a1b7ff
417
+ 39400 => [0.3572, 0.4753, 1.0000], # a1b7ff
418
+ 39500 => [0.3570, 0.4752, 1.0000], # a1b7ff
419
+ 39600 => [0.3569, 0.4751, 1.0000], # a1b7ff
420
+ 39700 => [0.3567, 0.4749, 1.0000], # a1b7ff
421
+ 39800 => [0.3566, 0.4748, 1.0000], # a1b7ff
422
+ 39900 => [0.3565, 0.4747, 1.0000], # a1b7ff
423
+ 40000 => [0.3563, 0.4745, 1.0000], # a1b7ff
424
+ }
425
+
426
+ def self.normalize (number)
427
+ number - (number % 100)
428
+ end
429
+
430
+ def self.white_point (temperature)
431
+ alpha = (temperature % 100) / 100.0
432
+ a, b = Table[normalize(temperature)], Table[normalize(temperature) + 100]
433
+
434
+ Struct.new(:red, :green, :blue).new(*0.upto(2).map {|index|
435
+ (1.0 - alpha) * a[index] + alpha * b[index]
436
+ })
437
+ end
438
+
439
+ singleton_named :temperature, :size, :brightness, :correction, :optional => 2 .. -1
440
+ def self.gamma (temperature, size, brightness=1.0, correction=nil)
441
+ white_point = white_point(temperature)
442
+ correction = Struct.new(:red, :green, :blue).new(*case correction
443
+ when Array then correction
444
+ when Hash then [correction[:red], correction[:green], correction[:blue]]
445
+ else [1, 1, 1]
446
+ end)
447
+
448
+ Struct.new(:red, :green, :blue).new([], [], []).tap {|result|
449
+ 0.upto(size - 1).map {|n|
450
+ result[:red] << (((n.to_f / size) ** (1.0 / correction[:red])) * 65535 * brightness * white_point[:red]).to_i % 65535
451
+ result[:green] << (((n.to_f / size) ** (1.0 / correction[:green])) * 65535 * brightness * white_point[:green]).to_i % 65535
452
+ result[:blue] << (((n.to_f / size) ** (1.0 / correction[:blue])) * 65535 * brightness * white_point[:blue]).to_i % 65535
453
+ }
454
+ }
455
+ end
456
+ end
457
+
458
+ end