atome 0.5.1.9 → 0.5.2.5

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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +22 -5
  3. data/lib/atome/atome.rb +37 -16
  4. data/lib/atome/extensions/atome.rb +5 -26
  5. data/lib/atome/extensions/geolocation.rb +0 -1
  6. data/lib/atome/extensions/matrix.rb +171 -0
  7. data/lib/atome/extensions/ping.rb +9 -11
  8. data/lib/atome/genesis/generators/atome.rb +14 -2
  9. data/lib/atome/genesis/generators/communication.rb +1 -1
  10. data/lib/atome/genesis/generators/event.rb +25 -0
  11. data/lib/atome/genesis/generators/identity.rb +28 -0
  12. data/lib/atome/genesis/generators/material.rb +21 -0
  13. data/lib/atome/genesis/generators/spatial.rb +1 -0
  14. data/lib/atome/genesis/generators/utility.rb +20 -2
  15. data/lib/atome/genesis/genesis.rb +2 -2
  16. data/lib/atome/genesis/sparkle.rb +1 -1
  17. data/lib/atome/helpers/callbacks.rb +33 -25
  18. data/lib/atome/helpers/essentials.rb +5 -2
  19. data/lib/atome/helpers/utilities.rb +52 -8
  20. data/lib/atome/kernel/universe.rb +0 -4
  21. data/lib/atome/presets/atome.rb +11 -7
  22. data/lib/atome/renderers/browser/atome.rb +7 -7
  23. data/lib/atome/renderers/browser/browser.rb +5 -2
  24. data/lib/atome/renderers/browser/effect.rb +2 -2
  25. data/lib/atome/renderers/browser/event.rb +27 -16
  26. data/lib/atome/renderers/browser/geometry.rb +2 -2
  27. data/lib/atome/renderers/browser/helpers/animation_helper.rb +69 -0
  28. data/lib/atome/renderers/browser/helpers/browser_helper.rb +0 -1
  29. data/lib/atome/renderers/browser/helpers/color_helper.rb +0 -2
  30. data/lib/atome/renderers/browser/helpers/drag_helper.rb +6 -6
  31. data/lib/atome/renderers/browser/helpers/effect_helper.rb +4 -0
  32. data/lib/atome/renderers/browser/helpers/event_helper.rb +59 -0
  33. data/lib/atome/renderers/browser/helpers/video_helper.rb +1 -1
  34. data/lib/atome/renderers/browser/identity.rb +10 -3
  35. data/lib/atome/renderers/browser/material.rb +28 -5
  36. data/lib/atome/renderers/browser/spatial.rb +36 -5
  37. data/lib/atome/renderers/browser/utility.rb +20 -11
  38. data/lib/atome/renderers/headless/utility.rb +2 -2
  39. data/lib/atome/renderers/html/atome.rb +5 -5
  40. data/lib/atome/renderers/html/effect.rb +1 -1
  41. data/lib/atome/renderers/html/event.rb +1 -1
  42. data/lib/atome/renderers/html/geometry.rb +2 -2
  43. data/lib/atome/renderers/html/identity.rb +2 -2
  44. data/lib/atome/renderers/html/spatial.rb +5 -5
  45. data/lib/atome/renderers/html/utility.rb +7 -7
  46. data/lib/atome/renderers/server/utility.rb +2 -2
  47. data/lib/atome/version.rb +1 -1
  48. data/lib/atome.rb +6 -3
  49. data/sig/atome_js.rbs +1 -0
  50. data/vendor/assets/build/css/style.css +23 -16
  51. data/vendor/assets/build/index.html +4 -2
  52. data/vendor/assets/build/js/third_parties/wad.min.js +9 -0
  53. data/vendor/assets/build/medias/audios/Binrpilot.mp3 +0 -0
  54. data/vendor/assets/build/medias/rubies/examples/_2_solve.rb +24 -2
  55. data/vendor/assets/build/medias/rubies/examples/_audio.rb +178 -0
  56. data/vendor/assets/build/medias/rubies/examples/_dataset.rb +82 -0
  57. data/vendor/assets/build/medias/rubies/examples/_markers.rb +57 -0
  58. data/vendor/assets/build/medias/rubies/examples/_os.rb +29 -0
  59. data/vendor/assets/build/medias/rubies/examples/_vie.rb +211 -0
  60. data/vendor/assets/build/medias/rubies/examples/animation.rb +81 -0
  61. data/vendor/assets/build/medias/rubies/examples/at.rb +5 -1
  62. data/vendor/assets/build/medias/rubies/examples/{atome.new.rb → atome_new.rb} +5 -5
  63. data/vendor/assets/build/medias/rubies/examples/bottom.rb +1 -1
  64. data/vendor/assets/build/medias/rubies/examples/center.rb +21 -0
  65. data/vendor/assets/build/medias/rubies/examples/clone.rb +20 -0
  66. data/vendor/assets/build/medias/rubies/examples/color.rb +20 -15
  67. data/vendor/assets/build/medias/rubies/examples/cursor.rb +7 -0
  68. data/vendor/assets/build/medias/rubies/examples/delete.rb +25 -3
  69. data/vendor/assets/build/medias/rubies/examples/drag.rb +3 -2
  70. data/vendor/assets/build/medias/rubies/examples/edit.rb +12 -0
  71. data/vendor/assets/build/medias/rubies/examples/empty_atome.rb +12 -0
  72. data/vendor/assets/build/medias/rubies/examples/hide.rb +7 -0
  73. data/vendor/assets/build/medias/rubies/examples/matrix.rb +58 -0
  74. data/vendor/assets/build/medias/rubies/examples/monitoring.rb +22 -11
  75. data/vendor/assets/build/medias/rubies/examples/play.rb +1 -1
  76. data/vendor/assets/build/medias/rubies/examples/read.rb +7 -4
  77. data/vendor/assets/build/medias/rubies/examples/remove.rb +16 -0
  78. data/vendor/assets/build/medias/rubies/examples/right.rb +1 -1
  79. data/vendor/assets/build/medias/rubies/examples/shadow.rb +8 -1
  80. data/vendor/assets/build/medias/rubies/examples/sort.rb +7 -4
  81. data/vendor/assets/build/medias/rubies/examples/style.rb +4 -0
  82. data/vendor/assets/build/medias/rubies/examples/touch.rb +50 -7
  83. data/vendor/assets/build/medias/texts/lorem.txt +1 -0
  84. metadata +24 -4
  85. data/vendor/assets/build/medias/rubies/examples/_animation.rb +0 -46
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 108def7ca1abaccd885638fdea127766d1f97c4ac2559faee3eec445b52bdbac
4
- data.tar.gz: bf00b2ccb9e339a08c16221964b11cd6c2440cc415f6886bef2e4c18ac1967f1
3
+ metadata.gz: 9b7030ffafd358342bdc993dcee7f6a7f35c0c7c2504a85149bea5c2751b5d89
4
+ data.tar.gz: bab45507e748e52cf793b19f2bb7457bb0d05fce580286854b49c32515dabd66
5
5
  SHA512:
