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,48 +1,48 @@
1
- module Squib
2
- module Sprues
3
- UNIT_REGEX = /^(\d*[.])?\d+(in|cm|mm)$/
4
- ROTATE_REGEX = /^(\d*[.])?\d+(deg|rad)?$/
5
- SCHEMA = {
6
- 'sheet_width' => UNIT_REGEX,
7
- 'sheet_height' => UNIT_REGEX,
8
- 'card_width' => UNIT_REGEX,
9
- 'card_height' => UNIT_REGEX,
10
- 'position_reference' => ClassyHash::G.enum(:topleft, :center),
11
- 'rotate' => [
12
- :optional, Numeric,
13
- ClassyHash::G.enum(:clockwise, :counterclockwise, :turnaround),
14
- ROTATE_REGEX
15
- ],
16
- 'crop_line' => {
17
- 'style' => [
18
- ClassyHash::G.enum(:solid, :dotted, :dashed),
19
- Sprues::CropLineDash::VALIDATION_REGEX
20
- ],
21
- 'width' => UNIT_REGEX,
22
- 'color' => [String, Symbol],
23
- 'overlay' => ClassyHash::G.enum(
24
- :on_margin, :overlay_on_cards, :beneath_cards
25
- ),
26
- 'lines' => [[{
27
- 'type' => ClassyHash::G.enum(:horizontal, :vertical),
28
- 'position' => UNIT_REGEX,
29
- 'style' => [
30
- :optional, ClassyHash::G.enum(:solid, :dotted, :dashed)
31
- ],
32
- 'width' => [:optional, UNIT_REGEX],
33
- 'color' => [:optional, String, Symbol],
34
- 'overlay_on_cards' => [:optional, TrueClass]
35
- }]]
36
- },
37
- 'cards' => [[{
38
- 'x' => UNIT_REGEX,
39
- 'y' => UNIT_REGEX,
40
- 'rotate' => [
41
- :optional, Numeric,
42
- ClassyHash::G.enum(:clockwise, :counterclockwise, :turnaround),
43
- ROTATE_REGEX
44
- ]
45
- }]]
46
- }.freeze
47
- end
48
- end
1
+ module Squib
2
+ module Sprues
3
+ UNIT_REGEX = /^(\d*[.])?\d+(in|cm|mm)$/
4
+ ROTATE_REGEX = /^(\d*[.])?\d+(deg|rad)?$/
5
+ SCHEMA = {
6
+ 'sheet_width' => UNIT_REGEX,
7
+ 'sheet_height' => UNIT_REGEX,
8
+ 'card_width' => UNIT_REGEX,
9
+ 'card_height' => UNIT_REGEX,
10
+ 'position_reference' => ClassyHash::G.enum(:topleft, :center),
11
+ 'rotate' => [
12
+ :optional, Numeric,
13
+ ClassyHash::G.enum(:clockwise, :counterclockwise, :turnaround),
14
+ ROTATE_REGEX
15
+ ],
16
+ 'crop_line' => {
17
+ 'style' => [
18
+ ClassyHash::G.enum(:solid, :dotted, :dashed),
19
+ Sprues::CropLineDash::VALIDATION_REGEX
20
+ ],
21
+ 'width' => UNIT_REGEX,
22
+ 'color' => [String, Symbol],
23
+ 'overlay' => ClassyHash::G.enum(
24
+ :on_margin, :overlay_on_cards, :beneath_cards
25
+ ),
26
+ 'lines' => [[{
27
+ 'type' => ClassyHash::G.enum(:horizontal, :vertical),
28
+ 'position' => UNIT_REGEX,
29
+ 'style' => [
30
+ :optional, ClassyHash::G.enum(:solid, :dotted, :dashed)
31
+ ],
32
+ 'width' => [:optional, UNIT_REGEX],
33
+ 'color' => [:optional, String, Symbol],
34
+ 'overlay_on_cards' => [:optional, TrueClass]
35
+ }]]
36
+ },
37
+ 'cards' => [[{
38
+ 'x' => UNIT_REGEX,
39
+ 'y' => UNIT_REGEX,
40
+ 'rotate' => [
41
+ :optional, Numeric,
42
+ ClassyHash::G.enum(:clockwise, :counterclockwise, :turnaround),
43
+ ROTATE_REGEX
44
+ ]
45
+ }]]
46
+ }.freeze
47
+ end
48
+ end
@@ -1,10 +1,10 @@
1
- module Squib
2
-
3
- # The next version to be released.
4
- # Uses semantic versioning: http://semver.org/
5
- #
6
- # Most of the time this is in the alpha of the next release.
7
- # e.g. v0.0.5a is on its way to becoming v0.0.5
8
- #
9
- VERSION = '0.14.2'
10
- end
1
+ module Squib
2
+
3
+ # The next version to be released.
4
+ # Uses semantic versioning: http://semver.org/
5
+ #
6
+ # Most of the time this is in the alpha of the next release.
7
+ # e.g. v0.0.5a is on its way to becoming v0.0.5
8
+ #
9
+ VERSION = '0.14.3.pre1'
10
+ end
@@ -1,29 +1,29 @@
1
- require 'squib'
2
-
3
- # Here's an example of being able to scale a font
4
- # based on the length of individual string.
5
- # Handy for making minor font scales to fill text boxes.
6
- def autoscale(str_array)
7
- str_array.map do | str |
8
- case str.length
9
- when 0..15
10
- 10.66
11
- when 16..20
12
- 6
13
- else
14
- 4
15
- end
16
- end
17
- end
18
-
19
- Squib::Deck.new(width: 300, height: 100, cards: 3) do
20
- background color: :white
21
- rect
22
- title = ['Short & Big',
23
- 'Medium Length & Size',
24
- 'Super duper long string here, therefore a smaller font.']
25
- text str: title, font: 'Arial', font_size: autoscale(title),
26
- x: 10, y:10, align: :center, width: 280, ellipsize: false, hint: :red
27
-
28
- save_sheet columns: 3
29
- end
1
+ require 'squib'
2
+
3
+ # Here's an example of being able to scale a font
4
+ # based on the length of individual string.
5
+ # Handy for making minor font scales to fill text boxes.
6
+ def autoscale(str_array)
7
+ str_array.map do | str |
8
+ case str.length
9
+ when 0..15
10
+ 10.66
11
+ when 16..20
12
+ 6
13
+ else
14
+ 4
15
+ end
16
+ end
17
+ end
18
+
19
+ Squib::Deck.new(width: 300, height: 100, cards: 3) do
20
+ background color: :white
21
+ rect
22
+ title = ['Short & Big',
23
+ 'Medium Length & Size',
24
+ 'Super duper long string here, therefore a smaller font.']
25
+ text str: title, font: 'Arial', font_size: autoscale(title),
26
+ x: 10, y:10, align: :center, width: 280, ellipsize: false, hint: :red
27
+
28
+ save_sheet columns: 3
29
+ end
@@ -1,26 +1,26 @@
1
- require 'squib'
2
-
3
- # Our SVGs are auto-saved after each step using the configuration parameters
4
- Squib::Deck.new(cards: 2, config: '_backend-config.yml') do
5
-
6
- # These are all supported by the SVG backend
7
- background color: :gray
8
- text str: 'Hello, world!', y: 500, width: 825, font: 'Sans bold 24', align: :center
9
- rect x: 38, y: 38, width: 750, height: 1050, x_radius: 38, y_radius: 38
10
- circle x: 100, y: 400, radius: 25
11
- triangle x1: 100, y1: 425, x2: 125, y2: 475, x3: 75, y3: 475
12
- line x1: 100, y1: 620, x2: 720, y2: 620, stroke_width: 15.0
13
- svg file: 'spanner.svg', x: 100, y: 75
14
- png file: 'shiny-purse.png', x: 250, y: 75 # raster can still be used too
15
- png file: 'shiny-purse.png', x: 250, y: 250, mask: :red # still renders as raster
16
- # We can still rasterize whenever we want
17
- save_png prefix: 'backend_'
18
-
19
- showcase file: 'showcase.png', fill_color: 'white'
20
-
21
- # And our PDFs will be vectorized .
22
- save_pdf file: 'backend_vectorized.pdf', gap: 5
23
-
24
- # This one is a known issue. Masking an SVG onto an SVG backend is still buggy.
25
- # svg file: 'glass-heart.svg', x: 100, y: 200, width: 100, height: 100, mask: :sangria
26
- end
1
+ require 'squib'
2
+
3
+ # Our SVGs are auto-saved after each step using the configuration parameters
4
+ Squib::Deck.new(cards: 2, config: '_backend-config.yml') do
5
+
6
+ # These are all supported by the SVG backend
7
+ background color: :gray
8
+ text str: 'Hello, world!', y: 500, width: 825, font: 'Sans bold 24', align: :center
9
+ rect x: 38, y: 38, width: 750, height: 1050, x_radius: 38, y_radius: 38
10
+ circle x: 100, y: 400, radius: 25
11
+ triangle x1: 100, y1: 425, x2: 125, y2: 475, x3: 75, y3: 475
12
+ line x1: 100, y1: 620, x2: 720, y2: 620, stroke_width: 15.0
13
+ svg file: 'spanner.svg', x: 100, y: 75
14
+ png file: 'shiny-purse.png', x: 250, y: 75 # raster can still be used too
15
+ png file: 'shiny-purse.png', x: 250, y: 250, mask: :red # still renders as raster
16
+ # We can still rasterize whenever we want
17
+ save_png prefix: 'backend_'
18
+
19
+ showcase file: 'showcase.png', fill_color: 'white'
20
+
21
+ # And our PDFs will be vectorized .
22
+ save_pdf file: 'backend_vectorized.pdf', gap: 5
23
+
24
+ # This one is a known issue. Masking an SVG onto an SVG backend is still buggy.
25
+ # svg file: 'glass-heart.svg', x: 100, y: 200, width: 100, height: 100, mask: :sangria
26
+ end
@@ -1,19 +1,19 @@
1
- require 'squib'
2
-
3
- data = { 'name' => ['Thief', 'Grifter', 'Mastermind'],
4
- 'level' => [1, 2, 3] }
5
-
6
- Squib::Deck.new(width: 825, height: 1125, cards: 3) do
7
- background color: :white
8
- rect x: 38, y: 38, width: 750, height: 1050, radius: 38
9
- rect x: 75, y: 75, width: 128, height: 128, radius: 25
10
-
11
- text str: data['name'], x: 220, y: 78, font: 'Arial 18'
12
- text str: data['level'], x: 75, y: 85, width: 128,
13
- font: 'Arial 24', align: :center
14
-
15
- png range: [0, 2], file: 'shiny-purse.png', x: 620, y: 75
16
- svg range: 1..2, file: 'spanner.svg', x: 620, y: 218
17
-
18
- save prefix: 'basic_', format: :png
19
- end
1
+ require 'squib'
2
+
3
+ data = { 'name' => ['Thief', 'Grifter', 'Mastermind'],
4
+ 'level' => [1, 2, 3] }
5
+
6
+ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
7
+ background color: :white
8
+ rect x: 38, y: 38, width: 750, height: 1050, radius: 38
9
+ rect x: 75, y: 75, width: 128, height: 128, radius: 25
10
+
11
+ text str: data['name'], x: 220, y: 78, font: 'Arial 18'
12
+ text str: data['level'], x: 75, y: 85, width: 128,
13
+ font: 'Arial 24', align: :center
14
+
15
+ png range: [0, 2], file: 'shiny-purse.png', x: 620, y: 75
16
+ svg range: 1..2, file: 'spanner.svg', x: 620, y: 218
17
+
18
+ save prefix: 'basic_', format: :png
19
+ end
@@ -0,0 +1,13 @@
1
+ # require 'squib'
2
+ require_relative '../../lib/squib'
3
+
4
+
5
+ Squib::Deck.new do
6
+ background color: :white
7
+ # text str: 'Hello, :world:', font_size: 10 do |embed|
8
+ # embed.svg key: ':world:', file: 'A01.svg', width: 10, height: 0
9
+ # end
10
+ svg file: 'A01.svg', width: 0
11
+
12
+ save_png
13
+ end
@@ -1,36 +1,36 @@
1
- require 'squib'
2
-
3
- Squib::Deck.new(width: 75, height: 75, cards: 2) do
4
- # puts "Groups enabled by environment: #{groups.to_a}"
5
-
6
- text str: ['A', 'B']
7
-
8
- build :print_n_play do
9
- rect
10
- save_sheet prefix: 'build_groups_bw_'
11
- end
12
-
13
- build :color do
14
- rect stroke_color: :red, dash: '5 5'
15
- save_png prefix: 'build_groups_color_'
16
- end
17
-
18
- build :test do
19
- save_png range: 0, prefix: 'build_groups_'
20
- end
21
-
22
- end
23
-
24
- # Here's how you can run this on the command line:
25
- #
26
- # --- OSX/Linux (bash or similar shells) ---
27
- # $ ruby build_groups.rb
28
- # $ SQUIB_BUILD=color ruby build_groups.rb
29
- # $ SQUIB_BUILD=print_n_play,test ruby build_groups.rb
30
- #
31
- # --- Windows CMD ---
32
- # $ ruby build_groups.rb
33
- # $ set SQUIB_BUILD=color && ruby build_groups.rb
34
- # $ set SQUIB_BUILD=print_n_play,test && ruby build_groups.rb
35
- #
36
- # Or, better yet... use a Rakefile like the one provided in this gist!
1
+ require 'squib'
2
+
3
+ Squib::Deck.new(width: 75, height: 75, cards: 2) do
4
+ # puts "Groups enabled by environment: #{groups.to_a}"
5
+
6
+ text str: ['A', 'B']
7
+
8
+ build :print_n_play do
9
+ rect
10
+ save_sheet prefix: 'build_groups_bw_'
11
+ end
12
+
13
+ build :color do
14
+ rect stroke_color: :red, dash: '5 5'
15
+ save_png prefix: 'build_groups_color_'
16
+ end
17
+
18
+ build :test do
19
+ save_png range: 0, prefix: 'build_groups_'
20
+ end
21
+
22
+ end
23
+
24
+ # Here's how you can run this on the command line:
25
+ #
26
+ # --- OSX/Linux (bash or similar shells) ---
27
+ # $ ruby build_groups.rb
28
+ # $ SQUIB_BUILD=color ruby build_groups.rb
29
+ # $ SQUIB_BUILD=print_n_play,test ruby build_groups.rb
30
+ #
31
+ # --- Windows CMD ---
32
+ # $ ruby build_groups.rb
33
+ # $ set SQUIB_BUILD=color && ruby build_groups.rb
34
+ # $ set SQUIB_BUILD=print_n_play,test && ruby build_groups.rb
35
+ #
36
+ # Or, better yet... use a Rakefile like the one provided in this gist!
@@ -1,38 +1,38 @@
1
- require 'squib'
2
-
3
- Squib::Deck.new(width: 825, height: 1125, cards: 1) do
4
- background color: :white
5
-
6
- y = 0
7
- text color: '#f00', str: '3-hex', x: 50, y: y += 50
8
- text color: '#f00', str: '3-hex (alpha)', x: 50, y: y += 50
9
- text color: '#ff0000', str: '6-hex', x: 50, y: y += 50
10
- text color: '#ff000099', str: '8-hex(alpha)', x: 50, y: y += 50
11
- text color: '#ffff00000000', str: '12-hex', x: 50, y: y += 50
12
- text color: '#ffff000000009999', str: '12-hex (alpha)', x: 50, y: y += 50
13
- text color: :burnt_orange, str: 'Symbols of constants too', x: 50, y: y += 50
14
- text color: '(0,0)(400,0) blue@0.0 red@1.0', str: 'Linear gradients!', x: 50, y: y += 50
15
- text color: '(200,500,10)(200,500,100) blue@0.0 red@1.0', str: 'Radial gradients!', x: 50, y: y += 50
16
- # see gradients.rb sample for more on gradients
17
-
18
- save_png prefix: 'colors_'
19
- end
20
-
21
- # This script generates a table of the built-in constants
22
- Squib::Deck.new(width: 3000, height: 1500) do
23
- background color: :white
24
- colors = (Cairo::Color.constants - %i(HEX_RE Base RGB CMYK HSV X11))
25
- colors.sort_by! {|c| Cairo::Color.parse(c).to_s}
26
- x, y, w, h = 0, 0, 300, 50
27
- colors.each_with_index do |color, i|
28
- rect x: x, y: y, width: w, height: h, fill_color: color
29
- text str: color.to_s, x: x + 5, y: y + 13, font: 'Sans Bold 5',
30
- color: (Cairo::Color.parse(color).to_hsv.v > 0.9) ? '#000' : '#fff'
31
- y += h
32
- if y > @height
33
- x += w
34
- y = 0
35
- end
36
- end
37
- save_png prefix: 'color_constants_'
38
- end
1
+ require 'squib'
2
+
3
+ Squib::Deck.new(width: 825, height: 1125, cards: 1) do
4
+ background color: :white
5
+
6
+ y = 0
7
+ text color: '#f00', str: '3-hex', x: 50, y: y += 50
8
+ text color: '#f00', str: '3-hex (alpha)', x: 50, y: y += 50
9
+ text color: '#ff0000', str: '6-hex', x: 50, y: y += 50
10
+ text color: '#ff000099', str: '8-hex(alpha)', x: 50, y: y += 50
11
+ text color: '#ffff00000000', str: '12-hex', x: 50, y: y += 50
12
+ text color: '#ffff000000009999', str: '12-hex (alpha)', x: 50, y: y += 50
13
+ text color: :burnt_orange, str: 'Symbols of constants too', x: 50, y: y += 50
14
+ text color: '(0,0)(400,0) blue@0.0 red@1.0', str: 'Linear gradients!', x: 50, y: y += 50
15
+ text color: '(200,500,10)(200,500,100) blue@0.0 red@1.0', str: 'Radial gradients!', x: 50, y: y += 50
16
+ # see gradients.rb sample for more on gradients
17
+
18
+ save_png prefix: 'colors_'
19
+ end
20
+
21
+ # This script generates a table of the built-in constants
22
+ Squib::Deck.new(width: 3000, height: 1500) do
23
+ background color: :white
24
+ colors = (Cairo::Color.constants - %i(HEX_RE Base RGB CMYK HSV X11))
25
+ colors.sort_by! {|c| Cairo::Color.parse(c).to_s}
26
+ x, y, w, h = 0, 0, 300, 50
27
+ colors.each_with_index do |color, i|
28
+ rect x: x, y: y, width: w, height: h, fill_color: color
29
+ text str: color.to_s, x: x + 5, y: y + 13, font: 'Sans Bold 5',
30
+ color: (Cairo::Color.parse(color).to_hsv.v > 0.9) ? '#000' : '#fff'
31
+ y += h
32
+ if y > @height
33
+ x += w
34
+ y = 0
35
+ end
36
+ end
37
+ save_png prefix: 'color_constants_'
38
+ end
@@ -1,34 +1,34 @@
1
- require 'squib'
2
-
3
- Squib::Deck.new do
4
- # Just about anywhere Squib takes in a color it can also take in a gradient too
5
- # The x-y coordinates on the card itself,
6
- # and then color stops are defined between 0 and 1
7
- background color: '(0,0)(0,1125) #ccc@0.0 #111@1.0'
8
- line stroke_color: '(0,0)(825,0) #111@1.0 #ccc@0.0',
9
- x1: 0, y1: 600, x2: 825, y2: 600,
10
- stroke_width: 15
11
-
12
- # Radial gradients look like this
13
- circle fill_color: '(425,400,2)(425,400,120) #ccc@0.0 #111@1.0',
14
- x: 415, y: 415, radius: 100, stroke_color: '#0000'
15
- triangle fill_color: '(650,400,2)(650,400,120) #ccc@0.0 #111@1.0',
16
- stroke_color: '#0000',
17
- x1: 650, y1: 360,
18
- x2: 550, y2: 500,
19
- x3: 750, y3: 500
20
-
21
- # Gradients are also good for beveling effects:
22
- rect fill_color: '(0,200)(0,600) #111@0.0 #ccc@1.0',
23
- x: 30, y: 350, width: 150, height: 150,
24
- radius: 15, stroke_color: '#0000'
25
- rect fill_color: '(0,200)(0,600) #111@1.0 #ccc@0.0',
26
- x: 40, y: 360, width: 130, height: 130,
27
- radius: 15, stroke_color: '#0000'
28
-
29
- # Alpha transparency can be used too
30
- text str: 'Hello, world!', x: 75, y: 700, font: 'Sans Bold 24',
31
- color: '(0,0)(825,0) #000f@0.0 #0000@1.0'
32
-
33
- save_png prefix: 'gradient_'
34
- end
1
+ require 'squib'
2
+
3
+ Squib::Deck.new do
4
+ # Just about anywhere Squib takes in a color it can also take in a gradient too
5
+ # The x-y coordinates on the card itself,
6
+ # and then color stops are defined between 0 and 1
7
+ background color: '(0,0)(0,1125) #ccc@0.0 #111@1.0'
8
+ line stroke_color: '(0,0)(825,0) #111@1.0 #ccc@0.0',
9
+ x1: 0, y1: 600, x2: 825, y2: 600,
10
+ stroke_width: 15
11
+
12
+ # Radial gradients look like this
13
+ circle fill_color: '(425,400,2)(425,400,120) #ccc@0.0 #111@1.0',
14
+ x: 415, y: 415, radius: 100, stroke_color: '#0000'
15
+ triangle fill_color: '(650,400,2)(650,400,120) #ccc@0.0 #111@1.0',
16
+ stroke_color: '#0000',
17
+ x1: 650, y1: 360,
18
+ x2: 550, y2: 500,
19
+ x3: 750, y3: 500
20
+
21
+ # Gradients are also good for beveling effects:
22
+ rect fill_color: '(0,200)(0,600) #111@0.0 #ccc@1.0',
23
+ x: 30, y: 350, width: 150, height: 150,
24
+ radius: 15, stroke_color: '#0000'
25
+ rect fill_color: '(0,200)(0,600) #111@1.0 #ccc@0.0',
26
+ x: 40, y: 360, width: 130, height: 130,
27
+ radius: 15, stroke_color: '#0000'
28
+
29
+ # Alpha transparency can be used too
30
+ text str: 'Hello, world!', x: 75, y: 700, font: 'Sans Bold 24',
31
+ color: '(0,0)(825,0) #000f@0.0 #0000@1.0'
32
+
33
+ save_png prefix: 'gradient_'
34
+ end