squib 0.15.3 → 0.16.0.pre.preview1
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.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +22 -0
- data/CHANGELOG.md +22 -0
- data/Dockerfile +18 -16
- data/Guardfile +8 -0
- data/README.md +3 -9
- data/RELEASE TODO.md +1 -0
- data/Rakefile +3 -0
- data/lib/squib.rb +3 -1
- data/lib/squib/args/arg_loader.rb +109 -106
- data/lib/squib/args/box.rb +52 -48
- data/lib/squib/args/card_range.rb +26 -24
- data/lib/squib/args/color_validator.rb +4 -9
- data/lib/squib/args/coords.rb +39 -25
- data/lib/squib/args/csv_opts.rb +13 -16
- data/lib/squib/args/dir_validator.rb +7 -12
- data/lib/squib/args/draw.rb +69 -68
- data/lib/squib/args/embed_adjust.rb +12 -15
- data/lib/squib/args/embed_key.rb +6 -11
- data/lib/squib/args/hand_special.rb +25 -25
- data/lib/squib/args/import.rb +54 -27
- data/lib/squib/args/input_file.rb +22 -26
- data/lib/squib/args/paint.rb +30 -31
- data/lib/squib/args/paragraph.rb +95 -93
- data/lib/squib/args/save_batch.rb +50 -48
- data/lib/squib/args/scale_box.rb +43 -39
- data/lib/squib/args/sheet.rb +147 -149
- data/lib/squib/args/showcase_special.rb +32 -32
- data/lib/squib/args/sprue_file.rb +30 -30
- data/lib/squib/args/svg_special.rb +26 -26
- data/lib/squib/args/transform.rb +48 -54
- data/lib/squib/args/typographer.rb +88 -92
- data/lib/squib/args/unit_conversion.rb +6 -8
- data/lib/squib/args/xywh_shorthands.rb +56 -0
- data/lib/squib/builtin/projects/advanced/config.yml +4 -3
- data/lib/squib/builtin/projects/basic/config.yml +4 -3
- data/lib/squib/conf.rb +5 -0
- data/lib/squib/deck.rb +34 -12
- data/lib/squib/dsl/background.rb +35 -0
- data/lib/squib/dsl/circle.rb +39 -0
- data/lib/squib/dsl/csv.rb +42 -0
- data/lib/squib/dsl/curve.rb +35 -0
- data/lib/squib/dsl/cut_zone.rb +47 -0
- data/lib/squib/dsl/ellipse.rb +37 -0
- data/lib/squib/dsl/grid.rb +35 -0
- data/lib/squib/{api → dsl}/groups.rb +0 -0
- data/lib/squib/dsl/hand.rb +42 -0
- data/lib/squib/dsl/line.rb +35 -0
- data/lib/squib/dsl/png.rb +56 -0
- data/lib/squib/dsl/polygon.rb +36 -0
- data/lib/squib/dsl/rect.rb +37 -0
- data/lib/squib/dsl/safe_zone.rb +48 -0
- data/lib/squib/dsl/save.rb +21 -0
- data/lib/squib/dsl/save_pdf.rb +50 -0
- data/lib/squib/dsl/save_png.rb +47 -0
- data/lib/squib/dsl/save_sheet.rb +53 -0
- data/lib/squib/dsl/showcase.rb +43 -0
- data/lib/squib/dsl/star.rb +37 -0
- data/lib/squib/dsl/svg.rb +62 -0
- data/lib/squib/dsl/text.rb +54 -0
- data/lib/squib/dsl/text_embed.rb +78 -0
- data/lib/squib/dsl/triangle.rb +35 -0
- data/lib/squib/{api → dsl}/units.rb +10 -0
- data/lib/squib/dsl/xlsx.rb +40 -0
- data/lib/squib/dsl/yaml.rb +40 -0
- data/lib/squib/errors_warnings/warn_unexpected_params.rb +14 -0
- data/lib/squib/graphics/save_images.rb +3 -3
- data/lib/squib/graphics/save_sprue.rb +14 -2
- data/lib/squib/graphics/text.rb +37 -9
- data/lib/squib/import/csv_importer.rb +45 -0
- data/lib/squib/import/quantity_exploder.rb +18 -0
- data/lib/squib/import/xlsx_importer.rb +28 -0
- data/lib/squib/import/yaml_importer.rb +30 -0
- data/lib/squib/layout_parser.rb +24 -7
- data/lib/squib/sprues/crop_line.rb +6 -6
- data/lib/squib/sprues/crop_line_dash.rb +6 -6
- data/lib/squib/sprues/sprue.rb +16 -14
- data/lib/squib/version.rb +1 -1
- data/samples/autoscale_font/_autoscale_font.rb +77 -8
- data/samples/colors/_switch_color.rb +2 -2
- data/samples/data/_excel.rb +1 -1
- data/samples/ranges/_ranges.rb +1 -1
- data/samples/saves/_save_filenames.rb +4 -0
- data/samples/saves/_save_pdf.rb +1 -1
- data/samples/saves/_saves.rb +2 -1
- data/samples/shapes/_draw_shapes.rb +2 -2
- data/samples/sprues/_builtin_sprues.rb +1 -0
- data/samples/sprues/_fold_sheet.rb +4 -1
- data/samples/text/_text.rb +6 -1
- data/samples/text/_text_options.rb +2 -1
- data/samples/units/_cells.rb +51 -0
- data/samples/units/_shorthands.rb +49 -0
- data/samples/units/_units.rb +7 -0
- data/squib.gemspec +11 -5
- metadata +120 -33
- data/.travis.yml +0 -17
- data/appveyor.yml +0 -25
- data/lib/squib/api/background.rb +0 -15
- data/lib/squib/api/data.rb +0 -137
- data/lib/squib/api/image.rb +0 -49
- data/lib/squib/api/save.rb +0 -83
- data/lib/squib/api/shapes.rb +0 -124
- data/lib/squib/api/text.rb +0 -25
- data/lib/squib/api/text_embed.rb +0 -71
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative '../errors_warnings/warn_unexpected_params'
|
2
|
+
|
3
|
+
module Squib
|
4
|
+
class Deck
|
5
|
+
def grid(opts = {})
|
6
|
+
DSL::Grid.new(self, __callee__).run(opts)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module DSL
|
11
|
+
class Grid
|
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
|
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
|
+
box = Args.extract_box opts, deck
|
31
|
+
range.each { |i| deck.cards[i].grid(box[i], draw[i]) }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
File without changes
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require_relative '../args/card_range'
|
2
|
+
require_relative '../args/hand_special'
|
3
|
+
require_relative '../args/sheet'
|
4
|
+
require_relative '../errors_warnings/warn_unexpected_params'
|
5
|
+
require_relative '../graphics/hand'
|
6
|
+
|
7
|
+
module Squib
|
8
|
+
class Deck
|
9
|
+
def hand(opts = {})
|
10
|
+
DSL::Hand.new(self, __callee__).run(opts)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module DSL
|
15
|
+
class Hand
|
16
|
+
include WarnUnexpectedParams
|
17
|
+
attr_reader :dsl_method, :deck
|
18
|
+
|
19
|
+
def initialize(deck, dsl_method)
|
20
|
+
@deck = deck
|
21
|
+
@dsl_method = dsl_method
|
22
|
+
@bar = deck.progress_bar
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.accepted_params
|
26
|
+
%i(
|
27
|
+
file dir range
|
28
|
+
radius angle_range margin fill_color
|
29
|
+
trim trim_radius
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
def run(opts)
|
34
|
+
warn_if_unexpected opts
|
35
|
+
range = Args.extract_range opts, deck
|
36
|
+
sheet = Args.extract_sheet opts, deck, {file: 'hand.png'}
|
37
|
+
hand = Args.extract_hand_special opts, deck
|
38
|
+
deck.render_hand(range, sheet, hand)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative '../errors_warnings/warn_unexpected_params'
|
2
|
+
|
3
|
+
module Squib
|
4
|
+
class Deck
|
5
|
+
def line(opts = {})
|
6
|
+
DSL::Line.new(self, __callee__).run(opts)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module DSL
|
11
|
+
class Line
|
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(x1 y1 x2 y2
|
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
|
+
range.each { |i| deck.cards[i].line(coords[i], draw[i]) }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative '../errors_warnings/warn_unexpected_params'
|
2
|
+
require_relative '../args/card_range'
|
3
|
+
require_relative '../args/paint'
|
4
|
+
require_relative '../args/scale_box'
|
5
|
+
require_relative '../args/transform'
|
6
|
+
require_relative '../args/input_file'
|
7
|
+
|
8
|
+
module Squib
|
9
|
+
class Deck
|
10
|
+
def png(opts = {})
|
11
|
+
DSL::PNG.new(self, __callee__).run(opts)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module DSL
|
16
|
+
class PNG
|
17
|
+
include WarnUnexpectedParams
|
18
|
+
attr_reader :dsl_method, :deck
|
19
|
+
|
20
|
+
def initialize(deck, dsl_method)
|
21
|
+
@deck = deck
|
22
|
+
@dsl_method = dsl_method
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.accepted_params
|
26
|
+
%i(
|
27
|
+
file
|
28
|
+
x y width height
|
29
|
+
alpha blend mask angle
|
30
|
+
crop_x crop_y crop_width crop_height
|
31
|
+
crop_corner_radius crop_corner_x_radius crop_corner_y_radius
|
32
|
+
flip_horizontal flip_vertical
|
33
|
+
range layout
|
34
|
+
)
|
35
|
+
end
|
36
|
+
|
37
|
+
def run(opts)
|
38
|
+
warn_if_unexpected opts
|
39
|
+
Dir.chdir(deck.img_dir) do
|
40
|
+
range = Args.extract_range opts, deck
|
41
|
+
paint = Args.extract_paint opts, deck
|
42
|
+
box = Args.extract_scale_box opts, deck
|
43
|
+
trans = Args.extract_transform opts, deck
|
44
|
+
ifile = Args.extract_input_file opts, deck
|
45
|
+
deck.progress_bar.start('Loading PNG(s)', range.size) do |bar|
|
46
|
+
range.each do |i|
|
47
|
+
deck.cards[i].png(ifile[i].file, box[i], paint[i], trans[i])
|
48
|
+
bar.increment
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +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
|
@@ -0,0 +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
|
@@ -0,0 +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
|
@@ -0,0 +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
|
@@ -0,0 +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
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative '../errors_warnings/warn_unexpected_params'
|
2
|
+
|
3
|
+
|
4
|
+
module Squib
|
5
|
+
class Deck
|
6
|
+
def save_png(opts = {})
|
7
|
+
DSL::SavePNG.new(self, __callee__).run(opts)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
module DSL
|
12
|
+
class SavePNG
|
13
|
+
include WarnUnexpectedParams
|
14
|
+
attr_reader :dsl_method, :deck
|
15
|
+
|
16
|
+
def initialize(deck, dsl_method)
|
17
|
+
@deck = deck
|
18
|
+
@dsl_method = dsl_method
|
19
|
+
@bar = deck.progress_bar
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.accepted_params
|
23
|
+
%i(
|
24
|
+
range
|
25
|
+
dir prefix suffix count_format
|
26
|
+
rotate trim trim_radius
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
def run(opts)
|
31
|
+
warn_if_unexpected opts
|
32
|
+
Dir.chdir(deck.img_dir) do
|
33
|
+
range = Args.extract_range opts, deck
|
34
|
+
batch = Args.extract_save_batch opts, deck
|
35
|
+
@bar.start("Saving PNGs to #{batch.summary}", deck.size) do |bar|
|
36
|
+
range.map do |i|
|
37
|
+
deck.cards[i].save_png(batch[i])
|
38
|
+
bar.increment
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +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
|
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
|