6
- metadata.gz: 3ecf2a30c425a8b46f88f08cd5b436d6298dd36b8db8984a50190a15a360639c6ac161725c3c5a7b327c740927032315a46a988fbdf5790fe830e31a5d22d4a4
7
- data.tar.gz: 5585b8e500d715c86799172790bcc7be0bbc67cfbc438a6fedf03be8aecfea287df999588d4771d4c50f6a62dbad35fa2002f387b425fc602de776c9ff310ca0
6
+ metadata.gz: 1d72ba4a1af3d68412a3a64f0e3907f523cb03188f0c5becc355e8afc2e4e0d3b59ef06863171c6d8808ceedbace062099535823be732a058282acac7943a320
7
+ data.tar.gz: 1146eea7819fca1b160453cdd7187d11bf2e6a9471afeb4489246ba9297ecc708563d63a1ce679caf594fe1218b524c24c6dec3349c6a04c546ae36da9cffb72
data/Rakefile CHANGED
@@ -14,21 +14,38 @@ task default: :test
14
14
  task :test_browser do
15
15
  FileUtils.copy_entry('vendor/assets/build/js/', 'test/test_app/build/js/')
16
16
  FileUtils.copy_entry('vendor/assets/build/css/', 'test/test_app/build/css/')
17
- FileUtils.copy_entry('vendor/assets/build/css/', 'test/test_app/build/medias/')
17
+ FileUtils.copy_entry('vendor/assets/build/medias/', 'test/test_app/build/medias/')
18
18
  `gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;gem install atome`
