reflexion 0.1.6 → 0.1.7

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 (225) hide show
  1. checksums.yaml +7 -0
  2. data/.doc/ext/reflex/application.cpp +54 -39
  3. data/.doc/ext/reflex/capture_event.cpp +87 -0
  4. data/.doc/ext/reflex/draw_event.cpp +103 -0
  5. data/.doc/ext/reflex/event.cpp +73 -0
  6. data/.doc/ext/reflex/focus_event.cpp +98 -0
  7. data/.doc/ext/reflex/frame_event.cpp +133 -0
  8. data/.doc/ext/reflex/image_view.cpp +74 -0
  9. data/.doc/ext/reflex/key_event.cpp +124 -0
  10. data/.doc/ext/reflex/native.cpp +45 -6
  11. data/.doc/ext/reflex/pointer_event.cpp +181 -0
  12. data/.doc/ext/reflex/reflex.cpp +17 -41
  13. data/.doc/ext/reflex/scroll_event.cpp +141 -0
  14. data/.doc/ext/reflex/selector.cpp +135 -0
  15. data/.doc/ext/reflex/style.cpp +253 -0
  16. data/.doc/ext/reflex/style_length.cpp +133 -0
  17. data/.doc/ext/reflex/style_length2.cpp +149 -0
  18. data/.doc/ext/reflex/style_length4.cpp +192 -0
  19. data/.doc/ext/reflex/update_event.cpp +77 -0
  20. data/.doc/ext/reflex/view.cpp +408 -88
  21. data/.doc/ext/reflex/wheel_event.cpp +146 -0
  22. data/.doc/ext/reflex/window.cpp +95 -92
  23. data/Rakefile +6 -5
  24. data/VERSION +1 -1
  25. data/ext/reflex/application.cpp +67 -49
  26. data/ext/reflex/capture_event.cpp +92 -0
  27. data/ext/reflex/draw_event.cpp +110 -0
  28. data/ext/reflex/event.cpp +77 -0
  29. data/ext/reflex/extconf.rb +18 -68
  30. data/ext/reflex/focus_event.cpp +104 -0
  31. data/ext/reflex/frame_event.cpp +143 -0
  32. data/ext/reflex/image_view.cpp +77 -0
  33. data/ext/reflex/key_event.cpp +133 -0
  34. data/ext/reflex/native.cpp +45 -6
  35. data/ext/reflex/pointer_event.cpp +195 -0
  36. data/ext/reflex/reflex.cpp +21 -47
  37. data/ext/reflex/scroll_event.cpp +152 -0
  38. data/ext/reflex/selector.cpp +144 -0
  39. data/ext/reflex/style.cpp +277 -0
  40. data/ext/reflex/style_length.cpp +140 -0
  41. data/ext/reflex/style_length2.cpp +157 -0
  42. data/ext/reflex/style_length4.cpp +204 -0
  43. data/ext/reflex/update_event.cpp +81 -0
  44. data/ext/reflex/view.cpp +469 -114
  45. data/ext/reflex/wheel_event.cpp +158 -0
  46. data/ext/reflex/window.cpp +130 -123
  47. data/include/reflex/application.h +12 -7
  48. data/include/reflex/defs.h +13 -89
  49. data/include/reflex/event.h +260 -0
  50. data/include/reflex/exception.h +17 -11
  51. data/include/reflex/image_view.h +45 -0
  52. data/include/reflex/reflex.h +2 -6
  53. data/include/reflex/ruby/application.h +40 -13
  54. data/include/reflex/ruby/event.h +72 -0
  55. data/include/reflex/ruby/image_view.h +25 -0
  56. data/include/reflex/ruby/selector.h +27 -0
  57. data/include/reflex/ruby/style.h +27 -0
  58. data/include/reflex/ruby/style_length.h +37 -0
  59. data/include/reflex/ruby/view.h +193 -38
  60. data/include/reflex/ruby/window.h +123 -39
  61. data/include/reflex/ruby.h +3 -2
  62. data/include/reflex/selector.h +64 -0
  63. data/include/reflex/style.h +144 -0
  64. data/include/reflex/style_length.h +147 -0
  65. data/include/reflex/view.h +182 -19
  66. data/include/reflex/window.h +35 -19
  67. data/include/reflex.h +7 -0
  68. data/lib/reflex/application.rb +14 -5
  69. data/lib/reflex/arc_shape.rb +20 -0
  70. data/lib/reflex/button.rb +75 -0
  71. data/lib/reflex/capture_event.rb +37 -0
  72. data/lib/reflex/color.rb +13 -0
  73. data/lib/reflex/color_space.rb +13 -0
  74. data/lib/reflex/draw_event.rb +19 -0
  75. data/lib/reflex/ellipse_shape.rb +20 -0
  76. data/lib/reflex/ext.rb +1 -1
  77. data/lib/reflex/flags.rb +18 -0
  78. data/lib/reflex/focus_event.rb +38 -0
  79. data/lib/reflex/font.rb +13 -0
  80. data/lib/reflex/frame_event.rb +42 -0
  81. data/lib/reflex/helper.rb +87 -30
  82. data/lib/reflex/image_view.rb +25 -0
  83. data/lib/reflex/key_event.rb +38 -0
  84. data/lib/reflex/line_shape.rb +20 -0
  85. data/lib/reflex/list_view.rb +15 -0
  86. data/lib/reflex/model.rb +149 -0
  87. data/lib/reflex/model_owner.rb +57 -0
  88. data/lib/reflex/model_view.rb +22 -0
  89. data/lib/reflex/module.rb +11 -7
  90. data/lib/reflex/pointer_event.rb +85 -0
  91. data/lib/reflex/rect_shape.rb +20 -0
  92. data/lib/reflex/reflex.rb +13 -2
  93. data/lib/reflex/scroll_event.rb +19 -0
  94. data/lib/reflex/selector.rb +31 -0
  95. data/lib/reflex/shader.rb +13 -0
  96. data/lib/reflex/shape.rb +34 -0
  97. data/lib/reflex/style.rb +55 -0
  98. data/lib/reflex/style_length.rb +30 -0
  99. data/lib/reflex/style_length2.rb +34 -0
  100. data/lib/reflex/style_length4.rb +38 -0
  101. data/lib/reflex/text_view.rb +55 -0
  102. data/lib/reflex/update_event.rb +19 -0
  103. data/lib/reflex/view.rb +38 -4
  104. data/lib/reflex/wheel_event.rb +19 -0
  105. data/lib/reflex/window.rb +7 -5
  106. data/lib/reflex.rb +38 -1
  107. data/lib/reflexion/include.rb +5 -0
  108. data/lib/reflexion.rb +100 -0
  109. data/reflex.gemspec +3 -4
  110. data/samples/app.rb +13 -0
  111. data/samples/bats.rb +91 -0
  112. data/samples/checker.rb +36 -0
  113. data/{examples/ruby/shapes.rb → samples/fans.rb} +12 -16
  114. data/samples/fps.rb +46 -0
  115. data/samples/grid.rb +60 -0
  116. data/{examples/ruby → samples}/hello.rb +14 -16
  117. data/samples/image.rb +44 -0
  118. data/samples/ios/hello/hello/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  119. data/samples/ios/hello/hello/Images.xcassets/LaunchImage.launchimage/Contents.json +51 -0
  120. data/samples/ios/hello/hello/en.lproj/InfoPlist.strings +2 -0
  121. data/samples/ios/hello/hello/hello-Info.plist +47 -0
  122. data/samples/ios/hello/hello/hello-Prefix.pch +10 -0
  123. data/samples/ios/hello/hello/main.cpp +79 -0
  124. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +725 -0
  125. data/{examples/ruby → samples}/key.rb +11 -14
  126. data/samples/layout.rb +89 -0
  127. data/samples/model.rb +86 -0
  128. data/samples/osx/hello/hello/Images.xcassets/AppIcon.appiconset/Contents.json +58 -0
  129. data/samples/osx/hello/hello/en.lproj/Credits.rtf +29 -0
  130. data/samples/osx/hello/hello/en.lproj/InfoPlist.strings +2 -0
  131. data/samples/osx/hello/hello/hello-Info.plist +32 -0
  132. data/samples/osx/hello/hello/hello-Prefix.pch +3 -0
  133. data/samples/osx/hello/hello/main.cpp +79 -0
  134. data/samples/osx/hello/hello.xcodeproj/project.pbxproj +725 -0
  135. data/samples/reflexion/hello.rb +24 -0
  136. data/samples/reflexion/paint.rb +40 -0
  137. data/samples/reflexion/pulse.rb +34 -0
  138. data/samples/repl.rb +69 -0
  139. data/samples/shader.rb +41 -0
  140. data/samples/shapes.rb +30 -0
  141. data/{examples/ruby → samples}/text.rb +7 -8
  142. data/samples/tree.rb +71 -0
  143. data/samples/views.rb +41 -0
  144. data/samples/visuals.rb +22 -0
  145. data/src/event.cpp +225 -0
  146. data/src/exception.cpp +24 -15
  147. data/src/image_view.cpp +70 -0
  148. data/src/ios/app_delegate.h +17 -0
  149. data/src/ios/app_delegate.mm +120 -0
  150. data/src/ios/application.mm +116 -0
  151. data/src/{cocoa/applicationdata.h → ios/application_data.h} +6 -6
  152. data/src/ios/event.h +26 -0
  153. data/src/ios/event.mm +31 -0
  154. data/src/ios/native_window.h +37 -0
  155. data/src/ios/native_window.mm +220 -0
  156. data/src/ios/opengl_view.h +13 -0
  157. data/src/ios/opengl_view.mm +131 -0
  158. data/src/{cocoa → ios}/reflex.mm +8 -12
  159. data/src/ios/window.mm +303 -0
  160. data/src/ios/window_data.h +75 -0
  161. data/src/osx/app_delegate.h +17 -0
  162. data/src/{cocoa/cocoaapplication.mm → osx/app_delegate.mm} +90 -48
  163. data/src/osx/application.mm +132 -0
  164. data/src/osx/application_data.h +45 -0
  165. data/src/osx/event.h +42 -0
  166. data/src/osx/event.mm +112 -0
  167. data/src/osx/native_window.h +26 -0
  168. data/src/osx/native_window.mm +322 -0
  169. data/src/{cocoa/openglview.h → osx/opengl_view.h} +0 -4
  170. data/src/{cocoa/openglview.mm → osx/opengl_view.mm} +66 -23
  171. data/src/osx/reflex.mm +50 -0
  172. data/src/osx/window.mm +308 -0
  173. data/src/osx/window_data.h +75 -0
  174. data/src/selector.cpp +121 -0
  175. data/src/style.cpp +576 -0
  176. data/src/style_length.cpp +341 -0
  177. data/src/view.cpp +1228 -129
  178. data/src/win32/application.cpp +1 -1
  179. data/src/window.cpp +54 -26
  180. data/test/helper.rb +8 -4
  181. data/test/test_capture_event.rb +41 -0
  182. data/test/test_event.rb +20 -0
  183. data/test/test_has_frame.rb +45 -0
  184. data/test/test_model.rb +9 -0
  185. data/test/test_model_owner.rb +9 -0
  186. data/test/test_selector.rb +75 -0
  187. data/test/test_style.rb +70 -0
  188. data/test/test_style_length.rb +38 -0
  189. data/test/test_style_length2.rb +50 -0
  190. data/test/test_style_length4.rb +56 -0
  191. data/test/test_view.rb +97 -23
  192. data/test/test_window.rb +54 -46
  193. metadata +205 -84
  194. data/.doc/ext/reflex/defs.cpp +0 -8
  195. data/.doc/ext/reflex/key.cpp +0 -122
  196. data/.doc/ext/reflex/points.cpp +0 -151
  197. data/.gitignore +0 -14
  198. data/ChangeLog +0 -8
  199. data/examples/hello/.gitignore +0 -2
  200. data/examples/hello/Rakefile +0 -41
  201. data/examples/hello/main.cpp +0 -18
  202. data/examples/ruby/app.rb +0 -13
  203. data/examples/ruby/checker.rb +0 -41
  204. data/examples/ruby/fps.rb +0 -49
  205. data/examples/ruby/grid.rb +0 -65
  206. data/examples/ruby/views.rb +0 -88
  207. data/examples/ruby/visuals.rb +0 -27
  208. data/ext/reflex/defs.cpp +0 -8
  209. data/ext/reflex/key.cpp +0 -129
  210. data/ext/reflex/points.cpp +0 -161
  211. data/include/reflex/ruby/key.h +0 -39
  212. data/include/reflex/ruby/points.h +0 -39
  213. data/lib/reflex/visuals/string.rb +0 -53
  214. data/src/cocoa/application.mm +0 -101
  215. data/src/cocoa/cocoaapplication.h +0 -21
  216. data/src/cocoa/cocoawindow.h +0 -46
  217. data/src/cocoa/cocoawindow.mm +0 -230
  218. data/src/cocoa/defs.h +0 -34
  219. data/src/cocoa/defs.mm +0 -87
  220. data/src/cocoa/window.mm +0 -148
  221. data/src/cocoa/windowdata.h +0 -56
  222. data/src/defs.cpp +0 -47
  223. data/src/helper.h +0 -12
  224. data/src/reflex.cpp +0 -43
  225. /data/{README → README.md} +0 -0
