squib 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +3 -1
- data/CHANGELOG.md +10 -0
- data/README.md +65 -4
- data/lib/squib/api/data.rb +48 -1
- data/lib/squib/api/text.rb +4 -2
- data/lib/squib/deck.rb +22 -5
- data/lib/squib/graphics/text.rb +4 -0
- data/lib/squib/layouts/hand.yml +46 -0
- data/lib/squib/layouts/playing-card.yml +18 -0
- data/lib/squib/version.rb +1 -1
- data/samples/cairo_access.rb +4 -3
- data/samples/csv_import.rb +20 -0
- data/samples/custom-layout.yml +5 -4
- data/samples/custom-layout2.yml +15 -0
- data/samples/custom_config.rb +0 -1
- data/samples/excel.rb +1 -2
- data/samples/layouts.rb +61 -0
- data/samples/ranges.rb +0 -1
- data/samples/sample.csv +3 -0
- data/samples/text_options.rb +14 -3
- data/samples/tgc_proofs.rb +0 -1
- data/samples/units.rb +1 -1
- data/spec/api/api_data_spec.rb +31 -0
- data/spec/api/api_image_spec.rb +38 -0
- data/spec/data/csv/basic.csv +3 -0
- data/spec/data/csv/dup_cols.csv +3 -0
- data/spec/data/csv/with_spaces.csv +3 -0
- data/spec/data/{easy-circular-extends.yml → layouts/easy-circular-extends.yml} +0 -0
- data/spec/data/{hard-circular-extends.yml → layouts/hard-circular-extends.yml} +0 -0
- data/spec/data/{multi-extends-single-entry.yml → layouts/multi-extends-single-entry.yml} +0 -0
- data/spec/data/{multi-level-extends.yml → layouts/multi-level-extends.yml} +0 -0
- data/spec/data/layouts/multifile-a.yml +4 -0
- data/spec/data/layouts/multifile-b.yml +4 -0
- data/spec/data/layouts/multifile-extends-a.yml +8 -0
- data/spec/data/layouts/multifile-extends-b.yml +9 -0
- data/spec/data/{no-extends.yml → layouts/no-extends.yml} +0 -0
- data/spec/data/{pre-extends.yml → layouts/pre-extends.yml} +0 -0
- data/spec/data/{self-circular-extends.yml → layouts/self-circular-extends.yml} +0 -0
- data/spec/data/{single-extends.yml → layouts/single-extends.yml} +0 -0
- data/spec/data/{single-level-multi-extends.yml → layouts/single-level-multi-extends.yml} +0 -0
- data/spec/data/samples/autoscale_font.rb.txt +81 -0
- data/spec/data/samples/basic.rb.txt +206 -0
- data/spec/data/samples/cairo_access.rb.txt +25 -0
- data/spec/data/samples/colors.rb.txt +124 -0
- data/spec/data/samples/csv_import.rb.txt +112 -0
- data/spec/data/samples/custom_config.rb.txt +45 -0
- data/spec/data/samples/draw_shapes.rb.txt +35 -0
- data/spec/data/samples/excel.rb.txt +168 -0
- data/spec/data/samples/hello_world.rb.txt +36 -0
- data/spec/data/samples/layouts.rb.txt +489 -0
- data/spec/data/samples/load_images.rb.txt +104 -0
- data/spec/data/samples/portrait-landscape.rb.txt +49 -0
- data/spec/data/samples/ranges.rb.txt +426 -0
- data/spec/data/samples/save_pdf.rb.txt +545 -0
- data/spec/data/samples/text_options.rb.txt +819 -0
- data/spec/data/samples/tgc_proofs.rb.txt +81 -0
- data/spec/data/samples/units.rb.txt +14 -0
- data/spec/deck_spec.rb +33 -9
- data/spec/graphics/graphics_text_spec.rb +7 -5
- data/spec/samples/samples_regression_spec.rb +73 -0
- data/spec/spec_helper.rb +64 -2
- data/squib.gemspec +2 -2
- metadata +100 -27
- data/samples/use_layout.rb +0 -34
- data/spec/samples_run_spec.rb +0 -20
@@ -0,0 +1,15 @@
|
|
1
|
+
# Used in the layouts.rb sample in conjunction with custom-layout.yml
|
2
|
+
#
|
3
|
+
# When used with custom-layout.yml loaded first, this layout overrides subtitle
|
4
|
+
subtitle:
|
5
|
+
x: 150
|
6
|
+
y: 150
|
7
|
+
width: 575
|
8
|
+
height: 60
|
9
|
+
align: left
|
10
|
+
valign: middle
|
11
|
+
font_size: 25
|
12
|
+
# This one is completely new
|
13
|
+
description:
|
14
|
+
extends: subtitle
|
15
|
+
y: += 350
|
data/samples/custom_config.rb
CHANGED
data/samples/excel.rb
CHANGED
data/samples/layouts.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'squib'
|
3
|
+
|
4
|
+
Squib::Deck.new(layout: 'custom-layout.yml') do
|
5
|
+
background color: :white
|
6
|
+
hint text: :cyan
|
7
|
+
|
8
|
+
# Layouts are YAML files that specify any option as a default
|
9
|
+
rect layout: :frame
|
10
|
+
|
11
|
+
# You can also override a given layout entry in the command
|
12
|
+
circle layout: :frame, x: 50, y: 50, radius: 25
|
13
|
+
|
14
|
+
# Lots of commands have the :layout option
|
15
|
+
text str: 'The Title', layout: :title
|
16
|
+
|
17
|
+
# Layouts also support YAML merge keys toreuse settings
|
18
|
+
svg file: 'spanner.svg', layout: :icon_left
|
19
|
+
png file: 'shiny-purse.png', layout: :icon_middle
|
20
|
+
svg file: 'spanner.svg', layout: :icon_right
|
21
|
+
|
22
|
+
# Squib has its own, richer merge key: "extends"
|
23
|
+
rect fill_color: :black, layout: :bonus
|
24
|
+
rect fill_color: :white, layout: :bonus_inner
|
25
|
+
text str: 'Extends!', layout: :bonus_text
|
26
|
+
|
27
|
+
# Strings can also be used to specify a layout (e.g. from a data file)
|
28
|
+
text str: 'subtitle', layout: 'subtitle'
|
29
|
+
|
30
|
+
# For debugging purposes, you can always print out the loaded layout
|
31
|
+
#require 'pp'
|
32
|
+
#pp @layout
|
33
|
+
|
34
|
+
save_png prefix: 'layout_'
|
35
|
+
end
|
36
|
+
|
37
|
+
Squib::Deck.new(layout: ['custom-layout.yml', 'custom-layout2.yml']) do
|
38
|
+
text str: 'The Title', layout: :title # from custom-layout.yml
|
39
|
+
text str: 'The Subtitle', layout: :subtitle # redefined in custom-layout2.yml
|
40
|
+
text str: 'The Description', layout: :description # from custom-layout2.yml
|
41
|
+
save_png prefix: 'layout2_'
|
42
|
+
end
|
43
|
+
|
44
|
+
# Built-in layouts are easy to use and extend
|
45
|
+
Squib::Deck.new(layout: 'playing-card.yml') do
|
46
|
+
text str: "A\u2660", layout: :bonus_ul, font: 'Sans bold 100', hint: :red
|
47
|
+
text str: "A\u2660", layout: :bonus_lr, font: 'Sans bold 100', hint: :red
|
48
|
+
text str: "artwork here", layout: :art, hint: :red
|
49
|
+
save_png prefix: 'layout_builtin_playing_card_'
|
50
|
+
end
|
51
|
+
|
52
|
+
# Built-in layouts are easy to use and extend
|
53
|
+
Squib::Deck.new(layout: 'hand.yml') do
|
54
|
+
%w(title bonus1 bonus2 bonus3 bonus4 bonus5
|
55
|
+
description snark art).each do |icon|
|
56
|
+
text str: icon.capitalize, layout: icon,
|
57
|
+
hint: :red, valign: 'middle', align: 'center'
|
58
|
+
end
|
59
|
+
png file: 'pokercard.png', alpha: 0.5
|
60
|
+
save_png prefix: 'layout_builtin_hand_'
|
61
|
+
end
|
data/samples/ranges.rb
CHANGED
data/samples/sample.csv
ADDED
data/samples/text_options.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
2
|
require 'squib'
|
3
3
|
|
4
4
|
data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
|
@@ -28,11 +28,22 @@ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
|
|
28
28
|
text str: 'This text has fixed width, fixed height, center-aligned, middle-valigned, and has a red hint',
|
29
29
|
hint: :red,
|
30
30
|
x: 65, y: 400,
|
31
|
-
width: 300, height:
|
31
|
+
width: 300, height: 125,
|
32
32
|
align: :center, valign: 'MIDDLE', #case-insenstive strings allowed too.
|
33
33
|
font: 'Arial 18'
|
34
34
|
|
35
|
-
text str: '
|
35
|
+
extents = text str: 'Ink extent return value',
|
36
|
+
x: 65, y: 550,
|
37
|
+
font: 'Sans Bold', font_size: [16, 20, 24]
|
38
|
+
margin = 10
|
39
|
+
# Extents come back as an array of hashes, which can get split out like this
|
40
|
+
ws = extents.inject([]) { |arr, ext| arr << ext[:width] + 10; arr }
|
41
|
+
hs = extents.inject([]) { |arr, ext| arr << ext[:height] + 10; arr }
|
42
|
+
rect x: 65 - margin/2, y: 550 - margin/2,
|
43
|
+
width: ws, height: hs,
|
44
|
+
radius: 10, stroke_color: :black
|
45
|
+
|
46
|
+
text str: "Ellipsization!\nThe ultimate question of life, the universe, and everything to life and everything is 42",
|
36
47
|
hint: :green, font: 'Arial 22',
|
37
48
|
x: 450, y: 400,
|
38
49
|
width: 280, height: 180,
|
data/samples/tgc_proofs.rb
CHANGED
data/samples/units.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Squib::Deck do
|
4
|
+
context '#csv' do
|
5
|
+
it 'loads basic csv data' do
|
6
|
+
expect(Squib.csv(file: csv_file('basic.csv'))).to eq({
|
7
|
+
'h1' => [1, 3],
|
8
|
+
'h2' => [2, 4]
|
9
|
+
})
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'collapses duplicate columns and warns' do
|
13
|
+
expect(Squib.logger).to receive(:warn)
|
14
|
+
.with('CSV duplicated the following column keys: h1,h1')
|
15
|
+
expect(Squib.csv(file: csv_file('dup_cols.csv'))).to eq({
|
16
|
+
'h1' => [1, 3],
|
17
|
+
'h2' => [5, 7],
|
18
|
+
'H2' => [6, 8],
|
19
|
+
'h3' => [9, 10],
|
20
|
+
})
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'handles spaces properly' do
|
24
|
+
expect(Squib.csv(file: csv_file('with_spaces.csv'))).to eq({
|
25
|
+
'With Spaces' => ['a b c ', 3],
|
26
|
+
'h2' => [2, 4],
|
27
|
+
'h3' => [3, nil]
|
28
|
+
})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'squib'
|
3
|
+
|
4
|
+
describe Squib::Deck, 'images' do
|
5
|
+
|
6
|
+
context '#png' do
|
7
|
+
it 'calls Card#png, Dir, and progress bar' do
|
8
|
+
card = instance_double(Squib::Card)
|
9
|
+
progress = double(Squib::Progress)
|
10
|
+
expect(card).to receive(:png).with('foo', 0, 1, 0.5, :overlay, 0.75).once
|
11
|
+
expect(Dir).to receive(:chdir).with('.').and_yield.once
|
12
|
+
expect(progress).to receive(:start).and_yield(progress).once
|
13
|
+
expect(progress).to receive(:increment).once
|
14
|
+
Squib::Deck.new do
|
15
|
+
@progress_bar = progress
|
16
|
+
@cards = [card]
|
17
|
+
png file: 'foo', x: 0, y: 1, alpha: 0.5, blend: :overlay, angle: 0.75
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context '#svg' do
|
23
|
+
it 'calls Card#svg, Dir, and progress bar' do
|
24
|
+
card = instance_double(Squib::Card)
|
25
|
+
progress = double(Squib::Progress)
|
26
|
+
expect(card).to receive(:svg).with('foo', '#bar', 0, 1, 20, 30, 0.5, :overlay, 0.75).once
|
27
|
+
expect(Dir).to receive(:chdir).with('.').and_yield.once
|
28
|
+
expect(progress).to receive(:start).and_yield(progress).once
|
29
|
+
expect(progress).to receive(:increment).once
|
30
|
+
Squib::Deck.new do
|
31
|
+
@progress_bar = progress
|
32
|
+
@cards = [card]
|
33
|
+
svg file: 'foo', id: 'bar', x: 0, y: 1, width: 20, height: 30, alpha: 0.5, blend: :overlay, angle: 0.75
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,81 @@
|
|
1
|
+
cairo: save([])
|
2
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
|
3
|
+
cairo: paint([])
|
4
|
+
cairo: restore([])
|
5
|
+
cairo: save([])
|
6
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
|
7
|
+
cairo: paint([])
|
8
|
+
cairo: restore([])
|
9
|
+
cairo: save([])
|
10
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
|
11
|
+
cairo: paint([])
|
12
|
+
cairo: restore([])
|
13
|
+
cairo: save([])
|
14
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
15
|
+
cairo: translate([65, 400])
|
16
|
+
cairo: rotate([0])
|
17
|
+
cairo: translate([-65, -400])
|
18
|
+
cairo: move_to([65, 400])
|
19
|
+
pango: font_description=([])
|
20
|
+
pango: text=(["ShortBig"])
|
21
|
+
pango: width=([716800])
|
22
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
23
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
24
|
+
pango: alignment=([#<Pango::Layout::Alignment center>])
|
25
|
+
pango: justify=([false])
|
26
|
+
pango: spacing=([0])
|
27
|
+
cairo: update_pango_layout([MockDouble])
|
28
|
+
cairo: update_pango_layout([MockDouble])
|
29
|
+
cairo: show_pango_layout([MockDouble])
|
30
|
+
cairo: rounded_rectangle([65, 400, 0, 0, 0, 0])
|
31
|
+
cairo: set_source_color([:red])
|
32
|
+
cairo: set_line_width([2.0])
|
33
|
+
cairo: stroke([])
|
34
|
+
cairo: restore([])
|
35
|
+
cairo: save([])
|
36
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
37
|
+
cairo: translate([65, 400])
|
38
|
+
cairo: rotate([0])
|
39
|
+
cairo: translate([-65, -400])
|
40
|
+
cairo: move_to([65, 400])
|
41
|
+
pango: font_description=([])
|
42
|
+
pango: text=(["Medium_Length_Name"])
|
43
|
+
pango: width=([716800])
|
44
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
45
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
46
|
+
pango: alignment=([#<Pango::Layout::Alignment center>])
|
47
|
+
pango: justify=([false])
|
48
|
+
pango: spacing=([0])
|
49
|
+
cairo: update_pango_layout([MockDouble])
|
50
|
+
cairo: update_pango_layout([MockDouble])
|
51
|
+
cairo: show_pango_layout([MockDouble])
|
52
|
+
cairo: rounded_rectangle([65, 400, 0, 0, 0, 0])
|
53
|
+
cairo: set_source_color([:red])
|
54
|
+
cairo: set_line_width([2.0])
|
55
|
+
cairo: stroke([])
|
56
|
+
cairo: restore([])
|
57
|
+
cairo: save([])
|
58
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
59
|
+
cairo: translate([65, 400])
|
60
|
+
cairo: rotate([0])
|
61
|
+
cairo: translate([-65, -400])
|
62
|
+
cairo: move_to([65, 400])
|
63
|
+
pango: font_description=([])
|
64
|
+
pango: text=(["Super_Duper_Long_Name"])
|
65
|
+
pango: width=([716800])
|
66
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
67
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
68
|
+
pango: alignment=([#<Pango::Layout::Alignment center>])
|
69
|
+
pango: justify=([false])
|
70
|
+
pango: spacing=([0])
|
71
|
+
cairo: update_pango_layout([MockDouble])
|
72
|
+
cairo: update_pango_layout([MockDouble])
|
73
|
+
cairo: show_pango_layout([MockDouble])
|
74
|
+
cairo: rounded_rectangle([65, 400, 0, 0, 0, 0])
|
75
|
+
cairo: set_source_color([:red])
|
76
|
+
cairo: set_line_width([2.0])
|
77
|
+
cairo: stroke([])
|
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"])
|
@@ -0,0 +1,206 @@
|
|
1
|
+
cairo: save([])
|
2
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
|
3
|
+
cairo: paint([])
|
4
|
+
cairo: restore([])
|
5
|
+
cairo: save([])
|
6
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
|
7
|
+
cairo: paint([])
|
8
|
+
cairo: restore([])
|
9
|
+
cairo: save([])
|
10
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=1.0, @green=1.0, @blue=1.0>])
|
11
|
+
cairo: paint([])
|
12
|
+
cairo: restore([])
|
13
|
+
cairo: save([])
|
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>])
|
16
|
+
cairo: set_line_width([2.0])
|
17
|
+
cairo: stroke([])
|
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>])
|
20
|
+
cairo: fill([])
|
21
|
+
cairo: restore([])
|
22
|
+
cairo: save([])
|
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>])
|
25
|
+
cairo: set_line_width([2.0])
|
26
|
+
cairo: stroke([])
|
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>])
|
29
|
+
cairo: fill([])
|
30
|
+
cairo: restore([])
|
31
|
+
cairo: save([])
|
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>])
|
34
|
+
cairo: set_line_width([2.0])
|
35
|
+
cairo: stroke([])
|
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>])
|
38
|
+
cairo: fill([])
|
39
|
+
cairo: restore([])
|
40
|
+
cairo: save([])
|
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>])
|
43
|
+
cairo: set_line_width([2.0])
|
44
|
+
cairo: stroke([])
|
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>])
|
47
|
+
cairo: fill([])
|
48
|
+
cairo: restore([])
|
49
|
+
cairo: save([])
|
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>])
|
52
|
+
cairo: set_line_width([2.0])
|
53
|
+
cairo: stroke([])
|
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>])
|
56
|
+
cairo: fill([])
|
57
|
+
cairo: restore([])
|
58
|
+
cairo: save([])
|
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>])
|
61
|
+
cairo: set_line_width([2.0])
|
62
|
+
cairo: stroke([])
|
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>])
|
65
|
+
cairo: fill([])
|
66
|
+
cairo: restore([])
|
67
|
+
cairo: save([])
|
68
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
69
|
+
cairo: translate([220, 78])
|
70
|
+
cairo: rotate([0])
|
71
|
+
cairo: translate([-220, -78])
|
72
|
+
cairo: move_to([220, 78])
|
73
|
+
pango: font_description=([])
|
74
|
+
pango: text=(["Thief"])
|
75
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
76
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
77
|
+
pango: alignment=([#<Pango::Layout::Alignment left>])
|
78
|
+
pango: justify=([false])
|
79
|
+
pango: spacing=([0])
|
80
|
+
cairo: update_pango_layout([MockDouble])
|
81
|
+
cairo: update_pango_layout([MockDouble])
|
82
|
+
cairo: show_pango_layout([MockDouble])
|
83
|
+
cairo: restore([])
|
84
|
+
cairo: save([])
|
85
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
86
|
+
cairo: translate([220, 78])
|
87
|
+
cairo: rotate([0])
|
88
|
+
cairo: translate([-220, -78])
|
89
|
+
cairo: move_to([220, 78])
|
90
|
+
pango: font_description=([])
|
91
|
+
pango: text=(["Grifter"])
|
92
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
93
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
94
|
+
pango: alignment=([#<Pango::Layout::Alignment left>])
|
95
|
+
pango: justify=([false])
|
96
|
+
pango: spacing=([0])
|
97
|
+
cairo: update_pango_layout([MockDouble])
|
98
|
+
cairo: update_pango_layout([MockDouble])
|
99
|
+
cairo: show_pango_layout([MockDouble])
|
100
|
+
cairo: restore([])
|
101
|
+
cairo: save([])
|
102
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
103
|
+
cairo: translate([220, 78])
|
104
|
+
cairo: rotate([0])
|
105
|
+
cairo: translate([-220, -78])
|
106
|
+
cairo: move_to([220, 78])
|
107
|
+
pango: font_description=([])
|
108
|
+
pango: text=(["Mastermind"])
|
109
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
110
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
111
|
+
pango: alignment=([#<Pango::Layout::Alignment left>])
|
112
|
+
pango: justify=([false])
|
113
|
+
pango: spacing=([0])
|
114
|
+
cairo: update_pango_layout([MockDouble])
|
115
|
+
cairo: update_pango_layout([MockDouble])
|
116
|
+
cairo: show_pango_layout([MockDouble])
|
117
|
+
cairo: restore([])
|
118
|
+
cairo: save([])
|
119
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
120
|
+
cairo: translate([75, 85])
|
121
|
+
cairo: rotate([0])
|
122
|
+
cairo: translate([-75, -85])
|
123
|
+
cairo: move_to([75, 85])
|
124
|
+
pango: font_description=([])
|
125
|
+
pango: text=(["1"])
|
126
|
+
pango: width=([131072])
|
127
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
128
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
129
|
+
pango: alignment=([#<Pango::Layout::Alignment center>])
|
130
|
+
pango: justify=([false])
|
131
|
+
pango: spacing=([0])
|
132
|
+
cairo: update_pango_layout([MockDouble])
|
133
|
+
cairo: update_pango_layout([MockDouble])
|
134
|
+
cairo: show_pango_layout([MockDouble])
|
135
|
+
cairo: restore([])
|
136
|
+
cairo: save([])
|
137
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
138
|
+
cairo: translate([75, 85])
|
139
|
+
cairo: rotate([0])
|
140
|
+
cairo: translate([-75, -85])
|
141
|
+
cairo: move_to([75, 85])
|
142
|
+
pango: font_description=([])
|
143
|
+
pango: text=(["2"])
|
144
|
+
pango: width=([131072])
|
145
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
146
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
147
|
+
pango: alignment=([#<Pango::Layout::Alignment center>])
|
148
|
+
pango: justify=([false])
|
149
|
+
pango: spacing=([0])
|
150
|
+
cairo: update_pango_layout([MockDouble])
|
151
|
+
cairo: update_pango_layout([MockDouble])
|
152
|
+
cairo: show_pango_layout([MockDouble])
|
153
|
+
cairo: restore([])
|
154
|
+
cairo: save([])
|
155
|
+
cairo: set_source_color([#<Cairo::Color::RGB: @alpha=1.0, @red=0.0, @green=0.0, @blue=0.0>])
|
156
|
+
cairo: translate([75, 85])
|
157
|
+
cairo: rotate([0])
|
158
|
+
cairo: translate([-75, -85])
|
159
|
+
cairo: move_to([75, 85])
|
160
|
+
pango: font_description=([])
|
161
|
+
pango: text=(["3"])
|
162
|
+
pango: width=([131072])
|
163
|
+
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
|
164
|
+
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
|
165
|
+
pango: alignment=([#<Pango::Layout::Alignment center>])
|
166
|
+
pango: justify=([false])
|
167
|
+
pango: spacing=([0])
|
168
|
+
cairo: update_pango_layout([MockDouble])
|
169
|
+
cairo: update_pango_layout([MockDouble])
|
170
|
+
cairo: show_pango_layout([MockDouble])
|
171
|
+
cairo: restore([])
|
172
|
+
cairo: save([])
|
173
|
+
cairo: translate([620, 75])
|
174
|
+
cairo: rotate([0])
|
175
|
+
cairo: translate([-620, -75])
|
176
|
+
cairo: set_source([ImageSurface, 620, 75])
|
177
|
+
cairo: paint([1.0])
|
178
|
+
cairo: restore([])
|
179
|
+
cairo: save([])
|
180
|
+
cairo: translate([620, 75])
|
181
|
+
cairo: rotate([0])
|
182
|
+
cairo: translate([-620, -75])
|
183
|
+
cairo: set_source([ImageSurface, 620, 75])
|
184
|
+
cairo: paint([1.0])
|
185
|
+
cairo: restore([])
|
186
|
+
cairo: scale([1.0, 1.0])
|
187
|
+
cairo: render_rsvg_handle([RSVG::Handle, nil])
|
188
|
+
cairo: save([])
|
189
|
+
cairo: translate([620, 218])
|
190
|
+
cairo: rotate([0])
|
191
|
+
cairo: translate([-620, -218])
|
192
|
+
cairo: set_source([MockDouble, 620, 218])
|
193
|
+
cairo: paint([1.0])
|
194
|
+
cairo: restore([])
|
195
|
+
cairo: scale([1.0, 1.0])
|
196
|
+
cairo: render_rsvg_handle([RSVG::Handle, nil])
|
197
|
+
cairo: save([])
|
198
|
+
cairo: translate([620, 218])
|
199
|
+
cairo: rotate([0])
|
200
|
+
cairo: translate([-620, -218])
|
201
|
+
cairo: set_source([MockDouble, 620, 218])
|
202
|
+
cairo: paint([1.0])
|
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"])
|