squib 0.18.0 → 0.19.0a

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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +39 -39
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +22 -22
  4. data/.github/ISSUE_TEMPLATE/help-wanted.md +13 -13
  5. data/.github/ISSUE_TEMPLATE/release-todo.md +45 -33
  6. data/.github/PULL_REQUEST_TEMPLATE.md +13 -13
  7. data/.github/workflows/tests.yml +22 -22
  8. data/.gitignore +41 -41
  9. data/.vscode/settings.json +4 -3
  10. data/CHANGELOG.md +460 -460
  11. data/CONTRIBUTING.md +40 -40
  12. data/Dockerfile +27 -27
  13. data/Gemfile +2 -2
  14. data/Guardfile +8 -8
  15. data/LICENSE.txt +22 -22
  16. data/README.md +139 -139
  17. data/Rakefile +51 -51
  18. data/bin/squib +5 -5
  19. data/lib/squib/api/settings.rb +21 -21
  20. data/lib/squib/args/arg_loader.rb +138 -138
  21. data/lib/squib/args/box.rb +59 -59
  22. data/lib/squib/args/card_range.rb +34 -34
  23. data/lib/squib/args/color_validator.rb +7 -7
  24. data/lib/squib/args/coords.rb +49 -49
  25. data/lib/squib/args/csv_opts.rb +22 -22
  26. data/lib/squib/args/dir_validator.rb +11 -11
  27. data/lib/squib/args/draw.rb +93 -93
  28. data/lib/squib/args/drop_shadow.rb +39 -39
  29. data/lib/squib/args/embed_adjust.rb +22 -22
  30. data/lib/squib/args/embed_key.rb +12 -12
  31. data/lib/squib/args/hand_special.rb +37 -37
  32. data/lib/squib/args/import.rb +67 -67
  33. data/lib/squib/args/input_file.rb +55 -55
  34. data/lib/squib/args/paint.rb +43 -43
  35. data/lib/squib/args/paragraph.rb +118 -118
  36. data/lib/squib/args/save_batch.rb +65 -65
  37. data/lib/squib/args/scale_box.rb +57 -57
  38. data/lib/squib/args/sheet.rb +165 -165
  39. data/lib/squib/args/showcase_special.rb +41 -41
  40. data/lib/squib/args/sprue_file.rb +44 -44
  41. data/lib/squib/args/svg_special.rb +37 -37
  42. data/lib/squib/args/transform.rb +55 -55
  43. data/lib/squib/args/typographer.rb +115 -115
  44. data/lib/squib/args/unit_conversion.rb +27 -27
  45. data/lib/squib/args/xywh_shorthands.rb +50 -50
  46. data/lib/squib/builtin/layouts/economy.yml +85 -85
  47. data/lib/squib/builtin/layouts/fantasy.yml +101 -101
  48. data/lib/squib/builtin/layouts/hand.yml +62 -62
  49. data/lib/squib/builtin/layouts/party.yml +94 -94
  50. data/lib/squib/builtin/layouts/playing-card.yml +35 -35
  51. data/lib/squib/builtin/layouts/tuck_box.yml +46 -46
  52. data/lib/squib/builtin/projects/advanced/.gitignore +4 -4
  53. data/lib/squib/builtin/projects/advanced/ABOUT.md +19 -19
  54. data/lib/squib/builtin/projects/advanced/Gemfile +11 -11
  55. data/lib/squib/builtin/projects/advanced/Guardfile +21 -21
  56. data/lib/squib/builtin/projects/advanced/IDEAS.md +22 -22
  57. data/lib/squib/builtin/projects/advanced/PLAYTESTING.md +26 -26
  58. data/lib/squib/builtin/projects/advanced/Rakefile +27 -27
  59. data/lib/squib/builtin/projects/advanced/config.yml +49 -49
  60. data/lib/squib/builtin/projects/advanced/docs/PNP NOTES.md +3 -3
  61. data/lib/squib/builtin/projects/advanced/docs/RULES.md +21 -21
  62. data/lib/squib/builtin/projects/advanced/img/example.svg +60 -60
  63. data/lib/squib/builtin/projects/advanced/layouts/deck.yml +27 -27
  64. data/lib/squib/builtin/projects/advanced/src/deck.rb +34 -34
  65. data/lib/squib/builtin/projects/advanced/src/version.rb +3 -3
  66. data/lib/squib/builtin/projects/basic/.gitignore +4 -4
  67. data/lib/squib/builtin/projects/basic/ABOUT.md +19 -19
  68. data/lib/squib/builtin/projects/basic/Gemfile +3 -3
  69. data/lib/squib/builtin/projects/basic/IDEAS.md +22 -22
  70. data/lib/squib/builtin/projects/basic/PLAYTESTING.md +26 -26
  71. data/lib/squib/builtin/projects/basic/PNP NOTES.md +3 -3
  72. data/lib/squib/builtin/projects/basic/RULES.md +21 -21
  73. data/lib/squib/builtin/projects/basic/Rakefile +7 -7
  74. data/lib/squib/builtin/projects/basic/config.yml +50 -50
  75. data/lib/squib/builtin/projects/basic/deck.rb +6 -6
  76. data/lib/squib/builtin/sprues/a4_euro_card.yml +42 -42
  77. data/lib/squib/builtin/sprues/a4_poker_card_8up.yml +40 -40
  78. data/lib/squib/builtin/sprues/a4_poker_card_9up.yml +42 -42
  79. data/lib/squib/builtin/sprues/a4_usa_card.yml +42 -42
  80. data/lib/squib/builtin/sprues/drivethrucards_1up.yml +10 -10
  81. data/lib/squib/builtin/sprues/letter_poker_card_9up.yml +25 -25
  82. data/lib/squib/builtin/sprues/letter_poker_foldable_8up.yml +52 -52
  83. data/lib/squib/builtin/sprues/printplaygames_18up.yml +68 -68
  84. data/lib/squib/card.rb +75 -75
  85. data/lib/squib/commands/cli.rb +39 -39
  86. data/lib/squib/commands/data/template_option.rb +109 -109
  87. data/lib/squib/commands/make_sprue.rb +277 -277
  88. data/lib/squib/commands/new.rb +77 -77
  89. data/lib/squib/conf.rb +149 -149
  90. data/lib/squib/constants.rb +17 -17
  91. data/lib/squib/deck.rb +138 -138
  92. data/lib/squib/dsl/background.rb +35 -35
  93. data/lib/squib/dsl/circle.rb +39 -39
  94. data/lib/squib/dsl/csv.rb +42 -42
  95. data/lib/squib/dsl/curve.rb +35 -35
  96. data/lib/squib/dsl/cut_zone.rb +47 -47
  97. data/lib/squib/dsl/ellipse.rb +37 -37
  98. data/lib/squib/dsl/grid.rb +35 -35
  99. data/lib/squib/dsl/groups.rb +54 -54
  100. data/lib/squib/dsl/hand.rb +42 -42
  101. data/lib/squib/dsl/line.rb +35 -35
  102. data/lib/squib/dsl/png.rb +57 -57
  103. data/lib/squib/dsl/polygon.rb +36 -36
  104. data/lib/squib/dsl/rect.rb +37 -37
  105. data/lib/squib/dsl/safe_zone.rb +48 -48
  106. data/lib/squib/dsl/save.rb +21 -21
  107. data/lib/squib/dsl/save_pdf.rb +50 -50
  108. data/lib/squib/dsl/save_png.rb +48 -48
  109. data/lib/squib/dsl/save_sheet.rb +53 -53
  110. data/lib/squib/dsl/showcase.rb +43 -43
  111. data/lib/squib/dsl/star.rb +37 -37
  112. data/lib/squib/dsl/svg.rb +63 -63
  113. data/lib/squib/dsl/text.rb +54 -54
  114. data/lib/squib/dsl/text_embed.rb +79 -79
  115. data/lib/squib/dsl/triangle.rb +35 -35
  116. data/lib/squib/dsl/units.rb +37 -37
  117. data/lib/squib/dsl/xlsx.rb +40 -40
  118. data/lib/squib/dsl/yaml.rb +40 -40
  119. data/lib/squib/errors_warnings/warn_unexpected_params.rb +14 -14
  120. data/lib/squib/graphics/background.rb +14 -14
  121. data/lib/squib/graphics/cairo_context_wrapper.rb +115 -115
  122. data/lib/squib/graphics/embedding_utils.rb +28 -28
  123. data/lib/squib/graphics/gradient_regex.rb +47 -47
  124. data/lib/squib/graphics/hand.rb +42 -42
  125. data/lib/squib/graphics/image.rb +123 -123
  126. data/lib/squib/graphics/save_doc.rb +77 -77
  127. data/lib/squib/graphics/save_images.rb +91 -91
  128. data/lib/squib/graphics/save_pdf.rb +90 -90
  129. data/lib/squib/graphics/save_sprue.rb +231 -231
  130. data/lib/squib/graphics/shapes.rb +143 -143
  131. data/lib/squib/graphics/showcase.rb +85 -85
  132. data/lib/squib/graphics/text.rb +202 -202
  133. data/lib/squib/import/csv_importer.rb +45 -45
  134. data/lib/squib/import/data_frame.rb +108 -108
  135. data/lib/squib/import/quantity_exploder.rb +17 -17
  136. data/lib/squib/import/xlsx_importer.rb +28 -28
  137. data/lib/squib/import/yaml_importer.rb +30 -30
  138. data/lib/squib/layout_parser.rb +155 -155
  139. data/lib/squib/progress.rb +38 -38
  140. data/lib/squib/sample_helpers.rb +34 -34
  141. data/lib/squib/sprues/crop_line.rb +28 -28
  142. data/lib/squib/sprues/crop_line_dash.rb +35 -35
  143. data/lib/squib/sprues/invalid_sprue_definition.rb +9 -9
  144. data/lib/squib/sprues/sprue.rb +208 -208
  145. data/lib/squib/sprues/sprue_schema.rb +51 -51
  146. data/lib/squib/system_fonts.rb +16 -16
  147. data/lib/squib/version.rb +11 -11
  148. data/lib/squib.rb +35 -35
  149. data/samples/autoscale_font/_autoscale_font.rb +98 -98
  150. data/samples/backend/_backend.rb +26 -26
  151. data/samples/basic.rb +19 -19
  152. data/samples/build_groups/build_groups.rb +36 -36
  153. data/samples/colors/_colors.rb +44 -44
  154. data/samples/colors/_gradients.rb +34 -34
  155. data/samples/colors/_switch_color.rb +33 -33
  156. data/samples/config/config_text_markup.rb +20 -20
  157. data/samples/config/custom_config.rb +18 -18
  158. data/samples/data/_csv.rb +33 -33
  159. data/samples/data/_excel.rb +55 -55
  160. data/samples/data/_yaml.rb +12 -12
  161. data/samples/hello_world.rb +6 -6
  162. data/samples/images/_cairo_access.rb +39 -39
  163. data/samples/images/_images.rb +104 -104
  164. data/samples/images/_more_load_images.rb +102 -102
  165. data/samples/images/_placeholders.rb +48 -48
  166. data/samples/intro/01_hello.rb +8 -8
  167. data/samples/intro/02_options.rb +14 -14
  168. data/samples/intro/03_layout.rb +11 -11
  169. data/samples/intro/04_arrays.rb +15 -15
  170. data/samples/intro/05_excel.rb +14 -14
  171. data/samples/layouts/builtin_layouts.rb +97 -97
  172. data/samples/layouts/layouts.rb +71 -71
  173. data/samples/project/src/characters.rb +8 -8
  174. data/samples/project/src/skills.rb +7 -7
  175. data/samples/proofs/_tgc_proofs.rb +16 -16
  176. data/samples/ranges/_ranges.rb +64 -64
  177. data/samples/saves/_hand.rb +23 -23
  178. data/samples/saves/_portrait_landscape.rb +23 -23
  179. data/samples/saves/_save_filenames.rb +28 -28
  180. data/samples/saves/_save_pdf.rb +29 -29
  181. data/samples/saves/_saves.rb +75 -75
  182. data/samples/saves/_showcase.rb +25 -25
  183. data/samples/shadows/_shadow.rb +71 -71
  184. data/samples/shapes/_draw_shapes.rb +60 -60
  185. data/samples/shapes/_proofs.rb +22 -22
  186. data/samples/sprues/_advanced_sprues.rb +25 -25
  187. data/samples/sprues/_builtin_sprues.rb +22 -22
  188. data/samples/sprues/_fold_sheet.rb +30 -30
  189. data/samples/sprues/_hex_tiles.rb +15 -15
  190. data/samples/sprues/_mints.rb +11 -11
  191. data/samples/sprues/_negative_coords.rb +6 -6
  192. data/samples/sprues/_sprue_example.rb +11 -11
  193. data/samples/system_font_debug/_list_fonts.rb +14 -14
  194. data/samples/text/_embed_text.rb +128 -128
  195. data/samples/text/_text.rb +52 -52
  196. data/samples/text/_text_options.rb +103 -103
  197. data/samples/text/bug134.rb +14 -14
  198. data/samples/units/_cells.rb +50 -50
  199. data/samples/units/_shorthands.rb +48 -48
  200. data/samples/units/_units.rb +39 -39
  201. data/squib.gemspec +58 -58
  202. metadata +21 -21