@@ -0,0 +1,149 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'xot/invoker'
5
+ require 'xot/setter'
6
+ require 'xot/block_util'
7
+ require 'reflex/color'
8
+
9
+
10
+ module Reflex
11
+
12
+
13
+ class Model
14
+
15
+ include Enumerable
16
+ include Xot::Invoker
17
+ include Xot::Setter
18
+
19
+ attr_reader :data
20
+
21
+ def initialize (data = nil, &block)
22
+ self.data = data if data
23
+ Xot::BlockUtil.instance_eval_or_block_call self, &block if block
24
+ end
25
+
26
+ def data= (data)
27
+ skip, data = apply_filters(data).tap do |filtered|
28
+ skip = filtered.nil? && !data.nil?
29
+ break skip, filtered
30
+ end
31
+ if !skip && data != @data
32
+ @data = data
33
+ invoke :update
34
+ end
35
+ @data
36
+ end
37
+
38
+ def add_handler (handler)
39
+ super
40
+ invoke :attach, {}, only: handler
41
+ end
42
+
43
+ def remove_handler (handler)
44
+ invoke :detach, {}, only: handler
45
+ super
46
+ end
47
+
48
+ def invoke (name, attributes = {}, options = {})
49
+ attributes[:data] ||= @data
50
+ super "on_data_#{name}".intern, attributes, options
51
+ end
52
+
53
+ def add_filter (&block)
54
+ (@filters ||= []).push block
55
+ end
56
+
57
+ def remove_filter (&block)
58
+ @filters.delete block if @filters
59
+ end
60
+
61
+ alias filter add_filter
62
+
63
+ def validate (&block)
64
+ filter {|data| block.call(data) ? data : nil}
65
+ end
66
+
67
+ def min= (min)
68
+ filter {|data| data < min ? min : data}
69
+ end
70
+
71
+ def max= (max)
72
+ filter {|data| data > max ? max : data}
73
+ end
74
+
75
+ def minmax= (range)
76
+ min, max = range.min, range.max
77
+ filter {|data| data < min ? min : data > max ? max : data}
78
+ end
79
+
80
+ def int (defvar = nil)
81
+ call_symbols INT_SYMS
82
+ end
83
+
84
+ def float (defvar = nil)
85
+ call_symbols FLOAT_SYMS
86
+ end
87
+
88
+ def string (defvar = nil)
89
+ call_symbols STRING_SYMS
90
+ end
91
+
92
+ def [] (*args)
93
+ call_symbols ARRAY_GET_SYMS, *args
94
+ end
95
+
96
+ def []= (*args)
97
+ ret = call_symbols ARRAY_SET_SYMS, *args
98
+ invoke :update
99
+ ret
100
+ end
101
+
102
+ def size ()
103
+ call_symbols(ARRAY_SIZE_SYMS) || 0
104
+ end
105
+
106
+ def each (&block)
107
+ data.each &block if block && data.respond_to?(:each)
108
+ end
109
+
110
+ def inspect ()
111
+ "#<Model data:#{@data.inspect}>"
112
+ end
113
+
114
+ private
115
+
116
+ INT_SYMS = [:to_i, :to_int]
117
+
118
+ FLOAT_SYMS = [:to_f, :to_float]
119
+
120
+ STRING_SYMS = [:to_s, :to_str, :to_string]
121
+
122
+ ARRAY_GET_SYMS = [:[], :at]
123
+
124
+ ARRAY_SET_SYMS = [:[]=, :set_at]
125
+
126
+ ARRAY_SIZE_SYMS = [:size, :length]
127
+
128
+ def apply_filters (data)
129
+ return data unless @filters
130
+ @filters.each do |filter|
131
+ break if data.nil?
132
+ data = filter.call data
133
+ end
134
+ data
135
+ end
136
+
137
+ def call_symbols (symbols, *args)
138
+ if dat = data
139
+ symbols.each do |symbol|
140
+ return dat.send symbol, *args if dat.respond_to? symbol
141
+ end
142
+ end
143
+ nil
144
+ end
145
+
146
+ end# Model
147
+
148
+
149
+ end# Reflex
@@ -0,0 +1,57 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'reflex/model'
5
+
6
+
7
+ module Reflex
8
+
9
+
10
+ module ModelOwner
11
+
12
+ attr_reader :model
13
+
14
+ def model= (model)
15
+ return if model == @model
16
+ @model.remove_handler self if @model
17
+ @model = model
18
+ @model.add_handler self if @model
19
+ model
20
+ end
21
+
22
+ def data= (data)
23
+ unless data.nil?
24
+ self.model = Model.new unless @model
25
+ @model.data = data
26
+ else
27
+ self.model = nil
28
+ end
29
+ data
30
+ end
31
+
32
+ def data ()
33
+ @model ? @model.data : nil
34
+ end
35
+
36
+ def invoke (*args)
37
+ @model.invoke *args if @model
38
+ end
39
+
40
+ def on_data_attach (e)
41
+ invoke :update, {}, only: self
42
+ end
43
+
44
+ def on_data_detach (e)
45
+ invoke :update, {}, only: self
46
+ end
47
+
48
+ [:int, :float, :string, :[], :[]=].each do |name|
49
+ define_method name do |*args|
50
+ @model ? @model.send(name, *args) : nil
51
+ end
52
+ end
53
+
54
+ end# ModelOwner
55
+
56
+
57
+ end# Reflex
@@ -0,0 +1,22 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'reflex/model_owner'
5
+
6
+
7
+ module Reflex
8
+
9
+
10
+ module ModelView
11
+
12
+ include ModelOwner
13
+
14
+ def on_data_update (e)
15
+ resize_to_fit
16
+ redraw
17
+ end
18
+
19
+ end# ModelView
20
+
21
+
22
+ end# Reflex
data/lib/reflex/module.rb CHANGED
@@ -4,7 +4,11 @@
4
4
  module Reflex
