squib 0.12.0 → 0.13.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 (392) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -2
  3. data/CHANGELOG.md +16 -1
  4. data/appveyor.yml +2 -3
  5. data/lib/squib/args/sheet.rb +66 -34
  6. data/lib/squib/graphics/save_pdf.rb +1 -1
  7. data/lib/squib/import/data_frame.rb +7 -7
  8. data/lib/squib/version.rb +1 -1
  9. data/samples/autoscale_font/_autoscale_font.rb +1 -1
  10. data/samples/build_groups/build_groups.rb +3 -3
  11. data/samples/colors/_colors.rb +1 -0
  12. data/samples/{config_text_markup.rb → config/config_text_markup.rb} +0 -0
  13. data/samples/{custom_config.rb → config/custom_config.rb} +0 -0
  14. data/samples/{cairo_access.rb → images/_cairo_access.rb} +0 -0
  15. data/samples/images/_images.rb +1 -1
  16. data/samples/{unicode.rb → images/_unicode.rb} +0 -0
  17. data/samples/intro/01_hello.rb +1 -2
  18. data/samples/intro/02_options.rb +1 -2
  19. data/samples/intro/03_layout.rb +1 -2
  20. data/samples/intro/04_arrays.rb +1 -2
  21. data/samples/intro/05_excel.rb +3 -4
  22. data/samples/{tgc_proofs.rb → proofs/_tgc_proofs.rb} +1 -4
  23. data/samples/saves/_save_pdf.rb +7 -0
  24. data/samples/{embed_text.rb → text/_embed_text.rb} +1 -0
  25. data/samples/text/_text.rb +1 -1
  26. data/samples/{text_options.rb → text/_text_options.rb} +1 -1
  27. data/samples/{bug134.rb → text/bug134.rb} +0 -0
  28. data/squib.gemspec +17 -16
  29. metadata +90 -596
  30. data/benchmarks/antialias_best.rb +0 -13
  31. data/benchmarks/antialias_best.yml +0 -1
  32. data/benchmarks/antialias_fast.rb +0 -13
  33. data/benchmarks/antialias_fast.yml +0 -1
  34. data/benchmarks/backend-svg.yml +0 -4
  35. data/benchmarks/backend_memory.rb +0 -14
  36. data/benchmarks/backend_svg.rb +0 -14
  37. data/benchmarks/shiny-purse.png +0 -0
  38. data/benchmarks/spanner.svg +0 -91
  39. data/benchmarks/tons_of_png.rb +0 -6
  40. data/benchmarks/tons_of_svg.rb +0 -7
  41. data/benchmarks/tons_of_text.rb +0 -8
  42. data/docs/Makefile +0 -216
  43. data/docs/_static/css/squibdocs.css +0 -23
  44. data/docs/args/draw.rst +0 -36
  45. data/docs/args/expansion.rst +0 -3
  46. data/docs/args/layout.rst +0 -6
  47. data/docs/args/output_dir.rst +0 -6
  48. data/docs/args/range.rst +0 -6
  49. data/docs/args/transform.rst +0 -51
  50. data/docs/args/trim.rst +0 -11
  51. data/docs/args/wh.rst +0 -12
  52. data/docs/args/xy.rst +0 -12
  53. data/docs/arrays.rst +0 -80
  54. data/docs/backends.rst +0 -20
  55. data/docs/bleed.rst +0 -13
  56. data/docs/build_groups.rst +0 -45
  57. data/docs/colors.rst +0 -90
  58. data/docs/conf.py +0 -287
  59. data/docs/config.rst +0 -135
  60. data/docs/data.rst +0 -26
  61. data/docs/dsl/background.rst +0 -20
  62. data/docs/dsl/build.rst +0 -32
  63. data/docs/dsl/build_groups.rst +0 -23
  64. data/docs/dsl/circle.rst +0 -27
  65. data/docs/dsl/cm.rst +0 -19
  66. data/docs/dsl/configure.rst +0 -18
  67. data/docs/dsl/csv.rst +0 -81
  68. data/docs/dsl/curve.rst +0 -63
  69. data/docs/dsl/data_frame.rst +0 -85
  70. data/docs/dsl/deck.rst +0 -45
  71. data/docs/dsl/disable_build.rst +0 -25
  72. data/docs/dsl/disable_build_globally.rst +0 -46
  73. data/docs/dsl/ellipse.rst +0 -23
  74. data/docs/dsl/enable_build.rst +0 -25
  75. data/docs/dsl/enable_build_globally.rst +0 -44
  76. data/docs/dsl/grid.rst +0 -31
  77. data/docs/dsl/hand.rst +0 -40
  78. data/docs/dsl/hint.rst +0 -15
  79. data/docs/dsl/inches.rst +0 -19
  80. data/docs/dsl/index.rst +0 -9
  81. data/docs/dsl/line.rst +0 -52
  82. data/docs/dsl/mm.rst +0 -19
  83. data/docs/dsl/png.rst +0 -49
  84. data/docs/dsl/polygon.rst +0 -28
  85. data/docs/dsl/rect.rst +0 -22
  86. data/docs/dsl/save.rst +0 -23
  87. data/docs/dsl/save_pdf.rst +0 -89
  88. data/docs/dsl/save_png.rst +0 -46
  89. data/docs/dsl/save_sheet.rst +0 -55
  90. data/docs/dsl/showcase.rst +0 -76
  91. data/docs/dsl/star.rst +0 -35
  92. data/docs/dsl/svg.rst +0 -119
  93. data/docs/dsl/text.rst +0 -292
  94. data/docs/dsl/triangle.rst +0 -50
  95. data/docs/dsl/use_layout.rst +0 -16
  96. data/docs/dsl/xlsx.rst +0 -56
  97. data/docs/guides/game_icons.rst +0 -126
  98. data/docs/guides/getting-started/index.rst +0 -5
  99. data/docs/guides/getting-started/part_0_learning_ruby.rst +0 -145
  100. data/docs/guides/getting-started/part_1_zero_to_game.rst +0 -217
  101. data/docs/guides/getting-started/part_2_iconography.rst +0 -228
  102. data/docs/guides/getting-started/part_3_workflows.rst +0 -46
  103. data/docs/guides/getting-started/part_4_ruby_power.rst +0 -18
  104. data/docs/guides/git.rst +0 -14
  105. data/docs/guides/guard.rst +0 -84
  106. data/docs/guides/hello_world.rst +0 -65
  107. data/docs/guides/projects.rst +0 -35
  108. data/docs/help.rst +0 -157
  109. data/docs/index.rst +0 -35
  110. data/docs/install.rst +0 -68
  111. data/docs/layouts.rst +0 -290
  112. data/docs/learning.rst +0 -12
  113. data/docs/make.bat +0 -263
  114. data/docs/parameters.rst +0 -34
  115. data/docs/server.bat +0 -1
  116. data/docs/text_feature.rst +0 -115
  117. data/docs/units.rst +0 -14
  118. data/samples/autoscale_font/.gitignore +0 -2
  119. data/samples/autoscale_font/card_00_expected.png +0 -0
  120. data/samples/backend/.gitignore +0 -1
  121. data/samples/backend/_backend-config.yml +0 -5
  122. data/samples/backend/backend_00_expected.png +0 -0
  123. data/samples/backend/backend_01_expected.png +0 -0
  124. data/samples/backend/backend_vectorized_expected.pdf +0 -0
  125. data/samples/backend/backend_vectors_00_expected.svg +0 -84
  126. data/samples/backend/backend_vectors_01_expected.svg +0 -84
  127. data/samples/backend/shiny-purse.png +0 -0
  128. data/samples/backend/showcase_expected.png +0 -0
  129. data/samples/backend/spanner.svg +0 -91
  130. data/samples/ball.png +0 -0
  131. data/samples/build_groups/.gitignore +0 -1
  132. data/samples/build_groups/Rakefile +0 -25
  133. data/samples/colors/.gitignore +0 -1
  134. data/samples/colors/color_constants_00_expected.png +0 -0
  135. data/samples/colors/colors_00_expected.png +0 -0
  136. data/samples/colors/gradient_00_expected.png +0 -0
  137. data/samples/config_disable_quotes.yml +0 -3
  138. data/samples/config_text_markup.yml +0 -9
  139. data/samples/custom-config.yml +0 -5
  140. data/samples/customconfig-imgdir/shiny-purse2.png +0 -0
  141. data/samples/customconfig-imgdir/spanner2.svg +0 -91
  142. data/samples/data/.gitignore +0 -1
  143. data/samples/data/explode_quantities.xlsx +0 -0
  144. data/samples/data/quantity_explosion.csv +0 -3
  145. data/samples/data/sample.csv +0 -3
  146. data/samples/data/sample.xlsx +0 -0
  147. data/samples/data/sample_csv_00_expected.png +0 -0
  148. data/samples/data/sample_csv_01_expected.png +0 -0
  149. data/samples/data/sample_csv_qty_00_expected.png +0 -0
  150. data/samples/data/sample_excel_00_expected.png +0 -0
  151. data/samples/data/sample_excel_01_expected.png +0 -0
  152. data/samples/data/sample_excel_02_expected.png +0 -0
  153. data/samples/data/sample_excel_resources_00_expected.png +0 -0
  154. data/samples/data/sample_excel_resources_01_expected.png +0 -0
  155. data/samples/data/sample_xlsx_qty_00_expected.png +0 -0
  156. data/samples/glass-heart.svg +0 -52
  157. data/samples/grit.png +0 -0
  158. data/samples/images/.gitignore +0 -8
  159. data/samples/images/_images_00_expected.png +0 -0
  160. data/samples/images/angler-fish.png +0 -0
  161. data/samples/images/ball.png +0 -0
  162. data/samples/images/glass-heart.svg +0 -52
  163. data/samples/images/grit.png +0 -0
  164. data/samples/images/offset.svg +0 -85
  165. data/samples/images/robot-golem.svg +0 -1
  166. data/samples/images/shiny-purse.png +0 -0
  167. data/samples/images/spanner.svg +0 -91
  168. data/samples/images/sprites.png +0 -0
  169. data/samples/images/with-alpha.png +0 -0
  170. data/samples/intro/.gitignore +0 -2
  171. data/samples/intro/auto-repair.svg +0 -1
  172. data/samples/intro/crawling.svg +0 -1
  173. data/samples/intro/data.xlsx +0 -0
  174. data/samples/intro/humans.svg +0 -1
  175. data/samples/intro/ninja-mask.svg +0 -1
  176. data/samples/intro/part1_00_expected.png +0 -0
  177. data/samples/intro/part2_00_expected.png +0 -0
  178. data/samples/intro/part3_00_expected.png +0 -0
  179. data/samples/intro/part3_layout.yml +0 -34
  180. data/samples/intro/part4_00_expected.png +0 -0
  181. data/samples/intro/part4_01_expected.png +0 -0
  182. data/samples/intro/part5_00_expected.png +0 -0
  183. data/samples/intro/part5_01_expected.png +0 -0
  184. data/samples/intro/part5_02_expected.png +0 -0
  185. data/samples/intro/part5_03_expected.png +0 -0
  186. data/samples/intro/part5_hand_expected.png +0 -0
  187. data/samples/intro/part5_showcase_expected.png +0 -0
  188. data/samples/intro/pirate-skull.svg +0 -1
  189. data/samples/intro/robot-golem.svg +0 -1
  190. data/samples/layouts/custom-layout.yml +0 -60
  191. data/samples/layouts/custom-layout2.yml +0 -15
  192. data/samples/layouts/expected_layouts_builtin_economy_00.png +0 -0
  193. data/samples/layouts/expected_layouts_builtin_fantasy_00.png +0 -0
  194. data/samples/layouts/expected_layouts_builtin_hand_00.png +0 -0
  195. data/samples/layouts/expected_layouts_builtin_playing_card_00.png +0 -0
  196. data/samples/layouts/expected_layouts_builtin_tuck_box_00.png +0 -0
  197. data/samples/layouts/shiny-purse.png +0 -0
  198. data/samples/layouts/spanner.svg +0 -91
  199. data/samples/load_images_config.yml +0 -1
  200. data/samples/offset.svg +0 -71
  201. data/samples/pokercard.png +0 -0
  202. data/samples/project/Gemfile +0 -6
  203. data/samples/project/Guardfile +0 -18
  204. data/samples/project/Rakefile +0 -25
  205. data/samples/project/bw/robot-golem.svg +0 -53
  206. data/samples/project/color/robot-golem.svg +0 -1
  207. data/samples/project/config.yml +0 -2
  208. data/samples/project/layouts/characters.yml +0 -3
  209. data/samples/project/layouts/skills.yml +0 -3
  210. data/samples/ranges/glass-heart.svg +0 -52
  211. data/samples/ranges/ranges_00_expected.png +0 -0
  212. data/samples/saves/.gitignore +0 -1
  213. data/samples/saves/hand_expected.png +0 -0
  214. data/samples/saves/hand_pretty_expected.png +0 -0
  215. data/samples/saves/save-pdf-small_expected.pdf +0 -0
  216. data/samples/saves/save-pdf_expected.pdf +0 -0
  217. data/samples/saves/save_png_00_expected.png +0 -0
  218. data/samples/saves/save_png_trimmed_00_expected.png +0 -0
  219. data/samples/saves/save_sheet_00_expected.png +0 -0
  220. data/samples/saves/save_sheet_01_expected.png +0 -0
  221. data/samples/saves/save_sheet_range_00_expected.png +0 -0
  222. data/samples/saves/save_sheet_range_01_expected.png +0 -0
  223. data/samples/saves/save_single_sheet_00_expected.png +0 -0
  224. data/samples/saves/saves_notrim_01_expected.png +0 -0
  225. data/samples/saves/showcase2_expected.png +0 -0
  226. data/samples/saves/showcase_expected.png +0 -0
  227. data/samples/saves/showcase_individual_00_expected.png +0 -0
  228. data/samples/saves/showcase_individual_01_expected.png +0 -0
  229. data/samples/saves/showcase_individual_02_expected.png +0 -0
  230. data/samples/saves/showcase_individual_03_expected.png +0 -0
  231. data/samples/saves/spanner.svg +0 -91
  232. data/samples/shapes/.gitignore +0 -1
  233. data/samples/shapes/shape_00_expected.png +0 -0
  234. data/samples/shiny-purse.png +0 -0
  235. data/samples/spanner.svg +0 -91
  236. data/samples/sprites.png +0 -0
  237. data/samples/text/.gitignore +0 -2
  238. data/samples/text/README.md +0 -1
  239. data/samples/text/_text_00_expected.png +0 -0
  240. data/samples/text/config.yml +0 -2
  241. data/samples/units/units_00_expected.png +0 -0
  242. data/samples/units/using_units.yml +0 -10
  243. data/spec/api/api_data_spec.rb +0 -172
  244. data/spec/api/api_groups_spec.rb +0 -49
  245. data/spec/api/api_settings_spec.rb +0 -38
  246. data/spec/api/api_units_spec.rb +0 -37
  247. data/spec/args/box_spec.rb +0 -127
  248. data/spec/args/draw_spec.rb +0 -101
  249. data/spec/args/embed_key_spec.rb +0 -13
  250. data/spec/args/input_file_spec.rb +0 -21
  251. data/spec/args/paint_spec.rb +0 -22
  252. data/spec/args/paragraph_spec.rb +0 -153
  253. data/spec/args/range_spec.rb +0 -41
  254. data/spec/args/save_batch_spec.rb +0 -51
  255. data/spec/args/scale_box_spec.rb +0 -71
  256. data/spec/args/sheet_spec.rb +0 -80
  257. data/spec/args/showcase_special_spec.rb +0 -15
  258. data/spec/args/transform_spec.rb +0 -25
  259. data/spec/args/typographer_spec.rb +0 -71
  260. data/spec/args/unit_conversion_spec.rb +0 -29
  261. data/spec/card_spec.rb +0 -11
  262. data/spec/commands/new_spec.rb +0 -48
  263. data/spec/conf_spec.rb +0 -47
  264. data/spec/data/conf/basic.yml +0 -1
  265. data/spec/data/conf/empty.yml +0 -1
  266. data/spec/data/conf/unrecognized.yml +0 -4
  267. data/spec/data/csv/basic.csv +0 -3
  268. data/spec/data/csv/custom_opts.csv +0 -2
  269. data/spec/data/csv/dup_cols.csv +0 -3
  270. data/spec/data/csv/newline.csv +0 -3
  271. data/spec/data/csv/qty.csv +0 -3
  272. data/spec/data/csv/qty_named.csv +0 -3
  273. data/spec/data/csv/with_spaces.csv +0 -3
  274. data/spec/data/csv/yield.csv +0 -3
  275. data/spec/data/layouts/easy-circular-extends.yml +0 -6
  276. data/spec/data/layouts/empty-rule.yml +0 -1
  277. data/spec/data/layouts/empty.yml +0 -1
  278. data/spec/data/layouts/extends-nonexists.yml +0 -3
  279. data/spec/data/layouts/extends-units-mixed.yml +0 -8
  280. data/spec/data/layouts/extends-units.yml +0 -8
  281. data/spec/data/layouts/hard-circular-extends.yml +0 -9
  282. data/spec/data/layouts/multi-extends-single-entry.yml +0 -14
  283. data/spec/data/layouts/multi-level-extends.yml +0 -10
  284. data/spec/data/layouts/multifile-a.yml +0 -4
  285. data/spec/data/layouts/multifile-b.yml +0 -4
  286. data/spec/data/layouts/multifile-extends-a.yml +0 -8
  287. data/spec/data/layouts/multifile-extends-b.yml +0 -9
  288. data/spec/data/layouts/no-extends.yml +0 -5
  289. data/spec/data/layouts/pre-extends.yml +0 -7
  290. data/spec/data/layouts/self-circular-extends.yml +0 -3
  291. data/spec/data/layouts/single-extends.yml +0 -7
  292. data/spec/data/layouts/single-level-multi-extends.yml +0 -12
  293. data/spec/data/samples/autoscale_font/_autoscale_font.rb.txt +0 -133
  294. data/spec/data/samples/basic.rb.txt +0 -248
  295. data/spec/data/samples/cairo_access.rb.txt +0 -59
  296. data/spec/data/samples/colors/_gradients.rb.txt +0 -84
  297. data/spec/data/samples/config_text_markup.rb.txt +0 -74
  298. data/spec/data/samples/custom_config.rb.txt +0 -59
  299. data/spec/data/samples/data/_csv.rb.txt +0 -231
  300. data/spec/data/samples/data/_excel.rb.txt +0 -704
  301. data/spec/data/samples/embed_text.rb.txt +0 -431
  302. data/spec/data/samples/hello_world.rb.txt +0 -38
  303. data/spec/data/samples/images/_more_load_images.rb.txt +0 -335
  304. data/spec/data/samples/layouts.rb.txt +0 -489
  305. data/spec/data/samples/ranges/_ranges.rb.txt +0 -484
  306. data/spec/data/samples/saves/_hand.rb.txt +0 -594
  307. data/spec/data/samples/saves/_portrait_landscape.rb.txt +0 -57
  308. data/spec/data/samples/saves/_save_pdf.rb.txt +0 -1601
  309. data/spec/data/samples/saves/_saves.rb.txt +0 -873
  310. data/spec/data/samples/saves/_showcase.rb.txt +0 -5942
  311. data/spec/data/samples/shapes/_draw_shapes.rb.txt +0 -757
  312. data/spec/data/samples/text_options.rb.txt +0 -1158
  313. data/spec/data/samples/tgc_proofs.rb.txt +0 -102
  314. data/spec/data/samples/units/_units.rb.txt +0 -53
  315. data/spec/data/xlsx/basic.xlsx +0 -0
  316. data/spec/data/xlsx/explode_quantities.xlsx +0 -0
  317. data/spec/data/xlsx/formulas.xlsx +0 -0
  318. data/spec/data/xlsx/whitespace.xlsx +0 -0
  319. data/spec/data/xlsx/with_macros.xlsm +0 -0
  320. data/spec/deck_spec.rb +0 -73
  321. data/spec/graphics/cairo_context_wrapper_spec.rb +0 -104
  322. data/spec/graphics/embedding_utils_spec.rb +0 -73
  323. data/spec/graphics/graphics_save_doc_spec.rb +0 -74
  324. data/spec/import/data_frame_spec.rb +0 -251
  325. data/spec/layout_parser_spec.rb +0 -226
  326. data/spec/logger_spec.rb +0 -12
  327. data/spec/samples/_diffs/gitkeep.txt +0 -0
  328. data/spec/samples/diff-with-css.example.html +0 -39
  329. data/spec/samples/expected/autoscale_00.png +0 -0
  330. data/spec/samples/expected/autoscale_01.png +0 -0
  331. data/spec/samples/expected/autoscale_02.png +0 -0
  332. data/spec/samples/expected/backend_00.png +0 -0
  333. data/spec/samples/expected/backend_00.svg +0 -78
  334. data/spec/samples/expected/backend_01.png +0 -0
  335. data/spec/samples/expected/backend_01.svg +0 -78
  336. data/spec/samples/expected/basic_00.png +0 -0
  337. data/spec/samples/expected/basic_01.png +0 -0
  338. data/spec/samples/expected/basic_02.png +0 -0
  339. data/spec/samples/expected/cairo_access_00.png +0 -0
  340. data/spec/samples/expected/cairo_access_01.png +0 -0
  341. data/spec/samples/expected/card_00.png +0 -0
  342. data/spec/samples/expected/card_01.png +0 -0
  343. data/spec/samples/expected/colors_00.png +0 -0
  344. data/spec/samples/expected/config_disable_text_00.png +0 -0
  345. data/spec/samples/expected/config_text_00.png +0 -0
  346. data/spec/samples/expected/custom-config_00.png +0 -0
  347. data/spec/samples/expected/embed_00.png +0 -0
  348. data/spec/samples/expected/embed_multisheet_00.png +0 -0
  349. data/spec/samples/expected/gitkeep.txt +0 -0
  350. data/spec/samples/expected/gradient_00.png +0 -0
  351. data/spec/samples/expected/hand.png +0 -0
  352. data/spec/samples/expected/hand_pretty.png +0 -0
  353. data/spec/samples/expected/landscape_00.png +0 -0
  354. data/spec/samples/expected/layout2_00.png +0 -0
  355. data/spec/samples/expected/layout_00.png +0 -0
  356. data/spec/samples/expected/layout_builtin_hand_00.png +0 -0
  357. data/spec/samples/expected/layout_builtin_playing_card_00.png +0 -0
  358. data/spec/samples/expected/load_images_00.png +0 -0
  359. data/spec/samples/expected/portrait_00.png +0 -0
  360. data/spec/samples/expected/ranges_00.png +0 -0
  361. data/spec/samples/expected/sample_csv_00.png +0 -0
  362. data/spec/samples/expected/sample_csv_01.png +0 -0
  363. data/spec/samples/expected/sample_excel_00.png +0 -0
  364. data/spec/samples/expected/sample_excel_01.png +0 -0
  365. data/spec/samples/expected/sample_excel_02.png +0 -0
  366. data/spec/samples/expected/save_sheet_00.png +0 -0
  367. data/spec/samples/expected/save_sheet_01.png +0 -0
  368. data/spec/samples/expected/save_sheet_range_00.png +0 -0
  369. data/spec/samples/expected/save_sheet_range_01.png +0 -0
  370. data/spec/samples/expected/save_single_sheet_00.png +0 -0
  371. data/spec/samples/expected/saves_notrim_01.png +0 -0
  372. data/spec/samples/expected/shape_00.png +0 -0
  373. data/spec/samples/expected/showcase.png +0 -0
  374. data/spec/samples/expected/showcase2.png +0 -0
  375. data/spec/samples/expected/showcase_individual_00.png +0 -0
  376. data/spec/samples/expected/showcase_individual_01.png +0 -0
  377. data/spec/samples/expected/showcase_individual_02.png +0 -0
  378. data/spec/samples/expected/showcase_individual_03.png +0 -0
  379. data/spec/samples/expected/text_00.png +0 -0
  380. data/spec/samples/expected/text_01.png +0 -0
  381. data/spec/samples/expected/text_02.png +0 -0
  382. data/spec/samples/expected/tgc_sample_00.png +0 -0
  383. data/spec/samples/expected/units_00.png +0 -0
  384. data/spec/samples/run_samples_spec.rb +0 -17
  385. data/spec/samples/samples_regression_spec.rb +0 -71
  386. data/spec/samples/sanity.html.erb +0 -28
  387. data/spec/samples/sanity.rb +0 -70
  388. data/spec/sanity/.gitignore +0 -1
  389. data/spec/sanity/sanity.html.erb +0 -42
  390. data/spec/sanity/sanity_test.rb +0 -42
  391. data/spec/sanity/tests.yml +0 -12
  392. data/spec/spec_helper.rb +0 -159
