kredki 0.1.0

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 (386) hide show
  1. checksums.yaml +7 -0
  2. data/lib/kredki/core/application.rb +314 -0
  3. data/lib/kredki/core/color.rb +100 -0
  4. data/lib/kredki/core/event/block_event_reaction.rb +44 -0
  5. data/lib/kredki/core/event/composite_event_manager.rb +37 -0
  6. data/lib/kredki/core/event/event.rb +91 -0
  7. data/lib/kredki/core/event/event_manager.rb +60 -0
  8. data/lib/kredki/core/event/event_manager_jobs.rb +53 -0
  9. data/lib/kredki/core/event/event_reaction.rb +36 -0
  10. data/lib/kredki/core/event/family/drop_event.rb +40 -0
  11. data/lib/kredki/core/event/family/exit_event.rb +5 -0
  12. data/lib/kredki/core/event/family/focus_enter_event.rb +5 -0
  13. data/lib/kredki/core/event/family/focus_leave_event.rb +5 -0
  14. data/lib/kredki/core/event/family/hide_event.rb +5 -0
  15. data/lib/kredki/core/event/family/joystick_event.rb +102 -0
  16. data/lib/kredki/core/event/family/key_event.rb +40 -0
  17. data/lib/kredki/core/event/family/mouse_event.rb +190 -0
  18. data/lib/kredki/core/event/family/pastele_event.rb +11 -0
  19. data/lib/kredki/core/event/family/show_event.rb +5 -0
  20. data/lib/kredki/core/event/family/text_event.rb +23 -0
  21. data/lib/kredki/core/event/family/tick_event.rb +5 -0
  22. data/lib/kredki/core/event/family/update_complete_event.rb +5 -0
  23. data/lib/kredki/core/event/family/window_event.rb +108 -0
  24. data/lib/kredki/core/event/job_event_reaction.rb +44 -0
  25. data/lib/kredki/core/event/joystick_event_manager.rb +30 -0
  26. data/lib/kredki/core/event/keyboard_event_manager.rb +29 -0
  27. data/lib/kredki/core/event/method_event_reaction.rb +46 -0
  28. data/lib/kredki/core/event/mouse_event_manager.rb +27 -0
  29. data/lib/kredki/core/font.rb +53 -0
  30. data/lib/kredki/core/job/after_job.rb +59 -0
  31. data/lib/kredki/core/job/job.rb +108 -0
  32. data/lib/kredki/core/job/loop_job.rb +87 -0
  33. data/lib/kredki/core/job/play_animation_job.rb +44 -0
  34. data/lib/kredki/core/job/play_job.rb +41 -0
  35. data/lib/kredki/core/job/play_loop_animation_job.rb +98 -0
  36. data/lib/kredki/core/job/play_loop_job.rb +104 -0
  37. data/lib/kredki/core/job/side_job.rb +62 -0
  38. data/lib/kredki/core/kernel-path.rb +71 -0
  39. data/lib/kredki/core/kredki.rb +89 -0
  40. data/lib/kredki/core/linear_gradient.rb +43 -0
  41. data/lib/kredki/core/media/clipboard.rb +35 -0
  42. data/lib/kredki/core/media/joystick.rb +199 -0
  43. data/lib/kredki/core/media/keyboard.rb +84 -0
  44. data/lib/kredki/core/media/keyboard_modifiers_decoder.rb +154 -0
  45. data/lib/kredki/core/media/mouse.rb +197 -0
  46. data/lib/kredki/core/paint/animation.rb +247 -0
  47. data/lib/kredki/core/paint/area.rb +67 -0
  48. data/lib/kredki/core/paint/block_shape_area.rb +102 -0
  49. data/lib/kredki/core/paint/ellipse.rb +22 -0
  50. data/lib/kredki/core/paint/paint.rb +392 -0
  51. data/lib/kredki/core/paint/picture.rb +126 -0
  52. data/lib/kredki/core/paint/rectangle.rb +202 -0
  53. data/lib/kredki/core/paint/scene.rb +277 -0
  54. data/lib/kredki/core/paint/shape.rb +394 -0
  55. data/lib/kredki/core/paint/shape_area.rb +57 -0
  56. data/lib/kredki/core/paint/text.rb +222 -0
  57. data/lib/kredki/core/pastele/pastele-extern.rb +139 -0
  58. data/lib/kredki/core/pastele/pastele.rb +205 -0
  59. data/lib/kredki/core/radial_gradient.rb +45 -0
  60. data/lib/kredki/core/setup.rb +214 -0
  61. data/lib/kredki/core/window/pane.rb +178 -0
  62. data/lib/kredki/core/window/pane_event_manager.rb +44 -0
  63. data/lib/kredki/core/window/pane_events.rb +366 -0
  64. data/lib/kredki/core/window/window.rb +584 -0
  65. data/lib/kredki/core.rb +2 -0
  66. data/lib/kredki/hide.rb +9 -0
  67. data/lib/kredki/irb.rb +90 -0
  68. data/lib/kredki/module.rb +3 -0
  69. data/lib/kredki/pads/application.rb +13 -0
  70. data/lib/kredki/pads/button.rb +151 -0
  71. data/lib/kredki/pads/checkbox/checkbox.rb +68 -0
  72. data/lib/kredki/pads/checkbox/checkbox_button.rb +65 -0
  73. data/lib/kredki/pads/context/item.rb +65 -0
  74. data/lib/kredki/pads/context/item_group.rb +10 -0
  75. data/lib/kredki/pads/context/layer.rb +59 -0
  76. data/lib/kredki/pads/context/menu.rb +77 -0
  77. data/lib/kredki/pads/context/pad.rb +26 -0
  78. data/lib/kredki/pads/context/primary_layer.rb +51 -0
  79. data/lib/kredki/pads/context/secondary_layer.rb +60 -0
  80. data/lib/kredki/pads/item/item.rb +140 -0
  81. data/lib/kredki/pads/item/item_group.rb +44 -0
  82. data/lib/kredki/pads/item/item_x.rb +22 -0
  83. data/lib/kredki/pads/item/item_y.rb +31 -0
  84. data/lib/kredki/pads/label.rb +71 -0
  85. data/lib/kredki/pads/layer.rb +326 -0
  86. data/lib/kredki/pads/layout/align.rb +10 -0
  87. data/lib/kredki/pads/layout/layout.rb +88 -0
  88. data/lib/kredki/pads/layout/way.rb +99 -0
  89. data/lib/kredki/pads/layout/x_way.rb +119 -0
  90. data/lib/kredki/pads/layout/y_way.rb +120 -0
  91. data/lib/kredki/pads/list/item.rb +117 -0
  92. data/lib/kredki/pads/list/item_group.rb +36 -0
  93. data/lib/kredki/pads/list/pad.rb +74 -0
  94. data/lib/kredki/pads/list/tree/item.rb +138 -0
  95. data/lib/kredki/pads/list/tree/item_group.rb +86 -0
  96. data/lib/kredki/pads/list/tree/pad.rb +94 -0
  97. data/lib/kredki/pads/module.rb +11 -0
  98. data/lib/kredki/pads/note.rb +212 -0
  99. data/lib/kredki/pads/notes.rb +32 -0
  100. data/lib/kredki/pads/option/option.rb +121 -0
  101. data/lib/kredki/pads/option/option_item.rb +15 -0
  102. data/lib/kredki/pads/option/option_item_group.rb +16 -0
  103. data/lib/kredki/pads/option/option_layer.rb +81 -0
  104. data/lib/kredki/pads/pad/animation_pad.rb +106 -0
  105. data/lib/kredki/pads/pad/glyph_pad.rb +71 -0
  106. data/lib/kredki/pads/pad/pad.rb +1290 -0
  107. data/lib/kredki/pads/pad/pad_events.rb +358 -0
  108. data/lib/kredki/pads/pad/picture_pad.rb +89 -0
  109. data/lib/kredki/pads/pad/rectangle_pad.rb +181 -0
  110. data/lib/kredki/pads/pad/scroll_pad.rb +176 -0
  111. data/lib/kredki/pads/pad/shape_pad.rb +148 -0
  112. data/lib/kredki/pads/pad/space_pad.rb +33 -0
  113. data/lib/kredki/pads/pad/text_pad.rb +310 -0
  114. data/lib/kredki/pads/pane.rb +267 -0
  115. data/lib/kredki/pads/portal_layer.rb +94 -0
  116. data/lib/kredki/pads/radio/group.rb +45 -0
  117. data/lib/kredki/pads/radio/item.rb +69 -0
  118. data/lib/kredki/pads/radio/item_button.rb +143 -0
  119. data/lib/kredki/pads/service/event_queue.rb +79 -0
  120. data/lib/kredki/pads/service/service.rb +248 -0
  121. data/lib/kredki/pads/service/service_event_manager.rb +43 -0
  122. data/lib/kredki/pads/service/service_filter.rb +98 -0
  123. data/lib/kredki/pads/service/service_inherited.rb +48 -0
  124. data/lib/kredki/pads/setup.rb +36 -0
  125. data/lib/kredki/pads/slider/slider.rb +145 -0
  126. data/lib/kredki/pads/slider/slider_x.rb +41 -0
  127. data/lib/kredki/pads/slider/slider_y.rb +41 -0
  128. data/lib/kredki/pads/table/cell.rb +22 -0
  129. data/lib/kredki/pads/table/column.rb +63 -0
  130. data/lib/kredki/pads/table/column_layout.rb +88 -0
  131. data/lib/kredki/pads/table/pad.rb +116 -0
  132. data/lib/kredki/pads/table/row.rb +24 -0
  133. data/lib/kredki/pads/table/scroll_rows.rb +50 -0
  134. data/lib/kredki/pads/text/editable_text_verse.rb +77 -0
  135. data/lib/kredki/pads/text/editable_text_verses.rb +59 -0
  136. data/lib/kredki/pads/text/navigable_text_pad.rb +413 -0
  137. data/lib/kredki/pads/text/text_edition.rb +97 -0
  138. data/lib/kredki/pads/text/text_navigation.rb +109 -0
  139. data/lib/kredki/pads/toolbar/item.rb +62 -0
  140. data/lib/kredki/pads/toolbar/item_group.rb +22 -0
  141. data/lib/kredki/pads/toolbar/layer.rb +41 -0
  142. data/lib/kredki/pads/toolbar/pad.rb +51 -0
  143. data/lib/kredki/pads/toolbar/primary_layer.rb +64 -0
  144. data/lib/kredki/pads/window.rb +11 -0
  145. data/lib/kredki/script.rb +29 -0
  146. data/lib/kredki/setup.rb +2 -0
  147. data/lib/kredki/test.rb +35 -0
  148. data/lib/kredki.rb +10 -0
  149. data/lib/readme.md +31 -0
  150. data/stuff/config/config.rb +431 -0
  151. data/stuff/config/pads_config.rb +111 -0
  152. data/stuff/dll/SDL3.dll +0 -0
  153. data/stuff/dll/pastele.dll +0 -0
  154. data/stuff/dll/thorvg-1.dll +0 -0
  155. data/stuff/font/MartianMono-StdRg.ttf +0 -0
  156. data/stuff/font/MavenPro-Medium.ttf +0 -0
  157. data/stuff/font/MavenPro-Regular.ttf +0 -0
  158. data/stuff/glyph/alert-circle-svgrepo-com.svg +4 -0
  159. data/stuff/glyph/alert-triangle-svgrepo-com.svg +12 -0
  160. data/stuff/glyph/archivebox-svgrepo-com.svg +5 -0
  161. data/stuff/glyph/arrow-2-ccw-svgrepo-com.svg +5 -0
  162. data/stuff/glyph/arrow-2-cw-svgrepo-com.svg +5 -0
  163. data/stuff/glyph/arrow-2-rectangle-path-svgrepo-com.svg +5 -0
  164. data/stuff/glyph/arrow-4-way-svgrepo-com.svg +4 -0
  165. data/stuff/glyph/arrow-ccw-svgrepo-com.svg +4 -0
  166. data/stuff/glyph/arrow-circle-down-svgrepo-com.svg +4 -0
  167. data/stuff/glyph/arrow-circle-left-svgrepo-com.svg +4 -0
  168. data/stuff/glyph/arrow-circle-right-svgrepo-com.svg +4 -0
  169. data/stuff/glyph/arrow-circle-up-svgrepo-com.svg +4 -0
  170. data/stuff/glyph/arrow-cw-svgrepo-com.svg +4 -0
  171. data/stuff/glyph/arrow-down-svgrepo-com.svg +4 -0
  172. data/stuff/glyph/arrow-from-line-down-svgrepo-com.svg +5 -0
  173. data/stuff/glyph/arrow-from-line-left-svgrepo-com.svg +5 -0
  174. data/stuff/glyph/arrow-from-line-right-svgrepo-com.svg +5 -0
  175. data/stuff/glyph/arrow-from-line-up-svgrepo-com.svg +5 -0
  176. data/stuff/glyph/arrow-from-shape-right-svgrepo-com.svg +5 -0
  177. data/stuff/glyph/arrow-from-shape-up-svgrepo-com.svg +5 -0
  178. data/stuff/glyph/arrow-left-svgrepo-com.svg +4 -0
  179. data/stuff/glyph/arrow-right-arrow-left-svgrepo-com.svg +5 -0
  180. data/stuff/glyph/arrow-right-svgrepo-com.svg +4 -0
  181. data/stuff/glyph/arrow-shape-turn-left-svgrepo-com.svg +4 -0
  182. data/stuff/glyph/arrow-shape-turn-right-svgrepo-com.svg +4 -0
  183. data/stuff/glyph/arrow-small-down-svgrepo-com.svg +4 -0
  184. data/stuff/glyph/arrow-small-left-svgrepo-com.svg +4 -0
  185. data/stuff/glyph/arrow-small-right-svgrepo-com.svg +4 -0
  186. data/stuff/glyph/arrow-small-up-svgrepo-com.svg +4 -0
  187. data/stuff/glyph/arrow-thin-down-svgrepo-com.svg +4 -0
  188. data/stuff/glyph/arrow-thin-left-svgrepo-com.svg +4 -0
  189. data/stuff/glyph/arrow-thin-right-svgrepo-com.svg +4 -0
  190. data/stuff/glyph/arrow-thin-up-svgrepo-com.svg +4 -0
  191. data/stuff/glyph/arrow-to-line-down-svgrepo-com.svg +5 -0
  192. data/stuff/glyph/arrow-to-line-left-svgrepo-com.svg +5 -0
  193. data/stuff/glyph/arrow-to-line-right-svgrepo-com.svg +5 -0
  194. data/stuff/glyph/arrow-to-line-up-svgrepo-com.svg +5 -0
  195. data/stuff/glyph/arrow-to-shape-down-svgrepo-com.svg +5 -0
  196. data/stuff/glyph/arrow-to-shape-right-svgrepo-com.svg +5 -0
  197. data/stuff/glyph/arrow-trend-down-svgrepo-com.svg +12 -0
  198. data/stuff/glyph/arrow-trend-up-svgrepo-com.svg +12 -0
  199. data/stuff/glyph/arrow-turn-down-left-svgrepo-com.svg +4 -0
  200. data/stuff/glyph/arrow-turn-down-right-svgrepo-com.svg +4 -0
  201. data/stuff/glyph/arrow-turn-left-down-svgrepo-com.svg +4 -0
  202. data/stuff/glyph/arrow-turn-left-up-svgrepo-com.svg +4 -0
  203. data/stuff/glyph/arrow-turn-right-down-svgrepo-com.svg +4 -0
  204. data/stuff/glyph/arrow-turn-right-up-svgrepo-com.svg +4 -0
  205. data/stuff/glyph/arrow-turn-up-left-svgrepo-com.svg +4 -0
  206. data/stuff/glyph/arrow-turn-up-right-svgrepo-com.svg +4 -0
  207. data/stuff/glyph/arrow-up-arrow-down-svgrepo-com.svg +5 -0
  208. data/stuff/glyph/arrow-up-svgrepo-com.svg +4 -0
  209. data/stuff/glyph/at-sign-svgrepo-com.svg +4 -0
  210. data/stuff/glyph/bag-svgrepo-com.svg +4 -0
  211. data/stuff/glyph/bell-slash-svgrepo-com.svg +6 -0
  212. data/stuff/glyph/bell-svgrepo-com.svg +5 -0
  213. data/stuff/glyph/book-open-svgrepo-com.svg +5 -0
  214. data/stuff/glyph/bookmark-svgrepo-com.svg +4 -0
  215. data/stuff/glyph/box-svgrepo-com.svg +6 -0
  216. data/stuff/glyph/calendar-svgrepo-com.svg +5 -0
  217. data/stuff/glyph/camera-svgrepo-com.svg +4 -0
  218. data/stuff/glyph/caret-down-svgrepo-com.svg +4 -0
  219. data/stuff/glyph/caret-left-svgrepo-com.svg +4 -0
  220. data/stuff/glyph/caret-right-svgrepo-com.svg +4 -0
  221. data/stuff/glyph/caret-up-svgrepo-com.svg +4 -0
  222. data/stuff/glyph/cart-svgrepo-com.svg +6 -0
  223. data/stuff/glyph/chart-pie-svgrepo-com.svg +5 -0
  224. data/stuff/glyph/chartbar-2-svgrepo-com.svg +7 -0
  225. data/stuff/glyph/chartbar-svgrepo-com.svg +7 -0
  226. data/stuff/glyph/checkmark-circle-svgrepo-com.svg +4 -0
  227. data/stuff/glyph/checkmark-double-svgrepo-com.svg +5 -0
  228. data/stuff/glyph/checkmark-square-svgrepo-com.svg +4 -0
  229. data/stuff/glyph/checkmark-svgrepo-com.svg +4 -0
  230. data/stuff/glyph/chevron-down-svgrepo-com.svg +4 -0
  231. data/stuff/glyph/chevron-left-chevron-right-svgrepo-com.svg +5 -0
  232. data/stuff/glyph/chevron-left-svgrepo-com.svg +4 -0
  233. data/stuff/glyph/chevron-right-svgrepo-com.svg +4 -0
  234. data/stuff/glyph/chevron-small-down-svgrepo-com.svg +4 -0
  235. data/stuff/glyph/chevron-small-left-svgrepo-com.svg +4 -0
  236. data/stuff/glyph/chevron-small-right-svgrepo-com.svg +4 -0
  237. data/stuff/glyph/chevron-small-up-svgrepo-com.svg +4 -0
  238. data/stuff/glyph/chevron-up-chevron-down-svgrepo-com.svg +5 -0
  239. data/stuff/glyph/chevron-up-svgrepo-com.svg +4 -0
  240. data/stuff/glyph/clock-svgrepo-com.svg +4 -0
  241. data/stuff/glyph/cloud-arrow-up-svgrepo-com.svg +4 -0
  242. data/stuff/glyph/cloud-download-svgrepo-com.svg +4 -0
  243. data/stuff/glyph/cloud-slash-svgrepo-com.svg +5 -0
  244. data/stuff/glyph/cloud-svgrepo-com.svg +4 -0
  245. data/stuff/glyph/columns-svgrepo-com.svg +5 -0
  246. data/stuff/glyph/command-svgrepo-com.svg +4 -0
  247. data/stuff/glyph/compass-svgrepo-com.svg +5 -0
  248. data/stuff/glyph/credit-card-svgrepo-com.svg +5 -0
  249. data/stuff/glyph/crop-svgrepo-com.svg +5 -0
  250. data/stuff/glyph/crown-svgrepo-com.svg +4 -0
  251. data/stuff/glyph/delete-left-svgrepo-com.svg +4 -0
  252. data/stuff/glyph/device-desktop-svgrepo-com.svg +4 -0
  253. data/stuff/glyph/device-mobile-svgrepo-com.svg +4 -0
  254. data/stuff/glyph/device-tablet-svgrepo-com.svg +4 -0
  255. data/stuff/glyph/doc-svgrepo-com.svg +5 -0
  256. data/stuff/glyph/dot-small-svgrepo-com.svg +4 -0
  257. data/stuff/glyph/dots-3-horizontal-svgrepo-com.svg +6 -0
  258. data/stuff/glyph/dots-3-vertical-svgrepo-com.svg +6 -0
  259. data/stuff/glyph/dots-6-horizontal-svgrepo-com.svg +9 -0
  260. data/stuff/glyph/dots-6-vertical-svgrepo-com.svg +9 -0
  261. data/stuff/glyph/dots-9-svgrepo-com.svg +12 -0
  262. data/stuff/glyph/emoji-frown-svgrepo-com.svg +4 -0
  263. data/stuff/glyph/emoji-meh-svgrepo-com.svg +4 -0
  264. data/stuff/glyph/emoji-smile-svgrepo-com.svg +4 -0
  265. data/stuff/glyph/envelope-svgrepo-com.svg +5 -0
  266. data/stuff/glyph/external-link-svgrepo-com.svg +5 -0
  267. data/stuff/glyph/eye-slash-svgrepo-com.svg +15 -0
  268. data/stuff/glyph/eye-svgrepo-com.svg +4 -0
  269. data/stuff/glyph/filter-svgrepo-com.svg +4 -0
  270. data/stuff/glyph/flame-svgrepo-com.svg +4 -0
  271. data/stuff/glyph/floppy-disk-svgrepo-com.svg +4 -0
  272. data/stuff/glyph/folder-svgrepo-com.svg +4 -0
  273. data/stuff/glyph/fullscreen-alt-svgrepo-com.svg +7 -0
  274. data/stuff/glyph/fullscreen-exit-alt-svgrepo-com.svg +7 -0
  275. data/stuff/glyph/fullscreen-exit-svgrepo-com.svg +5 -0
  276. data/stuff/glyph/fullscreen-svgrepo-com.svg +5 -0
  277. data/stuff/glyph/gear-svgrepo-com.svg +4 -0
  278. data/stuff/glyph/giftbox-svgrepo-com.svg +6 -0
  279. data/stuff/glyph/half-star-svgrepo-com.svg +4 -0
  280. data/stuff/glyph/hashtag-svgrepo-com.svg +4 -0
  281. data/stuff/glyph/headphones-svgrepo-com.svg +4 -0
  282. data/stuff/glyph/heart-half-svgrepo-com.svg +4 -0
  283. data/stuff/glyph/heart-svgrepo-com.svg +4 -0
  284. data/stuff/glyph/house-svgrepo-com.svg +4 -0
  285. data/stuff/glyph/image-svgrepo-com.svg +4 -0
  286. data/stuff/glyph/info-circle-svgrepo-com.svg +4 -0
  287. data/stuff/glyph/key-svgrepo-com.svg +4 -0
  288. data/stuff/glyph/layers-3-svgrepo-com.svg +6 -0
  289. data/stuff/glyph/layout-svgrepo-com.svg +6 -0
  290. data/stuff/glyph/line-3-svgrepo-com.svg +6 -0
  291. data/stuff/glyph/link-alt-svgrepo-com.svg +5 -0
  292. data/stuff/glyph/link-svgrepo-com.svg +6 -0
  293. data/stuff/glyph/list-bullet-svgrepo-com.svg +9 -0
  294. data/stuff/glyph/location-svgrepo-com.svg +4 -0
  295. data/stuff/glyph/lock-open-svgrepo-com.svg +4 -0
  296. data/stuff/glyph/lock-svgrepo-com.svg +4 -0
  297. data/stuff/glyph/map-pin-svgrepo-com.svg +4 -0
  298. data/stuff/glyph/medal-svgrepo-com.svg +13 -0
  299. data/stuff/glyph/media-backward-end-svgrepo-com.svg +5 -0
  300. data/stuff/glyph/media-backward-svgrepo-com.svg +5 -0
  301. data/stuff/glyph/media-forward-end-svgrepo-com.svg +5 -0
  302. data/stuff/glyph/media-forward-svgrepo-com.svg +4 -0
  303. data/stuff/glyph/media-pause-circle-svgrepo-com.svg +4 -0
  304. data/stuff/glyph/media-pause-svgrepo-com.svg +5 -0
  305. data/stuff/glyph/media-play-circle-svgrepo-com.svg +4 -0
  306. data/stuff/glyph/media-play-svgrepo-com.svg +4 -0
  307. data/stuff/glyph/media-stop-circle-svgrepo-com.svg +4 -0
  308. data/stuff/glyph/media-stop-svgrepo-com.svg +4 -0
  309. data/stuff/glyph/message-bubble-2-svgrepo-com.svg +4 -0
  310. data/stuff/glyph/message-bubble-svgrepo-com.svg +4 -0
  311. data/stuff/glyph/mic-slash-svgrepo-com.svg +6 -0
  312. data/stuff/glyph/mic-svgrepo-com.svg +5 -0
  313. data/stuff/glyph/minus-circle-svgrepo-com.svg +4 -0
  314. data/stuff/glyph/minus-square-svgrepo-com.svg +4 -0
  315. data/stuff/glyph/minus-svgrepo-com.svg +4 -0
  316. data/stuff/glyph/moon-svgrepo-com.svg +4 -0
  317. data/stuff/glyph/music-note-svgrepo-com.svg +4 -0
  318. data/stuff/glyph/nosign-svgrepo-com.svg +4 -0
  319. data/stuff/glyph/paper-clip-svgrepo-com.svg +4 -0
  320. data/stuff/glyph/paper-plane-svgrepo-com.svg +4 -0
  321. data/stuff/glyph/pen-tool-svgrepo-com.svg +4 -0
  322. data/stuff/glyph/pencil-svgrepo-com.svg +5 -0
  323. data/stuff/glyph/percent-svgrepo-com.svg +6 -0
  324. data/stuff/glyph/phone-incoming-svgrepo-com.svg +5 -0
  325. data/stuff/glyph/phone-missed-svgrepo-com.svg +4 -0
  326. data/stuff/glyph/phone-outgoing-svgrepo-com.svg +5 -0
  327. data/stuff/glyph/phone-slash-svgrepo-com.svg +4 -0
  328. data/stuff/glyph/phone-svgrepo-com.svg +4 -0
  329. data/stuff/glyph/plus-circle-svgrepo-com.svg +4 -0
  330. data/stuff/glyph/plus-square-svgrepo-com.svg +4 -0
  331. data/stuff/glyph/plus-svgrepo-com.svg +4 -0
  332. data/stuff/glyph/power-svgrepo-com.svg +5 -0
  333. data/stuff/glyph/printer-svgrepo-com.svg +5 -0
  334. data/stuff/glyph/question-circle-svgrepo-com.svg +4 -0
  335. data/stuff/glyph/scissors-svgrepo-com.svg +5 -0
  336. data/stuff/glyph/search-svgrepo-com.svg +4 -0
  337. data/stuff/glyph/server-svgrepo-com.svg +5 -0
  338. data/stuff/glyph/shape-circle-svgrepo-com.svg +4 -0
  339. data/stuff/glyph/shape-rhombus-svgrepo-com.svg +4 -0
  340. data/stuff/glyph/shape-square-svgrepo-com.svg +4 -0
  341. data/stuff/glyph/shape-triangle-svgrepo-com.svg +12 -0
  342. data/stuff/glyph/share-svgrepo-com.svg +4 -0
  343. data/stuff/glyph/shield-slash-svgrepo-com.svg +13 -0
  344. data/stuff/glyph/shield-svgrepo-com.svg +4 -0
  345. data/stuff/glyph/shippingbox-svgrepo-com.svg +7 -0
  346. data/stuff/glyph/slider-3-horizontal-svgrepo-com.svg +9 -0
  347. data/stuff/glyph/slider-3-vertical-svgrepo-com.svg +9 -0
  348. data/stuff/glyph/speaker-svgrepo-com.svg +4 -0
  349. data/stuff/glyph/speaker-wave-1-svgrepo-com.svg +5 -0
  350. data/stuff/glyph/speaker-wave-2-svgrepo-com.svg +6 -0
  351. data/stuff/glyph/speaker-xmark-svgrepo-com.svg +5 -0
  352. data/stuff/glyph/square-4-grid-svgrepo-com.svg +7 -0
  353. data/stuff/glyph/square-on-square-svgrepo-com.svg +5 -0
  354. data/stuff/glyph/star-svgrepo-com.svg +4 -0
  355. data/stuff/glyph/sun-svgrepo-com.svg +12 -0
  356. data/stuff/glyph/tag-svgrepo-com.svg +4 -0
  357. data/stuff/glyph/text-align-center-svgrepo-com.svg +7 -0
  358. data/stuff/glyph/text-align-justify-svgrepo-com.svg +7 -0
  359. data/stuff/glyph/text-align-left-svgrepo-com.svg +7 -0
  360. data/stuff/glyph/text-align-right-svgrepo-com.svg +7 -0
  361. data/stuff/glyph/text-bold-svgrepo-com.svg +4 -0
  362. data/stuff/glyph/text-heading-svgrepo-com.svg +4 -0
  363. data/stuff/glyph/text-italic-svgrepo-com.svg +4 -0
  364. data/stuff/glyph/text-svgrepo-com.svg +4 -0
  365. data/stuff/glyph/text-underline-svgrepo-com.svg +5 -0
  366. data/stuff/glyph/thumbs-down-svgrepo-com.svg +5 -0
  367. data/stuff/glyph/thumbs-up-svgrepo-com.svg +5 -0
  368. data/stuff/glyph/trash-svgrepo-com.svg +5 -0
  369. data/stuff/glyph/tray-svgrepo-com.svg +4 -0
  370. data/stuff/glyph/umbrela-svgrepo-com.svg +4 -0
  371. data/stuff/glyph/user-svgrepo-com.svg +5 -0
  372. data/stuff/glyph/users-svgrepo-com.svg +7 -0
  373. data/stuff/glyph/video-svgrepo-com.svg +12 -0
  374. data/stuff/glyph/waveform-ecg-svgrepo-com.svg +4 -0
  375. data/stuff/glyph/wi-fi-svgrepo-com.svg +7 -0
  376. data/stuff/glyph/xmark-circle-svgrepo-com.svg +4 -0
  377. data/stuff/glyph/xmark-small-svgrepo-com.svg +4 -0
  378. data/stuff/glyph/xmark-svgrepo-com.svg +4 -0
  379. data/stuff/glyph/zap-svgrepo-com.svg +4 -0
  380. data/stuff/glyph/zoom-in-svgrepo-com.svg +5 -0
  381. data/stuff/glyph/zoom-out-svgrepo-com.svg +5 -0
  382. data/stuff/readme.md +266 -0
  383. data/stuff/so/libSDL3.so +0 -0
  384. data/stuff/so/libpastele.so +0 -0
  385. data/stuff/so/libthorvg-1.so +0 -0
  386. metadata +427 -0