19
19
  `cd test/test_app;atome update;atome run guard`
20
20
  end
21
21
 
22
- task :run_browser do
23
- `cd test/test_app;atome run guard`
24
- end
22
+
25
23
 
26
24
  task :test_server do
27
25
  FileUtils.copy_entry('vendor/assets/build/js/', 'test/test_app/build/js/')
28
26
  FileUtils.copy_entry('vendor/assets/build/css/', 'test/test_app/build/css/')
29
- FileUtils.copy_entry('vendor/assets/build/css/', 'test/test_app/build/medias/')
27
+ FileUtils.copy_entry('vendor/assets/build/medias/', 'test/test_app/build/medias/')
30
28
  `gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;gem install atome`
31
29
  `cd test/test_app;atome update;atome run server`
32
30
  end
33
31
 
32
+ task :run_browser do
33
+ `cd test/test_app;atome run guard`
34
+ end
35
+
36
+ task :run_server do
37
+ `cd test/test_app;atome run server guard`
38
+ end
39
+
40
+ task :run_example do
41
+ FileUtils.copy_entry('vendor/assets/build/medias/rubies/examples/', 'test/test_app/build/medias/rubies/examples/')
42
+ `cd test/test_app;atome run `
43
+ end
44
+
45
+ task :run_example_server do
46
+ FileUtils.copy_entry('vendor/assets/build/medias/rubies/examples/', 'test/test_app/build/medias/rubies/examples/')
47
+ `cd test/test_app;atome run server `
48
+ end
49
+
50
+
34
51
  task default: :test
data/lib/atome/atome.rb CHANGED
@@ -16,22 +16,26 @@ class Atome
16
16
  # the instance variable below contain the id all any atomes that need to be informed when changes occurs
17
17
  @broadcast = {}
18
18
  @at_time = {}
19
+ @markers = {}
19
20
  # now we store the proc in a an atome's property called :bloc
20
21
  elements[:code] = atomes_proc if atomes_proc
21
22
  @atome = elements
22
23
  # we initiate the rendering, eg for for browser we will call :browser_type generate method in identity.rb file
23
- create_particle(:type, @atome[:type])
24
+ # create_particle(:type, @atome[:type])
25
+ create_particle(:type)
26
+ set_type(@atome[:type])
24
27
  collapse
25
28
  end
26
29
  end
27
30
 
28
31
  def new_particle(element, &method_proc)
29
32
  Atome.define_method element do |params = nil, &user_proc|
30
- if params
33
+ if params || params == false
31
34
  # the line below execute the proc created when using the build_particle method
32
35
  instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
33
36
  params = sanitize(element, params)
34
- create_particle(element, params, &user_proc)
37
+ create_particle(element)
38
+ send("set_#{element}", params, &user_proc)
35
39
  else
36
40
  get_particle(element, &user_proc)
37
41
  end
@@ -42,20 +46,27 @@ class Atome
42
46
  Atome.define_method "#{element}=" do |params = nil, &user_proc|
43
47
  instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
44
48
  params = sanitize(element, params)
45
- create_particle(element, params, &user_proc)
49
+ particle_creation(element, params, &user_proc)
46
50
  end
47
51
  end
48
52
 
53
+ def atome_creation_pre_treatment(element, params, &user_proc)
54
+ params = sanitize(element, params)
55
+ create_atome(element)
56
+ send("set_#{element}", params, &user_proc)
57
+ end
58
+
49
59
  def new_atome(element, &method_proc)
50
60
  Atome.define_method element do |params = nil, &user_proc|
51
61
  if params
52
62
  instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
53
- params = sanitize(element, params)
54
- Atome.new({ element => params })
63
+ atome_creation_pre_treatment(element, params, &user_proc)
55
64
  else
