atome 0.5.7.0.3 → 0.5.7.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee4cbfd38de06ba3640f664d4de45324115580ecd7b9dd03d174cd9b008418ec
4
- data.tar.gz: 0bc8aef35a336616ddfb183608fc364d363abd03cc211eeb1127a0343b1cc1db
3
+ metadata.gz: 23166944704e42b25801cc052708c19f265c1f8247dd3ff9b099944ecb415401
4
+ data.tar.gz: 38a31b2cdcc6ceeef5453b926ee4d7eaf704e48c58039830126a94b5a430c188
5
5
  SHA512:
6
- metadata.gz: 1340cb70b0212e385a616828f68c9e1684581874ef18c603f04dd40a800499352e603d404c6e91958f5b6a5933ba0583919ba2bde21d83b7bad68c1110c74a9e
7
- data.tar.gz: 210a6c03ce4d95f613e2d5af338b71dee8037cb6525b483afb2fc9b6080cf76f994dfa6ac6f8ce82ea20bdacbad982e994ea6c6a6a05707fdd22270947b19ce7
6
+ metadata.gz: 86db3598d96617483482c8e97006bf3fe2e981be529cd871e75b7370b55838002914192c64dcb4b46cf72313f470a91a9ff3f2408fa5914439b84126c924cd44
7
+ data.tar.gz: 655b083c5529f5ed4c642ee5c7457d2940062914433e072a582964ae1e7a4932423731b3a353d0f927d1d6db5b5d56386907d91d7011dfca53979b4e3c532608
data/lib/atome/atome.rb CHANGED
@@ -51,14 +51,14 @@ class Atome
51
51
  @aid= new_atome[:aid] || identity_generator
52
52
  @controller_proc=[]
53
53
  @id = new_atome[:id] || @aid
54
- Universe.atomes.each do |_aid,atome_f|
54
+ Universe.atomes.each_value do |atome_f|
55
55
  # we affect the already existing atome to target
56
- if atome_f.id == @id
57
- new_atome[:affect].each do |affected|
58
- grab(affected).apply(@id)
59
- end
60
- return false
61
- end
56
+ next unless atome_f.id == @id
57
+
58
+ new_atome[:affect].each do |affected|
59
+ grab(affected).apply(@id)
60
+ end
61
+ return false
62
62
  end
63
63
  Universe.add_to_atomes(@aid, self)
64
64
  Universe.id_to_aid(@id, @aid)
@@ -160,9 +160,6 @@ class Object
160
160
  end
161
161
 
162
162
  def grab(id_to_get)
163
- if id_to_get.instance_of? Atome
164
- alert id_to_get.id
165
- end
166
163
  id_to_get=id_to_get.to_sym
167
164
  return if id_to_get == false
168
165
  aid_to_get= Universe.atomes_ids[id_to_get]
@@ -152,9 +152,7 @@ class Genesis
152
152
  # attached.each do |attached_atome|
153
153
  # collected_atomes << attached_atome if grab(attached_atome).type.to_sym == element.to_sym
154
154
  # end
155
- # TODO : add category for atome( material/physical vs modifier : color, shadow, .. vs shape, image ..)
156
- # then add condition same things fo code in presets/atome atome_common
157
- if %i[color shadow paint border].include?(element)
155
+ if Universe.applicable_atomes.include?(element)
158
156
  # we do the same for apply to be able to retrieve 'color' and other atome that apply instead of being attached
159
157
  @apply.each do |attached_atome|
160
158
  collected_atomes << attached_atome if grab(attached_atome).type.to_sym == element.to_sym
@@ -3,12 +3,12 @@
3
3
  new({ particle: :smooth, category: :effect, type: :int })
4
4
 
5
5
  new({ particle: :blur, category: :effect, type: :int }) do |params|
6
- if affect.nil?
7
- affect_to = affect
8
- else
9
- affect_to = [:self]
10
- end
11
- val= { value: params, affect: affect_to } unless params.instance_of?(Hash)
6
+ affect_to = if affect.nil?
7
+ affect
8
+ else
9
+ [:self]
10
+ end
11
+ val = { value: params, affect: affect_to } unless params.instance_of?(Hash)
12
12
  val
13
13
  end
14
14
 
@@ -15,7 +15,6 @@ new({ sanitizer: :id }) do |params|
15
15
  # Universe.add_to_atomes(params, self)
16
16
  # end
17
17
 