@@ -1,594 +0,0 @@
1
- cairo: antialias=(["subpixel"])
2
- cairo: antialias=(["subpixel"])
3
- cairo: antialias=(["subpixel"])
4
- cairo: antialias=(["subpixel"])
5
- cairo: antialias=(["subpixel"])
6
- cairo: antialias=(["subpixel"])
7
- cairo: antialias=(["subpixel"])
8
- cairo: antialias=(["subpixel"])
9
- cairo: save([])
10
- cairo: set_source_color(["cyan"])
11
- cairo: paint([])
12
- cairo: restore([])
13
- cairo: save([])
14
- cairo: set_source_color(["cyan"])
15
- cairo: paint([])
16
- cairo: restore([])
17
- cairo: save([])
18
- cairo: set_source_color(["cyan"])
19
- cairo: paint([])
20
- cairo: restore([])
21
- cairo: save([])
22
- cairo: set_source_color(["cyan"])
23
- cairo: paint([])
24
- cairo: restore([])
25
- cairo: save([])
26
- cairo: set_source_color(["cyan"])
27
- cairo: paint([])
28
- cairo: restore([])
29
- cairo: save([])
30
- cairo: set_source_color(["cyan"])
31
- cairo: paint([])
32
- cairo: restore([])
33
- cairo: save([])
34
- cairo: set_source_color(["cyan"])
35
- cairo: paint([])
36
- cairo: restore([])
37
- cairo: save([])
38
- cairo: set_source_color(["cyan"])
39
- cairo: paint([])
40
- cairo: restore([])
41
- cairo: save([])
42
- cairo: translate([37, 37])
43
- cairo: rotate([0])
44
- cairo: translate([-37, -37])
45
- cairo: rounded_rectangle([37, 37, 750, 1050, 25, 25])
46
- cairo: set_source_color(["black"])
47
- cairo: fill_preserve([])
48
- cairo: set_source_color(["black"])
49
- cairo: set_line_width([2.0])
50
- cairo: set_line_join([0])
51
- cairo: set_line_cap([0])
52
- cairo: set_dash([[]])
53
- cairo: stroke([])
54
- cairo: restore([])
55
- cairo: save([])
56
- cairo: translate([37, 37])
57
- cairo: rotate([0])
58
- cairo: translate([-37, -37])
59
- cairo: rounded_rectangle([37, 37, 750, 1050, 25, 25])
60
- cairo: set_source_color(["black"])
61
- cairo: fill_preserve([])
62
- cairo: set_source_color(["black"])
63
- cairo: set_line_width([2.0])
64
- cairo: set_line_join([0])
65
- cairo: set_line_cap([0])
66
- cairo: set_dash([[]])
67
- cairo: stroke([])
68
- cairo: restore([])
69
- cairo: save([])
70
- cairo: translate([37, 37])
71
- cairo: rotate([0])
72
- cairo: translate([-37, -37])
73
- cairo: rounded_rectangle([37, 37, 750, 1050, 25, 25])
74
- cairo: set_source_color(["black"])
75
- cairo: fill_preserve([])
76
- cairo: set_source_color(["black"])
77
- cairo: set_line_width([2.0])
78
- cairo: set_line_join([0])
79
- cairo: set_line_cap([0])
80
- cairo: set_dash([[]])
81
- cairo: stroke([])
82
- cairo: restore([])
83
- cairo: save([])
84
- cairo: translate([37, 37])
85
- cairo: rotate([0])
86
- cairo: translate([-37, -37])
87
- cairo: rounded_rectangle([37, 37, 750, 1050, 25, 25])
88
- cairo: set_source_color(["black"])
89
- cairo: fill_preserve([])
90
- cairo: set_source_color(["black"])
91
- cairo: set_line_width([2.0])
92
- cairo: set_line_join([0])
93
- cairo: set_line_cap([0])
94
- cairo: set_dash([[]])
95
- cairo: stroke([])
96
- cairo: restore([])
97
- cairo: save([])
98
- cairo: translate([37, 37])
99
- cairo: rotate([0])
100
- cairo: translate([-37, -37])
101
- cairo: rounded_rectangle([37, 37, 750, 1050, 25, 25])
102
- cairo: set_source_color(["black"])
103
- cairo: fill_preserve([])
104
- cairo: set_source_color(["black"])
105
- cairo: set_line_width([2.0])
106
- cairo: set_line_join([0])
107
- cairo: set_line_cap([0])
108
- cairo: set_dash([[]])
109
- cairo: stroke([])
110
- cairo: restore([])
111
- cairo: save([])
112
- cairo: translate([37, 37])
113
- cairo: rotate([0])
114
- cairo: translate([-37, -37])
115
- cairo: rounded_rectangle([37, 37, 750, 1050, 25, 25])
116
- cairo: set_source_color(["black"])
117
- cairo: fill_preserve([])
118
- cairo: set_source_color(["black"])
119
- cairo: set_line_width([2.0])
120
- cairo: set_line_join([0])
121
- cairo: set_line_cap([0])
122
- cairo: set_dash([[]])
123
- cairo: stroke([])
124
- cairo: restore([])
125
- cairo: save([])
126
- cairo: translate([37, 37])
127
- cairo: rotate([0])
128
- cairo: translate([-37, -37])
129
- cairo: rounded_rectangle([37, 37, 750, 1050, 25, 25])
130
- cairo: set_source_color(["black"])
131
- cairo: fill_preserve([])
132
- cairo: set_source_color(["black"])
133
- cairo: set_line_width([2.0])
134
- cairo: set_line_join([0])
135
- cairo: set_line_cap([0])
136
- cairo: set_dash([[]])
137
- cairo: stroke([])
138
- cairo: restore([])
139
- cairo: save([])
140
- cairo: translate([37, 37])
141
- cairo: rotate([0])
142
- cairo: translate([-37, -37])
143
- cairo: rounded_rectangle([37, 37, 750, 1050, 25, 25])
144
- cairo: set_source_color(["black"])
145
- cairo: fill_preserve([])
146
- cairo: set_source_color(["black"])
147
- cairo: set_line_width([2.0])
148
- cairo: set_line_join([0])
149
- cairo: set_line_cap([0])
150
- cairo: set_dash([[]])
151
- cairo: stroke([])
152
- cairo: restore([])
153
- cairo: save([])
154
- cairo: translate([75, 75])
155
- cairo: rotate([0])
156
- cairo: translate([-75, -75])
157
- cairo: rounded_rectangle([75, 75, 675, 975, 20, 20])
158
- cairo: set_source_color(["white"])
159
- cairo: fill_preserve([])
160
- cairo: set_source_color(["black"])
161
- cairo: set_line_width([2.0])
162
- cairo: set_line_join([0])
163
- cairo: set_line_cap([0])
164
- cairo: set_dash([[]])
165
- cairo: stroke([])
166
- cairo: restore([])
167
- cairo: save([])
168
- cairo: translate([75, 75])
169
- cairo: rotate([0])
170
- cairo: translate([-75, -75])
171
- cairo: rounded_rectangle([75, 75, 675, 975, 20, 20])
172
- cairo: set_source_color(["white"])
173
- cairo: fill_preserve([])
174
- cairo: set_source_color(["black"])
175
- cairo: set_line_width([2.0])
176
- cairo: set_line_join([0])
177
- cairo: set_line_cap([0])
178
- cairo: set_dash([[]])
179
- cairo: stroke([])
180
- cairo: restore([])
181
- cairo: save([])
182
- cairo: translate([75, 75])
183
- cairo: rotate([0])
184
- cairo: translate([-75, -75])
185
- cairo: rounded_rectangle([75, 75, 675, 975, 20, 20])
186
- cairo: set_source_color(["white"])
187
- cairo: fill_preserve([])
188
- cairo: set_source_color(["black"])
189
- cairo: set_line_width([2.0])
190
- cairo: set_line_join([0])
191
- cairo: set_line_cap([0])
192
- cairo: set_dash([[]])
193
- cairo: stroke([])
194
- cairo: restore([])
195
- cairo: save([])
196
- cairo: translate([75, 75])
197
- cairo: rotate([0])
198
- cairo: translate([-75, -75])
199
- cairo: rounded_rectangle([75, 75, 675, 975, 20, 20])
200
- cairo: set_source_color(["white"])
201
- cairo: fill_preserve([])
202
- cairo: set_source_color(["black"])
203
- cairo: set_line_width([2.0])
204
- cairo: set_line_join([0])
205
- cairo: set_line_cap([0])
206
- cairo: set_dash([[]])
207
- cairo: stroke([])
208
- cairo: restore([])
209
- cairo: save([])
210
- cairo: translate([75, 75])
211
- cairo: rotate([0])
212
- cairo: translate([-75, -75])
213
- cairo: rounded_rectangle([75, 75, 675, 975, 20, 20])
214
- cairo: set_source_color(["white"])
215
- cairo: fill_preserve([])
216
- cairo: set_source_color(["black"])
217
- cairo: set_line_width([2.0])
218
- cairo: set_line_join([0])
219
- cairo: set_line_cap([0])
220
- cairo: set_dash([[]])
221
- cairo: stroke([])
222
- cairo: restore([])
223
- cairo: save([])
224
- cairo: translate([75, 75])
225
- cairo: rotate([0])
226
- cairo: translate([-75, -75])
227
- cairo: rounded_rectangle([75, 75, 675, 975, 20, 20])
228
- cairo: set_source_color(["white"])
229
- cairo: fill_preserve([])
230
- cairo: set_source_color(["black"])
231
- cairo: set_line_width([2.0])
232
- cairo: set_line_join([0])
233
- cairo: set_line_cap([0])
234
- cairo: set_dash([[]])
235
- cairo: stroke([])
236
- cairo: restore([])
237
- cairo: save([])
238
- cairo: translate([75, 75])
239
- cairo: rotate([0])
240
- cairo: translate([-75, -75])
241
- cairo: rounded_rectangle([75, 75, 675, 975, 20, 20])
242
- cairo: set_source_color(["white"])
243
- cairo: fill_preserve([])
244
- cairo: set_source_color(["black"])
245
- cairo: set_line_width([2.0])
246
- cairo: set_line_join([0])
247
- cairo: set_line_cap([0])
248
- cairo: set_dash([[]])
249
- cairo: stroke([])
250
- cairo: restore([])
251
- cairo: save([])
252
- cairo: translate([75, 75])
253
- cairo: rotate([0])
254
- cairo: translate([-75, -75])
255
- cairo: rounded_rectangle([75, 75, 675, 975, 20, 20])
256
- cairo: set_source_color(["white"])
257
- cairo: fill_preserve([])
258
- cairo: set_source_color(["black"])
259
- cairo: set_line_width([2.0])
260
- cairo: set_line_join([0])
261
- cairo: set_line_cap([0])
262
- cairo: set_dash([[]])
263
- cairo: stroke([])
264
- cairo: restore([])
265
- cairo: save([])
266
- cairo: set_source_color(["black"])
267
- cairo: translate([75, 75])
268
- cairo: rotate([0])
269
- cairo: move_to([0, 0])
270
- pango: font_description=([MockDouble])
271
- pango: text=(["A"])
272
- pango: width=([204800])
273
- pango: height=([204800])
274
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
275
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
276
- pango: alignment=([#<Pango::Layout::Alignment left>])
277
- pango: justify=([false])
278
- cairo: move_to([0, 0])
279
- cairo: move_to([0, 0])
280
- cairo: show_pango_layout([MockDouble])
281
- pango: ellipsized?([])
282
- cairo: restore([])
283
- cairo: save([])
284
- cairo: set_source_color(["black"])
285
- cairo: translate([75, 75])
286
- cairo: rotate([0])
287
- cairo: move_to([0, 0])
288
- pango: font_description=([MockDouble])
289
- pango: text=(["B"])
290
- pango: width=([204800])
291
- pango: height=([204800])
292
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
293
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
294
- pango: alignment=([#<Pango::Layout::Alignment left>])
295
- pango: justify=([false])
296
- cairo: move_to([0, 0])
297
- cairo: move_to([0, 0])
298
- cairo: show_pango_layout([MockDouble])
299
- pango: ellipsized?([])
300
- cairo: restore([])
301
- cairo: save([])
302
- cairo: set_source_color(["black"])
303
- cairo: translate([75, 75])
304
- cairo: rotate([0])
305
- cairo: move_to([0, 0])
306
- pango: font_description=([MockDouble])
307
- pango: text=(["C"])
308
- pango: width=([204800])
309
- pango: height=([204800])
310
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
311
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
312
- pango: alignment=([#<Pango::Layout::Alignment left>])
313
- pango: justify=([false])
314
- cairo: move_to([0, 0])
315
- cairo: move_to([0, 0])
316
- cairo: show_pango_layout([MockDouble])
317
- pango: ellipsized?([])
318
- cairo: restore([])
319
- cairo: save([])
320
- cairo: set_source_color(["black"])
321
- cairo: translate([75, 75])
322
- cairo: rotate([0])
323
- cairo: move_to([0, 0])
324
- pango: font_description=([MockDouble])
325
- pango: text=(["D"])
326
- pango: width=([204800])
327
- pango: height=([204800])
328
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
329
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
330
- pango: alignment=([#<Pango::Layout::Alignment left>])
331
- pango: justify=([false])
332
- cairo: move_to([0, 0])
333
- cairo: move_to([0, 0])
334
- cairo: show_pango_layout([MockDouble])
335
- pango: ellipsized?([])
336
- cairo: restore([])
337
- cairo: save([])
338
- cairo: set_source_color(["black"])
339
- cairo: translate([75, 75])
340
- cairo: rotate([0])
341
- cairo: move_to([0, 0])
342
- pango: font_description=([MockDouble])
343
- pango: text=(["E"])
344
- pango: width=([204800])
345
- pango: height=([204800])
346
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
347
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
348
- pango: alignment=([#<Pango::Layout::Alignment left>])
349
- pango: justify=([false])
350
- cairo: move_to([0, 0])
351
- cairo: move_to([0, 0])
352
- cairo: show_pango_layout([MockDouble])
353
- pango: ellipsized?([])
354
- cairo: restore([])
355
- cairo: save([])
356
- cairo: set_source_color(["black"])
357
- cairo: translate([75, 75])
358
- cairo: rotate([0])
359
- cairo: move_to([0, 0])
360
- pango: font_description=([MockDouble])
361
- pango: text=(["F"])
362
- pango: width=([204800])
363
- pango: height=([204800])
364
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
365
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
366
- pango: alignment=([#<Pango::Layout::Alignment left>])
367
- pango: justify=([false])
368
- cairo: move_to([0, 0])
369
- cairo: move_to([0, 0])
370
- cairo: show_pango_layout([MockDouble])
371
- pango: ellipsized?([])
372
- cairo: restore([])
373
- cairo: save([])
374
- cairo: set_source_color(["black"])
375
- cairo: translate([75, 75])
376
- cairo: rotate([0])
377
- cairo: move_to([0, 0])
378
- pango: font_description=([MockDouble])
379
- pango: text=(["G"])
380
- pango: width=([204800])
381
- pango: height=([204800])
382
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
383
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
384
- pango: alignment=([#<Pango::Layout::Alignment left>])
385
- pango: justify=([false])
386
- cairo: move_to([0, 0])
387
- cairo: move_to([0, 0])
388
- cairo: show_pango_layout([MockDouble])
389
- pango: ellipsized?([])
390
- cairo: restore([])
391
- cairo: save([])
392
- cairo: set_source_color(["black"])
393
- cairo: translate([75, 75])
394
- cairo: rotate([0])
395
- cairo: move_to([0, 0])
396
- pango: font_description=([MockDouble])
397
- pango: text=(["H"])
398
- pango: width=([204800])
399
- pango: height=([204800])
400
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
401
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
402
- pango: alignment=([#<Pango::Layout::Alignment left>])
403
- pango: justify=([false])
404
- cairo: move_to([0, 0])
405
- cairo: move_to([0, 0])
406
- cairo: show_pango_layout([MockDouble])
407
- pango: ellipsized?([])
408
- cairo: restore([])
409
- cairo: translate([2193.75, 2193.75])
410
- cairo: rotate([-0.7853981633974483])
411
- cairo: translate([-825, -825])
412
- cairo: translate([412.5, 1462.5])
413
- cairo: rotate([0.19634954084936207])
414
- cairo: translate([-412.5, -1462.5])
415
- cairo: save([])
416
- cairo: rounded_rectangle([0, 0, 825, 1125, 0, 0])
417
- cairo: clip([])
418
- cairo: set_source([MockDouble])
419
- cairo: paint([])
420
- cairo: reset_clip([])
421
- cairo: restore([])
422
- cairo: translate([412.5, 1462.5])
423
- cairo: rotate([0.19634954084936207])
424
- cairo: translate([-412.5, -1462.5])
425
- cairo: save([])
426
- cairo: rounded_rectangle([0, 0, 825, 1125, 0, 0])
427
- cairo: clip([])
428
- cairo: set_source([MockDouble])
429
- cairo: paint([])
430
- cairo: reset_clip([])
431
- cairo: restore([])
432
- cairo: translate([412.5, 1462.5])
433
- cairo: rotate([0.19634954084936207])
434
- cairo: translate([-412.5, -1462.5])
435
- cairo: save([])
436
- cairo: rounded_rectangle([0, 0, 825, 1125, 0, 0])
437
- cairo: clip([])
438
- cairo: set_source([MockDouble])
439
- cairo: paint([])
440
- cairo: reset_clip([])
441
- cairo: restore([])
442
- cairo: translate([412.5, 1462.5])
443
- cairo: rotate([0.19634954084936207])
444
- cairo: translate([-412.5, -1462.5])
445
- cairo: save([])
446
- cairo: rounded_rectangle([0, 0, 825, 1125, 0, 0])
447
- cairo: clip([])
448
- cairo: set_source([MockDouble])
449
- cairo: paint([])
450
- cairo: reset_clip([])
451
- cairo: restore([])
452
- cairo: translate([412.5, 1462.5])
453
- cairo: rotate([0.19634954084936207])
454
- cairo: translate([-412.5, -1462.5])
455
- cairo: save([])
456
- cairo: rounded_rectangle([0, 0, 825, 1125, 0, 0])
457
- cairo: clip([])
458
- cairo: set_source([MockDouble])
459
- cairo: paint([])
460
- cairo: reset_clip([])
461
- cairo: restore([])
462
- cairo: translate([412.5, 1462.5])
463
- cairo: rotate([0.19634954084936207])
464
- cairo: translate([-412.5, -1462.5])
465
- cairo: save([])
466
- cairo: rounded_rectangle([0, 0, 825, 1125, 0, 0])
467
- cairo: clip([])
468
- cairo: set_source([MockDouble])
469
- cairo: paint([])
470
- cairo: reset_clip([])
471
- cairo: restore([])
472
- cairo: translate([412.5, 1462.5])
473
- cairo: rotate([0.19634954084936207])
474
- cairo: translate([-412.5, -1462.5])
475
- cairo: save([])
476
- cairo: rounded_rectangle([0, 0, 825, 1125, 0, 0])
477
- cairo: clip([])
478
- cairo: set_source([MockDouble])
479
- cairo: paint([])
480
- cairo: reset_clip([])
481
- cairo: restore([])
482
- cairo: translate([412.5, 1462.5])
483
- cairo: rotate([0.19634954084936207])
484
- cairo: translate([-412.5, -1462.5])
485
- cairo: save([])
486
- cairo: rounded_rectangle([0, 0, 825, 1125, 0, 0])
487
- cairo: clip([])
488
- cairo: set_source([MockDouble])
489
- cairo: paint([])
490
- cairo: reset_clip([])
491
- cairo: restore([])
492
- cairo: set_source_color(["white"])
493
- cairo: paint([])
494
- cairo: translate([75, 75])
495
- cairo: set_source([MockDouble])
496
- cairo: paint([])
497
- surface: write_to_png(["_output/hand.png"])
498
- cairo: translate([1687.5, 1687.5])
499
- cairo: rotate([-0.7853981633974483])
500
- cairo: translate([-825, -825])
501
- cairo: translate([412.5, 1125])
502
- cairo: rotate([0.19634954084936207])
503
- cairo: translate([-412.5, -1125])
504
- cairo: save([])
505
- cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
506
- cairo: clip([])
507
- cairo: set_source([MockDouble])
508
- cairo: paint([])
509
- cairo: reset_clip([])
510
- cairo: restore([])
511
- cairo: translate([412.5, 1125])
512
- cairo: rotate([0.19634954084936207])
513
- cairo: translate([-412.5, -1125])
514
- cairo: save([])
515
- cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
516
- cairo: clip([])
517
- cairo: set_source([MockDouble])
518
- cairo: paint([])
519
- cairo: reset_clip([])
520
- cairo: restore([])
521
- cairo: translate([412.5, 1125])
522
- cairo: rotate([0.19634954084936207])
523
- cairo: translate([-412.5, -1125])
524
- cairo: save([])
525
- cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
526
- cairo: clip([])
527
- cairo: set_source([MockDouble])
528
- cairo: paint([])
529
- cairo: reset_clip([])
530
- cairo: restore([])
531
- cairo: translate([412.5, 1125])
532
- cairo: rotate([0.19634954084936207])
533
- cairo: translate([-412.5, -1125])
534
- cairo: save([])
535
- cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
536
- cairo: clip([])
537
- cairo: set_source([MockDouble])
538
- cairo: paint([])
539
- cairo: reset_clip([])
540
- cairo: restore([])
541
- cairo: translate([412.5, 1125])
542
- cairo: rotate([0.19634954084936207])
543
- cairo: translate([-412.5, -1125])
544
- cairo: save([])
545
- cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
546
- cairo: clip([])
547
- cairo: set_source([MockDouble])
548
- cairo: paint([])
549
- cairo: reset_clip([])
550
- cairo: restore([])
551
- cairo: translate([412.5, 1125])
552
- cairo: rotate([0.19634954084936207])
553
- cairo: translate([-412.5, -1125])
554
- cairo: save([])
555
- cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
556
- cairo: clip([])
557
- cairo: set_source([MockDouble])
558
- cairo: paint([])
559
- cairo: reset_clip([])
560
- cairo: restore([])
561
- cairo: translate([412.5, 1125])
562
- cairo: rotate([0.19634954084936207])
563
- cairo: translate([-412.5, -1125])
564
- cairo: save([])
565
- cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
566
- cairo: clip([])
567
- cairo: set_source([MockDouble])
568
- cairo: paint([])
569
- cairo: reset_clip([])
570
- cairo: restore([])
571
- cairo: translate([412.5, 1125])
572
- cairo: rotate([0.19634954084936207])
573
- cairo: translate([-412.5, -1125])
574
- cairo: save([])
575
- cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25])
576
- cairo: clip([])
577
- cairo: set_source([MockDouble])
578
- cairo: paint([])
579
- cairo: reset_clip([])
580
- cairo: restore([])
581
- cairo: set_source_color(["white"])
582
- cairo: paint([])
583
- cairo: translate([75, 75])
584
- cairo: set_source([MockDouble])
585
- cairo: paint([])
586
- surface: write_to_png(["_output/hand_pretty.png"])
587
- surface: finish([])
588
- surface: finish([])
589
- surface: finish([])
590
- surface: finish([])
591
- surface: finish([])
592
- surface: finish([])
593
- surface: finish([])
594
- surface: finish([])