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,36 +1,36 @@
1
- require_relative '../errors_warnings/warn_unexpected_params'
2
-
3
- module Squib
4
- class Deck
5
- def polygon(opts = {})
6
- DSL::Polygon.new(self, __callee__).run(opts)
7
- end
8
- end
9
-
10
- module DSL
11
- class Polygon
12
- include WarnUnexpectedParams
13
- attr_reader :dsl_method, :deck
14
-
15
- def initialize(deck, dsl_method)
16
- @deck = deck
17
- @dsl_method = dsl_method
18
- end
19
-
20
- def self.accepted_params
21
- %i(n x y radius angle
22
- fill_color stroke_color stroke_width stroke_strategy join dash cap
23
- range layout)
24
- end
25
-
26
- def run(opts)
27
- warn_if_unexpected opts
28
- range = Args.extract_range opts, deck
29
- draw = Args.extract_draw opts, deck
30
- coords = Args.extract_coords opts, deck
31
- trans = Args.extract_transform opts, deck
32
- range.each { |i| deck.cards[i].polygon(coords[i], trans[i], draw[i]) }
33
- end
34
- end
35
- end
36
- end
1
+ require_relative '../errors_warnings/warn_unexpected_params'
2
+
3
+ module Squib
4
+ class Deck
5
+ def polygon(opts = {})
6
+ DSL::Polygon.new(self, __callee__).run(opts)
7
+ end
8
+ end
9
+
10
+ module DSL
11
+ class Polygon
12
+ include WarnUnexpectedParams
13
+ attr_reader :dsl_method, :deck
14
+
15
+ def initialize(deck, dsl_method)
16
+ @deck = deck
17
+ @dsl_method = dsl_method
18
+ end
19
+
20
+ def self.accepted_params
21
+ %i(n x y radius angle
22
+ fill_color stroke_color stroke_width stroke_strategy join dash cap
23
+ range layout)
24
+ end
25
+
26
+ def run(opts)
27
+ warn_if_unexpected opts
28
+ range = Args.extract_range opts, deck
29
+ draw = Args.extract_draw opts, deck
30
+ coords = Args.extract_coords opts, deck
31
+ trans = Args.extract_transform opts, deck
32
+ range.each { |i| deck.cards[i].polygon(coords[i], trans[i], draw[i]) }
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,37 +1,37 @@
1
- require_relative '../errors_warnings/warn_unexpected_params'
2
-
3
- module Squib
4
- class Deck
5
- def rect(opts = {})
6
- DSL::Rect.new(self, __callee__).run(opts)
7
- end
8
- end
9
-
10
- module DSL
11
- class Rect
12
- include WarnUnexpectedParams
13
- attr_reader :dsl_method, :deck
14
-
15
- def initialize(deck, dsl_method)
16
- @deck = deck
17
- @dsl_method = dsl_method
18
- end
19
-
20
- def self.accepted_params
21
- %i(x y width height angle
22
- x_radius y_radius radius
23
- fill_color stroke_color stroke_width stroke_strategy join dash cap
24
- range layout)
25
- end
26
-
27
- def run(opts)
28
- warn_if_unexpected opts
29
- range = Args.extract_range opts, deck
30
- draw = Args.extract_draw opts, deck
31
- box = Args.extract_box opts, deck
32
- trans = Args.extract_transform opts, deck
33
- range.each { |i| deck.cards[i].rect(box[i], draw[i], trans[i]) }
34
- end
35
- end
36
- end
37
- end
1
+ require_relative '../errors_warnings/warn_unexpected_params'
2
+
3
+ module Squib
4
+ class Deck
5
+ def rect(opts = {})
6
+ DSL::Rect.new(self, __callee__).run(opts)
7
+ end
8
+ end
9
+
10
+ module DSL
11
+ class Rect
12
+ include WarnUnexpectedParams
13
+ attr_reader :dsl_method, :deck
14
+
15
+ def initialize(deck, dsl_method)
16
+ @deck = deck
17
+ @dsl_method = dsl_method
18
+ end
19
+
20
+ def self.accepted_params
21
+ %i(x y width height angle
22
+ x_radius y_radius radius
23
+ fill_color stroke_color stroke_width stroke_strategy join dash cap
24
+ range layout)
25
+ end
26
+
27
+ def run(opts)
28
+ warn_if_unexpected opts
29
+ range = Args.extract_range opts, deck
30
+ draw = Args.extract_draw opts, deck
31
+ box = Args.extract_box opts, deck
32
+ trans = Args.extract_transform opts, deck
33
+ range.each { |i| deck.cards[i].rect(box[i], draw[i], trans[i]) }
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,48 +1,48 @@
1
- require_relative '../errors_warnings/warn_unexpected_params'
2
-
3
- module Squib
4
- class Deck
5
- def safe_zone(opts = {})
6
- DSL::SafeZone.new(self, __callee__).run(opts)
7
- end
8
- end
9
-
10
- module DSL
11
- class SafeZone
12
- include WarnUnexpectedParams
13
- attr_reader :dsl_method, :deck
14
-
15
- def initialize(deck, dsl_method)
16
- @deck = deck
17
- @dsl_method = dsl_method
18
- end
19
-
20
- def self.accepted_params
21
- %i(x y width height margin angle
22
- x_radius y_radius radius
23
- fill_color stroke_color stroke_width stroke_strategy join dash cap
24
- range layout)
25
- end
26
-
27
- def run(opts)
28
- warn_if_unexpected opts
29
- safe_defaults = {
30
- margin: '0.25in',
31
- radius: '0.125in',
32
- stroke_color: :blue,
33
- fill_color: '#0000',
34
- stroke_width: 1.0,
35
- dash: '3 3',
36
- }
37
- new_opts = safe_defaults.merge(opts)
38
- margin = Args::UnitConversion.parse new_opts[:margin], @deck.dpi, @deck.cell_px
39
- new_opts[:x] = margin
40
- new_opts[:y] = margin
41
- new_opts[:width] = deck.width - (2 * margin)
42
- new_opts[:height] = deck.height - (2 * margin)
43
- new_opts.delete :margin
44
- deck.rect(new_opts)
45
- end
46
- end
47
- end
48
- end
1
+ require_relative '../errors_warnings/warn_unexpected_params'
2
+
3
+ module Squib
4
+ class Deck
5
+ def safe_zone(opts = {})
6
+ DSL::SafeZone.new(self, __callee__).run(opts)
7
+ end
8
+ end
9
+
10
+ module DSL
11
+ class SafeZone
12
+ include WarnUnexpectedParams
13
+ attr_reader :dsl_method, :deck
14
+
15
+ def initialize(deck, dsl_method)
16
+ @deck = deck
17
+ @dsl_method = dsl_method
18
+ end
19
+
20
+ def self.accepted_params
21
+ %i(x y width height margin angle
22
+ x_radius y_radius radius
23
+ fill_color stroke_color stroke_width stroke_strategy join dash cap
24
+ range layout)
25
+ end
26
+
27
+ def run(opts)
28
+ warn_if_unexpected opts
29
+ safe_defaults = {
30
+ margin: '0.25in',
31
+ radius: '0.125in',
32
+ stroke_color: :blue,
33
+ fill_color: '#0000',
34
+ stroke_width: 1.0,
35
+ dash: '3 3',
36
+ }
37
+ new_opts = safe_defaults.merge(opts)
38
+ margin = Args::UnitConversion.parse new_opts[:margin], @deck.dpi, @deck.cell_px
39
+ new_opts[:x] = margin
40
+ new_opts[:y] = margin
41
+ new_opts[:width] = deck.width - (2 * margin)
42
+ new_opts[:height] = deck.height - (2 * margin)
43
+ new_opts.delete :margin
44
+ deck.rect(new_opts)
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,21 +1,21 @@
1
- require 'rainbow/refinement'
2
- require_relative 'save_png'
3
- require_relative 'save_pdf'
4
-
5
- module Squib
6
- class Deck
7
- using Rainbow # we can colorize strings now!
8
- def save(opts = {})
9
- fmts = Array(opts[:format])
10
- warn 'Must specify format :png and/or :pdf' if fmts.empty?
11
- opts.delete :format # not needed anymore
12
- save_png(opts) if fmts.include? :png
13
- save_pdf(opts) if fmts.include? :pdf
14
- uns = fmts - [:pdf, :png ]
15
- unless uns.empty?
16
- warn "Unsupported format(s) #{uns} to #{'save'.cyan}()", uplevel: 1
17
- end
18
- self
19
- end
20
- end
21
- end
1
+ require 'rainbow/refinement'
2
+ require_relative 'save_png'
3
+ require_relative 'save_pdf'
4
+
5
+ module Squib
6
+ class Deck
7
+ using Rainbow # we can colorize strings now!
8
+ def save(opts = {})
9
+ fmts = Array(opts[:format])
10
+ warn 'Must specify format :png and/or :pdf' if fmts.empty?
11
+ opts.delete :format # not needed anymore
12
+ save_png(opts) if fmts.include? :png
13
+ save_pdf(opts) if fmts.include? :pdf
14
+ uns = fmts - [:pdf, :png ]
15
+ unless uns.empty?
16
+ warn "Unsupported format(s) #{uns} to #{'save'.cyan}()", uplevel: 1
17
+ end
18
+ self
19
+ end
20
+ end
21
+ end
@@ -1,50 +1,50 @@
1
- require_relative '../errors_warnings/warn_unexpected_params'
2
- require_relative '../graphics/save_pdf'
3
- require_relative '../graphics/save_sprue'
4
-
5
-
6
- module Squib
7
- class Deck
8
- def save_pdf(opts = {})
9
- DSL::SavePDF.new(self, __callee__).run(opts)
10
- end
11
- end
12
-
13
- module DSL
14
- class SavePDF
15
- include WarnUnexpectedParams
16
- attr_reader :dsl_method, :deck
17
-
18
- def initialize(deck, dsl_method)
19
- @deck = deck
20
- @dsl_method = dsl_method
21
- @bar = deck.progress_bar
22
- end
23
-
24
- def self.accepted_params
25
- %i(
26
- file dir sprue
27
- width height margin gap
28
- crop_marks crop_stroke_color crop_stroke_dash crop_stroke_width
29
- crop_margin_bottom crop_margin_left crop_margin_right crop_margin_top
30
- rtl trim trim_radius
31
- range
32
- )
33
- end
34
-
35
- def run(opts)
36
- warn_if_unexpected opts
37
- range = Args.extract_range opts, deck
38
- sheet = Args.extract_sheet opts, deck
39
- sprue_file = Args.extract_sprue_file opts, deck
40
- if sprue_file.sprue.nil?
41
- Graphics::SavePDF.new(deck).render_pdf(range, sheet)
42
- else
43
- tmpl = Sprue.load sprue_file.sprue, deck.dpi, deck.cell_px
44
- Graphics::SaveSpruePDF.new(deck, tmpl, sheet).render_sheet(range)
45
- end
46
-
47
- end
48
- end
49
- end
50
- end
1
+ require_relative '../errors_warnings/warn_unexpected_params'
2
+ require_relative '../graphics/save_pdf'
3
+ require_relative '../graphics/save_sprue'
4
+
5
+
6
+ module Squib
7
+ class Deck
8
+ def save_pdf(opts = {})
9
+ DSL::SavePDF.new(self, __callee__).run(opts)
10
+ end
11
+ end
12
+
13
+ module DSL
14
+ class SavePDF
15
+ include WarnUnexpectedParams
16
+ attr_reader :dsl_method, :deck
17
+
18
+ def initialize(deck, dsl_method)
19
+ @deck = deck
20
+ @dsl_method = dsl_method
21
+ @bar = deck.progress_bar
22
+ end
23
+
24
+ def self.accepted_params
25
+ %i(
26
+ file dir sprue
27
+ width height margin gap
28
+ crop_marks crop_stroke_color crop_stroke_dash crop_stroke_width
29
+ crop_margin_bottom crop_margin_left crop_margin_right crop_margin_top
30
+ rtl trim trim_radius
31
+ range
32
+ )
33
+ end
34
+
35
+ def run(opts)
36
+ warn_if_unexpected opts
37
+ range = Args.extract_range opts, deck
38
+ sheet = Args.extract_sheet opts, deck
39
+ sprue_file = Args.extract_sprue_file opts, deck
40
+ if sprue_file.sprue.nil?
41
+ Graphics::SavePDF.new(deck).render_pdf(range, sheet)
42
+ else
43
+ tmpl = Sprue.load sprue_file.sprue, deck.dpi, deck.cell_px
44
+ Graphics::SaveSpruePDF.new(deck, tmpl, sheet).render_sheet(range)
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,48 +1,48 @@
1
- require_relative '../errors_warnings/warn_unexpected_params'
2
- require_relative '../args/card_range'
3
- require_relative '../args/save_batch'
4
- require_relative '../args/drop_shadow'
5
-
6
- module Squib
7
- class Deck
8
- def save_png(opts = {})
9
- DSL::SavePNG.new(self, __callee__).run(opts)
10
- end
11
- end
12
-
13
- module DSL
14
- class SavePNG
15
- include WarnUnexpectedParams
16
- attr_reader :dsl_method, :deck
17
-
18
- def initialize(deck, dsl_method)
19
- @deck = deck
20
- @dsl_method = dsl_method
21
- @bar = deck.progress_bar
22
- end
23
-
24
- def self.accepted_params
25
- %i(
26
- range
27
- dir prefix suffix count_format
28
- rotate trim trim_radius
29
- shadow_offset_x shadow_offset_y shadow_radius shadow_color shadow_trim
30
- )
31
- end
32
-
33
- def run(opts)
34
- warn_if_unexpected opts
35
- range = Args.extract_range opts, deck
36
- batch = Args.extract_save_batch opts, deck
37
- shadow = Args.extract_drop_shadow opts, deck
38
- @bar.start("Saving PNGs to #{batch.summary}", deck.size) do |bar|
39
- range.map do |i|
40
- deck.cards[i].save_png(batch[i], shadow[i])
41
- bar.increment
42
- end
43
- end
44
- end
45
- end
46
-
47
- end
48
- end
1
+ require_relative '../errors_warnings/warn_unexpected_params'
2
+ require_relative '../args/card_range'
3
+ require_relative '../args/save_batch'
4
+ require_relative '../args/drop_shadow'
5
+
6
+ module Squib
7
+ class Deck
8
+ def save_png(opts = {})
9
+ DSL::SavePNG.new(self, __callee__).run(opts)
10
+ end
11
+ end
12
+
13
+ module DSL
14
+ class SavePNG
15
+ include WarnUnexpectedParams
16
+ attr_reader :dsl_method, :deck
17
+
18
+ def initialize(deck, dsl_method)
19
+ @deck = deck
20
+ @dsl_method = dsl_method
21
+ @bar = deck.progress_bar
22
+ end
23
+
24
+ def self.accepted_params
25
+ %i(
26
+ range
27
+ dir prefix suffix count_format
28
+ rotate trim trim_radius
29
+ shadow_offset_x shadow_offset_y shadow_radius shadow_color shadow_trim
30
+ )
31
+ end
32
+
33
+ def run(opts)
34
+ warn_if_unexpected opts
35
+ range = Args.extract_range opts, deck
36
+ batch = Args.extract_save_batch opts, deck
37
+ shadow = Args.extract_drop_shadow opts, deck
38
+ @bar.start("Saving PNGs to #{batch.summary}", deck.size) do |bar|
39
+ range.map do |i|
40
+ deck.cards[i].save_png(batch[i], shadow[i])
41
+ bar.increment
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ end
48
+ end
@@ -1,53 +1,53 @@
1
- require_relative '../args/card_range'
2
- require_relative '../args/save_batch'
3
- require_relative '../args/sheet'
4
- require_relative '../args/sprue_file'
5
- require_relative '../errors_warnings/warn_unexpected_params'
6
- require_relative '../graphics/save_doc'
7
- require_relative '../graphics/save_sprue'
8
- require_relative '../sprues/sprue'
9
-
10
-
11
- module Squib
12
- class Deck
13
- def save_sheet(opts = {})
14
- DSL::SaveSheet.new(self, __callee__).run(opts)
15
- end
16
- end
17
-
18
- module DSL
19
- class SaveSheet
20
- include WarnUnexpectedParams
21
- attr_reader :dsl_method, :deck
22
-
23
- def initialize(deck, dsl_method)
24
- @deck = deck
25
- @dsl_method = dsl_method
26
- end
27
-
28
- def self.accepted_params
29
- %i(
30
- range sprue
31
- columns rows rtl
32
- dir prefix count_format suffix
33
- margin gap trim trim_radius rotate
34
- )
35
- end
36
-
37
- def run(opts)
38
- warn_if_unexpected opts
39
- range = Args.extract_range opts, deck
40
- batch = Args.extract_save_batch opts, deck
41
- sheet = Args.extract_sheet opts, deck, { margin: 0 }
42
- sprue_file = Args.extract_sprue_file opts, deck
43
- if sprue_file.sprue.nil?
44
- deck.render_sheet(range, batch, sheet)
45
- else
46
- tmpl = Sprue.load sprue_file.sprue, deck.dpi, deck.cell_px
47
- Graphics::SaveSpruePNG.new(deck, tmpl, sheet).render_sheet(range)
48
- end
49
-
50
- end
51
- end
52
- end
53
- end
1
+ require_relative '../args/card_range'
2
+ require_relative '../args/save_batch'
3
+ require_relative '../args/sheet'
4
+ require_relative '../args/sprue_file'
5
+ require_relative '../errors_warnings/warn_unexpected_params'
6
+ require_relative '../graphics/save_doc'
7
+ require_relative '../graphics/save_sprue'
8
+ require_relative '../sprues/sprue'
9
+
10
+
11
+ module Squib
12
+ class Deck
13
+ def save_sheet(opts = {})
14
+ DSL::SaveSheet.new(self, __callee__).run(opts)
15
+ end
16
+ end
17
+
18
+ module DSL
19
+ class SaveSheet
20
+ include WarnUnexpectedParams
21
+ attr_reader :dsl_method, :deck
22
+
23
+ def initialize(deck, dsl_method)
24
+ @deck = deck
25
+ @dsl_method = dsl_method
26
+ end
27
+
28
+ def self.accepted_params
29
+ %i(
30
+ range sprue
31
+ columns rows rtl
32
+ dir prefix count_format suffix
33
+ margin gap trim trim_radius rotate
34
+ )
35
+ end
36
+
37
+ def run(opts)
38
+ warn_if_unexpected opts
39
+ range = Args.extract_range opts, deck
40
+ batch = Args.extract_save_batch opts, deck
41
+ sheet = Args.extract_sheet opts, deck, { margin: 0 }
42
+ sprue_file = Args.extract_sprue_file opts, deck
43
+ if sprue_file.sprue.nil?
44
+ deck.render_sheet(range, batch, sheet)
45
+ else
46
+ tmpl = Sprue.load sprue_file.sprue, deck.dpi, deck.cell_px
47
+ Graphics::SaveSpruePNG.new(deck, tmpl, sheet).render_sheet(range)
48
+ end
49
+
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,43 +1,43 @@
1
- require_relative '../errors_warnings/warn_unexpected_params'
2
- require_relative '../args/card_range'
3
- require_relative '../args/showcase_special'
4
- require_relative '../args/sheet'
5
-
6
- module Squib
7
- class Deck
8
- def showcase(opts = {})
9
- DSL::Showcase.new(self, __callee__).run(opts)
10
- end
11
- end
12
-
13
- module DSL
14
- class Showcase
15
- include WarnUnexpectedParams
16
- attr_reader :dsl_method, :deck
17
-
18
- def initialize(deck, dsl_method)
19
- @deck = deck
20
- @dsl_method = dsl_method
21
- end
22
-
23
- def self.accepted_params
24
- %i(
25
- file dir
26
- trim trim_radius
27
- scale offset fill_color
28
- reflect_offset reflect_strength reflect_percent
29
- face margin
30
- range
31
- )
32
- end
33
-
34
- def run(opts)
35
- warn_if_unexpected opts
36
- range = Args.extract_range opts, deck
37
- showcase = Args.extract_showcase_special opts, deck
38
- sheet = Args.extract_sheet opts, deck, { file: 'showcase.png' }
39
- deck.render_showcase(range, sheet, showcase)
40
- end
41
- end
42
- end
43
- end
1
+ require_relative '../errors_warnings/warn_unexpected_params'
2
+ require_relative '../args/card_range'
3
+ require_relative '../args/showcase_special'
4
+ require_relative '../args/sheet'
5
+
6
+ module Squib
7
+ class Deck
8
+ def showcase(opts = {})
9
+ DSL::Showcase.new(self, __callee__).run(opts)
10
+ end
11
+ end
12
+
13
+ module DSL
14
+ class Showcase
15
+ include WarnUnexpectedParams
16
+ attr_reader :dsl_method, :deck
17
+
18
+ def initialize(deck, dsl_method)
19
+ @deck = deck
20
+ @dsl_method = dsl_method
21
+ end
22
+
23
+ def self.accepted_params
24
+ %i(
25
+ file dir
26
+ trim trim_radius
27
+ scale offset fill_color
28
+ reflect_offset reflect_strength reflect_percent
29
+ face margin
30
+ range
31
+ )
32
+ end
33
+
34
+ def run(opts)
35
+ warn_if_unexpected opts
36
+ range = Args.extract_range opts, deck
37
+ showcase = Args.extract_showcase_special opts, deck
38
+ sheet = Args.extract_sheet opts, deck, { file: 'showcase.png' }
39
+ deck.render_showcase(range, sheet, showcase)
40
+ end
41
+ end
42
+ end
43
+ end