56
65
  get_atome(element, &user_proc)
57
66
  end
58
67
  end
68
+ # the method below generate Atome method creation at Object level
69
+ create_method_at_object_level(element)
59
70
  end
60
71
 
61
72
  def new_render_engine(renderer_name, &method_proc)
@@ -66,7 +77,7 @@ class Atome
66
77
 
67
78
  def run_optional_proc(proc_name, atome = self, value = '', &user_proc)
68
79
  option_found = Universe.get_optional_method(proc_name)
69
- atome.instance_exec(value,user_proc, &option_found) if option_found.is_a?(Proc)
80
+ atome.instance_exec(value, user_proc,atome, &option_found) if option_found.is_a?(Proc)
70
81
  end
71
82
 
72
83
  def inject_value(element, value)
@@ -82,23 +93,31 @@ class Atome
82
93
  public
83
94
 
84
95
  # the line below is used for ephemera atomes
85
- attr_accessor :property, :value, :real_atome, :user_proc
96
+ attr_accessor :property, :value, :real_atome, :user_proc, :markers
86
97
  attr_reader :atome, :structure, :at_time
87
98
 
88
99
  def set(value)
89
100
  @real_atome[@property] = value
90
101
  end
91
102
 
92
- def create_particle(element, value, &user_proc)
93
- return false unless security_pass(element, value)
103
+ def particle_creation(element, params, &user_proc)
104
+ return false unless security_pass(element, params)
94
105
 
95
- run_optional_proc("pre_render_#{element}".to_sym, self, value, &user_proc)
96
- rendering(element, value, &user_proc)
97
- run_optional_proc("post_render_#{element}".to_sym, self, value, &user_proc)
98
- store_value(element, value)
106
+ # we create a proc holder of any new particle if user pass a bloc
107
+ store_code_bloc(element, &user_proc) if user_proc
108
+ run_optional_proc("pre_render_#{element}".to_sym, self, params, &user_proc)
109
+ rendering(element, params, &user_proc)
110
+ run_optional_proc("post_render_#{element}".to_sym, self, params, &user_proc)
111
+ store_value(element, params)
99
112
  self
100
113
  end
101
114
 
115
+ def create_particle(element)
116
+ Atome.define_method "set_#{element}" do |params, &user_proc|
117
+ particle_creation(element, params, &user_proc)
118
+ end
119
+ end
120
+
102
121
  def get(element)
103
122
  @atome[element]
104
123
  end
@@ -109,7 +128,7 @@ class Atome
109
128
  virtual_atome.real_atome = @atome
110
129
  virtual_atome.property = element
111
130
  virtual_atome.user_proc = user_proc
112
- run_optional_proc("pre_get_#{element}".to_sym, virtual_atome, &user_proc)
131
+ run_optional_proc("pre_get_#{element}".to_sym,self, "virtual_atome", &user_proc)
113
132
  virtual_atome
114
133
  end
115
134
 
@@ -123,7 +142,9 @@ class Atome
123
142
  end
124
143
 
125
144
  def create_atome(new_atome)
126
- Atome.new(new_atome)
145
+ Atome.define_method "set_#{new_atome}" do |params, &user_proc|
146
+ Atome.new({ new_atome => params }, &user_proc)
147
+ end
127
148
  end
128
149
 
129
150
  Universe.connected
@@ -12,30 +12,9 @@ def circle(params = {}, &proc)
12
12
  grab(:view).circle(params, &proc)
13
13
  end
14
14
 
15
- def text(params = {}, &bloc)
16
- grab(:view).text(params, &bloc)
17
- end
18
-
19
- def image(params = {}, &bloc)
20
- grab(:view).image(params, &bloc)
21
- end
22
-
23
- def video(params = {}, &bloc)
24
- grab(:view).video(params, &bloc)
25
- end
26
-
27
- def color(params = {}, &bloc)
28
- grab(:view).color(params, &bloc)
29
- end
30
-
31
- def element(params = {}, &bloc)
32
- grab(:view).element(params, &bloc)
33
- end
34
-
35
- def shadow(params = {}, &bloc)
36
- grab(:view).shadow(params, &bloc)
37
- end
38
-
39
- def web(params = {}, &bloc)
40
- grab(:view).web(params, bloc)
15
+ # the method below generate Atome method creation at Object level
16
+ def create_method_at_object_level(element)
17
+ Object.define_method element do |params = nil, &user_proc|
18
+ grab(:view).send(element, params, &user_proc)
19
+ end
41
20
  end
