atome 0.4.7.0 → 0.5.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +7 -4
- data/Rakefile +22 -13
- data/app_builder_helpers/Rakefile +63 -21
- data/exe/atome +91 -45
- data/lib/atome/atome_meta_engine.rb +132 -0
- data/lib/atome/extensions/atome.rb +41 -0
- data/lib/atome/{kernel/helpers → extensions}/geolocation.rb +0 -0
- data/lib/atome/{kernel/helpers → extensions}/ping.rb +0 -0
- data/lib/atome/{kernel/helpers → extensions}/sha.rb +3 -1
- data/lib/atome/genesis/generators/atome.rb +13 -0
- data/lib/atome/{renderers/headless/properties/generator.rb → genesis/generators/communication.rb} +2 -0
- data/lib/atome/genesis/generators/effect.rb +6 -0
- data/lib/atome/genesis/generators/event.rb +5 -0
- data/lib/atome/genesis/generators/geometry.rb +6 -0
- data/lib/atome/genesis/generators/identity.rb +15 -0
- data/lib/atome/genesis/generators/material.rb +10 -0
- data/lib/atome/genesis/generators/spatial.rb +12 -0
- data/lib/atome/genesis/generators/utility.rb +14 -0
- data/lib/atome/genesis/genesis.rb +51 -0
- data/lib/atome/genesis/sparkle.rb +58 -0
- data/lib/atome/helpers/color_helper/color/cmyk.rb +263 -0
- data/lib/atome/helpers/color_helper/color/css.rb +7 -0
- data/lib/atome/helpers/color_helper/color/grayscale.rb +197 -0
- data/lib/atome/helpers/color_helper/color/hsl.rb +240 -0
- data/lib/atome/helpers/color_helper/color/palette/adobecolor.rb +260 -0
- data/lib/atome/helpers/color_helper/color/palette/gimp.rb +104 -0
- data/lib/atome/helpers/color_helper/color/palette/monocontrast.rb +164 -0
- data/lib/atome/helpers/color_helper/color/palette.rb +4 -0
- data/lib/atome/helpers/color_helper/color/rgb/colors.rb +167 -0
- data/lib/atome/helpers/color_helper/color/rgb/contrast.rb +57 -0
- data/lib/atome/helpers/color_helper/color/rgb/metallic.rb +28 -0
- data/lib/atome/helpers/color_helper/color/rgb.rb +715 -0
- data/lib/atome/helpers/color_helper/color/yiq.rb +62 -0
- data/lib/atome/helpers/color_helper/color.rb +196 -0
- data/lib/atome/helpers/essentials.rb +42 -0
- data/lib/atome/helpers/sanitizer.rb +42 -0
- data/lib/atome/helpers/utilities.rb +57 -0
- data/lib/atome/kernel/essentials.rb +30 -0
- data/lib/atome/kernel/universe.rb +75 -26
- data/lib/atome/presets/atome.rb +66 -0
- data/lib/atome/processors/utilities.rb +10 -0
- data/lib/atome/renderers/browser/atome.rb +95 -0
- data/lib/atome/renderers/browser/browser.rb +158 -0
- data/lib/atome/renderers/browser/effect.rb +23 -0
- data/lib/atome/renderers/browser/event.rb +9 -0
- data/lib/atome/renderers/browser/geometry.rb +11 -0
- data/lib/atome/renderers/browser/identity.rb +20 -0
- data/lib/atome/renderers/browser/material.rb +43 -0
- data/lib/atome/renderers/{opal → browser}/opal_browser.rb +0 -2
- data/lib/atome/renderers/browser/spatial.rb +22 -0
- data/lib/atome/renderers/browser/utility.rb +26 -0
- data/lib/atome/renderers/html/atome.rb +47 -0
- data/lib/atome/renderers/html/effect.rb +19 -0
- data/lib/atome/renderers/html/event.rb +9 -0
- data/lib/atome/renderers/html/geometry.rb +11 -0
- data/lib/atome/renderers/html/html.rb +42 -0
- data/lib/atome/renderers/html/identity.rb +14 -0
- data/lib/atome/renderers/html/opal_browser.rb +6 -0
- data/lib/atome/renderers/html/spatial.rb +28 -0
- data/lib/atome/renderers/html/utility.rb +15 -0
- data/lib/atome/renderers/opal/atome_opal_extensions.rb +1 -1
- data/lib/atome/renderers/opal/extensions/atome.rb +29 -0
- data/lib/atome/renderers/opal/opal.rb +4 -0
- data/lib/atome/version.rb +1 -2
- data/lib/atome.rb +22 -45
- data/vendor/assets/application/index.rb +3 -1
- data/vendor/assets/application/required_example.rb +1 -0
- data/{lib/atome/renderers/headless/headless.rb → vendor/assets/aui.rb} +0 -0
- data/vendor/assets/build/css/style.css +51 -0
- data/vendor/assets/build/index.html +10 -7
- data/vendor/assets/build/js/atome/atome.js +61 -61
- data/{lib/atome/renderers/server/server.rb → vendor/assets/build/medias/rubies/examples/_animation.rb} +0 -0
- data/vendor/assets/build/medias/rubies/examples/_code.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/_id.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/_link.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/{on.rb → _on.rb} +3 -1
- data/vendor/assets/build/medias/rubies/examples/{read.rb → _read.rb} +2 -0
- data/vendor/assets/build/medias/rubies/examples/_refresh.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/atome.new.rb +13 -10
- data/vendor/assets/build/medias/rubies/examples/auto_height.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/auto_width.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/blur.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/bottom.rb +3 -1
- data/vendor/assets/build/medias/rubies/examples/box.rb +15 -8
- data/vendor/assets/build/medias/rubies/examples/circle.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/clear.rb +2 -1
- data/vendor/assets/build/medias/rubies/examples/color.rb +47 -8
- data/vendor/assets/build/medias/rubies/examples/create_atome_in_atome.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/delete.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/drag.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/element.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/get_renderer_list.rb +3 -1
- data/vendor/assets/build/medias/rubies/examples/grab.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/height.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/image.rb +6 -2
- data/vendor/assets/build/medias/rubies/examples/left.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/monitoring.rb +20 -0
- data/vendor/assets/build/medias/rubies/examples/parent.rb +7 -5
- data/vendor/assets/build/medias/rubies/examples/repeat.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/right.rb +3 -1
- data/vendor/assets/build/medias/rubies/examples/schedule.rb +0 -4
- data/vendor/assets/build/medias/rubies/examples/shadow.rb +30 -0
- data/vendor/assets/build/medias/rubies/examples/text.rb +21 -7
- data/vendor/assets/build/medias/rubies/examples/touch.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/video.rb +2 -2
- data/vendor/assets/build/medias/rubies/examples/web.rb +2 -2
- data/vendor/assets/server/atome_server.rb +3 -5
- metadata +74 -174
- data/lib/atome/atome_native_extensions.rb +0 -5
- data/lib/atome/extensions/helper.rb +0 -112
- data/lib/atome/kernel/atome.rb +0 -99
- data/lib/atome/kernel/generators/generator.rb +0 -517
- data/lib/atome/kernel/generators/genesis.rb +0 -277
- data/lib/atome/kernel/generators/sanitizer.rb +0 -73
- data/lib/atome/kernel/generators/shapes.rb +0 -55
- data/lib/atome/kernel/helpers/internal_methods.rb +0 -173
- data/lib/atome/kernel/helpers/utilities.rb +0 -39
- data/lib/atome/kernel/properties/essential.rb +0 -77
- data/lib/atome/kernel/sparkle.rb +0 -38
- data/lib/atome/renderers/opal/properties/generator.rb +0 -1
- data/lib/atome/renderers/renderer.rb +0 -13
- data/lib/atome/renderers/server/properties/generator.rb +0 -9
- data/vendor/assets/build/js/application.js +0 -0
- data/vendor/assets/build/medias/audios/guitar.wav +0 -0
- data/vendor/assets/build/medias/images/beach.jpg +0 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/!demos.rb +0 -111
- data/vendor/assets/build/medias/rubies/examples/Old_examples/action.rb +0 -12
- data/vendor/assets/build/medias/rubies/examples/Old_examples/add.rb +0 -26
- data/vendor/assets/build/medias/rubies/examples/Old_examples/alignment.rb +0 -27
- data/vendor/assets/build/medias/rubies/examples/Old_examples/animation.rb +0 -92
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_as_property.rb +0 -20
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_list.rb +0 -4
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atomiser.rb +0 -17
- data/vendor/assets/build/medias/rubies/examples/Old_examples/attach_extract.rb +0 -13
- data/vendor/assets/build/medias/rubies/examples/Old_examples/authorisation.rb +0 -22
- data/vendor/assets/build/medias/rubies/examples/Old_examples/batch.rb +0 -6
- data/vendor/assets/build/medias/rubies/examples/Old_examples/blend.rb +0 -15
- data/vendor/assets/build/medias/rubies/examples/Old_examples/blur.rb +0 -9
- data/vendor/assets/build/medias/rubies/examples/Old_examples/border.rb +0 -9
- data/vendor/assets/build/medias/rubies/examples/Old_examples/calendar.rb +0 -5
- data/vendor/assets/build/medias/rubies/examples/Old_examples/capture.rb +0 -57
- data/vendor/assets/build/medias/rubies/examples/Old_examples/center.rb +0 -21
- data/vendor/assets/build/medias/rubies/examples/Old_examples/child.rb +0 -18
- data/vendor/assets/build/medias/rubies/examples/Old_examples/clear.rb +0 -21
- data/vendor/assets/build/medias/rubies/examples/Old_examples/clip.rb +0 -11
- data/vendor/assets/build/medias/rubies/examples/Old_examples/code.rb +0 -7
- data/vendor/assets/build/medias/rubies/examples/Old_examples/code_editor.rb +0 -26
- data/vendor/assets/build/medias/rubies/examples/Old_examples/collaborate.rb +0 -115
- data/vendor/assets/build/medias/rubies/examples/Old_examples/convert_to_px.rb +0 -14
- data/vendor/assets/build/medias/rubies/examples/Old_examples/copy_paste.rb +0 -35
- data/vendor/assets/build/medias/rubies/examples/Old_examples/current_code.rb +0 -14
- data/vendor/assets/build/medias/rubies/examples/Old_examples/cursor.rb +0 -3
- data/vendor/assets/build/medias/rubies/examples/Old_examples/data.rb +0 -11
- data/vendor/assets/build/medias/rubies/examples/Old_examples/database.rb +0 -29
- data/vendor/assets/build/medias/rubies/examples/Old_examples/delete.rb +0 -12
- data/vendor/assets/build/medias/rubies/examples/Old_examples/display.rb +0 -19
- data/vendor/assets/build/medias/rubies/examples/Old_examples/disposition.rb +0 -10
- data/vendor/assets/build/medias/rubies/examples/Old_examples/double_and_long_touch.rb +0 -23
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drag.rb +0 -61
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drag_and_drop_import.rb +0 -1
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drop.rb +0 -23
- data/vendor/assets/build/medias/rubies/examples/Old_examples/duplicate.rb +0 -11
- data/vendor/assets/build/medias/rubies/examples/Old_examples/edit.rb +0 -6
- data/vendor/assets/build/medias/rubies/examples/Old_examples/eval.rb +0 -9
- data/vendor/assets/build/medias/rubies/examples/Old_examples/extract_detach.rb +0 -23
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fill.rb +0 -10
- data/vendor/assets/build/medias/rubies/examples/Old_examples/find.rb +0 -37
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fit.rb +0 -44
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fullscreen.rb +0 -28
- data/vendor/assets/build/medias/rubies/examples/Old_examples/generate.rb +0 -7
- data/vendor/assets/build/medias/rubies/examples/Old_examples/gradient.rb +0 -24
- data/vendor/assets/build/medias/rubies/examples/Old_examples/group.rb +0 -21
- data/vendor/assets/build/medias/rubies/examples/Old_examples/helper.rb +0 -64
- data/vendor/assets/build/medias/rubies/examples/Old_examples/history.rb +0 -7
- data/vendor/assets/build/medias/rubies/examples/Old_examples/hue.rb +0 -10
- data/vendor/assets/build/medias/rubies/examples/Old_examples/input_text.rb +0 -54
- data/vendor/assets/build/medias/rubies/examples/Old_examples/insert_attach.rb +0 -13
- data/vendor/assets/build/medias/rubies/examples/Old_examples/internationalisation.rb +0 -10
- data/vendor/assets/build/medias/rubies/examples/Old_examples/key.rb +0 -19
- data/vendor/assets/build/medias/rubies/examples/Old_examples/keyboard_shortcut.rb +0 -69
- data/vendor/assets/build/medias/rubies/examples/Old_examples/list_methods.rb +0 -4
- data/vendor/assets/build/medias/rubies/examples/Old_examples/list_types.rb +0 -4
- data/vendor/assets/build/medias/rubies/examples/Old_examples/listen.rb +0 -47
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mail.rb +0 -9
- data/vendor/assets/build/medias/rubies/examples/Old_examples/map.rb +0 -6
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mask.rb +0 -15
- data/vendor/assets/build/medias/rubies/examples/Old_examples/media_recorder.rb +0 -24
- data/vendor/assets/build/medias/rubies/examples/Old_examples/media_streaming.rb +0 -41
- data/vendor/assets/build/medias/rubies/examples/Old_examples/meteo.rb +0 -41
- data/vendor/assets/build/medias/rubies/examples/Old_examples/methods_chaining.rb +0 -8
- data/vendor/assets/build/medias/rubies/examples/Old_examples/midi.rb +0 -37
- data/vendor/assets/build/medias/rubies/examples/Old_examples/monitoring.rb +0 -47
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mulitrendering.rb +0 -7
- data/vendor/assets/build/medias/rubies/examples/Old_examples/noise_gradient_texture.rb +0 -26
- data/vendor/assets/build/medias/rubies/examples/Old_examples/notification.rb +0 -9
- data/vendor/assets/build/medias/rubies/examples/Old_examples/object_in_object.rb +0 -13
- data/vendor/assets/build/medias/rubies/examples/Old_examples/on_resize.rb +0 -12
- data/vendor/assets/build/medias/rubies/examples/Old_examples/over.rb +0 -15
- data/vendor/assets/build/medias/rubies/examples/Old_examples/overflow.rb +0 -22
- data/vendor/assets/build/medias/rubies/examples/Old_examples/parameter.rb +0 -14
- data/vendor/assets/build/medias/rubies/examples/Old_examples/parent.rb +0 -19
- data/vendor/assets/build/medias/rubies/examples/Old_examples/particle.rb +0 -15
- data/vendor/assets/build/medias/rubies/examples/Old_examples/pay.rb +0 -7
- data/vendor/assets/build/medias/rubies/examples/Old_examples/ping.rb +0 -7
- data/vendor/assets/build/medias/rubies/examples/Old_examples/play.rb +0 -24
- data/vendor/assets/build/medias/rubies/examples/Old_examples/play_audio.rb +0 -6
- data/vendor/assets/build/medias/rubies/examples/Old_examples/position.rb +0 -7
- data/vendor/assets/build/medias/rubies/examples/Old_examples/read_file.rb +0 -9
- data/vendor/assets/build/medias/rubies/examples/Old_examples/reboot.rb +0 -15
- data/vendor/assets/build/medias/rubies/examples/Old_examples/refresh.rb +0 -17
- data/vendor/assets/build/medias/rubies/examples/Old_examples/remote_server.rb +0 -31
- data/vendor/assets/build/medias/rubies/examples/Old_examples/render.rb +0 -17
- data/vendor/assets/build/medias/rubies/examples/Old_examples/repeat.rb +0 -19
- data/vendor/assets/build/medias/rubies/examples/Old_examples/require_remote.rb +0 -3
- data/vendor/assets/build/medias/rubies/examples/Old_examples/restore_atome.rb +0 -11
- data/vendor/assets/build/medias/rubies/examples/Old_examples/resurect.rb +0 -30
- data/vendor/assets/build/medias/rubies/examples/Old_examples/ruby_version.rb +0 -1
- data/vendor/assets/build/medias/rubies/examples/Old_examples/say.rb +0 -3
- data/vendor/assets/build/medias/rubies/examples/Old_examples/scale.rb +0 -41
- data/vendor/assets/build/medias/rubies/examples/Old_examples/schedule.rb +0 -39
- data/vendor/assets/build/medias/rubies/examples/Old_examples/scroll.rb +0 -9
- data/vendor/assets/build/medias/rubies/examples/Old_examples/select.rb +0 -32
- data/vendor/assets/build/medias/rubies/examples/Old_examples/selector.rb +0 -6
- data/vendor/assets/build/medias/rubies/examples/Old_examples/shadow.rb +0 -30
- data/vendor/assets/build/medias/rubies/examples/Old_examples/shape_with_path.rb +0 -7
- data/vendor/assets/build/medias/rubies/examples/Old_examples/size.rb +0 -109
- data/vendor/assets/build/medias/rubies/examples/Old_examples/smooth.rb +0 -5
- data/vendor/assets/build/medias/rubies/examples/Old_examples/speech_renderer.rb +0 -5
- data/vendor/assets/build/medias/rubies/examples/Old_examples/synth.rb +0 -6
- data/vendor/assets/build/medias/rubies/examples/Old_examples/system.rb +0 -3
- data/vendor/assets/build/medias/rubies/examples/Old_examples/tags.rb +0 -18
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text.rb +0 -33
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text_selection.rb +0 -33
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text_to_midi.rb +0 -22
- data/vendor/assets/build/medias/rubies/examples/Old_examples/touch.rb +0 -23
- data/vendor/assets/build/medias/rubies/examples/Old_examples/touch_stop_propagation.rb +0 -27
- data/vendor/assets/build/medias/rubies/examples/Old_examples/treat_object_in_object.rb +0 -26
- data/vendor/assets/build/medias/rubies/examples/Old_examples/type_mutations.rb +0 -27
- data/vendor/assets/build/medias/rubies/examples/Old_examples/video_callback.rb +0 -46
- data/vendor/assets/build/medias/rubies/examples/Old_examples/view_mode.rb +0 -29
- data/vendor/assets/build/medias/rubies/examples/Old_examples/virtual_events.rb +0 -17
- data/vendor/assets/build/medias/rubies/examples/Old_examples/visual.rb +0 -23
- data/vendor/assets/build/medias/rubies/examples/Old_examples/vr_display.rb +0 -5
- data/vendor/assets/build/medias/rubies/examples/Old_examples/wait.rb +0 -21
- data/vendor/assets/build/medias/rubies/examples/Old_examples/web.rb +0 -10
- data/vendor/assets/build/medias/rubies/examples/Old_examples/web_address_bar.rb +0 -14
- data/vendor/assets/build/medias/rubies/examples/Old_examples/websocket.rb +0 -16
- data/vendor/assets/build/medias/rubies/examples/Old_examples/webstate.rb +0 -10
- data/vendor/assets/build/medias/rubies/examples/animation.rb +0 -0
- data/vendor/assets/build/medias/rubies/examples/code.rb +0 -5
- data/vendor/assets/build/medias/rubies/examples/link.rb +0 -11
- data/vendor/assets/build/medias/videos/avengers.mp4 +0 -0
- data/vendor/assets/build/medias/videos/lion_king.mp4 +0 -0
- data/vendor/assets/build/medias/videos/madmax.mp4 +0 -0
- data/vendor/assets/build/medias/videos/starwars.mov +0 -0
- data/vendor/assets/build/medias/videos/superman.mp4 +0 -0
@@ -0,0 +1,62 @@
|
|
1
|
+
# A colour object representing YIQ (NTSC) colour encoding.
|
2
|
+
class Color::YIQ
|
3
|
+
include Color
|
4
|
+
|
5
|
+
# Creates a YIQ colour object from fractional values 0 .. 1.
|
6
|
+
#
|
7
|
+
# Color::YIQ.new(0.3, 0.2, 0.1)
|
8
|
+
def self.from_fraction(y = 0, i = 0, q = 0, &block)
|
9
|
+
new(y, i, q, 1.0, &block)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Creates a YIQ colour object from percentages 0 .. 100.
|
13
|
+
#
|
14
|
+
# Color::YIQ.new(10, 20, 30)
|
15
|
+
def initialize(y = 0, i = 0, q = 0, radix = 100.0, &block) # :yields self:
|
16
|
+
@y, @i, @q = [ y, i, q ].map { |v| Color.normalize(v / radix) }
|
17
|
+
block.call if block
|
18
|
+
end
|
19
|
+
|
20
|
+
def coerce(other)
|
21
|
+
other.to_yiq
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_yiq
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
def brightness
|
29
|
+
@y
|
30
|
+
end
|
31
|
+
def to_grayscale
|
32
|
+
Color::GrayScale.new(@y)
|
33
|
+
end
|
34
|
+
alias to_greyscale to_grayscale
|
35
|
+
|
36
|
+
def y
|
37
|
+
@y
|
38
|
+
end
|
39
|
+
def y=(yy)
|
40
|
+
@y = Color.normalize(yy)
|
41
|
+
end
|
42
|
+
def i
|
43
|
+
@i
|
44
|
+
end
|
45
|
+
def i=(ii)
|
46
|
+
@i = Color.normalize(ii)
|
47
|
+
end
|
48
|
+
def q
|
49
|
+
@q
|
50
|
+
end
|
51
|
+
def q=(qq)
|
52
|
+
@q = Color.normalize(qq)
|
53
|
+
end
|
54
|
+
|
55
|
+
def inspect
|
56
|
+
"YIQ [%.2f%%, %.2f%%, %.2f%%]" % [ @y * 100, @i * 100, @q * 100 ]
|
57
|
+
end
|
58
|
+
|
59
|
+
def to_a
|
60
|
+
[ y, i, q ]
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
# :title: Color -- Colour Management with Ruby
|
2
|
+
# :main: README.rdoc
|
3
|
+
|
4
|
+
# = Colour Management with Ruby
|
5
|
+
module Color
|
6
|
+
COLOR_VERSION = '1.8'
|
7
|
+
|
8
|
+
class RGB; end
|
9
|
+
|
10
|
+
class CMYK; end
|
11
|
+
|
12
|
+
class HSL; end
|
13
|
+
|
14
|
+
class GrayScale; end
|
15
|
+
|
16
|
+
class YIQ; end
|
17
|
+
|
18
|
+
# The maximum "resolution" for colour math; if any value is less than or
|
19
|
+
# equal to this value, it is treated as zero.
|
20
|
+
COLOR_EPSILON = 1e-5
|
21
|
+
# The tolerance for comparing the components of two colours. In general,
|
22
|
+
# colours are considered equal if all of their components are within this
|
23
|
+
# tolerance value of each other.
|
24
|
+
COLOR_TOLERANCE = 1e-4
|
25
|
+
|
26
|
+
# Compares the +other+ colour to this one. The +other+ colour will be
|
27
|
+
# coerced to the same type as the current colour. Such converted colour
|
28
|
+
# comparisons will always be more approximate than non-converted
|
29
|
+
# comparisons.
|
30
|
+
#
|
31
|
+
# If the +other+ colour cannot be coerced to the current colour class, a
|
32
|
+
# +NoMethodError+ exception will be raised.
|
33
|
+
#
|
34
|
+
# All values are compared as floating-point values, so two colours will be
|
35
|
+
# reported equivalent if all component values are within COLOR_TOLERANCE
|
36
|
+
# of each other.
|
37
|
+
def ==(other)
|
38
|
+
Color.equivalent?(self, other)
|
39
|
+
end
|
40
|
+
|
41
|
+
# The primary name for the colour.
|
42
|
+
def name
|
43
|
+
names.first
|
44
|
+
end
|
45
|
+
|
46
|
+
# All names for the colour.
|
47
|
+
def names
|
48
|
+
self.names = nil unless defined? @names
|
49
|
+
@names
|
50
|
+
end
|
51
|
+
|
52
|
+
def names=(n)
|
53
|
+
# :nodoc:
|
54
|
+
@names = Array(n).flatten.compact.map(&:to_s).map(&:downcase).sort.uniq
|
55
|
+
end
|
56
|
+
|
57
|
+
alias_method :name=, :names=
|
58
|
+
end
|
59
|
+
|
60
|
+
class << Color
|
61
|
+
# Returns +true+ if the value is less than COLOR_EPSILON.
|
62
|
+
def near_zero?(value)
|
63
|
+
(value.abs <= Color::COLOR_EPSILON)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Returns +true+ if the value is within COLOR_EPSILON of zero or less than
|
67
|
+
# zero.
|
68
|
+
def near_zero_or_less?(value)
|
69
|
+
(value < 0.0 or near_zero?(value))
|
70
|
+
end
|
71
|
+
|
72
|
+
# Returns +true+ if the value is within COLOR_EPSILON of one.
|
73
|
+
def near_one?(value)
|
74
|
+
near_zero?(value - 1.0)
|
75
|
+
end
|
76
|
+
|
77
|
+
# Returns +true+ if the value is within COLOR_EPSILON of one or more than
|
78
|
+
# one.
|
79
|
+
def near_one_or_more?(value)
|
80
|
+
(value > 1.0 or near_one?(value))
|
81
|
+
end
|
82
|
+
|
83
|
+
# Returns +true+ if the two values provided are near each other.
|
84
|
+
def near?(x, y)
|
85
|
+
(x - y).abs <= Color::COLOR_TOLERANCE
|
86
|
+
end
|
87
|
+
|
88
|
+
# Returns +true+ if the two colours are roughly equivalent. If colour
|
89
|
+
# conversions are required, this all conversions will be implemented
|
90
|
+
# using the default conversion mechanism.
|
91
|
+
def equivalent?(a, b)
|
92
|
+
return false unless a.kind_of?(Color) && b.kind_of?(Color)
|
93
|
+
a.to_a.zip(a.coerce(b).to_a).all? { |(x, y)| near?(x, y) }
|
94
|
+
end
|
95
|
+
|
96
|
+
# Coerces, if possible, the second given colour object to the first
|
97
|
+
# given colour object type. This will probably involve colour
|
98
|
+
# conversion and therefore a loss of fidelity.
|
99
|
+
def coerce(a, b)
|
100
|
+
a.coerce(b)
|
101
|
+
end
|
102
|
+
|
103
|
+
# Normalizes the value to the range (0.0) .. (1.0).
|
104
|
+
def normalize(value)
|
105
|
+
if near_zero_or_less? value
|
106
|
+
0.0
|
107
|
+
elsif near_one_or_more? value
|
108
|
+
1.0
|
109
|
+
else
|
110
|
+
value
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
alias normalize_fractional normalize
|
115
|
+
|
116
|
+
# Normalizes the value to the specified range.
|
117
|
+
def normalize_to_range(value, range)
|
118
|
+
range = (range.end..range.begin) if (range.end < range.begin)
|
119
|
+
|
120
|
+
if value <= range.begin
|
121
|
+
range.begin
|
122
|
+
elsif value >= range.end
|
123
|
+
range.end
|
124
|
+
else
|
125
|
+
value
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
# Normalize the value to the range (0) .. (255).
|
130
|
+
def normalize_byte(value)
|
131
|
+
normalize_to_range(value, 0..255).to_i
|
132
|
+
end
|
133
|
+
|
134
|
+
alias normalize_8bit normalize_byte
|
135
|
+
|
136
|
+
# Normalize the value to the range (0) .. (65535).
|
137
|
+
def normalize_word(value)
|
138
|
+
normalize_to_range(value, 0..65535).to_i
|
139
|
+
end
|
140
|
+
|
141
|
+
alias normalize_16bit normalize_word
|
142
|
+
end
|
143
|
+
|
144
|
+
require 'atome/helpers/color_helper/color/rgb'
|
145
|
+
require 'atome/helpers/color_helper/color/cmyk'
|
146
|
+
require 'atome/helpers/color_helper/color/grayscale'
|
147
|
+
require 'atome/helpers/color_helper/color/hsl'
|
148
|
+
require 'atome/helpers/color_helper/color/yiq'
|
149
|
+
require 'atome/helpers/color_helper/color/css'
|
150
|
+
|
151
|
+
class << Color
|
152
|
+
def const_missing(name)
|
153
|
+
#:nodoc:
|
154
|
+
case name
|
155
|
+
when "VERSION", :VERSION, "COLOR_TOOLS_VERSION", :COLOR_TOOLS_VERSION
|
156
|
+
warn "Color::#{name} has been deprecated. Use Color::COLOR_VERSION instead."
|
157
|
+
Color::COLOR_VERSION
|
158
|
+
else
|
159
|
+
if Color::RGB.const_defined?(name)
|
160
|
+
warn "Color::#{name} has been deprecated. Use Color::RGB::#{name} instead."
|
161
|
+
Color::RGB.const_get(name)
|
162
|
+
else
|
163
|
+
super
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
# Provides a thin veneer over the Color module to make it seem like this
|
169
|
+
# is Color 0.1.0 (a class) and not Color 1.4 (a module). This
|
170
|
+
# "constructor" will be removed in the future.
|
171
|
+
#
|
172
|
+
# mode = :hsl:: +values+ must be an array of [ hue deg, sat %, lum % ].
|
173
|
+
# A Color::HSL object will be created.
|
174
|
+
# mode = :rgb:: +values+ will either be an HTML-style colour string or
|
175
|
+
# an array of [ red, green, blue ] (range 0 .. 255). A
|
176
|
+
# Color::RGB object will be created.
|
177
|
+
# mode = :cmyk:: +values+ must be an array of [ cyan %, magenta %, yellow
|
178
|
+
# %, black % ]. A Color::CMYK object will be created.
|
179
|
+
def new(values, mode = :rgb)
|
180
|
+
warn "Color.new has been deprecated. Use Color::#{mode.to_s.upcase}.new instead."
|
181
|
+
color = case mode
|
182
|
+
when :hsl
|
183
|
+
Color::HSL.new(*values)
|
184
|
+
when :rgb
|
185
|
+
values = [values].flatten
|
186
|
+
if values.size == 1
|
187
|
+
Color::RGB.from_html(*values)
|
188
|
+
else
|
189
|
+
Color::RGB.new(*values)
|
190
|
+
end
|
191
|
+
when :cmyk
|
192
|
+
Color::CMYK.new(*values)
|
193
|
+
end
|
194
|
+
color.to_hsl
|
195
|
+
end
|
196
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# use to sanitize and secure user input
|
4
|
+
module Essentials
|
5
|
+
@default_params = {
|
6
|
+
render_engines: [:browser],
|
7
|
+
element: { type: :element, renderers: [] },
|
8
|
+
box: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99 },
|
9
|
+
circle: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99, left: 12, top: 12,
|
10
|
+
smooth: '100%' },
|
11
|
+
shape: { renderers: '', id: '', width: 100, type: :shape, height: 100, left: 100, top: 100,
|
12
|
+
color: { left: 0, top: 0, z: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
13
|
+
generator: :manual },
|
14
|
+
text: { type: :text, parents: [:view], children: [], visual: { size: 25 },
|
15
|
+
data: 'this is a text sample', left: 300, top: 33, width: 199, height: 33 },
|
16
|
+
drm: { type: :drm },
|
17
|
+
shadow: {}
|
18
|
+
}
|
19
|
+
|
20
|
+
def self.default_params
|
21
|
+
@default_params
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.new_default_params(new_default)
|
25
|
+
@default_params.merge!(new_default)
|
26
|
+
end
|
27
|
+
|
28
|
+
def validation(atome_instance_var)
|
29
|
+
# TODO: write validation scheme
|
30
|
+
true if atome_instance_var
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_essential_drm(params)
|
34
|
+
essential_drm = { authorisation: { read: [Atome.current_user], write: [Atome.current_user] },
|
35
|
+
atome: { read: [:all], write: [:me] } }
|
36
|
+
params[:drm] = if params[:drm]
|
37
|
+
essential_drm.merge(params[:drm])
|
38
|
+
else
|
39
|
+
essential_drm
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# atome sanitizer
|
4
|
+
class Atome
|
5
|
+
private
|
6
|
+
|
7
|
+
def create_color_hash(params)
|
8
|
+
rgb_color = Color::CSS[params].css_rgb
|
9
|
+
split_data = rgb_color.sub('rgb(', '').sub(')', '').gsub(',', '').split('%')
|
10
|
+
{ red: split_data[0].to_f / 100, green: split_data[1].to_f / 100, blue: split_data[2].to_f / 100 }
|
11
|
+
end
|
12
|
+
|
13
|
+
def found_parent_and_render
|
14
|
+
if @atome
|
15
|
+
parent_found = [@atome[:id]]
|
16
|
+
render_found = @atome[:renderers]
|
17
|
+
else
|
18
|
+
parent_found = []
|
19
|
+
render_found = Essentials.default_params[:render_engines]
|
20
|
+
end
|
21
|
+
{ parent: parent_found, renderers: render_found }
|
22
|
+
end
|
23
|
+
|
24
|
+
def sanitize_element(params)
|
25
|
+
parent_found = found_parent_and_render[:parent]
|
26
|
+
render_found = found_parent_and_render[:renderers]
|
27
|
+
default_params = { renderers: render_found, id: "element_#{Universe.atomes.length}", type: :element,
|
28
|
+
parents: parent_found }
|
29
|
+
default_params.merge!(params)
|
30
|
+
end
|
31
|
+
|
32
|
+
def sanitize_color(params)
|
33
|
+
parent_found = found_parent_and_render[:parent]
|
34
|
+
render_found = found_parent_and_render[:renderers]
|
35
|
+
default_params = { renderers: render_found, id: "color_#{Universe.atomes.length}", type: :color,
|
36
|
+
parents: parent_found,
|
37
|
+
red: 0, green: 0, blue: 0, alpha: 1 }
|
38
|
+
params = create_color_hash(params) unless params.instance_of? Hash
|
39
|
+
default_params.merge!(params)
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# toolbox method here
|
4
|
+
class Atome
|
5
|
+
private
|
6
|
+
|
7
|
+
def a_render
|
8
|
+
@atome.each do |element, value|
|
9
|
+
send(element, value) unless element == :type
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def security_pass(_element, _value)
|
14
|
+
true
|
15
|
+
end
|
16
|
+
|
17
|
+
def particle_sanitizer(_element, params)
|
18
|
+
params
|
19
|
+
end
|
20
|
+
|
21
|
+
def atome_sanitizer(element, params)
|
22
|
+
send("sanitize_#{element}", params)
|
23
|
+
end
|
24
|
+
|
25
|
+
def sanitize_particle(element, value, &user_proc)
|
26
|
+
value = particle_sanitizer(element, value)
|
27
|
+
create_particle(element, value, &user_proc)
|
28
|
+
end
|
29
|
+
|
30
|
+
def identity_generator
|
31
|
+
{ date: Time.now, location: geolocation }
|
32
|
+
end
|
33
|
+
|
34
|
+
def broadcasting(element, value)
|
35
|
+
return unless @broadcast[:particles]&.include?(element)
|
36
|
+
|
37
|
+
bloc_found = @broadcast[:bloc]
|
38
|
+
instance_exec(self, element, value, &bloc_found) if bloc_found.is_a?(Proc)
|
39
|
+
end
|
40
|
+
|
41
|
+
def history(property, value)
|
42
|
+
"historize : #{property} #{value}"
|
43
|
+
end
|
44
|
+
|
45
|
+
public
|
46
|
+
|
47
|
+
def monitor(params, &proc_monitoring)
|
48
|
+
params[:atomes].each do |atome_id|
|
49
|
+
grab(atome_id).instance_variable_set('@broadcast', { particles: params[:particles], bloc: proc_monitoring })
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def <<(particle)
|
54
|
+
value = particle.value
|
55
|
+
real_atome[property] << value
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Essentials method here
|
4
|
+
class Atome
|
5
|
+
private
|
6
|
+
|
7
|
+
def rendering(element_to_render, content, &user_proc)
|
8
|
+
render_engines = @atome[:renderers]
|
9
|
+
render_engines.each do |render_engine|
|
10
|
+
send("#{render_engine}_#{element_to_render}", content, &user_proc)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(element)
|
15
|
+
@atome[element]
|
16
|
+
end
|
17
|
+
|
18
|
+
def value
|
19
|
+
@atome
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_s
|
23
|
+
if @value
|
24
|
+
@result = @value.to_s
|
25
|
+
elsif @atome
|
26
|
+
@result = @atome.to_s
|
27
|
+
end
|
28
|
+
@result.to_s
|
29
|
+
end
|
30
|
+
end
|
@@ -1,37 +1,86 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
3
|
+
# universe method here
|
4
4
|
class Universe
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
# and finally the object is 3 as this the third object created by the main server
|
11
|
-
end
|
5
|
+
@atomes = {}
|
6
|
+
@atome_list = []
|
7
|
+
@particle_list = []
|
8
|
+
@renderer_list = %i[html browser headless server]
|
9
|
+
@optionals_methods = {}
|
12
10
|
|
13
|
-
|
14
|
-
|
15
|
-
end
|
11
|
+
class << self
|
12
|
+
attr_reader :atomes, :renderer_list, :atome_list, :particle_list
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
14
|
+
def add_to_particle_list(particle = nil)
|
15
|
+
instance_variable_get('@particle_list').push(particle)
|
16
|
+
end
|
21
17
|
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
def add_optionals_methods(method_name, &method_proc)
|
19
|
+
# this method is used to add optional methods
|
20
|
+
instance_variable_get('@optionals_methods').merge!({ method_name => method_proc })
|
21
|
+
end
|
25
22
|
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
def get_optionals_methods(method_name)
|
24
|
+
# this method is used to add optional methods
|
25
|
+
instance_variable_get('@optionals_methods')[method_name]
|
26
|
+
end
|
29
27
|
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
def add_to_atome_list(atome)
|
29
|
+
instance_variable_get('@atome_list').push(atome)
|
30
|
+
end
|
31
|
+
|
32
|
+
def add_to_atomes(atome)
|
33
|
+
instance_variable_get('@atomes').merge!(atome)
|
34
|
+
end
|
35
|
+
|
36
|
+
def app_identity
|
37
|
+
# each app hav its own identity, this allow to generate new user identities from th
|
38
|
+
@app_identity = 3
|
39
|
+
# the identity is define as follow : parentsCreatorID_softwareInstanceID_objetID
|
40
|
+
# in this case parents is eve so 0, Software instance number is main eVe server which is also 0,
|
41
|
+
# and finally the object is 3 as this the third object created by the main server
|
42
|
+
end
|
43
|
+
|
44
|
+
def change_atome_id(prev_id, new_id)
|
45
|
+
@atomes[new_id] = @atomes.delete(prev_id)
|
46
|
+
end
|
47
|
+
|
48
|
+
def delete(id)
|
49
|
+
@atomes.delete(id)
|
50
|
+
end
|
51
|
+
|
52
|
+
def current_machine_decision(platform, output)
|
53
|
+
case platform
|
54
|
+
when /darwin/
|
55
|
+
::Regexp.last_match(1) if output =~ /en1.*?(([A-F0-9]{2}:){5}[A-F0-9]{2})/im
|
56
|
+
when /win32/
|
57
|
+
::Regexp.last_match(1) if output =~ /Physical Address.*?(([A-F0-9]{2}-){5}[A-F0-9]{2})/im
|
58
|
+
else
|
59
|
+
# Cases for other platforms...
|
60
|
+
'unknown platform'
|
61
|
+
end
|
62
|
+
platform
|
63
|
+
end
|
64
|
+
|
65
|
+
def current_machine
|
66
|
+
platform = RUBY_PLATFORM.downcase
|
67
|
+
output = `#{platform =~ /win32/ ? 'ipconfig /all' : 'ifconfig'}`
|
68
|
+
current_machine_decision(platform, output)
|
69
|
+
# TODO: check the code above and create a sensible identity
|
70
|
+
end
|
71
|
+
|
72
|
+
def current_user
|
73
|
+
@user
|
74
|
+
end
|
75
|
+
|
76
|
+
def current_user=(user)
|
77
|
+
# TODO: create or load an existing user
|
78
|
+
# if user needs to be create the current_user will be eVe
|
79
|
+
@user = user
|
80
|
+
end
|
33
81
|
|
34
|
-
|
35
|
-
|
82
|
+
def connected
|
83
|
+
true
|
84
|
+
end
|
36
85
|
end
|
37
86
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# TODO: params shouldn't be merge but they must respect the order
|
4
|
+
# TODO: Add default value for each methods below
|
5
|
+
# TODO: Factorise codes below
|
6
|
+
# TODO we must clarified/unified the usage of presets and sanitizer it is not clear
|
7
|
+
|
8
|
+
# shaper creation
|
9
|
+
class Atome
|
10
|
+
def atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
11
|
+
temp_default = Essentials.default_params[atome_type]
|
12
|
+
temp_default[:id] = generated_id
|
13
|
+
temp_default[:parents] = generated_parents
|
14
|
+
temp_default[:renderers] = generated_render
|
15
|
+
temp_default.merge(params)
|
16
|
+
end
|
17
|
+
|
18
|
+
def box(params = {}, &bloc)
|
19
|
+
default_renderer = Essentials.default_params[:render_engines]
|
20
|
+
atome_type = :box
|
21
|
+
generated_render = params[:renderers] || default_renderer
|
22
|
+
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
23
|
+
generated_parents = params[:parents] || [id.value]
|
24
|
+
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
25
|
+
color_generated = sanitize_color({ parents: [generated_id], red: 0.3, green: 0.3, blue: 0.3 })
|
26
|
+
params[:color] = color_generated
|
27
|
+
Atome.new({ atome_type => params }, &bloc)
|
28
|
+
end
|
29
|
+
|
30
|
+
def circle(params = {}, &bloc)
|
31
|
+
default_renderer = Essentials.default_params[:render_engines]
|
32
|
+
atome_type = :circle
|
33
|
+
generated_render = params[:renderers] || default_renderer
|
34
|
+
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
35
|
+
generated_parents = params[:parents] || [id.value]
|
36
|
+
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
37
|
+
color_generated = sanitize_color({ parents: [generated_id], red: 0.6, green: 0.6, blue: 0.6 })
|
38
|
+
params[:color] = color_generated
|
39
|
+
Atome.new({ atome_type => params }, &bloc)
|
40
|
+
end
|
41
|
+
|
42
|
+
def image(params = {}, &bloc)
|
43
|
+
default_renderer = Essentials.default_params[:render_engines]
|
44
|
+
|
45
|
+
generated_id = params[:id] || "image_#{Universe.atomes.length}"
|
46
|
+
generated_render = params[:renderers] || default_renderer
|
47
|
+
generated_parents = params[:parents] || id.value
|
48
|
+
|
49
|
+
temp_default = { renderers: generated_render, id: generated_id, type: :image, parents: [generated_parents],
|
50
|
+
children: [], width: 99, height: 99, path: './medias/images/atome.svg' }
|
51
|
+
params = temp_default.merge(params)
|
52
|
+
Atome.new({ image: params }, &bloc)
|
53
|
+
end
|
54
|
+
|
55
|
+
def text(params = {}, &bloc)
|
56
|
+
default_renderer = Essentials.default_params[:render_engines]
|
57
|
+
atome_type = :text
|
58
|
+
generated_render = params[:renderers] || default_renderer
|
59
|
+
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
60
|
+
generated_parents = params[:parents] || [id.value]
|
61
|
+
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
62
|
+
color_generated = sanitize_color({ parents: [generated_id], red: 0.9, green: 0.9, blue: 0.9 })
|
63
|
+
params[:color] = color_generated
|
64
|
+
Atome.new({ atome_type => params }, &bloc)
|
65
|
+
end
|
66
|
+
end
|