squib 0.8.0 → 0.9.0

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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +14 -0
  3. data/.travis.yml +4 -0
  4. data/CHANGELOG.md +201 -175
  5. data/Gemfile +2 -4
  6. data/README.md +650 -645
  7. data/RELEASE TODO.md +18 -18
  8. data/Rakefile +106 -99
  9. data/appveyor.yml +29 -0
  10. data/lib/squib.rb +32 -32
  11. data/lib/squib/api/background.rb +20 -20
  12. data/lib/squib/api/data.rb +131 -131
  13. data/lib/squib/api/image.rb +108 -90
  14. data/lib/squib/api/save.rb +151 -149
  15. data/lib/squib/api/settings.rb +35 -35
  16. data/lib/squib/api/shapes.rb +255 -230
  17. data/lib/squib/api/text.rb +65 -65
  18. data/lib/squib/api/text_embed.rb +96 -96
  19. data/lib/squib/args/arg_loader.rb +138 -138
  20. data/lib/squib/args/box.rb +54 -54
  21. data/lib/squib/args/card_range.rb +32 -32
  22. data/lib/squib/args/color_validator.rb +11 -11
  23. data/lib/squib/args/coords.rb +32 -32
  24. data/lib/squib/args/dir_validator.rb +16 -16
  25. data/lib/squib/args/draw.rb +92 -92
  26. data/lib/squib/args/embed_adjust.rb +25 -25
  27. data/lib/squib/args/embed_key.rb +17 -17
  28. data/lib/squib/args/hand_special.rb +37 -37
  29. data/lib/squib/args/import.rb +39 -39
  30. data/lib/squib/args/input_file.rb +37 -37
  31. data/lib/squib/args/paint.rb +43 -43
  32. data/lib/squib/args/paragraph.rb +116 -115
  33. data/lib/squib/args/save_batch.rb +63 -60
  34. data/lib/squib/args/scale_box.rb +53 -53
  35. data/lib/squib/args/sheet.rb +72 -72
  36. data/lib/squib/args/showcase_special.rb +38 -38
  37. data/lib/squib/args/svg_special.rb +37 -37
  38. data/lib/squib/args/transform.rb +60 -24
  39. data/lib/squib/args/typographer.rb +117 -117
  40. data/lib/squib/card.rb +66 -67
  41. data/lib/squib/conf.rb +131 -117
  42. data/lib/squib/constants.rb +12 -178
  43. data/lib/squib/deck.rb +113 -113
  44. data/lib/squib/graphics/cairo_context_wrapper.rb +113 -99
  45. data/lib/squib/graphics/gradient_regex.rb +46 -46
  46. data/lib/squib/graphics/hand.rb +42 -42
  47. data/lib/squib/graphics/image.rb +103 -76
  48. data/lib/squib/graphics/save_doc.rb +103 -103
  49. data/lib/squib/graphics/save_images.rb +39 -33
  50. data/lib/squib/graphics/shapes.rb +135 -119
  51. data/lib/squib/graphics/showcase.rb +85 -85
  52. data/lib/squib/graphics/text.rb +176 -176
  53. data/lib/squib/layout_parser.rb +91 -91
  54. data/lib/squib/layouts/economy.yml +85 -85
  55. data/lib/squib/layouts/fantasy.yml +101 -101
  56. data/lib/squib/layouts/hand.yml +62 -62
  57. data/lib/squib/layouts/playing-card.yml +35 -35
  58. data/lib/squib/layouts/tuck_box.yml +45 -45
  59. data/lib/squib/project_template/IDEAS.md +22 -0
  60. data/lib/squib/project_template/PLAYTESTING.md +26 -0
  61. data/lib/squib/project_template/RULES.md +21 -0
  62. data/lib/squib/project_template/config.yml +49 -45
  63. data/lib/squib/sample_helpers.rb +34 -0
  64. data/lib/squib/version.rb +10 -10
  65. data/samples/autoscale_font/_autoscale_font.rb +29 -0
  66. data/samples/color_shortcuts.rb +6 -6
  67. data/samples/csv_import.rb +26 -26
  68. data/samples/custom-config.yml +5 -5
  69. data/samples/custom_config.rb +18 -18
  70. data/samples/draw_shapes.rb +48 -45
  71. data/samples/embed_text.rb +88 -88
  72. data/samples/excel.rb +55 -55
  73. data/samples/hand.rb +24 -24
  74. data/samples/images/_images.rb +104 -0
  75. data/samples/intro/01_hello.rb +9 -0
  76. data/samples/intro/02_options.rb +15 -0
  77. data/samples/intro/03_layout.rb +12 -0
  78. data/samples/intro/04_arrays.rb +16 -0
  79. data/samples/intro/05_excel.rb +15 -0
  80. data/samples/layouts.rb +62 -62
  81. data/samples/layouts_builtin.rb +51 -51
  82. data/samples/load_images.rb +99 -78
  83. data/samples/load_images_config.yml +1 -0
  84. data/samples/quantity_explosion.csv +2 -2
  85. data/samples/ranges.rb +64 -64
  86. data/samples/sample.csv +2 -2
  87. data/samples/saves.rb +9 -1
  88. data/samples/sprites.png +0 -0
  89. data/samples/text/_text.rb +46 -0
  90. data/samples/text_options.rb +102 -102
  91. data/spec/api/api_data_spec.rb +117 -117
  92. data/spec/api/api_settings_spec.rb +37 -37
  93. data/spec/args/box_spec.rb +127 -127
  94. data/spec/args/draw_spec.rb +101 -95
  95. data/spec/args/embed_key_spec.rb +13 -13
  96. data/spec/args/input_file_spec.rb +21 -21
  97. data/spec/args/paint_spec.rb +21 -21
  98. data/spec/args/paragraph_spec.rb +152 -152
  99. data/spec/args/range_spec.rb +40 -40
  100. data/spec/args/save_batch_spec.rb +51 -51
  101. data/spec/args/scale_box_spec.rb +71 -71
  102. data/spec/args/sheet_spec.rb +58 -58
  103. data/spec/args/showcase_special_spec.rb +15 -15
  104. data/spec/args/transform_spec.rb +25 -0
  105. data/spec/card_spec.rb +11 -0
  106. data/spec/conf_spec.rb +13 -3
  107. data/spec/data/conf/unrecognized.yml +4 -0
  108. data/spec/data/csv/qty.csv +2 -2
  109. data/spec/data/csv/qty_named.csv +2 -2
  110. data/spec/data/csv/with_spaces.csv +2 -2
  111. data/spec/data/samples/autoscale_font.rb.txt +84 -84
  112. data/spec/data/samples/basic.rb.txt +227 -209
  113. data/spec/data/samples/config_text_markup.rb.txt +72 -72
  114. data/spec/data/samples/csv_import.rb.txt +213 -213
  115. data/spec/data/samples/custom_config.rb.txt +57 -48
  116. data/spec/data/samples/draw_shapes.rb.txt +555 -3
  117. data/spec/data/samples/embed_text.rb.txt +283 -283
  118. data/spec/data/samples/excel.rb.txt +661 -661
  119. data/spec/data/samples/gradients.rb.txt +77 -79
  120. data/spec/data/samples/hand.rb.txt +538 -538
  121. data/spec/data/samples/hello_world.rb.txt +36 -36
  122. data/spec/data/samples/load_images.rb.txt +170 -0
  123. data/spec/data/samples/portrait-landscape.rb.txt +51 -49
  124. data/spec/data/samples/ranges.rb.txt +472 -460
  125. data/spec/data/samples/saves.rb.txt +810 -801
  126. data/spec/data/samples/showcase.rb.txt +5926 -5910
  127. data/spec/data/samples/text_options.rb.txt +1125 -1125
  128. data/spec/data/samples/tgc_proofs.rb.txt +95 -81
  129. data/spec/graphics/cairo_context_wrapper_spec.rb +104 -84
  130. data/spec/graphics/graphics_save_doc_spec.rb +67 -67
  131. data/spec/samples/diff-with-css.example.html +39 -0
  132. data/spec/samples/expected/load_images_00.png +0 -0
  133. data/spec/samples/expected/shape_00.png +0 -0
  134. data/spec/samples/run_samples_spec.rb +17 -0
  135. data/spec/samples/samples_regression_spec.rb +72 -82
  136. data/spec/spec_helper.rb +9 -1
  137. data/squib.gemspec +49 -48
  138. data/squib.sublime-project +42 -42
  139. metadata +94 -48
  140. data/spec/graphics/graphics_images_spec.rb +0 -94
