atome 0.4.7.0 → 0.5.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +7 -4
  4. data/Rakefile +22 -13
  5. data/app_builder_helpers/Rakefile +63 -21
  6. data/exe/atome +91 -45
  7. data/lib/atome/atome_meta_engine.rb +132 -0
  8. data/lib/atome/extensions/atome.rb +41 -0
  9. data/lib/atome/{kernel/helpers → extensions}/geolocation.rb +0 -0
  10. data/lib/atome/{kernel/helpers → extensions}/ping.rb +0 -0
  11. data/lib/atome/{kernel/helpers → extensions}/sha.rb +3 -1
  12. data/lib/atome/genesis/generators/atome.rb +13 -0
  13. data/lib/atome/{renderers/headless/properties/generator.rb → genesis/generators/communication.rb} +2 -0
  14. data/lib/atome/genesis/generators/effect.rb +6 -0
  15. data/lib/atome/genesis/generators/event.rb +5 -0
  16. data/lib/atome/genesis/generators/geometry.rb +6 -0
  17. data/lib/atome/genesis/generators/identity.rb +15 -0
  18. data/lib/atome/genesis/generators/material.rb +10 -0
  19. data/lib/atome/genesis/generators/spatial.rb +12 -0
  20. data/lib/atome/genesis/generators/utility.rb +14 -0
  21. data/lib/atome/genesis/genesis.rb +51 -0
  22. data/lib/atome/genesis/sparkle.rb +58 -0
  23. data/lib/atome/helpers/color_helper/color/cmyk.rb +263 -0
  24. data/lib/atome/helpers/color_helper/color/css.rb +7 -0
  25. data/lib/atome/helpers/color_helper/color/grayscale.rb +197 -0
  26. data/lib/atome/helpers/color_helper/color/hsl.rb +240 -0
  27. data/lib/atome/helpers/color_helper/color/palette/adobecolor.rb +260 -0
  28. data/lib/atome/helpers/color_helper/color/palette/gimp.rb +104 -0
  29. data/lib/atome/helpers/color_helper/color/palette/monocontrast.rb +164 -0
  30. data/lib/atome/helpers/color_helper/color/palette.rb +4 -0
  31. data/lib/atome/helpers/color_helper/color/rgb/colors.rb +167 -0
  32. data/lib/atome/helpers/color_helper/color/rgb/contrast.rb +57 -0
  33. data/lib/atome/helpers/color_helper/color/rgb/metallic.rb +28 -0
  34. data/lib/atome/helpers/color_helper/color/rgb.rb +715 -0
  35. data/lib/atome/helpers/color_helper/color/yiq.rb +62 -0
  36. data/lib/atome/helpers/color_helper/color.rb +196 -0
  37. data/lib/atome/helpers/essentials.rb +42 -0
  38. data/lib/atome/helpers/sanitizer.rb +42 -0
  39. data/lib/atome/helpers/utilities.rb +57 -0
  40. data/lib/atome/kernel/essentials.rb +30 -0
  41. data/lib/atome/kernel/universe.rb +75 -26
  42. data/lib/atome/presets/atome.rb +66 -0
  43. data/lib/atome/processors/utilities.rb +10 -0
  44. data/lib/atome/renderers/browser/atome.rb +95 -0
  45. data/lib/atome/renderers/browser/browser.rb +158 -0
  46. data/lib/atome/renderers/browser/effect.rb +23 -0
  47. data/lib/atome/renderers/browser/event.rb +9 -0
  48. data/lib/atome/renderers/browser/geometry.rb +11 -0
  49. data/lib/atome/renderers/browser/identity.rb +20 -0
  50. data/lib/atome/renderers/browser/material.rb +43 -0
  51. data/lib/atome/renderers/{opal → browser}/opal_browser.rb +0 -2
  52. data/lib/atome/renderers/browser/spatial.rb +22 -0
  53. data/lib/atome/renderers/browser/utility.rb +26 -0
  54. data/lib/atome/renderers/html/atome.rb +47 -0
  55. data/lib/atome/renderers/html/effect.rb +19 -0
  56. data/lib/atome/renderers/html/event.rb +9 -0
  57. data/lib/atome/renderers/html/geometry.rb +11 -0
  58. data/lib/atome/renderers/html/html.rb +42 -0
  59. data/lib/atome/renderers/html/identity.rb +14 -0
  60. data/lib/atome/renderers/html/opal_browser.rb +6 -0
  61. data/lib/atome/renderers/html/spatial.rb +28 -0
  62. data/lib/atome/renderers/html/utility.rb +15 -0
  63. data/lib/atome/renderers/opal/atome_opal_extensions.rb +1 -1
  64. data/lib/atome/renderers/opal/extensions/atome.rb +29 -0
  65. data/lib/atome/renderers/opal/opal.rb +4 -0
  66. data/lib/atome/version.rb +1 -2
  67. data/lib/atome.rb +22 -45
  68. data/vendor/assets/application/index.rb +3 -1
  69. data/vendor/assets/application/required_example.rb +1 -0
  70. data/{lib/atome/renderers/headless/headless.rb → vendor/assets/aui.rb} +0 -0
  71. data/vendor/assets/build/css/style.css +51 -0
  72. data/vendor/assets/build/index.html +10 -7
  73. data/vendor/assets/build/js/atome/atome.js +61 -61
  74. data/{lib/atome/renderers/server/server.rb → vendor/assets/build/medias/rubies/examples/_animation.rb} +0 -0
  75. data/vendor/assets/build/medias/rubies/examples/_code.rb +12 -0
  76. data/vendor/assets/build/medias/rubies/examples/_id.rb +14 -0
  77. data/vendor/assets/build/medias/rubies/examples/_link.rb +17 -0
  78. data/vendor/assets/build/medias/rubies/examples/{on.rb → _on.rb} +3 -1
  79. data/vendor/assets/build/medias/rubies/examples/{read.rb → _read.rb} +2 -0
  80. data/vendor/assets/build/medias/rubies/examples/_refresh.rb +9 -0
  81. data/vendor/assets/build/medias/rubies/examples/atome.new.rb +13 -10
  82. data/vendor/assets/build/medias/rubies/examples/auto_height.rb +2 -0
  83. data/vendor/assets/build/medias/rubies/examples/auto_width.rb +2 -0
  84. data/vendor/assets/build/medias/rubies/examples/blur.rb +4 -0
  85. data/vendor/assets/build/medias/rubies/examples/bottom.rb +3 -1
  86. data/vendor/assets/build/medias/rubies/examples/box.rb +15 -8
  87. data/vendor/assets/build/medias/rubies/examples/circle.rb +2 -0
  88. data/vendor/assets/build/medias/rubies/examples/clear.rb +2 -1
  89. data/vendor/assets/build/medias/rubies/examples/color.rb +47 -8
  90. data/vendor/assets/build/medias/rubies/examples/create_atome_in_atome.rb +2 -0
  91. data/vendor/assets/build/medias/rubies/examples/delete.rb +7 -0
  92. data/vendor/assets/build/medias/rubies/examples/drag.rb +1 -0
  93. data/vendor/assets/build/medias/rubies/examples/element.rb +6 -0
  94. data/vendor/assets/build/medias/rubies/examples/get_renderer_list.rb +3 -1
  95. data/vendor/assets/build/medias/rubies/examples/grab.rb +2 -0
  96. data/vendor/assets/build/medias/rubies/examples/height.rb +2 -0
  97. data/vendor/assets/build/medias/rubies/examples/image.rb +6 -2
  98. data/vendor/assets/build/medias/rubies/examples/left.rb +2 -0
  99. data/vendor/assets/build/medias/rubies/examples/monitoring.rb +20 -0
  100. data/vendor/assets/build/medias/rubies/examples/parent.rb +7 -5
  101. data/vendor/assets/build/medias/rubies/examples/repeat.rb +2 -0
  102. data/vendor/assets/build/medias/rubies/examples/right.rb +3 -1
  103. data/vendor/assets/build/medias/rubies/examples/schedule.rb +0 -4
  104. data/vendor/assets/build/medias/rubies/examples/shadow.rb +30 -0
  105. data/vendor/assets/build/medias/rubies/examples/text.rb +21 -7
  106. data/vendor/assets/build/medias/rubies/examples/touch.rb +2 -0
  107. data/vendor/assets/build/medias/rubies/examples/video.rb +2 -2
  108. data/vendor/assets/build/medias/rubies/examples/web.rb +2 -2
  109. data/vendor/assets/server/atome_server.rb +3 -5
  110. metadata +74 -174
  111. data/lib/atome/atome_native_extensions.rb +0 -5
  112. data/lib/atome/extensions/helper.rb +0 -112
  113. data/lib/atome/kernel/atome.rb +0 -99
  114. data/lib/atome/kernel/generators/generator.rb +0 -517
  115. data/lib/atome/kernel/generators/genesis.rb +0 -277
  116. data/lib/atome/kernel/generators/sanitizer.rb +0 -73
  117. data/lib/atome/kernel/generators/shapes.rb +0 -55
  118. data/lib/atome/kernel/helpers/internal_methods.rb +0 -173
  119. data/lib/atome/kernel/helpers/utilities.rb +0 -39
  120. data/lib/atome/kernel/properties/essential.rb +0 -77
  121. data/lib/atome/kernel/sparkle.rb +0 -38
  122. data/lib/atome/renderers/opal/properties/generator.rb +0 -1
  123. data/lib/atome/renderers/renderer.rb +0 -13
  124. data/lib/atome/renderers/server/properties/generator.rb +0 -9
  125. data/vendor/assets/build/js/application.js +0 -0
  126. data/vendor/assets/build/medias/audios/guitar.wav +0 -0
  127. data/vendor/assets/build/medias/images/beach.jpg +0 -0
  128. data/vendor/assets/build/medias/rubies/examples/Old_examples/!demos.rb +0 -111
  129. data/vendor/assets/build/medias/rubies/examples/Old_examples/action.rb +0 -12
  130. data/vendor/assets/build/medias/rubies/examples/Old_examples/add.rb +0 -26
  131. data/vendor/assets/build/medias/rubies/examples/Old_examples/alignment.rb +0 -27
  132. data/vendor/assets/build/medias/rubies/examples/Old_examples/animation.rb +0 -92
  133. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_as_property.rb +0 -20
  134. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_list.rb +0 -4
  135. data/vendor/assets/build/medias/rubies/examples/Old_examples/atomiser.rb +0 -17
  136. data/vendor/assets/build/medias/rubies/examples/Old_examples/attach_extract.rb +0 -13
  137. data/vendor/assets/build/medias/rubies/examples/Old_examples/authorisation.rb +0 -22
  138. data/vendor/assets/build/medias/rubies/examples/Old_examples/batch.rb +0 -6
  139. data/vendor/assets/build/medias/rubies/examples/Old_examples/blend.rb +0 -15
  140. data/vendor/assets/build/medias/rubies/examples/Old_examples/blur.rb +0 -9
  141. data/vendor/assets/build/medias/rubies/examples/Old_examples/border.rb +0 -9
  142. data/vendor/assets/build/medias/rubies/examples/Old_examples/calendar.rb +0 -5
  143. data/vendor/assets/build/medias/rubies/examples/Old_examples/capture.rb +0 -57
  144. data/vendor/assets/build/medias/rubies/examples/Old_examples/center.rb +0 -21
  145. data/vendor/assets/build/medias/rubies/examples/Old_examples/child.rb +0 -18
  146. data/vendor/assets/build/medias/rubies/examples/Old_examples/clear.rb +0 -21
  147. data/vendor/assets/build/medias/rubies/examples/Old_examples/clip.rb +0 -11
  148. data/vendor/assets/build/medias/rubies/examples/Old_examples/code.rb +0 -7
  149. data/vendor/assets/build/medias/rubies/examples/Old_examples/code_editor.rb +0 -26
  150. data/vendor/assets/build/medias/rubies/examples/Old_examples/collaborate.rb +0 -115
  151. data/vendor/assets/build/medias/rubies/examples/Old_examples/convert_to_px.rb +0 -14
  152. data/vendor/assets/build/medias/rubies/examples/Old_examples/copy_paste.rb +0 -35
  153. data/vendor/assets/build/medias/rubies/examples/Old_examples/current_code.rb +0 -14
  154. data/vendor/assets/build/medias/rubies/examples/Old_examples/cursor.rb +0 -3
  155. data/vendor/assets/build/medias/rubies/examples/Old_examples/data.rb +0 -11
  156. data/vendor/assets/build/medias/rubies/examples/Old_examples/database.rb +0 -29
  157. data/vendor/assets/build/medias/rubies/examples/Old_examples/delete.rb +0 -12
  158. data/vendor/assets/build/medias/rubies/examples/Old_examples/display.rb +0 -19
  159. data/vendor/assets/build/medias/rubies/examples/Old_examples/disposition.rb +0 -10
  160. data/vendor/assets/build/medias/rubies/examples/Old_examples/double_and_long_touch.rb +0 -23
  161. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag.rb +0 -61
  162. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag_and_drop_import.rb +0 -1
  163. data/vendor/assets/build/medias/rubies/examples/Old_examples/drop.rb +0 -23
  164. data/vendor/assets/build/medias/rubies/examples/Old_examples/duplicate.rb +0 -11
  165. data/vendor/assets/build/medias/rubies/examples/Old_examples/edit.rb +0 -6
  166. data/vendor/assets/build/medias/rubies/examples/Old_examples/eval.rb +0 -9
  167. data/vendor/assets/build/medias/rubies/examples/Old_examples/extract_detach.rb +0 -23
  168. data/vendor/assets/build/medias/rubies/examples/Old_examples/fill.rb +0 -10
  169. data/vendor/assets/build/medias/rubies/examples/Old_examples/find.rb +0 -37
  170. data/vendor/assets/build/medias/rubies/examples/Old_examples/fit.rb +0 -44
  171. data/vendor/assets/build/medias/rubies/examples/Old_examples/fullscreen.rb +0 -28
  172. data/vendor/assets/build/medias/rubies/examples/Old_examples/generate.rb +0 -7
  173. data/vendor/assets/build/medias/rubies/examples/Old_examples/gradient.rb +0 -24
  174. data/vendor/assets/build/medias/rubies/examples/Old_examples/group.rb +0 -21
  175. data/vendor/assets/build/medias/rubies/examples/Old_examples/helper.rb +0 -64
  176. data/vendor/assets/build/medias/rubies/examples/Old_examples/history.rb +0 -7
  177. data/vendor/assets/build/medias/rubies/examples/Old_examples/hue.rb +0 -10
  178. data/vendor/assets/build/medias/rubies/examples/Old_examples/input_text.rb +0 -54
  179. data/vendor/assets/build/medias/rubies/examples/Old_examples/insert_attach.rb +0 -13
  180. data/vendor/assets/build/medias/rubies/examples/Old_examples/internationalisation.rb +0 -10
  181. data/vendor/assets/build/medias/rubies/examples/Old_examples/key.rb +0 -19
  182. data/vendor/assets/build/medias/rubies/examples/Old_examples/keyboard_shortcut.rb +0 -69
  183. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_methods.rb +0 -4
  184. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_types.rb +0 -4
  185. data/vendor/assets/build/medias/rubies/examples/Old_examples/listen.rb +0 -47
  186. data/vendor/assets/build/medias/rubies/examples/Old_examples/mail.rb +0 -9
  187. data/vendor/assets/build/medias/rubies/examples/Old_examples/map.rb +0 -6
  188. data/vendor/assets/build/medias/rubies/examples/Old_examples/mask.rb +0 -15
  189. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_recorder.rb +0 -24
  190. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_streaming.rb +0 -41
  191. data/vendor/assets/build/medias/rubies/examples/Old_examples/meteo.rb +0 -41
  192. data/vendor/assets/build/medias/rubies/examples/Old_examples/methods_chaining.rb +0 -8
  193. data/vendor/assets/build/medias/rubies/examples/Old_examples/midi.rb +0 -37
  194. data/vendor/assets/build/medias/rubies/examples/Old_examples/monitoring.rb +0 -47
  195. data/vendor/assets/build/medias/rubies/examples/Old_examples/mulitrendering.rb +0 -7
  196. data/vendor/assets/build/medias/rubies/examples/Old_examples/noise_gradient_texture.rb +0 -26
  197. data/vendor/assets/build/medias/rubies/examples/Old_examples/notification.rb +0 -9
  198. data/vendor/assets/build/medias/rubies/examples/Old_examples/object_in_object.rb +0 -13
  199. data/vendor/assets/build/medias/rubies/examples/Old_examples/on_resize.rb +0 -12
  200. data/vendor/assets/build/medias/rubies/examples/Old_examples/over.rb +0 -15
  201. data/vendor/assets/build/medias/rubies/examples/Old_examples/overflow.rb +0 -22
  202. data/vendor/assets/build/medias/rubies/examples/Old_examples/parameter.rb +0 -14
  203. data/vendor/assets/build/medias/rubies/examples/Old_examples/parent.rb +0 -19
  204. data/vendor/assets/build/medias/rubies/examples/Old_examples/particle.rb +0 -15
  205. data/vendor/assets/build/medias/rubies/examples/Old_examples/pay.rb +0 -7
  206. data/vendor/assets/build/medias/rubies/examples/Old_examples/ping.rb +0 -7
  207. data/vendor/assets/build/medias/rubies/examples/Old_examples/play.rb +0 -24
  208. data/vendor/assets/build/medias/rubies/examples/Old_examples/play_audio.rb +0 -6
  209. data/vendor/assets/build/medias/rubies/examples/Old_examples/position.rb +0 -7
  210. data/vendor/assets/build/medias/rubies/examples/Old_examples/read_file.rb +0 -9
  211. data/vendor/assets/build/medias/rubies/examples/Old_examples/reboot.rb +0 -15
  212. data/vendor/assets/build/medias/rubies/examples/Old_examples/refresh.rb +0 -17
  213. data/vendor/assets/build/medias/rubies/examples/Old_examples/remote_server.rb +0 -31
  214. data/vendor/assets/build/medias/rubies/examples/Old_examples/render.rb +0 -17
  215. data/vendor/assets/build/medias/rubies/examples/Old_examples/repeat.rb +0 -19
  216. data/vendor/assets/build/medias/rubies/examples/Old_examples/require_remote.rb +0 -3
  217. data/vendor/assets/build/medias/rubies/examples/Old_examples/restore_atome.rb +0 -11
  218. data/vendor/assets/build/medias/rubies/examples/Old_examples/resurect.rb +0 -30
  219. data/vendor/assets/build/medias/rubies/examples/Old_examples/ruby_version.rb +0 -1
  220. data/vendor/assets/build/medias/rubies/examples/Old_examples/say.rb +0 -3
  221. data/vendor/assets/build/medias/rubies/examples/Old_examples/scale.rb +0 -41
  222. data/vendor/assets/build/medias/rubies/examples/Old_examples/schedule.rb +0 -39
  223. data/vendor/assets/build/medias/rubies/examples/Old_examples/scroll.rb +0 -9
  224. data/vendor/assets/build/medias/rubies/examples/Old_examples/select.rb +0 -32
  225. data/vendor/assets/build/medias/rubies/examples/Old_examples/selector.rb +0 -6
  226. data/vendor/assets/build/medias/rubies/examples/Old_examples/shadow.rb +0 -30
  227. data/vendor/assets/build/medias/rubies/examples/Old_examples/shape_with_path.rb +0 -7
  228. data/vendor/assets/build/medias/rubies/examples/Old_examples/size.rb +0 -109
  229. data/vendor/assets/build/medias/rubies/examples/Old_examples/smooth.rb +0 -5
  230. data/vendor/assets/build/medias/rubies/examples/Old_examples/speech_renderer.rb +0 -5
  231. data/vendor/assets/build/medias/rubies/examples/Old_examples/synth.rb +0 -6
  232. data/vendor/assets/build/medias/rubies/examples/Old_examples/system.rb +0 -3
  233. data/vendor/assets/build/medias/rubies/examples/Old_examples/tags.rb +0 -18
  234. data/vendor/assets/build/medias/rubies/examples/Old_examples/text.rb +0 -33
  235. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_selection.rb +0 -33
  236. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_to_midi.rb +0 -22
  237. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch.rb +0 -23
  238. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch_stop_propagation.rb +0 -27
  239. data/vendor/assets/build/medias/rubies/examples/Old_examples/treat_object_in_object.rb +0 -26
  240. data/vendor/assets/build/medias/rubies/examples/Old_examples/type_mutations.rb +0 -27
  241. data/vendor/assets/build/medias/rubies/examples/Old_examples/video_callback.rb +0 -46
  242. data/vendor/assets/build/medias/rubies/examples/Old_examples/view_mode.rb +0 -29
  243. data/vendor/assets/build/medias/rubies/examples/Old_examples/virtual_events.rb +0 -17
  244. data/vendor/assets/build/medias/rubies/examples/Old_examples/visual.rb +0 -23
  245. data/vendor/assets/build/medias/rubies/examples/Old_examples/vr_display.rb +0 -5
  246. data/vendor/assets/build/medias/rubies/examples/Old_examples/wait.rb +0 -21
  247. data/vendor/assets/build/medias/rubies/examples/Old_examples/web.rb +0 -10
  248. data/vendor/assets/build/medias/rubies/examples/Old_examples/web_address_bar.rb +0 -14
  249. data/vendor/assets/build/medias/rubies/examples/Old_examples/websocket.rb +0 -16
  250. data/vendor/assets/build/medias/rubies/examples/Old_examples/webstate.rb +0 -10
  251. data/vendor/assets/build/medias/rubies/examples/animation.rb +0 -0
  252. data/vendor/assets/build/medias/rubies/examples/code.rb +0 -5
  253. data/vendor/assets/build/medias/rubies/examples/link.rb +0 -11
  254. data/vendor/assets/build/medias/videos/avengers.mp4 +0 -0
  255. data/vendor/assets/build/medias/videos/lion_king.mp4 +0 -0
  256. data/vendor/assets/build/medias/videos/madmax.mp4 +0 -0
  257. data/vendor/assets/build/medias/videos/starwars.mov +0 -0
  258. data/vendor/assets/build/medias/videos/superman.mp4 +0 -0
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+
5
+ generator.build_particle(:width)
6
+ generator.build_particle(:height)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+
5
+ generator.build_particle(:type)
6
+ generator.build_particle(:parents)
7
+ generator.build_particle(:children)
8
+ generator.build_particle(:id)
9
+
10
+ generator.build_optional_methods(:pre_save_parents) do |parents_id_found|
11
+ parents_id_found.each do |parents_id|
12
+ parents_found = grab(parents_id)
13
+ parents_found.children << id if parents_found
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+
5
+ generator.build_particle(:red)
6
+ generator.build_particle(:green)
7
+ generator.build_particle(:blue)
8
+ generator.build_particle(:alpha)
9
+ generator.build_particle(:visual)
10
+ generator.build_particle(:overflow)
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+ # create particles
5
+ generator.build_particle(:left) do |_params, user_proc|
6
+ instance_exec(&user_proc) if user_proc.is_a?(Proc)
7
+ end
8
+
9
+ generator.build_particle(:right)
10
+ generator.build_particle(:top)
11
+ generator.build_particle(:bottom)
12
+ generator.build_particle(:direction)
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+
5
+ generator.build_particle(:renderers)
6
+ generator.build_particle(:bloc)
7
+ generator.build_particle(:broadcast)
8
+ generator.build_particle(:additional)
9
+ generator.build_particle(:data)
10
+ generator.build_particle(:delete) do
11
+ Universe.delete(@atome[:id])
12
+ end
13
+ generator.build_particle(:clear)
14
+ generator.build_particle(:path)
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ # allow to access Atome class using only a uniq atome
4
+ class Genesis
5
+ class << self
6
+ def generator
7
+ Atome.new
8
+ end
9
+ end
10
+ end
11
+
12
+ # Genesis method here
13
+ class Atome
14
+ def build_particle(particle_name, &particle_proc)
15
+ # we add the new method to the particle's collection of methods
16
+ Universe.add_to_particle_list(particle_name)
17
+ auto_render_generator(particle_name)
18
+ new_particle(particle_name, &particle_proc)
19
+ additional_particle_methods(particle_name, &particle_proc)
20
+ end
21
+
22
+ def build_atome(atome_name, &atome_proc)
23
+ # we add the new method to the atome's collection of methods
24
+ Universe.add_to_atome_list(atome_name)
25
+ auto_render_generator(atome_name)
26
+ auto_sanitizer_generator(atome_name)
27
+ new_atome(atome_name, &atome_proc)
28
+ end
29
+
30
+ def auto_sanitizer_generator(element)
31
+ build_sanitizer_method("sanitize_#{element}")
32
+ end
33
+ def auto_render_generator(element)
34
+ Universe.renderer_list.each do |render_engine|
35
+ build_render_method("#{render_engine}_#{element}")
36
+ end
37
+ end
38
+
39
+ def build_render_method(renderer_name, &method_proc)
40
+ new_render_engine(renderer_name, &method_proc)
41
+ end
42
+
43
+ def build_sanitizer_method(sanitizer_name)
44
+ new_atome_sanitizer(sanitizer_name)
45
+ end
46
+
47
+
48
+ def build_optional_methods(method_name, &method_proc)
49
+ Universe.add_optionals_methods(method_name.to_sym, &method_proc)
50
+ end
51
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ # let's create the Universe
4
+ def eval_protection
5
+ binding
6
+ end
7
+
8
+ # Let's set the default's parameters according to ruby interpreter
9
+ if RUBY_ENGINE.downcase == 'opal'
10
+ Essentials.new_default_params({ render_engines: [:browser] })
11
+ else
12
+ Essentials.new_default_params({ render_engines: [:headless] })
13
+ eval "require 'atome/extensions/geolocation'", eval_protection, __FILE__, __LINE__
14
+ eval "require 'atome/extensions/ping'", eval_protection, __FILE__, __LINE__
15
+ eval "require 'atome/extensions/sha'", eval_protection, __FILE__, __LINE__
16
+ end
17
+
18
+ # now let's get the default render engine
19
+ default_render = Essentials.default_params[:render_engines]
20
+
21
+ Universe.current_user = :jeezs
22
+ puts "application identity: #{Universe.app_identity}"
23
+ puts "atome version: #{Atome::VERSION}"
24
+ puts "current host: #{Universe.current_machine}"
25
+ puts "current user: #{Universe.current_user}"
26
+
27
+ Atome.new(
28
+ { element: { renderers: [], id: :eDen, type: :element,
29
+ parents: [], children: [] } }
30
+ )
31
+
32
+ Atome.new(
33
+ { element: { renderers: [], id: :user_view, type: :element,
34
+ parents: [:eDen], children: [] } }
35
+ )
36
+
37
+ Atome.new(
38
+ { shape: { renderers: default_render, id: :view, type: :shape, parents: [:user_view], children: [],
39
+ left: 0, right: 0, top: 0, bottom: 0, overflow: :auto,
40
+ color: { renderers: default_render, id: :view_color, type: :color, parents: [:view],
41
+ red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } } }
42
+ )
43
+
44
+ # init basic object for atome environment
45
+
46
+ # Atome.new is used to create a new atome using best performances but params must be formatted and ordered correctly
47
+
48
+ # use atome.atome to create a new atome using a more permissive syntax less performances but params must be formatted
49
+ # and ordered correctly
50
+
51
+ # Atome.atome ids the easiest way to create a new atome
52
+ # Atome.atome({
53
+ # shape: { left: 0, right: 0, top: 0, bottom: 0, id: :view, color: { id: :c1, render: [:headless],
54
+ # red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } } })
55
+
56
+ # WARNING: when using Atome.new syntax , you must get your object using the .atome
57
+ # example to get the atome above : use a.shape.left and not a.left it wont access the physical object
58
+ # initialize Universe
@@ -0,0 +1,263 @@
1
+ # An CMYK colour object. CMYK (cyan, magenta, yellow, and black) colours are
2
+ # based on additive percentages of ink. A CMYK colour of (0.3, 0, 0.8, 0.3)
3
+ # would be mixed from 30% cyan, 0% magenta, 80% yellow, and 30% black.
4
+ # Primarily used in four-colour printing processes.
5
+ class Color::CMYK
6
+ include Color
7
+
8
+ # The format of a DeviceCMYK colour for PDF. In color-tools 2.0 this will
9
+ # be removed from this package and added back as a modification by the
10
+ # PDF::Writer package.
11
+ PDF_FORMAT_STR = "%.3f %.3f %.3f %.3f %s"
12
+
13
+ # Coerces the other Color object into CMYK.
14
+ def coerce(other)
15
+ other.to_cmyk
16
+ end
17
+
18
+ class << self
19
+ # Creates a CMYK colour object from fractional values 0..1.
20
+ #
21
+ # Color::CMYK.from_fraction(0.3, 0, 0.8, 0.3)
22
+ def from_fraction(c = 0, m = 0, y = 0, k = 0, &block)
23
+ new(c, m, y, k, 1.0, &block)
24
+ end
25
+
26
+ # Creates a CMYK colour object from percentages. Internally, the colour is
27
+ # managed as fractional values 0..1.
28
+ #
29
+ # Color::CMYK.new(30, 0, 80, 30)
30
+ def from_percent(c = 0, m = 0, y = 0, k = 0, &block)
31
+ new(c, m, y, k, &block)
32
+ end
33
+ end
34
+
35
+ # Creates a CMYK colour object from percentages. Internally, the colour is
36
+ # managed as fractional values 0..1.
37
+ #
38
+ # Color::CMYK.new(30, 0, 80, 30)
39
+ def initialize(c = 0, m = 0, y = 0, k = 0, radix = 100.0, &block) # :yields self:
40
+ @c, @m, @y, @k = [ c, m, y, k ].map { |v| Color.normalize(v / radix) }
41
+ block.call(self) if block
42
+ end
43
+
44
+ # Present the colour as a DeviceCMYK fill colour string for PDF. This will
45
+ # be removed from the default package in color-tools 2.0.
46
+ def pdf_fill
47
+ PDF_FORMAT_STR % [ @c, @m, @y, @k, "k" ]
48
+ end
49
+
50
+ # Present the colour as a DeviceCMYK stroke colour string for PDF. This
51
+ # will be removed from the default package in color-tools 2.0.
52
+ def pdf_stroke
53
+ PDF_FORMAT_STR % [ @c, @m, @y, @k, "K" ]
54
+ end
55
+
56
+ # Present the colour as an RGB HTML/CSS colour string (e.g., "#aabbcc").
57
+ # Note that this will perform a #to_rgb operation using the default
58
+ # conversion formula.
59
+ def html
60
+ to_rgb.html
61
+ end
62
+
63
+ # Present the colour as an RGB HTML/CSS colour string (e.g., "rgb(0%, 50%,
64
+ # 100%)"). Note that this will perform a #to_rgb operation using the
65
+ # default conversion formula.
66
+ def css_rgb
67
+ to_rgb.css_rgb
68
+ end
69
+
70
+ # Present the colour as an RGBA (with alpha) HTML/CSS colour string (e.g.,
71
+ # "rgb(0%, 50%, 100%, 1)"). Note that this will perform a #to_rgb
72
+ # operation using the default conversion formula.
73
+ def css_rgba(alpha = 1)
74
+ to_rgb.css_rgba(alpha)
75
+ end
76
+
77
+ # Present the colour as an HSL HTML/CSS colour string (e.g., "hsl(180,
78
+ # 25%, 35%)"). Note that this will perform a #to_hsl operation using the
79
+ # default conversion formula.
80
+ def css_hsl
81
+ to_hsl.css_hsl
82
+ end
83
+
84
+ # Present the colour as an HSLA (with alpha) HTML/CSS colour string (e.g.,
85
+ # "hsla(180, 25%, 35%, 1)"). Note that this will perform a #to_hsl
86
+ # operation using the default conversion formula.
87
+ def css_hsla
88
+ to_hsl.css_hsla
89
+ end
90
+
91
+ # Converts the CMYK colour to RGB. Most colour experts strongly suggest
92
+ # that this is not a good idea (some even suggesting that it's a very bad
93
+ # idea). CMYK represents additive percentages of inks on white paper,
94
+ # whereas RGB represents mixed colour intensities on a black screen.
95
+ #
96
+ # However, the colour conversion can be done, and there are two different
97
+ # methods for the conversion that provide slightly different results.
98
+ # Adobe PDF conversions are done with the first form.
99
+ #
100
+ # # Adobe PDF Display Formula
101
+ # r = 1.0 - min(1.0, c + k)
102
+ # g = 1.0 - min(1.0, m + k)
103
+ # b = 1.0 - min(1.0, y + k)
104
+ #
105
+ # # Other
106
+ # r = 1.0 - (c * (1.0 - k) + k)
107
+ # g = 1.0 - (m * (1.0 - k) + k)
108
+ # b = 1.0 - (y * (1.0 - k) + k)
109
+ #
110
+ # If we have a CMYK colour of [33% 66% 83% 25%], the first method will
111
+ # give an approximate RGB colour of (107, 23, 0) or #6b1700. The second
112
+ # method will give an approximate RGB colour of (128, 65, 33) or #804121.
113
+ # Which is correct? Although the colours may seem to be drastically
114
+ # different in the RGB colour space, they are very similar colours,
115
+ # differing mostly in intensity. The first is a darker, slightly redder
116
+ # brown; the second is a lighter brown.
117
+ #
118
+ # Because of this subtlety, both methods are now offered for conversion.
119
+ # The Adobe method is not used by default; to enable it, pass +true+ to
120
+ # #to_rgb.
121
+ #
122
+ # Future versions of Color may offer other conversion mechanisms that
123
+ # offer greater colour fidelity, including recognition of ICC colour
124
+ # profiles.
125
+ def to_rgb(use_adobe_method = false)
126
+ if use_adobe_method
127
+ Color::RGB.from_fraction(*adobe_cmyk_rgb)
128
+ else
129
+ Color::RGB.from_fraction(*standard_cmyk_rgb)
130
+ end
131
+ end
132
+
133
+ # Converts the CMYK colour to a single greyscale value. There are
134
+ # undoubtedly multiple methods for this conversion, but only a minor
135
+ # variant of the Adobe conversion method will be used:
136
+ #
137
+ # g = 1.0 - min(1.0, 0.299 * c + 0.587 * m + 0.114 * y + k)
138
+ #
139
+ # This treats the CMY values similarly to YIQ (NTSC) values and then adds
140
+ # the level of black. This is a variant of the Adobe version because it
141
+ # uses the more precise YIQ (NTSC) conversion values for Y (intensity)
142
+ # rather than the approximates provided by Adobe (0.3, 0.59, and 0.11).
143
+ def to_grayscale
144
+ c = 0.299 * @c.to_f
145
+ m = 0.587 * @m.to_f
146
+ y = 0.114 * @y.to_f
147
+ g = 1.0 - [1.0, c + m + y + @k].min
148
+ Color::GrayScale.from_fraction(g)
149
+ end
150
+ alias to_greyscale to_grayscale
151
+
152
+ def to_cmyk
153
+ self
154
+ end
155
+
156
+ def inspect
157
+ "CMYK [%.2f%%, %.2f%%, %.2f%%, %.2f%%]" % [ cyan, magenta, yellow, black ]
158
+ end
159
+
160
+ # Converts to RGB then YIQ.
161
+ def to_yiq
162
+ to_rgb.to_yiq
163
+ end
164
+
165
+ # Converts to RGB then HSL.
166
+ def to_hsl
167
+ to_rgb.to_hsl
168
+ end
169
+
170
+ # Returns the cyan (C) component of the CMYK colour as a percentage value.
171
+ def cyan
172
+ @c * 100.0
173
+ end
174
+ # Returns the cyan (C) component of the CMYK colour as a value in the
175
+ # range 0.0 .. 1.0.
176
+ def c
177
+ @c
178
+ end
179
+ # Sets the cyan (C) component of the CMYK colour as a percentage value.
180
+ def cyan=(cc)
181
+ @c = Color.normalize(cc / 100.0)
182
+ end
183
+ # Sets the cyan (C) component of the CMYK colour as a value in the range
184
+ # 0.0 .. 1.0.
185
+ def c=(cc)
186
+ @c = Color.normalize(cc)
187
+ end
188
+
189
+ # Returns the magenta (M) component of the CMYK colour as a percentage
190
+ # value.
191
+ def magenta
192
+ @m * 100.0
193
+ end
194
+ # Returns the magenta (M) component of the CMYK colour as a value in the
195
+ # range 0.0 .. 1.0.
196
+ def m
197
+ @m
198
+ end
199
+ # Sets the magenta (M) component of the CMYK colour as a percentage value.
200
+ def magenta=(mm)
201
+ @m = Color.normalize(mm / 100.0)
202
+ end
203
+ # Sets the magenta (M) component of the CMYK colour as a value in the
204
+ # range 0.0 .. 1.0.
205
+ def m=(mm)
206
+ @m = Color.normalize(mm)
207
+ end
208
+
209
+ # Returns the yellow (Y) component of the CMYK colour as a percentage
210
+ # value.
211
+ def yellow
212
+ @y * 100.0
213
+ end
214
+ # Returns the yellow (Y) component of the CMYK colour as a value in the
215
+ # range 0.0 .. 1.0.
216
+ def y
217
+ @y
218
+ end
219
+ # Sets the yellow (Y) component of the CMYK colour as a percentage value.
220
+ def yellow=(yy)
221
+ @y = Color.normalize(yy / 100.0)
222
+ end
223
+ # Sets the yellow (Y) component of the CMYK colour as a value in the range
224
+ # 0.0 .. 1.0.
225
+ def y=(kk)
226
+ @y = Color.normalize(kk)
227
+ end
228
+
229
+ # Returns the black (K) component of the CMYK colour as a percentage
230
+ # value.
231
+ def black
232
+ @k * 100.0
233
+ end
234
+ # Returns the black (K) component of the CMYK colour as a value in the
235
+ # range 0.0 .. 1.0.
236
+ def k
237
+ @k
238
+ end
239
+ # Sets the black (K) component of the CMYK colour as a percentage value.
240
+ def black=(kk)
241
+ @k = Color.normalize(kk / 100.0)
242
+ end
243
+ # Sets the black (K) component of the CMYK colour as a value in the range
244
+ # 0.0 .. 1.0.
245
+ def k=(kk)
246
+ @k = Color.normalize(kk)
247
+ end
248
+
249
+ def to_a
250
+ [ c, m, y, k ]
251
+ end
252
+
253
+ private
254
+ # Implements the Adobe PDF conversion of CMYK to RGB.
255
+ def adobe_cmyk_rgb
256
+ [ @c, @m, @y ].map { |v| 1.0 - [ 1.0, v + @k ].min }
257
+ end
258
+
259
+ # Implements the standard conversion of CMYK to RGB.
260
+ def standard_cmyk_rgb
261
+ [ @c, @m, @y ].map { |v| 1.0 - (v * (1.0 - k) + k) }
262
+ end
263
+ end
@@ -0,0 +1,7 @@
1
+ # This namespace contains some CSS colour names.
2
+ module Color::CSS
3
+ # Returns the RGB colour for name or +nil+ if the name is not valid.
4
+ def self.[](name)
5
+ Color::RGB.by_name(name) { nil }
6
+ end
7
+ end
@@ -0,0 +1,197 @@
1
+ # A colour object representing shades of grey. Used primarily in PDF
2
+ # document creation.
3
+ class Color::GrayScale
4
+ include Color
5
+
6
+ # The format of a DeviceGrey colour for PDF. In color-tools 2.0 this will
7
+ # be removed from this package and added back as a modification by the
8
+ # PDF::Writer package.
9
+ PDF_FORMAT_STR = "%.3f %s"
10
+
11
+ class << self
12
+ # Creates a greyscale colour object from fractional values 0..1.
13
+ #
14
+ # Color::GreyScale.from_fraction(0.5)
15
+ def from_fraction(g = 0, &block)
16
+ new(g, 1.0, &block)
17
+ end
18
+
19
+ # Creates a greyscale colour object from percentages 0..100.
20
+ #
21
+ # Color::GrayScale.from_percent(50)
22
+ def from_percent(g = 0, &block)
23
+ new(g, &block)
24
+ end
25
+ end
26
+
27
+ # Creates a greyscale colour object from percentages 0..100.
28
+ #
29
+ # Color::GrayScale.new(50)
30
+ def initialize(g = 0, radix = 100.0, &block) # :yields self:
31
+ @g = Color.normalize(g / radix)
32
+ block.call if block
33
+ end
34
+
35
+ # Coerces the other Color object to grayscale.
36
+ def coerce(other)
37
+ other.to_grayscale
38
+ end
39
+
40
+ # Present the colour as a DeviceGrey fill colour string for PDF. This will
41
+ # be removed from the default package in color-tools 2.0.
42
+ def pdf_fill
43
+ PDF_FORMAT_STR % [ @g, "g" ]
44
+ end
45
+
46
+ # Present the colour as a DeviceGrey stroke colour string for PDF. This
47
+ # will be removed from the default package in color-tools 2.0.
48
+ def pdf_stroke
49
+ PDF_FORMAT_STR % [ @g, "G" ]
50
+ end
51
+
52
+ def to_255
53
+ [(@g * 255).round, 255].min
54
+ end
55
+ private :to_255
56
+
57
+ # Present the colour as an HTML/CSS colour string.
58
+ def html
59
+ gs = "%02x" % to_255
60
+ "##{gs * 3}"
61
+ end
62
+
63
+ # Present the colour as an RGB HTML/CSS colour string (e.g., "rgb(0%, 50%,
64
+ # 100%)").
65
+ def css_rgb
66
+ "rgb(%3.2f%%, %3.2f%%, %3.2f%%)" % [ gray, gray, gray ]
67
+ end
68
+
69
+ # Present the colour as an RGBA (with alpha) HTML/CSS colour string (e.g.,
70
+ # "rgb(0%, 50%, 100%, 1)").
71
+ def css_rgba(alpha = 1)
72
+ "rgba(%3.2f%%, %3.2f%%, %3.2f%%, %1.2f)" % [ gray, gray, gray, alpha ]
73
+ end
74
+
75
+ # Present the colour as an HSL HTML/CSS colour string (e.g., "hsl(180,
76
+ # 25%, 35%)"). Note that this will perform a #to_hsl operation.
77
+ def css_hsl
78
+ to_hsl.css_hsl
79
+ end
80
+
81
+ # Present the colour as an HSLA (with alpha) HTML/CSS colour string (e.g.,
82
+ # "hsla(180, 25%, 35%, 1)"). Note that this will perform a #to_hsl
83
+ # operation.
84
+ def css_hsla
85
+ to_hsl.css_hsla
86
+ end
87
+
88
+ # Convert the greyscale colour to CMYK.
89
+ def to_cmyk
90
+ k = 1.0 - @g.to_f
91
+ Color::CMYK.from_fraction(0, 0, 0, k)
92
+ end
93
+
94
+ # Convert the greyscale colour to RGB.
95
+ def to_rgb(ignored = true)
96
+ Color::RGB.from_fraction(g, g, g)
97
+ end
98
+
99
+ # Reflexive conversion.
100
+ def to_grayscale
101
+ self
102
+ end
103
+ alias to_greyscale to_grayscale
104
+
105
+ # Lightens the greyscale colour by the stated percent.
106
+ def lighten_by(percent)
107
+ g = [@g + (@g * (percent / 100.0)), 1.0].min
108
+ Color::GrayScale.from_fraction(g)
109
+ end
110
+
111
+ # Darken the greyscale colour by the stated percent.
112
+ def darken_by(percent)
113
+ g = [@g - (@g * (percent / 100.0)), 0.0].max
114
+ Color::GrayScale.from_fraction(g)
115
+ end
116
+
117
+ # Returns the YIQ (NTSC) colour encoding of the greyscale value. This is
118
+ # an approximation, as the values for I and Q are calculated by treating
119
+ # the greyscale value as an RGB value. The Y (intensity or brightness)
120
+ # value is the same as the greyscale value.
121
+ def to_yiq
122
+ y = @g
123
+ i = (@g * 0.596) + (@g * -0.275) + (@g * -0.321)
124
+ q = (@g * 0.212) + (@g * -0.523) + (@g * 0.311)
125
+ Color::YIQ.from_fraction(y, i, q)
126
+ end
127
+
128
+ # Returns the HSL colour encoding of the greyscale value.
129
+ def to_hsl
130
+ Color::HSL.from_fraction(0, 0, @g)
131
+ end
132
+
133
+ # Returns the brightness value for this greyscale value; this is the
134
+ # greyscale value itself.
135
+ def brightness
136
+ @g
137
+ end
138
+
139
+ # Returns the grayscale value as a percentage of white (100% gray is
140
+ # white).
141
+ def gray
142
+ @g * 100.0
143
+ end
144
+ alias grey gray
145
+ # Returns the grayscale value as a fractional value of white in the range
146
+ # 0.0 .. 1.0.
147
+ def g
148
+ @g
149
+ end
150
+ # Sets the grayscale value as a percentage of white.
151
+ def gray=(gg)
152
+ @g = Color.normalize(gg / 100.0)
153
+ end
154
+ alias grey= gray= ;
155
+ # Returns the grayscale value as a fractional value of white in the range
156
+ # 0.0 .. 1.0.
157
+ def g=(gg)
158
+ @g = Color.normalize(gg)
159
+ end
160
+
161
+ # Adds another colour to the current colour. The other colour will be
162
+ # converted to grayscale before addition. This conversion depends upon a
163
+ # #to_grayscale method on the other colour.
164
+ #
165
+ # The addition is done using the grayscale accessor methods to ensure a
166
+ # valid colour in the result.
167
+ def +(other)
168
+ self.class.from_fraction(g + other.to_grayscale.g)
169
+ end
170
+
171
+ # Subtracts another colour to the current colour. The other colour will be
172
+ # converted to grayscale before subtraction. This conversion depends upon
173
+ # a #to_grayscale method on the other colour.
174
+ #
175
+ # The subtraction is done using the grayscale accessor methods to ensure a
176
+ # valid colour in the result.
177
+ def -(other)
178
+ self + (-other)
179
+ end
180
+
181
+ def inspect
182
+ "Gray [%.2f%%]" % [ gray ]
183
+ end
184
+
185
+ def to_a
186
+ [ g ]
187
+ end
188
+
189
+ def -@
190
+ gs = self.dup
191
+ gs.instance_variable_set(:@g, -g)
192
+ gs
193
+ end
194
+ end
195
+
196
+ # A synonym for Color::GrayScale.
197
+ Color::GreyScale = Color::GrayScale