squib 0.15.2 → 0.15.3

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 (165) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +41 -41
  3. data/.travis.yml +17 -17
  4. data/CHANGELOG.md +400 -395
  5. data/CONTRIBUTING.md +40 -40
  6. data/Dockerfile +25 -25
  7. data/Gemfile +2 -2
  8. data/LICENSE.txt +22 -22
  9. data/README.md +145 -145
  10. data/RELEASE TODO.md +21 -21
  11. data/Rakefile +48 -48
  12. data/appveyor.yml +25 -25
  13. data/bin/squib +4 -4
  14. data/lib/squib.rb +32 -32
  15. data/lib/squib/api/background.rb +15 -15
  16. data/lib/squib/api/data.rb +137 -137
  17. data/lib/squib/api/groups.rb +54 -54
  18. data/lib/squib/api/image.rb +49 -49
  19. data/lib/squib/api/save.rb +83 -83
  20. data/lib/squib/api/settings.rb +21 -21
  21. data/lib/squib/api/shapes.rb +124 -124
  22. data/lib/squib/api/text.rb +25 -25
  23. data/lib/squib/api/text_embed.rb +71 -71
  24. data/lib/squib/api/units.rb +27 -27
  25. data/lib/squib/args/arg_loader.rb +126 -126
  26. data/lib/squib/args/box.rb +55 -55
  27. data/lib/squib/args/card_range.rb +32 -32
  28. data/lib/squib/args/color_validator.rb +12 -12
  29. data/lib/squib/args/coords.rb +35 -35
  30. data/lib/squib/args/csv_opts.rb +25 -25
  31. data/lib/squib/args/dir_validator.rb +16 -16
  32. data/lib/squib/args/draw.rb +92 -92
  33. data/lib/squib/args/embed_adjust.rb +25 -25
  34. data/lib/squib/args/embed_key.rb +17 -17
  35. data/lib/squib/args/hand_special.rb +37 -37
  36. data/lib/squib/args/import.rb +40 -40
  37. data/lib/squib/args/input_file.rb +37 -37
  38. data/lib/squib/args/paint.rb +44 -44
  39. data/lib/squib/args/paragraph.rb +116 -116
  40. data/lib/squib/args/save_batch.rb +63 -63
  41. data/lib/squib/args/scale_box.rb +53 -53
  42. data/lib/squib/args/sheet.rb +172 -172
  43. data/lib/squib/args/showcase_special.rb +41 -41
  44. data/lib/squib/args/sprue_file.rb +44 -44
  45. data/lib/squib/args/svg_special.rb +37 -37
  46. data/lib/squib/args/transform.rb +61 -61
  47. data/lib/squib/args/typographer.rb +119 -119
  48. data/lib/squib/args/unit_conversion.rb +29 -29
  49. data/lib/squib/builtin/layouts/economy.yml +85 -85
  50. data/lib/squib/builtin/layouts/fantasy.yml +101 -101
  51. data/lib/squib/builtin/layouts/hand.yml +62 -62
  52. data/lib/squib/builtin/layouts/party.yml +94 -94
  53. data/lib/squib/builtin/layouts/playing-card.yml +35 -35
  54. data/lib/squib/builtin/layouts/tuck_box.yml +46 -46
  55. data/lib/squib/builtin/projects/advanced/.gitignore +4 -4
  56. data/lib/squib/builtin/projects/advanced/ABOUT.md +19 -19
  57. data/lib/squib/builtin/projects/advanced/Gemfile +11 -11
  58. data/lib/squib/builtin/projects/advanced/Guardfile +21 -21
  59. data/lib/squib/builtin/projects/advanced/IDEAS.md +22 -22
  60. data/lib/squib/builtin/projects/advanced/PLAYTESTING.md +26 -26
  61. data/lib/squib/builtin/projects/advanced/Rakefile +27 -27
  62. data/lib/squib/builtin/projects/advanced/config.yml +49 -49
  63. data/lib/squib/builtin/projects/advanced/docs/PNP NOTES.md +3 -3
  64. data/lib/squib/builtin/projects/advanced/docs/RULES.md +21 -21
  65. data/lib/squib/builtin/projects/advanced/img/example.svg +60 -60
  66. data/lib/squib/builtin/projects/advanced/layouts/deck.yml +27 -27
  67. data/lib/squib/builtin/projects/advanced/src/deck.rb +34 -34
  68. data/lib/squib/builtin/projects/advanced/src/version.rb +3 -3
  69. data/lib/squib/builtin/projects/basic/.gitignore +4 -4
  70. data/lib/squib/builtin/projects/basic/ABOUT.md +19 -19
  71. data/lib/squib/builtin/projects/basic/Gemfile +3 -3
  72. data/lib/squib/builtin/projects/basic/IDEAS.md +22 -22
  73. data/lib/squib/builtin/projects/basic/PLAYTESTING.md +26 -26
  74. data/lib/squib/builtin/projects/basic/PNP NOTES.md +3 -3
  75. data/lib/squib/builtin/projects/basic/RULES.md +21 -21
  76. data/lib/squib/builtin/projects/basic/Rakefile +7 -7
  77. data/lib/squib/builtin/projects/basic/config.yml +49 -49
  78. data/lib/squib/builtin/projects/basic/deck.rb +6 -6
  79. data/lib/squib/builtin/sprues/a4_euro_card.yml +42 -42
  80. data/lib/squib/builtin/sprues/a4_poker_card_8up.yml +40 -40
  81. data/lib/squib/builtin/sprues/a4_poker_card_9up.yml +42 -42
  82. data/lib/squib/builtin/sprues/a4_usa_card.yml +42 -42
  83. data/lib/squib/builtin/sprues/drivethrucards_1up.yml +10 -10
  84. data/lib/squib/builtin/sprues/letter_poker_card_9up.yml +25 -25
  85. data/lib/squib/builtin/sprues/letter_poker_foldable_8up.yml +52 -52
  86. data/lib/squib/builtin/sprues/printplaygames_18up.yml +68 -68
  87. data/lib/squib/card.rb +75 -75
  88. data/lib/squib/commands/cli.rb +39 -39
  89. data/lib/squib/commands/data/template_option.rb +109 -109
  90. data/lib/squib/commands/make_sprue.rb +277 -277
  91. data/lib/squib/commands/new.rb +77 -77
  92. data/lib/squib/conf.rb +139 -139
  93. data/lib/squib/constants.rb +17 -17
  94. data/lib/squib/deck.rb +116 -116
  95. data/lib/squib/graphics/background.rb +14 -14
  96. data/lib/squib/graphics/cairo_context_wrapper.rb +113 -113
  97. data/lib/squib/graphics/embedding_utils.rb +28 -28
  98. data/lib/squib/graphics/gradient_regex.rb +47 -47
  99. data/lib/squib/graphics/hand.rb +42 -42
  100. data/lib/squib/graphics/image.rb +123 -123
  101. data/lib/squib/graphics/save_doc.rb +61 -61
  102. data/lib/squib/graphics/save_images.rb +52 -52
  103. data/lib/squib/graphics/save_pdf.rb +90 -90
  104. data/lib/squib/graphics/save_sprue.rb +219 -219
  105. data/lib/squib/graphics/shapes.rb +143 -143
  106. data/lib/squib/graphics/showcase.rb +85 -85
  107. data/lib/squib/graphics/text.rb +174 -174
  108. data/lib/squib/import/data_frame.rb +108 -108
  109. data/lib/squib/layout_parser.rb +138 -138
  110. data/lib/squib/progress.rb +38 -38
  111. data/lib/squib/sample_helpers.rb +34 -34
  112. data/lib/squib/sprues/crop_line.rb +28 -28
  113. data/lib/squib/sprues/crop_line_dash.rb +35 -35
  114. data/lib/squib/sprues/invalid_sprue_definition.rb +9 -9
  115. data/lib/squib/sprues/sprue.rb +206 -206
  116. data/lib/squib/sprues/sprue_schema.rb +50 -50
  117. data/lib/squib/version.rb +10 -10
  118. data/samples/autoscale_font/_autoscale_font.rb +29 -29
  119. data/samples/backend/_backend.rb +26 -26
  120. data/samples/basic.rb +19 -19
  121. data/samples/build_groups/build_groups.rb +36 -36
  122. data/samples/colors/_colors.rb +44 -44
  123. data/samples/colors/_gradients.rb +34 -34
  124. data/samples/colors/_switch_color.rb +33 -33
  125. data/samples/config/config_text_markup.rb +20 -20
  126. data/samples/config/custom_config.rb +18 -18
  127. data/samples/data/_csv.rb +33 -33
  128. data/samples/data/_excel.rb +55 -55
  129. data/samples/data/_yaml.rb +12 -12
  130. data/samples/hello_world.rb +6 -6
  131. data/samples/images/_cairo_access.rb +39 -39
  132. data/samples/images/_images.rb +104 -104
  133. data/samples/images/_more_load_images.rb +102 -102
  134. data/samples/intro/01_hello.rb +8 -8
  135. data/samples/intro/02_options.rb +14 -14
  136. data/samples/intro/03_layout.rb +11 -11
  137. data/samples/intro/04_arrays.rb +15 -15
  138. data/samples/intro/05_excel.rb +14 -14
  139. data/samples/layouts/builtin_layouts.rb +97 -97
  140. data/samples/layouts/layouts.rb +71 -71
  141. data/samples/project/src/characters.rb +8 -8
  142. data/samples/project/src/skills.rb +7 -7
  143. data/samples/proofs/_tgc_proofs.rb +16 -16
  144. data/samples/ranges/_ranges.rb +64 -64
  145. data/samples/saves/_hand.rb +23 -23
  146. data/samples/saves/_portrait_landscape.rb +23 -23
  147. data/samples/saves/_save_filenames.rb +24 -24
  148. data/samples/saves/_save_pdf.rb +29 -29
  149. data/samples/saves/_saves.rb +51 -51
  150. data/samples/saves/_showcase.rb +25 -25
  151. data/samples/shapes/_draw_shapes.rb +60 -60
  152. data/samples/shapes/_proofs.rb +22 -22
  153. data/samples/sprues/_advanced_sprues.rb +25 -25
  154. data/samples/sprues/_builtin_sprues.rb +21 -21
  155. data/samples/sprues/_fold_sheet.rb +27 -27
  156. data/samples/sprues/_hex_tiles.rb +15 -15
  157. data/samples/sprues/_mints.rb +11 -11
  158. data/samples/sprues/_sprue_example.rb +11 -11
  159. data/samples/text/_embed_text.rb +128 -128
  160. data/samples/text/_text.rb +47 -47
  161. data/samples/text/_text_options.rb +102 -102
  162. data/samples/text/bug134.rb +14 -14
  163. data/samples/units/_units.rb +32 -32
  164. data/squib.gemspec +52 -52
  165. metadata +62 -63