@@ -11,4 +11,3 @@ class Atome
11
11
  results.first.coordinates
12
12
  end
13
13
  end
14
-
@@ -0,0 +1,171 @@
1
+ # frozen_string_literal: true
2
+
3
+ # powerful and simple to use table and list generator
4
+ class Matrix
5
+ attr_accessor :matrix
6
+
7
+ def create_matrix_back( id, style)
8
+ @matrix = Atome.new(
9
+ shape: { type: :shape, renderers: [:browser], id: id, parents: [:view], children: [:matrix_color],
10
+ overflow: :auto }
11
+ )
12
+ @matrix.style(style)
13
+ end
14
+
15
+ def create_matrix_colors
16
+ Atome.new({ color: { renderers: [:browser], id: :matrix_color, type: :color, parents: [], children: [],
17
+ red: 0, green: 1, blue: 1, alpha: 1 } })
18
+
19
+ Atome.new({ color: { renderers: [:browser], id: :cell_color, type: :color, parents: [], children: [],
20
+ red: 1, green: 0.15, blue: 0.7, alpha: 1 } })
21
+ end
22
+
23
+ def create_cells(id, cell_number, number_of_cells, style)
24
+ while cell_number < number_of_cells
25
+ @matrix_dataset[cell_number] = []
26
+ @cells << a = Atome.new(
27
+ shape: { type: :shape, renderers: [:browser], id: id + "_#{cell_number}", parents: [id],
28
+ children: [:cell_color] }
29
+ )
30
+ a.style(style)
31
+ cell_number += 1
32
+ end
33
+ end
34
+
35
+ def initialize(params)
36
+ default = { col: 4, row: 4, size: 333, margin: 12, name: :matrix, parent: :view }
37
+ params = default.merge(params)
38
+ nb_of_rows = params[:row]
39
+ nb_of_cols = params[:col]
40
+ matrix_width = params[:width]
41
+ matrix_height = params[:height]
42
+
43
+ @matrix_dataset = []
44
+ @matrix_margin = params[:margin]
45
+ params[:id] = :matrix unless params[:id]
46
+ @matrix_id = params[:id]
47
+ # styles
48
+ @matrix_style = params[:matrix_style]
49
+ @cell_style = params[:cell_style]
50
+ # Colors
51
+ create_matrix_colors
52
+ # now we create the background
53
+ create_matrix_back( @matrix_id, @matrix_style)
54
+
55
+ @nb_of_rows = nb_of_rows.to_i
56
+ @nb_of_cols = nb_of_cols.to_i
57
+ number_of_cells = @nb_of_rows * @nb_of_cols
58
+ @cells = []
59
+ cell_number = 0
60
+ create_cells(@matrix_id, cell_number, number_of_cells, @cell_style)
61
+
62
+ resize_matrix({ width: matrix_width, height: matrix_height })
63
+ end
64
+
65
+ def width(val = nil)
66
+ if val
67
+ resize_matrix({ height: height, width: val })
68
+ else
69
+ @matrix.width.value
70
+ end
71
+
72
+ end
73
+
74
+ def height(val = nil)
75
+ if val
76
+ resize_matrix({ width: width, height: val })
77
+ else
78
+ @matrix.height.value
79
+ end
80
+ end
81
+
82
+ def left(val)
83
+ @matrix.left(val)
84
+ end
85
+
86
+ def right(val)
87
+ @matrix.right(val)
88
+ end
89
+
90
+ def resize_matrix(params)
91
+ matrix_width = params[:width]
92
+ matrix_height = params[:height]
93
+ cell_width = (matrix_width / @nb_of_cols) - @matrix_margin
94
+ cell_height = (matrix_height / @nb_of_rows) - @matrix_margin
95
+ row = -1
96
+ @cells.each_with_index do |cell, index|
97
+ cell.height = cell_height
98
+ cell.width = cell_width
99
+ row += 1 if index.modulo(@nb_of_cols).zero?
100
+ cell.left(index % @nb_of_cols * (cell_width + @matrix_margin) + @matrix_margin)
101
+ cell.top(row * (cell_height + @matrix_margin) + @matrix_margin)
102
+ end
103
+
104
+ @matrix.width = matrix_width + @matrix_margin
105
+ @matrix.height = matrix_height + @matrix_margin
106
+ end
107
+
108
+ def get_cell(id)
109
+ grab("#{@matrix_id}_#{id}")
110
+ end
111
+
112
+ def delete(val = true)
113
+ @matrix.delete(true) if val
114
+ end
115
+
116
+ attr_reader :cells
117
+
118
+ def name
119
+ @matrix.name
120
+ end
121
+
122
+ def get_cell_data(codes, cell_nb)
123
+ codes.each do |proc|
124
+ if proc.is_a? Proc
125
+ assign(cell_nb, &proc)
126
+ end
127
+ end
128
+ end
129
+
130
+ def add(params)
131
+ nb_of_cols = @nb_of_cols + params[:columns].to_i
132
+ nb_of_rows = @nb_of_rows + params[:rows].to_i
133
+ current_id = @matrix.atome[:id]
134
+ # we delete all children to unbind any event
135
+ @cells.each do |cell|
136
+ cell.delete(true)
137
+ cell.unbind(:all)
138
+ end
139
+ temp_id = "#{current_id}_temporary"
140
+ @matrix.id = temp_id
141
+ old_matrix=grab(temp_id)
142
+
143
+ old_matrix.delete(true)
144
+
145
+
146
+ Matrix.new({ col: nb_of_cols, row: nb_of_rows, width: 300, height: 300, id: current_id, margin: @matrix_margin,
147
+ matrix_style: @matrix_style,
148
+ cell_style: @cell_style
149
+ })
150
+
151
+ @matrix_dataset.each_with_index do |cell_data, index|
152
+ get_cell_data(cell_data, index)
153
+ end
154
+ end
155
+
156
+ def assign(cell_nb = nil, &proc)
157
+ current_cell = grab("#{@matrix_id}_#{cell_nb}")
158
+ if proc
159
+ @matrix_dataset[cell_nb] << proc
160
+ current_cell.instance_exec(&proc) if proc.is_a? Proc
161
+ else
162
+ @matrix_dataset[cell_nb]
163
+ end
164
+ end
165
+
166
+ def reformat(params)
167
+ @nb_of_rows = params[:rows]
168
+ @nb_of_cols = params[:cols]
169
+ resize_matrix({ height: height, width: width })
170
+ end
171
+ end
@@ -1,17 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # ping method
3
4
  class Atome