@@ -1,62 +1,62 @@
1
- # A layout designed for a card to be held in your hand.
2
- # * Bonuses align along the left-hand side.
3
- # * Title along the top.
4
- # * Middle area for artwork,
5
- # * Room for a text description
6
- # * And some theme-based text (which I like call the "snark")
7
- # Along the lines of Race for the Galaxy or 7 Wonders
8
- # Based on TheGameCrafter.com's Poker Card, which is 825x1125
9
- # Sample usage is found in samples/layouts.rb
10
- title:
11
- x: 275
12
- y: 75
13
- width: 475
14
- height: 125
15
- art:
16
- x: 275
17
- y: 225
18
- width: 475
19
- height: 475
20
- description:
21
- x: 275
22
- y: 725
23
- width: 475
24
- height: 200
25
- snark:
26
- x: 275
27
- y: 950
28
- width: 475
29
- height: 100
30
- bonus1:
31
- x: 75
32
- y: 75
33
- width: 175
34
- height: 175
35
- bonus2:
36
- extends: bonus1
37
- y: += 198
38
- bonus3:
39
- extends: bonus2
40
- y: += 198
41
- bonus4:
42
- extends: bonus3
43
- y: += 198
44
- bonus5:
45
- extends: bonus4
46
- y: += 198
47
-
48
- # The "cut line", without rounded corners
49
- cut:
50
- x: 37.5
51
- y: 37.5
52
- width: 750
53
- height: 1050
54
-
55
- # The "safe zone" as defined by TheGameCrafter poker cards
56
- safe:
57
- x: 75
58
- y: 75
59
- width: 675
60
- height: 975
61
- radius: 16
62
- dash: 3 3
1
+ # A layout designed for a card to be held in your hand.
2
+ # * Bonuses align along the left-hand side.
3
+ # * Title along the top.
4
+ # * Middle area for artwork,
5
+ # * Room for a text description
6
+ # * And some theme-based text (which I like call the "snark")
7
+ # Along the lines of Race for the Galaxy or 7 Wonders
8
+ # Based on TheGameCrafter.com's Poker Card, which is 825x1125
9
+ # Sample usage is found in samples/layouts.rb
10
+ title:
11
+ x: 275
12
+ y: 75
13
+ width: 475
14
+ height: 125
15
+ art:
16
+ x: 275
17
+ y: 225
18
+ width: 475
19
+ height: 475
20
+ description:
21
+ x: 275
22
+ y: 725
23
+ width: 475
24
+ height: 200
25
+ snark:
26
+ x: 275
27
+ y: 950
28
+ width: 475
29
+ height: 100
30
+ bonus1:
31
+ x: 75
32
+ y: 75
33
+ width: 175
34
+ height: 175
35
+ bonus2:
36
+ extends: bonus1
37
+ y: += 198
38
+ bonus3:
39
+ extends: bonus2
40
+ y: += 198
41
+ bonus4:
42
+ extends: bonus3
43
+ y: += 198
44
+ bonus5:
45
+ extends: bonus4
46
+ y: += 198
47
+
48
+ # The "cut line", without rounded corners
49
+ cut:
50
+ x: 37.5
51
+ y: 37.5
52
+ width: 750
53
+ height: 1050
54
+
55
+ # The "safe zone" as defined by TheGameCrafter poker cards
56
+ safe:
57
+ x: 75
58
+ y: 75
59
+ width: 675
60
+ height: 975
61
+ radius: 16
62
+ dash: 3 3
@@ -1,35 +1,35 @@
1
- # A basic playing card layout with bonuses in the upper-left and lower-right.
2
- # The lower-right angle is rotated for text.
3
- bonus_ul:
4
- x: 75
5
- y: 75
6
- width: 200
7
- height: 200
8
- bonus_lr:
9
- extends: bonus_ul
10
- x: 750
11
- y: 1050
12
- angle: 3.14159
13
- art:
14
- x: 150
15
- y: 275
16
- width: 525
17
- height: 575
18
- valign: middle
19
- align: center
20
-
21
- # The "cut line", without rounded corners
22
- cut:
23
- x: 37.5
24
- y: 37.5
25
- width: 750
26
- height: 1050
27
-
28
- # The "safe zone" as defined by TheGameCrafter poker cards
29
- safe:
30
- x: 75
31
- y: 75
32
- width: 675
33
- height: 975
34
- radius: 16
35
- dash: 3 3
1
+ # A basic playing card layout with bonuses in the upper-left and lower-right.
2
+ # The lower-right angle is rotated for text.
3
+ bonus_ul:
4
+ x: 75
5
+ y: 75
6
+ width: 200
7
+ height: 200
8
+ bonus_lr:
9
+ extends: bonus_ul
10
+ x: 750
11
+ y: 1050
12
+ angle: 3.14159
13
+ art:
14
+ x: 150
15
+ y: 275
16
+ width: 525
17
+ height: 575
18
+ valign: middle
19
+ align: center
20
+
21
+ # The "cut line", without rounded corners
22
+ cut:
23
+ x: 37.5
24
+ y: 37.5
25
+ width: 750
26
+ height: 1050
27
+
28
+ # The "safe zone" as defined by TheGameCrafter poker cards
29
+ safe:
30
+ x: 75
31
+ y: 75
32
+ width: 675
33
+ height: 975
34
+ radius: 16
35
+ dash: 3 3
@@ -1,46 +1,46 @@
1
- ## Rectangles correspond to the "safe zones" as defined by TheGameCrafter for tuck boxes 2325x1950 pixels
2
- top_rect:
3
- x: 313
4
- y: 198
5
- width: 688
6
- height: 167
7
-
8
- bottom_rect:
9
- x: 313
10
- y: 1526
11
- width: 688
12
- height: 167
13
-
14
- right_rect:
15
- x: 77
16
- y: 466
17
- width: 164
18
- height: 988
19
-
20
- left_rect:
21
- x: 1080
22
- y: 466
23
- width: 164
24
- height: 988
25
-
26
- back_rect:
27
- x: 313
28
- y: 466
29
- width: 688
30
- height: 989
31
-
32
- front_rect:
33
- x: 1322
34
- y: 466
35
- width: 688
36
- height: 989
37
-
38
- front_curve:
39
- x1: 1550
40
- y1: 466
41
- x2: 1765
42
- y2: 466
43
- cx1: 1575
44
- cy1: 565
45
- cx2: 1740
1
+ ## Rectangles correspond to the "safe zones" as defined by TheGameCrafter for tuck boxes 2325x1950 pixels
2
+ top_rect:
3
+ x: 313
4
+ y: 198
5
+ width: 688
6
+ height: 167
7
+
8
+ bottom_rect:
9
+ x: 313
10
+ y: 1526
11
+ width: 688
12
+ height: 167
13
+
14
+ right_rect:
15
+ x: 77
16
+ y: 466
17
+ width: 164
18
+ height: 988
19
+
20
+ left_rect:
21
+ x: 1080
22
+ y: 466
23
+ width: 164
24
+ height: 988
25
+
26
+ back_rect:
27
+ x: 313
28
+ y: 466
29
+ width: 688
30
+ height: 989
31
+
32
+ front_rect:
33
+ x: 1322
34
+ y: 466
35
+ width: 688
36
+ height: 989
37
+
38
+ front_curve:
39
+ x1: 1550
40
+ y1: 466
41
+ x2: 1765
42
+ y2: 466
43
+ cx1: 1575
44
+ cy1: 565
45
+ cx2: 1740
46
46
  cy2: 565