@@ -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
@@ -1,49 +1,49 @@
1
- require_relative '../args/card_range'
2
- require_relative '../args/paint'
3
- require_relative '../args/scale_box'
4
- require_relative '../args/transform'
5
- require_relative '../args/input_file'
6
- require_relative '../args/svg_special'
7
-
8
- module Squib
9
- class Deck
10
-
11
- # DSL method. See http://squib.readthedocs.io
12
- def png(opts = {})
13
- Dir.chdir(img_dir) do
14
- range = Args::CardRange.new(opts[:range], deck_size: size)
15
- paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout)
16
- box = Args::ScaleBox.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
17
- trans = Args::Transform.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
18
- ifile = Args::InputFile.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
19
- @progress_bar.start('Loading PNG(s)', range.size) do |bar|
20
- range.each do |i|
21
- @cards[i].png(ifile[i].file, box[i], paint[i], trans[i])
22
- bar.increment
23
- end
24
- end
25
- end
26
- end
27
-
28
- # DSL method. See http://squib.readthedocs.io
29
- def svg(opts = {})
30
- Dir.chdir(img_dir) do
31
- range = Args::CardRange.new(opts[:range], deck_size: size)
32
- paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout)
33
- box = Args::ScaleBox.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
34
- trans = Args::Transform.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
35
- ifile = Args::InputFile.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
36
- svg_args = Args::SvgSpecial.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
37
- @progress_bar.start('Loading SVG(s)', range.size) do |bar|
38
- range.each do |i|
39
- if svg_args.render?(i)
40
- @cards[i].svg(ifile[i].file, svg_args[i], box[i], paint[i], trans[i])
41
- end
42
- bar.increment
43
- end
44
- end
45
- end
46
- end
47
-
48
- end
49
- end
1
+ require_relative '../args/card_range'
2
+ require_relative '../args/paint'
3
+ require_relative '../args/scale_box'
4
+ require_relative '../args/transform'
5
+ require_relative '../args/input_file'
6
+ require_relative '../args/svg_special'
7
+
8
+ module Squib
9
+ class Deck
10
+
11
+ # DSL method. See http://squib.readthedocs.io
12
+ def png(opts = {})
13
+ Dir.chdir(img_dir) do
14
+ range = Args::CardRange.new(opts[:range], deck_size: size)
15
+ paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout)
16
+ box = Args::ScaleBox.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
17
+ trans = Args::Transform.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
18
+ ifile = Args::InputFile.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
19
+ @progress_bar.start('Loading PNG(s)', range.size) do |bar|
20
+ range.each do |i|
21
+ @cards[i].png(ifile[i].file, box[i], paint[i], trans[i])
22
+ bar.increment
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ # DSL method. See http://squib.readthedocs.io
29
+ def svg(opts = {})
30
+ Dir.chdir(img_dir) do
31
+ range = Args::CardRange.new(opts[:range], deck_size: size)
32
+ paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout)
33
+ box = Args::ScaleBox.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
34
+ trans = Args::Transform.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
35
+ ifile = Args::InputFile.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
36
+ svg_args = Args::SvgSpecial.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
37
+ @progress_bar.start('Loading SVG(s)', range.size) do |bar|
38
+ range.each do |i|
39
+ if svg_args.render?(i)
40
+ @cards[i].svg(ifile[i].file, svg_args[i], box[i], paint[i], trans[i])
41
+ end
42
+ bar.increment
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ end
49
+ end
@@ -1,83 +1,83 @@
1
- require_relative '../args/card_range'
2
- require_relative '../args/hand_special'
3
- require_relative '../args/save_batch'
4
- require_relative '../args/sheet'
5
- require_relative '../args/showcase_special'
6
- require_relative '../args/sprue_file'
7
- require_relative '../graphics/save_pdf'
8
- require_relative '../graphics/save_sprue'
9
- require_relative '../sprues/sprue'
10
-
11
- module Squib
12
- class Deck
13
-
14
- # DSL method. See http://squib.readthedocs.io
15
- def save(opts = {})
16
- save_png(opts) if Array(opts[:format]).include? :png
17
- save_pdf(opts) if Array(opts[:format]).include? :pdf
18
- self
19
- end
20
-
21
- # DSL method. See http://squib.readthedocs.io
22
- def save_pdf(opts = {})
23
- range = Args::CardRange.new(opts[:range], deck_size: size)
24
- sheet = Args::Sheet.new(custom_colors, { file: 'output.pdf' }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
25
- sprue_file = Args::SprueFile.new.load!(opts, expand_by: size)
26
-
27
- if sprue_file.sprue.nil?
28
- Graphics::SavePDF.new(self).render_pdf(range, sheet)
29
- else
30
- tmpl = Sprue.load sprue_file.sprue, dpi
31
- Graphics::SaveSpruePDF.
32
- new(self, tmpl, sheet).
33
- render_sheet(range)
34
- end
35
- end
36
-
37
- # DSL method. See http://squib.readthedocs.io
38
- def save_png(opts = {})
39
- range = Args::CardRange.new(opts[:range], deck_size: size)
40
- batch = Args::SaveBatch.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
41
- @progress_bar.start("Saving PNGs to #{batch.summary}", size) do |bar|
42
- range.each do |i|
43
- @cards[i].save_png(batch[i])
44
- bar.increment
45
- end
46
- end
47
- end
48
-
49
- # DSL method. See http://squib.readthedocs.io
50
- def save_sheet(opts = {})
51
- range = Args::CardRange.new(opts[:range], deck_size: size)
52
- batch = Args::SaveBatch.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
53
- sheet = Args::Sheet.new(custom_colors, { margin: 0 }, size).load!(opts, expand_by: size, layout: layout, dpi: dpi)
54
- sprue_file = Args::SprueFile.new.load!(opts, expand_by: size)
55
-
56
- if sprue_file.sprue.nil?
57
- render_sheet(range, batch, sheet)
58
- else
59
- tmpl = Sprue.load sprue_file.sprue, dpi
60
- Graphics::SaveSpruePNG.
61
- new(self, tmpl, sheet).
62
- render_sheet(range)
63
- end
64
- end
65
-
66
- # DSL method. See http://squib.readthedocs.io
67
- def showcase(opts = {})
68
- range = Args::CardRange.new(opts[:range], deck_size: size)
69
- showcase = Args::ShowcaseSpecial.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
70
- sheet = Args::Sheet.new(custom_colors, { file: 'showcase.png' }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
71
- render_showcase(range, sheet, showcase)
72
- end
73
-
74
- # DSL method. See http://squib.readthedocs.io
75
- def hand(opts = {})
76
- range = Args::CardRange.new(opts[:range], deck_size: size)
77
- hand = Args::HandSpecial.new(height).load!(opts, expand_by: size, layout: layout, dpi: dpi)
78
- sheet = Args::Sheet.new(custom_colors, { file: 'hand.png', trim_radius: 0 }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
79
- render_hand(range, sheet, hand)
80
- end
81
-
82
- end
83
- end
1
+ require_relative '../args/card_range'
2
+ require_relative '../args/hand_special'
3
+ require_relative '../args/save_batch'
4
+ require_relative '../args/sheet'
5
+ require_relative '../args/showcase_special'
6
+ require_relative '../args/sprue_file'
7
+ require_relative '../graphics/save_pdf'
8
+ require_relative '../graphics/save_sprue'
9
+ require_relative '../sprues/sprue'
10
+
11
+ module Squib
12
+ class Deck
13
+
14
+ # DSL method. See http://squib.readthedocs.io
15
+ def save(opts = {})
16
+ save_png(opts) if Array(opts[:format]).include? :png
17
+ save_pdf(opts) if Array(opts[:format]).include? :pdf
18
+ self
19
+ end
20
+
21
+ # DSL method. See http://squib.readthedocs.io
22
+ def save_pdf(opts = {})
23
+ range = Args::CardRange.new(opts[:range], deck_size: size)
24
+ sheet = Args::Sheet.new(custom_colors, { file: 'output.pdf' }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
25
+ sprue_file = Args::SprueFile.new.load!(opts, expand_by: size)
26
+
27
+ if sprue_file.sprue.nil?
28
+ Graphics::SavePDF.new(self).render_pdf(range, sheet)
29
+ else
30
+ tmpl = Sprue.load sprue_file.sprue, dpi
31
+ Graphics::SaveSpruePDF.
32
+ new(self, tmpl, sheet).
33
+ render_sheet(range)
34
+ end
35
+ end
36
+
37
+ # DSL method. See http://squib.readthedocs.io
38
+ def save_png(opts = {})
39
+ range = Args::CardRange.new(opts[:range], deck_size: size)
40
+ batch = Args::SaveBatch.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
41
+ @progress_bar.start("Saving PNGs to #{batch.summary}", size) do |bar|
42
+ range.each do |i|
43
+ @cards[i].save_png(batch[i])
44
+ bar.increment
45
+ end
46
+ end
47
+ end
48
+
49
+ # DSL method. See http://squib.readthedocs.io
50
+ def save_sheet(opts = {})
51
+ range = Args::CardRange.new(opts[:range], deck_size: size)
52
+ batch = Args::SaveBatch.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
53
+ sheet = Args::Sheet.new(custom_colors, { margin: 0 }, size).load!(opts, expand_by: size, layout: layout, dpi: dpi)
54
+ sprue_file = Args::SprueFile.new.load!(opts, expand_by: size)
55
+
56
+ if sprue_file.sprue.nil?
57
+ render_sheet(range, batch, sheet)
58
+ else
59
+ tmpl = Sprue.load sprue_file.sprue, dpi
60
+ Graphics::SaveSpruePNG.
61
+ new(self, tmpl, sheet).
62
+ render_sheet(range)
63
+ end
64
+ end
65
+
66
+ # DSL method. See http://squib.readthedocs.io
67
+ def showcase(opts = {})
68
+ range = Args::CardRange.new(opts[:range], deck_size: size)
69
+ showcase = Args::ShowcaseSpecial.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
70
+ sheet = Args::Sheet.new(custom_colors, { file: 'showcase.png' }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
71
+ render_showcase(range, sheet, showcase)
72
+ end
73
+
74
+ # DSL method. See http://squib.readthedocs.io
75
+ def hand(opts = {})
76
+ range = Args::CardRange.new(opts[:range], deck_size: size)
77
+ hand = Args::HandSpecial.new(height).load!(opts, expand_by: size, layout: layout, dpi: dpi)
78
+ sheet = Args::Sheet.new(custom_colors, { file: 'hand.png', trim_radius: 0 }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
79
+ render_hand(range, sheet, hand)
80
+ end
81
+
82
+ end
83
+ end
@@ -1,21 +1,21 @@
1
- module Squib
2
- class Deck
3
-
4
- # DSL method. See http://squib.readthedocs.io
5
- def hint(text: :off)
6
- conf.text_hint = text
7
- end
8
-
9
- # DSL method. See http://squib.readthedocs.io
10
- def set(opts = {})
11
- raise 'DEPRECATED: As of v0.7 img_dir is no longer supported in "set". Use config.yml instead.' if opts.key? :img_dir
12
- @font = (opts[:font] == :default) ? Squib::DEFAULT_FONT : opts[:font]
13
- end
14
-
15
- # DSL method. See http://squib.readthedocs.io
16
- def use_layout(file: 'layout.yml')
17
- @layout = LayoutParser.new(@dpi).load_layout(file, @layout)
18
- end
19
-
20
- end
21
- end
1
+ module Squib
2
+ class Deck
3
+
4
+ # DSL method. See http://squib.readthedocs.io
5
+ def hint(text: :off)
6
+ conf.text_hint = text
7
+ end
8
+
9
+ # DSL method. See http://squib.readthedocs.io
10
+ def set(opts = {})
11
+ raise 'DEPRECATED: As of v0.7 img_dir is no longer supported in "set". Use config.yml instead.' if opts.key? :img_dir
12
+ @font = (opts[:font] == :default) ? Squib::DEFAULT_FONT : opts[:font]
13
+ end
14
+
15
+ # DSL method. See http://squib.readthedocs.io
16
+ def use_layout(file: 'layout.yml')
17
+ @layout = LayoutParser.new(@dpi).load_layout(file, @layout)
18
+ end
19
+
20
+ end
21
+ end
@@ -1,124 +1,124 @@
1
- require_relative '../args/box'
2
- require_relative '../args/draw'
3
- require_relative '../args/card_range'
4
- require_relative '../args/transform'
5
- require_relative '../args/coords'
6
-
7
- module Squib
8
- class Deck
9
-
10
- # DSL method. See http://squib.readthedocs.io
11
- def rect(opts = {})
12
- range = Args::CardRange.new(opts[:range], deck_size: size)
13
- box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
14
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
15
- trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
16
- range.each { |i| @cards[i].rect(box[i], draw[i], trans[i]) }
17
- end
18
-
19
- # DSL method. See http://squib.readthedocs.io
20
- def circle(opts = {})
21
- range = Args::CardRange.new(opts[:range], deck_size: size)
22
- coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
23
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
24
- range.each { |i| @cards[i].circle(coords[i], draw[i]) }
25
- end
26
-
27
- # DSL method. See http://squib.readthedocs.io
28
- def ellipse(opts = {})
29
- range = Args::CardRange.new(opts[:range], deck_size: size)
30
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
31
- box = Args::Box.new(self, { width: '0.25in', height: '0.25in' }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
32
- trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
33
- range.each { |i| @cards[i].ellipse(box[i], draw[i], trans[i]) }
34
- end
35
-
36
- # DSL method. See http://squib.readthedocs.io
37
- def grid(opts = {})
38
- range = Args::CardRange.new(opts[:range], deck_size: size)
39
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
40
- box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
41
- range.each { |i| @cards[i].grid(box[i], draw[i]) }
42
- end
43
-
44
- # DSL method. See http://squib.readthedocs.io
45
- def triangle(opts = {})
46
- range = Args::CardRange.new(opts[:range], deck_size: size)
47
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
48
- coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
49
- range.each { |i| @cards[i].triangle(coords[i], draw[i]) }
50
- end
51
-
52
- # DSL method. See http://squib.readthedocs.io
53
- def line(opts = {})
54
- range = Args::CardRange.new(opts[:range], deck_size: size)
55
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
56
- coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
57
- range.each { |i| @cards[i].line(coords[i], draw[i]) }
58
- end
59
-
60
- # DSL method. See http://squib.readthedocs.io
61
- def curve(opts = {})
62
- range = Args::CardRange.new(opts[:range], deck_size: size)
63
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
64
- coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
65
- range.each { |i| @cards[i].curve(coords[i], draw[i]) }
66
- end
67
-
68
- # DSL method. See http://squib.readthedocs.io
69
- def star(opts = {})
70
- range = Args::CardRange.new(opts[:range], deck_size: size)
71
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
72
- coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
73
- trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
74
- range.each { |i| @cards[i].star(coords[i], trans[i], draw[i]) }
75
- end
76
-
77
- # DSL method. See http://squib.readthedocs.io
78
- def polygon(opts = {})
79
- range = Args::CardRange.new(opts[:range], deck_size: size)
80
- draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
81
- coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
82
- trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
83
- range.each { |i| @cards[i].polygon(coords[i], trans[i], draw[i]) }
84
- end
85
-
86
- # DSL method. See http://squib.readthedocs.io
87
- def safe_zone(opts = {})
88
- safe_defaults = {
89
- margin: '0.25in',
90
- radius: '0.125in',
91
- stroke_color: :blue,
92
- fill_color: '#0000',
93
- stroke_width: 1.0,
94
- dash: '3 3',
95
- }
96
- new_opts = safe_defaults.merge(opts)
97
- margin = Args::UnitConversion.parse new_opts[:margin]
98
- new_opts[:x] = margin
99
- new_opts[:y] = margin
100
- new_opts[:width] = width - (2 * margin)
101
- new_opts[:height] = height - (2 * margin)
102
- rect new_opts
103
- end
104
-
105
- # DSL method. See http://squib.readthedocs.io
106
- def cut_zone(opts = {})
107
- safe_defaults = {
108
- margin: '0.125in',
109
- radius: '0.125in',
110
- stroke_color: :red,
111
- fill_color: '#0000',
112
- stroke_width: 2.0,
113
- }
114
- new_opts = safe_defaults.merge(opts)
115
- margin = Args::UnitConversion.parse new_opts[:margin]
116
- new_opts[:x] = margin
117
- new_opts[:y] = margin
118
- new_opts[:width] = width - (2 * margin)
119
- new_opts[:height] = height - (2 * margin)
120
- rect new_opts
121
- end
122
-
123
- end
124
- end
1
+ require_relative '../args/box'
2
+ require_relative '../args/draw'
3
+ require_relative '../args/card_range'
4
+ require_relative '../args/transform'
5
+ require_relative '../args/coords'
6
+
7
+ module Squib
8
+ class Deck
9
+
10
+ # DSL method. See http://squib.readthedocs.io
11
+ def rect(opts = {})
12
+ range = Args::CardRange.new(opts[:range], deck_size: size)
13
+ box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
14
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
15
+ trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
16
+ range.each { |i| @cards[i].rect(box[i], draw[i], trans[i]) }
17
+ end
18
+
19
+ # DSL method. See http://squib.readthedocs.io
20
+ def circle(opts = {})
21
+ range = Args::CardRange.new(opts[:range], deck_size: size)
22
+ coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
23
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
24
+ range.each { |i| @cards[i].circle(coords[i], draw[i]) }
25
+ end
26
+
27
+ # DSL method. See http://squib.readthedocs.io
28
+ def ellipse(opts = {})
29
+ range = Args::CardRange.new(opts[:range], deck_size: size)
30
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
31
+ box = Args::Box.new(self, { width: '0.25in', height: '0.25in' }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
32
+ trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
33
+ range.each { |i| @cards[i].ellipse(box[i], draw[i], trans[i]) }
34
+ end
35
+
36
+ # DSL method. See http://squib.readthedocs.io
37
+ def grid(opts = {})
38
+ range = Args::CardRange.new(opts[:range], deck_size: size)
39
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
40
+ box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
41
+ range.each { |i| @cards[i].grid(box[i], draw[i]) }
42
+ end
43
+
44
+ # DSL method. See http://squib.readthedocs.io
45
+ def triangle(opts = {})
46
+ range = Args::CardRange.new(opts[:range], deck_size: size)
47
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
48
+ coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
49
+ range.each { |i| @cards[i].triangle(coords[i], draw[i]) }
50
+ end
51
+
52
+ # DSL method. See http://squib.readthedocs.io
53
+ def line(opts = {})
54
+ range = Args::CardRange.new(opts[:range], deck_size: size)
55
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
56
+ coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
57
+ range.each { |i| @cards[i].line(coords[i], draw[i]) }
58
+ end
59
+
60
+ # DSL method. See http://squib.readthedocs.io
61
+ def curve(opts = {})
62
+ range = Args::CardRange.new(opts[:range], deck_size: size)
63
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
64
+ coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
65
+ range.each { |i| @cards[i].curve(coords[i], draw[i]) }
66
+ end
67
+
68
+ # DSL method. See http://squib.readthedocs.io
69
+ def star(opts = {})
70
+ range = Args::CardRange.new(opts[:range], deck_size: size)
71
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
72
+ coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
73
+ trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
74
+ range.each { |i| @cards[i].star(coords[i], trans[i], draw[i]) }
75
+ end
76
+
77
+ # DSL method. See http://squib.readthedocs.io
78
+ def polygon(opts = {})
79
+ range = Args::CardRange.new(opts[:range], deck_size: size)
80
+ draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
81
+ coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
82
+ trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
83
+ range.each { |i| @cards[i].polygon(coords[i], trans[i], draw[i]) }
84
+ end
85
+
86
+ # DSL method. See http://squib.readthedocs.io
87
+ def safe_zone(opts = {})
88
+ safe_defaults = {
89
+ margin: '0.25in',
90
+ radius: '0.125in',
91
+ stroke_color: :blue,
92
+ fill_color: '#0000',
93
+ stroke_width: 1.0,
94
+ dash: '3 3',
95
+ }
96
+ new_opts = safe_defaults.merge(opts)
97
+ margin = Args::UnitConversion.parse new_opts[:margin]
98
+ new_opts[:x] = margin
99
+ new_opts[:y] = margin
100
+ new_opts[:width] = width - (2 * margin)
101
+ new_opts[:height] = height - (2 * margin)
102
+ rect new_opts
103
+ end
104
+
105
+ # DSL method. See http://squib.readthedocs.io
106
+ def cut_zone(opts = {})
107
+ safe_defaults = {
108
+ margin: '0.125in',
109
+ radius: '0.125in',
110
+ stroke_color: :red,
111
+ fill_color: '#0000',
112
+ stroke_width: 2.0,
113
+ }
114
+ new_opts = safe_defaults.merge(opts)
115
+ margin = Args::UnitConversion.parse new_opts[:margin]
116
+ new_opts[:x] = margin
117
+ new_opts[:y] = margin
118
+ new_opts[:width] = width - (2 * margin)
119
+ new_opts[:height] = height - (2 * margin)
120
+ rect new_opts
121
+ end
122
+
123
+ end
124
+ end