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,50 +1,50 @@
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
- 'flip_vertical' => [ :optional, FalseClass ],
46
- 'flip_horizontal' => [ :optional, FalseClass ],
47
- }]]
48
- }.freeze
49
- end
50
- 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
+ 'flip_vertical' => [ :optional, FalseClass ],
46
+ 'flip_horizontal' => [ :optional, FalseClass ],
47
+ }]]
48
+ }.freeze
49
+ end
50
+ 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.15.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.15.3'
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
@@ -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,44 +1,44 @@
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
- colors = (Cairo::Color.constants - %i(HEX_RE Base RGB CMYK HSV X11))
23
- colors.sort_by! do |c|
24
- hsv = Cairo::Color.parse(c).to_hsv
25
- [(hsv.hue / 16.0).to_i, hsv.value, hsv.saturation]
26
- end
27
- w, h = 300, 50
28
- deck_height = 4000
29
- deck_width = (colors.size / ((deck_height / h) + 1)) * w
30
- Squib::Deck.new(width: deck_width, height: deck_height) do
31
- background color: :white
32
- x, y = 0, 0
33
- colors.each_with_index do |color, i|
34
- rect x: x, y: y, width: w, height: h, fill_color: color
35
- text str: color.to_s, x: x + 5, y: y + 13, font: 'Sans Bold 5',
36
- color: (Cairo::Color.parse(color).to_hsv.v > 0.9) ? '#000' : '#fff'
37
- y += h
38
- if y > deck_height
39
- x += w
40
- y = 0
41
- end
42
- end
43
- save_png prefix: 'color_constants_'
44
- 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
+ colors = (Cairo::Color.constants - %i(HEX_RE Base RGB CMYK HSV X11))
23
+ colors.sort_by! do |c|
24
+ hsv = Cairo::Color.parse(c).to_hsv
25
+ [(hsv.hue / 16.0).to_i, hsv.value, hsv.saturation]
26
+ end
27
+ w, h = 300, 50
28
+ deck_height = 4000
29
+ deck_width = (colors.size / ((deck_height / h) + 1)) * w
30
+ Squib::Deck.new(width: deck_width, height: deck_height) do
31
+ background color: :white
32
+ x, y = 0, 0
33
+ colors.each_with_index do |color, i|
34
+ rect x: x, y: y, width: w, height: h, fill_color: color
35
+ text str: color.to_s, x: x + 5, y: y + 13, font: 'Sans Bold 5',
36
+ color: (Cairo::Color.parse(color).to_hsv.v > 0.9) ? '#000' : '#fff'
37
+ y += h
38
+ if y > deck_height
39
+ x += w
40
+ y = 0
41
+ end
42
+ end
43
+ save_png prefix: 'color_constants_'
44
+ 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