squib 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/CHANGELOG.md +10 -0
  4. data/README.md +44 -21
  5. data/Rakefile +74 -1
  6. data/benchmarks/shiny-purse.png +0 -0
  7. data/benchmarks/spanner.svg +91 -0
  8. data/benchmarks/tons_of_png.rb +6 -0
  9. data/benchmarks/tons_of_svg.rb +7 -0
  10. data/benchmarks/tons_of_text.rb +8 -0
  11. data/lib/squib/api/background.rb +1 -1
  12. data/lib/squib/api/image.rb +6 -4
  13. data/lib/squib/api/save.rb +4 -3
  14. data/lib/squib/api/shapes.rb +7 -7
  15. data/lib/squib/api/text.rb +1 -1
  16. data/lib/squib/args/unit_conversion.rb +21 -0
  17. data/lib/squib/card.rb +2 -1
  18. data/lib/squib/constants.rb +8 -0
  19. data/lib/squib/deck.rb +14 -12
  20. data/lib/squib/graphics/background.rb +1 -1
  21. data/lib/squib/graphics/cairo_context_wrapper.rb +42 -0
  22. data/lib/squib/graphics/gradient_regex.rb +46 -0
  23. data/lib/squib/graphics/image.rb +17 -7
  24. data/lib/squib/graphics/save_doc.rb +16 -13
  25. data/lib/squib/graphics/save_images.rb +4 -4
  26. data/lib/squib/graphics/shapes.rb +7 -7
  27. data/lib/squib/graphics/text.rb +1 -1
  28. data/lib/squib/input_helpers.rb +8 -8
  29. data/lib/squib/version.rb +1 -1
  30. data/samples/colors.rb +22 -1
  31. data/samples/glass-heart.svg +52 -0
  32. data/samples/gradients.rb +34 -0
  33. data/samples/load_images.rb +14 -0
  34. data/samples/saves.rb +5 -0
  35. data/spec/api/api_image_spec.rb +2 -2
  36. data/spec/args/unit_conversion_spec.rb +22 -0
  37. data/spec/data/samples/autoscale_font.rb.txt +9 -9
  38. data/spec/data/samples/basic.rb.txt +24 -24
  39. data/spec/data/samples/cairo_access.rb.txt +4 -4
  40. data/spec/data/samples/csv_import.rb.txt +10 -10
  41. data/spec/data/samples/custom_config.rb.txt +3 -3
  42. data/spec/data/samples/draw_shapes.rb.txt +8 -8
  43. data/spec/data/samples/excel.rb.txt +15 -15
  44. data/spec/data/samples/gradients.rb.txt +65 -0
  45. data/spec/data/samples/hello_world.rb.txt +4 -4
  46. data/spec/data/samples/load_images.rb.txt +30 -4
  47. data/spec/data/samples/portrait-landscape.rb.txt +6 -6
  48. data/spec/data/samples/ranges.rb.txt +30 -30
  49. data/spec/data/samples/saves.rb.txt +74 -70
  50. data/spec/data/samples/showcase.rb.txt +20 -20
  51. data/spec/data/samples/text_options.rb.txt +63 -63
  52. data/spec/data/samples/tgc_proofs.rb.txt +8 -8
  53. data/spec/data/samples/units.rb.txt +8 -8
  54. data/spec/deck_spec.rb +6 -0
  55. data/spec/graphics/cairo_context_wrapper_spec.rb +75 -0
  56. data/spec/graphics/graphics_images_spec.rb +5 -6
  57. data/spec/input_helpers_spec.rb +11 -9
  58. data/spec/samples/samples_regression_spec.rb +3 -1
  59. data/spec/spec_helper.rb +1 -0
  60. metadata +20 -5
  61. data/spec/data/samples/colors.rb.txt +0 -124
@@ -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] = Cairo::Color.parse(color)
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
- Squib::UNIT_CONVERSION_PARAMS.each_pair do |param_name, api_param|
201
+ UNIT_CONVERSION_PARAMS.each_pair do |param_name, api_param|
201
202
  if needed_params.include? param_name
202
- opts[api_param].each_with_index do |arg, i|
203
- case arg.to_s.rstrip
204
- when /in$/ #ends with "in"
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
@@ -6,5 +6,5 @@ module Squib
6
6
  # Most of the time this is in the alpha of the next release.
7
7
  # e.g. v0.0.5a is on its way to becoming v0.0.5
8
8
  #
9
- VERSION = '0.2.0'
9
+ VERSION = '0.3.0'
10
10
  end
@@ -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) *', x: 50, y: y+=50
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
@@ -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
@@ -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
 
@@ -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([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
2
+ cairo: set_source_color([:white])
3
3
  cairo: paint([])
4
4
  cairo: restore([])
5
5
  cairo: save([])
6
- cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
6
+ cairo: set_source_color([:white])
7
7
  cairo: paint([])
8
8
  cairo: restore([])
9
9
  cairo: save([])
10
- cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
10
+ cairo: set_source_color([:white])
11
11
  cairo: paint([])
12
12
  cairo: restore([])
13
13
  cairo: save([])
14
- cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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/autoscale_0.png"])
80
- surface: write_to_png(["_output/autoscale_1.png"])
81
- surface: write_to_png(["_output/autoscale_2.png"])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
2
+ cairo: set_source_color([:white])
3
3
  cairo: paint([])
4
4
  cairo: restore([])
5
5
  cairo: save([])
6
- cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
6
+ cairo: set_source_color([:white])
7
7
  cairo: paint([])
8
8
  cairo: restore([])
9
9
  cairo: save([])
10
- cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=0.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=0.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=0.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=0.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=0.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=0.0, @red=0.0, @green=0.0, @blue=0.0>])
64
+ cairo: set_source_color(["#0000"])
65
65
  cairo: fill([])
66
66
  cairo: restore([])
67
67
  cairo: save([])
68
- cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
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/basic_0.png"])
205
- surface: write_to_png(["_output/basic_1.png"])
206
- surface: write_to_png(["_output/basic_2.png"])
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([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
2
+ cairo: set_source_color([:white])
3
3
  cairo: paint([])
4
4
  cairo: restore([])
5
5
  cairo: save([])
6
- cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
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/cairo_access_0.png"])
25
- surface: write_to_png(["_output/cairo_access_1.png"])
24
+ surface: write_to_png(["_output/cairo_access_00.png"])
25
+ surface: write_to_png(["_output/cairo_access_01.png"])