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/cut_zone.rb
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
require_relative '../errors_warnings/warn_unexpected_params'
|
|
2
|
-
|
|
3
|
-
module Squib
|
|
4
|
-
class Deck
|
|
5
|
-
def cut_zone(opts = {})
|
|
6
|
-
DSL::CutZone.new(self, __callee__).run(opts)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
module DSL
|
|
11
|
-
class CutZone
|
|
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
|
-
cut_defaults = {
|
|
30
|
-
margin: '0.125in',
|
|
31
|
-
radius: '0.125in',
|
|
32
|
-
stroke_color: :red,
|
|
33
|
-
fill_color: '#0000',
|
|
34
|
-
stroke_width: 2.0,
|
|
35
|
-
}
|
|
36
|
-
new_opts = cut_defaults.merge(opts)
|
|
37
|
-
margin = Args::UnitConversion.parse new_opts[:margin], @deck.dpi, @deck.cell_px
|
|
38
|
-
new_opts[:x] = margin
|
|
39
|
-
new_opts[:y] = margin
|
|
40
|
-
new_opts[:width] = deck.width - (2 * margin)
|
|
41
|
-
new_opts[:height] = deck.height - (2 * margin)
|
|
42
|
-
new_opts.delete :margin
|
|
43
|
-
deck.rect new_opts
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
1
|
+
require_relative '../errors_warnings/warn_unexpected_params'
|
|
2
|
+
|
|
3
|
+
module Squib
|
|
4
|
+
class Deck
|
|
5
|
+
def cut_zone(opts = {})
|
|
6
|
+
DSL::CutZone.new(self, __callee__).run(opts)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
module DSL
|
|
11
|
+
class CutZone
|
|
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
|
+
cut_defaults = {
|
|
30
|
+
margin: '0.125in',
|
|
31
|
+
radius: '0.125in',
|
|
32
|
+
stroke_color: :red,
|
|
33
|
+
fill_color: '#0000',
|
|
34
|
+
stroke_width: 2.0,
|
|
35
|
+
}
|
|
36
|
+
new_opts = cut_defaults.merge(opts)
|
|
37
|
+
margin = Args::UnitConversion.parse new_opts[:margin], @deck.dpi, @deck.cell_px
|
|
38
|
+
new_opts[:x] = margin
|
|
39
|
+
new_opts[:y] = margin
|
|
40
|
+
new_opts[:width] = deck.width - (2 * margin)
|
|
41
|
+
new_opts[:height] = deck.height - (2 * margin)
|
|
42
|
+
new_opts.delete :margin
|
|
43
|
+
deck.rect new_opts
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/squib/dsl/ellipse.rb
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
require_relative '../errors_warnings/warn_unexpected_params'
|
|
2
|
-
|
|
3
|
-
module Squib
|
|
4
|
-
class Deck
|
|
5
|
-
def ellipse(opts = {})
|
|
6
|
-
DSL::Ellipse.new(self, __callee__).run(opts)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
module DSL
|
|
11
|
-
class Ellipse
|
|
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
|
-
angle
|
|
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].ellipse(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 ellipse(opts = {})
|
|
6
|
+
DSL::Ellipse.new(self, __callee__).run(opts)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
module DSL
|
|
11
|
+
class Ellipse
|
|
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
|
+
angle
|
|
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].ellipse(box[i], draw[i], trans[i]) }
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
data/lib/squib/dsl/grid.rb
CHANGED
|
@@ -1,35 +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
|
|
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
|
data/lib/squib/dsl/groups.rb
CHANGED
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
require 'set'
|
|
2
|
-
|
|
3
|
-
module Squib
|
|
4
|
-
|
|
5
|
-
# DSL method. See http://squib.readthedocs.io
|
|
6
|
-
def enable_build_globally group
|
|
7
|
-
groups = (ENV['SQUIB_BUILD'] ||= '').split(',')
|
|
8
|
-
ENV['SQUIB_BUILD'] = (groups << group).uniq.join(',')
|
|
9
|
-
end
|
|
10
|
-
module_function :enable_build_globally
|
|
11
|
-
|
|
12
|
-
# DSL method. See http://squib.readthedocs.io
|
|
13
|
-
def disable_build_globally group
|
|
14
|
-
groups = (ENV['SQUIB_BUILD'] ||= '').split(',')
|
|
15
|
-
groups.delete(group.to_s)
|
|
16
|
-
ENV['SQUIB_BUILD'] = groups.uniq.join(',')
|
|
17
|
-
end
|
|
18
|
-
module_function :disable_build_globally
|
|
19
|
-
|
|
20
|
-
class Deck
|
|
21
|
-
|
|
22
|
-
# DSL method. See http://squib.readthedocs.io
|
|
23
|
-
def build grp = :all, &block
|
|
24
|
-
raise 'Please provide a block' unless block_given?
|
|
25
|
-
block.yield if build_groups.include? grp
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# DSL method. See http://squib.readthedocs.io
|
|
29
|
-
def enable_build grp
|
|
30
|
-
build_groups # make sure it's initialized
|
|
31
|
-
@build_groups << grp
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# DSL method. See http://squib.readthedocs.io
|
|
35
|
-
def disable_build grp
|
|
36
|
-
build_groups # make sure it's initialized
|
|
37
|
-
@build_groups.delete grp
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# DSL method. See http://squib.readthedocs.io
|
|
41
|
-
def build_groups
|
|
42
|
-
@build_groups ||= Set.new.add(:all)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Not a DSL method, but initialized from Deck.new
|
|
46
|
-
def enable_groups_from_env!
|
|
47
|
-
return if ENV['SQUIB_BUILD'].nil?
|
|
48
|
-
ENV['SQUIB_BUILD'].split(',').each do |grp|
|
|
49
|
-
enable_build grp.strip.to_sym
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
end
|
|
1
|
+
require 'set'
|
|
2
|
+
|
|
3
|
+
module Squib
|
|
4
|
+
|
|
5
|
+
# DSL method. See http://squib.readthedocs.io
|
|
6
|
+
def enable_build_globally group
|
|
7
|
+
groups = (ENV['SQUIB_BUILD'] ||= '').split(',')
|
|
8
|
+
ENV['SQUIB_BUILD'] = (groups << group).uniq.join(',')
|
|
9
|
+
end
|
|
10
|
+
module_function :enable_build_globally
|
|
11
|
+
|
|
12
|
+
# DSL method. See http://squib.readthedocs.io
|
|
13
|
+
def disable_build_globally group
|
|
14
|
+
groups = (ENV['SQUIB_BUILD'] ||= '').split(',')
|
|
15
|
+
groups.delete(group.to_s)
|
|
16
|
+
ENV['SQUIB_BUILD'] = groups.uniq.join(',')
|
|
17
|
+
end
|
|
18
|
+
module_function :disable_build_globally
|
|
19
|
+
|
|
20
|
+
class Deck
|
|
21
|
+
|
|
22
|
+
# DSL method. See http://squib.readthedocs.io
|
|
23
|
+
def build grp = :all, &block
|
|
24
|
+
raise 'Please provide a block' unless block_given?
|
|
25
|
+
block.yield if build_groups.include? grp
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# DSL method. See http://squib.readthedocs.io
|
|
29
|
+
def enable_build grp
|
|
30
|
+
build_groups # make sure it's initialized
|
|
31
|
+
@build_groups << grp
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# DSL method. See http://squib.readthedocs.io
|
|
35
|
+
def disable_build grp
|
|
36
|
+
build_groups # make sure it's initialized
|
|
37
|
+
@build_groups.delete grp
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# DSL method. See http://squib.readthedocs.io
|
|
41
|
+
def build_groups
|
|
42
|
+
@build_groups ||= Set.new.add(:all)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Not a DSL method, but initialized from Deck.new
|
|
46
|
+
def enable_groups_from_env!
|
|
47
|
+
return if ENV['SQUIB_BUILD'].nil?
|
|
48
|
+
ENV['SQUIB_BUILD'].split(',').each do |grp|
|
|
49
|
+
enable_build grp.strip.to_sym
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
data/lib/squib/dsl/hand.rb
CHANGED
|
@@ -1,42 +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
|
|
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
|
data/lib/squib/dsl/line.rb
CHANGED
|
@@ -1,35 +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
|
|
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
|
data/lib/squib/dsl/png.rb
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
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
|
-
placeholder
|
|
35
|
-
)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def run(opts)
|
|
39
|
-
warn_if_unexpected opts
|
|
40
|
-
Dir.chdir(deck.img_dir) do
|
|
41
|
-
range = Args.extract_range opts, deck
|
|
42
|
-
paint = Args.extract_paint opts, deck
|
|
43
|
-
box = Args.extract_scale_box opts, deck
|
|
44
|
-
trans = Args.extract_transform opts, deck
|
|
45
|
-
ifile = Args.extract_input_file opts, deck
|
|
46
|
-
deck.progress_bar.start('Loading PNG(s)', range.size) do |bar|
|
|
47
|
-
range.each do |i|
|
|
48
|
-
deck.cards[i].png(ifile[i].file, box[i], paint[i], trans[i])
|
|
49
|
-
bar.increment
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
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
|
+
placeholder
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def run(opts)
|
|
39
|
+
warn_if_unexpected opts
|
|
40
|
+
Dir.chdir(deck.img_dir) do
|
|
41
|
+
range = Args.extract_range opts, deck
|
|
42
|
+
paint = Args.extract_paint opts, deck
|
|
43
|
+
box = Args.extract_scale_box opts, deck
|
|
44
|
+
trans = Args.extract_transform opts, deck
|
|
45
|
+
ifile = Args.extract_input_file opts, deck
|
|
46
|
+
deck.progress_bar.start('Loading PNG(s)', range.size) do |bar|
|
|
47
|
+
range.each do |i|
|
|
48
|
+
deck.cards[i].png(ifile[i].file, box[i], paint[i], trans[i])
|
|
49
|
+
bar.increment
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|