squib 0.2.0 → 0.3.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 +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"])
|