squib 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/CHANGELOG.md +11 -1
- data/README.md +24 -4
- data/Rakefile +2 -0
- data/benchmarks/antialias_best.rb +13 -0
- data/benchmarks/antialias_best.yml +1 -0
- data/benchmarks/antialias_fast.rb +13 -0
- data/benchmarks/antialias_fast.yml +1 -0
- data/benchmarks/backend-memory.rb +14 -0
- data/benchmarks/backend-svg.rb +14 -0
- data/benchmarks/backend-svg.yml +4 -0
- data/lib/squib/api/image.rb +2 -2
- data/lib/squib/api/save.rb +3 -3
- data/lib/squib/card.rb +23 -4
- data/lib/squib/constants.rb +14 -4
- data/lib/squib/deck.rb +24 -11
- data/lib/squib/graphics/cairo_context_wrapper.rb +2 -1
- data/lib/squib/graphics/image.rb +13 -12
- data/lib/squib/graphics/save_doc.rb +37 -18
- data/lib/squib/graphics/shapes.rb +1 -0
- data/lib/squib/project_template/config.yml +8 -1
- data/lib/squib/version.rb +1 -1
- data/samples/backend-config.yml +5 -0
- data/samples/backend.rb +33 -0
- data/samples/glass-heart.svg +52 -52
- data/samples/load_images.rb +3 -3
- data/spec/data/samples/autoscale_font.rb.txt +9 -3
- data/spec/data/samples/basic.rb.txt +12 -15
- data/spec/data/samples/cairo_access.rb.txt +2 -0
- data/spec/data/samples/csv_import.rb.txt +8 -6
- data/spec/data/samples/custom_config.rb.txt +10 -7
- data/spec/data/samples/draw_shapes.rb.txt +2 -0
- data/spec/data/samples/excel.rb.txt +12 -9
- data/spec/data/samples/gradients.rb.txt +3 -1
- data/spec/data/samples/hello_world.rb.txt +4 -2
- data/spec/data/samples/load_images.rb.txt +19 -38
- data/spec/data/samples/portrait-landscape.rb.txt +4 -2
- data/spec/data/samples/ranges.rb.txt +27 -24
- data/spec/data/samples/saves.rb.txt +161 -84
- data/spec/data/samples/showcase.rb.txt +13 -21
- data/spec/data/samples/text_options.rb.txt +48 -39
- data/spec/data/samples/tgc_proofs.rb.txt +5 -7
- data/spec/data/samples/units.rb.txt +1 -0
- data/spec/deck_spec.rb +1 -1
- data/spec/graphics/graphics_images_spec.rb +7 -3
- data/spec/graphics/graphics_save_doc_spec.rb +36 -39
- data/spec/graphics/graphics_shapes_spec.rb +9 -0
- data/spec/graphics/graphics_text_spec.rb +73 -62
- data/spec/input_helpers_spec.rb +27 -10
- data/spec/spec_helper.rb +12 -9
- data/squib.gemspec +2 -2
- metadata +27 -17
@@ -4,6 +4,9 @@
|
|
4
4
|
# Default: 300
|
5
5
|
#dpi: 72
|
6
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
|
+
|
7
10
|
# Text hints are used to show the boundaries of text boxes.
|
8
11
|
# Can be enabled/disabled at the command-level, or set globally with `set`
|
9
12
|
#text_hint: '#F00'
|
@@ -17,4 +20,8 @@
|
|
17
20
|
|
18
21
|
#For reading image file command (e.g. png and svg), read from this directory instead
|
19
22
|
#img_dir: img-color
|
20
|
-
#img_dir: img-bw
|
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.
|
data/lib/squib/version.rb
CHANGED
data/samples/backend.rb
ADDED
@@ -0,0 +1,33 @@
|
|
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 72', 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
|
+
# And our PDFs will be vectorized .
|
20
|
+
save_pdf file: 'backend_vectorized.pdf', gap: 5
|
21
|
+
|
22
|
+
# This one is a known issue. Masking an SVG onto an SVG backend is still buggy.
|
23
|
+
# svg file: 'glass-heart.svg', x: 100, y: 200, width: 100, height: 100, mask: :sangria
|
24
|
+
|
25
|
+
# This one is, unfortunately, not possible with svg back ends
|
26
|
+
# Cairo lacks a perspective transform (currently), so we have to
|
27
|
+
# use a striping method, which assumes raster. Fortunately, Cairo
|
28
|
+
# has perspective transforms on its roadmap,
|
29
|
+
# so perhaps this can be done someday with all vectors.
|
30
|
+
#
|
31
|
+
# showcase file: 'showcase.png', fill_color: 'white'
|
32
|
+
|
33
|
+
end
|
data/samples/glass-heart.svg
CHANGED
@@ -1,52 +1,52 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
-
<svg
|
3
|
-
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
4
|
-
xmlns:cc="http://creativecommons.org/ns#"
|
5
|
-
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
6
|
-
xmlns:svg="http://www.w3.org/2000/svg"
|
7
|
-
xmlns="http://www.w3.org/2000/svg"
|
8
|
-
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
9
|
-
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
10
|
-
viewBox="0 0 512 512"
|
11
|
-
id="svg2"
|
12
|
-
version="1.1"
|
13
|
-
inkscape:version="0.91 r13725"
|
14
|
-
sodipodi:docname="glass-heart.svg">
|
15
|
-
<metadata
|
16
|
-
id="metadata22">
|
17
|
-
<rdf:RDF>
|
18
|
-
<cc:Work
|
19
|
-
rdf:about="">
|
20
|
-
<dc:format>image/svg+xml</dc:format>
|
21
|
-
<dc:type
|
22
|
-
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
23
|
-
</cc:Work>
|
24
|
-
</rdf:RDF>
|
25
|
-
</metadata>
|
26
|
-
<defs
|
27
|
-
id="defs20" />
|
28
|
-
<sodipodi:namedview
|
29
|
-
pagecolor="#ffffff"
|
30
|
-
bordercolor="#666666"
|
31
|
-
borderopacity="1"
|
32
|
-
objecttolerance="10"
|
33
|
-
gridtolerance="10"
|
34
|
-
guidetolerance="10"
|
35
|
-
inkscape:pageopacity="0"
|
36
|
-
inkscape:pageshadow="2"
|
37
|
-
inkscape:window-width="1920"
|
38
|
-
inkscape:window-height="1018"
|
39
|
-
id="namedview18"
|
40
|
-
showgrid="false"
|
41
|
-
inkscape:zoom="1.3037281"
|
42
|
-
inkscape:cx="399.78879"
|
43
|
-
inkscape:cy="267.43808"
|
44
|
-
inkscape:window-x="-8"
|
45
|
-
inkscape:window-y="-8"
|
46
|
-
inkscape:window-maximized="1"
|
47
|
-
inkscape:current-layer="svg2" />
|
48
|
-
<path
|
49
|
-
style="fill:#000000;stroke:#000000;stroke-width:18.68857956;stroke-opacity:1;fill-opacity:1"
|
50
|
-
d="M 371.24414 28.179688 C 329.86691 28.096623 287.41274 51.03218 261.00391 102.875 C 196.11155 -14.027671 24.628137 13.619783 29.029297 157.66016 C 33.157605 292.77111 183.5304 347.1093 261.00391 481.30078 C 338.40266 347.24199 496.61198 301.41271 492.29492 157.66016 C 489.89034 77.591144 431.71855 28.301089 371.24414 28.179688 z M 358.9082 49.480469 C 372.3905 49.61861 388.76091 53.818062 405.73047 62.265625 C 444.51802 81.57434 471.74936 115.76108 466.55273 138.62305 C 461.3561 161.48501 425.69966 164.36536 386.91211 145.05664 C 348.12455 125.74793 320.89517 91.56314 326.0918 68.701172 C 329.0149 55.841315 341.57382 49.302858 358.9082 49.480469 z M 148.91016 49.492188 C 159.88856 49.603754 173.21708 52.996781 187.03516 59.820312 C 218.61934 75.416956 240.79389 103.02923 236.5625 121.49609 C 232.3311 139.96294 203.29706 142.29 171.71289 126.69336 C 140.12871 111.09671 117.95416 83.482482 122.18555 65.015625 C 124.56571 54.628018 134.79506 49.348745 148.91016 49.492188 z M 263.11719 179.0332 C 373.07132 179.0332 462.20703 196.90249 462.20703 218.94727 C 462.20703 223.81036 457.86399 228.46946 449.92188 232.7793 C 411.40329 313.40731 320.36729 360.01624 263.00195 457.04297 C 206.07092 360.7538 119.55662 313.16333 78.189453 235.61133 C 84.123672 237.57886 90.694402 239.43942 97.783203 241.1875 C 76.471815 234.83175 64.027344 227.18135 64.027344 218.94727 C 64.027344 196.90249 153.16306 179.0332 263.11719 179.0332 z M 97.783203 241.1875 C 133.52789 251.84773 194.23275 258.86328 263.11719 258.86328 C 348.81534 258.86328 421.8618 248.00627 449.92188 232.7793 C 450.10835 232.38896 450.30232 232.00327 450.48633 231.61133 C 365.1295 267.11537 188.10527 263.46067 97.783203 241.1875 z "
|
51
|
-
id="path10" />
|
52
|
-
</svg>
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<svg
|
3
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
4
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
5
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
6
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
8
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
9
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
10
|
+
viewBox="0 0 512 512"
|
11
|
+
id="svg2"
|
12
|
+
version="1.1"
|
13
|
+
inkscape:version="0.91 r13725"
|
14
|
+
sodipodi:docname="glass-heart.svg">
|
15
|
+
<metadata
|
16
|
+
id="metadata22">
|
17
|
+
<rdf:RDF>
|
18
|
+
<cc:Work
|
19
|
+
rdf:about="">
|
20
|
+
<dc:format>image/svg+xml</dc:format>
|
21
|
+
<dc:type
|
22
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
23
|
+
</cc:Work>
|
24
|
+
</rdf:RDF>
|
25
|
+
</metadata>
|
26
|
+
<defs
|
27
|
+
id="defs20" />
|
28
|
+
<sodipodi:namedview
|
29
|
+
pagecolor="#ffffff"
|
30
|
+
bordercolor="#666666"
|
31
|
+
borderopacity="1"
|
32
|
+
objecttolerance="10"
|
33
|
+
gridtolerance="10"
|
34
|
+
guidetolerance="10"
|
35
|
+
inkscape:pageopacity="0"
|
36
|
+
inkscape:pageshadow="2"
|
37
|
+
inkscape:window-width="1920"
|
38
|
+
inkscape:window-height="1018"
|
39
|
+
id="namedview18"
|
40
|
+
showgrid="false"
|
41
|
+
inkscape:zoom="1.3037281"
|
42
|
+
inkscape:cx="399.78879"
|
43
|
+
inkscape:cy="267.43808"
|
44
|
+
inkscape:window-x="-8"
|
45
|
+
inkscape:window-y="-8"
|
46
|
+
inkscape:window-maximized="1"
|
47
|
+
inkscape:current-layer="svg2" />
|
48
|
+
<path
|
49
|
+
style="fill:#000000;stroke:#000000;stroke-width:18.68857956;stroke-opacity:1;fill-opacity:1"
|
50
|
+
d="M 371.24414 28.179688 C 329.86691 28.096623 287.41274 51.03218 261.00391 102.875 C 196.11155 -14.027671 24.628137 13.619783 29.029297 157.66016 C 33.157605 292.77111 183.5304 347.1093 261.00391 481.30078 C 338.40266 347.24199 496.61198 301.41271 492.29492 157.66016 C 489.89034 77.591144 431.71855 28.301089 371.24414 28.179688 z M 358.9082 49.480469 C 372.3905 49.61861 388.76091 53.818062 405.73047 62.265625 C 444.51802 81.57434 471.74936 115.76108 466.55273 138.62305 C 461.3561 161.48501 425.69966 164.36536 386.91211 145.05664 C 348.12455 125.74793 320.89517 91.56314 326.0918 68.701172 C 329.0149 55.841315 341.57382 49.302858 358.9082 49.480469 z M 148.91016 49.492188 C 159.88856 49.603754 173.21708 52.996781 187.03516 59.820312 C 218.61934 75.416956 240.79389 103.02923 236.5625 121.49609 C 232.3311 139.96294 203.29706 142.29 171.71289 126.69336 C 140.12871 111.09671 117.95416 83.482482 122.18555 65.015625 C 124.56571 54.628018 134.79506 49.348745 148.91016 49.492188 z M 263.11719 179.0332 C 373.07132 179.0332 462.20703 196.90249 462.20703 218.94727 C 462.20703 223.81036 457.86399 228.46946 449.92188 232.7793 C 411.40329 313.40731 320.36729 360.01624 263.00195 457.04297 C 206.07092 360.7538 119.55662 313.16333 78.189453 235.61133 C 84.123672 237.57886 90.694402 239.43942 97.783203 241.1875 C 76.471815 234.83175 64.027344 227.18135 64.027344 218.94727 C 64.027344 196.90249 153.16306 179.0332 263.11719 179.0332 z M 97.783203 241.1875 C 133.52789 251.84773 194.23275 258.86328 263.11719 258.86328 C 348.81534 258.86328 421.8618 248.00627 449.92188 232.7793 C 450.10835 232.38896 450.30232 232.00327 450.48633 231.61133 C 365.1295 267.11537 188.10527 263.46067 97.783203 241.1875 z "
|
51
|
+
id="path10" />
|
52
|
+
</svg>
|
data/samples/load_images.rb
CHANGED
@@ -13,8 +13,8 @@ Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
|
13
13
|
#...but PNGs will warn if it's an upscale
|
14
14
|
|
15
15
|
# We can also limit our rendering to a single object, if the SVG ID is set
|
16
|
-
# Squib prepends a #-sign if one is not specified
|
17
16
|
svg file: 'spanner.svg', id: '#backdrop', x: 50, y: 350, width: 75, height: 75
|
17
|
+
# Squib prepends a #-sign if one is not specified
|
18
18
|
svg file: 'spanner.svg', id: 'backdrop', x: 50, y: 450, width: 125, height: 125
|
19
19
|
|
20
20
|
# WARNING! If you choose to use the SVG ID, the x-y coordinates are still
|
@@ -38,11 +38,11 @@ Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
|
38
38
|
svg mask: '#00ff00',
|
39
39
|
file: 'glass-heart.svg',
|
40
40
|
x: 500, y: 600, width: 200, height: 200
|
41
|
-
svg mask: '(
|
41
|
+
svg mask: '(0,0)(0,500) #ccc@0.0 #333@1.0',
|
42
42
|
file: 'glass-heart.svg',
|
43
43
|
x: 500, y: 800, width: 200, height: 200
|
44
44
|
|
45
|
-
# Masks are based on
|
45
|
+
# Masks are based on the alpha channel, so this is just a magenta square
|
46
46
|
png mask: :magenta, file: 'shiny-purse.png',
|
47
47
|
x: 650, y: 950
|
48
48
|
|
@@ -1,3 +1,6 @@
|
|
1
|
+
cairo: antialias=(["subpixel"])
|
2
|
+
cairo: antialias=(["subpixel"])
|
3
|
+
cairo: antialias=(["subpixel"])
|
1
4
|
cairo: save([])
|
2
5
|
cairo: set_source_color([:white])
|
3
6
|
cairo: paint([])
|
@@ -16,7 +19,8 @@ cairo: translate([65, 400])
|
|
16
19
|
cairo: rotate([0])
|
17
20
|
cairo: translate([-65, -400])
|
18
21
|
cairo: move_to([65, 400])
|
19
|
-
pango:
|
22
|
+
pango font: size=([128000])
|
23
|
+
pango: font_description=([MockDouble])
|
20
24
|
pango: text=(["ShortBig"])
|
21
25
|
pango: width=([716800])
|
22
26
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
@@ -38,7 +42,8 @@ cairo: translate([65, 400])
|
|
38
42
|
cairo: rotate([0])
|
39
43
|
cairo: translate([-65, -400])
|
40
44
|
cairo: move_to([65, 400])
|
41
|
-
pango:
|
45
|
+
pango font: size=([46080])
|
46
|
+
pango: font_description=([MockDouble])
|
42
47
|
pango: text=(["Medium_Length_Name"])
|
43
48
|
pango: width=([716800])
|
44
49
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
@@ -60,7 +65,8 @@ cairo: translate([65, 400])
|
|
60
65
|
cairo: rotate([0])
|
61
66
|
cairo: translate([-65, -400])
|
62
67
|
cairo: move_to([65, 400])
|
63
|
-
pango:
|
68
|
+
pango font: size=([36864])
|
69
|
+
pango: font_description=([MockDouble])
|
64
70
|
pango: text=(["Super_Duper_Long_Name"])
|
65
71
|
pango: width=([716800])
|
66
72
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
@@ -1,3 +1,6 @@
|
|
1
|
+
cairo: antialias=(["subpixel"])
|
2
|
+
cairo: antialias=(["subpixel"])
|
3
|
+
cairo: antialias=(["subpixel"])
|
1
4
|
cairo: save([])
|
2
5
|
cairo: set_source_color([:white])
|
3
6
|
cairo: paint([])
|
@@ -70,7 +73,7 @@ cairo: translate([220, 78])
|
|
70
73
|
cairo: rotate([0])
|
71
74
|
cairo: translate([-220, -78])
|
72
75
|
cairo: move_to([220, 78])
|
73
|
-
pango: font_description=([])
|
76
|
+
pango: font_description=([MockDouble])
|
74
77
|
pango: text=(["Thief"])
|
75
78
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
76
79
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -87,7 +90,7 @@ cairo: translate([220, 78])
|
|
87
90
|
cairo: rotate([0])
|
88
91
|
cairo: translate([-220, -78])
|
89
92
|
cairo: move_to([220, 78])
|
90
|
-
pango: font_description=([])
|
93
|
+
pango: font_description=([MockDouble])
|
91
94
|
pango: text=(["Grifter"])
|
92
95
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
93
96
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -104,7 +107,7 @@ cairo: translate([220, 78])
|
|
104
107
|
cairo: rotate([0])
|
105
108
|
cairo: translate([-220, -78])
|
106
109
|
cairo: move_to([220, 78])
|
107
|
-
pango: font_description=([])
|
110
|
+
pango: font_description=([MockDouble])
|
108
111
|
pango: text=(["Mastermind"])
|
109
112
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
110
113
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -121,7 +124,7 @@ cairo: translate([75, 85])
|
|
121
124
|
cairo: rotate([0])
|
122
125
|
cairo: translate([-75, -85])
|
123
126
|
cairo: move_to([75, 85])
|
124
|
-
pango: font_description=([])
|
127
|
+
pango: font_description=([MockDouble])
|
125
128
|
pango: text=(["1"])
|
126
129
|
pango: width=([131072])
|
127
130
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
@@ -139,7 +142,7 @@ cairo: translate([75, 85])
|
|
139
142
|
cairo: rotate([0])
|
140
143
|
cairo: translate([-75, -85])
|
141
144
|
cairo: move_to([75, 85])
|
142
|
-
pango: font_description=([])
|
145
|
+
pango: font_description=([MockDouble])
|
143
146
|
pango: text=(["2"])
|
144
147
|
pango: width=([131072])
|
145
148
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
@@ -157,7 +160,7 @@ cairo: translate([75, 85])
|
|
157
160
|
cairo: rotate([0])
|
158
161
|
cairo: translate([-75, -85])
|
159
162
|
cairo: move_to([75, 85])
|
160
|
-
pango: font_description=([])
|
163
|
+
pango: font_description=([MockDouble])
|
161
164
|
pango: text=(["3"])
|
162
165
|
pango: width=([131072])
|
163
166
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
@@ -183,23 +186,17 @@ cairo: translate([-620, -75])
|
|
183
186
|
cairo: set_source([ImageSurface, 620, 75])
|
184
187
|
cairo: paint([1.0])
|
185
188
|
cairo: restore([])
|
186
|
-
cairo: scale([1.0, 1.0])
|
187
|
-
cairo: render_rsvg_handle([RSVG::Handle, nil])
|
188
189
|
cairo: save([])
|
189
190
|
cairo: translate([620, 218])
|
190
191
|
cairo: rotate([0])
|
191
|
-
cairo: translate([-620, -218])
|
192
|
-
cairo: set_source([MockDouble, 620, 218])
|
193
|
-
cairo: paint([1.0])
|
194
|
-
cairo: restore([])
|
195
192
|
cairo: scale([1.0, 1.0])
|
196
193
|
cairo: render_rsvg_handle([RSVG::Handle, nil])
|
194
|
+
cairo: restore([])
|
197
195
|
cairo: save([])
|
198
196
|
cairo: translate([620, 218])
|
199
197
|
cairo: rotate([0])
|
200
|
-
cairo:
|
201
|
-
cairo:
|
202
|
-
cairo: paint([1.0])
|
198
|
+
cairo: scale([1.0, 1.0])
|
199
|
+
cairo: render_rsvg_handle([RSVG::Handle, nil])
|
203
200
|
cairo: restore([])
|
204
201
|
surface: write_to_png(["_output/basic_00.png"])
|
205
202
|
surface: write_to_png(["_output/basic_01.png"])
|
@@ -1,3 +1,5 @@
|
|
1
|
+
cairo: antialias=(["subpixel"])
|
2
|
+
cairo: antialias=(["subpixel"])
|
1
3
|
cairo: save([])
|
2
4
|
cairo: set_source_color([:white])
|
3
5
|
cairo: paint([])
|
@@ -12,7 +14,7 @@ cairo: translate([250, 55])
|
|
12
14
|
cairo: rotate([0])
|
13
15
|
cairo: translate([-250, -55])
|
14
16
|
cairo: move_to([250, 55])
|
15
|
-
pango: font_description=([])
|
17
|
+
pango: font_description=([MockDouble])
|
16
18
|
pango: text=([""])
|
17
19
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
18
20
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -29,7 +31,7 @@ cairo: translate([250, 55])
|
|
29
31
|
cairo: rotate([0])
|
30
32
|
cairo: translate([-250, -55])
|
31
33
|
cairo: move_to([250, 55])
|
32
|
-
pango: font_description=([])
|
34
|
+
pango: font_description=([MockDouble])
|
33
35
|
pango: text=([""])
|
34
36
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
35
37
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -46,7 +48,7 @@ cairo: translate([65, 65])
|
|
46
48
|
cairo: rotate([0])
|
47
49
|
cairo: translate([-65, -65])
|
48
50
|
cairo: move_to([65, 65])
|
49
|
-
pango: font_description=([])
|
51
|
+
pango: font_description=([MockDouble])
|
50
52
|
pango: text=([""])
|
51
53
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
52
54
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -63,7 +65,7 @@ cairo: translate([65, 65])
|
|
63
65
|
cairo: rotate([0])
|
64
66
|
cairo: translate([-65, -65])
|
65
67
|
cairo: move_to([65, 65])
|
66
|
-
pango: font_description=([])
|
68
|
+
pango: font_description=([MockDouble])
|
67
69
|
pango: text=([""])
|
68
70
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
69
71
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -80,7 +82,7 @@ cairo: translate([65, 600])
|
|
80
82
|
cairo: rotate([0])
|
81
83
|
cairo: translate([-65, -600])
|
82
84
|
cairo: move_to([65, 600])
|
83
|
-
pango: font_description=([])
|
85
|
+
pango: font_description=([MockDouble])
|
84
86
|
pango: text=([""])
|
85
87
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
86
88
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -97,7 +99,7 @@ cairo: translate([65, 600])
|
|
97
99
|
cairo: rotate([0])
|
98
100
|
cairo: translate([-65, -600])
|
99
101
|
cairo: move_to([65, 600])
|
100
|
-
pango: font_description=([])
|
102
|
+
pango: font_description=([MockDouble])
|
101
103
|
pango: text=([""])
|
102
104
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
103
105
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -1,3 +1,4 @@
|
|
1
|
+
cairo: antialias=(["subpixel"])
|
1
2
|
cairo: save([])
|
2
3
|
cairo: set_source_color(["#ccc"])
|
3
4
|
cairo: paint([])
|
@@ -8,7 +9,7 @@ cairo: translate([0, 78])
|
|
8
9
|
cairo: rotate([0])
|
9
10
|
cairo: translate([0, -78])
|
10
11
|
cairo: move_to([0, 78])
|
11
|
-
pango: font_description=([])
|
12
|
+
pango: font_description=([MockDouble])
|
12
13
|
pango: text=(["The Title"])
|
13
14
|
pango: width=([844800])
|
14
15
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
@@ -31,15 +32,17 @@ cairo: translate([-620, -75])
|
|
31
32
|
cairo: set_source([ImageSurface, 620, 75])
|
32
33
|
cairo: paint([1.0])
|
33
34
|
cairo: restore([])
|
34
|
-
cairo: scale([1.0, 1.0])
|
35
|
-
cairo: render_rsvg_handle([RSVG::Handle, nil])
|
36
35
|
cairo: save([])
|
37
36
|
cairo: translate([620, 218])
|
38
37
|
cairo: rotate([0])
|
39
|
-
cairo:
|
40
|
-
cairo:
|
41
|
-
cairo: paint([1.0])
|
38
|
+
cairo: scale([1.0, 1.0])
|
39
|
+
cairo: render_rsvg_handle([RSVG::Handle, nil])
|
42
40
|
cairo: restore([])
|
43
41
|
surface: write_to_png(["_output/custom-config_00.png"])
|
44
|
-
cairo:
|
42
|
+
cairo: translate([75, 75])
|
43
|
+
cairo: rectangle([0, 0, 825, 1125])
|
44
|
+
cairo: clip([])
|
45
|
+
cairo: set_source([MockDouble, 0, 0])
|
45
46
|
cairo: paint([])
|
47
|
+
cairo: reset_clip([])
|
48
|
+
cairo: translate([-75, -75])
|
@@ -1,3 +1,4 @@
|
|
1
|
+
cairo: antialias=(["subpixel"])
|
1
2
|
cairo: save([])
|
2
3
|
cairo: rounded_rectangle([300, 300, 400, 400, 0, 0])
|
3
4
|
cairo: set_source_color([:red])
|
@@ -8,6 +9,7 @@ cairo: set_source_color([:blue])
|
|
8
9
|
cairo: fill([])
|
9
10
|
cairo: restore([])
|
10
11
|
cairo: save([])
|
12
|
+
cairo: move_to([675, 600])
|
11
13
|
cairo: circle([600, 600, 75])
|
12
14
|
cairo: set_source_color([:green])
|
13
15
|
cairo: set_line_width([8.0])
|
@@ -1,3 +1,6 @@
|
|
1
|
+
cairo: antialias=(["subpixel"])
|
2
|
+
cairo: antialias=(["subpixel"])
|
3
|
+
cairo: antialias=(["subpixel"])
|
1
4
|
cairo: save([])
|
2
5
|
cairo: set_source_color([:white])
|
3
6
|
cairo: paint([])
|
@@ -16,7 +19,7 @@ cairo: translate([250, 55])
|
|
16
19
|
cairo: rotate([0])
|
17
20
|
cairo: translate([-250, -55])
|
18
21
|
cairo: move_to([250, 55])
|
19
|
-
pango: font_description=([])
|
22
|
+
pango: font_description=([MockDouble])
|
20
23
|
pango: text=(["Thief"])
|
21
24
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
22
25
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -33,7 +36,7 @@ cairo: translate([250, 55])
|
|
33
36
|
cairo: rotate([0])
|
34
37
|
cairo: translate([-250, -55])
|
35
38
|
cairo: move_to([250, 55])
|
36
|
-
pango: font_description=([])
|
39
|
+
pango: font_description=([MockDouble])
|
37
40
|
pango: text=(["Grifter"])
|
38
41
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
39
42
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -50,7 +53,7 @@ cairo: translate([250, 55])
|
|
50
53
|
cairo: rotate([0])
|
51
54
|
cairo: translate([-250, -55])
|
52
55
|
cairo: move_to([250, 55])
|
53
|
-
pango: font_description=([])
|
56
|
+
pango: font_description=([MockDouble])
|
54
57
|
pango: text=(["Mastermind"])
|
55
58
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
56
59
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -67,7 +70,7 @@ cairo: translate([65, 65])
|
|
67
70
|
cairo: rotate([0])
|
68
71
|
cairo: translate([-65, -65])
|
69
72
|
cairo: move_to([65, 65])
|
70
|
-
pango: font_description=([])
|
73
|
+
pango: font_description=([MockDouble])
|
71
74
|
pango: text=(["1"])
|
72
75
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
73
76
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -84,7 +87,7 @@ cairo: translate([65, 65])
|
|
84
87
|
cairo: rotate([0])
|
85
88
|
cairo: translate([-65, -65])
|
86
89
|
cairo: move_to([65, 65])
|
87
|
-
pango: font_description=([])
|
90
|
+
pango: font_description=([MockDouble])
|
88
91
|
pango: text=(["2"])
|
89
92
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
90
93
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -101,7 +104,7 @@ cairo: translate([65, 65])
|
|
101
104
|
cairo: rotate([0])
|
102
105
|
cairo: translate([-65, -65])
|
103
106
|
cairo: move_to([65, 65])
|
104
|
-
pango: font_description=([])
|
107
|
+
pango: font_description=([MockDouble])
|
105
108
|
pango: text=(["3"])
|
106
109
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
107
110
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -118,7 +121,7 @@ cairo: translate([65, 600])
|
|
118
121
|
cairo: rotate([0])
|
119
122
|
cairo: translate([-65, -600])
|
120
123
|
cairo: move_to([65, 600])
|
121
|
-
pango: font_description=([])
|
124
|
+
pango: font_description=([MockDouble])
|
122
125
|
pango: text=(["A clever pickpocket on the street."])
|
123
126
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
124
127
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -135,7 +138,7 @@ cairo: translate([65, 600])
|
|
135
138
|
cairo: rotate([0])
|
136
139
|
cairo: translate([-65, -600])
|
137
140
|
cairo: move_to([65, 600])
|
138
|
-
pango: font_description=([])
|
141
|
+
pango: font_description=([MockDouble])
|
139
142
|
pango: text=(["A sophisticated con artist who makes you run home for your wallet"])
|
140
143
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
141
144
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
@@ -152,7 +155,7 @@ cairo: translate([65, 600])
|
|
152
155
|
cairo: rotate([0])
|
153
156
|
cairo: translate([-65, -600])
|
154
157
|
cairo: move_to([65, 600])
|
155
|
-
pango: font_description=([])
|
158
|
+
pango: font_description=([MockDouble])
|
156
159
|
pango: text=(["A brilliant mind devoted to a life of crime."])
|
157
160
|
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
158
161
|
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|