atome 0.4.7.0 → 0.5.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) 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.rb +129 -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 +38 -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 +10 -0
  16. data/lib/atome/genesis/generators/geometry.rb +6 -0
  17. data/lib/atome/genesis/generators/identity.rb +29 -0
  18. data/lib/atome/genesis/generators/material.rb +10 -0
  19. data/lib/atome/genesis/generators/spatial.rb +13 -0
  20. data/lib/atome/genesis/generators/utility.rb +31 -0
  21. data/lib/atome/genesis/genesis.rb +46 -0
  22. data/lib/atome/genesis/sparkle.rb +58 -0
  23. data/lib/atome/helpers/callbacks.rb +12 -0
  24. data/lib/atome/helpers/color_helper/color/cmyk.rb +263 -0
  25. data/lib/atome/helpers/color_helper/color/css.rb +7 -0
  26. data/lib/atome/helpers/color_helper/color/grayscale.rb +197 -0
  27. data/lib/atome/helpers/color_helper/color/hsl.rb +240 -0
  28. data/lib/atome/helpers/color_helper/color/palette/adobecolor.rb +260 -0
  29. data/lib/atome/helpers/color_helper/color/palette/gimp.rb +104 -0
  30. data/lib/atome/helpers/color_helper/color/palette/monocontrast.rb +164 -0
  31. data/lib/atome/helpers/color_helper/color/palette.rb +4 -0
  32. data/lib/atome/helpers/color_helper/color/rgb/colors.rb +167 -0
  33. data/lib/atome/helpers/color_helper/color/rgb/contrast.rb +57 -0
  34. data/lib/atome/helpers/color_helper/color/rgb/metallic.rb +28 -0
  35. data/lib/atome/helpers/color_helper/color/rgb.rb +715 -0
  36. data/lib/atome/helpers/color_helper/color/yiq.rb +62 -0
  37. data/lib/atome/helpers/color_helper/color.rb +196 -0
  38. data/lib/atome/helpers/essentials.rb +42 -0
  39. data/lib/atome/helpers/sanitizer.rb +23 -0
  40. data/lib/atome/helpers/utilities.rb +54 -0
  41. data/lib/atome/kernel/essentials.rb +23 -0
  42. data/lib/atome/kernel/universe.rb +92 -26
  43. data/lib/atome/presets/atome.rb +88 -0
  44. data/lib/atome/processors/utilities.rb +10 -0
  45. data/lib/atome/renderers/browser/atome.rb +108 -0
  46. data/lib/atome/renderers/browser/browser.rb +225 -0
  47. data/lib/atome/renderers/browser/effect.rb +23 -0
  48. data/lib/atome/renderers/browser/event.rb +37 -0
  49. data/lib/atome/renderers/browser/geometry.rb +11 -0
  50. data/lib/atome/renderers/browser/identity.rb +24 -0
  51. data/lib/atome/renderers/browser/material.rb +43 -0
  52. data/lib/atome/renderers/{opal → browser}/opal_browser.rb +0 -2
  53. data/lib/atome/renderers/browser/spatial.rb +23 -0
  54. data/lib/atome/renderers/browser/utility.rb +39 -0
  55. data/lib/atome/renderers/headless/headless.rb +10 -0
  56. data/lib/atome/renderers/headless/utility.rb +6 -0
  57. data/lib/atome/renderers/html/atome.rb +47 -0
  58. data/lib/atome/renderers/html/effect.rb +19 -0
  59. data/lib/atome/renderers/html/event.rb +9 -0
  60. data/lib/atome/renderers/html/geometry.rb +11 -0
  61. data/lib/atome/renderers/html/html.rb +42 -0
  62. data/lib/atome/renderers/html/identity.rb +14 -0
  63. data/lib/atome/renderers/html/opal_browser.rb +6 -0
  64. data/lib/atome/renderers/html/spatial.rb +28 -0
  65. data/lib/atome/renderers/html/utility.rb +17 -0
  66. data/lib/atome/renderers/opal/atome_opal_extensions.rb +1 -1
  67. data/lib/atome/renderers/opal/extensions/atome.rb +29 -0
  68. data/lib/atome/renderers/opal/opal.rb +4 -0
  69. data/lib/atome/renderers/renderer.rb +7 -7
  70. data/lib/atome/renderers/server/server.rb +10 -0
  71. data/lib/atome/renderers/server/utility.rb +6 -0
  72. data/lib/atome/version.rb +1 -2
  73. data/lib/atome.rb +25 -44
  74. data/vendor/assets/application/index.rb +3 -1
  75. data/vendor/assets/application/required_example.rb +1 -0
  76. data/vendor/assets/{build/js/application.js → aui.rb} +0 -0
  77. data/vendor/assets/build/css/style.css +51 -0
  78. data/vendor/assets/build/index.html +7 -8
  79. data/vendor/assets/build/js/atome/atome.js +141 -68
  80. data/vendor/assets/build/medias/rubies/examples/_2_solve.rb +13 -0
  81. data/vendor/assets/build/medias/rubies/examples/{animation.rb → _animation.rb} +0 -0
  82. data/vendor/assets/build/medias/rubies/examples/{drag.rb → _drag.rb} +1 -0
  83. data/vendor/assets/build/medias/rubies/examples/atome.new.rb +13 -10
  84. data/vendor/assets/build/medias/rubies/examples/auto_height.rb +2 -0
  85. data/vendor/assets/build/medias/rubies/examples/auto_width.rb +2 -0
  86. data/vendor/assets/build/medias/rubies/examples/blur.rb +4 -0
  87. data/vendor/assets/build/medias/rubies/examples/bottom.rb +3 -1
  88. data/vendor/assets/build/medias/rubies/examples/box.rb +12 -8
  89. data/vendor/assets/build/medias/rubies/examples/circle.rb +2 -0
  90. data/vendor/assets/build/medias/rubies/examples/clear.rb +2 -1
  91. data/vendor/assets/build/medias/rubies/examples/code.rb +10 -4
  92. data/vendor/assets/build/medias/rubies/examples/color.rb +47 -8
  93. data/vendor/assets/build/medias/rubies/examples/create_atome_in_atome.rb +2 -0
  94. data/vendor/assets/build/medias/rubies/examples/delete.rb +7 -0
  95. data/vendor/assets/build/medias/rubies/examples/element.rb +6 -0
  96. data/vendor/assets/build/medias/rubies/examples/fullscreen.rb +15 -0
  97. data/vendor/assets/build/medias/rubies/examples/get_renderer_list.rb +3 -1
  98. data/vendor/assets/build/medias/rubies/examples/grab.rb +2 -0
  99. data/vendor/assets/build/medias/rubies/examples/height.rb +7 -2
  100. data/vendor/assets/build/medias/rubies/examples/id.rb +14 -0
  101. data/vendor/assets/build/medias/rubies/examples/image.rb +6 -2
  102. data/vendor/assets/build/medias/rubies/examples/left.rb +7 -2
  103. data/vendor/assets/build/medias/rubies/examples/link.rb +12 -3
  104. data/vendor/assets/build/medias/rubies/examples/monitoring.rb +33 -0
  105. data/vendor/assets/build/medias/rubies/examples/on.rb +11 -7
  106. data/vendor/assets/build/medias/rubies/examples/parent.rb +7 -5
  107. data/vendor/assets/build/medias/rubies/examples/read.rb +6 -2
  108. data/vendor/assets/build/medias/rubies/examples/refresh.rb +8 -0
  109. data/vendor/assets/build/medias/rubies/examples/repeat.rb +2 -0
  110. data/vendor/assets/build/medias/rubies/examples/right.rb +3 -1
  111. data/vendor/assets/build/medias/rubies/examples/rotate.rb +2 -0
  112. data/vendor/assets/build/medias/rubies/examples/schedule.rb +8 -11
  113. data/vendor/assets/build/medias/rubies/examples/shadow.rb +30 -0
  114. data/vendor/assets/build/medias/rubies/examples/smooth.rb +2 -0
  115. data/vendor/assets/build/medias/rubies/examples/text.rb +21 -7
  116. data/vendor/assets/build/medias/rubies/examples/top.rb +3 -0
  117. data/vendor/assets/build/medias/rubies/examples/touch.rb +7 -0
  118. data/vendor/assets/build/medias/rubies/examples/video.rb +32 -23
  119. data/vendor/assets/build/medias/rubies/examples/wait.rb +8 -3
  120. data/vendor/assets/build/medias/rubies/examples/web.rb +7 -4
  121. data/vendor/assets/build/medias/rubies/examples/width.rb +6 -2
  122. data/vendor/assets/server/atome_server.rb +3 -5
  123. metadata +76 -164
  124. data/lib/atome/atome_native_extensions.rb +0 -5
  125. data/lib/atome/extensions/helper.rb +0 -112
  126. data/lib/atome/kernel/atome.rb +0 -99
  127. data/lib/atome/kernel/generators/generator.rb +0 -517
  128. data/lib/atome/kernel/generators/genesis.rb +0 -277
  129. data/lib/atome/kernel/generators/sanitizer.rb +0 -73
  130. data/lib/atome/kernel/generators/shapes.rb +0 -55
  131. data/lib/atome/kernel/helpers/internal_methods.rb +0 -173
  132. data/lib/atome/kernel/helpers/utilities.rb +0 -39
  133. data/lib/atome/kernel/properties/essential.rb +0 -77
  134. data/lib/atome/kernel/sparkle.rb +0 -38
  135. data/lib/atome/renderers/opal/properties/generator.rb +0 -1
  136. data/lib/atome/renderers/server/properties/generator.rb +0 -9
  137. data/vendor/assets/build/medias/audios/guitar.wav +0 -0
  138. data/vendor/assets/build/medias/images/beach.jpg +0 -0
  139. data/vendor/assets/build/medias/rubies/examples/Old_examples/!demos.rb +0 -111
  140. data/vendor/assets/build/medias/rubies/examples/Old_examples/action.rb +0 -12
  141. data/vendor/assets/build/medias/rubies/examples/Old_examples/add.rb +0 -26
  142. data/vendor/assets/build/medias/rubies/examples/Old_examples/alignment.rb +0 -27
  143. data/vendor/assets/build/medias/rubies/examples/Old_examples/animation.rb +0 -92
  144. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_as_property.rb +0 -20
  145. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_list.rb +0 -4
  146. data/vendor/assets/build/medias/rubies/examples/Old_examples/atomiser.rb +0 -17
  147. data/vendor/assets/build/medias/rubies/examples/Old_examples/attach_extract.rb +0 -13
  148. data/vendor/assets/build/medias/rubies/examples/Old_examples/authorisation.rb +0 -22
  149. data/vendor/assets/build/medias/rubies/examples/Old_examples/batch.rb +0 -6
  150. data/vendor/assets/build/medias/rubies/examples/Old_examples/blend.rb +0 -15
  151. data/vendor/assets/build/medias/rubies/examples/Old_examples/blur.rb +0 -9
  152. data/vendor/assets/build/medias/rubies/examples/Old_examples/border.rb +0 -9
  153. data/vendor/assets/build/medias/rubies/examples/Old_examples/calendar.rb +0 -5
  154. data/vendor/assets/build/medias/rubies/examples/Old_examples/capture.rb +0 -57
  155. data/vendor/assets/build/medias/rubies/examples/Old_examples/center.rb +0 -21
  156. data/vendor/assets/build/medias/rubies/examples/Old_examples/child.rb +0 -18
  157. data/vendor/assets/build/medias/rubies/examples/Old_examples/clear.rb +0 -21
  158. data/vendor/assets/build/medias/rubies/examples/Old_examples/clip.rb +0 -11
  159. data/vendor/assets/build/medias/rubies/examples/Old_examples/code.rb +0 -7
  160. data/vendor/assets/build/medias/rubies/examples/Old_examples/code_editor.rb +0 -26
  161. data/vendor/assets/build/medias/rubies/examples/Old_examples/collaborate.rb +0 -115
  162. data/vendor/assets/build/medias/rubies/examples/Old_examples/convert_to_px.rb +0 -14
  163. data/vendor/assets/build/medias/rubies/examples/Old_examples/copy_paste.rb +0 -35
  164. data/vendor/assets/build/medias/rubies/examples/Old_examples/current_code.rb +0 -14
  165. data/vendor/assets/build/medias/rubies/examples/Old_examples/cursor.rb +0 -3
  166. data/vendor/assets/build/medias/rubies/examples/Old_examples/data.rb +0 -11
  167. data/vendor/assets/build/medias/rubies/examples/Old_examples/database.rb +0 -29
  168. data/vendor/assets/build/medias/rubies/examples/Old_examples/delete.rb +0 -12
  169. data/vendor/assets/build/medias/rubies/examples/Old_examples/display.rb +0 -19
  170. data/vendor/assets/build/medias/rubies/examples/Old_examples/disposition.rb +0 -10
  171. data/vendor/assets/build/medias/rubies/examples/Old_examples/double_and_long_touch.rb +0 -23
  172. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag.rb +0 -61
  173. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag_and_drop_import.rb +0 -1
  174. data/vendor/assets/build/medias/rubies/examples/Old_examples/drop.rb +0 -23
  175. data/vendor/assets/build/medias/rubies/examples/Old_examples/duplicate.rb +0 -11
  176. data/vendor/assets/build/medias/rubies/examples/Old_examples/edit.rb +0 -6
  177. data/vendor/assets/build/medias/rubies/examples/Old_examples/eval.rb +0 -9
  178. data/vendor/assets/build/medias/rubies/examples/Old_examples/extract_detach.rb +0 -23
  179. data/vendor/assets/build/medias/rubies/examples/Old_examples/fill.rb +0 -10
  180. data/vendor/assets/build/medias/rubies/examples/Old_examples/find.rb +0 -37
  181. data/vendor/assets/build/medias/rubies/examples/Old_examples/fit.rb +0 -44
  182. data/vendor/assets/build/medias/rubies/examples/Old_examples/fullscreen.rb +0 -28
  183. data/vendor/assets/build/medias/rubies/examples/Old_examples/generate.rb +0 -7
  184. data/vendor/assets/build/medias/rubies/examples/Old_examples/gradient.rb +0 -24
  185. data/vendor/assets/build/medias/rubies/examples/Old_examples/group.rb +0 -21
  186. data/vendor/assets/build/medias/rubies/examples/Old_examples/helper.rb +0 -64
  187. data/vendor/assets/build/medias/rubies/examples/Old_examples/history.rb +0 -7
  188. data/vendor/assets/build/medias/rubies/examples/Old_examples/hue.rb +0 -10
  189. data/vendor/assets/build/medias/rubies/examples/Old_examples/input_text.rb +0 -54
  190. data/vendor/assets/build/medias/rubies/examples/Old_examples/insert_attach.rb +0 -13
  191. data/vendor/assets/build/medias/rubies/examples/Old_examples/internationalisation.rb +0 -10
  192. data/vendor/assets/build/medias/rubies/examples/Old_examples/key.rb +0 -19
  193. data/vendor/assets/build/medias/rubies/examples/Old_examples/keyboard_shortcut.rb +0 -69
  194. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_methods.rb +0 -4
  195. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_types.rb +0 -4
  196. data/vendor/assets/build/medias/rubies/examples/Old_examples/listen.rb +0 -47
  197. data/vendor/assets/build/medias/rubies/examples/Old_examples/mail.rb +0 -9
  198. data/vendor/assets/build/medias/rubies/examples/Old_examples/map.rb +0 -6
  199. data/vendor/assets/build/medias/rubies/examples/Old_examples/mask.rb +0 -15
  200. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_recorder.rb +0 -24
  201. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_streaming.rb +0 -41
  202. data/vendor/assets/build/medias/rubies/examples/Old_examples/meteo.rb +0 -41
  203. data/vendor/assets/build/medias/rubies/examples/Old_examples/methods_chaining.rb +0 -8
  204. data/vendor/assets/build/medias/rubies/examples/Old_examples/midi.rb +0 -37
  205. data/vendor/assets/build/medias/rubies/examples/Old_examples/monitoring.rb +0 -47
  206. data/vendor/assets/build/medias/rubies/examples/Old_examples/mulitrendering.rb +0 -7
  207. data/vendor/assets/build/medias/rubies/examples/Old_examples/noise_gradient_texture.rb +0 -26
  208. data/vendor/assets/build/medias/rubies/examples/Old_examples/notification.rb +0 -9
  209. data/vendor/assets/build/medias/rubies/examples/Old_examples/object_in_object.rb +0 -13
  210. data/vendor/assets/build/medias/rubies/examples/Old_examples/on_resize.rb +0 -12
  211. data/vendor/assets/build/medias/rubies/examples/Old_examples/over.rb +0 -15
  212. data/vendor/assets/build/medias/rubies/examples/Old_examples/overflow.rb +0 -22
  213. data/vendor/assets/build/medias/rubies/examples/Old_examples/parameter.rb +0 -14
  214. data/vendor/assets/build/medias/rubies/examples/Old_examples/parent.rb +0 -19
  215. data/vendor/assets/build/medias/rubies/examples/Old_examples/particle.rb +0 -15
  216. data/vendor/assets/build/medias/rubies/examples/Old_examples/pay.rb +0 -7
  217. data/vendor/assets/build/medias/rubies/examples/Old_examples/ping.rb +0 -7
  218. data/vendor/assets/build/medias/rubies/examples/Old_examples/play.rb +0 -24
  219. data/vendor/assets/build/medias/rubies/examples/Old_examples/play_audio.rb +0 -6
  220. data/vendor/assets/build/medias/rubies/examples/Old_examples/position.rb +0 -7
  221. data/vendor/assets/build/medias/rubies/examples/Old_examples/read_file.rb +0 -9
  222. data/vendor/assets/build/medias/rubies/examples/Old_examples/reboot.rb +0 -15
  223. data/vendor/assets/build/medias/rubies/examples/Old_examples/refresh.rb +0 -17
  224. data/vendor/assets/build/medias/rubies/examples/Old_examples/remote_server.rb +0 -31
  225. data/vendor/assets/build/medias/rubies/examples/Old_examples/render.rb +0 -17
  226. data/vendor/assets/build/medias/rubies/examples/Old_examples/repeat.rb +0 -19
  227. data/vendor/assets/build/medias/rubies/examples/Old_examples/require_remote.rb +0 -3
  228. data/vendor/assets/build/medias/rubies/examples/Old_examples/restore_atome.rb +0 -11
  229. data/vendor/assets/build/medias/rubies/examples/Old_examples/resurect.rb +0 -30
  230. data/vendor/assets/build/medias/rubies/examples/Old_examples/ruby_version.rb +0 -1
  231. data/vendor/assets/build/medias/rubies/examples/Old_examples/say.rb +0 -3
  232. data/vendor/assets/build/medias/rubies/examples/Old_examples/scale.rb +0 -41
  233. data/vendor/assets/build/medias/rubies/examples/Old_examples/schedule.rb +0 -39
  234. data/vendor/assets/build/medias/rubies/examples/Old_examples/scroll.rb +0 -9
  235. data/vendor/assets/build/medias/rubies/examples/Old_examples/select.rb +0 -32
  236. data/vendor/assets/build/medias/rubies/examples/Old_examples/selector.rb +0 -6
  237. data/vendor/assets/build/medias/rubies/examples/Old_examples/shadow.rb +0 -30
  238. data/vendor/assets/build/medias/rubies/examples/Old_examples/shape_with_path.rb +0 -7
  239. data/vendor/assets/build/medias/rubies/examples/Old_examples/size.rb +0 -109
  240. data/vendor/assets/build/medias/rubies/examples/Old_examples/smooth.rb +0 -5
  241. data/vendor/assets/build/medias/rubies/examples/Old_examples/speech_renderer.rb +0 -5
  242. data/vendor/assets/build/medias/rubies/examples/Old_examples/synth.rb +0 -6
  243. data/vendor/assets/build/medias/rubies/examples/Old_examples/system.rb +0 -3
  244. data/vendor/assets/build/medias/rubies/examples/Old_examples/tags.rb +0 -18
  245. data/vendor/assets/build/medias/rubies/examples/Old_examples/text.rb +0 -33
  246. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_selection.rb +0 -33
  247. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_to_midi.rb +0 -22
  248. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch.rb +0 -23
  249. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch_stop_propagation.rb +0 -27
  250. data/vendor/assets/build/medias/rubies/examples/Old_examples/treat_object_in_object.rb +0 -26
  251. data/vendor/assets/build/medias/rubies/examples/Old_examples/type_mutations.rb +0 -27
  252. data/vendor/assets/build/medias/rubies/examples/Old_examples/video_callback.rb +0 -46
  253. data/vendor/assets/build/medias/rubies/examples/Old_examples/view_mode.rb +0 -29
  254. data/vendor/assets/build/medias/rubies/examples/Old_examples/virtual_events.rb +0 -17
  255. data/vendor/assets/build/medias/rubies/examples/Old_examples/visual.rb +0 -23
  256. data/vendor/assets/build/medias/rubies/examples/Old_examples/vr_display.rb +0 -5
  257. data/vendor/assets/build/medias/rubies/examples/Old_examples/wait.rb +0 -21
  258. data/vendor/assets/build/medias/rubies/examples/Old_examples/web.rb +0 -10
  259. data/vendor/assets/build/medias/rubies/examples/Old_examples/web_address_bar.rb +0 -14
  260. data/vendor/assets/build/medias/rubies/examples/Old_examples/websocket.rb +0 -16
  261. data/vendor/assets/build/medias/rubies/examples/Old_examples/webstate.rb +0 -10
  262. data/vendor/assets/build/medias/videos/lion_king.mp4 +0 -0
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+
5
+ generator.build_atome(:color)
6
+ generator.build_sanitizer(:color) do |params|
7
+ parent_found = found_parents_and_renderers[:parent]
8
+ render_found = found_parents_and_renderers[:renderers]
9
+ default_params = { renderers: render_found, id: "color_#{Universe.atomes.length}", type: :color,
10
+ parents: parent_found,
11
+ red: 0, green: 0, blue: 0, alpha: 1 }
12
+ params = create_color_hash(params) unless params.instance_of? Hash
13
+ default_params.merge!(params)
14
+ end
15
+
16
+ generator.build_sanitizer(:video) do |params|
17
+ parent_found = found_parents_and_renderers[:parent]
18
+ render_found = found_parents_and_renderers[:renderers]
19
+ default_params = { renderers: render_found, id: "video_#{Universe.atomes.length}", type: :video,
20
+ parents: parent_found }
21
+ default_params.merge!(params)
22
+ end
23
+ generator.build_atome(:shadow)
24
+ generator.build_atome(:shape)
25
+ generator.build_atome(:text)
26
+ generator.build_atome(:image)
27
+ generator.build_atome(:video)
28
+ generator.build_atome(:code)
29
+ generator.build_atome(:audio)
30
+ generator.build_atome(:element)
31
+ generator.build_atome(:web)
32
+ generator.build_sanitizer(:element) do |params|
33
+ parent_found = found_parents_and_renderers[:parent]
34
+ render_found = []
35
+ default_params = { renderers: render_found, id: "element_#{Universe.atomes.length}", type: :element,
36
+ parents: parent_found }
37
+ default_params.merge!(params)
38
+ end
@@ -1 +1,3 @@
1
1
  # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+
