atome 0.4.7.0 → 0.5.1.4

Sign up to get free protection for your applications and to get access to all the features.
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