squib 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/CHANGELOG.md +10 -0
- data/README.md +44 -21
- data/Rakefile +74 -1
- data/benchmarks/shiny-purse.png +0 -0
- data/benchmarks/spanner.svg +91 -0
- data/benchmarks/tons_of_png.rb +6 -0
- data/benchmarks/tons_of_svg.rb +7 -0
- data/benchmarks/tons_of_text.rb +8 -0
- data/lib/squib/api/background.rb +1 -1
- data/lib/squib/api/image.rb +6 -4
- data/lib/squib/api/save.rb +4 -3
- data/lib/squib/api/shapes.rb +7 -7
- data/lib/squib/api/text.rb +1 -1
- data/lib/squib/args/unit_conversion.rb +21 -0
- data/lib/squib/card.rb +2 -1
- data/lib/squib/constants.rb +8 -0
- data/lib/squib/deck.rb +14 -12
- data/lib/squib/graphics/background.rb +1 -1
- data/lib/squib/graphics/cairo_context_wrapper.rb +42 -0
- data/lib/squib/graphics/gradient_regex.rb +46 -0
- data/lib/squib/graphics/image.rb +17 -7
- data/lib/squib/graphics/save_doc.rb +16 -13
- data/lib/squib/graphics/save_images.rb +4 -4
- data/lib/squib/graphics/shapes.rb +7 -7
- data/lib/squib/graphics/text.rb +1 -1
- data/lib/squib/input_helpers.rb +8 -8
- data/lib/squib/version.rb +1 -1
- data/samples/colors.rb +22 -1
- data/samples/glass-heart.svg +52 -0
- data/samples/gradients.rb +34 -0
- data/samples/load_images.rb +14 -0
- data/samples/saves.rb +5 -0
- data/spec/api/api_image_spec.rb +2 -2
- data/spec/args/unit_conversion_spec.rb +22 -0
- data/spec/data/samples/autoscale_font.rb.txt +9 -9
- data/spec/data/samples/basic.rb.txt +24 -24
- data/spec/data/samples/cairo_access.rb.txt +4 -4
- data/spec/data/samples/csv_import.rb.txt +10 -10
- data/spec/data/samples/custom_config.rb.txt +3 -3
- data/spec/data/samples/draw_shapes.rb.txt +8 -8
- data/spec/data/samples/excel.rb.txt +15 -15
- data/spec/data/samples/gradients.rb.txt +65 -0
- data/spec/data/samples/hello_world.rb.txt +4 -4
- data/spec/data/samples/load_images.rb.txt +30 -4
- data/spec/data/samples/portrait-landscape.rb.txt +6 -6
- data/spec/data/samples/ranges.rb.txt +30 -30
- data/spec/data/samples/saves.rb.txt +74 -70
- data/spec/data/samples/showcase.rb.txt +20 -20
- data/spec/data/samples/text_options.rb.txt +63 -63
- data/spec/data/samples/tgc_proofs.rb.txt +8 -8
- data/spec/data/samples/units.rb.txt +8 -8
- data/spec/deck_spec.rb +6 -0
- data/spec/graphics/cairo_context_wrapper_spec.rb +75 -0
- data/spec/graphics/graphics_images_spec.rb +5 -6
- data/spec/input_helpers_spec.rb +11 -9
- data/spec/samples/samples_regression_spec.rb +3 -1
- data/spec/spec_helper.rb +1 -0
- metadata +20 -5
- data/spec/data/samples/colors.rb.txt +0 -124
data/lib/squib/input_helpers.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'squib/constants'
|
2
|
+
require 'squib/args/unit_conversion'
|
2
3
|
|
3
4
|
module Squib
|
4
5
|
# :nodoc:
|
@@ -132,7 +133,7 @@ module Squib
|
|
132
133
|
if @custom_colors.key? color.to_s
|
133
134
|
color = @custom_colors[color.to_s]
|
134
135
|
end
|
135
|
-
opts[key][i] =
|
136
|
+
opts[key][i] = color
|
136
137
|
end
|
137
138
|
end
|
138
139
|
Squib.logger.debug {"After colorify: #{opts}"}
|
@@ -197,15 +198,14 @@ module Squib
|
|
197
198
|
# :nodoc:
|
198
199
|
# @api private
|
199
200
|
def convert_units(opts, needed_params)
|
200
|
-
|
201
|
+
UNIT_CONVERSION_PARAMS.each_pair do |param_name, api_param|
|
201
202
|
if needed_params.include? param_name
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
opts[api_param][i] = arg.rstrip[0..-2].to_f * @dpi
|
206
|
-
when /cm$/ #ends with "cm"
|
207
|
-
opts[api_param][i] = arg.rstrip[0..-2].to_f * @dpi * Squib::INCHES_IN_CM
|
203
|
+
if EXPANDING_PARAMS.include? param_name
|
204
|
+
opts[api_param].each_with_index do |arg, i|
|
205
|
+
opts[api_param][i] = Args::UnitConversion.parse(arg, @dpi)
|
208
206
|
end
|
207
|
+
else #not an expanding param
|
208
|
+
opts[api_param] = Args::UnitConversion.parse(opts[api_param], @dpi)
|
209
209
|
end
|
210
210
|
end
|
211
211
|
end
|
data/lib/squib/version.rb
CHANGED
data/samples/colors.rb
CHANGED
@@ -7,10 +7,31 @@ Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
|
7
7
|
text color: '#f00', str: '3-hex', x: 50, y: y+=50
|
8
8
|
text color: '#f00', str: '3-hex (alpha)', x: 50, y: y+=50
|
9
9
|
text color: '#ff0000', str: '6-hex', x: 50, y: y+=50
|
10
|
-
text color: '#ff000099', str: '8-hex(alpha)
|
10
|
+
text color: '#ff000099', str: '8-hex(alpha)', x: 50, y: y+=50
|
11
11
|
text color: '#ffff00000000', str: '12-hex', x: 50, y: y+=50
|
12
12
|
text color: '#ffff000000009999', str: '12-hex (alpha)', x: 50, y: y+=50
|
13
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
|
14
17
|
|
15
18
|
save_png prefix: 'colors_'
|
16
19
|
end
|
20
|
+
|
21
|
+
# This script generates a table of the built-in constants
|
22
|
+
Squib::Deck.new(width: 3000, height: 1500) do
|
23
|
+
colors = (Cairo::Color.constants - %i(HEX_RE Base RGB CMYK HSV X11))
|
24
|
+
colors.sort_by! {|c| Cairo::Color.parse(c).to_s}
|
25
|
+
x,y,w,h = 0,0,300,50
|
26
|
+
colors.each_with_index do |color, i|
|
27
|
+
rect x: x, y: y, width: w, height: h, fill_color: color
|
28
|
+
text str: color.to_s, x: x + 5, y: y+13, font: 'Sans Bold 16',
|
29
|
+
color: (Cairo::Color.parse(color).to_hsv.v > 0.9) ? '#000': '#fff'
|
30
|
+
y += h
|
31
|
+
if y > @height
|
32
|
+
x += w
|
33
|
+
y = 0
|
34
|
+
end
|
35
|
+
end
|
36
|
+
save_png prefix: 'color_constants_'
|
37
|
+
end
|
@@ -0,0 +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>
|
@@ -0,0 +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 72',
|
31
|
+
color: '(0,0)(825,0) #000f@0.0 #0000@1.0'
|
32
|
+
|
33
|
+
save_png prefix: 'gradient_'
|
34
|
+
end
|
data/samples/load_images.rb
CHANGED
@@ -32,5 +32,19 @@ Squib::Deck.new(width: 825, height: 1125, cards: 1) do
|
|
32
32
|
png file: 'shiny-purse.png', x: 300, y: 800, angle: Math::PI / 4
|
33
33
|
svg file: 'spanner.svg', x: 300, y: 900, angle: Math::PI / 2 - 0.1
|
34
34
|
|
35
|
+
# Images can also be used as masks instead of being directly painted.
|
36
|
+
# This is particularly useful for switching directly over to black-and-white for printing
|
37
|
+
# Or, if you want the same image to be used but with different colors/gradients
|
38
|
+
svg mask: '#00ff00',
|
39
|
+
file: 'glass-heart.svg',
|
40
|
+
x: 500, y: 600, width: 200, height: 200
|
41
|
+
svg mask: '(500,1000)(500,800) #333@0.0 #ccc@1.0 ',
|
42
|
+
file: 'glass-heart.svg',
|
43
|
+
x: 500, y: 800, width: 200, height: 200
|
44
|
+
|
45
|
+
# Masks are based on transparency, so this is just a square
|
46
|
+
png mask: :magenta, file: 'shiny-purse.png',
|
47
|
+
x: 650, y: 950
|
48
|
+
|
35
49
|
save prefix: 'load_images_', format: :png
|
36
50
|
end
|
data/samples/saves.rb
CHANGED
@@ -11,6 +11,11 @@ Squib::Deck.new(width: 825, height: 1125, cards: 16) do
|
|
11
11
|
# Place on multiple pages over the PDF, with bleed beeing trimmed off
|
12
12
|
save_pdf file: 'save-pdf.pdf', margin: 75, gap: 5, trim: 37
|
13
13
|
|
14
|
+
# PDFs also support arbitrary paper sizes, in pixels or any other supported units
|
15
|
+
save_pdf file: 'save-pdf-small.pdf',
|
16
|
+
width: '7in', height: '5in',
|
17
|
+
range: 0..1
|
18
|
+
|
14
19
|
# Note that our PNGs still are not trimmed even though the pdf ones were
|
15
20
|
save_png range: 1, prefix: 'saves_notrim_'
|
16
21
|
|
data/spec/api/api_image_spec.rb
CHANGED
@@ -7,7 +7,7 @@ describe Squib::Deck, 'images' do
|
|
7
7
|
it 'calls Card#png, Dir, and progress bar' do
|
8
8
|
card = instance_double(Squib::Card)
|
9
9
|
progress = double(Squib::Progress)
|
10
|
-
expect(card).to receive(:png).with('foo', 0, 1, :native, :native, 0.5, :overlay, 0.75).once
|
10
|
+
expect(card).to receive(:png).with('foo', 0, 1, :native, :native, 0.5, :overlay, 0.75, nil).once
|
11
11
|
expect(Dir).to receive(:chdir).with('.').and_yield.once
|
12
12
|
expect(progress).to receive(:start).and_yield(progress).once
|
13
13
|
expect(progress).to receive(:increment).once
|
@@ -23,7 +23,7 @@ describe Squib::Deck, 'images' do
|
|
23
23
|
it 'calls Card#svg, Dir, and progress bar' do
|
24
24
|
card = instance_double(Squib::Card)
|
25
25
|
progress = double(Squib::Progress)
|
26
|
-
expect(card).to receive(:svg).with('foo', '#bar', 0, 1, 20, 30, 0.5, :overlay, 0.75).once
|
26
|
+
expect(card).to receive(:svg).with('foo', '#bar', 0, 1, 20, 30, 0.5, :overlay, 0.75, nil).once
|
27
27
|
expect(Dir).to receive(:chdir).with('.').and_yield.once
|
28
28
|
expect(progress).to receive(:start).and_yield(progress).once
|
29
29
|
expect(progress).to receive(:increment).once
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'squib/args/unit_conversion'
|
3
|
+
|
4
|
+
describe Squib::Args::UnitConversion do
|
5
|
+
|
6
|
+
it 'does nothing on just numbers' do
|
7
|
+
expect(subject.parse(20)).to eq(20)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'strips trailing whitespace' do
|
11
|
+
expect(subject.parse('1in ')).to eq(300)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'is ok w/internal whitesapce' do
|
15
|
+
expect(subject.parse('1 in')).to eq(300)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'does cm' do
|
19
|
+
expect(subject.parse('1cm')).to eq(118.1102361)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
cairo: save([])
|
2
|
-
cairo: set_source_color([
|
2
|
+
cairo: set_source_color([:white])
|
3
3
|
cairo: paint([])
|
4
4
|
cairo: restore([])
|
5
5
|
cairo: save([])
|
6
|
-
cairo: set_source_color([
|
6
|
+
cairo: set_source_color([:white])
|
7
7
|
cairo: paint([])
|
8
8
|
cairo: restore([])
|
9
9
|
cairo: save([])
|
10
|
-
cairo: set_source_color([
|
10
|
+
cairo: set_source_color([:white])
|
11
11
|
cairo: paint([])
|
12
12
|
cairo: restore([])
|
13
13
|
cairo: save([])
|
14
|
-
cairo: set_source_color([
|
14
|
+
cairo: set_source_color([:black])
|
15
15
|
cairo: translate([65, 400])
|
16
16
|
cairo: rotate([0])
|
17
17
|
cairo: translate([-65, -400])
|
@@ -33,7 +33,7 @@ cairo: set_line_width([2.0])
|
|
33
33
|
cairo: stroke([])
|
34
34
|
cairo: restore([])
|
35
35
|
cairo: save([])
|
36
|
-
cairo: set_source_color([
|
36
|
+
cairo: set_source_color([:black])
|
37
37
|
cairo: translate([65, 400])
|
38
38
|
cairo: rotate([0])
|
39
39
|
cairo: translate([-65, -400])
|
@@ -55,7 +55,7 @@ cairo: set_line_width([2.0])
|
|
55
55
|
cairo: stroke([])
|
56
56
|
cairo: restore([])
|
57
57
|
cairo: save([])
|
58
|
-
cairo: set_source_color([
|
58
|
+
cairo: set_source_color([:black])
|
59
59
|
cairo: translate([65, 400])
|
60
60
|
cairo: rotate([0])
|
61
61
|
cairo: translate([-65, -400])
|
@@ -76,6 +76,6 @@ cairo: set_source_color([:red])
|
|
76
76
|
cairo: set_line_width([2.0])
|
77
77
|
cairo: stroke([])
|
78
78
|
cairo: restore([])
|
79
|
-
surface: write_to_png(["_output/
|
80
|
-
surface: write_to_png(["_output/
|
81
|
-
surface: write_to_png(["_output/
|
79
|
+
surface: write_to_png(["_output/autoscale_00.png"])
|
80
|
+
surface: write_to_png(["_output/autoscale_01.png"])
|
81
|
+
surface: write_to_png(["_output/autoscale_02.png"])
|
@@ -1,71 +1,71 @@
|
|
1
1
|
cairo: save([])
|
2
|
-
cairo: set_source_color([
|
2
|
+
cairo: set_source_color([:white])
|
3
3
|
cairo: paint([])
|
4
4
|
cairo: restore([])
|
5
5
|
cairo: save([])
|
6
|
-
cairo: set_source_color([
|
6
|
+
cairo: set_source_color([:white])
|
7
7
|
cairo: paint([])
|
8
8
|
cairo: restore([])
|
9
9
|
cairo: save([])
|
10
|
-
cairo: set_source_color([
|
10
|
+
cairo: set_source_color([:white])
|
11
11
|
cairo: paint([])
|
12
12
|
cairo: restore([])
|
13
13
|
cairo: save([])
|
14
14
|
cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
|
15
|
-
cairo: set_source_color([
|
15
|
+
cairo: set_source_color([:black])
|
16
16
|
cairo: set_line_width([2.0])
|
17
17
|
cairo: stroke([])
|
18
18
|
cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
|
19
|
-
cairo: set_source_color([
|
19
|
+
cairo: set_source_color(["#0000"])
|
20
20
|
cairo: fill([])
|
21
21
|
cairo: restore([])
|
22
22
|
cairo: save([])
|
23
23
|
cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
|
24
|
-
cairo: set_source_color([
|
24
|
+
cairo: set_source_color([:black])
|
25
25
|
cairo: set_line_width([2.0])
|
26
26
|
cairo: stroke([])
|
27
27
|
cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
|
28
|
-
cairo: set_source_color([
|
28
|
+
cairo: set_source_color(["#0000"])
|
29
29
|
cairo: fill([])
|
30
30
|
cairo: restore([])
|
31
31
|
cairo: save([])
|
32
32
|
cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
|
33
|
-
cairo: set_source_color([
|
33
|
+
cairo: set_source_color([:black])
|
34
34
|
cairo: set_line_width([2.0])
|
35
35
|
cairo: stroke([])
|
36
36
|
cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
|
37
|
-
cairo: set_source_color([
|
37
|
+
cairo: set_source_color(["#0000"])
|
38
38
|
cairo: fill([])
|
39
39
|
cairo: restore([])
|
40
40
|
cairo: save([])
|
41
41
|
cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
|
42
|
-
cairo: set_source_color([
|
42
|
+
cairo: set_source_color([:black])
|
43
43
|
cairo: set_line_width([2.0])
|
44
44
|
cairo: stroke([])
|
45
45
|
cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
|
46
|
-
cairo: set_source_color([
|
46
|
+
cairo: set_source_color(["#0000"])
|
47
47
|
cairo: fill([])
|
48
48
|
cairo: restore([])
|
49
49
|
cairo: save([])
|
50
50
|
cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
|
51
|
-
cairo: set_source_color([
|
51
|
+
cairo: set_source_color([:black])
|
52
52
|
cairo: set_line_width([2.0])
|
53
53
|
cairo: stroke([])
|
54
54
|
cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
|
55
|
-
cairo: set_source_color([
|
55
|
+
cairo: set_source_color(["#0000"])
|
56
56
|
cairo: fill([])
|
57
57
|
cairo: restore([])
|
58
58
|
cairo: save([])
|
59
59
|
cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
|
60
|
-
cairo: set_source_color([
|
60
|
+
cairo: set_source_color([:black])
|
61
61
|
cairo: set_line_width([2.0])
|
62
62
|
cairo: stroke([])
|
63
63
|
cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
|
64
|
-
cairo: set_source_color([
|
64
|
+
cairo: set_source_color(["#0000"])
|
65
65
|
cairo: fill([])
|
66
66
|
cairo: restore([])
|
67
67
|
cairo: save([])
|
68
|
-
cairo: set_source_color([
|
68
|
+
cairo: set_source_color([:black])
|
69
69
|
cairo: translate([220, 78])
|
70
70
|
cairo: rotate([0])
|
71
71
|
cairo: translate([-220, -78])
|
@@ -82,7 +82,7 @@ cairo: update_pango_layout([MockDouble])
|
|
82
82
|
cairo: show_pango_layout([MockDouble])
|
83
83
|
cairo: restore([])
|
84
84
|
cairo: save([])
|
85
|
-
cairo: set_source_color([
|
85
|
+
cairo: set_source_color([:black])
|
86
86
|
cairo: translate([220, 78])
|
87
87
|
cairo: rotate([0])
|
88
88
|
cairo: translate([-220, -78])
|
@@ -99,7 +99,7 @@ cairo: update_pango_layout([MockDouble])
|
|
99
99
|
cairo: show_pango_layout([MockDouble])
|
100
100
|
cairo: restore([])
|
101
101
|
cairo: save([])
|
102
|
-
cairo: set_source_color([
|
102
|
+
cairo: set_source_color([:black])
|
103
103
|
cairo: translate([220, 78])
|
104
104
|
cairo: rotate([0])
|
105
105
|
cairo: translate([-220, -78])
|
@@ -116,7 +116,7 @@ cairo: update_pango_layout([MockDouble])
|
|
116
116
|
cairo: show_pango_layout([MockDouble])
|
117
117
|
cairo: restore([])
|
118
118
|
cairo: save([])
|
119
|
-
cairo: set_source_color([
|
119
|
+
cairo: set_source_color([:black])
|
120
120
|
cairo: translate([75, 85])
|
121
121
|
cairo: rotate([0])
|
122
122
|
cairo: translate([-75, -85])
|
@@ -134,7 +134,7 @@ cairo: update_pango_layout([MockDouble])
|
|
134
134
|
cairo: show_pango_layout([MockDouble])
|
135
135
|
cairo: restore([])
|
136
136
|
cairo: save([])
|
137
|
-
cairo: set_source_color([
|
137
|
+
cairo: set_source_color([:black])
|
138
138
|
cairo: translate([75, 85])
|
139
139
|
cairo: rotate([0])
|
140
140
|
cairo: translate([-75, -85])
|
@@ -152,7 +152,7 @@ cairo: update_pango_layout([MockDouble])
|
|
152
152
|
cairo: show_pango_layout([MockDouble])
|
153
153
|
cairo: restore([])
|
154
154
|
cairo: save([])
|
155
|
-
cairo: set_source_color([
|
155
|
+
cairo: set_source_color([:black])
|
156
156
|
cairo: translate([75, 85])
|
157
157
|
cairo: rotate([0])
|
158
158
|
cairo: translate([-75, -85])
|
@@ -201,6 +201,6 @@ cairo: translate([-620, -218])
|
|
201
201
|
cairo: set_source([MockDouble, 620, 218])
|
202
202
|
cairo: paint([1.0])
|
203
203
|
cairo: restore([])
|
204
|
-
surface: write_to_png(["_output/
|
205
|
-
surface: write_to_png(["_output/
|
206
|
-
surface: write_to_png(["_output/
|
204
|
+
surface: write_to_png(["_output/basic_00.png"])
|
205
|
+
surface: write_to_png(["_output/basic_01.png"])
|
206
|
+
surface: write_to_png(["_output/basic_02.png"])
|
@@ -1,9 +1,9 @@
|
|
1
1
|
cairo: save([])
|
2
|
-
cairo: set_source_color([
|
2
|
+
cairo: set_source_color([:white])
|
3
3
|
cairo: paint([])
|
4
4
|
cairo: restore([])
|
5
5
|
cairo: save([])
|
6
|
-
cairo: set_source_color([
|
6
|
+
cairo: set_source_color([:white])
|
7
7
|
cairo: paint([])
|
8
8
|
cairo: restore([])
|
9
9
|
cairo: save([])
|
@@ -21,5 +21,5 @@ cairo: circle([50, 50, 50])
|
|
21
21
|
cairo: set_source_color([:red])
|
22
22
|
cairo: fill([])
|
23
23
|
cairo: restore([])
|
24
|
-
surface: write_to_png(["_output/
|
25
|
-
surface: write_to_png(["_output/
|
24
|
+
surface: write_to_png(["_output/cairo_access_00.png"])
|
25
|
+
surface: write_to_png(["_output/cairo_access_01.png"])
|