5
+ generator.build_particle(:smooth)
6
+ generator.build_particle(:blur)
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+
5
+ generator.build_particle(:touch)
6
+ generator.build_particle(:play)
7
+ generator.build_particle(:time)
8
+ generator.build_particle(:pause)
9
+ generator.build_particle(:on)
10
+ generator.build_particle(:fullscreen)
@@ -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,29 @@
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(:link) do |child_id|
9
+ child_found = grab(child_id)
10
+ child_found.atome[:parents] << @atome[:id]
11
+ child_found.refresh
12
+ end
13
+
14
+ generator.build_particle(:id)
15
+ generator.build_sanitizer(:id) do |params|
16
+ if @atome[:id] != params
17
+ Universe.update_atome_id(params, self, @atome[:id])
18
+ else
19
+ Universe.add_to_atomes(params, self)
20
+ end
21
+ params
22
+ end
23
+
24
+ generator.build_option(:pre_render_parents) do |parents_id_found|
25
+ parents_id_found.each do |parents_id|
26
+ parents_found = grab(parents_id)
27
+ parents_found.children << id if parents_found
28
+ end
29
+ 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,13 @@
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(:rotate)
13
+ generator.build_particle(:direction)
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ generator = Genesis.generator
4
+
5
+ generator.build_particle(:renderers)
6
+ generator.build_particle(:code)
7
+ generator.build_particle(:run) do |params|
8
+ code_found = @atome[:code]
9
+ instance_exec(params, &code_found) if code_found.is_a?(Proc)
10
+ end
11
+ generator.build_particle(:broadcast)
12
+ generator.build_particle(:additional)
13
+ generator.build_particle(:data)
14
+ generator.build_particle(:delete) do
15
+ Universe.delete(@atome[:id])
16
+ end
17
+ generator.build_particle(:clear)
18
+ generator.build_particle(:path)
19
+ generator.build_particle(:schedule) do |date, proc|
20
+ date = date.to_s
21
+ delimiters = [',', ' ', ':', '-']
22
+ format_date = date.split(Regexp.union(delimiters))
23
+ Universe.renderer_list.each do |renderer|
24
+ send("#{renderer}_schedule", format_date, &proc)
25
+ end
26
+ end
27
+ generator.build_particle(:read) do |file, proc|
28
+ Universe.renderer_list.each do |renderer|
29
+ send("#{renderer}_reader", file, &proc)
30
+ end
31
+ end
@@ -0,0 +1,46 @@
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
+ new_atome(atome_name, &atome_proc)
27
+ end
28
+
29
+ def auto_render_generator(element)
30
+ Universe.renderer_list.each do |render_engine|
31
+ build_render_method("#{render_engine}_#{element}")
32
+ end
33
+ end
34
+
35
+ def build_render_method(renderer_name, &method_proc)
36
+ new_render_engine(renderer_name, &method_proc)
37
+ end
38
+
39
+ def build_sanitizer(method_name, &method_proc)
40
+ Universe.add_sanitizer_method(method_name.to_sym, &method_proc)
41
+ end
42
+
43
+ def build_option(method_name, &method_proc)
44
+ Universe.add_optional_method(method_name.to_sym, &method_proc)
45
+ end
46
+ 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,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # callbacks methods here
4
+ class Atome
5
+ def schedule_callback(proc)
6
+ instance_exec(&proc) if proc.is_a?(Proc)
7
+ end
8
+
9
+ def read_callback(file, proc)
10
+ instance_exec(file, &proc) if proc.is_a?(Proc)
11
+ end
12
+ end
@@ -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