4
- def ping(address, my_proc: false)
5
- # if RUBY_ENGINE.downcase != 'opal'
6
- def up?(host, my_proc)
7
- check = Net::Ping::External.new(host)
8
- if check.ping?
9
- puts "ping respond!! "
10
- end
11
- end
5
+ def up?(host, _my_proc)
6
+ check = Net::Ping::External.new(host)
7
+ return unless check.ping?
8
+
9
+ puts 'ping respond!!'
10
+ end
12
11
 
13
- chost = address
14
- puts up?(chost, my_proc) # prints "true" if ping replies
15
- # end
12
+ def ping(address, my_proc: false)
13
+ puts up(address, my_proc) # prints "true" if ping replies
16
14
  end
17
15
  end
@@ -2,15 +2,18 @@
2
2
 
3
3
  generator = Genesis.generator
4
4
 
5
+ generator.build_atome(:animation)
5
6
  generator.build_atome(:color)
6
7
  generator.build_sanitizer(:color) do |params|
7
8
  parent_found = found_parents_and_renderers[:parent]
8
9
  render_found = found_parents_and_renderers[:renderers]
9
10
  default_params = { renderers: render_found, id: "color_#{Universe.atomes.length}", type: :color,
10
- parents: parent_found,
11
+ attach: parent_found,
11
12
  red: 0, green: 0, blue: 0, alpha: 1 }
