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.
- checksums.yaml +4 -4
- data/.gitignore +41 -41
- data/.travis.yml +19 -19
- data/CHANGELOG.md +366 -357
- data/CONTRIBUTING.md +40 -40
- data/Gemfile +2 -2
- data/LICENSE.txt +22 -22
- data/README.md +121 -121
- data/RELEASE TODO.md +21 -21
- data/Rakefile +48 -48
- data/appveyor.yml +24 -24
- data/bin/squib +4 -4
- data/lib/squib.rb +32 -32
- data/lib/squib/api/background.rb +15 -15
- data/lib/squib/api/data.rb +137 -137
- data/lib/squib/api/groups.rb +54 -54
- data/lib/squib/api/image.rb +49 -49
- data/lib/squib/api/save.rb +83 -83
- data/lib/squib/api/settings.rb +21 -21
- data/lib/squib/api/shapes.rb +124 -124
- data/lib/squib/api/text.rb +25 -25
- data/lib/squib/api/text_embed.rb +71 -71
- data/lib/squib/api/units.rb +27 -27
- data/lib/squib/args/arg_loader.rb +126 -126
- data/lib/squib/args/box.rb +55 -55
- data/lib/squib/args/card_range.rb +32 -32
- data/lib/squib/args/color_validator.rb +12 -12
- data/lib/squib/args/coords.rb +35 -35
- data/lib/squib/args/csv_opts.rb +25 -25
- data/lib/squib/args/dir_validator.rb +16 -16
- data/lib/squib/args/draw.rb +92 -92
- data/lib/squib/args/embed_adjust.rb +25 -25
- data/lib/squib/args/embed_key.rb +17 -17
- data/lib/squib/args/hand_special.rb +37 -37
- data/lib/squib/args/import.rb +40 -40
- data/lib/squib/args/input_file.rb +37 -37
- data/lib/squib/args/paint.rb +44 -44
- data/lib/squib/args/paragraph.rb +116 -116
- data/lib/squib/args/save_batch.rb +63 -63
- data/lib/squib/args/scale_box.rb +53 -53
- data/lib/squib/args/sheet.rb +172 -172
- data/lib/squib/args/showcase_special.rb +38 -38
- data/lib/squib/args/sprue_file.rb +44 -44
- data/lib/squib/args/svg_special.rb +37 -37
- data/lib/squib/args/transform.rb +61 -61
- data/lib/squib/args/typographer.rb +119 -119
- data/lib/squib/args/unit_conversion.rb +29 -29
- data/lib/squib/builtin/layouts/economy.yml +85 -85
- data/lib/squib/builtin/layouts/fantasy.yml +101 -101
- data/lib/squib/builtin/layouts/hand.yml +62 -62
- data/lib/squib/builtin/layouts/party.yml +94 -94
- data/lib/squib/builtin/layouts/playing-card.yml +35 -35
- data/lib/squib/builtin/layouts/tuck_box.yml +46 -46
- data/lib/squib/builtin/projects/advanced/.gitignore +4 -4
- data/lib/squib/builtin/projects/advanced/ABOUT.md +19 -19
- data/lib/squib/builtin/projects/advanced/Gemfile +11 -11
- data/lib/squib/builtin/projects/advanced/Guardfile +21 -21
- data/lib/squib/builtin/projects/advanced/IDEAS.md +22 -22
- data/lib/squib/builtin/projects/advanced/PLAYTESTING.md +26 -26
- data/lib/squib/builtin/projects/advanced/Rakefile +27 -27
- data/lib/squib/builtin/projects/advanced/config.yml +53 -49
- data/lib/squib/builtin/projects/advanced/docs/PNP NOTES.md +3 -3
- data/lib/squib/builtin/projects/advanced/docs/RULES.md +21 -21
- data/lib/squib/builtin/projects/advanced/img/example.svg +60 -60
- data/lib/squib/builtin/projects/advanced/layouts/deck.yml +27 -27
- data/lib/squib/builtin/projects/advanced/src/deck.rb +34 -34
- data/lib/squib/builtin/projects/advanced/src/version.rb +3 -3
- data/lib/squib/builtin/projects/basic/.gitignore +4 -4
- data/lib/squib/builtin/projects/basic/ABOUT.md +19 -19
- data/lib/squib/builtin/projects/basic/Gemfile +3 -3
- data/lib/squib/builtin/projects/basic/IDEAS.md +22 -22
- data/lib/squib/builtin/projects/basic/PLAYTESTING.md +26 -26
- data/lib/squib/builtin/projects/basic/PNP NOTES.md +3 -3
- data/lib/squib/builtin/projects/basic/RULES.md +21 -21
- data/lib/squib/builtin/projects/basic/Rakefile +7 -7
- data/lib/squib/builtin/projects/basic/config.yml +53 -49
- data/lib/squib/builtin/projects/basic/deck.rb +6 -6
- data/lib/squib/builtin/sprues/a4_euro_card.yml +42 -42
- data/lib/squib/builtin/sprues/a4_poker_card_8up.yml +40 -40
- data/lib/squib/builtin/sprues/a4_poker_card_9up.yml +42 -42
- data/lib/squib/builtin/sprues/a4_usa_card.yml +42 -42
- data/lib/squib/builtin/sprues/drivethrucards_1up.yml +10 -10
- data/lib/squib/builtin/sprues/letter_poker_card_9up.yml +25 -25
- data/lib/squib/builtin/sprues/letter_poker_foldable_8up.yml +52 -52
- data/lib/squib/builtin/sprues/printplaygames_18up.yml +68 -68
- data/lib/squib/card.rb +75 -75
- data/lib/squib/commands/cli.rb +39 -39
- data/lib/squib/commands/data/template_option.rb +109 -109
- data/lib/squib/commands/make_sprue.rb +275 -275
- data/lib/squib/commands/new.rb +77 -77
- data/lib/squib/conf.rb +144 -139
- data/lib/squib/constants.rb +17 -17
- data/lib/squib/deck.rb +116 -116
- data/lib/squib/graphics/background.rb +14 -14
- data/lib/squib/graphics/cairo_context_wrapper.rb +113 -113
- data/lib/squib/graphics/embedding_utils.rb +28 -28
- data/lib/squib/graphics/gradient_regex.rb +47 -47
- data/lib/squib/graphics/hand.rb +42 -42
- data/lib/squib/graphics/image.rb +129 -108
- data/lib/squib/graphics/save_doc.rb +61 -61
- data/lib/squib/graphics/save_images.rb +52 -52
- data/lib/squib/graphics/save_pdf.rb +90 -90
- data/lib/squib/graphics/save_sprue.rb +204 -204
- data/lib/squib/graphics/shapes.rb +143 -143
- data/lib/squib/graphics/showcase.rb +85 -85
- data/lib/squib/graphics/text.rb +174 -174
- data/lib/squib/import/data_frame.rb +108 -108
- data/lib/squib/layout_parser.rb +138 -138
- data/lib/squib/progress.rb +38 -38
- data/lib/squib/sample_helpers.rb +34 -34
- data/lib/squib/sprues/crop_line.rb +28 -28
- data/lib/squib/sprues/crop_line_dash.rb +35 -35
- data/lib/squib/sprues/invalid_sprue_definition.rb +9 -9
- data/lib/squib/sprues/sprue.rb +203 -203
- data/lib/squib/sprues/sprue_schema.rb +48 -48
- data/lib/squib/version.rb +10 -10
- data/samples/autoscale_font/_autoscale_font.rb +29 -29
- data/samples/backend/_backend.rb +26 -26
- data/samples/basic.rb +19 -19
- data/samples/bug256/_bug256.rb +13 -0
- data/samples/build_groups/build_groups.rb +36 -36
- data/samples/colors/_colors.rb +38 -38
- data/samples/colors/_gradients.rb +34 -34
- data/samples/config/config_text_markup.rb +20 -20
- data/samples/config/custom_config.rb +18 -18
- data/samples/data/_csv.rb +33 -33
- data/samples/data/_excel.rb +55 -55
- data/samples/data/_yaml.rb +12 -12
- data/samples/hello_world.rb +6 -6
- data/samples/images/_cairo_access.rb +39 -39
- data/samples/images/_images.rb +104 -104
- data/samples/images/_more_load_images.rb +102 -102
- data/samples/intro/01_hello.rb +8 -8
- data/samples/intro/02_options.rb +14 -14
- data/samples/intro/03_layout.rb +11 -11
- data/samples/intro/04_arrays.rb +15 -15
- data/samples/intro/05_excel.rb +14 -14
- data/samples/layouts/builtin_layouts.rb +97 -97
- data/samples/layouts/layouts.rb +71 -71
- data/samples/project/src/characters.rb +8 -8
- data/samples/project/src/skills.rb +7 -7
- data/samples/proofs/_tgc_proofs.rb +16 -16
- data/samples/ranges/_ranges.rb +64 -64
- data/samples/saves/_hand.rb +23 -23
- data/samples/saves/_portrait_landscape.rb +23 -23
- data/samples/saves/_save_pdf.rb +29 -29
- data/samples/saves/_saves.rb +51 -51
- data/samples/saves/_showcase.rb +25 -25
- data/samples/shapes/_draw_shapes.rb +60 -60
- data/samples/shapes/_proofs.rb +22 -22
- data/samples/sprues/_advanced_sprues.rb +24 -24
- data/samples/sprues/_builtin_sprues.rb +21 -21
- data/samples/sprues/_fold_sheet.rb +27 -27
- data/samples/sprues/_hex_tiles.rb +15 -15
- data/samples/sprues/_mints.rb +11 -11
- data/samples/sprues/_sprue_example.rb +11 -11
- data/samples/text/_embed_text.rb +128 -128
- data/samples/text/_text.rb +47 -47
- data/samples/text/_text_options.rb +102 -102
- data/samples/text/bug134.rb +14 -14
- data/samples/units/_units.rb +32 -32
- data/squib.gemspec +52 -52
- 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
|
data/lib/squib/version.rb
CHANGED
|
@@ -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.
|
|
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
|
data/samples/backend/_backend.rb
CHANGED
|
@@ -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
|
data/samples/basic.rb
CHANGED
|
@@ -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!
|
data/samples/colors/_colors.rb
CHANGED
|
@@ -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
|