squib 0.14.2 → 0.14.3.pre1

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 (163) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +41 -41
  3. data/.travis.yml +19 -19
  4. data/CHANGELOG.md +366 -357
  5. data/CONTRIBUTING.md +40 -40
  6. data/Gemfile +2 -2
  7. data/LICENSE.txt +22 -22
  8. data/README.md +121 -121
  9. data/RELEASE TODO.md +21 -21
  10. data/Rakefile +48 -48
  11. data/appveyor.yml +24 -24
  12. data/bin/squib +4 -4
  13. data/lib/squib.rb +32 -32
  14. data/lib/squib/api/background.rb +15 -15
  15. data/lib/squib/api/data.rb +137 -137
  16. data/lib/squib/api/groups.rb +54 -54
  17. data/lib/squib/api/image.rb +49 -49
  18. data/lib/squib/api/save.rb +83 -83
  19. data/lib/squib/api/settings.rb +21 -21
  20. data/lib/squib/api/shapes.rb +124 -124
  21. data/lib/squib/api/text.rb +25 -25
  22. data/lib/squib/api/text_embed.rb +71 -71
  23. data/lib/squib/api/units.rb +27 -27
  24. data/lib/squib/args/arg_loader.rb +126 -126
  25. data/lib/squib/args/box.rb +55 -55
  26. data/lib/squib/args/card_range.rb +32 -32
  27. data/lib/squib/args/color_validator.rb +12 -12
  28. data/lib/squib/args/coords.rb +35 -35
  29. data/lib/squib/args/csv_opts.rb +25 -25
  30. data/lib/squib/args/dir_validator.rb +16 -16
  31. data/lib/squib/args/draw.rb +92 -92
  32. data/lib/squib/args/embed_adjust.rb +25 -25
  33. data/lib/squib/args/embed_key.rb +17 -17
  34. data/lib/squib/args/hand_special.rb +37 -37
  35. data/lib/squib/args/import.rb +40 -40
  36. data/lib/squib/args/input_file.rb +37 -37
  37. data/lib/squib/args/paint.rb +44 -44
  38. data/lib/squib/args/paragraph.rb +116 -116
  39. data/lib/squib/args/save_batch.rb +63 -63
  40. data/lib/squib/args/scale_box.rb +53 -53
  41. data/lib/squib/args/sheet.rb +172 -172
  42. data/lib/squib/args/showcase_special.rb +38 -38
  43. data/lib/squib/args/sprue_file.rb +44 -44
  44. data/lib/squib/args/svg_special.rb +37 -37
  45. data/lib/squib/args/transform.rb +61 -61
  46. data/lib/squib/args/typographer.rb +119 -119
  47. data/lib/squib/args/unit_conversion.rb +29 -29
  48. data/lib/squib/builtin/layouts/economy.yml +85 -85
  49. data/lib/squib/builtin/layouts/fantasy.yml +101 -101
  50. data/lib/squib/builtin/layouts/hand.yml +62 -62
  51. data/lib/squib/builtin/layouts/party.yml +94 -94
  52. data/lib/squib/builtin/layouts/playing-card.yml +35 -35
  53. data/lib/squib/builtin/layouts/tuck_box.yml +46 -46
  54. data/lib/squib/builtin/projects/advanced/.gitignore +4 -4
  55. data/lib/squib/builtin/projects/advanced/ABOUT.md +19 -19
  56. data/lib/squib/builtin/projects/advanced/Gemfile +11 -11
  57. data/lib/squib/builtin/projects/advanced/Guardfile +21 -21
  58. data/lib/squib/builtin/projects/advanced/IDEAS.md +22 -22
  59. data/lib/squib/builtin/projects/advanced/PLAYTESTING.md +26 -26
  60. data/lib/squib/builtin/projects/advanced/Rakefile +27 -27
  61. data/lib/squib/builtin/projects/advanced/config.yml +53 -49
  62. data/lib/squib/builtin/projects/advanced/docs/PNP NOTES.md +3 -3
  63. data/lib/squib/builtin/projects/advanced/docs/RULES.md +21 -21
  64. data/lib/squib/builtin/projects/advanced/img/example.svg +60 -60
  65. data/lib/squib/builtin/projects/advanced/layouts/deck.yml +27 -27
  66. data/lib/squib/builtin/projects/advanced/src/deck.rb +34 -34
  67. data/lib/squib/builtin/projects/advanced/src/version.rb +3 -3
  68. data/lib/squib/builtin/projects/basic/.gitignore +4 -4
  69. data/lib/squib/builtin/projects/basic/ABOUT.md +19 -19
  70. data/lib/squib/builtin/projects/basic/Gemfile +3 -3
  71. data/lib/squib/builtin/projects/basic/IDEAS.md +22 -22
  72. data/lib/squib/builtin/projects/basic/PLAYTESTING.md +26 -26
  73. data/lib/squib/builtin/projects/basic/PNP NOTES.md +3 -3
  74. data/lib/squib/builtin/projects/basic/RULES.md +21 -21
  75. data/lib/squib/builtin/projects/basic/Rakefile +7 -7
  76. data/lib/squib/builtin/projects/basic/config.yml +53 -49
  77. data/lib/squib/builtin/projects/basic/deck.rb +6 -6
  78. data/lib/squib/builtin/sprues/a4_euro_card.yml +42 -42
  79. data/lib/squib/builtin/sprues/a4_poker_card_8up.yml +40 -40
  80. data/lib/squib/builtin/sprues/a4_poker_card_9up.yml +42 -42
  81. data/lib/squib/builtin/sprues/a4_usa_card.yml +42 -42
  82. data/lib/squib/builtin/sprues/drivethrucards_1up.yml +10 -10
  83. data/lib/squib/builtin/sprues/letter_poker_card_9up.yml +25 -25
  84. data/lib/squib/builtin/sprues/letter_poker_foldable_8up.yml +52 -52
  85. data/lib/squib/builtin/sprues/printplaygames_18up.yml +68 -68
  86. data/lib/squib/card.rb +75 -75
  87. data/lib/squib/commands/cli.rb +39 -39
  88. data/lib/squib/commands/data/template_option.rb +109 -109
  89. data/lib/squib/commands/make_sprue.rb +275 -275
  90. data/lib/squib/commands/new.rb +77 -77
  91. data/lib/squib/conf.rb +144 -139
  92. data/lib/squib/constants.rb +17 -17
  93. data/lib/squib/deck.rb +116 -116
  94. data/lib/squib/graphics/background.rb +14 -14
  95. data/lib/squib/graphics/cairo_context_wrapper.rb +113 -113
  96. data/lib/squib/graphics/embedding_utils.rb +28 -28
  97. data/lib/squib/graphics/gradient_regex.rb +47 -47
  98. data/lib/squib/graphics/hand.rb +42 -42
  99. data/lib/squib/graphics/image.rb +129 -108
  100. data/lib/squib/graphics/save_doc.rb +61 -61
  101. data/lib/squib/graphics/save_images.rb +52 -52
  102. data/lib/squib/graphics/save_pdf.rb +90 -90
  103. data/lib/squib/graphics/save_sprue.rb +204 -204
  104. data/lib/squib/graphics/shapes.rb +143 -143
  105. data/lib/squib/graphics/showcase.rb +85 -85
  106. data/lib/squib/graphics/text.rb +174 -174
  107. data/lib/squib/import/data_frame.rb +108 -108
  108. data/lib/squib/layout_parser.rb +138 -138
  109. data/lib/squib/progress.rb +38 -38
  110. data/lib/squib/sample_helpers.rb +34 -34
  111. data/lib/squib/sprues/crop_line.rb +28 -28
  112. data/lib/squib/sprues/crop_line_dash.rb +35 -35
  113. data/lib/squib/sprues/invalid_sprue_definition.rb +9 -9
  114. data/lib/squib/sprues/sprue.rb +203 -203
  115. data/lib/squib/sprues/sprue_schema.rb +48 -48
  116. data/lib/squib/version.rb +10 -10
  117. data/samples/autoscale_font/_autoscale_font.rb +29 -29
  118. data/samples/backend/_backend.rb +26 -26
  119. data/samples/basic.rb +19 -19
  120. data/samples/bug256/_bug256.rb +13 -0
  121. data/samples/build_groups/build_groups.rb +36 -36
  122. data/samples/colors/_colors.rb +38 -38
  123. data/samples/colors/_gradients.rb +34 -34
  124. data/samples/config/config_text_markup.rb +20 -20
  125. data/samples/config/custom_config.rb +18 -18
  126. data/samples/data/_csv.rb +33 -33
  127. data/samples/data/_excel.rb +55 -55
  128. data/samples/data/_yaml.rb +12 -12
  129. data/samples/hello_world.rb +6 -6
  130. data/samples/images/_cairo_access.rb +39 -39
  131. data/samples/images/_images.rb +104 -104
  132. data/samples/images/_more_load_images.rb +102 -102
  133. data/samples/intro/01_hello.rb +8 -8
  134. data/samples/intro/02_options.rb +14 -14
  135. data/samples/intro/03_layout.rb +11 -11
  136. data/samples/intro/04_arrays.rb +15 -15
  137. data/samples/intro/05_excel.rb +14 -14
  138. data/samples/layouts/builtin_layouts.rb +97 -97
  139. data/samples/layouts/layouts.rb +71 -71
  140. data/samples/project/src/characters.rb +8 -8
  141. data/samples/project/src/skills.rb +7 -7
  142. data/samples/proofs/_tgc_proofs.rb +16 -16
  143. data/samples/ranges/_ranges.rb +64 -64
  144. data/samples/saves/_hand.rb +23 -23
  145. data/samples/saves/_portrait_landscape.rb +23 -23
  146. data/samples/saves/_save_pdf.rb +29 -29
  147. data/samples/saves/_saves.rb +51 -51
  148. data/samples/saves/_showcase.rb +25 -25
  149. data/samples/shapes/_draw_shapes.rb +60 -60
  150. data/samples/shapes/_proofs.rb +22 -22
  151. data/samples/sprues/_advanced_sprues.rb +24 -24
  152. data/samples/sprues/_builtin_sprues.rb +21 -21
  153. data/samples/sprues/_fold_sheet.rb +27 -27
  154. data/samples/sprues/_hex_tiles.rb +15 -15
  155. data/samples/sprues/_mints.rb +11 -11
  156. data/samples/sprues/_sprue_example.rb +11 -11
  157. data/samples/text/_embed_text.rb +128 -128
  158. data/samples/text/_text.rb +47 -47
  159. data/samples/text/_text_options.rb +102 -102
  160. data/samples/text/bug134.rb +14 -14
  161. data/samples/units/_units.rb +32 -32
  162. data/squib.gemspec +52 -52
  163. metadata +51 -48
@@ -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