atome 0.5.2.5 → 0.5.2.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.
- checksums.yaml +4 -4
- data/lib/atome/atome.rb +18 -14
- data/lib/atome/genesis/generators/event.rb +7 -3
- data/lib/atome/genesis/generators/identity.rb +6 -2
- data/lib/atome/genesis/generators/time.rb +5 -0
- data/lib/atome/genesis/genesis.rb +2 -2
- data/lib/atome/helpers/callbacks.rb +8 -9
- data/lib/atome/helpers/utilities.rb +35 -30
- data/lib/atome/kernel/universe.rb +3 -3
- data/lib/atome/renderers/browser/browser.rb +1 -0
- data/lib/atome/renderers/browser/event.rb +0 -5
- data/lib/atome/renderers/browser/helpers/effect_helper.rb +0 -3
- data/lib/atome/renderers/browser/helpers/video_helper.rb +9 -2
- data/lib/atome/renderers/browser/time.rb +3 -0
- data/lib/atome/renderers/html/html.rb +1 -1
- data/lib/atome/version.rb +1 -1
- data/lib/atome.rb +1 -0
- data/sig/atome.rbs +6 -0
- data/vendor/assets/build/medias/rubies/examples/_dataset.rb +4 -6
- data/vendor/assets/build/medias/rubies/examples/_test.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/add.rb +25 -0
- data/vendor/assets/build/medias/rubies/examples/clone.rb +19 -4
- data/vendor/assets/build/medias/rubies/examples/markers.rb +48 -0
- metadata +7 -4
- data/vendor/assets/build/medias/rubies/examples/_markers.rb +0 -57
- data/vendor/assets/build/medias/rubies/examples/at.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f484bac3226108b4f85b673ca7351becb12af457707ef7cca080058c15b13ef5
|
4
|
+
data.tar.gz: a7c42ee2a67b75ed1d0099bf082888ab50bbe2a56e2c68e93436f839ab363c89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9f6e623de170446b7396d38240cd02d92e0943e1f45d6f51161c4c2dc4057ab13c32e4273e04730708f8da42d429c3865175339e102a82f797bb476b4a4dfb1
|
7
|
+
data.tar.gz: 4319997d39d49fa04541cf888e69d23db768455969a55944531ce70f55f889d0ffb05aa3db8de5db0cdaa0117cb6640ea401a73e6b6f80a46788fa8b8dcd7450
|
data/lib/atome/atome.rb
CHANGED
@@ -15,13 +15,11 @@ class Atome
|
|
15
15
|
atomes.each_value do |elements|
|
16
16
|
# the instance variable below contain the id all any atomes that need to be informed when changes occurs
|
17
17
|
@broadcast = {}
|
18
|
-
@at_time = {}
|
19
|
-
@markers = {}
|
18
|
+
# @at_time = {}
|
20
19
|
# now we store the proc in a an atome's property called :bloc
|
21
20
|
elements[:code] = atomes_proc if atomes_proc
|
22
21
|
@atome = elements
|
23
22
|
# we initiate the rendering, eg for for browser we will call :browser_type generate method in identity.rb file
|
24
|
-
# create_particle(:type, @atome[:type])
|
25
23
|
create_particle(:type)
|
26
24
|
set_type(@atome[:type])
|
27
25
|
collapse
|
@@ -77,24 +75,25 @@ class Atome
|
|
77
75
|
|
78
76
|
def run_optional_proc(proc_name, atome = self, value = '', &user_proc)
|
79
77
|
option_found = Universe.get_optional_method(proc_name)
|
80
|
-
atome.instance_exec(value, user_proc,atome, &option_found) if option_found.is_a?(Proc)
|
78
|
+
atome.instance_exec(value, user_proc, atome, &option_found) if option_found.is_a?(Proc)
|
81
79
|
end
|
82
80
|
|
83
81
|
def inject_value(element, value)
|
82
|
+
# attention : please keep the method 'inject_value' available as it is sometimes needed to access it directly
|
84
83
|
@atome[element] = value
|
85
84
|
end
|
86
85
|
|
87
|
-
def store_value(element
|
86
|
+
def store_value(element)
|
88
87
|
# this method save the value of the particle and broadcast to the atomes listed in broadcast
|
89
|
-
broadcasting(element,
|
90
|
-
inject_value(element,
|
88
|
+
broadcasting(element, @atome[element])
|
89
|
+
inject_value(element, @atome[element])
|
91
90
|
end
|
92
91
|
|
93
92
|
public
|
94
93
|
|
95
94
|
# the line below is used for ephemera atomes
|
96
|
-
attr_accessor :property, :value, :real_atome, :user_proc
|
97
|
-
attr_reader :atome, :structure
|
95
|
+
attr_accessor :property, :value, :real_atome, :user_proc
|
96
|
+
attr_reader :atome, :structure#, :at_time
|
98
97
|
|
99
98
|
def set(value)
|
100
99
|
@real_atome[@property] = value
|
@@ -105,10 +104,14 @@ class Atome
|
|
105
104
|
|
106
105
|
# we create a proc holder of any new particle if user pass a bloc
|
107
106
|
store_code_bloc(element, &user_proc) if user_proc
|
108
|
-
|
109
|
-
|
110
|
-
run_optional_proc("
|
111
|
-
|
107
|
+
# we store the params immediately into the atome so optionals methods can access and modify it
|
108
|
+
@atome[element] = params
|
109
|
+
run_optional_proc("pre_render_#{@atome[:type]}".to_sym, self, @atome[element], &user_proc)
|
110
|
+
run_optional_proc("pre_render_#{element}".to_sym, self, @atome[element], &user_proc)
|
111
|
+
rendering(element, @atome[element], &user_proc)
|
112
|
+
run_optional_proc("post_render_#{@atome[:type]}".to_sym, self, @atome[element], &user_proc)
|
113
|
+
run_optional_proc("post_render_#{element}".to_sym, self, @atome[element], &user_proc)
|
114
|
+
store_value(element)
|
112
115
|
self
|
113
116
|
end
|
114
117
|
|
@@ -128,7 +131,8 @@ class Atome
|
|
128
131
|
virtual_atome.real_atome = @atome
|
129
132
|
virtual_atome.property = element
|
130
133
|
virtual_atome.user_proc = user_proc
|
131
|
-
run_optional_proc("pre_get_#{
|
134
|
+
run_optional_proc("pre_get_#{@atome[:type]}".to_sym, "virtual_atome", &user_proc)
|
135
|
+
run_optional_proc("pre_get_#{element}".to_sym, self, "virtual_atome", &user_proc)
|
132
136
|
virtual_atome
|
133
137
|
end
|
134
138
|
|
@@ -5,14 +5,18 @@ generator = Genesis.generator
|
|
5
5
|
# touch
|
6
6
|
generator.build_particle(:touch)
|
7
7
|
# video
|
8
|
-
generator.build_particle(:play)
|
8
|
+
generator.build_particle(:play) do
|
9
|
+
@atome[:pause] = :false
|
10
|
+
end
|
9
11
|
generator.build_particle(:time)
|
10
|
-
generator.build_particle(:pause)
|
12
|
+
generator.build_particle(:pause) do
|
13
|
+
@atome[:play] = :false
|
14
|
+
end
|
11
15
|
generator.build_particle(:on)
|
12
16
|
generator.build_particle(:fullscreen)
|
13
17
|
generator.build_particle(:mute)
|
14
18
|
# TODO : add the at event to ny particle : (width, left, ...) maybe use monitor particle
|
15
|
-
generator.build_particle(:at)
|
19
|
+
# generator.build_particle(:at)
|
16
20
|
# drag
|
17
21
|
generator.build_particle(:drag)
|
18
22
|
generator.build_sanitizer(:drag) do |params|
|
@@ -41,14 +41,18 @@ generator.build_particle(:attached) do |targets|
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
generator.build_particle(:intricate, :array)
|
45
|
+
|
46
|
+
|
44
47
|
generator.build_particle(:clones) do |clones_found|
|
45
48
|
clones_found.each_with_index do |clone_found, index|
|
49
|
+
particles_intricated= clone_found[:intricate] ||= [:width]
|
46
50
|
clone_id="#{particles[:id]}_clone_#{index}"
|
47
51
|
original_id=atome[:id]
|
48
52
|
clone_found[:id] = clone_id
|
49
53
|
clone_found = particles.merge(clone_found)
|
50
|
-
cloned_atome=Atome.new({
|
51
|
-
cloned_atome.monitor({ atomes: [original_id], particles:
|
54
|
+
cloned_atome=Atome.new({ clone: clone_found })
|
55
|
+
cloned_atome.monitor({ atomes: [original_id], particles: particles_intricated}) do |_atome, particle, value|
|
52
56
|
cloned_atome.send(particle,value)
|
53
57
|
end
|
54
58
|
end
|
@@ -11,9 +11,9 @@ end
|
|
11
11
|
|
12
12
|
# Genesis method here
|
13
13
|
class Atome
|
14
|
-
def build_particle(particle_name, &particle_proc)
|
14
|
+
def build_particle(particle_name,type=:string, &particle_proc)
|
15
15
|
# we add the new method to the particle's collection of methods
|
16
|
-
Universe.add_to_particle_list(particle_name)
|
16
|
+
Universe.add_to_particle_list(particle_name, type)
|
17
17
|
auto_render_generator(particle_name)
|
18
18
|
new_particle(particle_name, &particle_proc)
|
19
19
|
additional_particle_methods(particle_name, &particle_proc)
|
@@ -18,16 +18,15 @@ class Atome
|
|
18
18
|
instance_exec(file, &proc) if proc.is_a?(Proc)
|
19
19
|
end
|
20
20
|
|
21
|
-
def time_callback(current_time)
|
22
|
-
# puts "time_callback = #{current_time.round(1)}\n#{current_time}"
|
21
|
+
def time_callback(current_time, markers)
|
23
22
|
@atome[:time] = current_time
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
23
|
+
markers.each_value do |marker|
|
24
|
+
# check if the current time matches the time of the marker, thanks to chat GPT for the example
|
25
|
+
if current_time >= marker[:begin] && current_time < marker[:end]
|
26
|
+
code_found = marker[:code]
|
27
|
+
instance_exec(current_time, &code_found) if code_found.is_a?(Proc)
|
28
|
+
end
|
29
|
+
end
|
31
30
|
end
|
32
31
|
|
33
32
|
def drag_start_callback(page_x, page_y, left_val, top_val)
|
@@ -28,29 +28,6 @@ class Atome
|
|
28
28
|
"historize : #{property} #{value}"
|
29
29
|
end
|
30
30
|
|
31
|
-
# def broadcasting(modified_particle, value)
|
32
|
-
# @broadcast.each_value do |particle_monitored|
|
33
|
-
# if particle_monitored[modified_particle]
|
34
|
-
# code_found = particle_monitored[modified_particle]
|
35
|
-
# instance_exec(self, modified_particle, value, &code_found) if code_found.is_a?(Proc)
|
36
|
-
# end
|
37
|
-
# end
|
38
|
-
# end
|
39
|
-
#
|
40
|
-
# public
|
41
|
-
#
|
42
|
-
# def monitor(params, &proc_monitoring)
|
43
|
-
# atome[:monitor] ||= {}
|
44
|
-
# params[:atomes].each do |atome_id|
|
45
|
-
# target_broadcaster = grab(atome_id).instance_variable_get('@broadcast')
|
46
|
-
# monitor_id = params[:id] || "monitor#{target_broadcaster.length}"
|
47
|
-
# atome[:monitor] [monitor_id]=params.merge({code: proc_monitoring})
|
48
|
-
# params[:particles].each do |targeted_particle|
|
49
|
-
# target_broadcaster[monitor_id] = { targeted_particle => proc_monitoring }
|
50
|
-
# end
|
51
|
-
# end
|
52
|
-
# end
|
53
|
-
|
54
31
|
def broadcasting(altered_particle, value)
|
55
32
|
@broadcast.each_value do |particle_monitored|
|
56
33
|
if particle_monitored[:particles].include?(altered_particle)
|
@@ -62,21 +39,29 @@ class Atome
|
|
62
39
|
|
63
40
|
public
|
64
41
|
|
65
|
-
def monitor(params, &proc_monitoring)
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
42
|
+
def monitor(params=nil, &proc_monitoring)
|
43
|
+
if params
|
44
|
+
atome[:monitor] ||= {}
|
45
|
+
params[:atomes].each do |atome_id|
|
46
|
+
target_broadcaster = grab(atome_id).instance_variable_get('@broadcast')
|
47
|
+
monitor_id = params[:id] || "monitor#{target_broadcaster.length}"
|
48
|
+
atome[:monitor] [monitor_id]=params.merge({code: proc_monitoring})
|
49
|
+
target_broadcaster[monitor_id] = { particles: params[:particles], code: proc_monitoring }
|
50
|
+
end
|
51
|
+
else
|
52
|
+
atome[:monitor]
|
72
53
|
end
|
54
|
+
|
73
55
|
end
|
56
|
+
|
74
57
|
def store_code_bloc(element, &user_proc)
|
58
|
+
# TODO : maybe we have to change tis code if we need multiple proc for an particle
|
75
59
|
Object.attr_accessor "#{element}_code"
|
76
60
|
|
77
61
|
instance_variable_set("@#{element}_code", user_proc)
|
78
62
|
end
|
79
63
|
|
64
|
+
|
80
65
|
def particles(particles_found = nil)
|
81
66
|
if particles_found
|
82
67
|
particles_found.each do |particle_found, value_found|
|
@@ -92,6 +77,26 @@ class Atome
|
|
92
77
|
real_atome[property] << value
|
93
78
|
end
|
94
79
|
|
80
|
+
def add_to_hash(particle, values, &user_proc)
|
81
|
+
# we update the holder of any new particle if user pass a bloc
|
82
|
+
store_code_bloc(particle, &user_proc) if user_proc
|
83
|
+
values.each do |value_id, value|
|
84
|
+
@atome[particle][value_id] = value
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def add_to_array(particle, value, &_user_proc)
|
89
|
+
# we update the holder of any new particle if user pass a bloc
|
90
|
+
@atome[particle] << value
|
91
|
+
end
|
92
|
+
|
93
|
+
def add(particles, &user_proc)
|
94
|
+
particles.each do |particle, value|
|
95
|
+
particle_type = Universe.particle_list[particle]
|
96
|
+
send("add_to_#{particle_type}", particle, value, &user_proc)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
95
100
|
def refresh
|
96
101
|
collapse
|
97
102
|
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
class Universe
|
5
5
|
@atomes = {}
|
6
6
|
@atome_list = []
|
7
|
-
@particle_list =
|
7
|
+
@particle_list = {}
|
8
8
|
@renderer_list = %i[html browser headless server]
|
9
9
|
@options = {}
|
10
10
|
@sanitizers = {}
|
@@ -12,8 +12,8 @@ class Universe
|
|
12
12
|
class << self
|
13
13
|
attr_reader :atomes, :renderer_list, :atome_list, :particle_list
|
14
14
|
|
15
|
-
def add_to_particle_list(particle = nil)
|
16
|
-
instance_variable_get('@particle_list')
|
15
|
+
def add_to_particle_list(particle = nil, type)
|
16
|
+
instance_variable_get('@particle_list')[particle]=type
|
17
17
|
end
|
18
18
|
|
19
19
|
def add_optional_method(method_name, &method_proc)
|
@@ -8,6 +8,7 @@ require 'atome/renderers/browser/material'
|
|
8
8
|
require 'atome/renderers/browser/spatial'
|
9
9
|
require 'atome/renderers/browser/atome'
|
10
10
|
require 'atome/renderers/browser/utility'
|
11
|
+
require 'atome/renderers/browser/time'
|
11
12
|
require 'atome/renderers/browser/helpers/browser_helper'
|
12
13
|
require 'atome/renderers/browser/helpers/animation_helper'
|
13
14
|
require 'atome/renderers/browser/helpers/color_helper'
|
@@ -47,11 +47,6 @@ generator.build_render(:mute) do |value, _proc|
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
generator.build_render(:browser_at) do |at, proc|
|
51
|
-
# @atime is check at each toick of frame in 'time_callback'
|
52
|
-
@at_time = { code: proc }.merge(at)
|
53
|
-
end
|
54
|
-
|
55
50
|
generator.build_render(:browser_drag) do |options, proc|
|
56
51
|
options.each do |method, params|
|
57
52
|
atome_id = @atome[:id]
|
@@ -24,20 +24,27 @@ module BrowserHelper
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.browser_play_video(_value, browser_object_found, atome_hash, atome_object, proc)
|
27
|
+
markers = atome_hash[:markers]
|
28
|
+
markers.each_value do |value|
|
29
|
+
value[:end] = value[:begin] + 0.25 unless value[:end]
|
30
|
+
value[:label] = "label_#{atome_hash[:markers].length}" unless value[:label]
|
31
|
+
end
|
32
|
+
|
27
33
|
browser_object_found.play
|
28
34
|
# TODO : change timeupdate for when possible requestVideoFrameCallback
|
29
35
|
# (opal-browser/opal/browser/event.rb line 36)
|
30
36
|
video_callback = atome_hash[:code] # this is the video callback not the play callback
|
31
37
|
play_callback = proc # this is the video callback not the play callback
|
38
|
+
|
32
39
|
browser_object_found.on(:timeupdate) do |e|
|
33
40
|
current_time = browser_object_found.currentTime
|
34
41
|
# we update the time particle
|
35
|
-
atome_object.time_callback(current_time)
|
42
|
+
atome_object.time_callback(current_time, markers)
|
36
43
|
e.prevent # Prevent the default action (eg. form submission)
|
37
44
|
# You can also use `e.stop` to stop propagating the event to other handlers.
|
38
|
-
|
39
45
|
atome_object.instance_exec(current_time, &video_callback) if video_callback.is_a?(Proc)
|
40
46
|
atome_object.instance_exec(current_time, &play_callback) if play_callback.is_a?(Proc)
|
41
47
|
end
|
42
48
|
end
|
49
|
+
|
43
50
|
end
|
data/lib/atome/version.rb
CHANGED
data/lib/atome.rb
CHANGED
@@ -21,6 +21,7 @@ require 'atome/genesis/generators/geometry'
|
|
21
21
|
require 'atome/genesis/generators/identity'
|
22
22
|
require 'atome/genesis/generators/material'
|
23
23
|
require 'atome/genesis/generators/spatial'
|
24
|
+
require 'atome/genesis/generators/time'
|
24
25
|
require 'atome/genesis/generators/utility'
|
25
26
|
if RUBY_ENGINE.downcase == 'opal'
|
26
27
|
require 'atome/renderers/browser/browser'
|
data/sig/atome.rbs
CHANGED
@@ -58,10 +58,11 @@ generator = Genesis.generator
|
|
58
58
|
|
59
59
|
generator.build_atome(:template)
|
60
60
|
|
61
|
+
generator.build_particle(:cells)
|
62
|
+
generator.build_particle(:rows)
|
63
|
+
generator.build_particle(:columns)
|
61
64
|
generator.build_sanitizer(:template) do |params|
|
62
|
-
|
63
|
-
default_params = { renderers: [], id: "template_#{Universe.atomes.length}", type: :template,
|
64
|
-
}
|
65
|
+
default_params = { renderers: [], id: "template_#{Universe.atomes.length}", type: :template }
|
65
66
|
default_params.merge!(params)
|
66
67
|
end
|
67
68
|
|
@@ -76,7 +77,4 @@ template({ id: :child_in_table, code: [], cells: 16, columns: 4, rows: 4 })
|
|
76
77
|
the_view = grab(:view)
|
77
78
|
the_view.display(template: :child_in_table, list: [the_view.children.value], left: 33, top: 63, width: 333, height: 333)
|
78
79
|
|
79
|
-
# alert the_view
|
80
|
-
|
81
|
-
|
82
80
|
|
@@ -0,0 +1 @@
|
|
1
|
+
# frozen_string_literal: true
|
@@ -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 } } })
|
@@ -1,18 +1,33 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
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
|
+
|
3
8
|
b = box({ color: :red, smooth: 6 })
|
4
9
|
|
5
|
-
b.clones([left:
|
10
|
+
b.clones([{ left: 300, top: 300, color: :blue, intricate: [:width, :attached,:height ] },
|
11
|
+
{left: 600, top: 366, color: :green , intricate: [:left, :height ]}])
|
6
12
|
|
7
13
|
wait 1 do
|
8
|
-
b.width(
|
14
|
+
b.width(190)
|
9
15
|
end
|
10
16
|
|
11
17
|
wait 2 do
|
12
|
-
b.height(
|
18
|
+
b.height(180)
|
19
|
+
end
|
20
|
+
|
21
|
+
wait 3 do
|
22
|
+
b.left(180)
|
13
23
|
end
|
14
24
|
|
15
|
-
|
25
|
+
grab(:box_4_clone_1).smooth(33)
|
26
|
+
|
27
|
+
grab(:box_4_clone_1).rotate(33)
|
28
|
+
|
29
|
+
|
30
|
+
wait 5 do
|
16
31
|
b.clones.value.each do |clone_found|
|
17
32
|
grab(clone_found[:id]).delete(true)
|
18
33
|
end
|
@@ -0,0 +1,48 @@
|
|
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(10)
|
11
|
+
puts "play : #{my_video.play}, pause : #{my_video.pause}"
|
12
|
+
end
|
13
|
+
|
14
|
+
m_code1 = lambda do |val|
|
15
|
+
puts "hello : #{val}"
|
16
|
+
end
|
17
|
+
m_code2 = lambda do |val|
|
18
|
+
puts "hi there : #{val}"
|
19
|
+
end
|
20
|
+
|
21
|
+
m_code22 = lambda do |val|
|
22
|
+
puts "Super!! : #{val}"
|
23
|
+
end
|
24
|
+
|
25
|
+
stoper = lambda do
|
26
|
+
my_video.pause(true)
|
27
|
+
end
|
28
|
+
|
29
|
+
looper=lambda do
|
30
|
+
my_video.add({ markers: { my_stop: { begin: 6, code: stoper } } })
|
31
|
+
my_video.play(4)
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
# the marker below wont be executed because m2 will override it
|
36
|
+
my_video.markers({ m1: { begin: 13, code: m_code1 } }) do |_params|
|
37
|
+
puts 'stop'
|
38
|
+
end
|
39
|
+
# the marker will replace marker m1
|
40
|
+
my_video.markers({ m2: { begin: 12.876, code: m_code2 } }) do |_params|
|
41
|
+
puts'good'
|
42
|
+
end
|
43
|
+
|
44
|
+
# The markers below will be executed because they're added
|
45
|
+
|
46
|
+
my_video.add({ markers: { my_marker: { begin: 22.87576, code: looper } } })
|
47
|
+
my_video.add({ markers: { m3: { begin: 16.87576, code: m_code2 } } })
|
48
|
+
my_video.add({ markers: { m4: { begin: 14.87576,end: 16, code: m_code22 } } })
|
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.2.
|
4
|
+
version: 0.5.2.7
|
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: 2022-12-
|
11
|
+
date: 2022-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: arduino_firmata
|
@@ -391,6 +391,7 @@ files:
|
|
391
391
|
- lib/atome/genesis/generators/identity.rb
|
392
392
|
- lib/atome/genesis/generators/material.rb
|
393
393
|
- lib/atome/genesis/generators/spatial.rb
|
394
|
+
- lib/atome/genesis/generators/time.rb
|
394
395
|
- lib/atome/genesis/generators/utility.rb
|
395
396
|
- lib/atome/genesis/genesis.rb
|
396
397
|
- lib/atome/genesis/sparkle.rb
|
@@ -436,6 +437,7 @@ files:
|
|
436
437
|
- lib/atome/renderers/browser/material.rb
|
437
438
|
- lib/atome/renderers/browser/opal_browser.rb
|
438
439
|
- lib/atome/renderers/browser/spatial.rb
|
440
|
+
- lib/atome/renderers/browser/time.rb
|
439
441
|
- lib/atome/renderers/browser/utility.rb
|
440
442
|
- lib/atome/renderers/headless/headless.rb
|
441
443
|
- lib/atome/renderers/headless/utility.rb
|
@@ -603,11 +605,11 @@ files:
|
|
603
605
|
- vendor/assets/build/medias/rubies/examples/_2_solve.rb
|
604
606
|
- vendor/assets/build/medias/rubies/examples/_audio.rb
|
605
607
|
- vendor/assets/build/medias/rubies/examples/_dataset.rb
|
606
|
-
- vendor/assets/build/medias/rubies/examples/_markers.rb
|
607
608
|
- vendor/assets/build/medias/rubies/examples/_os.rb
|
609
|
+
- vendor/assets/build/medias/rubies/examples/_test.rb
|
608
610
|
- vendor/assets/build/medias/rubies/examples/_vie.rb
|
611
|
+
- vendor/assets/build/medias/rubies/examples/add.rb
|
609
612
|
- vendor/assets/build/medias/rubies/examples/animation.rb
|
610
|
-
- vendor/assets/build/medias/rubies/examples/at.rb
|
611
613
|
- vendor/assets/build/medias/rubies/examples/atome_new.rb
|
612
614
|
- vendor/assets/build/medias/rubies/examples/auto_height.rb
|
613
615
|
- vendor/assets/build/medias/rubies/examples/auto_width.rb
|
@@ -636,6 +638,7 @@ files:
|
|
636
638
|
- vendor/assets/build/medias/rubies/examples/image.rb
|
637
639
|
- vendor/assets/build/medias/rubies/examples/left.rb
|
638
640
|
- vendor/assets/build/medias/rubies/examples/link.rb
|
641
|
+
- vendor/assets/build/medias/rubies/examples/markers.rb
|
639
642
|
- vendor/assets/build/medias/rubies/examples/matrix.rb
|
640
643
|
- vendor/assets/build/medias/rubies/examples/monitoring.rb
|
641
644
|
- vendor/assets/build/medias/rubies/examples/mute.rb
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
##########################
|
4
|
-
# markers
|
5
|
-
my_video = Atome.new(
|
6
|
-
video: { renderers: [:browser], id: :video1, type: :video, parents: [:view],clones: [],
|
7
|
-
path: './medias/videos/avengers.mp4', left: 333, top: 33, width: 777
|
8
|
-
}
|
9
|
-
) do |params|
|
10
|
-
# puts "video callback here #{params}"
|
11
|
-
end
|
12
|
-
|
13
|
-
my_video.touch(true) do
|
14
|
-
my_video.play(10) do ||
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
@mcounter = 0
|
20
|
-
my_video.at({ time: 15 }) do |value|
|
21
|
-
# my_video.pause(true)
|
22
|
-
if @mcounter
|
23
|
-
puts "ok : #{@mcounter}"
|
24
|
-
else
|
25
|
-
@mcounter = 0
|
26
|
-
end
|
27
|
-
|
28
|
-
puts "value is : #{value} : mcounter : #{@mcounter}"
|
29
|
-
puts "---- #{my_video.time}-----"
|
30
|
-
my_video.play(15+(@mcounter*1))
|
31
|
-
# my_video.play() do |val|
|
32
|
-
# puts val
|
33
|
-
# end
|
34
|
-
|
35
|
-
@mcounter = @mcounter + 1
|
36
|
-
@at_time[:used] = false
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
# frozen_string_literal: true
|
41
|
-
|
42
|
-
generator = Genesis.generator
|
43
|
-
generator.build_particle(:markers)
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
my_lambda = lambda do |val|
|
48
|
-
puts "hello : #{val}"
|
49
|
-
end
|
50
|
-
my_video.markers({m1:{time: 15.87576, code: my_lambda}})
|
51
|
-
|
52
|
-
my_video.markers({m1:{time: 15.87576, code: my_lambda}}) do |params|
|
53
|
-
alert :good
|
54
|
-
end
|
55
|
-
|
56
|
-
my_lambda.call(:jeezs)
|
57
|
-
alert my_video.markers
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
my_video = Atome.new(
|
4
|
-
video: { renderers: [:browser], id: :video1, type: :video, parents: [:view],
|
5
|
-
path: './medias/videos/avengers.mp4', left: 333, top: 33, width: 777
|
6
|
-
}
|
7
|
-
) do |params|
|
8
|
-
puts "video callback here #{params}"
|
9
|
-
end
|
10
|
-
|
11
|
-
my_video.touch(true) do
|
12
|
-
my_video.play(1)
|
13
|
-
end
|
14
|
-
|
15
|
-
my_video.at({ time: 3.6 }) do |value|
|
16
|
-
puts "okok"
|
17
|
-
end
|
18
|
-
|
19
|
-
my_video.at({ time: 6.6 }) do |value|
|
20
|
-
my_video.pause(true)
|
21
|
-
end
|