18
-
19
18
  # Universe.atomes.each do |_aid,atome_f|
20
19
  #
21
20
  # if atome_f.id == params
@@ -64,14 +63,28 @@ end
64
63
 
65
64
  new(particle: :selected, category: :identity, type: :boolean) do |params|
66
65
  if params == true
67
- border({ thickness: 3, red: 1, green: 1, blue: 1, alpha: 1, pattern: :dotted })
68
- border({ thickness: 10, pattern: :solid, color: :red})
66
+ @selection_style = []
67
+ # select_style= border({ thickness: 3, red: 1, green: 1, blue: 1, alpha: 1, pattern: :dotted })
68
+ default_style = Universe.default_selection_style
69
+ select_style = ''
70
+ default_style.each do |atome_f, part_f|
71
+ select_style = send(atome_f, part_f)
72
+ end
73
+ @selection_style << select_style.id
69
74
  grab(Universe.current_user).selection << @id
70
75
  elsif params == false
71
- border({alpha: 0, thickness: 0})
76
+ @selection_style&.each do |style_f|
77
+ remove(style_f)
78
+ end
79
+ @selection_style = nil
72
80
  grab(Universe.current_user).selection.collect.delete(@id)
73
81
  else
74
- # TODO: for future use
82
+ @selection_style = []
83
+ params.each do |part_f, val_f|
84
+ select_style = send(part_f, val_f)
85
+ @selection_style << select_style.id
86
+ end
87
+ grab(Universe.current_user).selection << @id
75
88
  end
76
89
  params
77
90
  end
@@ -12,36 +12,34 @@ end
12
12
  new({ particle: :hide, category: :material, type: :boolean })
13
13
 
14
14
  new({ particle: :remove, category: :property, type: :hash }) do |params|
15
- if params.instance_of? Hash
15
+
16
+ if params.instance_of? Hash
16
17
  if params[:row]
17
18
  data.delete_at(params[:row])
18
-
19
19
  elsif params[:column]
20
20
  column = params[:column]
21
21
  data.map do |hash|
22
22
  hash.delete(hash.keys[column]) if hash.keys[column]
23
- hash
24
23
  end
25
- # elsif params[:all]
26
- # apply.each do |applied_atome|
27
- # if grab(applied_atome).type.to_sym == params[:all].to_sym
28
- # puts "!go"
29
- # end
30
- # end
24
+ # elsif params[:all]
25
+ # apply.each do |applied_atome|
26
+ # if grab(applied_atome).type.to_sym == params[:all].to_sym
27
+ # puts "!go"
28
+ # end
29
+ # end
31
30
  # puts "so_good #{params}"
32
31
  # puts "***> #{apply}"
33
32
  end
33
+
34
34
  params
35
35
  else
36
36
 
37
37
  params
38
38
  end
39
39
 
40
-
41
40
  end
42
41
  # new({ particle: :remove, category: :property, type: :hash })
43
42
 
44
-
45
43
  new({ post: :remove }) do |params|
46
44
  # TODO : we have to rethink the removal of atome and particles (with exception like category) and maybe 'use particle type' to handle removal
47
45
  if params.instance_of?(Hash)
@@ -98,22 +96,22 @@ end
98
96
  new({ particle: :gradient, category: :material, type: :int })
99
97
 
100
98
  new({ particle: :thickness, category: :material, type: :int })
101
- new({ after: :thickness}) do |params|
102
- a=affect.dup # FIXME we have to dup else some items in the array array other duplicated
99
+ new({ after: :thickness }) do |params|
100
+ a = affect.dup # FIXME we have to dup else some items in the array array other duplicated
103
101
  a.each do |atome_to_refresh|
104
102
  grab(atome_to_refresh).apply(id)
105
103
  end
106
104
  params
107
105
  end
108
106
  new({ particle: :pattern, category: :material, type: :string })
109
- new({ after: :pattern })do |params|
110
- a=affect.dup # FIXME we have to dup else some items in the array array other duplicated
107
+ new({ after: :pattern }) do |params|
108
+ a = affect.dup # FIXME we have to dup else some items in the array array other duplicated
111
109
  a.each do |atome_to_refresh|
112
110
  grab(atome_to_refresh).apply(id)
113
111
  end
114
112
  params
115
113
  end
116
114
  # new({ particle: :border, category: :material, type: :int })
117
- new({particle: :fill, category: :material, type: :array })
115
+ new({ particle: :fill, category: :material, type: :array })
118
116
 
