atome 0.5.1.9 → 0.5.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +22 -5
  3. data/lib/atome/atome.rb +46 -21
  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 +32 -3
  11. data/lib/atome/genesis/generators/identity.rb +32 -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/time.rb +5 -0
  15. data/lib/atome/genesis/generators/utility.rb +20 -2
  16. data/lib/atome/genesis/genesis.rb +4 -4
  17. data/lib/atome/genesis/sparkle.rb +1 -1
  18. data/lib/atome/helpers/callbacks.rb +36 -29
  19. data/lib/atome/helpers/essentials.rb +5 -2
  20. data/lib/atome/helpers/utilities.rb +59 -10
  21. data/lib/atome/kernel/universe.rb +3 -7
  22. data/lib/atome/presets/atome.rb +11 -7
  23. data/lib/atome/renderers/browser/atome.rb +7 -7
  24. data/lib/atome/renderers/browser/browser.rb +6 -2
  25. data/lib/atome/renderers/browser/effect.rb +2 -2
  26. data/lib/atome/renderers/browser/event.rb +25 -19
  27. data/lib/atome/renderers/browser/geometry.rb +2 -2
  28. data/lib/atome/renderers/browser/helpers/animation_helper.rb +69 -0
  29. data/lib/atome/renderers/browser/helpers/browser_helper.rb +0 -1
  30. data/lib/atome/renderers/browser/helpers/color_helper.rb +0 -2
  31. data/lib/atome/renderers/browser/helpers/drag_helper.rb +6 -6
  32. data/lib/atome/renderers/browser/helpers/effect_helper.rb +1 -0
  33. data/lib/atome/renderers/browser/helpers/event_helper.rb +59 -0
  34. data/lib/atome/renderers/browser/helpers/video_helper.rb +10 -3
  35. data/lib/atome/renderers/browser/identity.rb +10 -3
  36. data/lib/atome/renderers/browser/material.rb +28 -5
  37. data/lib/atome/renderers/browser/spatial.rb +36 -5
  38. data/lib/atome/renderers/browser/time.rb +3 -0
  39. data/lib/atome/renderers/browser/utility.rb +20 -11
  40. data/lib/atome/renderers/headless/utility.rb +2 -2
  41. data/lib/atome/renderers/html/atome.rb +5 -5
  42. data/lib/atome/renderers/html/effect.rb +1 -1
  43. data/lib/atome/renderers/html/event.rb +1 -1
  44. data/lib/atome/renderers/html/geometry.rb +2 -2
  45. data/lib/atome/renderers/html/html.rb +1 -1
  46. data/lib/atome/renderers/html/identity.rb +2 -2
  47. data/lib/atome/renderers/html/spatial.rb +5 -5
  48. data/lib/atome/renderers/html/utility.rb +7 -7
  49. data/lib/atome/renderers/server/utility.rb +2 -2
  50. data/lib/atome/version.rb +1 -1
  51. data/lib/atome.rb +7 -3
  52. data/sig/atome.rbs +6 -0
  53. data/sig/atome_js.rbs +1 -0
  54. data/vendor/assets/build/css/style.css +23 -16
  55. data/vendor/assets/build/index.html +4 -2
  56. data/vendor/assets/build/js/third_parties/wad.min.js +9 -0
  57. data/vendor/assets/build/medias/audios/Binrpilot.mp3 +0 -0
  58. data/vendor/assets/build/medias/rubies/examples/_2_solve.rb +24 -2
  59. data/vendor/assets/build/medias/rubies/examples/_audio.rb +178 -0
  60. data/vendor/assets/build/medias/rubies/examples/_dataset.rb +80 -0
  61. data/vendor/assets/build/medias/rubies/examples/_os.rb +29 -0
  62. data/vendor/assets/build/medias/rubies/examples/_test.rb +1 -0
  63. data/vendor/assets/build/medias/rubies/examples/_vie.rb +211 -0
  64. data/vendor/assets/build/medias/rubies/examples/add.rb +25 -0
  65. data/vendor/assets/build/medias/rubies/examples/animation.rb +81 -0
  66. data/vendor/assets/build/medias/rubies/examples/{atome.new.rb → atome_new.rb} +5 -5
  67. data/vendor/assets/build/medias/rubies/examples/bottom.rb +1 -1
  68. data/vendor/assets/build/medias/rubies/examples/center.rb +21 -0
  69. data/vendor/assets/build/medias/rubies/examples/clone.rb +35 -0
  70. data/vendor/assets/build/medias/rubies/examples/color.rb +20 -15
  71. data/vendor/assets/build/medias/rubies/examples/cursor.rb +7 -0
  72. data/vendor/assets/build/medias/rubies/examples/delete.rb +25 -3
  73. data/vendor/assets/build/medias/rubies/examples/drag.rb +3 -2
  74. data/vendor/assets/build/medias/rubies/examples/edit.rb +12 -0
  75. data/vendor/assets/build/medias/rubies/examples/empty_atome.rb +12 -0
  76. data/vendor/assets/build/medias/rubies/examples/hide.rb +7 -0
  77. data/vendor/assets/build/medias/rubies/examples/markers.rb +48 -0
  78. data/vendor/assets/build/medias/rubies/examples/matrix.rb +58 -0
  79. data/vendor/assets/build/medias/rubies/examples/monitoring.rb +22 -11
  80. data/vendor/assets/build/medias/rubies/examples/play.rb +1 -1
  81. data/vendor/assets/build/medias/rubies/examples/read.rb +7 -4
  82. data/vendor/assets/build/medias/rubies/examples/remove.rb +16 -0
  83. data/vendor/assets/build/medias/rubies/examples/right.rb +1 -1
  84. data/vendor/assets/build/medias/rubies/examples/shadow.rb +8 -1
  85. data/vendor/assets/build/medias/rubies/examples/sort.rb +7 -4
  86. data/vendor/assets/build/medias/rubies/examples/style.rb +4 -0
  87. data/vendor/assets/build/medias/rubies/examples/touch.rb +50 -7
  88. data/vendor/assets/build/medias/texts/lorem.txt +1 -0
  89. metadata +28 -5
  90. data/vendor/assets/build/medias/rubies/examples/_animation.rb +0 -46
  91. data/vendor/assets/build/medias/rubies/examples/at.rb +0 -17