@@ -0,0 +1,178 @@
1
+ require_relative 'pane_event_manager'
2
+ require_relative 'pane_events'
3
+
4
+ module Kredki
5
+ # Root element of Paint tree.
6
+ class Pane < Scene
7
+ include PaneEvents
8
+
9
+ # Get window.
10
+ def window
11
+ @scene
12
+ end
13
+
14
+ # Set window.
15
+ def window= window
16
+ @scene = window
17
+ end
18
+
19
+ # Get application.
20
+ def app
21
+ window&.app
22
+ end
23
+
24
+ # Set background fill.
25
+ def set_fill ...
26
+ @fill.set_fill(...)
27
+ end
28
+
29
+ # See #set_fill.
30
+ def fill= param
31
+ send_bundle :set_fill, param
32
+ end
33
+
34
+ # Get background fill.
35
+ def fill
36
+ @fill.fill
37
+ end
38
+
39
+ # Create new job.
40
+ def job run = true, &block
41
+ job = AfterJob.new block, 0
42
+ job.run self if run
43
+ job
44
+ end
45
+
46
+ def exit_on_esc
47
+ on_key_press.attach at: :last do |event|
48
+ app.return if event.key.id == :escape
49
+ end
50
+ end
51
+
52
+ def close_on_esc
53
+ on_key_press.attach at: :last do |event|
54
+ window.close if event.key.id == :escape
55
+ end
56
+ end
57
+
58
+ # Set a feature recognized by its class.
59
+ def << feature
60
+ case feature
61
+ when Hash
62
+ set **feature
63
+ when Array
64
+ set *feature
65
+ when Proc
66
+ set &feature
67
+ when Class, String, Pane
68
+ window.pane = feature
69
+ else
70
+ raise "Unsupported << (#{feature} : #{feature.class})"
71
+ end
72
+ self
73
+ end
74
+
75
+ # :section: LEVEL 2
76
+
77
+ def initialize
78
+ super
79
+
80
+ @last_xy = nil
81
+
82
+ @jobs = {}
83
+ @jobs_mutex = Thread::Mutex.new
84
+ @event_manager = PaneEventManager.new
85
+ @fill = new_rectangle xy: 0
86
+ @sketched = false
87
+ end
88
+
89
+ def update_paint paint
90
+ window&.update_paint paint
91
+ end
92
+
93
+ def sketch_pane
94
+ return if @sketched
95
+ @sketched = true
96
+ sketch
97
+ presence
98
+ behavior
99
+ end
100
+
101
+ def sketch
102
+ @fill.size = *window.size
103
+ @last_xy = xy
104
+ set_fill 20, 70, 20
105
+ end
106
+
107
+ def behavior
108
+ on_resize do: method(:resize_event)
109
+ on_move do: method(:move_event)
110
+ on_expose do: method(:expose_event)
111
+ on_tick do: method(:tick)
112
+ on_close{ @jobs.each_key{|it| it.cancel } }
113
+ end
114
+
115
+ def presence
116
+ end
117
+
118
+ def context_service
119
+ sketch_pane
120
+ self
121
+ end
122
+
123
+ def arrange
124
+ end
125
+
126
+ def resize_event event
127
+ @fill.size = event.param
128
+ end
129
+
130
+ def move_event event
131
+ @last_xy = event.xy
132
+ end
133
+
134
+ def expose_event event
135
+ w = window
136
+ size = w.size
137
+ w.report ResizeEvent.new(size[0], size[1], event) if size != @fill.size
138
+ xy = w.xy
139
+ w.report MoveEvent.new(*xy, event) if xy != @last_xy
140
+ w.report TickEvent.new event
141
+ end
142
+
143
+ def translate x, y, target = nil
144
+ if target
145
+ xy = target.translate -x, -y
146
+ [-xy[0], -xy[1]]
147
+ else
148
+ [x, y]
149
+ end
150
+ end
151
+
152
+ def put_job job
153
+ @jobs_mutex.synchronize do
154
+ @jobs[job] = 1
155
+ end
156
+ end
157
+
158
+ def delete_job job
159
+ @jobs_mutex.synchronize do
160
+ @jobs.delete job
161
+ end
162
+ end
163
+
164
+ def jobs
165
+ @jobs.each
166
+ end
167
+
168
+ def report event, early = false
169
+ @event_manager.report event
170
+ end
171
+
172
+ def tick event
173
+ ms = event.timestamp * 0.000001 - app.run_ms
174
+ jobs = {**@jobs}
175
+ jobs.each_key{|it| delete_job it unless it.tick ms }
176
+ end
177
+ end
178
+ end
@@ -0,0 +1,44 @@
1
+ require_relative '../event/event_manager'
2
+ require_relative '../event/keyboard_event_manager'
3
+ require_relative '../event/mouse_event_manager'
4
+ require_relative '../event/joystick_event_manager'
5
+
6
+ module Kredki
7
+ # Manage pane events.
8
+ class PaneEventManager
9
+
10
+ # :section: LEVEL 2
11
+
12
+ def initialize
13
+ @managers = {}
14
+ end
15
+
16
+ def manager event_type, reaction, always = false
17
+ manager = (@managers[event_type] ||= EventManager.new)
18
+ reaction ? manager.attach(reaction, always:) : manager
19
+ end
20
+
21
+ def keyboard_manager event_type, codes, reaction, always = false
22
+ manager = (@managers[event_type] ||= KeyboardEventManager.new)[*codes]
23
+ reaction ? manager.attach(reaction, always:) : manager
24
+ end
25
+
26
+ def mouse_manager event_type, codes, reaction, always = false
27
+ manager = (@managers[event_type] ||= MouseEventManager.new)[*codes]
28
+ reaction ? manager.attach(reaction, always:) : manager
29
+ end
30
+
31
+ def joystick_manager event_type, joystick, codes, reaction, always = false
32
+ manager = (@managers[event_type] ||= JoystickEventManager.new)[joystick, codes]
33
+ reaction ? manager.attach(reaction, always:) : manager
34
+ end
35
+
36
+ def report event
37
+ cl = event.class
38
+ while cl != Object
39
+ @managers[cl]&.report event
40
+ cl = cl.superclass
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,366 @@
1
+ module Kredki
2
+ # Set of methods for event resolving.
3
+ module PaneEvents
4
+
5
+ # Create and attach generic event reaction.
6
+ def on event_type, do: nil, &block
7
+ @event_manager.manager event_type, block || binding.local_variable_get(:do)
8
+ end
9
+
10
+ # Create and attach key(s) press event reaction.
11
+ def on_key_press *selected_keys, do: nil, &block
12
+ keycodes = Kredki.keyboard.keycodes selected_keys
13
+ @event_manager.keyboard_manager KeyboardKeyPressEvent, keycodes, block || binding.local_variable_get(:do)
14
+ end
15
+
16
+ # See #on_key_press.
17
+ def on_key_press= reaction
18
+ on_key_press do: reaction
19
+ end
20
+
21
+ # Create and attach key(s) release event reaction.
22
+ def on_key_release *selected_keys, do: nil, &block
23
+ keycodes = Kredki.keyboard.keycodes selected_keys
24
+ @event_manager.keyboard_manager KeyboardKeyReleaseEvent, keycodes, block || binding.local_variable_get(:do)
25
+ end
26
+
27
+ # See #on_key_release.
28
+ def on_key_release= reaction
29
+ on_key_release do: reaction
30
+ end
31
+
32
+ # Create and attach text event reaction.
33
+ def on_text_input ...
34
+ on(TextInputEvent, ...)
35
+ end
36
+
37
+ # See #on_text_input.
38
+ def on_text_input= reaction
39
+ on_text_input do: reaction
40
+ end
41
+
42
+ # Create and attach mouse button(s) press event reaction.
43
+ def on_mouse_press *selected_buttons, do: nil, &block
44
+ indexes = Kredki.mouse.indexes selected_buttons
45
+ @event_manager.mouse_manager MouseButtonPressEvent, indexes, block || binding.local_variable_get(:do)
46
+ end
47
+
48
+ # See #on_mouse_press.
49
+ def on_mouse_press= reaction
50
+ on_mouse_press do: reaction
51
+ end
52
+
53
+ # Create and attach mouse button(s) release event reaction.
54
+ def on_mouse_release *selected_buttons, do: nil, &block
55
+ indexes = Kredki.mouse.indexes selected_buttons
56
+ @event_manager.mouse_manager MouseButtonReleaseEvent, indexes, block || binding.local_variable_get(:do)
57
+ end
58
+
59
+ # See #on_mouse_release.
60
+ def on_mouse_release= reaction
61
+ on_mouse_release do: reaction
62
+ end
63
+
64
+ # Create and attach mouse pointer enter event reaction.
65
+ def on_mouse_enter ...
66
+ on(MousePointerEnterEvent, ...)
67
+ end
68
+
69
+ # See #on_mouse_enter.
70
+ def on_mouse_enter= reaction
71
+ on_mouse_enter do: reaction
72
+ end
73
+
74
+ # Create and attach mouse pointer leave event reaction.
75
+ def on_mouse_leave ...
76
+ on(MousePointerLeaveEvent, ...)
77
+ end
78
+
79
+ # See #on_mouse_leave.
80
+ def on_mouse_leave= reaction
81
+ on_mouse_leave do: reaction
82
+ end
83
+
84
+ # Create and attach mouse pointer move event reaction.
85
+ def on_mouse_move ...
86
+ on(MousePointerMoveEvent, ...)
87
+ end
88
+
89
+ # See #on_mouse_move.
90
+ def on_mouse_move= reaction
91
+ on_mouse_move do: reaction
92
+ end
93
+
94
+ # Create and attach mouse wheel scroll event reaction.
95
+ def on_mouse_scroll ...
96
+ on(MouseWheelScrollEvent, ...)
97
+ end
98
+
99
+ # See #on_mouse_scroll.
100
+ def on_mouse_scroll= reaction
101
+ on_mouse_scroll do: reaction
102
+ end
103
+
104
+ # Create and attach joystick button(s) press event reaction.
105
+ def on_joystick_press *buttons, joystick: nil, do: nil, &block
106
+ j = Kredki.joystick joystick
107
+ indexes = j.buttons buttons
108
+ j = nil if joystick.nil?
109
+ @event_manager.joystick_manager JoystickButtonPressEvent, j, indexes, block || binding.local_variable_get(:do)
110
+ end
111
+
112
+ # See #on_joystick_press.
113
+ def on_joystick_press= reaction
114
+ on_joystick_press do: reaction
115
+ end
116
+
117
+ # Create and attach joystick button(s) release event reaction.
118
+ def on_joystick_release *buttons, joystick: nil, do: nil, &block
119
+ j = Kredki.joystick joystick
120
+ indexes = j.buttons buttons
121
+ j = nil if joystick.nil?
122
+ @event_manager.joystick_manager JoystickButtonReleaseEvent, j, indexes, block || binding.local_variable_get(:do)
123
+ end
124
+
125
+ # See #on_joystick_release.
126
+ def on_joystick_release= reaction
127
+ on_joystick_release do: reaction
128
+ end
129
+
130
+ # Create and attach joystick axis(axes) move event reaction.
131
+ def on_joystick_move *axes, joystick: nil, do: nil, &block
132
+ j = Kredki.joystick joystick
133
+ indexes = j.axes axes
134
+ j = nil if joystick.nil?
135
+ @event_manager.joystick_manager JoystickAxisMoveEvent, j, indexes, block || binding.local_variable_get(:do)
136
+ end
137
+
138
+ # See #on_joystick_move.
139
+ def on_joystick_move= reaction
140
+ on_joystick_move do: reaction
141
+ end
142
+
143
+ # Create and attach joystick hat(hats) switch event reaction.
144
+ def on_joystick_switch *hats, joystick: nil, do: nil, &block
145
+ j = Kredki.joystick joystick
146
+ indexes = j.hats hats
147
+ j = nil if joystick.nil?
148
+ @event_manager.joystick_manager JoystickHatSwitchEvent, j, indexes, block || binding.local_variable_get(:do)
149
+ end
150
+
151
+ # See #on_joystick_switch.
152
+ def on_joystick_switch= reaction
153
+ on_joystick_switch do: reaction
154
+ end
155
+
156
+ # Create and attach drop begin event reaction.
157
+ def on_drop_begin ...
158
+ on(DropBeginEvent, ...)
159
+ end
160
+
161
+ # See #on_drop_begin.
162
+ def on_drop_begin= reaction
163
+ on_drop_begin do: reaction
164
+ end
165
+
166
+ # Create and attach file drop event reaction.
167
+ def on_drop ...
168
+ on(DropEvent, ...)
169
+ end
170
+
171
+ # See #on_drop.
172
+ def on_drop= reaction
173
+ on_drop do: reaction
174
+ end
175
+
176
+ # Create and attach drop cancel event reaction.
177
+ def on_drop_cancel ...
178
+ on(DropCancelEvent, ...)
179
+ end
180
+
181
+ # See #on_drop_cancel.
182
+ def on_drop_cancel= reaction
183
+ on_drop_cancel do: reaction
184
+ end
185
+
186
+ # Create and attach tick event reaction.
187
+ def on_tick ...
188
+ on(TickEvent, ...)
189
+ end
190
+
191
+ # See #on_tick.
192
+ def on_tick= reaction
193
+ on_tick do: reaction
194
+ end
195
+
196
+ # Create and attach quit event reaction.
197
+ def on_exit ...
198
+ on(ExitEvent, ...)
199
+ end
200
+
201
+ # See #on_exit.
202
+ def on_exit= reaction
203
+ on_exit do: reaction
204
+ end
205
+
206
+ # Create and attach window show event reaction.
207
+ def on_show ...
208
+ on(ShowEvent, ...)
209
+ end
210
+
211
+ # See #on_show.
212
+ def on_show= reaction
213
+ on_show do: reaction
214
+ end
215
+
216
+ # Create and attach window hide event reaction.
217
+ def on_hide ...
218
+ on(HideEvent, ...)
219
+ end
220
+
221
+ # See #on_hide.
222
+ def on_hide= reaction
223
+ on_hide do: reaction
224
+ end
225
+
226
+ # Create and attach window expose event reaction.
227
+ def on_expose ...
228
+ on(WindowExposeEvent, ...)
229
+ end
230
+
231
+ # See #on_expose.
232
+ def on_expose= reaction
233
+ on_expose do: reaction
234
+ end
235
+
236
+ # Create and attach window move event reaction.
237
+ def on_move ...
238
+ on(MoveEvent, ...)
239
+ end
240
+
241
+ # See #on_move.
242
+ def on_move= reaction
243
+ on_move do: reaction
244
+ end
245
+
246
+ # Create and attach window resize event reaction.
247
+ def on_resize ...
248
+ on(ResizeEvent, ...)
249
+ end
250
+
251
+ # See #on_resize.
252
+ def on_resize= reaction
253
+ on_resize do: reaction
254
+ end
255
+
256
+ # Create and attach window size change event reaction.
257
+ def on_size_change ...
258
+ on(WindowSizeChangeEvent, ...)
259
+ end
260
+
261
+ # See #on_size_change.
262
+ def on_size_change= reaction
263
+ on_size_change do: reaction
264
+ end
265
+
266
+ # Create and attach window minimize event reaction.
267
+ def on_minimize ...
268
+ on(WindowMinimizeEvent, ...)
269
+ end
270
+
271
+ # See #on_minimize.
272
+ def on_minimize= reaction
273
+ on_minimize do: reaction
274
+ end
275
+
276
+ # Create and attach window maximize event reaction.
277
+ def on_maximize ...
278
+ on(WindowMaximizeEvent, ...)
279
+ end
280
+
281
+ # See #on_maximize.
282
+ def on_maximize= reaction
283
+ on_maximize do: reaction
284
+ end
285
+
286
+ # Create and attach window restore event reaction.
287
+ def on_restore ...
288
+ on(WindowRestoreEvent, ...)
289
+ end
290
+
291
+ # See #on_restore.
292
+ def on_restore= reaction
293
+ on_restore do: reaction
294
+ end
295
+
296
+ # Create and attach window close event reaction.
297
+ def on_close ...
298
+ on(WindowCloseEvent, ...)
299
+ end
300
+
301
+ # See #on_close.
302
+ def on_close= reaction
303
+ on_close do: reaction
304
+ end
305
+
306
+ # Create and attach focus enter event reaction.
307
+ def on_focus_enter ...
308
+ on(FocusEnterEvent, ...)
309
+ end
310
+
311
+ # See #on_focus_enter.
312
+ def on_focus_enter= reaction
313
+ on_focus_enter do: reaction
314
+ end
315
+
316
+ # Create and attach focus leave event reaction.
317
+ def on_focus_leave ...
318
+ on(FocusLeaveEvent, ...)
319
+ end
320
+
321
+ # See #on_focus_leave.
322
+ def on_focus_leave= reaction
323
+ on_focus_leave do: reaction
324
+ end
325
+
326
+ # Create and attach focus take event reaction.
327
+ def on_focus_take ...
328
+ on(WindowFocusTakeEvent, ...)
329
+ end
330
+
331
+ # See #on_focus_take.
332
+ def on_focus_take= reaction
333
+ on_focus_take do: reaction
334
+ end
335
+
336
+ # Create and attach hit test event reaction.
337
+ def on_hit_test ...
338
+ on(WindowHitTestEvent, ...)
339
+ end
340
+
341
+ # See #on_hit_test.
342
+ def on_hit_test= reaction
343
+ on_hit_test do: reaction
344
+ end
345
+
346
+ # Create and attach iccprof change event reaction.
347
+ def on_iccprof_change ...
348
+ on(WindowIccprofChange, ...)
349
+ end
350
+
351
+ # See #on_iccprof_change.
352
+ def on_iccprof_change= reaction
353
+ on_iccprof_change do: reaction
354
+ end
355
+
356
+ # Create and attach display change event reaction.
357
+ def on_display_change ...
358
+ on(WindowDisplayChangeEvent, ...)
359
+ end
360
+
361
+ # See #on_display_change.
362
+ def on_display_change= reaction
363
+ on_display_change do: reaction
364
+ end
365
+ end
366
+ end