119
- new({particle: :opacity, category: :material, type: :int })
117
+ new({ particle: :opacity, category: :material, type: :int })
@@ -33,9 +33,17 @@ new({ particle: :delete, category: :utility, type: :boolean, render: false }) do
33
33
  render(:delete, params)
34
34
  # the machine delete the current atome from the universe
35
35
  id_found = @id.to_sym
36
- parent_found = grab(@attach)
37
- parent_found.attached.delete(id_found)
38
- Universe.delete(@aid)
36
+ if @attach
37
+ parent_found = grab(@attach)
38
+ parent_found.attached.delete(id_found)
39
+ end
40
+ @affect&.each do |affected_atome|
41
+ affected_found = grab(affected_atome)
42
+ affected_found.apply.delete(id_found)
43
+ affected_found.refresh
44
+ end
45
+
46
+ # Universe.delete(@aid)
39
47
  end
40
48
  elsif params.instance_of? Hash
41
49
 
@@ -64,6 +72,7 @@ new({ particle: :delete, category: :utility, type: :boolean, render: false }) do
64
72
  send(params, 0) unless params == :id
65
73
  end
66
74
  end
75
+
67
76
  new({ particle: :clear, category: :utility, type: :boolean })
68
77
 
69
78
  new({ post: :clear }) do
@@ -255,7 +264,6 @@ end
255
264
  new({ particle: :storage, category: :utility, type: :hash })
256
265
  new({ particle: :state, category: :utility, type: :symbol })
257
266
 
258
-
259
267
  new({ particle: :record, category: :utility, type: :hash })
260
268
  new({ particle: :preview, category: :utility, type: :hash })
261
269
 
@@ -27,12 +27,14 @@ class Universe
27
27
  @allow_tool_operations = false
28
28
  @active_tools = []
29
29
  @atome_preset = []
30
+ @default_selection_style={border: { thickness: 3, red: 1, green: 1, blue: 1, alpha: 1, pattern: :dotted }}
31
+ @applicable_atomes= %i[color shadow border paint animation]
30
32
  # @historicize=false
31
33
  class << self
32
34
  attr_reader :atomes, :atomes_ids, :renderer_list, :molecule_list, :atome_list, :particle_list, :classes, :counter,
33
35
  :atomes_specificities
34
36
  attr_accessor :connected, :allow_sync, :allow_localstorage, :database_ready, :edit_mode, :tools,
35
- :allow_tool_operations, :active_tools, :atome_preset
37
+ :allow_tool_operations, :active_tools, :atome_preset, :applicable_atomes, :default_selection_style
36
38
 
37
39
  def messages
38
40
  @messages
@@ -24,9 +24,7 @@ class Atome
24
24
  params = reordered_params.merge(params)
25
25
  params[:id]=params[:id].to_sym
26
26
  # condition to handle color/shadow/paint atomes that shouldn't be attach to view
27
- # TODO : add category for atome( material/physical vs modifier : color, shadow, .. vs shape, image ..)
28
- # then add condition same things fo code in genesis new_atome
29
- if %i[color shadow paint border].include?(atome_preset)
27
+ if Universe.applicable_atomes.include?(atome_preset)
30
28
  unless params[:affect]
31
29
  params[:affect] = if @id == :view
32
30
  [:black_matter]
@@ -113,8 +113,6 @@ class Atome
113
113
  target_vector.data(atome_content)
114
114
  end
115
115
 
116
-
117
-
118
116
  end
119
117
 
120
118
  @initialized = {}
@@ -165,9 +163,11 @@ class Atome
165
163
  end
166
164
 
167
165
  end
166
+
168
167
  def add_text_visual(params)
169
168
  html.add_font_to_css(params)
170
169
  end
170
+
171
171
  def particle_main(element, params, &user_proc)
172
172
  # TODO : optimise below removing all conditions if possible
173
173
  if Atome.instance_variable_get("@main_#{element}").is_a?(Proc) # post is before rendering and broadcasting
@@ -348,23 +348,22 @@ class Atome
348
348
  send("#{element}_callback", return_params)
349
349
  end
350
350
 