@@ -0,0 +1,80 @@
1
+ # # frozen_string_literal: true
2
+ #
3
+ #
4
+ #
5
+ # generator = Genesis.generator
6
+ # generator.build_atome(:data_set)
7
+ # generator.build_particle(:assign) do |cell_nb,&proc |
8
+ # # current_cell = grab("#{@matrix_id}_#{cell_nb}")
9
+ # if proc
10
+ # # @matrix_dataset[cell_nb] << proc
11
+ # # current_cell.instance_exec(&proc) if proc.is_a? Proc
12
+ # else
13
+ # # @matrix_dataset[cell_nb]
14
+ # end
15
+ # end
16
+ # class Atome
17
+ # def data_set(params = {}, &bloc)
18
+ # atome_type = :data_set
19
+ # generated_render = params[:renderers] || []
20
+ # generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
21
+ # generated_parents = params[:parents] || [id.value]
22
+ # params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
23
+ # Atome.new({ atome_type => params }, &bloc)
24
+ # end
25
+ # end
26
+ #
27
+ #
28
+ # # create_atome(:data_set)
29
+ #
30
+ # a = data_set({})
31
+ # puts a
32
+ #
33
+ # a.assign(2) do
34
+ # curent_cell = self
35
+ # curent_cell.image({ path: "./medias/images/moto.png", width: 33, height: 33})
36
+ # curent_cell.active(:inactive)
37
+ # touch(:long) do
38
+ # if curent_cell.active.value ==:inactive
39
+ # curent_cell.color(:yellow)
40
+ # curent_cell.active(:active)
41
+ # else
42
+ # curent_cell.color(:red)
43
+ # curent_cell.active(:inactive)
44
+ # end
45
+ # end
46
+ # end
47
+ #
48
+ #*
49
+ # a.assign(3) do
50
+ # color({ red: 0.6, green: 0.333, blue: 0.6, alpha: 1 })
51
+ # grab(:vie_playground_3).shadow({ blur: 12 })
52
+ # end
53
+ # puts "assign : #{a.assign}"
54
+ #
55
+ box
56
+ circle
57
+ generator = Genesis.generator
58
+
59
+ generator.build_atome(:template)
60
+
61
+ generator.build_particle(:cells)
62
+ generator.build_particle(:rows)
63
+ generator.build_particle(:columns)
64
+ generator.build_sanitizer(:template) do |params|
65
+ default_params = { renderers: [], id: "template_#{Universe.atomes.length}", type: :template }
66
+ default_params.merge!(params)
67
+ end
68
+
69
+ generator.build_particle(:display) do |params|
70
+ template_needed = params[:template]
71
+ targeted_atomes = params[:list]
72
+ alert template_needed
73
+ alert targeted_atomes
74
+ end
75
+
76
+ template({ id: :child_in_table, code: [], cells: 16, columns: 4, rows: 4 })
77
+ the_view = grab(:view)
78
+ the_view.display(template: :child_in_table, list: [the_view.children.value], left: 33, top: 63, width: 333, height: 333)
79
+
80
+
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ # module OS
4
+ # def OS.windows?
5
+ # (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
6
+ # end
7
+ #
8
+ # def OS.mac?
9
+ # (/darwin/ =~ RUBY_PLATFORM) != nil
10
+ # end
11
+ #
12
+ # def OS.unix?
13
+ # !OS.windows?
14
+ # end
15
+ #
16
+ # def OS.linux?
17
+ # OS.unix? and !OS.mac? and !OS.opal?
18
+ # end
19
+ #
20
+ # def OS.jruby?
21
+ # RUBY_ENGINE == 'jruby'
22
+ # end
23
+ #
24
+ # def OS.opal?
25
+ # RUBY_ENGINE == 'opal'
26
+ # end
27
+ # end
28
+ #
29
+ # # alert OS.linux?
@@ -0,0 +1 @@
1
+ # frozen_string_literal: true
@@ -0,0 +1,211 @@
1
+ # frozen_string_literal: true
2
+ a = {
3
+ "modules": [
4
+ {
5
+ "id": "90be7add-12fd-476e-a267-c4ea65cd0bad",
6
+ "name": "Midi in",
7
+ "type_id": "midi",
8
+ "active": "true",
9
+ "input_slots": [
10
+ {
11
+ "id": "948151e4-93c5-428f-a2e9-01f560592a7d",
12
+ "name": "active",
13
+ "unit": "",
14
+ "value": 1
15
+ }
16
+ ],
17
+ "output_slots": [
18
+ {
19
+ "id": "394119f0-886e-4fae-8ae7-d3b187266760",
20
+ "name": "Midi out",
21
+ "unit": ""
22
+ }
23
+ ],
24
+ "position": {
25
+ "x": 0,
26
+ "y": 0,
27
+ "z": 0
28
+ }
29
+ },
30
+ {
31
+ "id": "82a15e17-c93a-4db1-af8a-d79a32c5b590",
32
+ "name": "Sin",
33
+ "type_id": "oscillator",
34
+ "active": "true",
35
+ "input_slots": [
36
+ {
37
+ "id": "f8ba775f-7a30-4728-99df-a6b6edf2666e",
38
+ "name": "active",
39
+ "unit": "",
40
+ "value": 1
41
+ },
42
+ {
43
+ "id": "002a39c1-e0eb-4ef3-9698-b8bc63faf467",
44
+ "name": "freq",
45
+ "unit": "khz",
46
+ "value": 4.40
47
+ }
48
+ ],
49
+ "output_slots": [
50
+ {
51
+ "id": "3d3dd92b-5a61-43bd-b15b-7356224f0fbc",
52
+ "name": "amplitude",
53
+ "unit": "db"
54
+ }
55
+ ],
56
+ "position": {
57
+ "x": 1,
58
+ "y": 0,
59
+ "z": 0
60
+ }
61
+ },
62
+ {
63
+ "id": "6f214581-52ba-484a-a896-1e137305bdd5",
64
+ "name": "mix",
65
+ "type_id": "mixer",
66
+ "active": "true",
67
+ "input_slots": [
68
+ {
69
+ "id": "fbf3a30a-f2a4-49ef-b56c-2830ad5f8917",
70
+ "name": "active",
71
+ "unit": "",
72
+ "value": 1
73
+ },
74
+ {
75
+ "id": "d1948f42-4260-4614-a3b8-2070b50c1e73",
76
+ "name": "input1",
77
+ "unit": "db",
78
+ "value": []
79
+ },
80
+ {
81
+ "id": "82399578-ec95-48f4-a909-d76e27571048",
82
+ "name": "input2",
83
+ "unit": "db",
84
+ "value": []
85
+ }
86
+ ],
87
+ "output_slots": [
88
+ {
89
+ "id": "a1f1cde0-5432-4465-b2a0-d06f759515b0",
90
+ "name": "mixout",
91
+ "unit": "db"
92
+ }
93
+ ],
94
+ "position": {
95
+ "x": 2,
96
+ "y": 0,
97
+ "z": 0
98
+ }
99
+ },
100
+ {
101
+ "id": "bf35dea9-f94e-4b73-9cdc-4c57c20ad996",
102
+ "name": "speak out",
103
+ "type_id": "output",
104
+ "active": "true",
105
+ "input_slots": [
106
+ {
107
+ "id": "fec34afa-a935-4892-949f-bb4ffc312468",
108
+ "name": "active",
109
+ "unit": "",
110
+ "value": 1
111
+ },
112
+ {
113
+ "id": "4b0fc5c3-fc04-4122-905d-aeebc4e06099",
114
+ "name": "input",
115
+ "unit": "db"
116
+ }
117
+ ],
118
+ "output_slots": [],
119
+ "position": {
120
+ "x": 3,
121
+ "y": 0,
122
+ "z": 0
123
+ }
124
+ }
125
+ ],
126
+ "links": [
127
+ {
128
+ "id": "dbde9cd8-462f-4f4a-80c6-cee0b0b9a5eb",
129
+ "sourceComponentId": "90be7add-12fd-476e-a267-c4ea65cd0bad",
130
+ "sourceOutputSlotId": "394119f0-886e-4fae-8ae7-d3b187266760",
131
+ "targetComponentId": "82a15e17-c93a-4db1-af8a-d79a32c5b590",
132
+ "targetInputSlotId": "002a39c1-e0eb-4ef3-9698-b8bc63faf467",
133
+ "active": "true"
134
+ },
135
+ {
136
+ "id": "0bf66202-50fe-4c82-81bd-7c828d1b4edb",
137
+ "sourceComponentId": "82a15e17-c93a-4db1-af8a-d79a32c5b590",
138
+ "sourceOutputSlotId": "3d3dd92b-5a61-43bd-b15b-7356224f0fbc",
139
+ "targetComponentId": "6f214581-52ba-484a-a896-1e137305bdd5",
140
+ "targetInputSlotId": "d1948f42-4260-4614-a3b8-2070b50c1e73",
141
+ "active": "true"
142
+ },
143
+ {
144
+ "id": "929faf01-6320-4273-8557-819f414c9d3a",
145
+ "sourceComponentId": "6f214581-52ba-484a-a896-1e137305bdd5",
146
+ "sourceOutputSlotId": "a1f1cde0-5432-4465-b2a0-d06f759515b0",
147
+ "targetComponentId": "bf35dea9-f94e-4b73-9cdc-4c57c20ad996",
148
+ "targetInputSlotId": "4b0fc5c3-fc04-4122-905d-aeebc4e06099",
149
+ "active": "true"
150
+ }
151
+ ]
152
+ }
153
+
154
+ Atome.new({ color: { renderers: [:browser], id: :orange_col, type: :color, parents: [], children: [],
155
+ left: 33, top: 66, red: 0, green: 0.15, blue: 0.7, alpha: 0.6 } })
156
+
157
+ def get_vie_module(list)
158
+ # puts list[:modules][0].keys
159
+ # puts "---------"
160
+ # module_id = list[:modules][0][:id]
161
+ # module_name = list[:modules][0][:name]
162
+ # module_id = list[:modules][0][:type_id]
163
+ # module_active = list[:modules][0][:active]
164
+ # module_position = list[:modules][0][:position]
165
+ # module_input_slots = list[:modules][0][:input_slots]
166
+ # module_output_slots = list[:modules][0][:output_slots]
167
+
168
+ list[:modules].each do |properties, value|
169
+ module_id = properties[:id]
170
+ module_name = properties[:name]
171
+ module_id = properties[:type_id]
172
+ module_active = properties[:active]
173
+ module_position = properties[:position]
174
+ module_input_slots = properties[:input_slots]
175
+ module_output_slots = properties[:output_slots]
176
+ left_pos = 120 + ((module_position[:x].to_i) * (66 + 33+120))
177
+ top_pos=120 + ((module_position[:y].to_i) * (66 + 33))
178
+ a=Atome.new(
179
+ shape: { type: :shape, renderers: [:browser], id: module_id, parents: [:view],children: [], color: :orange,
180
+ left: left_pos, top: top_pos,
181
+ width: 120, height: 120
182
+
183
+ }
184
+ )
185
+ a.text({ data: module_id, visual: {size: 12 }, color: :black, center: :horizontal, width: 120, height: 120})
186
+ a.touch(true) do
187
+ puts a
188
+ end
189
+
190
+ slider=a.circle({width: 20, height: 20, top: 15, left: 15})
191
+ slider.drag( { move: true, inertia: true, lock: :x, constraint: :parent } ) do |pos|
192
+ "module_id : #{module_id}, #{(pos[:left]-left_pos)/100}"
193
+ msg_value=(pos[:left]-left_pos)/100
194
+ `
195
+ function send_to_controller(module,value){
196
+ console.log(module,value)
197
+ }
198
+ send_to_controller(#{module_id},#{msg_value});
199
+ `
200
+ end
201
+ end
202
+
203
+ list[:links]
204
+
205
+ end
206
+
207
+ hash_test = a.to_json
208
+
209
+ json_test = JSON.parse(hash_test)
210
+
211
+ get_vie_module(json_test)
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ my_video = Atome.new(
4
+ video: { renderers: [:browser], id: :video1, type: :video, parents: [:view], clones: [],
5
+ path: './medias/videos/avengers.mp4', left: 333, top: 33, width: 777
6
+ }
7
+ )
8
+
9
+ my_video.touch(true) do
10
+ my_video.play(3)
11
+ puts "play : #{my_video.play}, pause : #{my_video.pause}"
12
+ end
13
+
14
+ stoper = lambda do
15
+ my_video.pause(true)
16
+ end
17
+
18
+ jumper=lambda do
19
+ my_video.play(12)
20
+ my_video.play(12)
21
+ end
22
+
23
+ my_video.markers({ markers: { begin: 6, code: jumper } })
24
+
25
+ my_video.add({ markers: { my_stop: { begin: 16, code: stoper } } })
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ bb = box({ id: :the_ref, width: 369 })
4
+ bb.color(:red)
5
+ box({ id: :my_box, drag: true })
6
+ c = circle({ id: :the_circle, left: 222, drag: { move: true, inertia: true, lock: :start } })
7
+ c.shadow({ renderers: [:browser], id: :shadow2, type: :shadow,
8
+ parents: [:the_circle], children: [],
9
+ left: 3, top: 9, blur: 19,
10
+ red: 0, green: 0, blue: 0, alpha: 1
11
+ })
12
+
13
+ Atome.new(animation: { renderers: [:browser], id: :the_animation1, type: :animation, children: [] })
14
+ aa = animation({
15
+ targets: %i[my_box the_circle],
16
+ begin: {
17
+ left_add: 0,
18
+ top: :self,
19
+ smooth: 0,
20
+ width: 3
21
+ },
22
+ end: {
23
+ left_add: 333,
24
+ top: 299,
25
+ smooth: 33,
26
+ width: :the_ref
27
+ },
28
+ duration: 800,
29
+ mass: 1,
30
+ damping: 1,
31
+ stiffness: 1000,
32
+ velocity: 1,
33
+ repeat: 1,
34
+ ease: 'spring'
35
+ }) do |pa|
36
+ puts "animation say#{pa}"
37
+ end
38
+ aa.stop(true) do |val|
39
+ puts " stop : #{val}"
40
+ end
41
+
42
+ aa.start(true) do |val|
43
+ puts " start : #{val}"
44
+ end
45
+
46
+ bb.touch(true) do
47
+ aa.play(true) do |po|
48
+ puts "play say #{po}"
49
+ end
50
+ end
51
+
52
+ aaa = animation({
53
+ # no target for advanced animations control on callback
54
+ begin: {
55
+ left_add: 0,
56
+ top: :self,
57
+ smooth: 0,
58
+ width: 3
59
+ },
60
+ end: {
61
+ left_add: 333,
62
+ top: :self,
63
+ smooth: 33,
64
+ width: :the_ref
65
+ },
66
+ duration: 1800,
67
+ mass: 1,
68
+ damping: 1,
69
+ stiffness: 1000,
70
+ velocity: 1,
71
+ repeat: 1,
72
+ ease: 'spring'
73
+ }) do |pa|
74
+ puts "get params to do anything say#{pa}"
75
+ end
76
+ wait 7 do
77
+ aaa.play(true) do |po|
78
+ puts "play aaa say #{po}"
79
+ end
80
+ end
81
+
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Atome.new(
4
- shape: { type: :shape, renderers: [:browser], id: :the_shape, parents: [:view], children: [],
4
+ shape: { type: :shape, renderers: [:browser], id: :the_shape, parents: [:view], children: [], clones: [],
5
5
  left: 99, right: 99, width: 399, height: 99,
6
- color: { renderers: [:browser], id: :c315, type: :color, parents: [:the_shape],children: [],
6
+ color: { renderers: [:browser], id: :c315, type: :color, parents: [:the_shape], children: [],
7
7
  red: 0.3, green: 1, blue: 0.6, alpha: 1 } }
8
8
  )
9
9
 
10
10
  Atome.new(
11
- shape: { renderers: [:browser], id: :the_shape2, type: :shape, parents: [:view],children: [],
11
+ shape: { renderers: [:browser], id: :the_shape2, type: :shape, parents: [:view], children: [], clones: [],
12
12
  left: 99, right: 99, width: 99, height: 99,
13
- color: { renderers: [:browser], id: :c31, type: :color, parents: [:the_shape2],children: [],
13
+ color: { renderers: [:browser], id: :c31, type: :color, parents: [:the_shape2], children: [],
14
14
  red: 1, green: 0.15, blue: 0.15, alpha: 0.6 } }
15
- )
15
+ )
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- box({bottom: 12 })
3
+ box({bottom: 12,top: :auto })
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ b = box({ id: :mybox, width: 666, height: 555, top: 0, left: 0 })
4
+
5
+ c = b.circle()
6
+ t = c.text({ data: :hello, visual: { size: 9 } })
7
+ c.color(:red)
8
+ wait 2 do
9
+ c.center(true)
10
+ t.center(true)
11
+ end
12
+
13
+ wait 4 do
14
+ c.center(:horizontal)
15
+ t.center(:horizontal)
16
+ end
17
+
18
+ wait 6 do
19
+ c.center(:vertical)
20
+ t.center(:vertical)
21
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # TODO : clones alteration must be bidirectional, to do so :
4
+ # 1 - we may create an atome type 'clone' then add a ' pre_render_clones option' when rendering clones property
5
+ # 2 - this pre_render_clones option, will catch alterations and throw it the the original atome
6
+ # 3 - we also add a new particle call mirror that holds the particle's list that will reverse intrication
7
+
8
+ b = box({ color: :red, smooth: 6 })
9
+
10
+ b.clones([{ left: 300, top: 300, color: :blue, intricate: [:width, :attached,:height ] },
11
+ {left: 600, top: 366, color: :green , intricate: [:left, :height ]}])
12
+
13
+ wait 1 do
14
+ b.width(190)
15
+ end
16
+
17
+ wait 2 do
18
+ b.height(180)
19
+ end
20
+
21
+ wait 3 do
22
+ b.left(180)
23
+ end
24
+
25
+ grab(:box_4_clone_1).smooth(33)
26
+
27
+ grab(:box_4_clone_1).rotate(33)
28
+
29
+
30
+ wait 5 do
31
+ b.clones.value.each do |clone_found|
32
+ grab(clone_found[:id]).delete(true)
33
+ end
34
+ end
35
+
@@ -1,19 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- c = circle
4
- # FIXME: bug we creating an object like this c = circle({ red: 1 })
5
3
  # FIXME: bug we using a color twice or more only the first is colored: c = { red: 1 }; a.color(c),b.color(c)
6
- # Example:
7
- # c={ red: 1 }
8
- # a=circle
9
- # b=box({ left: 300 })
10
- # a.color(c)
11
- # b.color(c)
4
+
5
+ c = circle
6
+
12
7
  wait 1 do
13
8
  # the most performant way :
14
9
  # please note that in this case: render , id and type params must place in order
15
10
  c.color(
16
- { render: [:html], id: :c319, type: :color,
11
+ { renderers: [:browser], id: :c319, type: :color,
17
12
  red: 1, green: 1, blue: 0.15, alpha: 0.6 }
18
13
  )
19
14
  end
@@ -42,11 +37,21 @@ wait 5 do
42
37
  end
43
38
  end
44
39
 
45
- circle({id: :the_circle})
46
40
 
41
+ wait 10 do
42
+ Atome.new({ color: { renderers: [:browser], id: :col1, type: :color, parents: [], children: [],
43
+ left: 33, top: 66, red: 1, green: 0.15, blue: 0.7, alpha: 1 } })
47
44
 
48
- wait 2 do
49
- the_col=Atome.new({ color: { renderers: [:browser], id: :c31, type: :color, parents: [], children: [],
50
- left: 33, top: 66, red: 0, green: 0.15, blue: 0.7, alpha: 0.6 } })
51
- the_col.parents([:the_circle])
52
- end
45
+ col_2 = Atome.new({ color: { renderers: [:browser], id: :col2, type: :color, parents: [], children: [],
46
+ left: 33, top: 66, red: 0, green: 0.15, blue: 0.7, alpha: 1 } })
47
+
48
+ Atome.new(
49
+ shape: { type: :shape, renderers: [:browser], id: :shaped, parents: [:view], children: [], attached: [:col1],
50
+ left: 199, top: 99,
51
+ width: 66, height: 66
52
+ }
53
+ )
54
+ wait 2 do
55
+ col_2.attach([:shaped])
56
+ end
57
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ :crosshair
4
+ :pointer
5
+ b=box
6
+
7
+ b.cursor(:crosshair)
@@ -1,7 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- b = box
3
+ b = box({left: 333})
4
4
 
5
- wait 1 do
5
+ b.circle({top: 66, id: :the_circle})
6
+
7
+ wait 4 do
6
8
  b.delete(true)
7
- end
9
+ end
10
+
11
+ wait 3 do
12
+ b.attached.value.each do |attached_atome_id|
13
+ b.delete({id: attached_atome_id})
14
+ b.shadow({ renderers: [:browser], id: :shadow2, type: :shadow, parents: [], children: [],
15
+ left: 3, top: 9, blur: 3, direction: '',
16
+ red: 0, green: 0, blue: 0, alpha: 1
17
+ })
18
+ end
19
+
20
+ end
21
+
22
+ wait 2 do
23
+ b.delete(:left)
24
+ end
25
+
26
+
27
+ wait 1 do
28
+ b.delete({id: :the_circle})
29
+ end
@@ -3,6 +3,7 @@
3
3
  a = box({ width: 333, height: 333, id: :the_boxy })
4
4
  a.color(:red)
5
5
  b = box({ width: 33, height: 33, id: :the_box, drag: true })
6
+ b.parents([a.id.value])
6
7
  b.color(:black)
7
8
  # b.parents([:the_boxy ])
8
9
  b.drag({ move: true }) do |e|
@@ -26,7 +27,7 @@ end
26
27
 
27
28
  # b.drag({ lock: :start })
28
29
 
29
- # b.drag({ lock: :x })
30
+ b.drag({ lock: :x })
30
31
 
31
32
  # b.drag({ remove: true })
32
33
  # b.drag({ remove: false })
@@ -34,5 +35,5 @@ end
34
35
  # b.drag({ snap: { x: 100, y: 190 } })
35
36
 
36
37
  # b.drag({ constraint: { top: 330, left: 30, bottom: 30, right: 1 } })
37
- # b.drag({ constraint: :parent })
38
+ b.drag({ constraint: :parent })
38
39
  # b.drag({ constraint: :the_boxy })
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ t = text({ data: "hit the box to make me editable" })
4
+
5
+ b = box({ left: 333 })
6
+ b.touch(true) do
7
+ if t.edit.value == true
8
+ t.edit(false)
9
+ else
10
+ t.edit(true)
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ a= Atome.new()
4
+ t=template()
5
+ t2=template({})
6
+
7
+
8
+ puts "a : #{a}"
9
+
10
+ puts "t : #{t}"
11
+
12
+ puts "t2 : #{t2}"
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ bbb=box
4
+
5
+ wait 2 do
6
+ bbb.hide(true)
7
+ end