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,36 @@
1
+ module Kredki
2
+ # Common class for event reactions.
3
+ class EventReaction
4
+
5
+ # Cancel reaction.
6
+ def cancel
7
+ @manager&.detach self
8
+ @manager = nil
9
+ end
10
+
11
+ # Create and attach Kredki::AfterJob to manager.
12
+ def after ...
13
+ @manager&.after(...)
14
+ end
15
+
16
+ # Create and attach Kredki::LoopJob to manager.
17
+ def loop ...
18
+ @manager&.loop(...)
19
+ end
20
+
21
+ # Create and attach Kredki::SideJob to manager.
22
+ def side ...
23
+ @manager&.side(...)
24
+ end
25
+
26
+ # :section: LEVEL 2
27
+
28
+ def initialize manager, always
29
+ @manager = manager
30
+ @always = always
31
+ end
32
+
33
+ attr_accessor :always
34
+
35
+ end
36
+ end
@@ -0,0 +1,40 @@
1
+ module Kredki
2
+ # Event reported on drop.
3
+ class DropEvent < PasteleEvent
4
+
5
+ # Get data.
6
+ def data
7
+ @data
8
+ end
9
+
10
+ # Get whether it is multi drop event.
11
+ def multi?
12
+ @data.size > 1
13
+ end
14
+
15
+ # Get first dropped object text.
16
+ def text
17
+ @data.first.text
18
+ end
19
+
20
+ # Get main parameter
21
+ def param
22
+ text
23
+ end
24
+
25
+ # :section: LEVEL 2
26
+
27
+ def initialize data, ...
28
+ super(...)
29
+ @data = data
30
+ end
31
+ end
32
+
33
+ # Event reported on drop action begin.
34
+ class DropBeginEvent < PasteleEvent
35
+ end
36
+
37
+ # Event reported on drop action cancel.
38
+ class DropCancelEvent < DropEvent
39
+ end
40
+ end
@@ -0,0 +1,5 @@
1
+ module Kredki
2
+ # Event reported on application is going to exit.
3
+ class ExitEvent < PasteleEvent
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Kredki
2
+ # Event reported on focus enter.
3
+ class FocusEnterEvent < PasteleEvent
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Kredki
2
+ # Event reported on focus leave.
3
+ class FocusLeaveEvent < PasteleEvent
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Kredki
2
+ # Event reported on hide.
3
+ class HideEvent < PasteleEvent
4
+ end
5
+ end
@@ -0,0 +1,102 @@
1
+ module Kredki
2
+ # Base class for joystick related events.
3
+ class JoystickEvent < PasteleEvent
4
+
5
+ # :section: LEVEL 2
6
+
7
+ def initialize joystick, ...
8
+ super(...)
9
+ @joystick = joystick
10
+ end
11
+
12
+ attr :joystick
13
+ end
14
+
15
+ # Event reported on joystick connect.
16
+ class JoystickConnectEvent < JoystickEvent
17
+ end
18
+
19
+ # Event reported on joystick disconnect.
20
+ class JoystickDisconnectEvent < JoystickEvent
21
+ end
22
+
23
+ # Base class for joystick button related events.
24
+ class JoystickButtonEvent < JoystickEvent
25
+
26
+ # Get event button.
27
+ def button
28
+ @joystick.button @source.button
29
+ end
30
+
31
+ # Get main parameter.
32
+ def param
33
+ button&.id
34
+ end
35
+
36
+ # Get binding code.
37
+ def code
38
+ @source.button
39
+ end
40
+ end
41
+
42
+ # Event reported on joystick button press.
43
+ class JoystickButtonPressEvent < JoystickButtonEvent
44
+ end
45
+
46
+ # Event reported on joystick button release.
47
+ class JoystickButtonReleaseEvent < JoystickButtonEvent
48
+ end
49
+
50
+ # Event reported on joystick axis move.
51
+ class JoystickAxisMoveEvent < JoystickEvent
52
+
53
+ # Get event axis.
54
+ def axis
55
+ @joystick.axis @source.axis
56
+ end
57
+
58
+ # Get main parameter.
59
+ def param
60
+ value
61
+ end
62
+
63
+ # Get binding input id.
64
+ def code
65
+ @source.axis
66
+ end
67
+
68
+ # Get axis value.
69
+ def value
70
+ @source.value
71
+ end
72
+ end
73
+
74
+ # Event reported on joystick hat switch.
75
+ class JoystickHatSwitchEvent < JoystickEvent
76
+
77
+ # Get event hat.
78
+ def hat
79
+ @joystick.hat @source.hat
80
+ end
81
+
82
+ # Get main parameter.
83
+ def param
84
+ value
85
+ end
86
+
87
+ # Get binding code.
88
+ def code
89
+ @source.hat
90
+ end
91
+
92
+ # Get binding hat value.
93
+ def input_value
94
+ @source.value
95
+ end
96
+
97
+ # Get hat value.
98
+ def value
99
+ hat&.state input_value
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,40 @@
1
+ module Kredki
2
+ # Base class for keyboard key related events.
3
+ class KeyEvent < PasteleEvent
4
+ include Keyboard::ModifiersDecoder
5
+
6
+ # Get event key.
7
+ def key
8
+ @keyboard.key(@source.sym)
9
+ end
10
+
11
+ # Get main parameter.
12
+ def param
13
+ key&.id
14
+ end
15
+
16
+ # Get binding code.
17
+ def code
18
+ @source.sym
19
+ end
20
+
21
+ # :section: LEVEL 2
22
+
23
+ def initialize keyboard, ...
24
+ super(...)
25
+ @keyboard = keyboard
26
+ end
27
+
28
+ def modifiers
29
+ @source.mod
30
+ end
31
+ end
32
+
33
+ # Event reported on key press.
34
+ class KeyboardKeyPressEvent < KeyEvent
35
+ end
36
+
37
+ # Event reported on key release.
38
+ class KeyboardKeyReleaseEvent < KeyEvent
39
+ end
40
+ end
@@ -0,0 +1,190 @@
1
+ module Kredki
2
+ # Base class for mouse related events.
3
+ class MouseEvent < PasteleEvent
4
+
5
+ # :section: LEVEL 2
6
+
7
+ def initialize device, ...
8
+ super(...)
9
+
10
+ @device = device
11
+ end
12
+ end
13
+
14
+ # Base class for mouse button related events.
15
+ class MouseButtonEvent < MouseEvent
16
+
17
+ # Get event button.
18
+ def button
19
+ @device.button @source.button
20
+ end
21
+
22
+ # Get binding code.
23
+ def code
24
+ @source.button
25
+ end
26
+
27
+ # Get main parameter.
28
+ def param
29
+ button&.id
30
+ end
31
+
32
+ # Get pointer position along X axis.
33
+ def x
34
+ @source.x
35
+ end
36
+
37
+ # Get pointer position along Y axis.
38
+ def y
39
+ @source.y
40
+ end
41
+
42
+ # Get pointer position along X and Y axes.
43
+ def xy
44
+ [@source.x, @source.y]
45
+ end
46
+ end
47
+
48
+ # Event reported on mouse button press.
49
+ class MouseButtonPressEvent < MouseButtonEvent
50
+ end
51
+
52
+ # Event reported on mouse button release.
53
+ class MouseButtonReleaseEvent < MouseButtonEvent
54
+ # Get whether it is release after drag move.
55
+ def drag
56
+ @drag
57
+ end
58
+
59
+ # :section: LEVEL 2
60
+
61
+ def initialize ...
62
+ super
63
+ @drag = false
64
+ end
65
+
66
+ def drag= drag
67
+ @drag = drag
68
+ end
69
+ end
70
+
71
+ # Event reported on mouse pointer move.
72
+ class MousePointerMoveEvent < MouseEvent
73
+
74
+ # Get pointer position along X axis.
75
+ def x
76
+ @source.x
77
+ end
78
+
79
+ # Get pointer position along Y axis.
80
+ def y
81
+ @source.y
82
+ end
83
+
84
+ # Get pointer position along X and Y axes.
85
+ def xy
86
+ [@source.x, @source.y]
87
+ end
88
+
89
+ # Get main parameter.
90
+ def param
91
+ xy
92
+ end
93
+
94
+ # Get whether it is drag move.
95
+ def drag?
96
+ false
97
+ end
98
+
99
+ # Get whether it is drop move.
100
+ def drop?
101
+ false
102
+ end
103
+
104
+ end
105
+
106
+ # Event reported on mouse pointer drag.
107
+ class MousePointerDragEvent < MousePointerMoveEvent
108
+
109
+ # Get whether it is drag move.
110
+ def drag?
111
+ true
112
+ end
113
+
114
+ # Get whether it is drag start move.
115
+ def start?
116
+ @start
117
+ end
118
+
119
+ def button
120
+ @button
121
+ end
122
+
123
+ # :section: LEVEL 2
124
+
125
+ def initialize ...
126
+ super
127
+ @start = false
128
+ @button = nil
129
+ end
130
+
131
+ def start= start
132
+ @start = start
133
+ end
134
+
135
+ def button= button
136
+ @button = button
137
+ end
138
+ end
139
+
140
+ # Event reported on mouse pointer drag.
141
+ class MousePointerDropEvent < MousePointerMoveEvent
142
+
143
+ # Get whether it is drop move.
144
+ def drop?
145
+ true
146
+ end
147
+ end
148
+
149
+ # Event reported on mouse pointer enter.
150
+ class MousePointerEnterEvent < MouseEvent
151
+
152
+ # Get whether it is move sourced event.
153
+ def move?
154
+ @source&.is_a? MousePointerMoveEvent
155
+ end
156
+ end
157
+
158
+ # Event reported on mouse pointer enter.
159
+ class MousePointerLeaveEvent < MouseEvent
160
+
161
+ # Get whether it is move sourced event.
162
+ def move?
163
+ @source&.is_a? MousePointerMoveEvent
164
+ end
165
+ end
166
+
167
+ # Event reported on mouse wheel scroll.
168
+ class MouseWheelScrollEvent < MouseEvent
169
+
170
+ # Get scroll value along X axis.
171
+ def x
172
+ @source.x
173
+ end
174
+
175
+ # Get scroll value along Y axis.
176
+ def y
177
+ @source.y
178
+ end
179
+
180
+ # Get scroll value along X and Y axes.
181
+ def xy
182
+ [@source.x, @source.y]
183
+ end
184
+
185
+ # Get main parameter
186
+ def param
187
+ xy
188
+ end
189
+ end
190
+ end
@@ -0,0 +1,11 @@
1
+ module Kredki
2
+ # Event reported by pastele binding.
3
+ class PasteleEvent < Event
4
+
5
+ # Event timestamp in nanoseconds since SDL binding was initialized.
6
+ def timestamp
7
+ @source.timestamp
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ module Kredki
2
+ # Event reported on show.
3
+ class ShowEvent < PasteleEvent
4
+ end
5
+ end
@@ -0,0 +1,23 @@
1
+ module Kredki
2
+ # Event reported on text entered.
3
+ class TextInputEvent < PasteleEvent
4
+
5
+ # Entered content.
6
+ def text
7
+ @text
8
+ end
9
+
10
+ # Get main parameter
11
+ def param
12
+ text
13
+ end
14
+
15
+ # :section: LEVEL 2
16
+
17
+ def initialize ptr, abi
18
+ super abi
19
+
20
+ @text = @source.text.to_s.force_encoding("utf-8")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ module Kredki
2
+ # Event reported on window clock tick.
3
+ class TickEvent < PasteleEvent
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Kredki
2
+ # Event reported on window update complete.
3
+ class UpdateCompleteEvent < PasteleEvent
4
+ end
5
+ end
@@ -0,0 +1,108 @@
1
+ module Kredki
2
+ # Base class for window related events.
3
+ class WindowEvent < PasteleEvent
4
+ end
5
+
6
+ # Event reported on window expose.
7
+ class WindowExposeEvent < WindowEvent
8
+ end
9
+
10
+ # Event reported on move.
11
+ class MoveEvent < PasteleEvent
12
+
13
+ # Get X position.
14
+ def x
15
+ @x
16
+ end
17
+
18
+ # Get Y position.
19
+ def y
20
+ @y
21
+ end
22
+
23
+ # Get X and Y position.
24
+ def xy
25
+ [@x, @y]
26
+ end
27
+
28
+ # Get main parameter.
29
+ def param
30
+ xy
31
+ end
32
+
33
+ # :section: LEVEL 2
34
+
35
+ def initialize x, y, ...
36
+ super(...)
37
+ @x = x
38
+ @y = y
39
+ end
40
+ end
41
+
42
+ # Event reported on resize.
43
+ class ResizeEvent < PasteleEvent
44
+
45
+ # Get size in the X axis.
46
+ def size_x
47
+ @size[0]
48
+ end
49
+
50
+ # Get size in the Y axis.
51
+ def size_y
52
+ @size[1]
53
+ end
54
+
55
+ # Get size.
56
+ def size
57
+ @size
58
+ end
59
+
60
+ # Get main parameter.
61
+ def param
62
+ size
63
+ end
64
+
65
+ # :section: LEVEL 2
66
+
67
+ def initialize size_x, size_y, ...
68
+ super(...)
69
+ @size = [size_x, size_y]
70
+ end
71
+ end
72
+
73
+ # Event reported on window size change.
74
+ class WindowSizeChangeEvent < WindowEvent
75
+ end
76
+
77
+ # Event reported on window minimize.
78
+ class WindowMinimizeEvent < WindowEvent
79
+ end
80
+
81
+ # Event reported on window maximize.
82
+ class WindowMaximizeEvent < WindowEvent
83
+ end
84
+
85
+ # Event reported on window restore.
86
+ class WindowRestoreEvent < WindowEvent
87
+ end
88
+
89
+ # Event reported on window is about to close. Window closing will continue if the event is not closed.
90
+ class WindowCloseEvent < WindowEvent
91
+ end
92
+
93
+ # Event reported on window take focus.
94
+ class WindowTakeFocusEvent < WindowEvent
95
+ end
96
+
97
+ # Event reported on window hit test.
98
+ class WindowHitTestEvent < WindowEvent
99
+ end
100
+
101
+ # Event reported on window icc porfile change.
102
+ class WindowIccprofChangeEvent < WindowEvent
103
+ end
104
+
105
+ # Event reported on window display change.
106
+ class WindowDisplayChangeEvent < WindowEvent
107
+ end
108
+ end
@@ -0,0 +1,44 @@
1
+ module Kredki
2
+ # Job based event reaction.
3
+ class JobEventReaction < EventReaction
4
+
5
+ # Attach copy of reaction to another manager.
6
+ def attach manager, always = false
7
+ self.class.new @job, manager, always
8
+ end
9
+
10
+ # Cancel reaction.
11
+ def cancel
12
+ super
13
+ @job = nil
14
+ end
15
+
16
+ # :section: LEVEL 2
17
+
18
+ def initialize job, ...
19
+ super(...)
20
+ @job = job
21
+ end
22
+
23
+ attr_accessor :job
24
+
25
+ def call event = nil
26
+ return if !@always && event&.closed?
27
+ event&.reaction = self
28
+ begin
29
+ @job.call event
30
+ rescue => e
31
+ res = Kredki.app.rescue
32
+ if res
33
+ res.call e, event
34
+ else
35
+ raise inspect
36
+ end
37
+ end
38
+ end
39
+
40
+ def inspect
41
+ "#{self.class}:#{object_id} #{@job.inspect}"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ module Kredki
2
+ # Manage joystick event managers.
3
+ class JoystickEventManager
4
+
5
+ # :section: LEVEL 2
6
+
7
+ def initialize
8
+ @managers = {}
9
+ end
10
+
11
+ def report event
12
+ @managers.dig(event.joystick, event.code)&.report event
13
+ @managers.dig(event.joystick, nil)&.report event
14
+ @managers.dig(nil, event.code)&.report event
15
+ @managers.dig(nil, nil)&.report event
16
+ end
17
+
18
+ def [](joystick, indexes)
19
+ managers = @managers[joystick] ||= {}
20
+ case indexes.size
21
+ when 0
22
+ managers[nil] ||= EventManager.new
23
+ when 1
24
+ managers[indexes.first] ||= EventManager.new
25
+ else
26
+ CompositeEventManager.new indexes.map{ managers[_1] ||= EventManager.new }
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'composite_event_manager'
2
+
3
+ module Kredki
4
+ # Manage keyboard event managers.
5
+ class KeyboardEventManager
6
+
7
+ # :section: LEVEL 2
8
+
9
+ def initialize
10
+ @managers = {}
11
+ end
12
+
13
+ def report event
14
+ @managers[event.code]&.report event
15
+ @managers[nil]&.report event
16
+ end
17
+
18
+ def [](*keycodes)
19
+ case keycodes.size
20
+ when 0
21
+ @managers[nil] ||= EventManager.new
22
+ when 1
23
+ @managers[keycodes.first] ||= EventManager.new
24
+ else
25
+ CompositeEventManager.new keycodes.map{ @managers[_1] ||= EventManager.new }
26
+ end
27
+ end
28
+ end
29
+ end