12
13
  params = create_color_hash(params) unless params.instance_of? Hash
13
- default_params.merge!(params)
14
+ new_params = default_params.merge!(params)
15
+ atome[:color] = new_params
16
+ new_params
14
17
  end
15
18
 
16
19
  generator.build_sanitizer(:video) do |params|
@@ -21,6 +24,15 @@ generator.build_sanitizer(:video) do |params|
21
24
  default_params.merge!(params)
22
25
  end
23
26
  generator.build_atome(:shadow)
27
+
28
+ generator.build_sanitizer(:shadow) do |params|
29
+ parent_found = found_parents_and_renderers[:parent]
30
+ render_found = found_parents_and_renderers[:renderers]
31
+ default_params = { renderers: render_found, id: "shadow_#{Universe.atomes.length}", type: :shadow,
32
+ attach: parent_found,
33
+ red: 0, green: 0, blue: 0, alpha: 1 , blur: 3, left: 3, top: 3}
34
+ default_params.merge!(params)
35
+ end
24
36
  generator.build_atome(:shape)
25
37
  generator.build_atome(:text)
26
38
  generator.build_atome(:image)
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- generator = Genesis.generator
3
+ # generator = Genesis.generator
@@ -2,7 +2,9 @@
2
2
 
3
3
  generator = Genesis.generator
4
4
 
5
+ # touch
5
6
  generator.build_particle(:touch)
7
+ # video
6
8
  generator.build_particle(:play)
7
9
  generator.build_particle(:time)
8
10
  generator.build_particle(:pause)
@@ -11,11 +13,34 @@ generator.build_particle(:fullscreen)
11
13
  generator.build_particle(:mute)
12
14
  # TODO : add the at event to ny particle : (width, left, ...) maybe use monitor particle
13
15
  generator.build_particle(:at)
16
+ # drag
14
17
  generator.build_particle(:drag)
15
18
  generator.build_sanitizer(:drag) do |params|
16
19
  params = { move: true } if params == true
17
20
  params
18
21
  end
22
+ # sort
19
23
  generator.build_particle(:sort) do |_value, sort_proc|
20
24
  @sort_proc = sort_proc
21
25
  end
26
+
27
+ # animation
28
+ generator.build_particle(:targets)
29
+ generator.build_particle(:start)
30
+ generator.build_option(:pre_render_start) do |_value, user_proc|
31
+ @animation_start_proc = user_proc
32
+ end
33
+ generator.build_particle(:stop)
34
+ generator.build_option(:pre_render_stop) do |_value, user_proc|
35
+ @animation_stop_proc = user_proc
36
+ end
37
+ generator.build_particle(:begin)
38
+ generator.build_particle(:end)
39
+ generator.build_particle(:duration)
40
+ generator.build_particle(:mass)
41
+ generator.build_particle(:damping)
42
+ generator.build_particle(:stiffness)
43
+ generator.build_particle(:velocity)
44
+ generator.build_particle(:repeat)
45
+ generator.build_particle(:ease)
46
+ generator.build_particle(:unbind)
@@ -25,3 +25,31 @@ generator.build_option(:pre_render_parents) do |parents_id_found|
25
25
  parents_found.children << id if parents_found
26
26
  end
27
27
  end
28
+ generator.build_particle(:name)
29
+
30
+ generator.build_particle(:active)
31
+
32
+ generator.build_particle(:attach) do |parents|
33
+ parents.each do |parent|
34
+ grab(parent).atome[:attached] = [atome[:id]]
35
+ end
36
+ end
37
+
38
+ generator.build_particle(:attached) do |targets|
39
+ targets.each do |target|
40
+ grab(target).attach([atome[:id]])
41
+ end
42
+ end
43
+
44
+ generator.build_particle(:clones) do |clones_found|
45
+ clones_found.each_with_index do |clone_found, index|
46
+ clone_id="#{particles[:id]}_clone_#{index}"
47
+ original_id=atome[:id]
48
+ clone_found[:id] = clone_id
49
+ clone_found = particles.merge(clone_found)
50
+ cloned_atome=Atome.new({ shape: clone_found })
51
+ cloned_atome.monitor({ atomes: [original_id], particles: [:width, :attached,:height ]}) do |_atome, particle, value|
52
+ cloned_atome.send(particle,value)
53
+ end
54
+ end
55
+ end
@@ -6,5 +6,26 @@ generator.build_particle(:red)
6
6
  generator.build_particle(:green)