5
5
 
6
6
 
7
- extend module ModuleInfo
7
+ module Module
8
+
9
+ def name ()
10
+ super.split('::')[-2]
11
+ end
8
12
 
9
13
  def version ()
10
14
  open(root_dir 'VERSION') {|f| f.readline.chomp}
@@ -14,12 +18,12 @@ module Reflex
14
18
  File.expand_path "../../../#{path}", __FILE__
15
19
  end
16
20
 
17
- def include_dirs ()
18
- %w[include].map {|dir| root_dir dir}
21
+ def include_dir ()
22
+ root_dir 'include'
19
23
  end
20
24
 
21
- def lib_dirs ()
22
- %w[lib].map {|dir| root_dir dir}
25
+ def lib_dir ()
26
+ root_dir 'lib'
23
27
  end
24
28
 
25
29
  def task_dir ()
@@ -37,9 +41,9 @@ module Reflex
37
41
  end
38
42
  end
39
43
 
40
- self
44
+ extend self
41
45
 
42
- end# ModuleInfo
46
+ end# Module
43
47
 
44
48
 
45
49
  end# Reflex
@@ -0,0 +1,85 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'reflex/ext'
5
+
6
+
7
+ module Reflex
8
+
9
+
10
+ class PointerEvent
11
+
12
+ alias pos position
13
+
14
+ def type ()
15
+ TYPE2SYM[get_type] || :none
16
+ end
17
+
18
+ def down? ()
19
+ get_type == TYPE_DOWN
20
+ end
21
+
22
+ def up? ()
23
+ get_type == TYPE_UP
24
+ end
25
+
26
+ def move? ()
27
+ get_type == TYPE_MOVE
28
+ end
29
+
30
+ def left? ()
31
+ pointer_type.include? :mouse_left
32
+ end
33
+
34
+ def right? ()
35
+ pointer_type.include? :mouse_right
36
+ end
37
+
38
+ def middle? ()
39
+ pointer_type.include? :mouse_middle
40
+ end
41
+
42
+ def touch? ()
43
+ pointer_type.include? :touch
44
+ end
45
+
46
+ def pen? ()
47
+ pointer_type.include? :pen
48
+ end
49
+
50
+ def pointer_type ()
51
+ type_, array = get_pointer_type, []
52
+ POINTER_TYPE_LAST.to_s(2).sub(/^0+/, '').size.times do |i|
53
+ bit = 0x1 << i
54
+ if (type_ & bit) != 0
55
+ sym = POINTERTYPE2SYM[bit]
56
+ array << sym if sym
57
+ end
58
+ end
59
+ array
60
+ end
61
+
62
+ def inspect ()
63
+ "#<Reflex::PointerEvent type:#{type}/#{pointer_type} x:#{x} y:#{y} size:#{size} mod:#{modifiers} count:#{count} drag:#{drag?}>"
64
+ end
65
+
66
+ private
67
+
68
+ TYPE2SYM = {
69
+ TYPE_DOWN => :down,
70
+ TYPE_UP => :up,
71
+ TYPE_MOVE => :move
72
+ }
73
+
74
+ POINTERTYPE2SYM = {
75
+ POINTER_MOUSE_LEFT => :mouse_left,
76
+ POINTER_MOUSE_RIGHT => :mouse_right,
77
+ POINTER_MOUSE_MIDDLE => :mouse_middle,
78
+ POINTER_TOUCH => :touch,
79
+ POINTER_PEN => :pen,
80
+ }
81
+
82
+ end# PointerEvent
83
+
84
+
85
+ end# Reflex
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'reflex/shape'
5
+
6
+
7
+ module Reflex
8
+
9
+
10
+ class RectShape < Shape
11
+
12
+ def on_draw (e)
13
+ p, b = e.painter, e.bounds
14
+ attach_color_and_border(p) {p.rect b}
15
+ end
16
+
17
+ end# RectShape
18
+
19
+
20
+ end# Reflex
data/lib/reflex/reflex.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
  require 'reflex/ext'