351
- def js_callback(id, particle, value,sub=nil )
352
- current_atome= grab(id)
353
- # # alert current_atome.instance_variable_get('@record_code')
354
- proc_found= current_atome.instance_variable_get("@#{particle}_code")[particle.to_sym]
351
+ def js_callback(id, particle, value, sub = nil)
352
+ current_atome = grab(id)
353
+ # # alert current_atome.instance_variable_get('@record_code')
354
+ proc_found = current_atome.instance_variable_get("@#{particle}_code")[particle.to_sym]
355
355
  # proc_found= current_atome.instance_variable_get("@record_code")[:record]
356
- # # alert particle.class
357
- # # alert proc_found.class
356
+ # # alert particle.class
357
+ # # alert proc_found.class
358
358
  # proc_found.call
359
- instance_exec(value, &proc_found) if proc_found.is_a?(Proc)
360
- # # # puts "params to be exec #{id}, #{particle}, #{value}, #{sub}"
361
- # alpha= grab(:the_big_box)
362
- # proc_found= alpha.instance_variable_get("@record_code")[:record]
359
+ instance_exec(value, &proc_found) if proc_found.is_a?(Proc)
360
+ # # # puts "params to be exec #{id}, #{particle}, #{value}, #{sub}"
361
+ # alpha= grab(:the_big_box)
362
+ # proc_found= alpha.instance_variable_get("@record_code")[:record]
363
363
  # proc_found.call
364
364
 
365
365
  end
366
366
 
367
-
368
367
  # def callback(data)
369
368
  # @callback[data.keys[0]] = data[data.keys[0]]
370
369
  # end
@@ -389,8 +388,7 @@ class Atome
389
388
  def particles_to_hash
390
389
  hash = {}
391
390
  instance_variables.each do |var|
392
- next if %i[@html_object @history, @initialized].include?(var)
393
-
391
+ next if %i[@selection_style @html_object @history @initialized @tick @controller_proc].include?(var)
394
392
  hash[var.to_s.delete('@').to_sym] = instance_variable_get(var)
395
393
  end
396
394
  hash
@@ -400,10 +398,13 @@ class Atome
400
398
  # we get the current color because they will be removed
401
399
  particles_found = particles_to_hash
402
400
  particles_found.each do |particle_found, value_found|
401
+ puts "refresh : #{particle_found}, #{value_found}"
403
402
  send(particle_found, value_found)
404
403
  end
405
- color.each do |col|
406
- apply(col)
404
+ Universe.applicable_atomes.each do |atome_type|
405
+ send(atome_type).each do |col|
406
+ apply(col)
407
+ end
407
408
  end
408
409
  end
409
410
 
data/lib/atome/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  # return atome version
4
4
  class Atome
5
- VERSION = '0.5.7.0.3'
5
+ VERSION = '0.5.7.0.5'
6
6
  end
@@ -6,6 +6,12 @@ end
6
6
 
7
7
  new({ method: :gradient, renderer: :html, type: :hash })
8
8
 
9
+ # new({ method: :remove, renderer: :html, type: :hash }) do |params|
10
+ # # alert "===> #{params}"
11
+ # # html.table_remove(params)
12
+ # html.remove(params)
13
+ # end
14
+
9
15
  new({ method: :remove, renderer: :html, type: :string }) do |object_id_to_remove, bloc|
10
16
 
11
17
  if object_id_to_remove.instance_of? Hash
@@ -38,7 +44,13 @@ new({ method: :remove, renderer: :html, type: :string }) do |object_id_to_remove
38
44
  html.style("boxShadow", 'none')
39
45
  html.style("filter", 'none')
40
46
  @apply.delete(object_id_to_remove)
41
- apply(@apply)
47
+ # apply(@apply)
48
+ when :border
49
+ # alert :poipoipoipoipo
50
+ html.style("border", 'none')
51
+ html.style("filter", 'none')
52
+ @apply.delete(object_id_to_remove)
53
+ # apply(@apply)
42
54
  when :paint
43
55
  atome_to_remove = grab(object_id_to_remove)
44
56
  atome_to_remove.gradient.each do |color_id|
@@ -31,11 +31,7 @@ new({ method: :insert, renderer: :html, type: :hash }) do |params|
31
31
  html.table_insert(params)
32
32
  end
33
33
 
34
- new({ method: :remove, renderer: :html, type: :hash }) do |params|
35
- # alert "===> #{params}"
36
- # html.table_remove(params)
37
- html.remove(params)
38
- end
34
+
39
35
 
40
36
  new({ method: :sort, renderer: :html, type: :hash }) do |params|
41
37
  html.refresh_table(params)
@@ -3,12 +3,18 @@
3
3
 
4
4
 
5
5
 