@@ -0,0 +1,22 @@
1
+ # Title Ideas
2
+
3
+ * First idea
4
+ * Second idea
5
+
6
+
7
+ # Things to Try
8
+
9
+ * Idea
10
+ * Idea
11
+
12
+ # Feedback Ideas
13
+
14
+ * Feedback
15
+ * Feedback
16
+
17
+ # Problems To Work On
18
+
19
+ * Problem
20
+ * Problem
21
+
22
+
@@ -0,0 +1,26 @@
1
+ # Playtesting Log
2
+
3
+ # Playtest Report Survey
4
+
5
+ ## Basic Info
6
+ * Num. Players:
7
+ * How many sessions of this game have you played before?
8
+ * How long did you play?
9
+ * How did you prepare for teaching the rules? Read the sheet with everyone there, or did someone read it ahead of time?
10
+ * What types of players played with you? What are their favorite games?
11
+ * What version were you testing?
12
+ * What date did you play?
13
+
14
+ ## Did it work?
15
+ * Was there a moment that you felt the game was "broken"? Describe what happened.
16
+ * How close were the scores? Did everyone feel like they had a fair chance at winning?
17
+ * Were there any moments that you had to go back to the rules for clarification? What resulted of that - are you still unclear, or was it just a misunderstanding?
18
+ * Any ideas for clearer rules?
19
+ * Any ideas for clearer icons, artwork, in-game helps, etc?
20
+
21
+ ## Was it fun?
22
+ * Based on the description, artwork, branding, etc. was this game what you expected?
23
+ * Were the theme, artwork, and icons engaging?
24
+ * Did this game have the depth of strategy that you were expecting?
25
+ * What were the moments that people felt like they were having the most fun? The least fun?
26
+ * Assuming trivial issues are fixed, would you recommend this to someone else?
@@ -0,0 +1,21 @@
1
+ # Intro
2
+
3
+ What is this game about? How many players?
4
+
5
+ # Objective
6
+
7
+ What is the object of the game?
8
+
9
+ # Components
10
+
11
+ What are the components? List them out.
12
+
13
+ # Gameplay
14
+
15
+ What does each turn look like? Describe a turn.
16
+
17
+ # Scoring
18
+
19
+ How is victory assigned?
20
+
21
+
@@ -1,45 +1,49 @@
1
- # Settings in the config.yml are overriding Squib's defaults. Anything in the main script will override this.
2
-
3
- # DPI is used in making PDFs and in unit conversions
4
- # Default: 300
5
- #dpi: 72
6
-
7
- #antialias: best #recommended. Only about 10% slower than fast
8
- #antialias: default # set the anti-aliasing algorithm. default defers to the underlying graphics device. See http://www.cairographics.org/manual/cairo-cairo-t.html#cairo-antialias-t
9
-
10
- # Text hints are used to show the boundaries of text boxes.
11
- # Can be enabled/disabled at the command-level, or set globally with `set`
12
- #text_hint: '#F00'
13
-
14
- # Show progress bars on the command line for potentially long-running operations
15
- #progress_bars: true
16
-
17
- #Enable some custom colors that can be used in any color
18
- #custom_colors:
19
- # foo: '#abc'
20
-
21
- #For reading image file command (e.g. png and svg), read from this directory instead
22
- #img_dir: img-color
23
- #img_dir: img-bw
24
-
25
- # Use a SVG cairo back end, instead of an in-memory buffer
26
- # backend: :memory # default
27
- # backend: :svg # can create scalable pdfs, but rendering done at the printer level is not as good as Cairo.
28
-
29
- # Configure what text markup uses replace characters
30
- # Below are the defaults
31
- # lsquote: "\u2018" #note that Yaml wants double quotes here to use escape chars
32
- # rsquote: "\u2019"
33
- # ldquote: "\u201C"
34
- # rdquote: "\u201D"
35
- # em_dash: "\u2014"
36
- # en_dash: "\u2013"
37
- # ellipsis: "\u2026"
38
-
39
- # We can also disallow smart quotes and only allow explicit replacements with ``LaTeX-style'' quotes.
40
- # smart_quotes: false
41
-
42
- # By default, Squib warns when a text box is ellipsized. This can get verbose
43
- # and can be turned off here
44
- # warn_ellipsize: true # default
45
- # warn_ellipsize: false # default
1
+ # Settings in the config.yml are overriding Squib's defaults. Anything in the main script will override this.
2
+
3
+ # DPI is used in making PDFs and in unit conversions
4
+ # Default: 300
5
+ #dpi: 72
6
+
7
+ #antialias: best #recommended. Only about 10% slower than fast
8
+ #antialias: default # set the anti-aliasing algorithm. default defers to the underlying graphics device. See http://www.cairographics.org/manual/cairo-cairo-t.html#cairo-antialias-t
9
+
10
+ # Text hints are used to show the boundaries of text boxes.
11
+ # Can be enabled/disabled at the command-level, or set globally with `set`
12
+ #text_hint: '#F00'
13
+
14
+ # Show progress bars on the command line for potentially long-running operations
15
+ #progress_bars: true
16
+
17
+ #Enable some custom colors that can be used in any color
18
+ #custom_colors:
19
+ # foo: '#abc'
20
+
21
+ #For reading image file command (e.g. png and svg), read from this directory instead
22
+ #img_dir: img-color
23
+ #img_dir: img-bw
24
+
25
+ # Use a SVG cairo back end, instead of an in-memory buffer
26
+ # backend: :memory # default
27
+ # backend: :svg # can create scalable pdfs, but rendering done at the printer level is not as good as Cairo.
28
+
29
+ # Configure what text markup uses replace characters
30
+ # Below are the defaults
31
+ # lsquote: "\u2018" #note that Yaml wants double quotes here to use escape chars
32
+ # rsquote: "\u2019"
33
+ # ldquote: "\u201C"
34
+ # rdquote: "\u201D"
35
+ # em_dash: "\u2014"
36
+ # en_dash: "\u2013"
37
+ # ellipsis: "\u2026"
38
+
39
+ # We can also disallow smart quotes and only allow explicit replacements with ``LaTeX-style'' quotes.
40
+ # smart_quotes: false
41
+
42
+ # By default, Squib warns when a text box is ellipsized. This can get verbose
43
+ # and can be turned off here
44
+ # warn_ellipsize: true # default
45
+ # warn_ellipsize: false # turn off entirely
46
+
47
+ # By default, Squib will warn if a PNG is being up-scaled.
48
+ # warn_png_scale: true # default
49
+ # warn_png_scale: false # turn off entirely