5
+ require 'reflex/window'
5
6
 
6
7
 
7
8
  module Reflex
@@ -9,8 +10,18 @@ module Reflex
9
10
 
10
11
  extend module ClassMethods
11
12
 
12
- def run (name = nil)
13
- run! name
13
+ def start (*args, &block)
14
+ Application.new(*args, &block).start
15
+ end
16
+
17
+ def quit ()
18
+ Application.instance.quit
19
+ end
20
+
21
+ def window (*args, &block)
22
+ w = Window.new *args, &block
23
+ w.show
24
+ w
14
25
  end
15
26
 
16
27
  self
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'reflex/ext'
5
+
6
+
7
+ module Reflex
8
+
9
+
10
+ class ScrollEvent
11
+
12
+ def inspect ()
13
+ "#<Reflex::ScrollEvent x:#{x} y:#{y} z:#{z} dx:#{dx} dy:#{dy} dz:#{dz}>"
14
+ end
15
+
16
+ end# ScrollEvent
17
+
18
+
19
+ end# Reflex
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'xot/setter'
5
+ require 'xot/block_util'
6
+ require 'reflex/ext'
7
+ require 'reflex/helper'
8
+
9
+
10
+ module Reflex
11
+
12
+
13
+ class Selector
14
+
15
+ include Xot::Setter
16
+ include HasTags
17
+
18
+ def initialize (opts = {}, &block)
19
+ super()
20
+ set opts
21
+ Xot::BlockUtil.instance_eval_or_block_call self, &block if block
22
+ end
23
+
24
+ def inspect ()
25
+ "#<#{self.class} name:'#{name}' tags:[#{tags.map{|s| "'#{s}'"}.to_a.join ','}]>"
26
+ end
27
+
28
+ end# Selector
29
+
30
+
31
+ end# Reflex
@@ -0,0 +1,13 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'rays/shader'
5
+
6
+
7
+ module Reflex
8
+
9
+
10
+ Shader = Rays::Shader
11
+
12
+
13
+ end# Reflex
@@ -0,0 +1,34 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'reflex/view'
5
+
6
+
7
+ module Reflex
8
+
9
+
10
+ class Shape < View
11
+
12
+ attr_accessor :color, :border
13
+
14
+ def initialize (*args, &block)
15
+ @color = :white
16
+ @border = :none
17
+ super
18
+ end
19
+
20
+ private
21
+
22
+ def attach_color_and_border (painter, &block)
23
+ fill, stroke = painter.color @color, @border
24
+ if block
25
+ block.call
26
+ painter.color fill, stroke
27
+ end
28
+ return fill, stroke
29
+ end
30
+
31
+ end# Shape
32
+
33
+
34
+ end# Reflex
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'xot/setter'
5
+ require 'xot/block_util'
6
+ require 'reflex/ext'
7
+ require 'reflex/helper'
8
+
9
+
10
+ module Reflex
11
+
12
+
13
+ class Style
14
+
15
+ include Xot::Setter
16
+ include HasTags
17
+
18
+ def initialize (opts = {}, &block)
19
+ super()
20
+ set opts
21
+ Xot::BlockUtil.instance_eval_or_block_call self, &block if block
22
+ end
23
+
24
+ def flow= (*syms)
25
+ set_flow *syms.flatten.map {|sym| sym2flow sym}
26
+ end
27
+
28
+ def flow ()
29
+ get_flow.map {|n| flow2sym n}
30
+ end
31
+
32
+ private
33
+
34
+ SYM2FLOW = {
35
+ none: FLOW_NONE,
36
+ down: FLOW_DOWN,
37
+ right: FLOW_RIGHT,
38
+ up: FLOW_UP,
39
+ left: FLOW_LEFT,
40
+ }
41
+
42
+ FLOW2SYM = SYM2FLOW.inject({}) {|h, (k, v)| h[v] = k; h}
43
+
44
+ def sym2flow (sym)
45
+ SYM2FLOW[sym] || FLOW_NONE
46
+ end
47
+
48
+ def flow2sym (flow)
49
+ FLOW2SYM[flow] || :none
50
+ end
51
+
52
+ end# Style
53
+
54
+
55
+ end# Reflex
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'reflex/ext'
5
+
6
+
7
+ module Reflex
8
+
9
+
10
+ class StyleLength
11
+
12
+ def initialize (*args)
13
+ return if args.empty?
14
+ case args[0]
15
+ when Numeric
16
+ args << :px if args.size < 2
17
+ setup_num *args
18
+ when String
19
+ setup_str *args
20
+ end
21
+ end
22
+
23
+ def inspect ()
24
+ "#<Reflex::StyleLength #{value}#{unit}>"
25
+ end
26
+
27
+ end# StyleLength
28
+
29
+
30
+ end# Reflex
@@ -0,0 +1,34 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'xot/setter'
5
+ require 'xot/block_util'
6
+ require 'reflex/ext'
7
+
8
+
9
+ module Reflex
10
+
11
+
12
+ class StyleLength2
13
+
14
+ include Xot::Setter
15
+
16
+ alias w= width=
17
+ alias w width
18
+ alias h= height=
19
+ alias h height
20
+
21
+ def initialize (opts = {}, &block)
22
+ super()
23
+ set opts
24
+ Xot::BlockUtil.instance_eval_or_block_call self, &block if block
25
+ end
26
+
27
+ def to_a ()
28
+ [width, height]
29
+ end
30
+
31
+ end# StyleLength2
32
+
33
+
34
+ end# Reflex
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'xot/setter'
5
+ require 'xot/block_util'
6
+ require 'reflex/ext'
7
+
8
+
9
+ module Reflex
10
+
11
+
12
+ class StyleLength4
13
+
14
+ include Xot::Setter
15
+
16
+ alias l= left=
17
+ alias l left
18
+ alias t= top=
19
+ alias t top
20
+ alias r= right=
21
+ alias r right
22
+ alias b= bottom=
23
+ alias b bottom
24
+
25
+ def initialize (opts = {}, &block)
26
+ super()
27
+ set opts
28
+ Xot::BlockUtil.instance_eval_or_block_call self, &block if block
29
+ end
30
+
31
+ def to_a ()
32
+ [left, top, right, bottom]
33
+ end
34
+
35
+ end# StyleLength4
36
+
37
+
38
+ end# Reflex