atome 0.5.7.0.3 → 0.3191
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of atome might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/README.md +5 -77
- data/Rakefile +7 -502
- data/app_builder_helpers/Rakefile +235 -0
- data/documentation/framework/enhance_atome.md +1 -1
- data/documentation/installation/atome_server.md +1 -66
- data/documentation/tutorials/tutorials.md +0 -7
- data/exe/atome +157 -819
- data/lib/atome/atome_native_extensions.rb +3 -0
- data/lib/atome/extensions/geolocation.rb +1 -1
- data/lib/atome/extensions/ping.rb +11 -10
- data/lib/atome/extensions/sha.rb +6 -8
- data/lib/atome/kernel/atome_genesis.rb +93 -0
- data/lib/atome/kernel/generators/shapes.rb +7 -0
- data/lib/atome/kernel/properties/geometry.rb +120 -0
- data/lib/atome/kernel/universe.rb +24 -295
- data/lib/atome/renderers/headless/headless.rb +0 -0
- data/lib/atome/renderers/headless/properties/generator.rb +0 -0
- data/lib/atome/renderers/opal/atome_opal_extensions.rb +4 -0
- data/lib/{platform_specific → atome/renderers}/opal/extensions/geolocation.rb +1 -1
- data/lib/atome/renderers/opal/extensions/ping.rb +13 -0
- data/lib/atome/renderers/opal/extensions/sha.rb +11 -0
- data/lib/atome/renderers/opal/opal_browser.rb +8 -0
- data/lib/{platform_specific → atome/renderers}/opal/opal_parser.rb +0 -1
- data/lib/atome/renderers/opal/properties/generator.rb +6 -0
- data/lib/atome/renderers/server/server.rb +0 -0
- data/lib/atome/version.rb +1 -2
- data/lib/atome.rb +16 -35
- data/sig/atome.rbs +0 -75
- data/vendor/assets/Guardfile +4 -0
- data/vendor/assets/Rakefile +2 -12
- data/vendor/assets/application/index.rb +2 -7
- data/vendor/assets/build/css/style.css +53 -0
- data/vendor/assets/build/index.html +24 -0
- data/vendor/assets/build/js/application.js +0 -0
- data/vendor/assets/build/js/third_parties/interact.min.js +4 -0
- data/vendor/assets/build/js/third_parties/popmotion.min.js +1 -0
- data/vendor/assets/examples/misc.rb +219 -0
- data/vendor/assets/examples/ping.rb +3 -0
- data/vendor/assets/examples/storage.rb +9 -0
- data/vendor/assets/examples/view_example.rb +21 -0
- data/vendor/assets/server/atome_server.rb +96 -33
- data/vendor/assets/server/config.ru +3 -8
- metadata +69 -512
- data/CHANGELOG.md +0 -21
- data/atome.gemspec +0 -100
- data/documentation/basic.md +0 -241
- data/documentation/deep learning/architecture.txt +0 -3763
- data/documentation/deep learning/atome.png +0 -0
- data/documentation/deep learning/basic_infos.txt +0 -289
- data/documentation/deep learning/example_of_users_code.rb +0 -1810
- data/documentation/deep learning/misc.txt +0 -24
- data/documentation/deep learning/ruby_js_example.rb +0 -272
- data/documentation/deep learning/wasm_script_help.text +0 -14
- data/documentation/installation/buiding_atome.md +0 -307
- data/lib/atome/atome.rb +0 -131
- data/lib/atome/extensions/atome.rb +0 -705
- data/lib/atome/extensions/mathematics.rb +0 -20
- data/lib/atome/genesis/atomes.rb +0 -109
- data/lib/atome/genesis/genesis.rb +0 -272
- data/lib/atome/genesis/particles/atome.rb +0 -4
- data/lib/atome/genesis/particles/communication.rb +0 -43
- data/lib/atome/genesis/particles/effect.rb +0 -14
- data/lib/atome/genesis/particles/event.rb +0 -344
- data/lib/atome/genesis/particles/geometry.rb +0 -31
- data/lib/atome/genesis/particles/hierarchy.rb +0 -105
- data/lib/atome/genesis/particles/identity.rb +0 -82
- data/lib/atome/genesis/particles/material.rb +0 -119
- data/lib/atome/genesis/particles/property.rb +0 -147
- data/lib/atome/genesis/particles/security.rb +0 -77
- data/lib/atome/genesis/particles/spatial.rb +0 -98
- data/lib/atome/genesis/particles/time.rb +0 -4
- data/lib/atome/genesis/particles/utility.rb +0 -261
- data/lib/atome/genesis/presets.rb +0 -10
- data/lib/atome/genesis/sparkle.rb +0 -217
- data/lib/atome/kernel/black_matter.rb +0 -22
- data/lib/atome/presets/atome.rb +0 -79
- data/lib/atome/utilities/color_helper/color/cmyk.rb +0 -263
- data/lib/atome/utilities/color_helper/color/css.rb +0 -7
- data/lib/atome/utilities/color_helper/color/grayscale.rb +0 -197
- data/lib/atome/utilities/color_helper/color/hsl.rb +0 -240
- data/lib/atome/utilities/color_helper/color/palette/adobecolor.rb +0 -260
- data/lib/atome/utilities/color_helper/color/palette/gimp.rb +0 -104
- data/lib/atome/utilities/color_helper/color/palette/monocontrast.rb +0 -164
- data/lib/atome/utilities/color_helper/color/palette.rb +0 -4
- data/lib/atome/utilities/color_helper/color/rgb/colors.rb +0 -167
- data/lib/atome/utilities/color_helper/color/rgb/contrast.rb +0 -57
- data/lib/atome/utilities/color_helper/color/rgb/metallic.rb +0 -28
- data/lib/atome/utilities/color_helper/color/rgb.rb +0 -715
- data/lib/atome/utilities/color_helper/color/yiq.rb +0 -62
- data/lib/atome/utilities/color_helper/color.rb +0 -415
- data/lib/atome/utilities/essentials.rb +0 -70
- data/lib/atome/utilities/sanitizer.rb +0 -13
- data/lib/atome/utilities/security.rb +0 -71
- data/lib/atome/utilities/utilities.rb +0 -656
- data/lib/atome_relative.rb +0 -39
- data/lib/molecules/_deprecated_examples/site.rb +0 -34
- data/lib/molecules/init.rb +0 -31
- data/lib/molecules/intuition/_deprecated_inputs.rb +0 -111
- data/lib/molecules/intuition/_deprecated_toolbox.rb +0 -282
- data/lib/molecules/intuition/utillities.rb +0 -408
- data/lib/platform_specific/opal/atome_opal_extensions.rb +0 -11
- data/lib/platform_specific/opal/extensions/color.rb +0 -30
- data/lib/platform_specific/opal/extensions/js.rb +0 -20
- data/lib/platform_specific/opal/extensions/object.rb +0 -6
- data/lib/platform_specific/opal/extensions/ping.rb +0 -31
- data/lib/platform_specific/opal/extensions/sha.rb +0 -25
- data/lib/platform_specific/opal/opal.rb +0 -5
- data/lib/platform_specific/wasm/atome_wasm_extensions.rb +0 -11
- data/lib/renderers/headless/headless.rb +0 -18
- data/lib/renderers/headless/index.rb +0 -6
- data/lib/renderers/headless/index_relative.rb +0 -6
- data/lib/renderers/headless/utility.rb +0 -6
- data/lib/renderers/html/atome.rb +0 -2
- data/lib/renderers/html/atome_html.rb +0 -22
- data/lib/renderers/html/communication.rb +0 -3
- data/lib/renderers/html/effect.rb +0 -51
- data/lib/renderers/html/event.rb +0 -59
- data/lib/renderers/html/geometry.rb +0 -49
- data/lib/renderers/html/hierarchy.rb +0 -248
- data/lib/renderers/html/html.rb +0 -1688
- data/lib/renderers/html/identity.rb +0 -104
- data/lib/renderers/html/index.rb +0 -19
- data/lib/renderers/html/index_relative.rb +0 -20
- data/lib/renderers/html/material.rb +0 -88
- data/lib/renderers/html/property.rb +0 -52
- data/lib/renderers/html/security.rb +0 -1
- data/lib/renderers/html/spatial.rb +0 -75
- data/lib/renderers/html/time.rb +0 -1
- data/lib/renderers/html/utility.rb +0 -170
- data/lib/renderers/renderer.rb +0 -16
- data/lib/renderers/server/index.rb +0 -4
- data/lib/renderers/server/index_relative.rb +0 -4
- data/lib/renderers/server/utility.rb +0 -4
- data/sig/atome_js.rbs +0 -1
- data/sig/batch.rbs +0 -7
- data/sig/browser_helper.rbs +0 -14
- data/sig/essentials.rbs +0 -11
- data/sig/genesis.rbs +0 -3
- data/sig/global_variables.rbs +0 -1
- data/sig/matrix.rbs +0 -5
- data/sig/object.rbs +0 -7
- data/sig/universe.rbs +0 -3
- data/src/utilities/host_mode.rb +0 -5
- data/vendor/assets/application/examples/affect.rb +0 -8
- data/vendor/assets/application/examples/aid.rb +0 -10
- data/vendor/assets/application/examples/allow_copy.rb +0 -13
- data/vendor/assets/application/examples/allow_system_right_click.rb +0 -16
- data/vendor/assets/application/examples/alternate.rb +0 -36
- data/vendor/assets/application/examples/animation.rb +0 -91
- data/vendor/assets/application/examples/apply.rb +0 -8
- data/vendor/assets/application/examples/atome.rb +0 -5
- data/vendor/assets/application/examples/atome_particle_validation.rb +0 -7
- data/vendor/assets/application/examples/atome_sparkle_use.rb +0 -6
- data/vendor/assets/application/examples/atomizer.rb +0 -86
- data/vendor/assets/application/examples/attach.rb +0 -34
- data/vendor/assets/application/examples/attached.rb +0 -45
- data/vendor/assets/application/examples/b64_to_image.rb +0 -9
- data/vendor/assets/application/examples/basic_understanding.rb +0 -54
- data/vendor/assets/application/examples/behavior.rb +0 -32
- data/vendor/assets/application/examples/blur.rb +0 -26
- data/vendor/assets/application/examples/border.rb +0 -75
- data/vendor/assets/application/examples/browse.rb +0 -17
- data/vendor/assets/application/examples/categories.rb +0 -5
- data/vendor/assets/application/examples/category.rb +0 -16
- data/vendor/assets/application/examples/center.rb +0 -7
- data/vendor/assets/application/examples/clear.rb +0 -96
- data/vendor/assets/application/examples/clones&monitoring.rb +0 -105
- data/vendor/assets/application/examples/code.rb +0 -13
- data/vendor/assets/application/examples/color.rb +0 -54
- data/vendor/assets/application/examples/compute.rb +0 -16
- data/vendor/assets/application/examples/console.rb +0 -4
- data/vendor/assets/application/examples/convert.rb +0 -163
- data/vendor/assets/application/examples/copy.rb +0 -25
- data/vendor/assets/application/examples/copybck.rb +0 -68
- data/vendor/assets/application/examples/css.rb +0 -6
- data/vendor/assets/application/examples/database_handling.rb +0 -39
- data/vendor/assets/application/examples/debug.rb +0 -78
- data/vendor/assets/application/examples/delete.rb +0 -105
- data/vendor/assets/application/examples/dig.rb +0 -13
- data/vendor/assets/application/examples/display.rb +0 -279
- data/vendor/assets/application/examples/display_bck.rb +0 -164
- data/vendor/assets/application/examples/drag.rb +0 -54
- data/vendor/assets/application/examples/drop.rb +0 -35
- data/vendor/assets/application/examples/duplicate.rb +0 -70
- data/vendor/assets/application/examples/edit.rb +0 -24
- data/vendor/assets/application/examples/encode.rb +0 -6
- data/vendor/assets/application/examples/encrypt.rb +0 -6
- data/vendor/assets/application/examples/example.rb +0 -27
- data/vendor/assets/application/examples/executor.rb +0 -36
- data/vendor/assets/application/examples/file.rb +0 -16
- data/vendor/assets/application/examples/fill.rb +0 -23
- data/vendor/assets/application/examples/find.rb +0 -158
- data/vendor/assets/application/examples/fit.rb +0 -26
- data/vendor/assets/application/examples/fonts.rb +0 -15
- data/vendor/assets/application/examples/generator_and_build.rb +0 -15
- data/vendor/assets/application/examples/getter.rb +0 -16
- data/vendor/assets/application/examples/grab.rb +0 -14
- data/vendor/assets/application/examples/gradient.rb +0 -40
- data/vendor/assets/application/examples/group.rb +0 -44
- data/vendor/assets/application/examples/help.rb +0 -17
- data/vendor/assets/application/examples/hierarchy.rb +0 -21
- data/vendor/assets/application/examples/history.rb +0 -32
- data/vendor/assets/application/examples/holder.rb +0 -62
- data/vendor/assets/application/examples/hypertext.rb +0 -113
- data/vendor/assets/application/examples/image.rb +0 -5
- data/vendor/assets/application/examples/import.rb +0 -33
- data/vendor/assets/application/examples/increment.rb +0 -23
- data/vendor/assets/application/examples/infos.rb +0 -10
- data/vendor/assets/application/examples/input.rb +0 -34
- data/vendor/assets/application/examples/int8.rb +0 -17
- data/vendor/assets/application/examples/js&ruby.rb +0 -18
- data/vendor/assets/application/examples/keyboard.rb +0 -59
- data/vendor/assets/application/examples/layout.rb +0 -38
- data/vendor/assets/application/examples/list.rb +0 -72
- data/vendor/assets/application/examples/localstorage.rb +0 -19
- data/vendor/assets/application/examples/login.rb +0 -84
- data/vendor/assets/application/examples/markup.rb +0 -4
- data/vendor/assets/application/examples/match.rb +0 -115
- data/vendor/assets/application/examples/matrix.rb +0 -118
- data/vendor/assets/application/examples/monitor.rb +0 -14
- data/vendor/assets/application/examples/on_resize.rb +0 -7
- data/vendor/assets/application/examples/on_the_fly_ruby_code_loading.rb +0 -9
- data/vendor/assets/application/examples/online.rb +0 -3
- data/vendor/assets/application/examples/opacity.rb +0 -9
- data/vendor/assets/application/examples/over.rb +0 -29
- data/vendor/assets/application/examples/paint.rb +0 -29
- data/vendor/assets/application/examples/particles.rb +0 -4
- data/vendor/assets/application/examples/percent_to_px.rb +0 -4
- data/vendor/assets/application/examples/play.rb +0 -50
- data/vendor/assets/application/examples/preset.rb +0 -33
- data/vendor/assets/application/examples/random.rb +0 -42
- data/vendor/assets/application/examples/raw_html.rb +0 -48
- data/vendor/assets/application/examples/read.rb +0 -13
- data/vendor/assets/application/examples/recorder.rb +0 -74
- data/vendor/assets/application/examples/refresh.rb +0 -62
- data/vendor/assets/application/examples/remove.rb +0 -60
- data/vendor/assets/application/examples/repeat.rb +0 -26
- data/vendor/assets/application/examples/resize.rb +0 -17
- data/vendor/assets/application/examples/scroll.rb +0 -11
- data/vendor/assets/application/examples/security.rb +0 -76
- data/vendor/assets/application/examples/select_text.rb +0 -18
- data/vendor/assets/application/examples/selected.rb +0 -35
- data/vendor/assets/application/examples/server.rb +0 -24
- data/vendor/assets/application/examples/shadow.rb +0 -60
- data/vendor/assets/application/examples/shapes.rb +0 -6
- data/vendor/assets/application/examples/shortcut.rb +0 -25
- data/vendor/assets/application/examples/site.rb +0 -41
- data/vendor/assets/application/examples/size.rb +0 -17
- data/vendor/assets/application/examples/sliders.rb +0 -17
- data/vendor/assets/application/examples/smooth.rb +0 -9
- data/vendor/assets/application/examples/style.rb +0 -4
- data/vendor/assets/application/examples/sub_atome_manipulation.rb +0 -20
- data/vendor/assets/application/examples/svg_img_to_vector.rb +0 -6
- data/vendor/assets/application/examples/svg_vectorizer.rb +0 -21
- data/vendor/assets/application/examples/sync.rb +0 -38
- data/vendor/assets/application/examples/table.rb +0 -76
- data/vendor/assets/application/examples/tagged.rb +0 -24
- data/vendor/assets/application/examples/terminal.rb +0 -4
- data/vendor/assets/application/examples/test.rb +0 -584
- data/vendor/assets/application/examples/text.rb +0 -5
- data/vendor/assets/application/examples/tick.rb +0 -29
- data/vendor/assets/application/examples/tools.rb +0 -666
- data/vendor/assets/application/examples/touch.rb +0 -41
- data/vendor/assets/application/examples/type_mutation.rb +0 -18
- data/vendor/assets/application/examples/unit.rb +0 -14
- data/vendor/assets/application/examples/universe.rb +0 -8
- data/vendor/assets/application/examples/vector.rb +0 -37
- data/vendor/assets/application/examples/video.rb +0 -14
- data/vendor/assets/application/examples/wait.rb +0 -6
- data/vendor/assets/application/examples/www.rb +0 -10
- data/vendor/assets/server/atome_server_wasm.rb +0 -54
- data/vendor/assets/server/capture.rb +0 -10
- data/vendor/assets/server/database.rb +0 -63
- data/vendor/assets/server/eDen.rb +0 -302
- data/vendor/assets/server/extensions.rb +0 -13
- data/vendor/assets/src/css/style.css +0 -167
- data/vendor/assets/src/index.html +0 -45
- data/vendor/assets/src/index_opal.html +0 -40
- data/vendor/assets/src/index_server.html +0 -38
- data/vendor/assets/src/index_server_wasm.html +0 -45
- data/vendor/assets/src/index_wasm.html +0 -50
- data/vendor/assets/src/js/atome/atome.js +0 -506
- data/vendor/assets/src/js/atome/atome_helpers/add_font.js +0 -46
- data/vendor/assets/src/js/atome/atome_helpers/atome_animate.js +0 -65
- data/vendor/assets/src/js/atome/atome_helpers/atome_drag.js +0 -124
- data/vendor/assets/src/js/atome/atome_helpers/atome_drop.js +0 -12
- data/vendor/assets/src/js/atome/atome_helpers/atome_events.js +0 -171
- data/vendor/assets/src/js/atome/atome_helpers/atome_over.js +0 -43
- data/vendor/assets/src/js/atome/atome_helpers/atome_sort.js +0 -20
- data/vendor/assets/src/js/atome/atome_helpers/atome_time.js +0 -10
- data/vendor/assets/src/js/atome/atome_helpers/atome_video.js +0 -12
- data/vendor/assets/src/js/atome/atome_helpers/communication.js +0 -35
- data/vendor/assets/src/js/atome/atome_helpers/file.js +0 -12
- data/vendor/assets/src/js/atome/specific/opal.js +0 -111
- data/vendor/assets/src/js/atome/specific/wasm.js +0 -123
- data/vendor/assets/src/js/molecules/web.js +0 -4
- data/vendor/assets/src/js/third_parties/browser.script.iife.min.js +0 -13
- data/vendor/assets/src/js/third_parties/fabric.min.js +0 -1
- data/vendor/assets/src/js/third_parties/html-to-image.min.js +0 -2
- data/vendor/assets/src/js/third_parties/interact.min.js +0 -3
- data/vendor/assets/src/js/third_parties/jsencrypt.min.js +0 -2
- data/vendor/assets/src/js/third_parties/papaparse.min.js +0 -7
- data/vendor/assets/src/js/third_parties/popmotion.min.js +0 -1
- data/vendor/assets/src/js/third_parties/sortable.min.js +0 -2
- data/vendor/assets/src/js/third_parties/three.min.js +0 -6
- data/vendor/assets/src/js/third_parties/w3color.js +0 -646
- data/vendor/assets/src/js/third_parties/wad.min.js +0 -9
- data/vendor/assets/src/js/third_parties/zim.min.js +0 -1
- data/vendor/assets/src/medias/audios/audio_missing.wav +0 -0
- data/vendor/assets/src/medias/audios/clap.wav +0 -0
- data/vendor/assets/src/medias/audios/cowbell.wav +0 -0
- data/vendor/assets/src/medias/audios/hihat.wav +0 -0
- data/vendor/assets/src/medias/audios/kick.wav +0 -0
- data/vendor/assets/src/medias/audios/riff.m4a +0 -0
- data/vendor/assets/src/medias/audios/snare.wav +0 -0
- data/vendor/assets/src/medias/audios/tom.wav +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/LICENSE.txt +0 -202
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-Black.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-Bold.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-Italic.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-Light.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-Medium.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-Regular.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-Thin.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/LICENSE.txt +0 -202
- data/vendor/assets/src/medias/fonts/Roboto_Slab/README.txt +0 -71
- data/vendor/assets/src/medias/fonts/Roboto_Slab/RobotoSlab-VariableFont_wght.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Black.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Bold.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraBold.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraLight.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Light.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Medium.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Regular.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-SemiBold.ttf +0 -0
- data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Thin.ttf +0 -0
- data/vendor/assets/src/medias/images/atome.svg +0 -12
- data/vendor/assets/src/medias/images/ballanim.png +0 -0
- data/vendor/assets/src/medias/images/blank.png +0 -0
- data/vendor/assets/src/medias/images/green_planet.png +0 -0
- data/vendor/assets/src/medias/images/icons/Lowpass.svg +0 -8
- data/vendor/assets/src/medias/images/icons/activate.svg +0 -3
- data/vendor/assets/src/medias/images/icons/audio.svg +0 -7
- data/vendor/assets/src/medias/images/icons/band_pass.svg +0 -8
- data/vendor/assets/src/medias/images/icons/clear.svg +0 -5
- data/vendor/assets/src/medias/images/icons/color.svg +0 -5
- data/vendor/assets/src/medias/images/icons/copy.svg +0 -8
- data/vendor/assets/src/medias/images/icons/create.svg +0 -3
- data/vendor/assets/src/medias/images/icons/delete.svg +0 -8
- data/vendor/assets/src/medias/images/icons/edit-.svg +0 -4
- data/vendor/assets/src/medias/images/icons/edit.svg +0 -4
- data/vendor/assets/src/medias/images/icons/edition.svg +0 -4
- data/vendor/assets/src/medias/images/icons/email.svg +0 -13
- data/vendor/assets/src/medias/images/icons/equalizer-.svg +0 -5
- data/vendor/assets/src/medias/images/icons/equalizer.svg +0 -5
- data/vendor/assets/src/medias/images/icons/filter.svg +0 -4
- data/vendor/assets/src/medias/images/icons/folder.svg +0 -4
- data/vendor/assets/src/medias/images/icons/group.svg +0 -6
- data/vendor/assets/src/medias/images/icons/hamburger.svg +0 -8
- data/vendor/assets/src/medias/images/icons/high_pass.svg +0 -5
- data/vendor/assets/src/medias/images/icons/link.svg +0 -4
- data/vendor/assets/src/medias/images/icons/load.svg +0 -4
- data/vendor/assets/src/medias/images/icons/low_pass.svg +0 -5
- data/vendor/assets/src/medias/images/icons/mail_gray.svg +0 -6
- data/vendor/assets/src/medias/images/icons/mail_green.svg +0 -6
- data/vendor/assets/src/medias/images/icons/mail_orange.svg +0 -6
- data/vendor/assets/src/medias/images/icons/microphone.svg +0 -7
- data/vendor/assets/src/medias/images/icons/midi_in.svg +0 -4
- data/vendor/assets/src/medias/images/icons/midi_out.svg +0 -4
- data/vendor/assets/src/medias/images/icons/modules.svg +0 -11
- data/vendor/assets/src/medias/images/icons/paste.svg +0 -4
- data/vendor/assets/src/medias/images/icons/pause.svg +0 -5
- data/vendor/assets/src/medias/images/icons/play.svg +0 -7
- data/vendor/assets/src/medias/images/icons/record.svg +0 -4
- data/vendor/assets/src/medias/images/icons/save.svg +0 -5
- data/vendor/assets/src/medias/images/icons/select--.svg +0 -4
- data/vendor/assets/src/medias/images/icons/select-.svg +0 -5
- data/vendor/assets/src/medias/images/icons/select-all.svg +0 -4
- data/vendor/assets/src/medias/images/icons/select.svg +0 -4
- data/vendor/assets/src/medias/images/icons/settings.svg +0 -5
- data/vendor/assets/src/medias/images/icons/settings0.svg +0 -2
- data/vendor/assets/src/medias/images/icons/settings1.svg +0 -17
- data/vendor/assets/src/medias/images/icons/settings2.svg +0 -25
- data/vendor/assets/src/medias/images/icons/settings_old.svg +0 -6
- data/vendor/assets/src/medias/images/icons/shape.svg +0 -7
- data/vendor/assets/src/medias/images/icons/speaker.svg +0 -6
- data/vendor/assets/src/medias/images/icons/stop.svg +0 -4
- data/vendor/assets/src/medias/images/icons/tool.svg +0 -7
- data/vendor/assets/src/medias/images/icons/tools.svg +0 -9
- data/vendor/assets/src/medias/images/icons/undo.svg +0 -4
- data/vendor/assets/src/medias/images/icons/undo2.svg +0 -4
- data/vendor/assets/src/medias/images/icons/validate.svg +0 -9
- data/vendor/assets/src/medias/images/icons/vie.svg +0 -3
- data/vendor/assets/src/medias/images/icons/wave-saw.svg +0 -3
- data/vendor/assets/src/medias/images/icons/wave-sine.svg +0 -3
- data/vendor/assets/src/medias/images/icons/wave-square-.svg +0 -4
- data/vendor/assets/src/medias/images/icons/wave-square.svg +0 -3
- data/vendor/assets/src/medias/images/icons/wave-triangle.svg +0 -3
- data/vendor/assets/src/medias/images/icons/waveform-.svg +0 -4
- data/vendor/assets/src/medias/images/icons/waveform.svg +0 -7
- data/vendor/assets/src/medias/images/logos/Facebook.svg +0 -8
- data/vendor/assets/src/medias/images/logos/GitHub Black.svg +0 -7
- data/vendor/assets/src/medias/images/logos/GitHub.svg +0 -7
- data/vendor/assets/src/medias/images/logos/LinkedIn-full.svg +0 -109
- data/vendor/assets/src/medias/images/logos/LinkedIn.svg +0 -11
- data/vendor/assets/src/medias/images/logos/Orange/Facebook.svg +0 -8
- data/vendor/assets/src/medias/images/logos/Orange/TikTok.svg +0 -11
- data/vendor/assets/src/medias/images/logos/Orange/Twitter.svg +0 -8
- data/vendor/assets/src/medias/images/logos/Orange/instagram.svg +0 -8
- data/vendor/assets/src/medias/images/logos/Orange/vimeo.svg +0 -8
- data/vendor/assets/src/medias/images/logos/Orange/youtube.svg +0 -7
- data/vendor/assets/src/medias/images/logos/TikTok.svg +0 -11
- data/vendor/assets/src/medias/images/logos/Twitter.svg +0 -35
- data/vendor/assets/src/medias/images/logos/X.svg +0 -5
- data/vendor/assets/src/medias/images/logos/YouTube.svg +0 -1
- data/vendor/assets/src/medias/images/logos/apple.svg +0 -4
- data/vendor/assets/src/medias/images/logos/atome.svg +0 -12
- data/vendor/assets/src/medias/images/logos/freebsd.png +0 -0
- data/vendor/assets/src/medias/images/logos/freebsd.svg +0 -8
- data/vendor/assets/src/medias/images/logos/gray/Facebook.svg +0 -8
- data/vendor/assets/src/medias/images/logos/gray/TikTok.svg +0 -11
- data/vendor/assets/src/medias/images/logos/gray/Twitter.svg +0 -8
- data/vendor/assets/src/medias/images/logos/gray/instagram.svg +0 -8
- data/vendor/assets/src/medias/images/logos/gray/vimeo.svg +0 -8
- data/vendor/assets/src/medias/images/logos/gray/youtube.svg +0 -7
- data/vendor/assets/src/medias/images/logos/gray/youtube2.svg +0 -13
- data/vendor/assets/src/medias/images/logos/instagram.svg +0 -6
- data/vendor/assets/src/medias/images/logos/tiktok_back.svg +0 -1
- data/vendor/assets/src/medias/images/logos/vimeo.svg +0 -17
- data/vendor/assets/src/medias/images/noise.svg +0 -17
- data/vendor/assets/src/medias/images/red_planet.png +0 -0
- data/vendor/assets/src/medias/images/tile.png +0 -0
- data/vendor/assets/src/medias/texts/lorem.txt +0 -1
- data/vendor/assets/src/medias/utils/infos/color.rb +0 -29
- data/vendor/assets/src/medias/utils/infos/width.rb +0 -25
- data/vendor/assets/src/medias/videos/video_missing.mp4 +0 -0
- data/vendor/assets/src-tauri/.gitignore +0 -4
- data/vendor/assets/src-tauri/Cargo.toml +0 -27
- data/vendor/assets/src-tauri/build.rs +0 -3
- data/vendor/assets/src-tauri/icons/128x128.png +0 -0
- data/vendor/assets/src-tauri/icons/128x128@2x.png +0 -0
- data/vendor/assets/src-tauri/icons/32x32.png +0 -0
- data/vendor/assets/src-tauri/icons/Square107x107Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/Square142x142Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/Square150x150Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/Square284x284Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/Square30x30Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/Square310x310Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/Square44x44Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/Square71x71Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/Square89x89Logo.png +0 -0
- data/vendor/assets/src-tauri/icons/StoreLogo.png +0 -0
- data/vendor/assets/src-tauri/icons/icon.icns +0 -0
- data/vendor/assets/src-tauri/icons/icon.ico +0 -0
- data/vendor/assets/src-tauri/icons/icon.png +0 -0
- data/vendor/assets/src-tauri/src/main.rs +0 -71
- data/vendor/assets/src-tauri/tauri.conf.json +0 -70
- data/vendor/assets/src-wasm/wasm/wasi-vfs-osx_arm +0 -0
- data/vendor/assets/src-wasm/wasm/wasi-vfs-osx_x86 +0 -0
- data/vendor/assets/src-wasm/wasm/wasi-vfs-unix +0 -0
- data/vendor/assets/src-wasm/wasm/wasi-vfs.exe +0 -0
- /data/vendor/assets/{src → build}/favicon.ico +0 -0
- /data/vendor/assets/{src/js/third_parties → build/js}/ping.min.js +0 -0
- /data/vendor/assets/{src → build}/js/third_parties/interact.min.js.map +0 -0
- /data/vendor/assets/{src → build}/js/third_parties/sha256.min.js +0 -0
@@ -1,715 +0,0 @@
|
|
1
|
-
# An RGB colour object.
|
2
|
-
class Color::RGB
|
3
|
-
include Color
|
4
|
-
|
5
|
-
# The format of a DeviceRGB colour for PDF. In color-tools 2.0 this will
|
6
|
-
# be removed from this package and added back as a modification by the
|
7
|
-
# PDF::Writer package.
|
8
|
-
PDF_FORMAT_STR = "%.3f %.3f %.3f %s"
|
9
|
-
|
10
|
-
# Coerces the other Color object into RGB.
|
11
|
-
def coerce(other)
|
12
|
-
other.to_rgb
|
13
|
-
end
|
14
|
-
|
15
|
-
# Creates an RGB colour object from the standard range 0..255.
|
16
|
-
#
|
17
|
-
# Color::RGB.new(32, 64, 128)
|
18
|
-
# Color::RGB.new(0x20, 0x40, 0x80)
|
19
|
-
def initialize(r = 0, g = 0, b = 0, radix = 255.0, &block) # :yields self:
|
20
|
-
@r, @g, @b = [ r, g, b ].map { |v| Color.normalize(v / radix) }
|
21
|
-
block.call(self) if block
|
22
|
-
end
|
23
|
-
|
24
|
-
# Present the colour as a DeviceRGB fill colour string for PDF. This will
|
25
|
-
# be removed from the default package in color-tools 2.0.
|
26
|
-
def pdf_fill
|
27
|
-
PDF_FORMAT_STR % [ @r, @g, @b, "rg" ]
|
28
|
-
end
|
29
|
-
|
30
|
-
# Present the colour as a DeviceRGB stroke colour string for PDF. This
|
31
|
-
# will be removed from the default package in color-tools 2.0.
|
32
|
-
def pdf_stroke
|
33
|
-
PDF_FORMAT_STR % [ @r, @g, @b, "RG" ]
|
34
|
-
end
|
35
|
-
|
36
|
-
# Present the colour as an RGB hex triplet.
|
37
|
-
def hex
|
38
|
-
r = (@r * 255).round
|
39
|
-
r = 255 if r > 255
|
40
|
-
|
41
|
-
g = (@g * 255).round
|
42
|
-
g = 255 if g > 255
|
43
|
-
|
44
|
-
b = (@b * 255).round
|
45
|
-
b = 255 if b > 255
|
46
|
-
|
47
|
-
"%02x%02x%02x" % [ r, g, b ]
|
48
|
-
end
|
49
|
-
|
50
|
-
# Present the colour as an HTML/CSS colour string.
|
51
|
-
def html
|
52
|
-
"##{hex}"
|
53
|
-
end
|
54
|
-
|
55
|
-
# Present the colour as an RGB HTML/CSS colour string (e.g., "rgb(0%, 50%,
|
56
|
-
# 100%)"). Note that this will perform a #to_rgb operation using the
|
57
|
-
# default conversion formula.
|
58
|
-
def css_rgb
|
59
|
-
"rgb(%3.2f%%, %3.2f%%, %3.2f%%)" % [ red_p, green_p, blue_p ]
|
60
|
-
end
|
61
|
-
|
62
|
-
# Present the colour as an RGBA (with an optional alpha that defaults to 1)
|
63
|
-
# HTML/CSS colour string (e.g.,"rgb(0%, 50%, 100%, 1)"). Note that this will
|
64
|
-
# perform a #to_rgb operation using the default conversion formula.
|
65
|
-
#
|
66
|
-
# Color::RGB.by_hex('ff0000').css_rgba
|
67
|
-
# => 'rgba(100.00%, 0.00%, 0.00%, 1.00)'
|
68
|
-
# Color::RGB.by_hex('ff0000').css_rgba(0.2)
|
69
|
-
# => 'rgba(100.00%, 0.00%, 0.00%, 0.20)'
|
70
|
-
def css_rgba(alpha = 1)
|
71
|
-
"rgba(%3.2f%%, %3.2f%%, %3.2f%%, %3.2f)" % [ red_p, green_p, blue_p, alpha ]
|
72
|
-
end
|
73
|
-
|
74
|
-
# Present the colour as an HSL HTML/CSS colour string (e.g., "hsl(180,
|
75
|
-
# 25%, 35%)"). Note that this will perform a #to_hsl operation using the
|
76
|
-
# default conversion formula.
|
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 using the default conversion formula.
|
84
|
-
def css_hsla
|
85
|
-
to_hsl.css_hsla
|
86
|
-
end
|
87
|
-
|
88
|
-
# Converts the RGB colour to CMYK. Most colour experts strongly suggest
|
89
|
-
# that this is not a good idea (some even suggesting that it's a very bad
|
90
|
-
# idea). CMYK represents additive percentages of inks on white paper,
|
91
|
-
# whereas RGB represents mixed colour intensities on a black screen.
|
92
|
-
#
|
93
|
-
# However, the colour conversion can be done. The basic method is
|
94
|
-
# multi-step:
|
95
|
-
#
|
96
|
-
# 1. Convert the R, G, and B components to C, M, and Y components.
|
97
|
-
# c = 1.0 - r
|
98
|
-
# m = 1.0 - g
|
99
|
-
# y = 1.0 - b
|
100
|
-
# 2. Compute the minimum amount of black (K) required to smooth the colour
|
101
|
-
# in inks.
|
102
|
-
# k = min(c, m, y)
|
103
|
-
# 3. Perform undercolour removal on the C, M, and Y components of the
|
104
|
-
# colours because less of each colour is needed for each bit of black.
|
105
|
-
# Also, regenerate the black (K) based on the undercolour removal so
|
106
|
-
# that the colour is more accurately represented in ink.
|
107
|
-
# c = min(1.0, max(0.0, c - UCR(k)))
|
108
|
-
# m = min(1.0, max(0.0, m - UCR(k)))
|
109
|
-
# y = min(1.0, max(0.0, y - UCR(k)))
|
110
|
-
# k = min(1.0, max(0.0, BG(k)))
|
111
|
-
#
|
112
|
-
# The undercolour removal function and the black generation functions
|
113
|
-
# return a value based on the brightness of the RGB colour.
|
114
|
-
def to_cmyk
|
115
|
-
c = 1.0 - @r.to_f
|
116
|
-
m = 1.0 - @g.to_f
|
117
|
-
y = 1.0 - @b.to_f
|
118
|
-
|
119
|
-
k = [c, m, y].min
|
120
|
-
k = k - (k * brightness)
|
121
|
-
|
122
|
-
c = [1.0, [0.0, c - k].max].min
|
123
|
-
m = [1.0, [0.0, m - k].max].min
|
124
|
-
y = [1.0, [0.0, y - k].max].min
|
125
|
-
k = [1.0, [0.0, k].max].min
|
126
|
-
|
127
|
-
Color::CMYK.from_fraction(c, m, y, k)
|
128
|
-
end
|
129
|
-
|
130
|
-
def to_rgb(ignored = nil)
|
131
|
-
self
|
132
|
-
end
|
133
|
-
|
134
|
-
# Returns the YIQ (NTSC) colour encoding of the RGB value.
|
135
|
-
def to_yiq
|
136
|
-
y = (@r * 0.299) + (@g * 0.587) + (@b * 0.114)
|
137
|
-
i = (@r * 0.596) + (@g * -0.275) + (@b * -0.321)
|
138
|
-
q = (@r * 0.212) + (@g * -0.523) + (@b * 0.311)
|
139
|
-
Color::YIQ.from_fraction(y, i, q)
|
140
|
-
end
|
141
|
-
|
142
|
-
# Returns the HSL colour encoding of the RGB value. The conversions here
|
143
|
-
# are based on forumlas from http://www.easyrgb.com/math.php and
|
144
|
-
# elsewhere.
|
145
|
-
def to_hsl
|
146
|
-
min = [ @r, @g, @b ].min
|
147
|
-
max = [ @r, @g, @b ].max
|
148
|
-
delta = (max - min).to_f
|
149
|
-
|
150
|
-
lum = (max + min) / 2.0
|
151
|
-
|
152
|
-
if Color.near_zero?(delta) # close to 0.0, so it's a grey
|
153
|
-
hue = 0
|
154
|
-
sat = 0
|
155
|
-
else
|
156
|
-
if Color.near_zero_or_less?(lum - 0.5)
|
157
|
-
sat = delta / (max + min).to_f
|
158
|
-
else
|
159
|
-
sat = delta / (2 - max - min).to_f
|
160
|
-
end
|
161
|
-
|
162
|
-
# This is based on the conversion algorithm from
|
163
|
-
# http://en.wikipedia.org/wiki/HSV_color_space#Conversion_from_RGB_to_HSL_or_HSV
|
164
|
-
# Contributed by Adam Johnson
|
165
|
-
sixth = 1 / 6.0
|
166
|
-
if @r == max # Color.near_zero_or_less?(@r - max)
|
167
|
-
hue = (sixth * ((@g - @b) / delta))
|
168
|
-
hue += 1.0 if @g < @b
|
169
|
-
elsif @g == max # Color.near_zero_or_less(@g - max)
|
170
|
-
hue = (sixth * ((@b - @r) / delta)) + (1.0 / 3.0)
|
171
|
-
elsif @b == max # Color.near_zero_or_less?(@b - max)
|
172
|
-
hue = (sixth * ((@r - @g) / delta)) + (2.0 / 3.0)
|
173
|
-
end
|
174
|
-
|
175
|
-
hue += 1 if hue < 0
|
176
|
-
hue -= 1 if hue > 1
|
177
|
-
end
|
178
|
-
Color::HSL.from_fraction(hue, sat, lum)
|
179
|
-
end
|
180
|
-
|
181
|
-
# Returns the XYZ colour encoding of the value. Based on the
|
182
|
-
# {RGB to XYZ}[http://www.brucelindbloom.com/index.html?Eqn_RGB_to_XYZ.html]
|
183
|
-
# formula presented by Bruce Lindbloom.
|
184
|
-
#
|
185
|
-
# Currently only the sRGB colour space is supported.
|
186
|
-
def to_xyz(color_space = :sRGB)
|
187
|
-
unless color_space.to_s.downcase == 'srgb'
|
188
|
-
raise ArgumentError, "Unsupported colour space #{color_space}."
|
189
|
-
end
|
190
|
-
|
191
|
-
# Inverse sRGB companding. Linearizes RGB channels with respect to
|
192
|
-
# energy.
|
193
|
-
r, g, b = [ @r, @g, @b ].map { |v|
|
194
|
-
if (v > 0.04045)
|
195
|
-
(((v + 0.055) / 1.055) ** 2.4) * 100
|
196
|
-
else
|
197
|
-
(v / 12.92) * 100
|
198
|
-
end
|
199
|
-
}
|
200
|
-
|
201
|
-
# Convert using the RGB/XYZ matrix at:
|
202
|
-
# http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html#WSMatrices
|
203
|
-
{
|
204
|
-
:x => (r * 0.4124564 + g * 0.3575761 + b * 0.1804375),
|
205
|
-
:y => (r * 0.2126729 + g * 0.7151522 + b * 0.0721750),
|
206
|
-
:z => (r * 0.0193339 + g * 0.1191920 + b * 0.9503041)
|
207
|
-
}
|
208
|
-
end
|
209
|
-
|
210
|
-
# Returns the L*a*b* colour encoding of the value via the XYZ colour
|
211
|
-
# encoding. Based on the
|
212
|
-
# {XYZ to Lab}[http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_Lab.html]
|
213
|
-
# formula presented by Bruce Lindbloom.
|
214
|
-
#
|
215
|
-
# Currently only the sRGB colour space is supported and defaults to using
|
216
|
-
# a D65 reference white.
|
217
|
-
def to_lab(color_space = :sRGB, reference_white = [ 95.047, 100.00, 108.883 ])
|
218
|
-
xyz = to_xyz
|
219
|
-
|
220
|
-
# Calculate the ratio of the XYZ values to the reference white.
|
221
|
-
# http://www.brucelindbloom.com/index.html?Equations.html
|
222
|
-
xr = xyz[:x] / reference_white[0]
|
223
|
-
yr = xyz[:y] / reference_white[1]
|
224
|
-
zr = xyz[:z] / reference_white[2]
|
225
|
-
|
226
|
-
# NOTE: This should be using Rational instead of floating point values,
|
227
|
-
# otherwise there will be discontinuities.
|
228
|
-
# http://www.brucelindbloom.com/LContinuity.html
|
229
|
-
epsilon = (216 / 24389.0)
|
230
|
-
kappa = (24389 / 27.0)
|
231
|
-
|
232
|
-
# And now transform
|
233
|
-
# http://en.wikipedia.org/wiki/Lab_color_space#Forward_transformation
|
234
|
-
# There is a brief explanation there as far as the nature of the calculations,
|
235
|
-
# as well as a much nicer looking modeling of the algebra.
|
236
|
-
fx, fy, fz = [ xr, yr, zr ].map { |t|
|
237
|
-
if (t > (epsilon))
|
238
|
-
t ** (1.0 / 3)
|
239
|
-
else # t <= epsilon
|
240
|
-
((kappa * t) + 16) / 116.0
|
241
|
-
# The 4/29 here is for when t = 0 (black). 4/29 * 116 = 16, and 16 -
|
242
|
-
# 16 = 0, which is the correct value for L* with black.
|
243
|
-
# ((1.0/3)*((29.0/6)**2) * t) + (4.0/29)
|
244
|
-
end
|
245
|
-
}
|
246
|
-
{
|
247
|
-
:L => ((116 * fy) - 16),
|
248
|
-
:a => (500 * (fx - fy)),
|
249
|
-
:b => (200 * (fy - fz))
|
250
|
-
}
|
251
|
-
end
|
252
|
-
|
253
|
-
# Mix the RGB hue with White so that the RGB hue is the specified
|
254
|
-
# percentage of the resulting colour. Strictly speaking, this isn't a
|
255
|
-
# darken_by operation.
|
256
|
-
def lighten_by(percent)
|
257
|
-
mix_with(White, percent)
|
258
|
-
end
|
259
|
-
|
260
|
-
# Mix the RGB hue with Black so that the RGB hue is the specified
|
261
|
-
# percentage of the resulting colour. Strictly speaking, this isn't a
|
262
|
-
# darken_by operation.
|
263
|
-
def darken_by(percent)
|
264
|
-
mix_with(Black, percent)
|
265
|
-
end
|
266
|
-
|
267
|
-
# Mix the mask colour (which must be an RGB object) with the current
|
268
|
-
# colour at the stated opacity percentage (0..100).
|
269
|
-
def mix_with(mask, opacity)
|
270
|
-
opacity /= 100.0
|
271
|
-
rgb = self.dup
|
272
|
-
|
273
|
-
rgb.r = (@r * opacity) + (mask.r * (1 - opacity))
|
274
|
-
rgb.g = (@g * opacity) + (mask.g * (1 - opacity))
|
275
|
-
rgb.b = (@b * opacity) + (mask.b * (1 - opacity))
|
276
|
-
|
277
|
-
rgb
|
278
|
-
end
|
279
|
-
|
280
|
-
# Returns the brightness value for a colour, a number between 0..1. Based
|
281
|
-
# on the Y value of YIQ encoding, representing luminosity, or perceived
|
282
|
-
# brightness.
|
283
|
-
#
|
284
|
-
# This may be modified in a future version of color-tools to use the
|
285
|
-
# luminosity value of HSL.
|
286
|
-
def brightness
|
287
|
-
to_yiq.y
|
288
|
-
end
|
289
|
-
# Convert to grayscale.
|
290
|
-
def to_grayscale
|
291
|
-
Color::GrayScale.from_fraction(to_hsl.l)
|
292
|
-
end
|
293
|
-
alias to_greyscale to_grayscale
|
294
|
-
|
295
|
-
# Returns a new colour with the brightness adjusted by the specified
|
296
|
-
# percentage. Negative percentages will darken the colour; positive
|
297
|
-
# percentages will brighten the colour.
|
298
|
-
#
|
299
|
-
# Color::RGB::DarkBlue.adjust_brightness(10)
|
300
|
-
# Color::RGB::DarkBlue.adjust_brightness(-10)
|
301
|
-
def adjust_brightness(percent)
|
302
|
-
percent = normalize_percent(percent)
|
303
|
-
hsl = to_hsl
|
304
|
-
hsl.l *= percent
|
305
|
-
hsl.to_rgb
|
306
|
-
end
|
307
|
-
|
308
|
-
# Returns a new colour with the saturation adjusted by the specified
|
309
|
-
# percentage. Negative percentages will reduce the saturation; positive
|
310
|
-
# percentages will increase the saturation.
|
311
|
-
#
|
312
|
-
# Color::RGB::DarkBlue.adjust_saturation(10)
|
313
|
-
# Color::RGB::DarkBlue.adjust_saturation(-10)
|
314
|
-
def adjust_saturation(percent)
|
315
|
-
percent = normalize_percent(percent)
|
316
|
-
hsl = to_hsl
|
317
|
-
hsl.s *= percent
|
318
|
-
hsl.to_rgb
|
319
|
-
end
|
320
|
-
|
321
|
-
# Returns a new colour with the hue adjusted by the specified percentage.
|
322
|
-
# Negative percentages will reduce the hue; positive percentages will
|
323
|
-
# increase the hue.
|
324
|
-
#
|
325
|
-
# Color::RGB::DarkBlue.adjust_hue(10)
|
326
|
-
# Color::RGB::DarkBlue.adjust_hue(-10)
|
327
|
-
def adjust_hue(percent)
|
328
|
-
percent = normalize_percent(percent)
|
329
|
-
hsl = to_hsl
|
330
|
-
hsl.h *= percent
|
331
|
-
hsl.to_rgb
|
332
|
-
end
|
333
|
-
|
334
|
-
# TODO: Identify the base colour profile used for L*a*b* and XYZ
|
335
|
-
# conversions.
|
336
|
-
|
337
|
-
# Calculates and returns the closest match to this colour from a list of
|
338
|
-
# provided colours. Returns +nil+ if +color_list+ is empty or if there is
|
339
|
-
# no colour within the +threshold_distance+.
|
340
|
-
#
|
341
|
-
# +threshold_distance+ is used to determine the minimum colour distance
|
342
|
-
# permitted. Uses the CIE Delta E 1994 algorithm (CIE94) to find near
|
343
|
-
# matches based on perceived visual colour. The default value (1000.0) is
|
344
|
-
# an arbitrarily large number. The values <tt>:jnd</tt> and
|
345
|
-
# <tt>:just_noticeable</tt> may be passed as the +threshold_distance+ to
|
346
|
-
# use the value <tt>2.3</tt>.
|
347
|
-
def closest_match(color_list, threshold_distance = 1000.0)
|
348
|
-
color_list = [ color_list ].flatten(1)
|
349
|
-
return nil if color_list.empty?
|
350
|
-
|
351
|
-
threshold_distance = case threshold_distance
|
352
|
-
when :jnd, :just_noticeable
|
353
|
-
2.3
|
354
|
-
else
|
355
|
-
threshold_distance.to_f
|
356
|
-
end
|
357
|
-
lab = to_lab
|
358
|
-
closest_distance = threshold_distance
|
359
|
-
best_match = nil
|
360
|
-
|
361
|
-
color_list.each do |c|
|
362
|
-
distance = delta_e94(lab, c.to_lab)
|
363
|
-
if (distance < closest_distance)
|
364
|
-
closest_distance = distance
|
365
|
-
best_match = c
|
366
|
-
end
|
367
|
-
end
|
368
|
-
best_match
|
369
|
-
end
|
370
|
-
|
371
|
-
# The Delta E (CIE94) algorithm
|
372
|
-
# http://en.wikipedia.org/wiki/Color_difference#CIE94
|
373
|
-
#
|
374
|
-
# There is a newer version, CIEDE2000, that uses slightly more complicated
|
375
|
-
# math, but addresses "the perceptual uniformity issue" left lingering by
|
376
|
-
# the CIE94 algorithm. color_1 and color_2 are both L*a*b* hashes,
|
377
|
-
# rendered by #to_lab.
|
378
|
-
#
|
379
|
-
# Since our source is treated as sRGB, we use the "graphic arts" presets
|
380
|
-
# for k_L, k_1, and k_2
|
381
|
-
#
|
382
|
-
# The calculations go through LCH(ab). (?)
|
383
|
-
#
|
384
|
-
# See also http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE94.html
|
385
|
-
#
|
386
|
-
# NOTE: This should be moved to Color::Lab.
|
387
|
-
def delta_e94(color_1, color_2, weighting_type = :graphic_arts)
|
388
|
-
case weighting_type
|
389
|
-
when :graphic_arts
|
390
|
-
k_1 = 0.045
|
391
|
-
k_2 = 0.015
|
392
|
-
k_L = 1
|
393
|
-
when :textiles
|
394
|
-
k_1 = 0.048
|
395
|
-
k_2 = 0.014
|
396
|
-
k_L = 2
|
397
|
-
else
|
398
|
-
raise ArgumentError, "Unsupported weighting type #{weighting_type}."
|
399
|
-
end
|
400
|
-
|
401
|
-
# delta_E = Math.sqrt(
|
402
|
-
# ((delta_L / (k_L * s_L)) ** 2) +
|
403
|
-
# ((delta_C / (k_C * s_C)) ** 2) +
|
404
|
-
# ((delta_H / (k_H * s_H)) ** 2)
|
405
|
-
# )
|
406
|
-
#
|
407
|
-
# Under some circumstances in real computers, delta_H could be an
|
408
|
-
# imaginary number (it's a square root value), so we're going to treat
|
409
|
-
# this as:
|
410
|
-
#
|
411
|
-
# delta_E = Math.sqrt(
|
412
|
-
# ((delta_L / (k_L * s_L)) ** 2) +
|
413
|
-
# ((delta_C / (k_C * s_C)) ** 2) +
|
414
|
-
# (delta_H2 / ((k_H * s_H) ** 2)))
|
415
|
-
# )
|
416
|
-
#
|
417
|
-
# And not perform the square root when calculating delta_H2.
|
418
|
-
|
419
|
-
k_C = k_H = 1
|
420
|
-
|
421
|
-
l_1, a_1, b_1 = color_1.values_at(:L, :a, :b)
|
422
|
-
l_2, a_2, b_2 = color_2.values_at(:L, :a, :b)
|
423
|
-
|
424
|
-
delta_a = a_1 - a_2
|
425
|
-
delta_b = b_1 - b_2
|
426
|
-
|
427
|
-
c_1 = Math.sqrt((a_1 ** 2) + (b_1 ** 2))
|
428
|
-
c_2 = Math.sqrt((a_2 ** 2) + (b_2 ** 2))
|
429
|
-
|
430
|
-
delta_L = color_1[:L] - color_2[:L]
|
431
|
-
delta_C = c_1 - c_2
|
432
|
-
|
433
|
-
delta_H2 = (delta_a ** 2) + (delta_b ** 2) - (delta_C ** 2)
|
434
|
-
|
435
|
-
s_L = 1
|
436
|
-
s_C = 1 + k_1 * c_1
|
437
|
-
s_H = 1 + k_2 * c_1
|
438
|
-
|
439
|
-
composite_L = (delta_L / (k_L * s_L)) ** 2
|
440
|
-
composite_C = (delta_C / (k_C * s_C)) ** 2
|
441
|
-
composite_H = delta_H2 / ((k_H * s_H) ** 2)
|
442
|
-
Math.sqrt(composite_L + composite_C + composite_H)
|
443
|
-
end
|
444
|
-
|
445
|
-
# Returns the red component of the colour in the normal 0 .. 255 range.
|
446
|
-
def red
|
447
|
-
@r * 255.0
|
448
|
-
end
|
449
|
-
# Returns the red component of the colour as a percentage.
|
450
|
-
def red_p
|
451
|
-
@r * 100.0
|
452
|
-
end
|
453
|
-
# Returns the red component of the colour as a fraction in the range 0.0
|
454
|
-
# .. 1.0.
|
455
|
-
def r
|
456
|
-
@r
|
457
|
-
end
|
458
|
-
# Sets the red component of the colour in the normal 0 .. 255 range.
|
459
|
-
def red=(rr)
|
460
|
-
@r = Color.normalize(rr / 255.0)
|
461
|
-
end
|
462
|
-
# Sets the red component of the colour as a percentage.
|
463
|
-
def red_p=(rr)
|
464
|
-
@r = Color.normalize(rr / 100.0)
|
465
|
-
end
|
466
|
-
# Sets the red component of the colour as a fraction in the range 0.0 ..
|
467
|
-
# 1.0.
|
468
|
-
def r=(rr)
|
469
|
-
@r = Color.normalize(rr)
|
470
|
-
end
|
471
|
-
|
472
|
-
# Returns the green component of the colour in the normal 0 .. 255 range.
|
473
|
-
def green
|
474
|
-
@g * 255.0
|
475
|
-
end
|
476
|
-
# Returns the green component of the colour as a percentage.
|
477
|
-
def green_p
|
478
|
-
@g * 100.0
|
479
|
-
end
|
480
|
-
# Returns the green component of the colour as a fraction in the range 0.0
|
481
|
-
# .. 1.0.
|
482
|
-
def g
|
483
|
-
@g
|
484
|
-
end
|
485
|
-
# Sets the green component of the colour in the normal 0 .. 255 range.
|
486
|
-
def green=(gg)
|
487
|
-
@g = Color.normalize(gg / 255.0)
|
488
|
-
end
|
489
|
-
# Sets the green component of the colour as a percentage.
|
490
|
-
def green_p=(gg)
|
491
|
-
@g = Color.normalize(gg / 100.0)
|
492
|
-
end
|
493
|
-
# Sets the green component of the colour as a fraction in the range 0.0 ..
|
494
|
-
# 1.0.
|
495
|
-
def g=(gg)
|
496
|
-
@g = Color.normalize(gg)
|
497
|
-
end
|
498
|
-
|
499
|
-
# Returns the blue component of the colour in the normal 0 .. 255 range.
|
500
|
-
def blue
|
501
|
-
@b * 255.0
|
502
|
-
end
|
503
|
-
# Returns the blue component of the colour as a percentage.
|
504
|
-
def blue_p
|
505
|
-
@b * 100.0
|
506
|
-
end
|
507
|
-
# Returns the blue component of the colour as a fraction in the range 0.0
|
508
|
-
# .. 1.0.
|
509
|
-
def b
|
510
|
-
@b
|
511
|
-
end
|
512
|
-
# Sets the blue component of the colour in the normal 0 .. 255 range.
|
513
|
-
def blue=(bb)
|
514
|
-
@b = Color.normalize(bb / 255.0)
|
515
|
-
end
|
516
|
-
# Sets the blue component of the colour as a percentage.
|
517
|
-
def blue_p=(bb)
|
518
|
-
@b = Color.normalize(bb / 100.0)
|
519
|
-
end
|
520
|
-
# Sets the blue component of the colour as a fraction in the range 0.0 ..
|
521
|
-
# 1.0.
|
522
|
-
def b=(bb)
|
523
|
-
@b = Color.normalize(bb)
|
524
|
-
end
|
525
|
-
|
526
|
-
# Adds another colour to the current colour. The other colour will be
|
527
|
-
# converted to RGB before addition. This conversion depends upon a #to_rgb
|
528
|
-
# method on the other colour.
|
529
|
-
#
|
530
|
-
# The addition is done using the RGB Accessor methods to ensure a valid
|
531
|
-
# colour in the result.
|
532
|
-
def +(other)
|
533
|
-
self.class.from_fraction(r + other.r, g + other.g, b + other.b)
|
534
|
-
end
|
535
|
-
|
536
|
-
# Subtracts another colour to the current colour. The other colour will be
|
537
|
-
# converted to RGB before subtraction. This conversion depends upon a
|
538
|
-
# #to_rgb method on the other colour.
|
539
|
-
#
|
540
|
-
# The subtraction is done using the RGB Accessor methods to ensure a valid
|
541
|
-
# colour in the result.
|
542
|
-
def -(other)
|
543
|
-
self + (-other)
|
544
|
-
end
|
545
|
-
|
546
|
-
# Retrieve the maxmum RGB value from the current colour as a GrayScale
|
547
|
-
# colour
|
548
|
-
def max_rgb_as_grayscale
|
549
|
-
Color::GrayScale.from_fraction([@r, @g, @b].max)
|
550
|
-
end
|
551
|
-
alias max_rgb_as_greyscale max_rgb_as_grayscale
|
552
|
-
|
553
|
-
def inspect
|
554
|
-
"RGB [#{html}]"
|
555
|
-
end
|
556
|
-
|
557
|
-
def to_a
|
558
|
-
[ r, g, b ]
|
559
|
-
end
|
560
|
-
|
561
|
-
# Numerically negate the color. This results in a color that is only
|
562
|
-
# usable for subtraction.
|
563
|
-
def -@
|
564
|
-
rgb = self.dup
|
565
|
-
rgb.instance_variable_set(:@r, -rgb.r)
|
566
|
-
rgb.instance_variable_set(:@g, -rgb.g)
|
567
|
-
rgb.instance_variable_set(:@b, -rgb.b)
|
568
|
-
rgb
|
569
|
-
end
|
570
|
-
|
571
|
-
private
|
572
|
-
def normalize_percent(percent)
|
573
|
-
percent /= 100.0
|
574
|
-
percent += 1.0
|
575
|
-
percent = [ percent, 2.0 ].min
|
576
|
-
percent = [ 0.0, percent ].max
|
577
|
-
percent
|
578
|
-
end
|
579
|
-
end
|
580
|
-
|
581
|
-
class << Color::RGB
|
582
|
-
# Creates an RGB colour object from percentages 0..100.
|
583
|
-
#
|
584
|
-
# Color::RGB.from_percentage(10, 20, 30)
|
585
|
-
def from_percentage(r = 0, g = 0, b = 0, &block)
|
586
|
-
new(r, g, b, 100.0, &block)
|
587
|
-
end
|
588
|
-
|
589
|
-
# Creates an RGB colour object from fractional values 0..1.
|
590
|
-
#
|
591
|
-
# Color::RGB.from_fraction(.3, .2, .1)
|
592
|
-
def from_fraction(r = 0.0, g = 0.0, b = 0.0, &block)
|
593
|
-
new(r, g, b, 1.0, &block)
|
594
|
-
end
|
595
|
-
|
596
|
-
# Creates an RGB colour object from a grayscale fractional value 0..1.
|
597
|
-
def from_grayscale_fraction(l = 0.0, &block)
|
598
|
-
new(l, l, l, 1.0, &block)
|
599
|
-
end
|
600
|
-
alias_method :from_greyscale_fraction, :from_grayscale_fraction
|
601
|
-
|
602
|
-
# Creates an RGB colour object from an HTML colour descriptor (e.g.,
|
603
|
-
# <tt>"fed"</tt> or <tt>"#cabbed;"</tt>.
|
604
|
-
#
|
605
|
-
# Color::RGB.from_html("fed")
|
606
|
-
# Color::RGB.from_html("#fed")
|
607
|
-
# Color::RGB.from_html("#cabbed")
|
608
|
-
# Color::RGB.from_html("cabbed")
|
609
|
-
def from_html(html_colour, &block)
|
610
|
-
# When we can move to 1.9+ only, this will be \h
|
611
|
-
h = html_colour.scan(/[0-9a-f]/i)
|
612
|
-
case h.size
|
613
|
-
when 3
|
614
|
-
new(*h.map { |v| (v * 2).to_i(16) }, &block)
|
615
|
-
when 6
|
616
|
-
new(*h.each_slice(2).map { |v| v.join.to_i(16) }, &block)
|
617
|
-
else
|
618
|
-
raise ArgumentError, "Not a supported HTML colour type."
|
619
|
-
end
|
620
|
-
end
|
621
|
-
|
622
|
-
# Find or create a colour by an HTML hex code. This differs from the
|
623
|
-
# #from_html method in that if the colour code matches a named colour,
|
624
|
-
# the existing colour will be returned.
|
625
|
-
#
|
626
|
-
# Color::RGB.by_hex('ff0000').name # => 'red'
|
627
|
-
# Color::RGB.by_hex('ff0001').name # => nil
|
628
|
-
#
|
629
|
-
# If a block is provided, the value that is returned by the block will
|
630
|
-
# be returned instead of the exception caused by an error in providing a
|
631
|
-
# correct hex format.
|
632
|
-
def by_hex(hex, &block)
|
633
|
-
__by_hex.fetch(html_hexify(hex)) { from_html(hex) }
|
634
|
-
rescue
|
635
|
-
if block
|
636
|
-
block.call
|
637
|
-
else
|
638
|
-
raise
|
639
|
-
end
|
640
|
-
end
|
641
|
-
|
642
|
-
# Return a colour as identified by the colour name.
|
643
|
-
def by_name(name, &block)
|
644
|
-
__by_name.fetch(name.to_s.downcase, &block)
|
645
|
-
end
|
646
|
-
|
647
|
-
# Return a colour as identified by the colour name, or by hex.
|
648
|
-
def by_css(name_or_hex, &block)
|
649
|
-
by_name(name_or_hex) { by_hex(name_or_hex, &block) }
|
650
|
-
end
|
651
|
-
|
652
|
-
# Extract named or hex colours from the provided text.
|
653
|
-
def extract_colors(text, mode = :both)
|
654
|
-
text = text.downcase
|
655
|
-
regex = case mode
|
656
|
-
when :name
|
657
|
-
Regexp.union(__by_name.keys)
|
658
|
-
when :hex
|
659
|
-
Regexp.union(__by_hex.keys)
|
660
|
-
when :both
|
661
|
-
Regexp.union(__by_hex.keys + __by_name.keys)
|
662
|
-
end
|
663
|
-
|
664
|
-
text.scan(regex).map { |match|
|
665
|
-
case mode
|
666
|
-
when :name
|
667
|
-
by_name(match)
|
668
|
-
when :hex
|
669
|
-
by_hex(match)
|
670
|
-
when :both
|
671
|
-
by_css(match)
|
672
|
-
end
|
673
|
-
}
|
674
|
-
end
|
675
|
-
end
|
676
|
-
|
677
|
-
class << Color::RGB
|
678
|
-
private
|
679
|
-
|
680
|
-
def __named_color(mod, rgb, *names)
|
681
|
-
used = names - mod.constants.map(&:to_sym)
|
682
|
-
if used.length < names.length
|
683
|
-
raise ArgumentError, "#{names.join(', ')} already defined in #{mod}"
|
684
|
-
end
|
685
|
-
|
686
|
-
names.each { |n| mod.const_set(n, rgb) }
|
687
|
-
|
688
|
-
rgb.names = names
|
689
|
-
rgb.names.each { |n| __by_name[n] = rgb }
|
690
|
-
__by_hex[rgb.hex] = rgb
|
691
|
-
rgb.freeze
|
692
|
-
end
|
693
|
-
|
694
|
-
def __by_hex
|
695
|
-
@__by_hex ||= {}
|
696
|
-
end
|
697
|
-
|
698
|
-
def __by_name
|
699
|
-
@__by_name ||= {}
|
700
|
-
end
|
701
|
-
|
702
|
-
def html_hexify(hex)
|
703
|
-
# When we can move to 1.9+ only, this will be \h
|
704
|
-
h = hex.to_s.downcase.scan(/[0-9a-f]/)
|
705
|
-
case h.size
|
706
|
-
when 3
|
707
|
-
h.map { |v| (v * 2) }.join
|
708
|
-
when 6
|
709
|
-
h.join
|
710
|
-
else
|
711
|
-
raise ArgumentError, "Not a supported HTML colour type."
|
712
|
-
end
|
713
|
-
end
|
714
|
-
end
|
715
|
-
require_relative 'rgb/colors'
|