@@ -1,75 +1,75 @@
1
- # require 'squib'
2
- require_relative '../../lib/squib'
3
-
4
- # This sample demonstrates how to use the various save methods
5
- Squib::Deck.new(width: 825, height: 1125, cards: 16) do
6
- background color: :gray
7
- rect x: 38, y: 38, width: 750, height: 1050,
8
- x_radius: 38, y_radius: 38, stroke_width: 2.0, dash: '4 4'
9
-
10
- text str: (1..16).to_a, x: 220, y: 78, font: 'Arial 18'
11
-
12
- # Here's what a regular save_png looks like for just the first card
13
- save_png range: 0, prefix: 'save_png_'
14
-
15
- # save_png supports trim and trim_radius
16
- save_png trim: 30, trim_radius: 38,
17
- range: 0, prefix: 'save_png_trimmed_'
18
-
19
- # Place on multiple pages over the PDF, with bleed beeing trimmed off
20
- save_pdf file: 'save-pdf.pdf', margin: 75, gap: 5, trim: 37
21
-
22
- # PDFs also support arbitrary paper sizes, in pixels or any other supported units
23
- save_pdf file: 'save-pdf-small.pdf',
24
- width: '7in', height: '5in',
25
- range: 0..1
26
-
27
- # Note that our PNGs still are not trimmed even though the pdf ones were
28
- save_png range: 1, prefix: 'saves_notrim_'
29
-
30
- # We can also save our PNGs into a single sheet,
31
- # rows are calculated based on cols and number of cards
32
- save_sheet prefix: 'save_single_sheet_',
33
- columns: 2, margin: 75, gap: 5, trim: 37
34
-
35
- # Or multiple sheets if rows are also specified
36
- save_sheet prefix: 'save_sheet_',
37
- columns: 4, rows: 2,
38
- margin: 75, gap: 5, trim: 37
39
-
40
- # Sheets support ranges too
41
- save_sheet prefix: 'save_sheet_range_',
42
- range: 0..5,
43
- columns: 2, rows: 2,
44
- margin: 75, gap: 5, trim: 37
45
-
46
- # Sheets can arrange left-to-right and right-to-left
47
- save_sheet prefix: 'save_sheet_rtl_',
48
- suffix: '_with_suffix',
49
- range: 0..1, rtl: true,
50
- columns: 2, rows: 1,
51
- margin: 75, gap: 5, trim: 37
52
- end
53
-
54
- Squib::Deck.new(width: 100, height: 100, cards: 3) do
55
- background color: :grey
56
- text str: 'Hi', font: 'Arial 18'
57
-
58
- # Test bug 332.
59
- # When we only have 3 cards but want a 2x4 grid with lots of empty spaces.
60
- # Buggy behavior was to revert to 1 row and not respect the rows arg.
61
- save_sheet prefix: 'save_sheet_bug332_', rows: 2, columns: 4
62
- end
63
-
64
- # Allow rotating
65
- Squib::Deck.new(width: 100, height: 50, cards: 8) do
66
- background color: :white
67
- rect x: 10, y: 10, width: 80, height: 30
68
- rect x: 5, y: 5, width: 90, height: 40, stroke_width: 5, stroke_color: :blue
69
- text y: 2, str: 0..7, font: 'Open Sans Bold 8', align: :center, width: 100
70
- save_sheet prefix: 'save_sheet_unrotated_', rows: 2, columns: 3
71
- save_sheet prefix: 'save_sheet_custom_rotate_', rows: 2, columns: 3, rotate: [:clockwise, :counterclockwise] * 4
72
- save_sheet prefix: 'save_sheet_rotated_', rows: 2, columns: 3, rotate: true
73
- save_sheet prefix: 'save_sheet_rotated_trimmed_', rows: 2, columns: 3, rotate: true, trim: 5
74
- save_sheet prefix: 'save_sheet_rotated_trimmed_rtl_', rows: 2, columns: 3, rotate: true, trim: 5, rtl: true
75
- end
1
+ # require 'squib'
2
+ require_relative '../../lib/squib'
3
+
4
+ # This sample demonstrates how to use the various save methods
5
+ Squib::Deck.new(width: 825, height: 1125, cards: 16) do
6
+ background color: :gray
7
+ rect x: 38, y: 38, width: 750, height: 1050,
8
+ x_radius: 38, y_radius: 38, stroke_width: 2.0, dash: '4 4'
9
+
10
+ text str: (1..16).to_a, x: 220, y: 78, font: 'Arial 18'
11
+
12
+ # Here's what a regular save_png looks like for just the first card
13
+ save_png range: 0, prefix: 'save_png_'
14
+
15
+ # save_png supports trim and trim_radius
16
+ save_png trim: 30, trim_radius: 38,
17
+ range: 0, prefix: 'save_png_trimmed_'
18
+
19
+ # Place on multiple pages over the PDF, with bleed beeing trimmed off
20
+ save_pdf file: 'save-pdf.pdf', margin: 75, gap: 5, trim: 37
21
+
22
+ # PDFs also support arbitrary paper sizes, in pixels or any other supported units
23
+ save_pdf file: 'save-pdf-small.pdf',
24
+ width: '7in', height: '5in',
25
+ range: 0..1
26
+
27
+ # Note that our PNGs still are not trimmed even though the pdf ones were
28
+ save_png range: 1, prefix: 'saves_notrim_'
29
+
30
+ # We can also save our PNGs into a single sheet,
31
+ # rows are calculated based on cols and number of cards
32
+ save_sheet prefix: 'save_single_sheet_',
33
+ columns: 2, margin: 75, gap: 5, trim: 37
34
+
35
+ # Or multiple sheets if rows are also specified
36
+ save_sheet prefix: 'save_sheet_',
37
+ columns: 4, rows: 2,
38
+ margin: 75, gap: 5, trim: 37
39
+
40
+ # Sheets support ranges too
41
+ save_sheet prefix: 'save_sheet_range_',
42
+ range: 0..5,
43
+ columns: 2, rows: 2,
44
+ margin: 75, gap: 5, trim: 37
45
+
46
+ # Sheets can arrange left-to-right and right-to-left
47
+ save_sheet prefix: 'save_sheet_rtl_',
48
+ suffix: '_with_suffix',
49
+ range: 0..1, rtl: true,
50
+ columns: 2, rows: 1,
51
+ margin: 75, gap: 5, trim: 37
52
+ end
53
+
54
+ Squib::Deck.new(width: 100, height: 100, cards: 3) do
55
+ background color: :grey
56
+ text str: 'Hi', font: 'Arial 18'
57
+
58
+ # Test bug 332.
59
+ # When we only have 3 cards but want a 2x4 grid with lots of empty spaces.
60
+ # Buggy behavior was to revert to 1 row and not respect the rows arg.
61
+ save_sheet prefix: 'save_sheet_bug332_', rows: 2, columns: 4
62
+ end
63
+
64
+ # Allow rotating
65
+ Squib::Deck.new(width: 100, height: 50, cards: 8) do
66
+ background color: :white
67
+ rect x: 10, y: 10, width: 80, height: 30
68
+ rect x: 5, y: 5, width: 90, height: 40, stroke_width: 5, stroke_color: :blue
69
+ text y: 2, str: 0..7, font: 'Open Sans Bold 8', align: :center, width: 100
70
+ save_sheet prefix: 'save_sheet_unrotated_', rows: 2, columns: 3
71
+ save_sheet prefix: 'save_sheet_custom_rotate_', rows: 2, columns: 3, rotate: [:clockwise, :counterclockwise] * 4
72
+ save_sheet prefix: 'save_sheet_rotated_', rows: 2, columns: 3, rotate: true
73
+ save_sheet prefix: 'save_sheet_rotated_trimmed_', rows: 2, columns: 3, rotate: true, trim: 5
74
+ save_sheet prefix: 'save_sheet_rotated_trimmed_rtl_', rows: 2, columns: 3, rotate: true, trim: 5, rtl: true
75
+ end
@@ -1,25 +1,25 @@
1
- require 'squib'
2
-
3
- # Showcases are a neat way to show off your cards in a modern way, using a
4
- # reflection and a persepctive effect to make them look 3D
5
- Squib::Deck.new(cards: 4) do
6
- background color: '#CE534D'
7
- rect fill_color: '#DED4B9', x: 78, y: 78,
8
- width: '2.25in', height: '3.25in', radius: 32
9
- text str: %w(Grifter Thief Thug Kingpin),
10
- font: 'Helvetica,Sans weight=800 40',
11
- x: 78, y: 78, width: '2.25in', align: :center
12
- svg file: 'spanner.svg', x: (825 - 500) / 2, y: 500, width: 500, height: 500
13
-
14
- # Defaults are pretty sensible.
15
- showcase file: 'showcase.png'
16
-
17
- # Here's a more complete example.
18
- # Tons of ways to tweak it if you like - check the docs.
19
- showcase trim: 32, trim_radius: 32, margin: 100, face: :right,
20
- scale: 0.85, offset: 0.95, fill_color: :black,
21
- reflect_offset: 25, reflect_strength: 0.1, reflect_percent: 0.4,
22
- file: 'showcase2.png'
23
-
24
- save_png prefix: 'showcase_individual_' # to show that they're not trimmed
25
- end
1
+ require 'squib'
2
+
3
+ # Showcases are a neat way to show off your cards in a modern way, using a
4
+ # reflection and a persepctive effect to make them look 3D
5
+ Squib::Deck.new(cards: 4) do
6
+ background color: '#CE534D'
7
+ rect fill_color: '#DED4B9', x: 78, y: 78,
8
+ width: '2.25in', height: '3.25in', radius: 32
9
+ text str: %w(Grifter Thief Thug Kingpin),
10
+ font: 'Helvetica,Sans weight=800 40',
11
+ x: 78, y: 78, width: '2.25in', align: :center
12
+ svg file: 'spanner.svg', x: (825 - 500) / 2, y: 500, width: 500, height: 500
13
+
14
+ # Defaults are pretty sensible.
15
+ showcase file: 'showcase.png'
16
+
17
+ # Here's a more complete example.
18
+ # Tons of ways to tweak it if you like - check the docs.
19
+ showcase trim: 32, trim_radius: 32, margin: 100, face: :right,
20
+ scale: 0.85, offset: 0.95, fill_color: :black,
21
+ reflect_offset: 25, reflect_strength: 0.1, reflect_percent: 0.4,
22
+ file: 'showcase2.png'
23
+
24
+ save_png prefix: 'showcase_individual_' # to show that they're not trimmed
25
+ end
@@ -1,72 +1,72 @@
1
- require 'squib'
2
- # The save_png method supports drop shadows on the final save
3
- # This is useful for when you want to generate images for your rulebook
4
-
5
- Squib::Deck.new(width: 100, height: 150) do
6
- background color: '#abc'
7
- svg file: '../spanner.svg',
8
- x: 'middle - 25', y: 'middle - 25',
9
- width: 50, height: 50
10
-
11
- # Shadows off by default, i.e. shadow_radius is nil
12
- # So our final dimensions are 100 - 2*15 and 150-2*15
13
- save_png prefix: 'no_shadow_', trim: 15, trim_radius: 15
14
-
15
- # Here's a nice-looking drop shadow
16
- # Defaults are designed to be generally good, so I recommend just
17
- # trying out a shadow_radius of 3 to 10 and see how it looks first
18
- save_png prefix: 'with_shadow_', trim: 15, trim_radius: 15,
19
- shadow_radius: 8,
20
- shadow_offset_x: 3, shadow_offset_y: 3, # about r / 2.5 looks good
21
- shadow_trim: 2.5, # about r/ 3 looks good
22
- shadow_color: '#101010aa' #tip: start the shadow color kinda transparent
23
-
24
- # Don't want a blur? Use a radius of 0
25
- save_png prefix: 'no_blur_', trim: 15, trim_radius: 15,
26
- shadow_radius: 0
27
-
28
- # Ok this next stop is crazytown, but it does give you ultimate control
29
- # Remember that all Squib colors can also be gradients.
30
- # They can be clunky but they do work here.
31
- # - x,y's are centered in the card itself
32
- # - stops go from fully empty to fully black
33
- # - we need to still turn on radius to get the effect
34
- # - but, this makes the upper-left corner not have a glowing effect and
35
- # have a harder edge, which (to my eye at least) feels more realistic
36
- # since the card would obscure the upper-left shadow at that angle
37
- # - this also allows you have a larger, softer blur without making it look
38
- # like it's glowing
39
- #
40
- # Oh just because it's easier to write we can use a ruby heredoc
41
- save_png prefix: 'gradient_blur_', trim: 15, trim_radius: 15,
42
- shadow_radius: 10,
43
- shadow_color: <<~EOS
44
- (25,25)
45
- (175,175)
46
- #0000@0.0
47
- #000f@1.0
48
- EOS
49
-
50
- # This one looks weird I know but it's for regression testing
51
- save_png prefix: 'with_shadow_test_',
52
- trim: 15, trim_radius: 15, rotate: :clockwise,
53
- shadow_offset_x: 5, shadow_offset_y: 25, shadow_radius: 10,
54
- shadow_trim: 10,
55
- shadow_color: '#123'
56
- end
57
-
58
- Squib::Deck.new(width:50, height: 50) do
59
-
60
- # What if we had a transparent card but just some shapes?
61
- # Like chits or something
62
-
63
- # background defaults to fully transparent here
64
-
65
- png file: 'doodle.png'
66
-
67
- save_png prefix: 'transparent_bg_shadow_',
68
- shadow_radius: 2,
69
- shadow_offset_x: 2, shadow_offset_y: 2,
70
- shadow_color: :black
71
-
1
+ require 'squib'
2
+ # The save_png method supports drop shadows on the final save
3
+ # This is useful for when you want to generate images for your rulebook
4
+
5
+ Squib::Deck.new(width: 100, height: 150) do
6
+ background color: '#abc'
7
+ svg file: '../spanner.svg',
8
+ x: 'middle - 25', y: 'middle - 25',
9
+ width: 50, height: 50
10
+
11
+ # Shadows off by default, i.e. shadow_radius is nil
12
+ # So our final dimensions are 100 - 2*15 and 150-2*15
13
+ save_png prefix: 'no_shadow_', trim: 15, trim_radius: 15
14
+
15
+ # Here's a nice-looking drop shadow
16
+ # Defaults are designed to be generally good, so I recommend just
17
+ # trying out a shadow_radius of 3 to 10 and see how it looks first
18
+ save_png prefix: 'with_shadow_', trim: 15, trim_radius: 15,
19
+ shadow_radius: 8,
20
+ shadow_offset_x: 3, shadow_offset_y: 3, # about r / 2.5 looks good
21
+ shadow_trim: 2.5, # about r/ 3 looks good
22
+ shadow_color: '#101010aa' #tip: start the shadow color kinda transparent
23
+
24
+ # Don't want a blur? Use a radius of 0
25
+ save_png prefix: 'no_blur_', trim: 15, trim_radius: 15,
26
+ shadow_radius: 0
27
+
28
+ # Ok this next stop is crazytown, but it does give you ultimate control
29
+ # Remember that all Squib colors can also be gradients.
30
+ # They can be clunky but they do work here.
31
+ # - x,y's are centered in the card itself
32
+ # - stops go from fully empty to fully black
33
+ # - we need to still turn on radius to get the effect
34
+ # - but, this makes the upper-left corner not have a glowing effect and
35
+ # have a harder edge, which (to my eye at least) feels more realistic
36
+ # since the card would obscure the upper-left shadow at that angle
37
+ # - this also allows you have a larger, softer blur without making it look
38
+ # like it's glowing
39
+ #
40
+ # Oh just because it's easier to write we can use a ruby heredoc
41
+ save_png prefix: 'gradient_blur_', trim: 15, trim_radius: 15,
42
+ shadow_radius: 10,
43
+ shadow_color: <<~EOS
44
+ (25,25)
45
+ (175,175)
46
+ #0000@0.0
47
+ #000f@1.0
48
+ EOS
49
+
50
+ # This one looks weird I know but it's for regression testing
51
+ save_png prefix: 'with_shadow_test_',
52
+ trim: 15, trim_radius: 15, rotate: :clockwise,
53
+ shadow_offset_x: 5, shadow_offset_y: 25, shadow_radius: 10,
54
+ shadow_trim: 10,
55
+ shadow_color: '#123'
56
+ end
57
+
58
+ Squib::Deck.new(width:50, height: 50) do
59
+
60
+ # What if we had a transparent card but just some shapes?
61
+ # Like chits or something
62
+
63
+ # background defaults to fully transparent here
64
+
65
+ png file: 'doodle.png'
66
+
67
+ save_png prefix: 'transparent_bg_shadow_',
68
+ shadow_radius: 2,
69
+ shadow_offset_x: 2, shadow_offset_y: 2,
70
+ shadow_color: :black
71
+
72
72
  end
