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.

Files changed (472) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/README.md +5 -77
  4. data/Rakefile +7 -502
  5. data/app_builder_helpers/Rakefile +235 -0
  6. data/documentation/framework/enhance_atome.md +1 -1
  7. data/documentation/installation/atome_server.md +1 -66
  8. data/documentation/tutorials/tutorials.md +0 -7
  9. data/exe/atome +157 -819
  10. data/lib/atome/atome_native_extensions.rb +3 -0
  11. data/lib/atome/extensions/geolocation.rb +1 -1
  12. data/lib/atome/extensions/ping.rb +11 -10
  13. data/lib/atome/extensions/sha.rb +6 -8
  14. data/lib/atome/kernel/atome_genesis.rb +93 -0
  15. data/lib/atome/kernel/generators/shapes.rb +7 -0
  16. data/lib/atome/kernel/properties/geometry.rb +120 -0
  17. data/lib/atome/kernel/universe.rb +24 -295
  18. data/lib/atome/renderers/headless/headless.rb +0 -0
  19. data/lib/atome/renderers/headless/properties/generator.rb +0 -0
  20. data/lib/atome/renderers/opal/atome_opal_extensions.rb +4 -0
  21. data/lib/{platform_specific → atome/renderers}/opal/extensions/geolocation.rb +1 -1
  22. data/lib/atome/renderers/opal/extensions/ping.rb +13 -0
  23. data/lib/atome/renderers/opal/extensions/sha.rb +11 -0
  24. data/lib/atome/renderers/opal/opal_browser.rb +8 -0
  25. data/lib/{platform_specific → atome/renderers}/opal/opal_parser.rb +0 -1
  26. data/lib/atome/renderers/opal/properties/generator.rb +6 -0
  27. data/lib/atome/renderers/server/server.rb +0 -0
  28. data/lib/atome/version.rb +1 -2
  29. data/lib/atome.rb +16 -35
  30. data/sig/atome.rbs +0 -75
  31. data/vendor/assets/Guardfile +4 -0
  32. data/vendor/assets/Rakefile +2 -12
  33. data/vendor/assets/application/index.rb +2 -7
  34. data/vendor/assets/build/css/style.css +53 -0
  35. data/vendor/assets/build/index.html +24 -0
  36. data/vendor/assets/build/js/application.js +0 -0
  37. data/vendor/assets/build/js/third_parties/interact.min.js +4 -0
  38. data/vendor/assets/build/js/third_parties/popmotion.min.js +1 -0
  39. data/vendor/assets/examples/misc.rb +219 -0
  40. data/vendor/assets/examples/ping.rb +3 -0
  41. data/vendor/assets/examples/storage.rb +9 -0
  42. data/vendor/assets/examples/view_example.rb +21 -0
  43. data/vendor/assets/server/atome_server.rb +96 -33
  44. data/vendor/assets/server/config.ru +3 -8
  45. metadata +69 -512
  46. data/CHANGELOG.md +0 -21
  47. data/atome.gemspec +0 -100
  48. data/documentation/basic.md +0 -241
  49. data/documentation/deep learning/architecture.txt +0 -3763
  50. data/documentation/deep learning/atome.png +0 -0
  51. data/documentation/deep learning/basic_infos.txt +0 -289
  52. data/documentation/deep learning/example_of_users_code.rb +0 -1810
  53. data/documentation/deep learning/misc.txt +0 -24
  54. data/documentation/deep learning/ruby_js_example.rb +0 -272
  55. data/documentation/deep learning/wasm_script_help.text +0 -14
  56. data/documentation/installation/buiding_atome.md +0 -307
  57. data/lib/atome/atome.rb +0 -131
  58. data/lib/atome/extensions/atome.rb +0 -705
  59. data/lib/atome/extensions/mathematics.rb +0 -20
  60. data/lib/atome/genesis/atomes.rb +0 -109
  61. data/lib/atome/genesis/genesis.rb +0 -272
  62. data/lib/atome/genesis/particles/atome.rb +0 -4
  63. data/lib/atome/genesis/particles/communication.rb +0 -43
  64. data/lib/atome/genesis/particles/effect.rb +0 -14
  65. data/lib/atome/genesis/particles/event.rb +0 -344
  66. data/lib/atome/genesis/particles/geometry.rb +0 -31
  67. data/lib/atome/genesis/particles/hierarchy.rb +0 -105
  68. data/lib/atome/genesis/particles/identity.rb +0 -82
  69. data/lib/atome/genesis/particles/material.rb +0 -119
  70. data/lib/atome/genesis/particles/property.rb +0 -147
  71. data/lib/atome/genesis/particles/security.rb +0 -77
  72. data/lib/atome/genesis/particles/spatial.rb +0 -98
  73. data/lib/atome/genesis/particles/time.rb +0 -4
  74. data/lib/atome/genesis/particles/utility.rb +0 -261
  75. data/lib/atome/genesis/presets.rb +0 -10
  76. data/lib/atome/genesis/sparkle.rb +0 -217
  77. data/lib/atome/kernel/black_matter.rb +0 -22
  78. data/lib/atome/presets/atome.rb +0 -79
  79. data/lib/atome/utilities/color_helper/color/cmyk.rb +0 -263
  80. data/lib/atome/utilities/color_helper/color/css.rb +0 -7
  81. data/lib/atome/utilities/color_helper/color/grayscale.rb +0 -197
  82. data/lib/atome/utilities/color_helper/color/hsl.rb +0 -240
  83. data/lib/atome/utilities/color_helper/color/palette/adobecolor.rb +0 -260
  84. data/lib/atome/utilities/color_helper/color/palette/gimp.rb +0 -104
  85. data/lib/atome/utilities/color_helper/color/palette/monocontrast.rb +0 -164
  86. data/lib/atome/utilities/color_helper/color/palette.rb +0 -4
  87. data/lib/atome/utilities/color_helper/color/rgb/colors.rb +0 -167
  88. data/lib/atome/utilities/color_helper/color/rgb/contrast.rb +0 -57
  89. data/lib/atome/utilities/color_helper/color/rgb/metallic.rb +0 -28
  90. data/lib/atome/utilities/color_helper/color/rgb.rb +0 -715
  91. data/lib/atome/utilities/color_helper/color/yiq.rb +0 -62
  92. data/lib/atome/utilities/color_helper/color.rb +0 -415
  93. data/lib/atome/utilities/essentials.rb +0 -70
  94. data/lib/atome/utilities/sanitizer.rb +0 -13
  95. data/lib/atome/utilities/security.rb +0 -71
  96. data/lib/atome/utilities/utilities.rb +0 -656
  97. data/lib/atome_relative.rb +0 -39
  98. data/lib/molecules/_deprecated_examples/site.rb +0 -34
  99. data/lib/molecules/init.rb +0 -31
  100. data/lib/molecules/intuition/_deprecated_inputs.rb +0 -111
  101. data/lib/molecules/intuition/_deprecated_toolbox.rb +0 -282
  102. data/lib/molecules/intuition/utillities.rb +0 -408
  103. data/lib/platform_specific/opal/atome_opal_extensions.rb +0 -11
  104. data/lib/platform_specific/opal/extensions/color.rb +0 -30
  105. data/lib/platform_specific/opal/extensions/js.rb +0 -20
  106. data/lib/platform_specific/opal/extensions/object.rb +0 -6
  107. data/lib/platform_specific/opal/extensions/ping.rb +0 -31
  108. data/lib/platform_specific/opal/extensions/sha.rb +0 -25
  109. data/lib/platform_specific/opal/opal.rb +0 -5
  110. data/lib/platform_specific/wasm/atome_wasm_extensions.rb +0 -11
  111. data/lib/renderers/headless/headless.rb +0 -18
  112. data/lib/renderers/headless/index.rb +0 -6
  113. data/lib/renderers/headless/index_relative.rb +0 -6
  114. data/lib/renderers/headless/utility.rb +0 -6
  115. data/lib/renderers/html/atome.rb +0 -2
  116. data/lib/renderers/html/atome_html.rb +0 -22
  117. data/lib/renderers/html/communication.rb +0 -3
  118. data/lib/renderers/html/effect.rb +0 -51
  119. data/lib/renderers/html/event.rb +0 -59
  120. data/lib/renderers/html/geometry.rb +0 -49
  121. data/lib/renderers/html/hierarchy.rb +0 -248
  122. data/lib/renderers/html/html.rb +0 -1688
  123. data/lib/renderers/html/identity.rb +0 -104
  124. data/lib/renderers/html/index.rb +0 -19
  125. data/lib/renderers/html/index_relative.rb +0 -20
  126. data/lib/renderers/html/material.rb +0 -88
  127. data/lib/renderers/html/property.rb +0 -52
  128. data/lib/renderers/html/security.rb +0 -1
  129. data/lib/renderers/html/spatial.rb +0 -75
  130. data/lib/renderers/html/time.rb +0 -1
  131. data/lib/renderers/html/utility.rb +0 -170
  132. data/lib/renderers/renderer.rb +0 -16
  133. data/lib/renderers/server/index.rb +0 -4
  134. data/lib/renderers/server/index_relative.rb +0 -4
  135. data/lib/renderers/server/utility.rb +0 -4
  136. data/sig/atome_js.rbs +0 -1
  137. data/sig/batch.rbs +0 -7
  138. data/sig/browser_helper.rbs +0 -14
  139. data/sig/essentials.rbs +0 -11
  140. data/sig/genesis.rbs +0 -3
  141. data/sig/global_variables.rbs +0 -1
  142. data/sig/matrix.rbs +0 -5
  143. data/sig/object.rbs +0 -7
  144. data/sig/universe.rbs +0 -3
  145. data/src/utilities/host_mode.rb +0 -5
  146. data/vendor/assets/application/examples/affect.rb +0 -8
  147. data/vendor/assets/application/examples/aid.rb +0 -10
  148. data/vendor/assets/application/examples/allow_copy.rb +0 -13
  149. data/vendor/assets/application/examples/allow_system_right_click.rb +0 -16
  150. data/vendor/assets/application/examples/alternate.rb +0 -36
  151. data/vendor/assets/application/examples/animation.rb +0 -91
  152. data/vendor/assets/application/examples/apply.rb +0 -8
  153. data/vendor/assets/application/examples/atome.rb +0 -5
  154. data/vendor/assets/application/examples/atome_particle_validation.rb +0 -7
  155. data/vendor/assets/application/examples/atome_sparkle_use.rb +0 -6
  156. data/vendor/assets/application/examples/atomizer.rb +0 -86
  157. data/vendor/assets/application/examples/attach.rb +0 -34
  158. data/vendor/assets/application/examples/attached.rb +0 -45
  159. data/vendor/assets/application/examples/b64_to_image.rb +0 -9
  160. data/vendor/assets/application/examples/basic_understanding.rb +0 -54
  161. data/vendor/assets/application/examples/behavior.rb +0 -32
  162. data/vendor/assets/application/examples/blur.rb +0 -26
  163. data/vendor/assets/application/examples/border.rb +0 -75
  164. data/vendor/assets/application/examples/browse.rb +0 -17
  165. data/vendor/assets/application/examples/categories.rb +0 -5
  166. data/vendor/assets/application/examples/category.rb +0 -16
  167. data/vendor/assets/application/examples/center.rb +0 -7
  168. data/vendor/assets/application/examples/clear.rb +0 -96
  169. data/vendor/assets/application/examples/clones&monitoring.rb +0 -105
  170. data/vendor/assets/application/examples/code.rb +0 -13
  171. data/vendor/assets/application/examples/color.rb +0 -54
  172. data/vendor/assets/application/examples/compute.rb +0 -16
  173. data/vendor/assets/application/examples/console.rb +0 -4
  174. data/vendor/assets/application/examples/convert.rb +0 -163
  175. data/vendor/assets/application/examples/copy.rb +0 -25
  176. data/vendor/assets/application/examples/copybck.rb +0 -68
  177. data/vendor/assets/application/examples/css.rb +0 -6
  178. data/vendor/assets/application/examples/database_handling.rb +0 -39
  179. data/vendor/assets/application/examples/debug.rb +0 -78
  180. data/vendor/assets/application/examples/delete.rb +0 -105
  181. data/vendor/assets/application/examples/dig.rb +0 -13
  182. data/vendor/assets/application/examples/display.rb +0 -279
  183. data/vendor/assets/application/examples/display_bck.rb +0 -164
  184. data/vendor/assets/application/examples/drag.rb +0 -54
  185. data/vendor/assets/application/examples/drop.rb +0 -35
  186. data/vendor/assets/application/examples/duplicate.rb +0 -70
  187. data/vendor/assets/application/examples/edit.rb +0 -24
  188. data/vendor/assets/application/examples/encode.rb +0 -6
  189. data/vendor/assets/application/examples/encrypt.rb +0 -6
  190. data/vendor/assets/application/examples/example.rb +0 -27
  191. data/vendor/assets/application/examples/executor.rb +0 -36
  192. data/vendor/assets/application/examples/file.rb +0 -16
  193. data/vendor/assets/application/examples/fill.rb +0 -23
  194. data/vendor/assets/application/examples/find.rb +0 -158
  195. data/vendor/assets/application/examples/fit.rb +0 -26
  196. data/vendor/assets/application/examples/fonts.rb +0 -15
  197. data/vendor/assets/application/examples/generator_and_build.rb +0 -15
  198. data/vendor/assets/application/examples/getter.rb +0 -16
  199. data/vendor/assets/application/examples/grab.rb +0 -14
  200. data/vendor/assets/application/examples/gradient.rb +0 -40
  201. data/vendor/assets/application/examples/group.rb +0 -44
  202. data/vendor/assets/application/examples/help.rb +0 -17
  203. data/vendor/assets/application/examples/hierarchy.rb +0 -21
  204. data/vendor/assets/application/examples/history.rb +0 -32
  205. data/vendor/assets/application/examples/holder.rb +0 -62
  206. data/vendor/assets/application/examples/hypertext.rb +0 -113
  207. data/vendor/assets/application/examples/image.rb +0 -5
  208. data/vendor/assets/application/examples/import.rb +0 -33
  209. data/vendor/assets/application/examples/increment.rb +0 -23
  210. data/vendor/assets/application/examples/infos.rb +0 -10
  211. data/vendor/assets/application/examples/input.rb +0 -34
  212. data/vendor/assets/application/examples/int8.rb +0 -17
  213. data/vendor/assets/application/examples/js&ruby.rb +0 -18
  214. data/vendor/assets/application/examples/keyboard.rb +0 -59
  215. data/vendor/assets/application/examples/layout.rb +0 -38
  216. data/vendor/assets/application/examples/list.rb +0 -72
  217. data/vendor/assets/application/examples/localstorage.rb +0 -19
  218. data/vendor/assets/application/examples/login.rb +0 -84
  219. data/vendor/assets/application/examples/markup.rb +0 -4
  220. data/vendor/assets/application/examples/match.rb +0 -115
  221. data/vendor/assets/application/examples/matrix.rb +0 -118
  222. data/vendor/assets/application/examples/monitor.rb +0 -14
  223. data/vendor/assets/application/examples/on_resize.rb +0 -7
  224. data/vendor/assets/application/examples/on_the_fly_ruby_code_loading.rb +0 -9
  225. data/vendor/assets/application/examples/online.rb +0 -3
  226. data/vendor/assets/application/examples/opacity.rb +0 -9
  227. data/vendor/assets/application/examples/over.rb +0 -29
  228. data/vendor/assets/application/examples/paint.rb +0 -29
  229. data/vendor/assets/application/examples/particles.rb +0 -4
  230. data/vendor/assets/application/examples/percent_to_px.rb +0 -4
  231. data/vendor/assets/application/examples/play.rb +0 -50
  232. data/vendor/assets/application/examples/preset.rb +0 -33
  233. data/vendor/assets/application/examples/random.rb +0 -42
  234. data/vendor/assets/application/examples/raw_html.rb +0 -48
  235. data/vendor/assets/application/examples/read.rb +0 -13
  236. data/vendor/assets/application/examples/recorder.rb +0 -74
  237. data/vendor/assets/application/examples/refresh.rb +0 -62
  238. data/vendor/assets/application/examples/remove.rb +0 -60
  239. data/vendor/assets/application/examples/repeat.rb +0 -26
  240. data/vendor/assets/application/examples/resize.rb +0 -17
  241. data/vendor/assets/application/examples/scroll.rb +0 -11
  242. data/vendor/assets/application/examples/security.rb +0 -76
  243. data/vendor/assets/application/examples/select_text.rb +0 -18
  244. data/vendor/assets/application/examples/selected.rb +0 -35
  245. data/vendor/assets/application/examples/server.rb +0 -24
  246. data/vendor/assets/application/examples/shadow.rb +0 -60
  247. data/vendor/assets/application/examples/shapes.rb +0 -6
  248. data/vendor/assets/application/examples/shortcut.rb +0 -25
  249. data/vendor/assets/application/examples/site.rb +0 -41
  250. data/vendor/assets/application/examples/size.rb +0 -17
  251. data/vendor/assets/application/examples/sliders.rb +0 -17
  252. data/vendor/assets/application/examples/smooth.rb +0 -9
  253. data/vendor/assets/application/examples/style.rb +0 -4
  254. data/vendor/assets/application/examples/sub_atome_manipulation.rb +0 -20
  255. data/vendor/assets/application/examples/svg_img_to_vector.rb +0 -6
  256. data/vendor/assets/application/examples/svg_vectorizer.rb +0 -21
  257. data/vendor/assets/application/examples/sync.rb +0 -38
  258. data/vendor/assets/application/examples/table.rb +0 -76
  259. data/vendor/assets/application/examples/tagged.rb +0 -24
  260. data/vendor/assets/application/examples/terminal.rb +0 -4
  261. data/vendor/assets/application/examples/test.rb +0 -584
  262. data/vendor/assets/application/examples/text.rb +0 -5
  263. data/vendor/assets/application/examples/tick.rb +0 -29
  264. data/vendor/assets/application/examples/tools.rb +0 -666
  265. data/vendor/assets/application/examples/touch.rb +0 -41
  266. data/vendor/assets/application/examples/type_mutation.rb +0 -18
  267. data/vendor/assets/application/examples/unit.rb +0 -14
  268. data/vendor/assets/application/examples/universe.rb +0 -8
  269. data/vendor/assets/application/examples/vector.rb +0 -37
  270. data/vendor/assets/application/examples/video.rb +0 -14
  271. data/vendor/assets/application/examples/wait.rb +0 -6
  272. data/vendor/assets/application/examples/www.rb +0 -10
  273. data/vendor/assets/server/atome_server_wasm.rb +0 -54
  274. data/vendor/assets/server/capture.rb +0 -10
  275. data/vendor/assets/server/database.rb +0 -63
  276. data/vendor/assets/server/eDen.rb +0 -302
  277. data/vendor/assets/server/extensions.rb +0 -13
  278. data/vendor/assets/src/css/style.css +0 -167
  279. data/vendor/assets/src/index.html +0 -45
  280. data/vendor/assets/src/index_opal.html +0 -40
  281. data/vendor/assets/src/index_server.html +0 -38
  282. data/vendor/assets/src/index_server_wasm.html +0 -45
  283. data/vendor/assets/src/index_wasm.html +0 -50
  284. data/vendor/assets/src/js/atome/atome.js +0 -506
  285. data/vendor/assets/src/js/atome/atome_helpers/add_font.js +0 -46
  286. data/vendor/assets/src/js/atome/atome_helpers/atome_animate.js +0 -65
  287. data/vendor/assets/src/js/atome/atome_helpers/atome_drag.js +0 -124
  288. data/vendor/assets/src/js/atome/atome_helpers/atome_drop.js +0 -12
  289. data/vendor/assets/src/js/atome/atome_helpers/atome_events.js +0 -171
  290. data/vendor/assets/src/js/atome/atome_helpers/atome_over.js +0 -43
  291. data/vendor/assets/src/js/atome/atome_helpers/atome_sort.js +0 -20
  292. data/vendor/assets/src/js/atome/atome_helpers/atome_time.js +0 -10
  293. data/vendor/assets/src/js/atome/atome_helpers/atome_video.js +0 -12
  294. data/vendor/assets/src/js/atome/atome_helpers/communication.js +0 -35
  295. data/vendor/assets/src/js/atome/atome_helpers/file.js +0 -12
  296. data/vendor/assets/src/js/atome/specific/opal.js +0 -111
  297. data/vendor/assets/src/js/atome/specific/wasm.js +0 -123
  298. data/vendor/assets/src/js/molecules/web.js +0 -4
  299. data/vendor/assets/src/js/third_parties/browser.script.iife.min.js +0 -13
  300. data/vendor/assets/src/js/third_parties/fabric.min.js +0 -1
  301. data/vendor/assets/src/js/third_parties/html-to-image.min.js +0 -2
  302. data/vendor/assets/src/js/third_parties/interact.min.js +0 -3
  303. data/vendor/assets/src/js/third_parties/jsencrypt.min.js +0 -2
  304. data/vendor/assets/src/js/third_parties/papaparse.min.js +0 -7
  305. data/vendor/assets/src/js/third_parties/popmotion.min.js +0 -1
  306. data/vendor/assets/src/js/third_parties/sortable.min.js +0 -2
  307. data/vendor/assets/src/js/third_parties/three.min.js +0 -6
  308. data/vendor/assets/src/js/third_parties/w3color.js +0 -646
  309. data/vendor/assets/src/js/third_parties/wad.min.js +0 -9
  310. data/vendor/assets/src/js/third_parties/zim.min.js +0 -1
  311. data/vendor/assets/src/medias/audios/audio_missing.wav +0 -0
  312. data/vendor/assets/src/medias/audios/clap.wav +0 -0
  313. data/vendor/assets/src/medias/audios/cowbell.wav +0 -0
  314. data/vendor/assets/src/medias/audios/hihat.wav +0 -0
  315. data/vendor/assets/src/medias/audios/kick.wav +0 -0
  316. data/vendor/assets/src/medias/audios/riff.m4a +0 -0
  317. data/vendor/assets/src/medias/audios/snare.wav +0 -0
  318. data/vendor/assets/src/medias/audios/tom.wav +0 -0
  319. data/vendor/assets/src/medias/fonts/Roboto/LICENSE.txt +0 -202
  320. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Black.ttf +0 -0
  321. data/vendor/assets/src/medias/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
  322. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Bold.ttf +0 -0
  323. data/vendor/assets/src/medias/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
  324. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Italic.ttf +0 -0
  325. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Light.ttf +0 -0
  326. data/vendor/assets/src/medias/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
  327. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Medium.ttf +0 -0
  328. data/vendor/assets/src/medias/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
  329. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Regular.ttf +0 -0
  330. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Thin.ttf +0 -0
  331. data/vendor/assets/src/medias/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
  332. data/vendor/assets/src/medias/fonts/Roboto_Slab/LICENSE.txt +0 -202
  333. data/vendor/assets/src/medias/fonts/Roboto_Slab/README.txt +0 -71
  334. data/vendor/assets/src/medias/fonts/Roboto_Slab/RobotoSlab-VariableFont_wght.ttf +0 -0
  335. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Black.ttf +0 -0
  336. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Bold.ttf +0 -0
  337. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraBold.ttf +0 -0
  338. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraLight.ttf +0 -0
  339. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Light.ttf +0 -0
  340. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Medium.ttf +0 -0
  341. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Regular.ttf +0 -0
  342. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-SemiBold.ttf +0 -0
  343. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Thin.ttf +0 -0
  344. data/vendor/assets/src/medias/images/atome.svg +0 -12
  345. data/vendor/assets/src/medias/images/ballanim.png +0 -0
  346. data/vendor/assets/src/medias/images/blank.png +0 -0
  347. data/vendor/assets/src/medias/images/green_planet.png +0 -0
  348. data/vendor/assets/src/medias/images/icons/Lowpass.svg +0 -8
  349. data/vendor/assets/src/medias/images/icons/activate.svg +0 -3
  350. data/vendor/assets/src/medias/images/icons/audio.svg +0 -7
  351. data/vendor/assets/src/medias/images/icons/band_pass.svg +0 -8
  352. data/vendor/assets/src/medias/images/icons/clear.svg +0 -5
  353. data/vendor/assets/src/medias/images/icons/color.svg +0 -5
  354. data/vendor/assets/src/medias/images/icons/copy.svg +0 -8
  355. data/vendor/assets/src/medias/images/icons/create.svg +0 -3
  356. data/vendor/assets/src/medias/images/icons/delete.svg +0 -8
  357. data/vendor/assets/src/medias/images/icons/edit-.svg +0 -4
  358. data/vendor/assets/src/medias/images/icons/edit.svg +0 -4
  359. data/vendor/assets/src/medias/images/icons/edition.svg +0 -4
  360. data/vendor/assets/src/medias/images/icons/email.svg +0 -13
  361. data/vendor/assets/src/medias/images/icons/equalizer-.svg +0 -5
  362. data/vendor/assets/src/medias/images/icons/equalizer.svg +0 -5
  363. data/vendor/assets/src/medias/images/icons/filter.svg +0 -4
  364. data/vendor/assets/src/medias/images/icons/folder.svg +0 -4
  365. data/vendor/assets/src/medias/images/icons/group.svg +0 -6
  366. data/vendor/assets/src/medias/images/icons/hamburger.svg +0 -8
  367. data/vendor/assets/src/medias/images/icons/high_pass.svg +0 -5
  368. data/vendor/assets/src/medias/images/icons/link.svg +0 -4
  369. data/vendor/assets/src/medias/images/icons/load.svg +0 -4
  370. data/vendor/assets/src/medias/images/icons/low_pass.svg +0 -5
  371. data/vendor/assets/src/medias/images/icons/mail_gray.svg +0 -6
  372. data/vendor/assets/src/medias/images/icons/mail_green.svg +0 -6
  373. data/vendor/assets/src/medias/images/icons/mail_orange.svg +0 -6
  374. data/vendor/assets/src/medias/images/icons/microphone.svg +0 -7
  375. data/vendor/assets/src/medias/images/icons/midi_in.svg +0 -4
  376. data/vendor/assets/src/medias/images/icons/midi_out.svg +0 -4
  377. data/vendor/assets/src/medias/images/icons/modules.svg +0 -11
  378. data/vendor/assets/src/medias/images/icons/paste.svg +0 -4
  379. data/vendor/assets/src/medias/images/icons/pause.svg +0 -5
  380. data/vendor/assets/src/medias/images/icons/play.svg +0 -7
  381. data/vendor/assets/src/medias/images/icons/record.svg +0 -4
  382. data/vendor/assets/src/medias/images/icons/save.svg +0 -5
  383. data/vendor/assets/src/medias/images/icons/select--.svg +0 -4
  384. data/vendor/assets/src/medias/images/icons/select-.svg +0 -5
  385. data/vendor/assets/src/medias/images/icons/select-all.svg +0 -4
  386. data/vendor/assets/src/medias/images/icons/select.svg +0 -4
  387. data/vendor/assets/src/medias/images/icons/settings.svg +0 -5
  388. data/vendor/assets/src/medias/images/icons/settings0.svg +0 -2
  389. data/vendor/assets/src/medias/images/icons/settings1.svg +0 -17
  390. data/vendor/assets/src/medias/images/icons/settings2.svg +0 -25
  391. data/vendor/assets/src/medias/images/icons/settings_old.svg +0 -6
  392. data/vendor/assets/src/medias/images/icons/shape.svg +0 -7
  393. data/vendor/assets/src/medias/images/icons/speaker.svg +0 -6
  394. data/vendor/assets/src/medias/images/icons/stop.svg +0 -4
  395. data/vendor/assets/src/medias/images/icons/tool.svg +0 -7
  396. data/vendor/assets/src/medias/images/icons/tools.svg +0 -9
  397. data/vendor/assets/src/medias/images/icons/undo.svg +0 -4
  398. data/vendor/assets/src/medias/images/icons/undo2.svg +0 -4
  399. data/vendor/assets/src/medias/images/icons/validate.svg +0 -9
  400. data/vendor/assets/src/medias/images/icons/vie.svg +0 -3
  401. data/vendor/assets/src/medias/images/icons/wave-saw.svg +0 -3
  402. data/vendor/assets/src/medias/images/icons/wave-sine.svg +0 -3
  403. data/vendor/assets/src/medias/images/icons/wave-square-.svg +0 -4
  404. data/vendor/assets/src/medias/images/icons/wave-square.svg +0 -3
  405. data/vendor/assets/src/medias/images/icons/wave-triangle.svg +0 -3
  406. data/vendor/assets/src/medias/images/icons/waveform-.svg +0 -4
  407. data/vendor/assets/src/medias/images/icons/waveform.svg +0 -7
  408. data/vendor/assets/src/medias/images/logos/Facebook.svg +0 -8
  409. data/vendor/assets/src/medias/images/logos/GitHub Black.svg +0 -7
  410. data/vendor/assets/src/medias/images/logos/GitHub.svg +0 -7
  411. data/vendor/assets/src/medias/images/logos/LinkedIn-full.svg +0 -109
  412. data/vendor/assets/src/medias/images/logos/LinkedIn.svg +0 -11
  413. data/vendor/assets/src/medias/images/logos/Orange/Facebook.svg +0 -8
  414. data/vendor/assets/src/medias/images/logos/Orange/TikTok.svg +0 -11
  415. data/vendor/assets/src/medias/images/logos/Orange/Twitter.svg +0 -8
  416. data/vendor/assets/src/medias/images/logos/Orange/instagram.svg +0 -8
  417. data/vendor/assets/src/medias/images/logos/Orange/vimeo.svg +0 -8
  418. data/vendor/assets/src/medias/images/logos/Orange/youtube.svg +0 -7
  419. data/vendor/assets/src/medias/images/logos/TikTok.svg +0 -11
  420. data/vendor/assets/src/medias/images/logos/Twitter.svg +0 -35
  421. data/vendor/assets/src/medias/images/logos/X.svg +0 -5
  422. data/vendor/assets/src/medias/images/logos/YouTube.svg +0 -1
  423. data/vendor/assets/src/medias/images/logos/apple.svg +0 -4
  424. data/vendor/assets/src/medias/images/logos/atome.svg +0 -12
  425. data/vendor/assets/src/medias/images/logos/freebsd.png +0 -0
  426. data/vendor/assets/src/medias/images/logos/freebsd.svg +0 -8
  427. data/vendor/assets/src/medias/images/logos/gray/Facebook.svg +0 -8
  428. data/vendor/assets/src/medias/images/logos/gray/TikTok.svg +0 -11
  429. data/vendor/assets/src/medias/images/logos/gray/Twitter.svg +0 -8
  430. data/vendor/assets/src/medias/images/logos/gray/instagram.svg +0 -8
  431. data/vendor/assets/src/medias/images/logos/gray/vimeo.svg +0 -8
  432. data/vendor/assets/src/medias/images/logos/gray/youtube.svg +0 -7
  433. data/vendor/assets/src/medias/images/logos/gray/youtube2.svg +0 -13
  434. data/vendor/assets/src/medias/images/logos/instagram.svg +0 -6
  435. data/vendor/assets/src/medias/images/logos/tiktok_back.svg +0 -1
  436. data/vendor/assets/src/medias/images/logos/vimeo.svg +0 -17
  437. data/vendor/assets/src/medias/images/noise.svg +0 -17
  438. data/vendor/assets/src/medias/images/red_planet.png +0 -0
  439. data/vendor/assets/src/medias/images/tile.png +0 -0
  440. data/vendor/assets/src/medias/texts/lorem.txt +0 -1
  441. data/vendor/assets/src/medias/utils/infos/color.rb +0 -29
  442. data/vendor/assets/src/medias/utils/infos/width.rb +0 -25
  443. data/vendor/assets/src/medias/videos/video_missing.mp4 +0 -0
  444. data/vendor/assets/src-tauri/.gitignore +0 -4
  445. data/vendor/assets/src-tauri/Cargo.toml +0 -27
  446. data/vendor/assets/src-tauri/build.rs +0 -3
  447. data/vendor/assets/src-tauri/icons/128x128.png +0 -0
  448. data/vendor/assets/src-tauri/icons/128x128@2x.png +0 -0
  449. data/vendor/assets/src-tauri/icons/32x32.png +0 -0
  450. data/vendor/assets/src-tauri/icons/Square107x107Logo.png +0 -0
  451. data/vendor/assets/src-tauri/icons/Square142x142Logo.png +0 -0
  452. data/vendor/assets/src-tauri/icons/Square150x150Logo.png +0 -0
  453. data/vendor/assets/src-tauri/icons/Square284x284Logo.png +0 -0
  454. data/vendor/assets/src-tauri/icons/Square30x30Logo.png +0 -0
  455. data/vendor/assets/src-tauri/icons/Square310x310Logo.png +0 -0
  456. data/vendor/assets/src-tauri/icons/Square44x44Logo.png +0 -0
  457. data/vendor/assets/src-tauri/icons/Square71x71Logo.png +0 -0
  458. data/vendor/assets/src-tauri/icons/Square89x89Logo.png +0 -0
  459. data/vendor/assets/src-tauri/icons/StoreLogo.png +0 -0
  460. data/vendor/assets/src-tauri/icons/icon.icns +0 -0
  461. data/vendor/assets/src-tauri/icons/icon.ico +0 -0
  462. data/vendor/assets/src-tauri/icons/icon.png +0 -0
  463. data/vendor/assets/src-tauri/src/main.rs +0 -71
  464. data/vendor/assets/src-tauri/tauri.conf.json +0 -70
  465. data/vendor/assets/src-wasm/wasm/wasi-vfs-osx_arm +0 -0
  466. data/vendor/assets/src-wasm/wasm/wasi-vfs-osx_x86 +0 -0
  467. data/vendor/assets/src-wasm/wasm/wasi-vfs-unix +0 -0
  468. data/vendor/assets/src-wasm/wasm/wasi-vfs.exe +0 -0
  469. /data/vendor/assets/{src → build}/favicon.ico +0 -0
  470. /data/vendor/assets/{src/js/third_parties → build/js}/ping.min.js +0 -0
  471. /data/vendor/assets/{src → build}/js/third_parties/interact.min.js.map +0 -0
  472. /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'