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,202 @@
1
+ require_relative 'shape_area'
2
+
3
+ module Kredki
4
+ class Rectangle < ShapeArea
5
+
6
+ # Set X start Y start corner.
7
+ def set_corner_ss corner_ss = @corner_ss
8
+ return set_corner_ss yield @corner_ss if block_given?
9
+ return if @corner_ss == corner_ss
10
+ @corner_ss = corner_ss
11
+ @redraw_flag = true
12
+ update
13
+ end
14
+
15
+ # See #set_corner_ss.
16
+ def corner_ss= param
17
+ send_bundle :set_corner_ss, param
18
+ end
19
+
20
+ # Get X start Y start corner.
21
+ def corner_ss
22
+ @corner_ss
23
+ end
24
+
25
+ # Set X start Y end corner.
26
+ def set_corner_se corner_se = @corner_se
27
+ return set_corner_se yield @corner_se if block_given?
28
+ return if @corner_se == corner_se
29
+ @corner_se = corner_se
30
+ @redraw_flag = true
31
+ update
32
+ end
33
+
34
+ # See #set_corner_se.
35
+ def corner_se= param
36
+ send_bundle :set_corner_se, param
37
+ end
38
+
39
+ # Get X start Y end corner.
40
+ def corner_se
41
+ @corner_se
42
+ end
43
+
44
+ # Set X end Y start corner.
45
+ def set_corner_es corner_es = @corner_es
46
+ return set_corner_es yield @corner_es if block_given?
47
+ return if @corner_es == corner_es
48
+ @corner_es = corner_es
49
+ @redraw_flag = true
50
+ update
51
+ end
52
+
53
+ # See #set_corner_es.
54
+ def corner_es= param
55
+ send_bundle :set_corner_es, param
56
+ end
57
+
58
+ # Get X end Y start corner.
59
+ def corner_es
60
+ @corner_es
61
+ end
62
+
63
+ # Set X end Y end corner.
64
+ def set_corner_ee corner_ee = @corner_ee
65
+ return set_corner_ee yield @corner_ee if block_given?
66
+ return if @corner_ee == corner_ee
67
+ @corner_ee = corner_ee
68
+ @redraw_flag = true
69
+ update
70
+ end
71
+
72
+ # See #set_corner_ee.
73
+ def corner_ee= param
74
+ send_bundle :set_corner_ee, param
75
+ end
76
+
77
+ # Get X end Y end corner.
78
+ def corner_ee
79
+ @corner_ee
80
+ end
81
+
82
+ # Set X start corners.
83
+ def set_corner_xs corner_ss = @corner_ss, corner_se = corner_ss
84
+ return send_bundle :set_corner_xs, yield(self.corner_xs) if block_given?
85
+ return if @corner_ss == corner_ss && @corner_se == corner_se
86
+ @corner_ss = corner_ss
87
+ @corner_se = corner_se
88
+ @redraw_flag = true
89
+ update
90
+ end
91
+
92
+ # See #set_corner_xs.
93
+ def corner_xs= param
94
+ send_bundle :set_corner_xs, param
95
+ end
96
+
97
+ # Get X start corners.
98
+ def corner_xs
99
+ [@corner_ss, @corner_se]
100
+ end
101
+
102
+ # Set X end corners.
103
+ def set_corner_xe corner_es = @corner_es, corner_ee = corner_es
104
+ return send_bundle :set_corner_xe, yield(self.corner_xe) if block_given?
105
+ return if @corner_es == corner_es && @corner_ee == corner_ee
106
+ @corner_es = corner_es
107
+ @corner_ee = corner_ee
108
+ @redraw_flag = true
109
+ update
110
+ end
111
+
112
+ # See #set_corner_xe.
113
+ def corner_xe= param
114
+ send_bundle :set_corner_xe, param
115
+ end
116
+
117
+ # Get X end corners.
118
+ def corner_xe
119
+ [@corner_es, @corner_ee]
120
+ end
121
+
122
+
123
+ # Set Y start corners.
124
+ def set_corner_ys corner_ss = @corner_ss, corner_es = corner_ss
125
+ return send_bundle :set_corner_ys, yield(self.corner_ys) if block_given?
126
+ return if @corner_ss == corner_ss && @corner_es == corner_es
127
+ @corner_ss = corner_ss
128
+ @corner_es = corner_es
129
+ @redraw_flag = true
130
+ update
131
+ end
132
+
133
+ # See #set_corner_ys.
134
+ def corner_ys= param
135
+ send_bundle :set_corner_ys, param
136
+ end
137
+
138
+ # Get Y start corners.
139
+ def corner_ys
140
+ [@corner_ss, @corner_es]
141
+ end
142
+
143
+ # Set Y end corners.
144
+ def set_corner_ye corner_se = @corner_se, corner_ee = corner_se
145
+ return send_bundle :set_corner_ye, yield(self.corner_ye) if block_given?
146
+ return if @corner_se == corner_se && @corner_ee == corner_ee
147
+ @corner_se = corner_se
148
+ @corner_ee = corner_ee
149
+ @redraw_flag = true
150
+ update
151
+ end
152
+
153
+ # See #set_corner_ye.
154
+ def corner_ye= param
155
+ send_bundle :set_corner_ye, param
156
+ end
157
+
158
+ # Get Y end corners.
159
+ def corner_ye
160
+ [@corner_se, @corner_ee]
161
+ end
162
+
163
+ # Set corners.
164
+ def set_corner corner_ss = @corner_ss, corner_es = corner_ss, corner_se = corner_ss, corner_ee = corner_es
165
+ return send_bundle :set_corner, yield(self.corner) if block_given?
166
+ return if @corner_ss == corner_ss && @corner_es == corner_es && @corner_se == corner_se && @corner_ee == corner_ee
167
+ @corner_ss = corner_ss
168
+ @corner_es = corner_es
169
+ @corner_se = corner_se
170
+ @corner_ee = corner_ee
171
+ @redraw_flag = true
172
+ update
173
+ end
174
+
175
+ # See #set_corner.
176
+ def corner= param
177
+ send_bundle :set_corner, param
178
+ end
179
+
180
+ # Get corners.
181
+ def corner
182
+ [@corner_ss, @corner_es, @corner_se, @corner_ee]
183
+ end
184
+
185
+ # :section: LEVEL 2
186
+
187
+ def initialize
188
+ @corner_ss = @corner_se = @corner_es = @corner_ee = 0
189
+ super
190
+ update
191
+ end
192
+
193
+ def redraw
194
+ draw(true, @size_x * 0.5 , @size_y * 0.5).rectangle @size_x - @stroke_width, @size_y - @stroke_width, @corner_ss, @corner_es, @corner_se, @corner_ee
195
+ end
196
+
197
+ def update_stroke_width ...
198
+ super
199
+ @redraw_flag = true
200
+ end
201
+ end
202
+ end
@@ -0,0 +1,277 @@
1
+ require_relative 'paint'
2
+
3
+ module Kredki
4
+ class Scene < Paint
5
+
6
+ # Set pivot point position along the X axis.
7
+ def set_pivot_x pivot_x = @pivot_x
8
+ return set_pivot_x yield @pivot_x if block_given?
9
+ return if @pivot_x == pivot_x
10
+ @pivot_x = pivot_x
11
+ update_transform
12
+ update
13
+ end
14
+
15
+ # See #set_pivot_x.
16
+ def pivot_x= param
17
+ send_bundle :set_pivot_x, param
18
+ end
19
+
20
+ # Get pivot point position along the X axis.
21
+ def pivot_x
22
+ @pivot_x
23
+ end
24
+
25
+ # Set pivot point position along the Y axis.
26
+ def set_pivot_y pivot_y = @pivot_y
27
+ return set_pivot_y yield @pivot_y if block_given?
28
+ return if @pivot_y == pivot_y
29
+ @pivot_y = pivot_y
30
+ update_transform
31
+ update
32
+ end
33
+
34
+ # See #set_pivot_y.
35
+ def pivot_y= param
36
+ send_bundle :set_pivot_y, param
37
+ end
38
+
39
+ # Get pivot point position along the Y axis.
40
+ def pivot_y
41
+ @pivot_y
42
+ end
43
+
44
+ # Set pivot point position along X and Y axes.
45
+ def set_pivot pivot_x = @pivot_x, pivot_y = pivot_x
46
+ return send_bundle :set_pivot, yield(self.pivot) if block_given?
47
+ return if @pivot_x == pivot_x && @pivot_y == pivot_y
48
+ @pivot_x = pivot_x
49
+ @pivot_y = pivot_y
50
+ update_transform
51
+ update
52
+ end
53
+
54
+ # See #set_pivot.
55
+ def pivot= param
56
+ send_bundle :set_pivot, param
57
+ end
58
+
59
+ # Get pivot point position along X and Y axes.
60
+ def pivot
61
+ [@pivot_x, @pivot_y]
62
+ end
63
+
64
+ # Create new attached Kredki::Shape.
65
+ def new_shape ...
66
+ new_paint(Shape, ...)
67
+ end
68
+
69
+ # Create new attached Kredki::Rectangle.
70
+ def new_rectangle ...
71
+ new_paint(Rectangle, ...)
72
+ end
73
+
74
+ # Create new attached Kredki::Ellipse.
75
+ def new_ellipse ...
76
+ new_paint(Ellipse, ...)
77
+ end
78
+
79
+ # Create new attached Kredki::Picture.
80
+ def new_picture ...
81
+ new_paint(Picture, ...)
82
+ end
83
+
84
+ # Create new attached Kredki::Text.
85
+ def new_text ...
86
+ new_paint(Text, ...)
87
+ end
88
+
89
+ # Create new attached Kredki::Scene.
90
+ def new_scene ...
91
+ new_paint(Scene, ...)
92
+ end
93
+
94
+ # Create new attached Kredki::Animation.
95
+ def new_animation *a, hidden: false, at: nil, **ka, &b
96
+ Animation.new.attach(self, hidden, at).set(*a, **ka, &b)
97
+ end
98
+
99
+ # Clear all scene effects.
100
+ def clear_effects
101
+ Pastele.scene_clear_effects @pointer
102
+ update
103
+ end
104
+
105
+ # Add gaussian blur scene effect.
106
+ def gaussian_blur sigma, direction = :both, border = :wrap, quality = 100
107
+ direction = case direction
108
+ when :both, 0 then 0
109
+ when :x, 1 then 1
110
+ when :y, 2 then 2
111
+ else raise_ia direction
112
+ end
113
+ border = case border
114
+ when :duplicate, 0 then 0
115
+ when :wrap, 1 then 1
116
+ end
117
+ Pastele.scene_add_gaussian_blur @pointer, sigma, direction, border, quality
118
+ update
119
+ end
120
+
121
+ # Add drop shadow scene effect.
122
+ def drop_shadow color:, angle: 0, distance: 0, blur: 5, quality: 10
123
+ Pastele.scene_add_drop_shadow @pointer, *Kredki.color(color).to_rgba, angle, distance, blur, quality
124
+ update
125
+ end
126
+
127
+ # Add fill scene effect.
128
+ def fill *a
129
+ Pastele.scene_add_fill @pointer, *Kredki.color(a.uncover).to_rgba
130
+ update
131
+ end
132
+
133
+ # Add tint scene effect.
134
+ def tint black:, white:, intensity: 100.0
135
+ Pastele.scene_add_tint @pointer, *Kredki.color(black).to_rgb, *Kredki.color(white).to_rgb, intensity
136
+ update
137
+ end
138
+
139
+ # Add tritone scene effect.
140
+ def tritone shadow:, midtone:, highlight:, blend: 255
141
+ Pastele.scene_add_tritone @pointer, *Kredki.color(shadow).to_rgb, *Kredki.color(midtone).to_rgb, *Kredki.color(highlight).to_rgb, blend
142
+ update
143
+ end
144
+
145
+ # Detach all paints.
146
+ def clear
147
+ Pastele.scene_remove @pointer, nil
148
+ nil_paint = PaintState.new nil, nil, nil, nil
149
+ nil_paint.before = nil_paint.after = nil_paint
150
+ @paints = {nil => nil_paint}
151
+ update
152
+ end
153
+
154
+ # Total attached paints.
155
+ def size
156
+ @paints.size - 1
157
+ end
158
+
159
+ # :section: LEVEL 2
160
+
161
+ class PaintState
162
+
163
+ def initialize paint, before, after, hidden
164
+ @paint = paint
165
+ @before = before
166
+ @after = after
167
+ @hidden = hidden
168
+ end
169
+
170
+ attr_accessor :paint
171
+ attr_accessor :before
172
+ attr_accessor :after
173
+ attr_accessor :hidden
174
+
175
+ def inspect
176
+ "#{self.class}:#{self.object_id}"
177
+ end
178
+ end
179
+
180
+ def initialize
181
+ super Pastele.scene_new
182
+ ObjectSpace.define_finalizer(self, Scene.finalizer(@pointer))
183
+
184
+ @pivot_x = @pivot_y = 0
185
+ clear
186
+ end
187
+
188
+ def self.finalizer pointer
189
+ proc{ Pastele.scene_delete pointer }
190
+ end
191
+
192
+ def new_paint klass, *a, hidden: false, at: nil, **ka, &b
193
+ put_paint(klass.new, hidden, at).paint.set(*a, **ka, &b)
194
+ end
195
+
196
+ def each_paint &b
197
+ Enumerator.new do |e|
198
+ state = @paints[nil].after
199
+ while paint = state.paint
200
+ e << paint
201
+ state = state.after
202
+ end
203
+ end.each &b
204
+ end
205
+
206
+ def update_paint paint
207
+ @scene&.update_paint self
208
+ end
209
+
210
+ def put_paint paint, hidden = false, at = nil
211
+ paint.detach if paint.scene
212
+ paint.scene = self
213
+ unless hidden
214
+ Pastele.scene_add @pointer, paint.pointer, next_shown(at)&.pointer
215
+ update
216
+ end
217
+ ats = @paints[at] || @paints[nil]
218
+ ats.before = ats.before.after = @paints[paint] = PaintState.new paint, ats.before, ats, hidden
219
+ end
220
+
221
+ def next_shown at
222
+ state = @paints[at]
223
+ state = state.after while state&.paint && state.hidden
224
+ state&.paint
225
+ end
226
+
227
+ def delete_paint paint
228
+ if (state = @paints.delete paint)
229
+ paint.scene = nil
230
+ unless state.hidden
231
+ Pastele.scene_remove @pointer, paint.pointer
232
+ update
233
+ end
234
+ state.before.after = state.after
235
+ state.after.before = state.before
236
+ end
237
+ paint
238
+ end
239
+
240
+ def hide_paint paint
241
+ state = @paints[paint]
242
+ if state && !state.hidden
243
+ Pastele.scene_remove @pointer, paint.pointer
244
+ update
245
+ state.hidden = true
246
+ end
247
+ end
248
+
249
+ def show_paint paint
250
+ state = @paints[paint]
251
+ if state && state.hidden
252
+ at = state
253
+ at = at.after while at.after&.hidden
254
+ Pastele.scene_add @pointer, paint.pointer, at.after&.paint&.pointer
255
+ update
256
+ state.hidden = false
257
+ end
258
+ end
259
+
260
+ def renew_paint paint, old_pointer, new_pointer
261
+ state = @paints[paint]
262
+ if state && !state.hidden
263
+ Pastele.scene_add @pointer, new_pointer, old_pointer
264
+ Pastele.scene_remove @pointer, old_pointer
265
+ end
266
+ end
267
+
268
+ def paint_scenic paint
269
+ state = @paints[paint]
270
+ state && !state.hidden
271
+ end
272
+
273
+ def paint_displayed paint
274
+ paint_scenic paint and displayed
275
+ end
276
+ end
277
+ end