@@ -1,60 +1,60 @@
1
- require 'squib'
2
-
3
- Squib::Deck.new do
4
- background color: :white
5
-
6
- grid x: 10, y: 10, width: 50, height: 50, stroke_color: '#0066FF', stroke_width: 1.5
7
- grid x: 10, y: 10, width: 200, height: 200, stroke_color: '#0066FF', stroke_width: 3
8
-
9
- rect x: 305, y: 105, width: 200, height: 50, dash: '4 2'
10
-
11
- rect x: 300, y: 300, width: 400, height: 400,
12
- fill_color: :blue, stroke_color: :red, stroke_width: 50.0,
13
- join: 'bevel'
14
-
15
- rect x: 550, y: 105, width: 100, height: 100,
16
- stroke_width: 5, stroke_color: :orange, angle: -0.2
17
-
18
- ellipse x: 675, y: 105, width: 65, height: 100,
19
- stroke_width: 5, stroke_color: :orange, angle: -0.2
20
-
21
- text str: 'Shapes!' # regression test for bug 248
22
-
23
- circle x: 450, y: 600, radius: 75,
24
- fill_color: :gray, stroke_color: :green, stroke_width: 8.0
25
-
26
- circle x: 600, y: 600, radius: 75, # partial circle
27
- arc_start: 1, arc_end: 4, arc_direction: :counter_clockwise,
28
- fill_color: :gray, stroke_color: :green, stroke_width: 8.0
29
-
30
- triangle x1: 50, y1: 50,
31
- x2: 150, y2: 150,
32
- x3: 75, y3: 250,
33
- fill_color: :gray, stroke_color: :green, stroke_width: 3.0
34
-
35
- line x1: 50, y1: 550,
36
- x2: 150, y2: 650,
37
- stroke_width: 25.0
38
-
39
- curve x1: 50, y1: 850, cx1: 150, cy1: 700,
40
- x2: 625, y2: 900, cx2: 150, cy2: 700,
41
- stroke_width: 12.0, stroke_color: :cyan,
42
- fill_color: :burgundy, cap: 'round'
43
-
44
- ellipse x: 50, y: 925, width: 200, height: 100,
45
- stroke_width: 5.0, stroke_color: :cyan,
46
- fill_color: :burgundy
47
-
48
- star x: 300, y: 1000, n: 5, inner_radius: 15, outer_radius: 40,
49
- fill_color: :cyan, stroke_color: :burgundy, stroke_width: 5
50
-
51
- # default draw is fill-then-stroke. Can be changed to stroke-then-fill
52
- star x: 375, y: 1000, n: 5, inner_radius: 15, outer_radius: 40,
53
- fill_color: :cyan, stroke_color: :burgundy,
54
- stroke_width: 5, stroke_strategy: :stroke_first
55
-
56
- polygon x: 500, y: 1000, n: 5, radius: 25, angle: Math::PI / 2,
57
- fill_color: :cyan, stroke_color: :burgundy, stroke_width: 2
58
-
59
- save_png prefix: 'shape_'
60
- end
1
+ require 'squib'
2
+
3
+ Squib::Deck.new do
4
+ background color: :white
5
+
6
+ grid x: 10, y: 10, width: 50, height: 50, stroke_color: '#0066FF', stroke_width: 1.5
7
+ grid x: 10, y: 10, width: 200, height: 200, stroke_color: '#0066FF', stroke_width: 3
8
+
9
+ rect x: 305, y: 105, width: 200, height: 50, dash: '4 2'
10
+
11
+ rect x: 300, y: 300, width: 400, height: 400,
12
+ fill_color: :blue, stroke_color: :red, stroke_width: 50.0,
13
+ join: 'bevel'
14
+
15
+ rect x: 550, y: 105, width: 100, height: 100,
16
+ stroke_width: 5, stroke_color: :orange, angle: -0.2
17
+
18
+ ellipse x: 675, y: 105, width: 65, height: 100,
19
+ stroke_width: 5, stroke_color: :orange, angle: -0.2
20
+
21
+ text str: 'Shapes!' # regression test for bug 248
22
+
23
+ circle x: 450, y: 600, radius: 75,
24
+ fill_color: :gray, stroke_color: :green, stroke_width: 8.0
25
+
26
+ circle x: 600, y: 600, radius: 75, # partial circle
27
+ arc_start: 1, arc_end: 4, arc_direction: :counter_clockwise,
28
+ fill_color: :gray, stroke_color: :green, stroke_width: 8.0
29
+
30
+ triangle x1: 50, y1: 50,
31
+ x2: 150, y2: 150,
32
+ x3: 75, y3: 250,
33
+ fill_color: :gray, stroke_color: :green, stroke_width: 3.0
34
+
35
+ line x1: 50, y1: 550,
36
+ x2: 150, y2: 650,
37
+ stroke_width: 25.0
38
+
39
+ curve x1: 50, y1: 850, cx1: 150, cy1: 700,
40
+ x2: 625, y2: 900, cx2: 150, cy2: 700,
41
+ stroke_width: 12.0, stroke_color: :cyan,
42
+ fill_color: :burgundy, cap: 'round'
43
+
44
+ ellipse x: 50, y: 925, width: 200, height: 100,
45
+ stroke_width: 5.0, stroke_color: :cyan,
46
+ fill_color: :burgundy
47
+
48
+ star x: 300, y: 1000, n: 5, inner_radius: 15, outer_radius: 40,
49
+ fill_color: :cyan, stroke_color: :burgundy, stroke_width: 5
50
+
51
+ # default draw is fill-then-stroke. Can be changed to stroke-then-fill
52
+ star x: 375, y: 1000, n: 5, inner_radius: 15, outer_radius: 40,
53
+ fill_color: :cyan, stroke_color: :burgundy,
54
+ stroke_width: 5, stroke_strategy: :stroke_first
55
+
56
+ polygon x: 500, y: 1000, n: 5, radius: 25, angle: Math::PI / 2,
57
+ fill_color: :cyan, stroke_color: :burgundy, stroke_width: 2
58
+
59
+ save_png prefix: 'shape_'
60
+ end
@@ -1,22 +1,22 @@
1
- require 'squib'
2
-
3
- Squib::Deck.new do
4
- background color: :white
5
- safe_zone # defaults TheGameCrafter 0.25in around the edge, rounded corners
6
- cut_zone # defaults TheGameCrafter 0.125in around the edge
7
-
8
- text str: 'Poker card with proof lines', x: '0.25in', y: '0.25in'
9
- save_png prefix: 'proof_poker_'
10
- end
11
-
12
-
13
- Squib::Deck.new(width:'2in', height: '1in')do
14
- background color: :white
15
- safe_zone stroke_color: :purple, margin: '0.1in'
16
- cut_zone stroke_color: :purple, margin: '0.05in'
17
-
18
- text str: 'Small card with proof lines', x: '0.1in', y: '0.1in',
19
- font: 'Arial 10'
20
-
21
- save_png prefix: 'proof_tiny_'
22
- end
1
+ require 'squib'
2
+
3
+ Squib::Deck.new do
4
+ background color: :white
5
+ safe_zone # defaults TheGameCrafter 0.25in around the edge, rounded corners
6
+ cut_zone # defaults TheGameCrafter 0.125in around the edge
7
+
8
+ text str: 'Poker card with proof lines', x: '0.25in', y: '0.25in'
9
+ save_png prefix: 'proof_poker_'
10
+ end
11
+
12
+
13
+ Squib::Deck.new(width:'2in', height: '1in')do
14
+ background color: :white
15
+ safe_zone stroke_color: :purple, margin: '0.1in'
16
+ cut_zone stroke_color: :purple, margin: '0.05in'
17
+
18
+ text str: 'Small card with proof lines', x: '0.1in', y: '0.1in',
19
+ font: 'Arial 10'
20
+
21
+ save_png prefix: 'proof_tiny_'
22
+ end
@@ -1,25 +1,25 @@
1
- # require 'squib'
2
- require_relative '../../lib/squib'
3
-
4
- # This is a more advanced example of Sprues
5
- # (mostly so we can have a torturous regression test)
6
- # - Uses a custom sprue
7
- # - Weird rotations
8
- # - Center-positioned
9
- # - Multiple pages
10
- Squib::Deck.new(cards: 6, width: '2.2in', height: '2.1in') do
11
- background color: :blue #blue never shows up! Yay clipping...
12
- rect stroke_width: 5, stroke_color: :red, fill_color: :salmon
13
- cut_zone margin: '0.125in',
14
- stroke_width: 2, stroke_color: :purple
15
-
16
- circle x: width/2, y: height/2, radius: 20 # midpoint
17
-
18
- text str: (0..9).map{ |i| "Card! #{i}\n\n" },
19
- font: 'Sans 32', align: :center, valign: :middle,
20
- height: :deck, width: :deck
21
-
22
- save_sheet sprue: 'my_sprues/weird_sprue.yml',
23
- trim: '0.2in', trim_radius: '10pt',
24
- prefix: "advanced_sprues_"
25
- end
1
+ # require 'squib'
2
+ require_relative '../../lib/squib'
3
+
4
+ # This is a more advanced example of Sprues
5
+ # (mostly so we can have a torturous regression test)
6
+ # - Uses a custom sprue
7
+ # - Weird rotations
8
+ # - Center-positioned
9
+ # - Multiple pages
10
+ Squib::Deck.new(cards: 6, width: '2.2in', height: '2.1in') do
11
+ background color: :blue #blue never shows up! Yay clipping...
12
+ rect stroke_width: 5, stroke_color: :red, fill_color: :salmon
13
+ cut_zone margin: '0.125in',
14
+ stroke_width: 2, stroke_color: :purple
15
+
16
+ circle x: width/2, y: height/2, radius: 20 # midpoint
17
+
18
+ text str: (0..9).map{ |i| "Card! #{i}\n\n" },
19
+ font: 'Sans 32', align: :center, valign: :middle,
20
+ height: :deck, width: :deck
21
+
22
+ save_sheet sprue: 'my_sprues/weird_sprue.yml',
23
+ trim: '0.2in', trim_radius: '10pt',
24
+ prefix: "advanced_sprues_"
25
+ end
@@ -1,22 +1,22 @@
1
- require 'squib'
2
-
3
- Squib::Deck.new(width: '50mm', height: '70mm', cards: 9) do
4
- background color: :white
5
- rect stroke_width: 5, stroke_color: :red
6
- text str: (0..9).map{ |i| "Card! #{i}\n50x77mm" },
7
- font: 'Sans 32', align: :center, valign: :middle,
8
- height: :deck, width: :deck
9
-
10
- %w(
11
- a4_poker_card_8up.yml
12
- a4_euro_card.yml
13
- a4_poker_card_9up.yml
14
- a4_usa_card.yml
15
- letter_poker_card_9up.yml
16
- printplaygames_18up.yml
17
- drivethrucards_1up.yml
18
- ).each do |builtin|
19
- save_sheet sprue: builtin, prefix: "sprue_#{builtin}_"
20
- save_pdf sprue: builtin, file: "sprue_#{builtin}_"
21
- end
22
- end
1
+ require 'squib'
2
+
3
+ Squib::Deck.new(width: '50mm', height: '70mm', cards: 9) do
4
+ background color: :white
5
+ rect stroke_width: 5, stroke_color: :red
6
+ text str: (0..9).map{ |i| "Card! #{i}\n50x77mm" },
7
+ font: 'Sans 32', align: :center, valign: :middle,
8
+ height: :deck, width: :deck
9
+
10
+ %w(
11
+ a4_poker_card_8up.yml
12
+ a4_euro_card.yml
13
+ a4_poker_card_9up.yml
14
+ a4_usa_card.yml
15
+ letter_poker_card_9up.yml
16
+ printplaygames_18up.yml
17
+ drivethrucards_1up.yml
18
+ ).each do |builtin|
19
+ save_sheet sprue: builtin, prefix: "sprue_#{builtin}_"
20
+ save_pdf sprue: builtin, file: "sprue_#{builtin}_"
21
+ end
22
+ end