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,62 @@
1
+ module Kredki
2
+ # Job executed in separated thread.
3
+ class SideJob < Job
4
+
5
+ # Run job.
6
+ def run host, event = nil
7
+ cancel
8
+ @host = host
9
+ @event = event || RunEvent.new(nil, nil, self)
10
+ @thread = Thread.new do
11
+ if RunEvent === @event
12
+ @block.call self, @event.source || @event, @event.result
13
+ else
14
+ @block.call self, @event
15
+ end
16
+ end
17
+ @host.put_job self
18
+ end
19
+
20
+ # Report some partial result.
21
+ def report &block
22
+ @host.job &block
23
+ nil # creating job tree in SideJob is not thread safe - nil returned to prevent such pattern
24
+ end
25
+
26
+ # Cancel job and all subjobs.
27
+ def cancel event = nil
28
+ @thread&.kill
29
+ @thread = nil
30
+ @host&.delete_job self
31
+ @event_manager.report event || CancelEvent.new
32
+ @host = nil
33
+ end
34
+
35
+ # :section: LEVEL 2
36
+
37
+ def initialize block
38
+ super()
39
+ @block = block
40
+ @threat = nil
41
+ end
42
+
43
+ def inspect
44
+ "#{self.class}:#{object_id} #{@block}"
45
+ end
46
+
47
+ def tick ms
48
+ if !@thread&.alive?
49
+ if RunEvent === @event
50
+ @event_manager.report RunEvent.new @result, @event.source || nil, @host
51
+ else
52
+ @event_manager.report RunEvent.new @result, @event, @host
53
+ end
54
+ @host = nil
55
+ @event = nil
56
+ @result = nil
57
+ return false
58
+ end
59
+ true
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,71 @@
1
+ class Object
2
+ # Raise invalid argument exception.
3
+ def raise_ia argument, message = nil
4
+ raise "Invalid argument #{argument.inspect}. #{message}"
5
+ end
6
+
7
+ # Raise invalid state exception.
8
+ def raise_is state
9
+ raise "Invalid state #{state.inspect}."
10
+ end
11
+
12
+ # General purpose object altering.
13
+ def set *a, filter_keywords: false, **ka, &block
14
+ a.each{|it| self << it }
15
+ ka.each do |key, arg|
16
+ key = "#{key}=" if key =~ /^\w+$/
17
+ send key, arg if !filter_keywords || self.respond_to?(key)
18
+ end
19
+ instance_exec self, &block if block
20
+ self
21
+ end
22
+
23
+ # Parameter DSL helper.
24
+ def send_bundle method, param
25
+ if Array === param
26
+ if Hash === param.last
27
+ *a, h = param
28
+ send method, *a, **h
29
+ else
30
+ send method, *param
31
+ end
32
+ else
33
+ send method, param
34
+ end
35
+ end
36
+
37
+ # Another parameter DSL helper.
38
+ def send_branch root, branches, separator = "_"
39
+ branches.count{ send_bundle "#{root}#{separator}#{_1}", _2 }.nonzero?
40
+ end
41
+ end
42
+
43
+ class Symbol
44
+ alias_method :old_cmp, :<=>
45
+
46
+ # For DSL purposes ex. size_x_limit: Fit..1r .
47
+ def <=> that
48
+ Numeric === that ? 0 : old_cmp(that)
49
+ end
50
+ end
51
+
52
+ module Enumerable
53
+ # General purpose enumerable objects altering.
54
+ def each_set ...
55
+ each{|it| it.set(...) }
56
+ end
57
+ end
58
+
59
+ class TrueClass
60
+ # Negation.
61
+ def not
62
+ false
63
+ end
64
+ end
65
+
66
+ class FalseClass
67
+ # Negation.
68
+ def not
69
+ true
70
+ end
71
+ end
@@ -0,0 +1,89 @@
1
+ module Kredki
2
+
3
+ module Util
4
+ class << self
5
+
6
+ def eqr a, b
7
+ a == b and (Rational === a) == (Rational === b)
8
+ end
9
+
10
+ def polarize left, right
11
+ both = []
12
+ right_only = right.reject{|it| both << it if left.include? it }
13
+ [left - both, both, right_only]
14
+ end
15
+
16
+ def uncover array
17
+ case array.size
18
+ when 0 then nil
19
+ when 1 then array.first
20
+ else array
21
+ end
22
+ end
23
+
24
+ def cover object
25
+ object.is_a?(Array) ? object : [object]
26
+ end
27
+
28
+ def sin01 value, offset = 0
29
+ Math.sin(0.5 * Math::PI * value) + offset
30
+ end
31
+
32
+ def cos01 value, offset = 0
33
+ Math.cos(0.5 * Math::PI * value) + offset
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ require_relative 'pastele/pastele'
40
+
41
+ require_relative 'event/event'
42
+ require_relative 'event/family/pastele_event'
43
+ require_relative 'event/family/focus_enter_event'
44
+ require_relative 'event/family/focus_leave_event'
45
+ require_relative 'event/family/show_event'
46
+ require_relative 'event/family/hide_event'
47
+ require_relative 'event/family/drop_event'
48
+ require_relative 'event/family/key_event'
49
+ require_relative 'event/family/mouse_event'
50
+ require_relative 'event/family/tick_event'
51
+ require_relative 'event/family/update_complete_event'
52
+ require_relative 'event/family/exit_event'
53
+ require_relative 'event/family/text_event'
54
+ require_relative 'event/family/window_event'
55
+ require_relative 'event/family/joystick_event'
56
+
57
+ require_relative 'paint/paint'
58
+ require_relative 'paint/shape'
59
+ require_relative 'paint/scene'
60
+ require_relative 'paint/area'
61
+ require_relative 'paint/shape_area'
62
+ require_relative 'paint/block_shape_area'
63
+ require_relative 'paint/ellipse'
64
+ require_relative 'paint/rectangle'
65
+ require_relative 'paint/text'
66
+ require_relative 'paint/picture'
67
+ require_relative 'paint/animation'
68
+
69
+ require_relative 'job/job'
70
+ require_relative 'job/after_job'
71
+ require_relative 'job/loop_job'
72
+ require_relative 'job/side_job'
73
+ require_relative 'job/play_loop_job'
74
+ require_relative 'job/play_job'
75
+ require_relative 'job/play_loop_animation_job'
76
+ require_relative 'job/play_animation_job'
77
+
78
+ require_relative 'event/event_manager'
79
+ require_relative 'event/keyboard_event_manager'
80
+ require_relative 'event/mouse_event_manager'
81
+ require_relative 'event/joystick_event_manager'
82
+
83
+ require_relative 'window/pane'
84
+ require_relative 'window/window'
85
+ require_relative 'application'
86
+
87
+ Kredki.app = Kredki::Application
88
+
89
+ load Kredki.config
@@ -0,0 +1,43 @@
1
+ module Kredki
2
+ class LinearGradient
3
+
4
+ def initialize colors, ex, ey = 0, x = 0, y = 0, offsets: nil, spread: nil
5
+ @x = x
6
+ @y = y
7
+ @ex = ex
8
+ @ey = ey
9
+ @colors = colors
10
+ @offsets = offsets
11
+ @spread = spread
12
+ end
13
+
14
+ def self.[](...)
15
+ self.new(...)
16
+ end
17
+
18
+ # :section: LEVEL 2
19
+
20
+ def inspect
21
+ "#{self.class}:#{object_id}"
22
+ end
23
+
24
+ def ffi
25
+ rgbas = @colors.map{|color| Kredki.color(color).to_rgba }.flatten
26
+ offsets = @offsets || (0...@colors.size).map{|it| it.to_f / (@colors.size - 1) }
27
+ spread = case @spread
28
+ when :pad, nil, 0 then 0
29
+ when :reflect, 1 then 1
30
+ when :repeat, 2 then 2
31
+ else raise_is @spread
32
+ end
33
+ [
34
+ @x, @y, @ex, @ey,
35
+ Fiddle::Pointer[rgbas.pack "C*"],
36
+ Fiddle::Pointer[offsets.pack "f*"],
37
+ @colors.size,
38
+ spread
39
+ ]
40
+ end
41
+
42
+ end#LinearGradient
43
+ end#Kredki
@@ -0,0 +1,35 @@
1
+ module Kredki
2
+ # Clipboard interface.
3
+ class Clipboard
4
+
5
+ # Set content.
6
+ def set_content content = nil
7
+ return set_content yield self.content if block_given?
8
+ Pastele.clipboard_set_text content.to_s
9
+ true
10
+ end
11
+
12
+ # See #set_content.
13
+ def content= param
14
+ set_content param
15
+ end
16
+
17
+ # Get content.
18
+ def content
19
+ ptr = Pastele.clipboard_get_text
20
+ str = ptr.to_s.force_encoding("utf-8")
21
+ ptr.free
22
+ return str
23
+ end
24
+
25
+ # Get available mime types in clipboard.
26
+ def mime_types
27
+ mime_types = []
28
+ callback = Fiddle::Closure::BlockCaller.new Fiddle::TYPE_VOID, [Fiddle::TYPE_VOIDP] do |pointer|
29
+ mime_types << pointer.to_s
30
+ end
31
+ Pastele.clipboard_get_mime_types callback
32
+ mime_types
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,199 @@
1
+ module Kredki
2
+ # Joystick device interface.
3
+ class Joystick
4
+ # Joystick button interface.
5
+ class Button
6
+
7
+ # Get button id.
8
+ def id
9
+ @id
10
+ end
11
+
12
+ # Get button code.
13
+ def code
14
+ @code
15
+ end
16
+
17
+ # :section: LEVEL 2
18
+
19
+ def initialize id, code
20
+ @id = id
21
+ @code = code
22
+ end
23
+
24
+ def ==(other)
25
+ Button === other &&
26
+ @code == other.code &&
27
+ @id == other.id
28
+ end
29
+ end
30
+
31
+ # Joystick axis interface.
32
+ class Axis
33
+ # Get axis id.
34
+ def id
35
+ @id
36
+ end
37
+
38
+ # Get axis code.
39
+ def code
40
+ @code
41
+ end
42
+
43
+ # :section: LEVEL 2
44
+
45
+ def initialize id, code
46
+ @id = id
47
+ @code = code
48
+ end
49
+
50
+ def ==(other)
51
+ Axis === other &&
52
+ @code == other.code &&
53
+ @id == other.id
54
+ end
55
+ end
56
+
57
+ # Joystick hat interface.
58
+ class Hat
59
+ # Get hat id.
60
+ def id
61
+ @id
62
+ end
63
+
64
+ # Get hat code.
65
+ def code
66
+ @code
67
+ end
68
+
69
+ # Set state.
70
+ def state! id, code
71
+ @state_map[id] = @statecode_map[code] = id
72
+ end
73
+
74
+ # Get state.
75
+ def state param
76
+ @statecode_map[param] or @state_map[param]
77
+ end
78
+
79
+ # :section: LEVEL 2
80
+
81
+ def initialize id, code
82
+ @id = id
83
+ @code = code
84
+ @state_map = {}
85
+ @statecode_map = {}
86
+ end
87
+
88
+ def ==(other)
89
+ Hat === other &&
90
+ @code == other.code &&
91
+ @id == other.id
92
+ end
93
+ end
94
+
95
+ # Get button codes for input.
96
+ def buttons input
97
+ input.flatten.map{ button(_1).code }.uniq
98
+ end
99
+
100
+ # Get axis codes for input.
101
+ def axes input
102
+ input.flatten.map{ axis(_1).code }.uniq
103
+ end
104
+
105
+ # Get hat codes for input.
106
+ def hats input
107
+ input.flatten.map{ hat(_1).code }.uniq
108
+ end
109
+
110
+ # Set button.
111
+ def button! id, code
112
+ @button_map[id] = @buttoncode_map[code] = Button.new id, code
113
+ end
114
+
115
+ # Get button.
116
+ def button param
117
+ case param
118
+ when Button
119
+ param
120
+ else
121
+ @buttoncode_map[param] or @button_map[param]
122
+ end
123
+ end
124
+
125
+ # Set axis.
126
+ def axis! id, code
127
+ @axis_map[id] = @axiscode_map[code] = Axis.new id, code
128
+ end
129
+
130
+ # Get axis.
131
+ def axis param
132
+ case param
133
+ when Axis
134
+ param
135
+ else
136
+ @axiscode_map[param] or @axis_map[param]
137
+ end
138
+ end
139
+
140
+ # Set hat.
141
+ def hat! id, code, &block
142
+ @hat_map[id] = @hatcode_map[code] = Hat.new(id, code).set &block
143
+ end
144
+
145
+ # Get hat.
146
+ def hat param
147
+ case param
148
+ when Hat
149
+ param
150
+ else
151
+ @hatcode_map[param] or @hat_map[param]
152
+ end
153
+ end
154
+
155
+ # Get whether button is pressed.
156
+ def pressed? key
157
+ return nil if !opened?
158
+ button = button key
159
+ Pastele.joystick_get_button_state(@device_id, button.code) != 0 if button
160
+ end
161
+
162
+ # Get axis value.
163
+ def value key
164
+ return nil if !opened?
165
+ axis = axis key
166
+ Pastele.joystick_get_axis_value @device_id, axis.code if axis
167
+ end
168
+
169
+ # Get whether joystick is opened.
170
+ def opened?
171
+ !!@device_id
172
+ end
173
+
174
+ # :section: LEVEL 2
175
+
176
+ @@next_name = :joystick_1
177
+
178
+ def initialize
179
+ @button_map = {}
180
+ @buttoncode_map = {}
181
+ @axis_map = {}
182
+ @axiscode_map = {}
183
+ @hat_map = {}
184
+ @hatcode_map = {}
185
+ @device_id = nil
186
+ if @name.nil?
187
+ @name = @@next_name
188
+ @@next_name = @@next_name.next
189
+ end
190
+ end
191
+
192
+ def match device_index
193
+ 0
194
+ end
195
+
196
+ attr_accessor :device_id
197
+
198
+ end
199
+ end
@@ -0,0 +1,84 @@
1
+
2
+ module Kredki
3
+ # Keyboard device interface.
4
+ class Keyboard
5
+ include ModifiersDecoder
6
+
7
+ # Keyboard key interface.
8
+ class Key
9
+
10
+ # Get key id.
11
+ def id
12
+ @id
13
+ end
14
+
15
+ # Get key code.
16
+ def keycode
17
+ @keycode
18
+ end
19
+
20
+ # :section: LEVEL 2
21
+
22
+ def initialize id, keycode
23
+ @id = id
24
+ @keycode = keycode
25
+ end
26
+
27
+ def ==(other)
28
+ Key === other &&
29
+ @keycode == other.keycode &&
30
+ @id == other.id
31
+ end
32
+ end
33
+
34
+ # Get keycodes for input.
35
+ def keycodes input
36
+ input.flatten.map{ _1.is_a?(String) ? _1.downcase.codepoints : _1 }.flatten.map{ key(_1).keycode }.uniq
37
+ end
38
+
39
+ # Set key.
40
+ def key! id, keycode
41
+ @key_map[id] = @keycode_map[keycode] = Key.new id, keycode
42
+ end
43
+
44
+ # Get key.
45
+ def key param
46
+ case param
47
+ when Key
48
+ param
49
+ when String
50
+ key param.to_sym
51
+ else
52
+ @keycode_map[param] or @key_map[param]
53
+ end
54
+ end
55
+
56
+ # Get whether key is pressed.
57
+ def pressed? param
58
+ Pastele.keyboard_get_key_state(key(param).keycode) != 0
59
+ end
60
+
61
+ # :section: LEVEL 2
62
+
63
+ def initialize
64
+ @key_map = {}
65
+ @keycode_map = {}
66
+ end
67
+
68
+ def inspect
69
+ "#{self.class}:#{object_id}"
70
+ end
71
+
72
+ def modifiers
73
+ Pastele.keyboard_get_mod_state
74
+ end
75
+
76
+ def key_press_event pastele_event
77
+ KeyboardKeyPressEvent.new self, pastele_event
78
+ end
79
+
80
+ def key_release_event pastele_event
81
+ KeyboardKeyReleaseEvent.new self, pastele_event
82
+ end
83
+ end
84
+ end