6
-
7
-
8
-
9
6
  b=box({id: :my_b_box, left: 150, top: 150})
10
- b.border({ thickness: 15, red: 1, green: 1, blue: 0, alpha: 1, pattern: :solid ,id: :jjjj, inside: true})
11
-
7
+ b.shadow({
8
+ id: :s1,
9
+ # affect: [:the_circle],
10
+ left: 9, top: 3, blur: 9,
11
+ invert: false,
12
+ red: 0, green: 0, blue: 0, alpha: 1
13
+ })
14
+ border1= b.border({ thickness: 15, red: 1, green: 1, blue: 0, alpha: 1, pattern: :solid ,id: :border_1, inside: true})
15
+ wait 2 do
16
+ b.remove(:border_1)
17
+ end
12
18
  wait 1.5 do
13
19
  border({ thickness: 30, red: 1, green: 1, blue: 0, alpha: 1, pattern: :solid ,id: :poil, inside: true})
14
20
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # add new font face
4
- A.add_text_visual({ path: 'Roboto', name: 'Roboto-Thin' })
4
+ A.add_text_visual({ path: 'Roboto', name: 'Roboto-Black' })
5
5
  A.add_text_visual({ path: 'Roboto', name: 'Roboto-Thin' })
6
6
  A.add_text_visual({ path: 'Roboto', name: 'Roboto-LightItalic' })
7
7
 
@@ -23,13 +23,13 @@ wait 1 do
23
23
  end
24
24
  end
25
25
  end
26
- # i=image(:green_planet)
26
+ i=image(:green_planet)
27
27
  # alert i.path
28
- # i.instance_variable_set("@path", './medias/images/red_planet.png')
29
- # wait 2 do
30
- # i.refresh
31
- # # i.path'./medias/images/red_planet.png'
32
- # end
28
+ i.instance_variable_set("@path", './medias/images/red_planet.png')
29
+ wait 2 do
30
+ i.refresh
31
+ # i.path'./medias/images/red_planet.png'
32
+ end
33
33
 
34
34
 
35
35
  #
@@ -2,7 +2,27 @@
2
2
 
3
3
  t = text({ data: 'touch me to select all', id: :the_text })
4
4
  b = box({ left: 12, id: :the_box })
5
- circle({ left: 230, id: :the_circle })
5
+ c = circle({ left: 230, id: :the_circle, color: { blue: 1, id: :c1 } })
6
+ c.color({ green: 1, id: :c2 })
7
+ # to change default selection style
8
+ Universe.default_selection_style = { border: { thickness: 3, red: 1, green: 0, blue: 1, alpha: 1, pattern: :dotted } }
9
+
10
+ c.touch(true) do
11
+ if c.selected
12
+ c.selected(false)
13
+ else
14
+ # c.selected(true)
15
+ # example of custom selection style
16
+ c.selected({ shadow: { id: :titi,
17
+ left: 9, top: 3, blur: 9,
18
+ invert: false,
19
+ red: 0, green: 0, blue: 0, alpha: 1
20
+ }, border: { id: :toto, thickness: 5, red: 1, green: 1, blue: 1, alpha: 1,
21
+ pattern: :dotted, inside: true }
22
+ })
23
+ end
24
+ end
25
+
6
26
  image({ path: 'medias/images/red_planet.png', id: :the__red_planet, top: 233 })
7
27
 
8
28
  t.touch(true) do
@@ -16,9 +36,9 @@ t.touch(true) do
16
36
  selected_items = grab(Universe.current_user).selection # we create a group
17
37
 
18
38
  selected_items.each do |atome_id_selected|
19
- atome_selected=grab(atome_id_selected)
20
- atome_selected.width=rand(333)
21
- atome_selected.height=rand(333)
39
+ atome_selected = grab(atome_id_selected)
40
+ atome_selected.width = rand(333)
41
+ atome_selected.height = rand(333)
22
42
 
23
43
  end
24
44
  b.selected(false)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  c = circle({ id: :the_circle, left: 122, color: :orange, drag: { move: true, inertia: true, lock: :start } })
4
- c.color({ id: :col1, red: 1, blue: 1 })
4
+ c.color({ id: :col1, red: 1, blue: 1 })
5
5
 
6
6
  c.shadow({
7
7
  id: :s1,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7.0.3
4
+ version: 0.5.7.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Eric Godard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-24 00:00:00.000000000 Z
11
+ date: 2024-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: artoo