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,37 +1,37 @@
1
- require_relative '../errors_warnings/warn_unexpected_params'
2
-
3
- module Squib
4
- class Deck
5
- def star(opts = {})
6
- DSL::Star.new(self, __callee__).run(opts)
7
- end
8
- end
9
-
10
- module DSL
11
- class Star
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
22
- inner_radius outer_radius angle
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
- coords = Args.extract_coords opts, deck
32
- trans = Args.extract_transform opts, deck
33
- range.each { |i| deck.cards[i].star(coords[i], trans[i], draw[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 star(opts = {})
6
+ DSL::Star.new(self, __callee__).run(opts)
7
+ end
8
+ end
9
+
10
+ module DSL
11
+ class Star
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
22
+ inner_radius outer_radius angle
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
+ coords = Args.extract_coords opts, deck
32
+ trans = Args.extract_transform opts, deck
33
+ range.each { |i| deck.cards[i].star(coords[i], trans[i], draw[i]) }
34
+ end
35
+ end
36
+ end
37
+ end
data/lib/squib/dsl/svg.rb CHANGED
@@ -1,63 +1,63 @@
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
- require_relative '../args/svg_special'
8
-
9
- module Squib
10
- class Deck
11
- def svg(opts = {})
12
- DSL::SVG.new(self, __callee__).run(opts)
13
- end
14
- end
15
-
16
- module DSL
17
- class SVG
18
- include WarnUnexpectedParams
19
- attr_reader :dsl_method, :deck
20
-
21
- def initialize(deck, dsl_method)
22
- @deck = deck
23
- @dsl_method = dsl_method
24
- end
25
-
26
- def self.accepted_params
27
- %i(
28
- file
29
- x y width height
30
- blend mask
31
- crop_x crop_y crop_width crop_height
32
- crop_corner_radius crop_corner_x_radius crop_corner_y_radius
33
- flip_horizontal flip_vertical angle
34
- id force_id data
35
- range layout
36
- placeholder
37
- )
38
- end
39
-
40
- def run(opts)
41
- warn_if_unexpected opts
42
- Dir.chdir(deck.img_dir) do
43
- range = Args.extract_range opts, deck
44
- paint = Args.extract_paint opts, deck
45
- box = Args.extract_scale_box opts, deck
46
- trans = Args.extract_transform opts, deck
47
- ifile = Args.extract_input_file opts, deck
48
- svg_args = Args.extract_svg_special opts, deck
49
- deck.progress_bar.start('Loading PNG(s)', range.size) do |bar|
50
- range.each do |i|
51
- if svg_args.render?(i)
52
- deck.cards[i].svg(ifile[i].file, svg_args[i], box[i], paint[i],
53
- trans[i])
54
- end
55
- bar.increment
56
- end
57
- end
58
- end
59
-
60
- end
61
- end
62
- end
63
- 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
+ require_relative '../args/svg_special'
8
+
9
+ module Squib
10
+ class Deck
11
+ def svg(opts = {})
12
+ DSL::SVG.new(self, __callee__).run(opts)
13
+ end
14
+ end
15
+
16
+ module DSL
17
+ class SVG
18
+ include WarnUnexpectedParams
19
+ attr_reader :dsl_method, :deck
20
+
21
+ def initialize(deck, dsl_method)
22
+ @deck = deck
23
+ @dsl_method = dsl_method
24
+ end
25
+
26
+ def self.accepted_params
27
+ %i(
28
+ file
29
+ x y width height
30
+ blend mask
31
+ crop_x crop_y crop_width crop_height
32
+ crop_corner_radius crop_corner_x_radius crop_corner_y_radius
33
+ flip_horizontal flip_vertical angle
34
+ id force_id data
35
+ range layout
36
+ placeholder
37
+ )
38
+ end
39
+
40
+ def run(opts)
41
+ warn_if_unexpected opts
42
+ Dir.chdir(deck.img_dir) do
43
+ range = Args.extract_range opts, deck
44
+ paint = Args.extract_paint opts, deck
45
+ box = Args.extract_scale_box opts, deck
46
+ trans = Args.extract_transform opts, deck
47
+ ifile = Args.extract_input_file opts, deck
48
+ svg_args = Args.extract_svg_special opts, deck
49
+ deck.progress_bar.start('Loading PNG(s)', range.size) do |bar|
50
+ range.each do |i|
51
+ if svg_args.render?(i)
52
+ deck.cards[i].svg(ifile[i].file, svg_args[i], box[i], paint[i],
53
+ trans[i])
54
+ end
55
+ bar.increment
56
+ end
57
+ end
58
+ end
59
+
60
+ end
61
+ end
62
+ end
63
+ end
@@ -1,54 +1,54 @@
1
- require_relative '../args/box'
2
- require_relative '../args/card_range'
3
- require_relative '../args/draw'
4
- require_relative '../args/paragraph'
5
- require_relative '../args/transform'
6
- require_relative '../dsl/text_embed'
7
- require_relative '../errors_warnings/warn_unexpected_params'
8
-
9
- module Squib
10
- class Deck
11
- def text(opts = {})
12
- embed = TextEmbed.new self, __callee__
13
- yield(embed) if block_given? # store the opts for later use
14
- DSL::Text.new(self, __callee__, embed).run(opts)
15
- end
16
- end
17
-
18
- module DSL
19
- class Text
20
- include WarnUnexpectedParams
21
- attr_reader :dsl_method, :deck, :embed
22
-
23
- def initialize(deck, dsl_method, embed)
24
- @deck = deck
25
- @dsl_method = dsl_method
26
- @embed = embed
27
- end
28
-
29
- def self.accepted_params
30
- %i(
31
- str font font_size x y markup width height
32
- wrap spacing align justify valign ellipsize angle dash cap join
33
- hint color fill_color
34
- stroke_color stroke_width stroke_width stroke_color stroke_strategy
35
- range layout
36
- )
37
- end
38
-
39
- def run(opts)
40
- warn_if_unexpected opts
41
- range = Args.extract_range opts, deck
42
- para = Args.extract_para opts, deck
43
- box = Args.extract_box opts, deck, { width: :auto, height: :auto }
44
- trans = Args.extract_transform opts, deck
45
- draw = Args.extract_draw opts, deck, { stroke_width: 0.0 }
46
- extents = Array.new(deck.size)
47
- range.each do |i|
48
- extents[i] = deck.cards[i].text(embed, para[i], box[i], trans[i], draw[i], deck.dpi)
49
- end
50
- return extents
51
- end
52
- end
53
- end
54
- end
1
+ require_relative '../args/box'
2
+ require_relative '../args/card_range'
3
+ require_relative '../args/draw'
4
+ require_relative '../args/paragraph'
5
+ require_relative '../args/transform'
6
+ require_relative '../dsl/text_embed'
7
+ require_relative '../errors_warnings/warn_unexpected_params'
8
+
9
+ module Squib
10
+ class Deck
11
+ def text(opts = {})
12
+ embed = TextEmbed.new self, __callee__
13
+ yield(embed) if block_given? # store the opts for later use
14
+ DSL::Text.new(self, __callee__, embed).run(opts)
15
+ end
16
+ end
17
+
18
+ module DSL
19
+ class Text
20
+ include WarnUnexpectedParams
21
+ attr_reader :dsl_method, :deck, :embed
22
+
23
+ def initialize(deck, dsl_method, embed)
24
+ @deck = deck
25
+ @dsl_method = dsl_method
26
+ @embed = embed
27
+ end
28
+
29
+ def self.accepted_params
30
+ %i(
31
+ str font font_size x y markup width height
32
+ wrap spacing align justify valign ellipsize angle dash cap join
33
+ hint color fill_color
34
+ stroke_color stroke_width stroke_width stroke_color stroke_strategy
35
+ range layout
36
+ )
37
+ end
38
+
39
+ def run(opts)
40
+ warn_if_unexpected opts
41
+ range = Args.extract_range opts, deck
42
+ para = Args.extract_para opts, deck
43
+ box = Args.extract_box opts, deck, { width: :auto, height: :auto }
44
+ trans = Args.extract_transform opts, deck
45
+ draw = Args.extract_draw opts, deck, { stroke_width: 0.0 }
46
+ extents = Array.new(deck.size)
47
+ range.each do |i|
48
+ extents[i] = deck.cards[i].text(embed, para[i], box[i], trans[i], draw[i], deck.dpi)
49
+ end
50
+ return extents
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,79 +1,79 @@
1
- require_relative '../args/box'
2
- require_relative '../args/card_range'
3
- require_relative '../args/embed_adjust'
4
- require_relative '../args/embed_key'
5
- require_relative '../args/input_file'
6
- require_relative '../args/paint'
7
- require_relative '../args/transform'
8
- require_relative '../errors_warnings/warn_unexpected_params'
9
-
10
- module Squib
11
- class TextEmbed
12
- include WarnUnexpectedParams
13
- attr_reader :rules, :deck, :dsl_method
14
-
15
- def initialize(deck, dsl_method)
16
- @deck = deck
17
- @rules = {} # store an array of options for later usage
18
- end
19
-
20
- def self.accepted_params
21
- %i(
22
- key file id force_id layout width height dx dy
23
- id force_id data
24
- flip_horizontal flip_vertical
25
- alpha angle blend mask
26
- placeholder
27
- )
28
- end
29
-
30
- def svg(opts = {})
31
- warn_if_unexpected opts
32
- key = Args::EmbedKey.new.validate_key(opts[:key])
33
- range = Args.extract_range opts, deck
34
- paint = Args.extract_paint opts, deck
35
- box = Args.extract_box opts, deck, { width: :native, height: :native }
36
- adjust = Args::EmbedAdjust.new.load!(opts, expand_by: deck.size, layout: deck.layout, dpi: deck.dpi)
37
- trans = Args.extract_transform opts, deck
38
- ifile = Args.extract_input_file opts, deck
39
- svg_args = Args.extract_svg_special opts, deck
40
- rule = { type: :svg, file: ifile, box: box, paint: paint, trans: trans,
41
- adjust: adjust, svg_args: svg_args }
42
- rule[:draw] = Proc.new do |card, x, y, scale|
43
- i = card.index
44
- b = box[i]
45
- b.x, b.y = x, y
46
- b.width = b.width * scale if b.width.is_a? Numeric
47
- b.height = b.height * scale if b.height.is_a? Numeric
48
- Dir.chdir(deck.img_dir) do
49
- card.svg(ifile[i].file, svg_args[i], b, paint[i], trans[i])
50
- end
51
- end
52
- @rules[key] = rule
53
- end
54
-
55
- def png(opts = {})
56
- warn_if_unexpected opts
57
- key = Args::EmbedKey.new.validate_key(opts[:key])
58
- range = Args.extract_range opts, deck
59
- paint = Args.extract_paint opts, deck
60
- box = Args.extract_box opts, deck, { width: :native, height: :native }
61
- adjust = Args::EmbedAdjust.new.load!(opts, expand_by: deck.size, layout: deck.layout, dpi: deck.dpi)
62
- trans = Args.extract_transform opts, deck
63
- ifile = Args.extract_input_file opts, deck
64
- rule = { type: :png, file: ifile, box: box, paint: paint, trans: trans, adjust: adjust }
65
- rule[:draw] = Proc.new do |card, x, y, scale|
66
- i = card.index
67
- b = box[i]
68
- b.x, b.y = x, y
69
- b.width = b.width * scale if b.width.is_a? Numeric
70
- b.height = b.height * scale if b.height.is_a? Numeric
71
- Dir.chdir(deck.img_dir) do
72
- card.png(ifile[i].file, b, paint[i], trans[i])
73
- end
74
- end
75
- @rules[key] = rule
76
- end
77
-
78
- end
79
- end
1
+ require_relative '../args/box'
2
+ require_relative '../args/card_range'
3
+ require_relative '../args/embed_adjust'
4
+ require_relative '../args/embed_key'
5
+ require_relative '../args/input_file'
6
+ require_relative '../args/paint'
7
+ require_relative '../args/transform'
8
+ require_relative '../errors_warnings/warn_unexpected_params'
9
+
10
+ module Squib
11
+ class TextEmbed
12
+ include WarnUnexpectedParams
13
+ attr_reader :rules, :deck, :dsl_method
14
+
15
+ def initialize(deck, dsl_method)
16
+ @deck = deck
17
+ @rules = {} # store an array of options for later usage
18
+ end
19
+
20
+ def self.accepted_params
21
+ %i(
22
+ key file id force_id layout width height dx dy
23
+ id force_id data
24
+ flip_horizontal flip_vertical
25
+ alpha angle blend mask
26
+ placeholder
27
+ )
28
+ end
29
+
30
+ def svg(opts = {})
31
+ warn_if_unexpected opts
32
+ key = Args::EmbedKey.new.validate_key(opts[:key])
33
+ range = Args.extract_range opts, deck
34
+ paint = Args.extract_paint opts, deck
35
+ box = Args.extract_box opts, deck, { width: :native, height: :native }
36
+ adjust = Args::EmbedAdjust.new.load!(opts, expand_by: deck.size, layout: deck.layout, dpi: deck.dpi)
37
+ trans = Args.extract_transform opts, deck
38
+ ifile = Args.extract_input_file opts, deck
39
+ svg_args = Args.extract_svg_special opts, deck
40
+ rule = { type: :svg, file: ifile, box: box, paint: paint, trans: trans,
41
+ adjust: adjust, svg_args: svg_args }
42
+ rule[:draw] = Proc.new do |card, x, y, scale|
43
+ i = card.index
44
+ b = box[i]
45
+ b.x, b.y = x, y
46
+ b.width = b.width * scale if b.width.is_a? Numeric
47
+ b.height = b.height * scale if b.height.is_a? Numeric
48
+ Dir.chdir(deck.img_dir) do
49
+ card.svg(ifile[i].file, svg_args[i], b, paint[i], trans[i])
50
+ end
51
+ end
52
+ @rules[key] = rule
53
+ end
54
+
55
+ def png(opts = {})
56
+ warn_if_unexpected opts
57
+ key = Args::EmbedKey.new.validate_key(opts[:key])
58
+ range = Args.extract_range opts, deck
59
+ paint = Args.extract_paint opts, deck
60
+ box = Args.extract_box opts, deck, { width: :native, height: :native }
61
+ adjust = Args::EmbedAdjust.new.load!(opts, expand_by: deck.size, layout: deck.layout, dpi: deck.dpi)
62
+ trans = Args.extract_transform opts, deck
63
+ ifile = Args.extract_input_file opts, deck
64
+ rule = { type: :png, file: ifile, box: box, paint: paint, trans: trans, adjust: adjust }
65
+ rule[:draw] = Proc.new do |card, x, y, scale|
66
+ i = card.index
67
+ b = box[i]
68
+ b.x, b.y = x, y
69
+ b.width = b.width * scale if b.width.is_a? Numeric
70
+ b.height = b.height * scale if b.height.is_a? Numeric
71
+ Dir.chdir(deck.img_dir) do
72
+ card.png(ifile[i].file, b, paint[i], trans[i])
73
+ end
74
+ end
75
+ @rules[key] = rule
76
+ end
77
+
78
+ end
79
+ end
@@ -1,35 +1,35 @@
1
- require_relative '../errors_warnings/warn_unexpected_params'
2
-
3
- module Squib
4
- class Deck
5
- def triangle(opts = {})
6
- DSL::Triangle.new(self, __callee__).run(opts)
7
- end
8
- end
9
-
10
- module DSL
11
- class Triangle
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 x3 y3
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].triangle(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 triangle(opts = {})
6
+ DSL::Triangle.new(self, __callee__).run(opts)
7
+ end
8
+ end
9
+
10
+ module DSL
11
+ class Triangle
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 x3 y3
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].triangle(coords[i], draw[i]) }
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,37 +1,37 @@
1
- require_relative '../constants'
2
-
3
- module Squib
4
- class Deck
5
-
6
- # DSL method. See http://squib.readthedocs.io
7
- def inches(n)
8
- @dpi * n.to_f
9
- end
10
-
11
- # DSL method. See http://squib.readthedocs.io
12
- def points(n)
13
- @dpi / Squib::POINTS_PER_IN * n.to_f
14
- end
15
-
16
- # DSL method. See http://squib.readthedocs.io
17
- def cm(n)
18
- @dpi * Squib::INCHES_IN_CM * n.to_f
19
- end
20
-
21
- # DSL method. See http://squib.readthedocs.io
22
- def mm(n)
23
- @dpi * Squib::INCHES_IN_CM * n.to_f / 10.0
24
- end
25
-
26
- # DSL method. See http://squib.readthedocs.io
27
- def deg(n)
28
- n.to_f * (Math::PI / 180.0)
29
- end
30
-
31
- # DSL method. See http://squib.readthedocs.io
32
- def cells(n)
33
- n.to_f * @cell_px
34
- end
35
-
36
- end
37
- end
1
+ require_relative '../constants'
2
+
3
+ module Squib
4
+ class Deck
5
+
6
+ # DSL method. See http://squib.readthedocs.io
7
+ def inches(n)
8
+ @dpi * n.to_f
9
+ end
10
+
11
+ # DSL method. See http://squib.readthedocs.io
12
+ def points(n)
13
+ @dpi / Squib::POINTS_PER_IN * n.to_f
14
+ end
15
+
16
+ # DSL method. See http://squib.readthedocs.io
17
+ def cm(n)
18
+ @dpi * Squib::INCHES_IN_CM * n.to_f
19
+ end
20
+
21
+ # DSL method. See http://squib.readthedocs.io
22
+ def mm(n)
23
+ @dpi * Squib::INCHES_IN_CM * n.to_f / 10.0
24
+ end
25
+
26
+ # DSL method. See http://squib.readthedocs.io
27
+ def deg(n)
28
+ n.to_f * (Math::PI / 180.0)
29
+ end
30
+
31
+ # DSL method. See http://squib.readthedocs.io
32
+ def cells(n)
33
+ n.to_f * @cell_px
34
+ end
35
+
36
+ end
37
+ end