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,176 @@
1
+ module Kredki
2
+ module Pads
3
+ # Pad with scrollable area.
4
+ class ScrollPad < Pad
5
+
6
+ # :section: LEVEL 2
7
+
8
+ def initialize
9
+ super
10
+
11
+ # this component creation order is intentional; @corner existence is checked in put_pad
12
+ corner = put RectanglePad, layoutic: false, fill: :gray, size: 10, xy: End
13
+ @slider_x = put SliderX, layoutic: false, size_y: 10
14
+ @slider_y = put SliderY, layoutic: false, size_x: 10
15
+ @corner = corner
16
+ @clip_size_y_offset = @clip_size_x_offset = 0
17
+ end
18
+
19
+ def slider_x
20
+ @slider_x
21
+ end
22
+
23
+ def slider_y
24
+ @slider_y
25
+ end
26
+
27
+ def corner
28
+ @corner
29
+ end
30
+
31
+ def behavior
32
+ super
33
+ p0 = self
34
+
35
+ on Slider::EditEvent do |e|
36
+ layer&.break_layout
37
+ e.close
38
+ end
39
+
40
+ on_mouse_scroll do |e|
41
+ ps = pads_layoutic
42
+ if !ps.empty?
43
+ size_x, size_y = p0.area_size
44
+ xo, yo = if size_x < @layout_size_x && size_y < @layout_size_y
45
+ Kredki.relative_scroll *e.xy
46
+ elsif size_x < @layout_size_x
47
+ [Kredki.relative_scroll(*e.xy).find{|it| it.nonzero? }, 0]
48
+ elsif size_y < @layout_size_y
49
+ [0, Kredki.relative_scroll(*e.xy).find{|it| it.nonzero? }]
50
+ else
51
+ [0, 0]
52
+ end
53
+ if @slider_x.set_value{|it| (it - 0.3 * xo * size_x / @layout_size_x).clamp(0..1) } |
54
+ @slider_y.set_value{|it| (it - 0.3 * yo * size_y / @layout_size_y).clamp(0..1) }
55
+ then
56
+ e.close
57
+ end
58
+ end
59
+ end
60
+
61
+ on_mouse_move do |e|
62
+ if e.drag?
63
+ speed = case e.button
64
+ when :primary then -1
65
+ when :scroll then 1
66
+ end
67
+ if speed
68
+ @slider_x.process_drag e, speed
69
+ @slider_y.process_drag e, speed
70
+ e.close
71
+ end
72
+ end
73
+ end
74
+
75
+ on VisionOfferEvent do |e|
76
+ x, y = e.target.translate *e.xy, self
77
+
78
+ if (range = (@layout_size_x || 0) - area_size_x) > 0
79
+ if x < 0 || (x += e.size_x - area_size_x) > 0
80
+ @slider_x.value += 1.0 * x / range
81
+ end
82
+ end
83
+
84
+ if (range = (@layout_size_y || 0) - area_size_y) > 0
85
+ if y < 0 || (y += e.size_y - area_size_y) > 0
86
+ @slider_y.value += 1.0 * y / range
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ def mouse_press e
93
+ end
94
+
95
+ def mouse_release e
96
+ end
97
+
98
+ def put_pad pad, at = nil
99
+ super pad, at || @corner
100
+ end
101
+
102
+ def arranged_pads
103
+ pads.take_while{|it| it != @corner }
104
+ end
105
+
106
+ def clip_size_x
107
+ super() + @clip_size_x_offset
108
+ end
109
+
110
+ def clip_size_y
111
+ super() + @clip_size_y_offset
112
+ end
113
+
114
+ def fit_size_x
115
+ super + @slider_y.get_size_x
116
+ end
117
+
118
+ def fit_size_y
119
+ super + @slider_x.get_size_y
120
+ end
121
+
122
+ def arrange prepare = true
123
+ @clip_size_x_offset = @clip_size_y_offset = 0 if prepare
124
+ offset_x, offset_y, @layout_size_x, @layout_size_y = super()
125
+ slide_size_y = @slider_x.get_size_y
126
+ slide_size_x = @slider_y.get_size_x
127
+ ps = arranged_pads
128
+ if !ps.empty?
129
+ asx, asy = area_size
130
+ xscroll = asx < @layout_size_x
131
+ yscroll = asy < @layout_size_y
132
+ yscroll ||= xscroll && asy - slide_size_y < @layout_size_y
133
+ xscroll ||= yscroll && asx - slide_size_x < @layout_size_x
134
+ if prepare && (xscroll || yscroll)
135
+ @clip_size_x_offset -= slide_size_y if yscroll
136
+ @clip_size_y_offset -= slide_size_x if xscroll
137
+ return arrange false
138
+ end
139
+ @slider_x.set_scenic xscroll
140
+ pad_x = 0
141
+ if xscroll
142
+ xs = yscroll ? asx + @clip_size_x_offset : asx
143
+ @slider_x.update_size xs, slide_size_y
144
+ @slider_x.update_xy 0, asy - slide_size_y
145
+ @slider_x.arrange @layout_size_x
146
+ pad_x += ((xs - @layout_size_x) * @slider_x.value).round - offset_x
147
+ end
148
+
149
+ @slider_y.set_scenic yscroll
150
+ pad_y = 0
151
+ if yscroll
152
+ ys = xscroll ? asy + @clip_size_y_offset : asy
153
+ @slider_y.update_size slide_size_x, ys
154
+ @slider_y.update_xy asx - slide_size_x, 0
155
+ @slider_y.arrange @layout_size_y
156
+ pad_y += ((ys - @layout_size_y) * @slider_y.value).round - offset_y
157
+ end
158
+
159
+ ps.each do |p1|
160
+ px = p1.x == Auto ? p1.area_x + pad_x : p1.area_x
161
+ py = p1.y == Auto ? p1.area_y + pad_y : p1.area_y
162
+ p1.update_xy px.ceil, py.ceil
163
+ end
164
+ if @corner.scenic = xscroll && yscroll
165
+ @corner.update_xy asx - slide_size_x, asy - slide_size_y
166
+ end
167
+ else
168
+ @slider_x.set_scenic false
169
+ @slider_y.set_scenic false
170
+ @corner.set_scenic false
171
+ end
172
+ end
173
+
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,148 @@
1
+ module Kredki
2
+ module Pads
3
+ # Pad with shape area.
4
+ class ShapePad < Pad
5
+
6
+ # Set fill.
7
+ def set_fill ...
8
+ @area.set_fill(...)
9
+ end
10
+
11
+ # See #set_fill.
12
+ def fill= param
13
+ send_bundle :set_fill, param
14
+ end
15
+
16
+ # Get fill.
17
+ def fill
18
+ @area.fill
19
+ end
20
+
21
+ # Set stroke.
22
+ def set_stroke ...
23
+ @area.set_stroke(...)
24
+ end
25
+
26
+ # See #set_stroke.
27
+ def stroke= param
28
+ send_bundle :set_stroke, param
29
+ end
30
+
31
+ # Set stroke width.
32
+ def set_stroke_width ...
33
+ @area.set_stroke_width(...)
34
+ end
35
+
36
+ # See #set_stroke_width.
37
+ def stroke_width= param
38
+ send_bundle :set_stroke_width, param
39
+ end
40
+
41
+ # Get stroke width.
42
+ def stroke_width
43
+ @area.stroke_width
44
+ end
45
+
46
+ # Set stroke fill.
47
+ def set_stroke_fill ...
48
+ @area.set_stroke_fill(...)
49
+ end
50
+
51
+ # See #set_stroke_fill.
52
+ def stroke_fill= param
53
+ send_bundle :set_stroke_fill, param
54
+ end
55
+
56
+ # Get stroke fill.
57
+ def stroke_fill
58
+ @area.stroke_fill
59
+ end
60
+
61
+ # Set stroke join.
62
+ def set_stroke_join ...
63
+ @area.set_stroke_join(...)
64
+ end
65
+
66
+ # See #set_stroke_join.
67
+ def stroke_join= param
68
+ send_bundle :set_stroke_join, param
69
+ end
70
+
71
+ # Get stroke join.
72
+ def stroke_join
73
+ @area.stroke_join
74
+ end
75
+
76
+ # Set stroke cap.
77
+ def set_stroke_cap ...
78
+ @area.set_stroke_cap(...)
79
+ end
80
+
81
+ # See #set_stroke_cap.
82
+ def stroke_cap= param
83
+ send_bundle :set_stroke_cap, param
84
+ end
85
+
86
+ # Get stroke cap.
87
+ def stroke_cap
88
+ @area.stroke_cap
89
+ end
90
+
91
+ # Set stroke dash pattern.
92
+ def set_stroke_pattern ...
93
+ @area.set_stroke_pattern(...)
94
+ end
95
+
96
+ # See #set_stroke_pattern.
97
+ def stroke_pattern= param
98
+ send_bundle :set_stroke_pattern, param
99
+ end
100
+
101
+ # Get stroke dash pattern.
102
+ def stroke_pattern
103
+ @area.stroke_pattern
104
+ end
105
+
106
+ # Set stroke trim.
107
+ def set_stroke_trim ...
108
+ @area.set_stroke_trim(...)
109
+ end
110
+
111
+ # See #set_stroke_trim.
112
+ def stroke_trim= param
113
+ send_bundle :set_stroke_trim, param
114
+ end
115
+
116
+ # Get stroke trim.
117
+ def stroke_trim
118
+ @area.stroke_trim
119
+ end
120
+
121
+ # Set whether stroke is behind fill.
122
+ def set_stroke_behind ...
123
+ @area.set_stroke_behind(...)
124
+ end
125
+
126
+ # See #set_stroke_behind.
127
+ def stroke_behind= param
128
+ send_bundle :set_stroke_behind, param
129
+ end
130
+
131
+ # Get whether stroke is behind fill.
132
+ def stroke_behind
133
+ @area.stroke_behind
134
+ end
135
+
136
+ # See #stroke_behind.
137
+ def stroke_behind?
138
+ @area.stroke_behind?
139
+ end
140
+
141
+ # :section: LEVEL 2
142
+
143
+ def initialize_area
144
+ @area = @scene.new_rectangle
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,33 @@
1
+ module Kredki
2
+ module Pads
3
+ # Pad that occupy some space.
4
+ class SpacePad < Pad
5
+
6
+ # Set a feature recognized by its class.
7
+ def << feature
8
+ case feature
9
+ in Numeric
10
+ set_margin feature * 0.5
11
+ in [Numeric, Numeric]
12
+ set_margin feature[0] * 0.5, feature[1] * 0.5
13
+ else
14
+ super
15
+ end
16
+ end
17
+
18
+ # :section: LEVEL 2
19
+
20
+ def sketch
21
+ super
22
+
23
+ set_size 1r
24
+ end
25
+
26
+ def mouse_press e
27
+ end
28
+
29
+ def mouse_release e
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,310 @@
1
+ module Kredki
2
+ module Pads
3
+ # Pad with text area.
4
+ class TextPad < Pad
5
+
6
+ # Get text content.
7
+ def text
8
+ @subject.to_s
9
+ end
10
+
11
+ # Set fill.
12
+ def set_fill *fill
13
+ return send_bundle :set_fill, yield(self.fill) if block_given?
14
+ return unless @area.set_fill *fill
15
+ @verses.each{|it| it.set_fill *fill }
16
+ true
17
+ end
18
+
19
+ # See #set_fill.
20
+ def fill= param
21
+ send_bundle :set_fill, param
22
+ end
23
+
24
+ # Get fill.
25
+ def fill
26
+ @area.fill
27
+ end
28
+
29
+ # Set stroke features.
30
+ def set_stroke *a, **ka
31
+ a.map do |it|
32
+ case it
33
+ when Hash
34
+ set_stroke **it
35
+ when Numeric
36
+ set_stroke_width it
37
+ else
38
+ send_bundle :set_stroke_fill, it
39
+ end
40
+ end.any? | send_branch(__method__, ka)
41
+ end
42
+
43
+ # See #set_stroke.
44
+ def stroke= param
45
+ send_bundle :set_stroke, param
46
+ end
47
+
48
+ # Set stroke fill.
49
+ def set_stroke_fill *stroke_fill
50
+ return send_bundle :set_stroke_fill, yield(self.stroke_fill) if block_given?
51
+ return unless @area.set_stroke_fill *stroke_fill
52
+ @verses.each{|it| it.set_stroke_fill *stroke_fill }
53
+ true
54
+ end
55
+
56
+ # See #set_stroke_fill.
57
+ def stroke_fill= param
58
+ send_bundle :set_stroke_fill, param
59
+ end
60
+
61
+ # Get stroke fill.
62
+ def stroke_fill
63
+ @area.fill
64
+ end
65
+
66
+ # Set stroke width.
67
+ def set_stroke_width stroke_width = @stroke_width
68
+ return send_bundle :set_stroke_width, yield(self.stroke_width) if block_given?
69
+ return unless @area.set_stroke_width *stroke_width
70
+ @verses.each{|it| it.set_stroke_width *stroke_width }
71
+ true
72
+ end
73
+
74
+ # See #set_stroke_width.
75
+ def stroke_width= param
76
+ send_bundle :set_stroke_width, param
77
+ end
78
+
79
+ # Get stroke width.
80
+ def stroke_width
81
+ @area.fill
82
+ end
83
+
84
+ # Set verse features.
85
+ def set_verse *a, **ka
86
+ a.map do |it|
87
+ case it
88
+ when Hash
89
+ set_verse **it
90
+ when Numeric, :auto
91
+ set_verse_size it
92
+ else
93
+ set_verse_layout it
94
+ end
95
+ end.any? | send_branch(__method__, ka)
96
+ end
97
+
98
+ # See #set_verse.
99
+ def verse= param
100
+ send_bundle :set_verse, param
101
+ end
102
+
103
+ # Set verse layout.
104
+ def set_verse_layout layout = nil
105
+ return send_bundle :set_verse_layout, yield(self.verse_layout) if block_given?
106
+ return if @verse_layout == layout
107
+ @verse_layout = layout
108
+ arrange_verses
109
+ end
110
+
111
+ # See #set_verse_layout.
112
+ def verse_layout= param
113
+ send_bundle :set_verse_layout, param
114
+ end
115
+
116
+ # Get verse layout.
117
+ def verse_layout
118
+ @verse_layout
119
+ end
120
+
121
+ # Set space between verses.
122
+ def set_verse_space verse_space = @verse_space
123
+ return send_bundle :set_verse_space, yield(self.verse_space) if block_given?
124
+ return if @verse_space == verse_space
125
+ @verse_space = verse_space
126
+ layer&.break_layout
127
+ true
128
+ end
129
+
130
+ # See #set_verse_space.
131
+ def verse_space= param
132
+ send_bundle :set_verse_space, param
133
+ end
134
+
135
+ # Get space between verses.
136
+ def verse_space
137
+ @verse_space || 0
138
+ end
139
+
140
+ # Set verse size.
141
+ def set_verse_size verse_size = @verse_size
142
+ return send_bundle :set_verse_size, yield(self.verse_size) if block_given?
143
+ return if @verse_size == verse_size
144
+ @verse_size = verse_size
145
+ arrange_verses
146
+ end
147
+
148
+ # See #set_verse_size.
149
+ def verse_size= param
150
+ send_bundle :set_verse_size, param
151
+ end
152
+
153
+ # Get verse size.
154
+ def verse_size
155
+ @verse_size
156
+ end
157
+
158
+ # Set a feature recognized by its class.
159
+ def << feature
160
+ case feature
161
+ when String
162
+ set_subject feature
163
+ else
164
+ super
165
+ end
166
+ end
167
+
168
+ # :section: LEVEL 2
169
+
170
+ def initialize
171
+ super
172
+
173
+ @verses = []
174
+ @verse_size = :auto
175
+ end
176
+
177
+ def sketch
178
+ super
179
+
180
+ set_size Fit
181
+ set_verse_layout :ysc
182
+ set_verse_size Kredki.text_size
183
+ set_subject "TEXT"
184
+ end
185
+
186
+ def update_subject subject
187
+ font = @verses.first&.font || Kredki.font
188
+ @verses&.each{|it| it.detach }
189
+ @verses = "#{subject}\n".each_line(chomp: true).map do |line|
190
+ @scene.new_text line.chomp, fill: @area.fill, font: font
191
+ end
192
+ arrange_verses
193
+ layer&.break_layout
194
+ end
195
+
196
+ def verse_metrics size_y
197
+ case @verse_size
198
+ when :auto
199
+ size_v = 0
200
+ case @verse_space
201
+ when Rational
202
+ size_v = size_y / (1 + (@verses.size - 1) * @verse_space) if @verses.size > 0
203
+ space = size_v * @verse_space
204
+ when Numeric
205
+ size_v = (size_y + (@verses.size - 1) * @verse_space) / @verses.size if @verses.size > 0
206
+ space = @verse_space
207
+ when :auto
208
+ if @verses.size > 0
209
+ size_v = size_y / @verses.size
210
+ space = (size_y - @verses.size * size_v) / (@verses.size - 1)
211
+ else
212
+ space = 0
213
+ end
214
+ else
215
+ size_v = size_y / @verses.size if @verses.size > 0
216
+ space = 0
217
+ end
218
+ when Rational
219
+ size_v = @verses.size > 0 ? @verse_size * size_y : 0
220
+ case @verse_space
221
+ when Rational
222
+ space = size_v * @verse_space
223
+ when Numeric
224
+ space = @verse_space
225
+ when :auto
226
+ if @verses.size > 0
227
+ space = (size_y - @verses.size * size_v) / (@verses.size - 1)
228
+ else
229
+ space = 0
230
+ end
231
+ else
232
+ space = 0
233
+ end
234
+ else
235
+ size_v = @verses.size > 0 ? @verse_size : 0
236
+ case @verse_space
237
+ when Rational
238
+ space = size_v * @verse_space
239
+ when Numeric
240
+ space = @verse_space
241
+ when :auto
242
+ if @verses.size > 0
243
+ space = (size_y - @verses.size * size_v) / (@verses.size - 1)
244
+ else
245
+ space = 0
246
+ end
247
+ else
248
+ space = 0
249
+ end
250
+ end
251
+
252
+ [size_v, space]
253
+ end
254
+
255
+ def fit_size_x
256
+ size_v, _ = verse_metrics get_size_y
257
+ @verses.map{|it| size_v * it.size_x / it.size_y }.max
258
+ end
259
+
260
+ def fit_size_y
261
+ size_v, space = verse_metrics 0
262
+ @margin_ys + @margin_ye + (size_v + space) * @verses.size - space
263
+ end
264
+
265
+ def update_size x, y
266
+ super and arrange_verses
267
+ end
268
+
269
+ def arrange_verses
270
+ if @verses.size > 0
271
+ sx, sy = area_size
272
+ size_v, space = verse_metrics sy
273
+ size_t = (size_v + space) * @verses.size - space
274
+ y = align_y size_t, sy
275
+ @verses.each do |v|
276
+ v.set_size_y size_v
277
+ x = align_x v.size_x, sx
278
+ v.set_xy x, y
279
+ y += size_v + space
280
+ end
281
+ end
282
+ true
283
+ end
284
+
285
+ def align_x reference_size_x, size_x
286
+ case @verse_layout
287
+ when :yss, :ysc, :yse
288
+ 0
289
+ when :yes, :yec, :yee
290
+ size_x - reference_size_x
291
+ when :ycs, :ycc, :yce
292
+ (size_x - reference_size_x) * 0.5
293
+ else raise_is @verse_layout
294
+ end
295
+ end
296
+
297
+ def align_y reference_size_y, size_y
298
+ case @verse_layout
299
+ when :yss, :ycs, :yes
300
+ 0
301
+ when :yse, :yce, :yee
302
+ size_y - reference_size_y
303
+ when :ysc, :ycc, :yec
304
+ (size_y - reference_size_y) * 0.5
305
+ else raise_is @verse_layout
306
+ end
307
+ end
308
+ end
309
+ end
310
+ end