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,164 @@
|
|
1
|
+
require 'color/palette'
|
2
|
+
|
3
|
+
# Generates a monochromatic constrasting colour palette for background and
|
4
|
+
# foreground. What does this mean?
|
5
|
+
#
|
6
|
+
# Monochromatic: A single colour is used to generate the base palette, and
|
7
|
+
# this colour is lightened five times and darkened five times to provide
|
8
|
+
# eleven distinct colours.
|
9
|
+
#
|
10
|
+
# Contrasting: The foreground is also generated as a monochromatic colour
|
11
|
+
# palette; however, all generated colours are tested to see that they are
|
12
|
+
# appropriately contrasting to ensure maximum readability of the foreground
|
13
|
+
# against the background.
|
14
|
+
class Color::Palette::MonoContrast
|
15
|
+
# Hash of CSS background colour values.
|
16
|
+
#
|
17
|
+
# This is always 11 values:
|
18
|
+
#
|
19
|
+
# 0:: The starting colour.
|
20
|
+
# +1..+5:: Lighter colours.
|
21
|
+
# -1..-5:: Darker colours.
|
22
|
+
attr_reader :background
|
23
|
+
# Hash of CSS foreground colour values.
|
24
|
+
#
|
25
|
+
# This is always 11 values:
|
26
|
+
#
|
27
|
+
# 0:: The starting colour.
|
28
|
+
# +1..+5:: Lighter colours.
|
29
|
+
# -1..-5:: Darker colours.
|
30
|
+
attr_reader :foreground
|
31
|
+
|
32
|
+
DEFAULT_MINIMUM_BRIGHTNESS_DIFF = (125.0 / 255.0)
|
33
|
+
|
34
|
+
# The minimum brightness difference between the background and the
|
35
|
+
# foreground, and must be between 0..1. Setting this value will regenerate
|
36
|
+
# the palette based on the base colours. The default value for this is 125
|
37
|
+
# / 255.0. If this value is set to +nil+, it will be restored to the
|
38
|
+
# default.
|
39
|
+
attr_reader :minimum_brightness_diff
|
40
|
+
def minimum_brightness_diff=(bd) #:nodoc:
|
41
|
+
@minimum_brightness_diff = if bd.nil?
|
42
|
+
DEFAULT_MINIMUM_BRIGHTNESS_DIFF
|
43
|
+
elsif bd > 1.0
|
44
|
+
1.0
|
45
|
+
elsif bd < 0.0
|
46
|
+
0.0
|
47
|
+
else
|
48
|
+
bd
|
49
|
+
end
|
50
|
+
regenerate(@background[0], @foreground[0])
|
51
|
+
end
|
52
|
+
|
53
|
+
DEFAULT_MINIMUM_COLOR_DIFF = (500.0 / 255.0)
|
54
|
+
|
55
|
+
# The minimum colour difference between the background and the foreground,
|
56
|
+
# and must be between 0..3. Setting this value will regenerate the palette
|
57
|
+
# based on the base colours. The default value for this is 500 / 255.0.
|
58
|
+
attr_reader :minimum_color_diff
|
59
|
+
def minimum_color_diff=(cd) #:nodoc:
|
60
|
+
@minimum_color_diff = if cd.nil?
|
61
|
+
DEFAULT_MINIMUM_COLOR_DIFF
|
62
|
+
elsif cd > 3.0
|
63
|
+
3.0
|
64
|
+
elsif cd < 0.0
|
65
|
+
0.0
|
66
|
+
else
|
67
|
+
cd
|
68
|
+
end
|
69
|
+
regenerate(@background[0], @foreground[0])
|
70
|
+
end
|
71
|
+
|
72
|
+
# Generate the initial palette.
|
73
|
+
def initialize(background, foreground = nil)
|
74
|
+
@minimum_brightness_diff = DEFAULT_MINIMUM_BRIGHTNESS_DIFF
|
75
|
+
@minimum_color_diff = DEFAULT_MINIMUM_COLOR_DIFF
|
76
|
+
regenerate(background, foreground)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Generate the colour palettes.
|
80
|
+
def regenerate(background, foreground = nil)
|
81
|
+
foreground ||= background
|
82
|
+
background = background.to_rgb
|
83
|
+
foreground = foreground.to_rgb
|
84
|
+
|
85
|
+
@background = {}
|
86
|
+
@foreground = {}
|
87
|
+
|
88
|
+
@background[-5] = background.darken_by(10)
|
89
|
+
@background[-4] = background.darken_by(25)
|
90
|
+
@background[-3] = background.darken_by(50)
|
91
|
+
@background[-2] = background.darken_by(75)
|
92
|
+
@background[-1] = background.darken_by(85)
|
93
|
+
@background[ 0] = background
|
94
|
+
@background[+1] = background.lighten_by(85)
|
95
|
+
@background[+2] = background.lighten_by(75)
|
96
|
+
@background[+3] = background.lighten_by(50)
|
97
|
+
@background[+4] = background.lighten_by(25)
|
98
|
+
@background[+5] = background.lighten_by(10)
|
99
|
+
|
100
|
+
@foreground[-5] = calculate_foreground(@background[-5], foreground)
|
101
|
+
@foreground[-4] = calculate_foreground(@background[-4], foreground)
|
102
|
+
@foreground[-3] = calculate_foreground(@background[-3], foreground)
|
103
|
+
@foreground[-2] = calculate_foreground(@background[-2], foreground)
|
104
|
+
@foreground[-1] = calculate_foreground(@background[-1], foreground)
|
105
|
+
@foreground[ 0] = calculate_foreground(@background[ 0], foreground)
|
106
|
+
@foreground[+1] = calculate_foreground(@background[+1], foreground)
|
107
|
+
@foreground[+2] = calculate_foreground(@background[+2], foreground)
|
108
|
+
@foreground[+3] = calculate_foreground(@background[+3], foreground)
|
109
|
+
@foreground[+4] = calculate_foreground(@background[+4], foreground)
|
110
|
+
@foreground[+5] = calculate_foreground(@background[+5], foreground)
|
111
|
+
end
|
112
|
+
|
113
|
+
# Given a background colour and a foreground colour, modifies the
|
114
|
+
# foreground colour so that it will have enough contrast to be seen
|
115
|
+
# against the background colour.
|
116
|
+
#
|
117
|
+
# Uses #mininum_brightness_diff and #minimum_color_diff.
|
118
|
+
def calculate_foreground(background, foreground)
|
119
|
+
nfg = nil
|
120
|
+
# Loop through brighter and darker versions of the foreground color. The
|
121
|
+
# numbers here represent the amount of foreground color to mix with
|
122
|
+
# black and white.
|
123
|
+
[100, 75, 50, 25, 0].each do |percent|
|
124
|
+
dfg = foreground.darken_by(percent)
|
125
|
+
lfg = foreground.lighten_by(percent)
|
126
|
+
|
127
|
+
dbd = brightness_diff(background, dfg)
|
128
|
+
lbd = brightness_diff(background, lfg)
|
129
|
+
|
130
|
+
if lbd > dbd
|
131
|
+
nfg = lfg
|
132
|
+
nbd = lbd
|
133
|
+
else
|
134
|
+
nfg = dfg
|
135
|
+
nbd = dbd
|
136
|
+
end
|
137
|
+
|
138
|
+
ncd = color_diff(background, nfg)
|
139
|
+
|
140
|
+
break if nbd >= @minimum_brightness_diff and ncd >= @minimum_color_diff
|
141
|
+
end
|
142
|
+
nfg
|
143
|
+
end
|
144
|
+
|
145
|
+
# Returns the absolute difference between the brightness levels of two
|
146
|
+
# colours. This will be a decimal value between 0 and 1. W3C accessibility
|
147
|
+
# guidelines for {colour contrast}[http://www.w3.org/TR/AERT#color-contrast]
|
148
|
+
# suggest that this value be at least approximately 0.49 (125 / 255.0) for
|
149
|
+
# proper contrast.
|
150
|
+
def brightness_diff(c1, c2)
|
151
|
+
(c1.brightness - c2.brightness).abs
|
152
|
+
end
|
153
|
+
|
154
|
+
# Returns the contrast between to colours, a decimal value between 0 and
|
155
|
+
# 3. W3C accessibility guidelines for {colour
|
156
|
+
# contrast}[http://www.w3.org/TR/AERT#color-contrast] suggest that this
|
157
|
+
# value be at least approximately 1.96 (500 / 255.0) for proper contrast.
|
158
|
+
def color_diff(c1, c2)
|
159
|
+
r = (c1.r - c2.r).abs
|
160
|
+
g = (c1.g - c2.g).abs
|
161
|
+
b = (c1.b - c2.b).abs
|
162
|
+
r + g + b
|
163
|
+
end
|
164
|
+
end
|
@@ -0,0 +1,167 @@
|
|
1
|
+
class Color::RGB
|
2
|
+
class << self
|
3
|
+
private
|
4
|
+
def named(rgb, *names)
|
5
|
+
__named_color(self, new(*rgb), *names)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
named [0xf0, 0xf8, 0xff], :AliceBlue
|
10
|
+
named [0xfa, 0xeb, 0xd7], :AntiqueWhite
|
11
|
+
named [0x00, 0xff, 0xff], :Aqua
|
12
|
+
named [0x7f, 0xff, 0xd4], :Aquamarine
|
13
|
+
named [0xf0, 0xff, 0xff], :Azure
|
14
|
+
named [0xf5, 0xf5, 0xdc], :Beige
|
15
|
+
named [0xff, 0xe4, 0xc4], :Bisque
|
16
|
+
named [0x66, 0x33, 0x99], :RebeccaPurple, :BeccaPurple
|
17
|
+
named [0x00, 0x00, 0x00], :Black
|
18
|
+
named [0xff, 0xeb, 0xcd], :BlanchedAlmond
|
19
|
+
named [0x00, 0x00, 0xff], :Blue
|
20
|
+
named [0x8a, 0x2b, 0xe2], :BlueViolet
|
21
|
+
named [0xa5, 0x2a, 0x2a], :Brown
|
22
|
+
named [0xde, 0xb8, 0x87], :BurlyWood, :Burlywood
|
23
|
+
named [0x5f, 0x9e, 0xa0], :CadetBlue
|
24
|
+
named [0xff, 0x5e, 0xd0], :Carnation
|
25
|
+
named [0x8d, 0x00, 0x00], :Cayenne
|
26
|
+
named [0x7f, 0xff, 0x00], :Chartreuse
|
27
|
+
named [0xd2, 0x69, 0x1e], :Chocolate
|
28
|
+
named [0xff, 0x7f, 0x50], :Coral
|
29
|
+
named [0x64, 0x95, 0xed], :CornflowerBlue
|
30
|
+
named [0xff, 0xf8, 0xdc], :Cornsilk
|
31
|
+
named [0xdc, 0x14, 0x3c], :Crimson
|
32
|
+
named [0x00, 0xff, 0xff], :Cyan
|
33
|
+
named [0x00, 0x00, 0x8b], :DarkBlue
|
34
|
+
named [0x00, 0x8b, 0x8b], :DarkCyan
|
35
|
+
named [0xb8, 0x86, 0x0b], :DarkGoldenRod, :DarkGoldenrod
|
36
|
+
named [0xa9, 0xa9, 0xa9], :DarkGray, :DarkGrey
|
37
|
+
named [0x00, 0x64, 0x00], :DarkGreen
|
38
|
+
named [0xbd, 0xb7, 0x6b], :DarkKhaki
|
39
|
+
named [0x8b, 0x00, 0x8b], :DarkMagenta
|
40
|
+
named [0x55, 0x6b, 0x2f], :DarkOliveGreen, :DarkoliveGreen
|
41
|
+
named [0xff, 0x8c, 0x00], :DarkOrange
|
42
|
+
named [0x99, 0x32, 0xcc], :DarkOrchid
|
43
|
+
named [0x8b, 0x00, 0x00], :DarkRed
|
44
|
+
named [0xe9, 0x96, 0x7a], :DarkSalmon, :Darksalmon
|
45
|
+
named [0x8f, 0xbc, 0x8f], :DarkSeaGreen
|
46
|
+
named [0x48, 0x3d, 0x8b], :DarkSlateBlue
|
47
|
+
named [0x2f, 0x4f, 0x4f], :DarkSlateGray, :DarkSlateGrey
|
48
|
+
named [0x00, 0xce, 0xd1], :DarkTurquoise
|
49
|
+
named [0x94, 0x00, 0xd3], :DarkViolet
|
50
|
+
named [0xff, 0x8c, 0x00], :Darkorange
|
51
|
+
named [0xff, 0x14, 0x93], :DeepPink
|
52
|
+
named [0x00, 0xbf, 0xbf], :DeepSkyBlue
|
53
|
+
named [0x69, 0x69, 0x69], :DimGray, :DimGrey
|
54
|
+
named [0x1e, 0x90, 0xff], :DodgerBlue
|
55
|
+
named [0xd1, 0x92, 0x75], :Feldspar
|
56
|
+
named [0xb2, 0x22, 0x22], :FireBrick, :Firebrick
|
57
|
+
named [0xff, 0xfa, 0xf0], :FloralWhite
|
58
|
+
named [0x22, 0x8b, 0x22], :ForestGreen
|
59
|
+
named [0xff, 0x00, 0xff], :Fuchsia
|
60
|
+
named [0xdc, 0xdc, 0xdc], :Gainsboro
|
61
|
+
named [0xf8, 0xf8, 0xff], :GhostWhite
|
62
|
+
named [0xff, 0xd7, 0x00], :Gold
|
63
|
+
named [0xda, 0xa5, 0x20], :GoldenRod, :Goldenrod
|
64
|
+
named [0x80, 0x80, 0x80], :Gray, :Grey
|
65
|
+
named [10, 10, 10, 100.0], :Gray10, :Grey10
|
66
|
+
named [20, 20, 20, 100.0], :Gray20, :Grey20
|
67
|
+
named [30, 30, 30, 100.0], :Gray30, :Grey30
|
68
|
+
named [40, 40, 40, 100.0], :Gray40, :Grey40
|
69
|
+
named [50, 50, 50, 100.0], :Gray50, :Grey50
|
70
|
+
named [60, 60, 60, 100.0], :Gray60, :Grey60
|
71
|
+
named [70, 70, 70, 100.0], :Gray70, :Grey70
|
72
|
+
named [80, 80, 80, 100.0], :Gray80, :Grey80
|
73
|
+
named [90, 90, 90, 100.0], :Gray90, :Grey90
|
74
|
+
named [0x00, 0x80, 0x00], :Green
|
75
|
+
named [0xad, 0xff, 0x2f], :GreenYellow
|
76
|
+
named [0xf0, 0xff, 0xf0], :HoneyDew, :Honeydew
|
77
|
+
named [0xff, 0x69, 0xb4], :HotPink
|
78
|
+
named [0xcd, 0x5c, 0x5c], :IndianRed
|
79
|
+
named [0x4b, 0x00, 0x82], :Indigo
|
80
|
+
named [0xff, 0xff, 0xf0], :Ivory
|
81
|
+
named [0xf0, 0xe6, 0x8c], :Khaki
|
82
|
+
named [0xe6, 0xe6, 0xfa], :Lavender
|
83
|
+
named [0xff, 0xf0, 0xf5], :LavenderBlush
|
84
|
+
named [0x7c, 0xfc, 0x00], :LawnGreen
|
85
|
+
named [0xff, 0xfa, 0xcd], :LemonChiffon
|
86
|
+
named [0xad, 0xd8, 0xe6], :LightBlue
|
87
|
+
named [0xf0, 0x80, 0x80], :LightCoral
|
88
|
+
named [0xe0, 0xff, 0xff], :LightCyan
|
89
|
+
named [0xfa, 0xfa, 0xd2], :LightGoldenRodYellow, :LightGoldenrodYellow
|
90
|
+
named [0xd3, 0xd3, 0xd3], :LightGray, :LightGrey
|
91
|
+
named [0x90, 0xee, 0x90], :LightGreen
|
92
|
+
named [0xff, 0xb6, 0xc1], :LightPink
|
93
|
+
named [0xff, 0xa0, 0x7a], :LightSalmon, :Lightsalmon
|
94
|
+
named [0x20, 0xb2, 0xaa], :LightSeaGreen
|
95
|
+
named [0x87, 0xce, 0xfa], :LightSkyBlue
|
96
|
+
named [0x84, 0x70, 0xff], :LightSlateBlue
|
97
|
+
named [0x77, 0x88, 0x99], :LightSlateGray, :LightSlateGrey
|
98
|
+
named [0xb0, 0xc4, 0xde], :LightSteelBlue, :LightsteelBlue
|
99
|
+
named [0xff, 0xff, 0xe0], :LightYellow
|
100
|
+
named [0x00, 0xff, 0x00], :Lime
|
101
|
+
named [0x32, 0xcd, 0x32], :LimeGreen
|
102
|
+
named [0xfa, 0xf0, 0xe6], :Linen
|
103
|
+
named [0xff, 0x00, 0xff], :Magenta
|
104
|
+
named [0x80, 0x00, 0x00], :Maroon
|
105
|
+
named [0x66, 0xcd, 0xaa], :MediumAquaMarine, :MediumAquamarine
|
106
|
+
named [0x00, 0x00, 0xcd], :MediumBlue
|
107
|
+
named [0xba, 0x55, 0xd3], :MediumOrchid
|
108
|
+
named [0x93, 0x70, 0xdb], :MediumPurple
|
109
|
+
named [0x3c, 0xb3, 0x71], :MediumSeaGreen
|
110
|
+
named [0x7b, 0x68, 0xee], :MediumSlateBlue
|
111
|
+
named [0x00, 0xfa, 0x9a], :MediumSpringGreen
|
112
|
+
named [0x48, 0xd1, 0xcc], :MediumTurquoise
|
113
|
+
named [0xc7, 0x15, 0x85], :MediumVioletRed
|
114
|
+
named [0x19, 0x19, 0x70], :MidnightBlue
|
115
|
+
named [0xf5, 0xff, 0xfa], :MintCream
|
116
|
+
named [0xff, 0xe4, 0xe1], :MistyRose
|
117
|
+
named [0xff, 0xe4, 0xb5], :Moccasin
|
118
|
+
named [0xff, 0xde, 0xad], :NavajoWhite
|
119
|
+
named [0x00, 0x00, 0x80], :Navy
|
120
|
+
named [0xfd, 0xf5, 0xe6], :OldLace
|
121
|
+
named [0x80, 0x80, 0x00], :Olive
|
122
|
+
named [0x6b, 0x8e, 0x23], :OliveDrab, :Olivedrab
|
123
|
+
named [0xff, 0xa5, 0x00], :Orange
|
124
|
+
named [0xff, 0x45, 0x00], :OrangeRed
|
125
|
+
named [0xda, 0x70, 0xd6], :Orchid
|
126
|
+
named [0xee, 0xe8, 0xaa], :PaleGoldenRod, :PaleGoldenrod
|
127
|
+
named [0x98, 0xfb, 0x98], :PaleGreen
|
128
|
+
named [0xaf, 0xee, 0xee], :PaleTurquoise
|
129
|
+
named [0xdb, 0x70, 0x93], :PaleVioletRed
|
130
|
+
named [0xff, 0xef, 0xd5], :PapayaWhip
|
131
|
+
named [0xff, 0xda, 0xb9], :PeachPuff, :Peachpuff
|
132
|
+
named [0xcd, 0x85, 0x3f], :Peru
|
133
|
+
named [0xff, 0xc0, 0xcb], :Pink
|
134
|
+
named [0xdd, 0xa0, 0xdd], :Plum
|
135
|
+
named [0xb0, 0xe0, 0xe6], :PowderBlue
|
136
|
+
named [0x80, 0x00, 0x80], :Purple
|
137
|
+
named [0xff, 0x00, 0x00], :Red
|
138
|
+
named [0xbc, 0x8f, 0x8f], :RosyBrown
|
139
|
+
named [0x41, 0x69, 0xe1], :RoyalBlue
|
140
|
+
named [0x8b, 0x45, 0x13], :SaddleBrown
|
141
|
+
named [0xfa, 0x80, 0x72], :Salmon
|
142
|
+
named [0xf4, 0xa4, 0x60], :SandyBrown
|
143
|
+
named [0x2e, 0x8b, 0x57], :SeaGreen
|
144
|
+
named [0xff, 0xf5, 0xee], :SeaShell, :Seashell
|
145
|
+
named [0xa0, 0x52, 0x2d], :Sienna
|
146
|
+
named [0xc0, 0xc0, 0xc0], :Silver
|
147
|
+
named [0x87, 0xce, 0xeb], :SkyBlue
|
148
|
+
named [0x6a, 0x5a, 0xcd], :SlateBlue
|
149
|
+
named [0x70, 0x80, 0x90], :SlateGray, :SlateGrey
|
150
|
+
named [0xff, 0xfa, 0xfa], :Snow
|
151
|
+
named [0x00, 0xff, 0x7f], :SpringGreen
|
152
|
+
named [0x46, 0x82, 0xb4], :SteelBlue
|
153
|
+
named [0xd2, 0xb4, 0x8c], :Tan
|
154
|
+
named [0x00, 0x80, 0x80], :Teal
|
155
|
+
named [0xd8, 0xbf, 0xd8], :Thistle
|
156
|
+
named [0xff, 0x63, 0x47], :Tomato
|
157
|
+
named [0x40, 0xe0, 0xd0], :Turquoise
|
158
|
+
named [0xee, 0x82, 0xee], :Violet
|
159
|
+
named [0xd0, 0x20, 0x90], :VioletRed
|
160
|
+
named [0xf5, 0xde, 0xb3], :Wheat
|
161
|
+
named [0xff, 0xff, 0xff], :White
|
162
|
+
named [0xf5, 0xf5, 0xf5], :WhiteSmoke
|
163
|
+
named [0xff, 0xff, 0x00], :Yellow
|
164
|
+
named [0x9a, 0xcd, 0x32], :YellowGreen
|
165
|
+
end
|
166
|
+
|
167
|
+
require 'atome/helpers/color_helper/color/rgb/metallic'
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# -*- ruby encoding: utf-8 -*-
|
2
|
+
|
3
|
+
class Color::RGB
|
4
|
+
# Outputs how much contrast this color has with another RGB color.
|
5
|
+
# Computes the same regardless of which one is considered foreground. If
|
6
|
+
# the other color does not have a #to_rgb method, this will throw an
|
7
|
+
# exception. Anything over about 0.22 should have a high likelihood of
|
8
|
+
# being legible, but the larger the difference, the more contrast.
|
9
|
+
# Otherwise, to be safe go with something > 0.3
|
10
|
+
def contrast(other)
|
11
|
+
other = coerce(other)
|
12
|
+
|
13
|
+
# The following numbers have been set with some care.
|
14
|
+
((diff_brightness(other) * 0.65) +
|
15
|
+
(diff_hue(other) * 0.20) +
|
16
|
+
(diff_luminosity(other) * 0.15))
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
# Provides the luminosity difference between two rbg vals
|
21
|
+
def diff_luminosity(other)
|
22
|
+
other = coerce(other)
|
23
|
+
l1 = (0.2126 * (other.r) ** 2.2) +
|
24
|
+
(0.7152 * (other.b) ** 2.2) +
|
25
|
+
(0.0722 * (other.g) ** 2.2);
|
26
|
+
|
27
|
+
l2 = (0.2126 * (self.r) ** 2.2) +
|
28
|
+
(0.7152 * (self.b) ** 2.2) +
|
29
|
+
(0.0722 * (self.g) ** 2.2);
|
30
|
+
|
31
|
+
((([l1, l2].max) + 0.05) / ( ([l1, l2].min) + 0.05 ) - 1) / 20.0
|
32
|
+
end
|
33
|
+
|
34
|
+
# Provides the brightness difference.
|
35
|
+
def diff_brightness(other)
|
36
|
+
other = other.to_rgb
|
37
|
+
br1 = (299 * other.r + 587 * other.g + 114 * other.b)
|
38
|
+
br2 = (299 * self.r + 587 * self.g + 114 * self.b)
|
39
|
+
(br1 - br2).abs / 1000.0;
|
40
|
+
end
|
41
|
+
|
42
|
+
# Provides the euclidean distance between the two color values
|
43
|
+
def diff_euclidean(other)
|
44
|
+
other = other.to_rgb
|
45
|
+
((((other.r - self.r) ** 2) +
|
46
|
+
((other.g - self.g) ** 2) +
|
47
|
+
((other.b - self.b) ** 2)) ** 0.5) / 1.7320508075688772
|
48
|
+
end
|
49
|
+
|
50
|
+
# Difference in the two colors' hue
|
51
|
+
def diff_hue(other)
|
52
|
+
other = other.to_rgb
|
53
|
+
((self.r - other.r).abs +
|
54
|
+
(self.g - other.g).abs +
|
55
|
+
(self.b - other.b).abs) / 3
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- ruby encoding: utf-8 -*-
|
2
|
+
|
3
|
+
class Color::RGB
|
4
|
+
# This namespace contains some RGB metallic colours suggested by Jim
|
5
|
+
# Freeze.
|
6
|
+
module Metallic; end
|
7
|
+
|
8
|
+
class << self
|
9
|
+
private
|
10
|
+
def metallic(rgb, *names)
|
11
|
+
__named_color(Metallic, new(*rgb), *names)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
metallic [0x99, 0x99, 0x99], :Aluminum
|
16
|
+
metallic [0xd9, 0x87, 0x19], :CoolCopper
|
17
|
+
metallic [0xb8, 0x73, 0x33], :Copper
|
18
|
+
metallic [0x4c, 0x4c, 0x4c], :Iron
|
19
|
+
metallic [0x19, 0x19, 0x19], :Lead
|
20
|
+
metallic [0xb3, 0xb3, 0xb3], :Magnesium
|
21
|
+
metallic [0xe6, 0xe6, 0xe6], :Mercury
|
22
|
+
metallic [0x80, 0x80, 0x80], :Nickel
|
23
|
+
metallic [0x60, 0x00, 0x00], :PolySilicon, :Poly
|
24
|
+
metallic [0xcc, 0xcc, 0xcc], :Silver
|
25
|
+
metallic [0x66, 0x66, 0x66], :Steel
|
26
|
+
metallic [0x7f, 0x7f, 0x7f], :Tin
|
27
|
+
metallic [0x33, 0x33, 0x33], :Tungsten
|
28
|
+
end
|