7
7
  generator.build_particle(:blue)
8
8
  generator.build_particle(:alpha)
9
+ generator.build_particle(:diffusion)
9
10
  generator.build_particle(:visual)
10
11
  generator.build_particle(:overflow)
12
+ generator.build_particle(:edit)
13
+ generator.build_particle(:style)
14
+ generator.build_option(:pre_render_style) do |styles_send, _user_proc|
15
+ styles_send.each do |particle_send, value|
16
+ send(particle_send, value)
17
+ end
18
+ end
19
+ generator.build_particle(:hide)
20
+
21
+ generator.build_particle(:remove) do |particle_to_remove|
22
+ case particle_to_remove
23
+ when :color
24
+ send(particle_to_remove, :black)
25
+ when :shadow
26
+ # TODO : code to write
27
+ puts 'code to write'
28
+ else
29
+ send(particle_to_remove, 0)
30
+ end
31
+ end
@@ -11,3 +11,4 @@ generator.build_particle(:top)
11
11
  generator.build_particle(:bottom)
12
12
  generator.build_particle(:rotate)
13
13
  generator.build_particle(:direction)
14
+ generator.build_particle(:center)
@@ -11,8 +11,23 @@ end
11
11
  generator.build_particle(:broadcast)
12
12
  generator.build_particle(:additional)
13
13
  generator.build_particle(:data)
14
- generator.build_particle(:delete) do
15
- Universe.delete(@atome[:id])
14
+ generator.build_particle(:delete) do |params|
15
+ if params == true
16
+ # the machine delete the current atome
17
+ Universe.delete(@atome[:id])
18
+ elsif params[:id]
19
+ # the machine try to an atome by it's ID and delete it
20
+ grab(params[:id]).delete(true)
21
+ elsif instance_of? Hash
22
+ # the machine try to find the sub particle id and remove it eg a.delete(monitor: :my_monitor) remove the monitor
23
+ # with id my_monitor
24
+ params.each do |param, value|
25
+ atome[param][value] = nil
26
+ end
27
+ else
28
+ # the machine try to reset the current particle(params), eg a.delete(:left) => left: 0
29
+ send(params,0)
30
+ end
16
31
  end
17
32
  generator.build_particle(:clear)
18
33
  generator.build_particle(:path)
@@ -29,3 +44,6 @@ generator.build_particle(:read) do |file, proc|
29
44
  send("#{renderer}_reader", file, &proc)
30
45
  end
31
46
  end
47
+
48
+ generator.build_particle(:cursor)
49
+
@@ -28,11 +28,11 @@ class Atome
28
28
 
29
29
  def auto_render_generator(element)
30
30
  Universe.renderer_list.each do |render_engine|
31
- build_render_method("#{render_engine}_#{element}")
31
+ build_render("#{render_engine}_#{element}")
32
32
  end
33
33
  end
34
34
 
35
- def build_render_method(renderer_name, &method_proc)
35
+ def build_render(renderer_name, &method_proc)
36
36
  new_render_engine(renderer_name, &method_proc)
37
37
  end
38
38
 
@@ -37,7 +37,7 @@ Atome.new(
37
37
  Atome.new(
38
38
  { shape: { renderers: default_render, id: :view, type: :shape, parents: [:user_view], children: [],
39
39
  left: 0, right: 0, top: 0, bottom: 0, overflow: :auto,
40
- color: { renderers: default_render, id: :view_color, type: :color, parents: [:view],
40
+ color: { renderers: default_render, id: :view_color, type: :color, attach: [:view],
41
41
  red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } } }
42
42
  )
43
43