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,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
generator = Genesis.generator
|
4
|
+
|
5
|
+
generator.build_particle(:type)
|
6
|
+
generator.build_particle(:parents)
|
7
|
+
generator.build_particle(:children)
|
8
|
+
generator.build_particle(:id)
|
9
|
+
|
10
|
+
generator.build_optional_methods(:pre_save_parents) do |parents_id_found|
|
11
|
+
parents_id_found.each do |parents_id|
|
12
|
+
parents_found = grab(parents_id)
|
13
|
+
parents_found.children << id if parents_found
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
generator = Genesis.generator
|
4
|
+
|
5
|
+
generator.build_particle(:red)
|
6
|
+
generator.build_particle(:green)
|
7
|
+
generator.build_particle(:blue)
|
8
|
+
generator.build_particle(:alpha)
|
9
|
+
generator.build_particle(:visual)
|
10
|
+
generator.build_particle(:overflow)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
generator = Genesis.generator
|
4
|
+
# create particles
|
5
|
+
generator.build_particle(:left) do |_params, user_proc|
|
6
|
+
instance_exec(&user_proc) if user_proc.is_a?(Proc)
|
7
|
+
end
|
8
|
+
|
9
|
+
generator.build_particle(:right)
|
10
|
+
generator.build_particle(:top)
|
11
|
+
generator.build_particle(:bottom)
|
12
|
+
generator.build_particle(:direction)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
generator = Genesis.generator
|
4
|
+
|
5
|
+
generator.build_particle(:renderers)
|
6
|
+
generator.build_particle(:bloc)
|
7
|
+
generator.build_particle(:broadcast)
|
8
|
+
generator.build_particle(:additional)
|
9
|
+
generator.build_particle(:data)
|
10
|
+
generator.build_particle(:delete) do
|
11
|
+
Universe.delete(@atome[:id])
|
12
|
+
end
|
13
|
+
generator.build_particle(:clear)
|
14
|
+
generator.build_particle(:path)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# allow to access Atome class using only a uniq atome
|
4
|
+
class Genesis
|
5
|
+
class << self
|
6
|
+
def generator
|
7
|
+
Atome.new
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# Genesis method here
|
13
|
+
class Atome
|
14
|
+
def build_particle(particle_name, &particle_proc)
|
15
|
+
# we add the new method to the particle's collection of methods
|
16
|
+
Universe.add_to_particle_list(particle_name)
|
17
|
+
auto_render_generator(particle_name)
|
18
|
+
new_particle(particle_name, &particle_proc)
|
19
|
+
additional_particle_methods(particle_name, &particle_proc)
|
20
|
+
end
|
21
|
+
|
22
|
+
def build_atome(atome_name, &atome_proc)
|
23
|
+
# we add the new method to the atome's collection of methods
|
24
|
+
Universe.add_to_atome_list(atome_name)
|
25
|
+
auto_render_generator(atome_name)
|
26
|
+
auto_sanitizer_generator(atome_name)
|
27
|
+
new_atome(atome_name, &atome_proc)
|
28
|
+
end
|
29
|
+
|
30
|
+
def auto_sanitizer_generator(element)
|
31
|
+
build_sanitizer_method("sanitize_#{element}")
|
32
|
+
end
|
33
|
+
def auto_render_generator(element)
|
34
|
+
Universe.renderer_list.each do |render_engine|
|
35
|
+
build_render_method("#{render_engine}_#{element}")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def build_render_method(renderer_name, &method_proc)
|
40
|
+
new_render_engine(renderer_name, &method_proc)
|
41
|
+
end
|
42
|
+
|
43
|
+
def build_sanitizer_method(sanitizer_name)
|
44
|
+
new_atome_sanitizer(sanitizer_name)
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
def build_optional_methods(method_name, &method_proc)
|
49
|
+
Universe.add_optionals_methods(method_name.to_sym, &method_proc)
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# let's create the Universe
|
4
|
+
def eval_protection
|
5
|
+
binding
|
6
|
+
end
|
7
|
+
|
8
|
+
# Let's set the default's parameters according to ruby interpreter
|
9
|
+
if RUBY_ENGINE.downcase == 'opal'
|
10
|
+
Essentials.new_default_params({ render_engines: [:browser] })
|
11
|
+
else
|
12
|
+
Essentials.new_default_params({ render_engines: [:headless] })
|
13
|
+
eval "require 'atome/extensions/geolocation'", eval_protection, __FILE__, __LINE__
|
14
|
+
eval "require 'atome/extensions/ping'", eval_protection, __FILE__, __LINE__
|
15
|
+
eval "require 'atome/extensions/sha'", eval_protection, __FILE__, __LINE__
|
16
|
+
end
|
17
|
+
|
18
|
+
# now let's get the default render engine
|
19
|
+
default_render = Essentials.default_params[:render_engines]
|
20
|
+
|
21
|
+
Universe.current_user = :jeezs
|
22
|
+
puts "application identity: #{Universe.app_identity}"
|
23
|
+
puts "atome version: #{Atome::VERSION}"
|
24
|
+
puts "current host: #{Universe.current_machine}"
|
25
|
+
puts "current user: #{Universe.current_user}"
|
26
|
+
|
27
|
+
Atome.new(
|
28
|
+
{ element: { renderers: [], id: :eDen, type: :element,
|
29
|
+
parents: [], children: [] } }
|
30
|
+
)
|
31
|
+
|
32
|
+
Atome.new(
|
33
|
+
{ element: { renderers: [], id: :user_view, type: :element,
|
34
|
+
parents: [:eDen], children: [] } }
|
35
|
+
)
|
36
|
+
|
37
|
+
Atome.new(
|
38
|
+
{ shape: { renderers: default_render, id: :view, type: :shape, parents: [:user_view], children: [],
|
39
|
+
left: 0, right: 0, top: 0, bottom: 0, overflow: :auto,
|
40
|
+
color: { renderers: default_render, id: :view_color, type: :color, parents: [:view],
|
41
|
+
red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } } }
|
42
|
+
)
|
43
|
+
|
44
|
+
# init basic object for atome environment
|
45
|
+
|
46
|
+
# Atome.new is used to create a new atome using best performances but params must be formatted and ordered correctly
|
47
|
+
|
48
|
+
# use atome.atome to create a new atome using a more permissive syntax less performances but params must be formatted
|
49
|
+
# and ordered correctly
|
50
|
+
|
51
|
+
# Atome.atome ids the easiest way to create a new atome
|
52
|
+
# Atome.atome({
|
53
|
+
# shape: { left: 0, right: 0, top: 0, bottom: 0, id: :view, color: { id: :c1, render: [:headless],
|
54
|
+
# red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } } })
|
55
|
+
|
56
|
+
# WARNING: when using Atome.new syntax , you must get your object using the .atome
|
57
|
+
# example to get the atome above : use a.shape.left and not a.left it wont access the physical object
|
58
|
+
# initialize Universe
|
@@ -0,0 +1,263 @@
|
|
1
|
+
# An CMYK colour object. CMYK (cyan, magenta, yellow, and black) colours are
|
2
|
+
# based on additive percentages of ink. A CMYK colour of (0.3, 0, 0.8, 0.3)
|
3
|
+
# would be mixed from 30% cyan, 0% magenta, 80% yellow, and 30% black.
|
4
|
+
# Primarily used in four-colour printing processes.
|
5
|
+
class Color::CMYK
|
6
|
+
include Color
|
7
|
+
|
8
|
+
# The format of a DeviceCMYK colour for PDF. In color-tools 2.0 this will
|
9
|
+
# be removed from this package and added back as a modification by the
|
10
|
+
# PDF::Writer package.
|
11
|
+
PDF_FORMAT_STR = "%.3f %.3f %.3f %.3f %s"
|
12
|
+
|
13
|
+
# Coerces the other Color object into CMYK.
|
14
|
+
def coerce(other)
|
15
|
+
other.to_cmyk
|
16
|
+
end
|
17
|
+
|
18
|
+
class << self
|
19
|
+
# Creates a CMYK colour object from fractional values 0..1.
|
20
|
+
#
|
21
|
+
# Color::CMYK.from_fraction(0.3, 0, 0.8, 0.3)
|
22
|
+
def from_fraction(c = 0, m = 0, y = 0, k = 0, &block)
|
23
|
+
new(c, m, y, k, 1.0, &block)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Creates a CMYK colour object from percentages. Internally, the colour is
|
27
|
+
# managed as fractional values 0..1.
|
28
|
+
#
|
29
|
+
# Color::CMYK.new(30, 0, 80, 30)
|
30
|
+
def from_percent(c = 0, m = 0, y = 0, k = 0, &block)
|
31
|
+
new(c, m, y, k, &block)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Creates a CMYK colour object from percentages. Internally, the colour is
|
36
|
+
# managed as fractional values 0..1.
|
37
|
+
#
|
38
|
+
# Color::CMYK.new(30, 0, 80, 30)
|
39
|
+
def initialize(c = 0, m = 0, y = 0, k = 0, radix = 100.0, &block) # :yields self:
|
40
|
+
@c, @m, @y, @k = [ c, m, y, k ].map { |v| Color.normalize(v / radix) }
|
41
|
+
block.call(self) if block
|
42
|
+
end
|
43
|
+
|
44
|
+
# Present the colour as a DeviceCMYK fill colour string for PDF. This will
|
45
|
+
# be removed from the default package in color-tools 2.0.
|
46
|
+
def pdf_fill
|
47
|
+
PDF_FORMAT_STR % [ @c, @m, @y, @k, "k" ]
|
48
|
+
end
|
49
|
+
|
50
|
+
# Present the colour as a DeviceCMYK stroke colour string for PDF. This
|
51
|
+
# will be removed from the default package in color-tools 2.0.
|
52
|
+
def pdf_stroke
|
53
|
+
PDF_FORMAT_STR % [ @c, @m, @y, @k, "K" ]
|
54
|
+
end
|
55
|
+
|
56
|
+
# Present the colour as an RGB HTML/CSS colour string (e.g., "#aabbcc").
|
57
|
+
# Note that this will perform a #to_rgb operation using the default
|
58
|
+
# conversion formula.
|
59
|
+
def html
|
60
|
+
to_rgb.html
|
61
|
+
end
|
62
|
+
|
63
|
+
# Present the colour as an RGB HTML/CSS colour string (e.g., "rgb(0%, 50%,
|
64
|
+
# 100%)"). Note that this will perform a #to_rgb operation using the
|
65
|
+
# default conversion formula.
|
66
|
+
def css_rgb
|
67
|
+
to_rgb.css_rgb
|
68
|
+
end
|
69
|
+
|
70
|
+
# Present the colour as an RGBA (with alpha) HTML/CSS colour string (e.g.,
|
71
|
+
# "rgb(0%, 50%, 100%, 1)"). Note that this will perform a #to_rgb
|
72
|
+
# operation using the default conversion formula.
|
73
|
+
def css_rgba(alpha = 1)
|
74
|
+
to_rgb.css_rgba(alpha)
|
75
|
+
end
|
76
|
+
|
77
|
+
# Present the colour as an HSL HTML/CSS colour string (e.g., "hsl(180,
|
78
|
+
# 25%, 35%)"). Note that this will perform a #to_hsl operation using the
|
79
|
+
# default conversion formula.
|
80
|
+
def css_hsl
|
81
|
+
to_hsl.css_hsl
|
82
|
+
end
|
83
|
+
|
84
|
+
# Present the colour as an HSLA (with alpha) HTML/CSS colour string (e.g.,
|
85
|
+
# "hsla(180, 25%, 35%, 1)"). Note that this will perform a #to_hsl
|
86
|
+
# operation using the default conversion formula.
|
87
|
+
def css_hsla
|
88
|
+
to_hsl.css_hsla
|
89
|
+
end
|
90
|
+
|
91
|
+
# Converts the CMYK colour to RGB. Most colour experts strongly suggest
|
92
|
+
# that this is not a good idea (some even suggesting that it's a very bad
|
93
|
+
# idea). CMYK represents additive percentages of inks on white paper,
|
94
|
+
# whereas RGB represents mixed colour intensities on a black screen.
|
95
|
+
#
|
96
|
+
# However, the colour conversion can be done, and there are two different
|
97
|
+
# methods for the conversion that provide slightly different results.
|
98
|
+
# Adobe PDF conversions are done with the first form.
|
99
|
+
#
|
100
|
+
# # Adobe PDF Display Formula
|
101
|
+
# r = 1.0 - min(1.0, c + k)
|
102
|
+
# g = 1.0 - min(1.0, m + k)
|
103
|
+
# b = 1.0 - min(1.0, y + k)
|
104
|
+
#
|
105
|
+
# # Other
|
106
|
+
# r = 1.0 - (c * (1.0 - k) + k)
|
107
|
+
# g = 1.0 - (m * (1.0 - k) + k)
|
108
|
+
# b = 1.0 - (y * (1.0 - k) + k)
|
109
|
+
#
|
110
|
+
# If we have a CMYK colour of [33% 66% 83% 25%], the first method will
|
111
|
+
# give an approximate RGB colour of (107, 23, 0) or #6b1700. The second
|
112
|
+
# method will give an approximate RGB colour of (128, 65, 33) or #804121.
|
113
|
+
# Which is correct? Although the colours may seem to be drastically
|
114
|
+
# different in the RGB colour space, they are very similar colours,
|
115
|
+
# differing mostly in intensity. The first is a darker, slightly redder
|
116
|
+
# brown; the second is a lighter brown.
|
117
|
+
#
|
118
|
+
# Because of this subtlety, both methods are now offered for conversion.
|
119
|
+
# The Adobe method is not used by default; to enable it, pass +true+ to
|
120
|
+
# #to_rgb.
|
121
|
+
#
|
122
|
+
# Future versions of Color may offer other conversion mechanisms that
|
123
|
+
# offer greater colour fidelity, including recognition of ICC colour
|
124
|
+
# profiles.
|
125
|
+
def to_rgb(use_adobe_method = false)
|
126
|
+
if use_adobe_method
|
127
|
+
Color::RGB.from_fraction(*adobe_cmyk_rgb)
|
128
|
+
else
|
129
|
+
Color::RGB.from_fraction(*standard_cmyk_rgb)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# Converts the CMYK colour to a single greyscale value. There are
|
134
|
+
# undoubtedly multiple methods for this conversion, but only a minor
|
135
|
+
# variant of the Adobe conversion method will be used:
|
136
|
+
#
|
137
|
+
# g = 1.0 - min(1.0, 0.299 * c + 0.587 * m + 0.114 * y + k)
|
138
|
+
#
|
139
|
+
# This treats the CMY values similarly to YIQ (NTSC) values and then adds
|
140
|
+
# the level of black. This is a variant of the Adobe version because it
|
141
|
+
# uses the more precise YIQ (NTSC) conversion values for Y (intensity)
|
142
|
+
# rather than the approximates provided by Adobe (0.3, 0.59, and 0.11).
|
143
|
+
def to_grayscale
|
144
|
+
c = 0.299 * @c.to_f
|
145
|
+
m = 0.587 * @m.to_f
|
146
|
+
y = 0.114 * @y.to_f
|
147
|
+
g = 1.0 - [1.0, c + m + y + @k].min
|
148
|
+
Color::GrayScale.from_fraction(g)
|
149
|
+
end
|
150
|
+
alias to_greyscale to_grayscale
|
151
|
+
|
152
|
+
def to_cmyk
|
153
|
+
self
|
154
|
+
end
|
155
|
+
|
156
|
+
def inspect
|
157
|
+
"CMYK [%.2f%%, %.2f%%, %.2f%%, %.2f%%]" % [ cyan, magenta, yellow, black ]
|
158
|
+
end
|
159
|
+
|
160
|
+
# Converts to RGB then YIQ.
|
161
|
+
def to_yiq
|
162
|
+
to_rgb.to_yiq
|
163
|
+
end
|
164
|
+
|
165
|
+
# Converts to RGB then HSL.
|
166
|
+
def to_hsl
|
167
|
+
to_rgb.to_hsl
|
168
|
+
end
|
169
|
+
|
170
|
+
# Returns the cyan (C) component of the CMYK colour as a percentage value.
|
171
|
+
def cyan
|
172
|
+
@c * 100.0
|
173
|
+
end
|
174
|
+
# Returns the cyan (C) component of the CMYK colour as a value in the
|
175
|
+
# range 0.0 .. 1.0.
|
176
|
+
def c
|
177
|
+
@c
|
178
|
+
end
|
179
|
+
# Sets the cyan (C) component of the CMYK colour as a percentage value.
|
180
|
+
def cyan=(cc)
|
181
|
+
@c = Color.normalize(cc / 100.0)
|
182
|
+
end
|
183
|
+
# Sets the cyan (C) component of the CMYK colour as a value in the range
|
184
|
+
# 0.0 .. 1.0.
|
185
|
+
def c=(cc)
|
186
|
+
@c = Color.normalize(cc)
|
187
|
+
end
|
188
|
+
|
189
|
+
# Returns the magenta (M) component of the CMYK colour as a percentage
|
190
|
+
# value.
|
191
|
+
def magenta
|
192
|
+
@m * 100.0
|
193
|
+
end
|
194
|
+
# Returns the magenta (M) component of the CMYK colour as a value in the
|
195
|
+
# range 0.0 .. 1.0.
|
196
|
+
def m
|
197
|
+
@m
|
198
|
+
end
|
199
|
+
# Sets the magenta (M) component of the CMYK colour as a percentage value.
|
200
|
+
def magenta=(mm)
|
201
|
+
@m = Color.normalize(mm / 100.0)
|
202
|
+
end
|
203
|
+
# Sets the magenta (M) component of the CMYK colour as a value in the
|
204
|
+
# range 0.0 .. 1.0.
|
205
|
+
def m=(mm)
|
206
|
+
@m = Color.normalize(mm)
|
207
|
+
end
|
208
|
+
|
209
|
+
# Returns the yellow (Y) component of the CMYK colour as a percentage
|
210
|
+
# value.
|
211
|
+
def yellow
|
212
|
+
@y * 100.0
|
213
|
+
end
|
214
|
+
# Returns the yellow (Y) component of the CMYK colour as a value in the
|
215
|
+
# range 0.0 .. 1.0.
|
216
|
+
def y
|
217
|
+
@y
|
218
|
+
end
|
219
|
+
# Sets the yellow (Y) component of the CMYK colour as a percentage value.
|
220
|
+
def yellow=(yy)
|
221
|
+
@y = Color.normalize(yy / 100.0)
|
222
|
+
end
|
223
|
+
# Sets the yellow (Y) component of the CMYK colour as a value in the range
|
224
|
+
# 0.0 .. 1.0.
|
225
|
+
def y=(kk)
|
226
|
+
@y = Color.normalize(kk)
|
227
|
+
end
|
228
|
+
|
229
|
+
# Returns the black (K) component of the CMYK colour as a percentage
|
230
|
+
# value.
|
231
|
+
def black
|
232
|
+
@k * 100.0
|
233
|
+
end
|
234
|
+
# Returns the black (K) component of the CMYK colour as a value in the
|
235
|
+
# range 0.0 .. 1.0.
|
236
|
+
def k
|
237
|
+
@k
|
238
|
+
end
|
239
|
+
# Sets the black (K) component of the CMYK colour as a percentage value.
|
240
|
+
def black=(kk)
|
241
|
+
@k = Color.normalize(kk / 100.0)
|
242
|
+
end
|
243
|
+
# Sets the black (K) component of the CMYK colour as a value in the range
|
244
|
+
# 0.0 .. 1.0.
|
245
|
+
def k=(kk)
|
246
|
+
@k = Color.normalize(kk)
|
247
|
+
end
|
248
|
+
|
249
|
+
def to_a
|
250
|
+
[ c, m, y, k ]
|
251
|
+
end
|
252
|
+
|
253
|
+
private
|
254
|
+
# Implements the Adobe PDF conversion of CMYK to RGB.
|
255
|
+
def adobe_cmyk_rgb
|
256
|
+
[ @c, @m, @y ].map { |v| 1.0 - [ 1.0, v + @k ].min }
|
257
|
+
end
|
258
|
+
|
259
|
+
# Implements the standard conversion of CMYK to RGB.
|
260
|
+
def standard_cmyk_rgb
|
261
|
+
[ @c, @m, @y ].map { |v| 1.0 - (v * (1.0 - k) + k) }
|
262
|
+
end
|
263
|
+
end
|
@@ -0,0 +1,197 @@
|
|
1
|
+
# A colour object representing shades of grey. Used primarily in PDF
|
2
|
+
# document creation.
|
3
|
+
class Color::GrayScale
|
4
|
+
include Color
|
5
|
+
|
6
|
+
# The format of a DeviceGrey colour for PDF. In color-tools 2.0 this will
|
7
|
+
# be removed from this package and added back as a modification by the
|
8
|
+
# PDF::Writer package.
|
9
|
+
PDF_FORMAT_STR = "%.3f %s"
|
10
|
+
|
11
|
+
class << self
|
12
|
+
# Creates a greyscale colour object from fractional values 0..1.
|
13
|
+
#
|
14
|
+
# Color::GreyScale.from_fraction(0.5)
|
15
|
+
def from_fraction(g = 0, &block)
|
16
|
+
new(g, 1.0, &block)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Creates a greyscale colour object from percentages 0..100.
|
20
|
+
#
|
21
|
+
# Color::GrayScale.from_percent(50)
|
22
|
+
def from_percent(g = 0, &block)
|
23
|
+
new(g, &block)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Creates a greyscale colour object from percentages 0..100.
|
28
|
+
#
|
29
|
+
# Color::GrayScale.new(50)
|
30
|
+
def initialize(g = 0, radix = 100.0, &block) # :yields self:
|
31
|
+
@g = Color.normalize(g / radix)
|
32
|
+
block.call if block
|
33
|
+
end
|
34
|
+
|
35
|
+
# Coerces the other Color object to grayscale.
|
36
|
+
def coerce(other)
|
37
|
+
other.to_grayscale
|
38
|
+
end
|
39
|
+
|
40
|
+
# Present the colour as a DeviceGrey fill colour string for PDF. This will
|
41
|
+
# be removed from the default package in color-tools 2.0.
|
42
|
+
def pdf_fill
|
43
|
+
PDF_FORMAT_STR % [ @g, "g" ]
|
44
|
+
end
|
45
|
+
|
46
|
+
# Present the colour as a DeviceGrey stroke colour string for PDF. This
|
47
|
+
# will be removed from the default package in color-tools 2.0.
|
48
|
+
def pdf_stroke
|
49
|
+
PDF_FORMAT_STR % [ @g, "G" ]
|
50
|
+
end
|
51
|
+
|
52
|
+
def to_255
|
53
|
+
[(@g * 255).round, 255].min
|
54
|
+
end
|
55
|
+
private :to_255
|
56
|
+
|
57
|
+
# Present the colour as an HTML/CSS colour string.
|
58
|
+
def html
|
59
|
+
gs = "%02x" % to_255
|
60
|
+
"##{gs * 3}"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Present the colour as an RGB HTML/CSS colour string (e.g., "rgb(0%, 50%,
|
64
|
+
# 100%)").
|
65
|
+
def css_rgb
|
66
|
+
"rgb(%3.2f%%, %3.2f%%, %3.2f%%)" % [ gray, gray, gray ]
|
67
|
+
end
|
68
|
+
|
69
|
+
# Present the colour as an RGBA (with alpha) HTML/CSS colour string (e.g.,
|
70
|
+
# "rgb(0%, 50%, 100%, 1)").
|
71
|
+
def css_rgba(alpha = 1)
|
72
|
+
"rgba(%3.2f%%, %3.2f%%, %3.2f%%, %1.2f)" % [ gray, gray, gray, alpha ]
|
73
|
+
end
|
74
|
+
|
75
|
+
# Present the colour as an HSL HTML/CSS colour string (e.g., "hsl(180,
|
76
|
+
# 25%, 35%)"). Note that this will perform a #to_hsl operation.
|
77
|
+
def css_hsl
|
78
|
+
to_hsl.css_hsl
|
79
|
+
end
|
80
|
+
|
81
|
+
# Present the colour as an HSLA (with alpha) HTML/CSS colour string (e.g.,
|
82
|
+
# "hsla(180, 25%, 35%, 1)"). Note that this will perform a #to_hsl
|
83
|
+
# operation.
|
84
|
+
def css_hsla
|
85
|
+
to_hsl.css_hsla
|
86
|
+
end
|
87
|
+
|
88
|
+
# Convert the greyscale colour to CMYK.
|
89
|
+
def to_cmyk
|
90
|
+
k = 1.0 - @g.to_f
|
91
|
+
Color::CMYK.from_fraction(0, 0, 0, k)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Convert the greyscale colour to RGB.
|
95
|
+
def to_rgb(ignored = true)
|
96
|
+
Color::RGB.from_fraction(g, g, g)
|
97
|
+
end
|
98
|
+
|
99
|
+
# Reflexive conversion.
|
100
|
+
def to_grayscale
|
101
|
+
self
|
102
|
+
end
|
103
|
+
alias to_greyscale to_grayscale
|
104
|
+
|
105
|
+
# Lightens the greyscale colour by the stated percent.
|
106
|
+
def lighten_by(percent)
|
107
|
+
g = [@g + (@g * (percent / 100.0)), 1.0].min
|
108
|
+
Color::GrayScale.from_fraction(g)
|
109
|
+
end
|
110
|
+
|
111
|
+
# Darken the greyscale colour by the stated percent.
|
112
|
+
def darken_by(percent)
|
113
|
+
g = [@g - (@g * (percent / 100.0)), 0.0].max
|
114
|
+
Color::GrayScale.from_fraction(g)
|
115
|
+
end
|
116
|
+
|
117
|
+
# Returns the YIQ (NTSC) colour encoding of the greyscale value. This is
|
118
|
+
# an approximation, as the values for I and Q are calculated by treating
|
119
|
+
# the greyscale value as an RGB value. The Y (intensity or brightness)
|
120
|
+
# value is the same as the greyscale value.
|
121
|
+
def to_yiq
|
122
|
+
y = @g
|
123
|
+
i = (@g * 0.596) + (@g * -0.275) + (@g * -0.321)
|
124
|
+
q = (@g * 0.212) + (@g * -0.523) + (@g * 0.311)
|
125
|
+
Color::YIQ.from_fraction(y, i, q)
|
126
|
+
end
|
127
|
+
|
128
|
+
# Returns the HSL colour encoding of the greyscale value.
|
129
|
+
def to_hsl
|
130
|
+
Color::HSL.from_fraction(0, 0, @g)
|
131
|
+
end
|
132
|
+
|
133
|
+
# Returns the brightness value for this greyscale value; this is the
|
134
|
+
# greyscale value itself.
|
135
|
+
def brightness
|
136
|
+
@g
|
137
|
+
end
|
138
|
+
|
139
|
+
# Returns the grayscale value as a percentage of white (100% gray is
|
140
|
+
# white).
|
141
|
+
def gray
|
142
|
+
@g * 100.0
|
143
|
+
end
|
144
|
+
alias grey gray
|
145
|
+
# Returns the grayscale value as a fractional value of white in the range
|
146
|
+
# 0.0 .. 1.0.
|
147
|
+
def g
|
148
|
+
@g
|
149
|
+
end
|
150
|
+
# Sets the grayscale value as a percentage of white.
|
151
|
+
def gray=(gg)
|
152
|
+
@g = Color.normalize(gg / 100.0)
|
153
|
+
end
|
154
|
+
alias grey= gray= ;
|
155
|
+
# Returns the grayscale value as a fractional value of white in the range
|
156
|
+
# 0.0 .. 1.0.
|
157
|
+
def g=(gg)
|
158
|
+
@g = Color.normalize(gg)
|
159
|
+
end
|
160
|
+
|
161
|
+
# Adds another colour to the current colour. The other colour will be
|
162
|
+
# converted to grayscale before addition. This conversion depends upon a
|
163
|
+
# #to_grayscale method on the other colour.
|
164
|
+
#
|
165
|
+
# The addition is done using the grayscale accessor methods to ensure a
|
166
|
+
# valid colour in the result.
|
167
|
+
def +(other)
|
168
|
+
self.class.from_fraction(g + other.to_grayscale.g)
|
169
|
+
end
|
170
|
+
|
171
|
+
# Subtracts another colour to the current colour. The other colour will be
|
172
|
+
# converted to grayscale before subtraction. This conversion depends upon
|
173
|
+
# a #to_grayscale method on the other colour.
|
174
|
+
#
|
175
|
+
# The subtraction is done using the grayscale accessor methods to ensure a
|
176
|
+
# valid colour in the result.
|
177
|
+
def -(other)
|
178
|
+
self + (-other)
|
179
|
+
end
|
180
|
+
|
181
|
+
def inspect
|
182
|
+
"Gray [%.2f%%]" % [ gray ]
|
183
|
+
end
|
184
|
+
|
185
|
+
def to_a
|
186
|
+
[ g ]
|
187
|
+
end
|
188
|
+
|
189
|
+
def -@
|
190
|
+
gs = self.dup
|
191
|
+
gs.instance_variable_set(:@g, -g)
|
192
|
+
gs
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
# A synonym for Color::GrayScale.
|
197
|
+
Color::GreyScale = Color::GrayScale
|