Implementing mask feature for images

Fixes #32.
This commit is contained in:
Andy Meneely
2015-02-01 23:04:39 -05:00
parent f5e5b1326d
commit 7a53f68393
9 changed files with 127 additions and 20 deletions
+2 -2
View File
@@ -7,7 +7,7 @@ describe Squib::Deck, 'images' do
it 'calls Card#png, Dir, and progress bar' do
card = instance_double(Squib::Card)
progress = double(Squib::Progress)
expect(card).to receive(:png).with('foo', 0, 1, :native, :native, 0.5, :overlay, 0.75).once
expect(card).to receive(:png).with('foo', 0, 1, :native, :native, 0.5, :overlay, 0.75, nil).once
expect(Dir).to receive(:chdir).with('.').and_yield.once
expect(progress).to receive(:start).and_yield(progress).once
expect(progress).to receive(:increment).once
@@ -23,7 +23,7 @@ describe Squib::Deck, 'images' do
it 'calls Card#svg, Dir, and progress bar' do
card = instance_double(Squib::Card)
progress = double(Squib::Progress)
expect(card).to receive(:svg).with('foo', '#bar', 0, 1, 20, 30, 0.5, :overlay, 0.75).once
expect(card).to receive(:svg).with('foo', '#bar', 0, 1, 20, 30, 0.5, :overlay, 0.75, nil).once
expect(Dir).to receive(:chdir).with('.').and_yield.once
expect(progress).to receive(:start).and_yield(progress).once
expect(progress).to receive(:increment).once
+26
View File
@@ -109,4 +109,30 @@ cairo: translate([-300, -900])
cairo: set_source([MockDouble, 300, 900])
cairo: paint([1.0])
cairo: restore([])
cairo: scale([0.390625, 0.390625])
cairo: render_rsvg_handle([RSVG::Handle, nil])
cairo: save([])
cairo: translate([500, 600])
cairo: rotate([0])
cairo: translate([-500, -600])
cairo: set_source_color(["#00ff00"])
cairo: mask([MockDouble, 500, 600])
cairo: restore([])
cairo: scale([0.390625, 0.390625])
cairo: render_rsvg_handle([RSVG::Handle, nil])
cairo: save([])
cairo: translate([500, 800])
cairo: rotate([0])
cairo: translate([-500, -800])
cairo: set_source([LinearPattern])
cairo: mask([MockDouble, 500, 800])
cairo: restore([])
cairo: save([])
cairo: translate([650, 950])
cairo: rotate([0])
cairo: translate([-650, -950])
cairo: set_source([ImageSurface, 650, 950])
cairo: set_source_color([:magenta])
cairo: mask([ImageSurface, 650, 950])
cairo: restore([])
surface: write_to_png(["_output/load_images_0.png"])
+5 -6
View File
@@ -26,7 +26,7 @@ describe Squib::Card do
card = Squib::Card.new(@deck, 100, 150)
# png(file, x, y, alpha, blend, angle)
card.png('foo.png', 37, 38, :native, :native, 0.9, :none, 0.0)
card.png('foo.png', 37, 38, :native, :native, 0.9, :none, 0.0, nil)
end
it 'sets blend when needed' do
@@ -34,9 +34,8 @@ describe Squib::Card do
expect(@context).to receive(:operator=).with(:overlay).once
card = Squib::Card.new(@deck, 100, 150)
card.png('foo.png', 37, 38, :native, :native, 0.9, :overlay, 0.0)
card.png('foo.png', 37, 38, :native, :native, 0.9, :overlay, 0.0, nil)
end
end
context '#svg' do
@@ -55,7 +54,7 @@ describe Squib::Card do
card = Squib::Card.new(@deck, 100, 150)
# svg(file, id, x, y, width, height, alpha, blend, angle)
card.svg('foo.png', 'id', 37, 38, :native, :native, 0.9, :none, 0.0)
card.svg('foo.png', 'id', 37, 38, :native, :native, 0.9, :none, 0.0, nil)
end
it 'sets blend when needed' do
@@ -64,7 +63,7 @@ describe Squib::Card do
expect(@context).to receive(:operator=).with(:overlay).once
card = Squib::Card.new(@deck, 100, 150)
card.svg('foo.png', nil, 37, 38, :native, :native, 0.9, :overlay, 0.0)
card.svg('foo.png', nil, 37, 38, :native, :native, 0.9, :overlay, 0.0, nil)
end
it 'sets width & height when needed' do
@@ -74,7 +73,7 @@ describe Squib::Card do
expect(@context).to receive(:scale).with(2.0, 3.0).once
card = Squib::Card.new(@deck, 100, 150)
card.svg('foo.png', nil, 37, 38, 200, 300, 0.9, :none, 0.0)
card.svg('foo.png', nil, 37, 38, 200, 300, 0.9, :none, 0.0, nil)
end
end