Implement stroke_strategy option for all drawing operations

Fixes #102
This commit is contained in:
Andy Meneely
2015-07-27 22:55:49 -04:00
parent 5bbde3a259
commit 19767c54c4
11 changed files with 196 additions and 27 deletions
+18 -1
View File
@@ -60,6 +60,23 @@ describe Squib::Args::Draw do
expect(draw).to have_attributes( cap: [Cairo::LINE_CAP_SQUARE] )
end
it 'allows fill_first stroke_strategy' do
args = {stroke_strategy: :FILL_first}
draw.load! args
expect(draw).to have_attributes( stroke_strategy: [:fill_first] )
end
it 'allows stroke_first stroke_strategy' do
args = {stroke_strategy: ' stroke_FIRST '}
draw.load! args
expect(draw).to have_attributes( stroke_strategy: [:stroke_first] )
end
it 'disallows anything not stroke_first and fill_first' do
args = {stroke_strategy: 'foo'}
expect { draw.load! args }.to raise_error("Only 'stroke_first' or 'fill_first' allowed")
end
context 'custom colors' do
it 'looks up custom colors in the config' do
@@ -75,4 +92,4 @@ describe Squib::Args::Draw do
end
end
end
end
+39 -13
View File
@@ -91,29 +91,55 @@ cairo: save([])
cairo: translate([300, 1000])
cairo: rotate([0])
cairo: translate([-300, -1000])
cairo: move_to([325, 1000])
cairo: line_to([325.0, 1000.0])
cairo: line_to([308.09016994374946, 1005.8778525229247])
cairo: line_to([307.7254248593737, 1023.7764129073788])
cairo: line_to([296.90983005625054, 1009.5105651629515])
cairo: line_to([279.7745751406263, 1014.6946313073119])
cairo: line_to([290.0, 1000.0])
cairo: line_to([279.7745751406263, 985.3053686926881])
cairo: line_to([296.90983005625054, 990.4894348370485])
cairo: line_to([307.7254248593737, 976.2235870926212])
cairo: line_to([308.09016994374946, 994.1221474770753])
cairo: line_to([325.0, 1000.0])
cairo: move_to([340, 1000])
cairo: line_to([340.0, 1000.0])
cairo: line_to([312.1352549156242, 1008.8167787843871])
cairo: line_to([312.3606797749979, 1038.0422606518061])
cairo: line_to([295.3647450843758, 1014.2658477444273])
cairo: line_to([267.6393202250021, 1023.511410091699])
cairo: line_to([285.0, 1000.0])
cairo: line_to([267.6393202250021, 976.488589908301])
cairo: line_to([295.3647450843758, 985.7341522555727])
cairo: line_to([312.3606797749979, 961.9577393481939])
cairo: line_to([312.1352549156242, 991.1832212156129])
cairo: line_to([340.0, 1000.0])
cairo: close_path([])
cairo: set_source_color(["cyan"])
cairo: fill_preserve([])
cairo: set_source_color(["burgundy"])
cairo: set_line_width([3])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: translate([375, 1000])
cairo: rotate([0])
cairo: translate([-375, -1000])
cairo: move_to([415, 1000])
cairo: line_to([415.0, 1000.0])
cairo: line_to([387.1352549156242, 1008.8167787843871])
cairo: line_to([387.3606797749979, 1038.0422606518061])
cairo: line_to([370.3647450843758, 1014.2658477444273])
cairo: line_to([342.6393202250021, 1023.511410091699])
cairo: line_to([360.0, 1000.0])
cairo: line_to([342.6393202250021, 976.488589908301])
cairo: line_to([370.3647450843758, 985.7341522555727])
cairo: line_to([387.3606797749979, 961.9577393481939])
cairo: line_to([387.1352549156242, 991.1832212156129])
cairo: line_to([415.0, 1000.0])
cairo: close_path([])
cairo: set_source_color(["burgundy"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke_preserve([])
cairo: set_source_color(["cyan"])
cairo: fill([])
cairo: restore([])
cairo: save([])
cairo: translate([500, 1000])
cairo: rotate([1.5707963267948966])
cairo: translate([-500, -1000])
+85 -4
View File
@@ -780,11 +780,11 @@ pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: set_source_color(["green"])
cairo: translate([540.0, 900.0])
cairo: translate([540.0, 870.0])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["Stroke n <span fgcolor=\"#ff0000\">fill</span>"])
pango: text=(["Fill n <span fgcolor=\"#ff0000\">stroke</span>"])
pango: markup=(["foo"])
pango: width=([261120.0])
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
@@ -800,6 +800,57 @@ cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: set_source_color(["green"])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: set_source_color(["green"])
cairo: translate([540.0, 870.0])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["Fill n <span fgcolor=\"#ff0000\">stroke</span>"])
pango: markup=(["foo"])
pango: width=([261120.0])
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
pango: alignment=([#<Pango::Layout::Alignment left>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
cairo: pango_layout_path([MockDouble])
cairo: set_source_color(["blue"])
cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: set_source_color(["green"])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: set_source_color(["green"])
cairo: translate([540.0, 870.0])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["Fill n <span fgcolor=\"#ff0000\">stroke</span>"])
pango: markup=(["foo"])
pango: width=([261120.0])
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
pango: alignment=([#<Pango::Layout::Alignment left>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
cairo: pango_layout_path([MockDouble])
cairo: set_source_color(["blue"])
cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: set_source_color(["green"])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
@@ -816,7 +867,6 @@ pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
pango: alignment=([#<Pango::Layout::Alignment left>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
cairo: pango_layout_path([MockDouble])
cairo: set_source_color(["blue"])
cairo: set_line_width([2.0])
@@ -824,6 +874,8 @@ cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: set_source_color(["green"])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
@@ -840,7 +892,6 @@ pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
pango: alignment=([#<Pango::Layout::Alignment left>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
cairo: pango_layout_path([MockDouble])
cairo: set_source_color(["blue"])
cairo: set_line_width([2.0])
@@ -848,6 +899,33 @@ cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: set_source_color(["green"])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: set_source_color(["green"])
cairo: translate([540.0, 900.0])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["Stroke n <span fgcolor=\"#ff0000\">fill</span>"])
pango: markup=(["foo"])
pango: width=([261120.0])
pango: wrap=([#<Pango::Layout::WrapMode word-char>])
pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
pango: alignment=([#<Pango::Layout::Alignment left>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: pango_layout_path([MockDouble])
cairo: set_source_color(["blue"])
cairo: set_line_width([2.0])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: set_source_color(["green"])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
@@ -872,6 +950,7 @@ cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[4.0, 2.0]])
cairo: stroke([])
cairo: set_source_color(["white"])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
@@ -896,6 +975,7 @@ cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[4.0, 2.0]])
cairo: stroke([])
cairo: set_source_color(["white"])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
@@ -920,6 +1000,7 @@ cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[4.0, 2.0]])
cairo: stroke([])
cairo: set_source_color(["white"])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])