mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Make fill() draw uncovered pixels as (0,0,0,0) for certain composition ops
This commit is contained in:
parent
4d4e68ca6b
commit
47ee2729ec
1 changed files with 42 additions and 7 deletions
|
@ -310,7 +310,12 @@ impl GenericDrawTarget for raqote::DrawTarget {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
self.fill(&pb.finish(), &source, draw_options.as_raqote());
|
GenericDrawTarget::fill(
|
||||||
|
self,
|
||||||
|
&Path::Raqote(pb.finish()),
|
||||||
|
Pattern::Raqote(source),
|
||||||
|
draw_options,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
fn draw_surface_with_shadow(
|
fn draw_surface_with_shadow(
|
||||||
&self,
|
&self,
|
||||||
|
@ -324,11 +329,36 @@ impl GenericDrawTarget for raqote::DrawTarget {
|
||||||
warn!("no support for drawing shadows");
|
warn!("no support for drawing shadows");
|
||||||
}
|
}
|
||||||
fn fill(&mut self, path: &Path, pattern: Pattern, draw_options: &DrawOptions) {
|
fn fill(&mut self, path: &Path, pattern: Pattern, draw_options: &DrawOptions) {
|
||||||
|
match draw_options.as_raqote().blend_mode {
|
||||||
|
raqote::BlendMode::Src => {
|
||||||
|
self.clear(raqote::SolidSource::from_unpremultiplied_argb(0, 0, 0, 0));
|
||||||
self.fill(
|
self.fill(
|
||||||
path.as_raqote(),
|
path.as_raqote(),
|
||||||
pattern.as_raqote(),
|
pattern.as_raqote(),
|
||||||
draw_options.as_raqote(),
|
draw_options.as_raqote(),
|
||||||
);
|
);
|
||||||
|
},
|
||||||
|
raqote::BlendMode::DstIn |
|
||||||
|
raqote::BlendMode::DstAtop |
|
||||||
|
raqote::BlendMode::SrcIn |
|
||||||
|
raqote::BlendMode::SrcOut => {
|
||||||
|
self.push_layer(1.);
|
||||||
|
self.clear(raqote::SolidSource::from_unpremultiplied_argb(0, 0, 0, 0));
|
||||||
|
self.fill(
|
||||||
|
path.as_raqote(),
|
||||||
|
pattern.as_raqote(),
|
||||||
|
draw_options.as_raqote(),
|
||||||
|
);
|
||||||
|
self.pop_layer();
|
||||||
|
},
|
||||||
|
_ => {
|
||||||
|
self.fill(
|
||||||
|
path.as_raqote(),
|
||||||
|
pattern.as_raqote(),
|
||||||
|
draw_options.as_raqote(),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fn fill_rect(
|
fn fill_rect(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
@ -349,7 +379,12 @@ impl GenericDrawTarget for raqote::DrawTarget {
|
||||||
raqote::DrawOptions::new()
|
raqote::DrawOptions::new()
|
||||||
};
|
};
|
||||||
|
|
||||||
raqote::DrawTarget::fill(self, &pb.finish(), pattern.as_raqote(), &draw_options);
|
GenericDrawTarget::fill(
|
||||||
|
self,
|
||||||
|
&Path::Raqote(pb.finish()),
|
||||||
|
pattern,
|
||||||
|
&DrawOptions::Raqote(draw_options),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
fn get_format(&self) -> SurfaceFormat {
|
fn get_format(&self) -> SurfaceFormat {
|
||||||
SurfaceFormat::Raqote(())
|
SurfaceFormat::Raqote(())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue