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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +39 -39
- data/.github/ISSUE_TEMPLATE/feature_request.md +22 -22
- data/.github/ISSUE_TEMPLATE/help-wanted.md +13 -13
- data/.github/ISSUE_TEMPLATE/release-todo.md +45 -33
- data/.github/PULL_REQUEST_TEMPLATE.md +13 -13
- data/.github/workflows/tests.yml +22 -22
- data/.gitignore +41 -41
- data/.vscode/settings.json +4 -3
- data/CHANGELOG.md +460 -460
- data/CONTRIBUTING.md +40 -40
- data/Dockerfile +27 -27
- data/Gemfile +2 -2
- data/Guardfile +8 -8
- data/LICENSE.txt +22 -22
- data/README.md +139 -139
- data/Rakefile +51 -51
- data/bin/squib +5 -5
- data/lib/squib/api/settings.rb +21 -21
- data/lib/squib/args/arg_loader.rb +138 -138
- data/lib/squib/args/box.rb +59 -59
- data/lib/squib/args/card_range.rb +34 -34
- data/lib/squib/args/color_validator.rb +7 -7
- data/lib/squib/args/coords.rb +49 -49
- data/lib/squib/args/csv_opts.rb +22 -22
- data/lib/squib/args/dir_validator.rb +11 -11
- data/lib/squib/args/draw.rb +93 -93
- data/lib/squib/args/drop_shadow.rb +39 -39
- data/lib/squib/args/embed_adjust.rb +22 -22
- data/lib/squib/args/embed_key.rb +12 -12
- data/lib/squib/args/hand_special.rb +37 -37
- data/lib/squib/args/import.rb +67 -67
- data/lib/squib/args/input_file.rb +55 -55
- data/lib/squib/args/paint.rb +43 -43
- data/lib/squib/args/paragraph.rb +118 -118
- data/lib/squib/args/save_batch.rb +65 -65
- data/lib/squib/args/scale_box.rb +57 -57
- data/lib/squib/args/sheet.rb +165 -165
- data/lib/squib/args/showcase_special.rb +41 -41
- data/lib/squib/args/sprue_file.rb +44 -44
- data/lib/squib/args/svg_special.rb +37 -37
- data/lib/squib/args/transform.rb +55 -55
- data/lib/squib/args/typographer.rb +115 -115
- data/lib/squib/args/unit_conversion.rb +27 -27
- data/lib/squib/args/xywh_shorthands.rb +50 -50
- data/lib/squib/builtin/layouts/economy.yml +85 -85
- data/lib/squib/builtin/layouts/fantasy.yml +101 -101
- data/lib/squib/builtin/layouts/hand.yml +62 -62
- data/lib/squib/builtin/layouts/party.yml +94 -94
- data/lib/squib/builtin/layouts/playing-card.yml +35 -35
- data/lib/squib/builtin/layouts/tuck_box.yml +46 -46
- data/lib/squib/builtin/projects/advanced/.gitignore +4 -4
- data/lib/squib/builtin/projects/advanced/ABOUT.md +19 -19
- data/lib/squib/builtin/projects/advanced/Gemfile +11 -11
- data/lib/squib/builtin/projects/advanced/Guardfile +21 -21
- data/lib/squib/builtin/projects/advanced/IDEAS.md +22 -22
- data/lib/squib/builtin/projects/advanced/PLAYTESTING.md +26 -26
- data/lib/squib/builtin/projects/advanced/Rakefile +27 -27
- data/lib/squib/builtin/projects/advanced/config.yml +49 -49
- data/lib/squib/builtin/projects/advanced/docs/PNP NOTES.md +3 -3
- data/lib/squib/builtin/projects/advanced/docs/RULES.md +21 -21
- data/lib/squib/builtin/projects/advanced/img/example.svg +60 -60
- data/lib/squib/builtin/projects/advanced/layouts/deck.yml +27 -27
- data/lib/squib/builtin/projects/advanced/src/deck.rb +34 -34
- data/lib/squib/builtin/projects/advanced/src/version.rb +3 -3
- data/lib/squib/builtin/projects/basic/.gitignore +4 -4
- data/lib/squib/builtin/projects/basic/ABOUT.md +19 -19
- data/lib/squib/builtin/projects/basic/Gemfile +3 -3
- data/lib/squib/builtin/projects/basic/IDEAS.md +22 -22
- data/lib/squib/builtin/projects/basic/PLAYTESTING.md +26 -26
- data/lib/squib/builtin/projects/basic/PNP NOTES.md +3 -3
- data/lib/squib/builtin/projects/basic/RULES.md +21 -21
- data/lib/squib/builtin/projects/basic/Rakefile +7 -7
- data/lib/squib/builtin/projects/basic/config.yml +50 -50
- data/lib/squib/builtin/projects/basic/deck.rb +6 -6
- data/lib/squib/builtin/sprues/a4_euro_card.yml +42 -42
- data/lib/squib/builtin/sprues/a4_poker_card_8up.yml +40 -40
- data/lib/squib/builtin/sprues/a4_poker_card_9up.yml +42 -42
- data/lib/squib/builtin/sprues/a4_usa_card.yml +42 -42
- data/lib/squib/builtin/sprues/drivethrucards_1up.yml +10 -10
- data/lib/squib/builtin/sprues/letter_poker_card_9up.yml +25 -25
- data/lib/squib/builtin/sprues/letter_poker_foldable_8up.yml +52 -52
- data/lib/squib/builtin/sprues/printplaygames_18up.yml +68 -68
- data/lib/squib/card.rb +75 -75
- data/lib/squib/commands/cli.rb +39 -39
- data/lib/squib/commands/data/template_option.rb +109 -109
- data/lib/squib/commands/make_sprue.rb +277 -277
- data/lib/squib/commands/new.rb +77 -77
- data/lib/squib/conf.rb +149 -149
- data/lib/squib/constants.rb +17 -17
- data/lib/squib/deck.rb +138 -138
- data/lib/squib/dsl/background.rb +35 -35
- data/lib/squib/dsl/circle.rb +39 -39
- data/lib/squib/dsl/csv.rb +42 -42
- data/lib/squib/dsl/curve.rb +35 -35
- data/lib/squib/dsl/cut_zone.rb +47 -47
- data/lib/squib/dsl/ellipse.rb +37 -37
- data/lib/squib/dsl/grid.rb +35 -35
- data/lib/squib/dsl/groups.rb +54 -54
- data/lib/squib/dsl/hand.rb +42 -42
- data/lib/squib/dsl/line.rb +35 -35
- data/lib/squib/dsl/png.rb +57 -57
- data/lib/squib/dsl/polygon.rb +36 -36
- data/lib/squib/dsl/rect.rb +37 -37
- data/lib/squib/dsl/safe_zone.rb +48 -48
- data/lib/squib/dsl/save.rb +21 -21
- data/lib/squib/dsl/save_pdf.rb +50 -50
- data/lib/squib/dsl/save_png.rb +48 -48
- data/lib/squib/dsl/save_sheet.rb +53 -53
- data/lib/squib/dsl/showcase.rb +43 -43
- data/lib/squib/dsl/star.rb +37 -37
- data/lib/squib/dsl/svg.rb +63 -63
- data/lib/squib/dsl/text.rb +54 -54
- data/lib/squib/dsl/text_embed.rb +79 -79
- data/lib/squib/dsl/triangle.rb +35 -35
- data/lib/squib/dsl/units.rb +37 -37
- data/lib/squib/dsl/xlsx.rb +40 -40
- data/lib/squib/dsl/yaml.rb +40 -40
- data/lib/squib/errors_warnings/warn_unexpected_params.rb +14 -14
- data/lib/squib/graphics/background.rb +14 -14
- data/lib/squib/graphics/cairo_context_wrapper.rb +115 -115
- data/lib/squib/graphics/embedding_utils.rb +28 -28
- data/lib/squib/graphics/gradient_regex.rb +47 -47
- data/lib/squib/graphics/hand.rb +42 -42
- data/lib/squib/graphics/image.rb +123 -123
- data/lib/squib/graphics/save_doc.rb +77 -77
- data/lib/squib/graphics/save_images.rb +91 -91
- data/lib/squib/graphics/save_pdf.rb +90 -90
- data/lib/squib/graphics/save_sprue.rb +231 -231
- data/lib/squib/graphics/shapes.rb +143 -143
- data/lib/squib/graphics/showcase.rb +85 -85
- data/lib/squib/graphics/text.rb +202 -202
- data/lib/squib/import/csv_importer.rb +45 -45
- data/lib/squib/import/data_frame.rb +108 -108
- data/lib/squib/import/quantity_exploder.rb +17 -17
- data/lib/squib/import/xlsx_importer.rb +28 -28
- data/lib/squib/import/yaml_importer.rb +30 -30
- data/lib/squib/layout_parser.rb +155 -155
- data/lib/squib/progress.rb +38 -38
- data/lib/squib/sample_helpers.rb +34 -34
- data/lib/squib/sprues/crop_line.rb +28 -28
- data/lib/squib/sprues/crop_line_dash.rb +35 -35
- data/lib/squib/sprues/invalid_sprue_definition.rb +9 -9
- data/lib/squib/sprues/sprue.rb +208 -208
- data/lib/squib/sprues/sprue_schema.rb +51 -51
- data/lib/squib/system_fonts.rb +16 -16
- data/lib/squib/version.rb +11 -11
- data/lib/squib.rb +35 -35
- data/samples/autoscale_font/_autoscale_font.rb +98 -98
- data/samples/backend/_backend.rb +26 -26
- data/samples/basic.rb +19 -19
- data/samples/build_groups/build_groups.rb +36 -36
- data/samples/colors/_colors.rb +44 -44
- data/samples/colors/_gradients.rb +34 -34
- data/samples/colors/_switch_color.rb +33 -33
- data/samples/config/config_text_markup.rb +20 -20
- data/samples/config/custom_config.rb +18 -18
- data/samples/data/_csv.rb +33 -33
- data/samples/data/_excel.rb +55 -55
- data/samples/data/_yaml.rb +12 -12
- data/samples/hello_world.rb +6 -6
- data/samples/images/_cairo_access.rb +39 -39
- data/samples/images/_images.rb +104 -104
- data/samples/images/_more_load_images.rb +102 -102
- data/samples/images/_placeholders.rb +48 -48
- data/samples/intro/01_hello.rb +8 -8
- data/samples/intro/02_options.rb +14 -14
- data/samples/intro/03_layout.rb +11 -11
- data/samples/intro/04_arrays.rb +15 -15
- data/samples/intro/05_excel.rb +14 -14
- data/samples/layouts/builtin_layouts.rb +97 -97
- data/samples/layouts/layouts.rb +71 -71
- data/samples/project/src/characters.rb +8 -8
- data/samples/project/src/skills.rb +7 -7
- data/samples/proofs/_tgc_proofs.rb +16 -16
- data/samples/ranges/_ranges.rb +64 -64
- data/samples/saves/_hand.rb +23 -23
- data/samples/saves/_portrait_landscape.rb +23 -23
- data/samples/saves/_save_filenames.rb +28 -28
- data/samples/saves/_save_pdf.rb +29 -29
- data/samples/saves/_saves.rb +75 -75
- data/samples/saves/_showcase.rb +25 -25
- data/samples/shadows/_shadow.rb +71 -71
- data/samples/shapes/_draw_shapes.rb +60 -60
- data/samples/shapes/_proofs.rb +22 -22
- data/samples/sprues/_advanced_sprues.rb +25 -25
- data/samples/sprues/_builtin_sprues.rb +22 -22
- data/samples/sprues/_fold_sheet.rb +30 -30
- data/samples/sprues/_hex_tiles.rb +15 -15
- data/samples/sprues/_mints.rb +11 -11
- data/samples/sprues/_negative_coords.rb +6 -6
- data/samples/sprues/_sprue_example.rb +11 -11
- data/samples/system_font_debug/_list_fonts.rb +14 -14
- data/samples/text/_embed_text.rb +128 -128
- data/samples/text/_text.rb +52 -52
- data/samples/text/_text_options.rb +103 -103
- data/samples/text/bug134.rb +14 -14
- data/samples/units/_cells.rb +50 -50
- data/samples/units/_shorthands.rb +48 -48
- data/samples/units/_units.rb +39 -39
- data/squib.gemspec +58 -58
- metadata +21 -21
data/lib/squib/dsl/polygon.rb
CHANGED
|
@@ -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
|
data/lib/squib/dsl/rect.rb
CHANGED
|
@@ -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
|
data/lib/squib/dsl/safe_zone.rb
CHANGED
|
@@ -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
|
data/lib/squib/dsl/save.rb
CHANGED
|
@@ -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
|
data/lib/squib/dsl/save_pdf.rb
CHANGED
|
@@ -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
|
data/lib/squib/dsl/save_png.rb
CHANGED
|
@@ -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
|
data/lib/squib/dsl/save_sheet.rb
CHANGED
|
@@ -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
|
data/lib/squib/dsl/showcase.rb
CHANGED
|
@@ -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
|