diff options
author | pylbrecht <palbrecht@mailbox.org> | 2019-12-02 07:54:45 +0100 |
---|---|---|
committer | pylbrecht <palbrecht@mailbox.org> | 2019-12-17 19:52:00 +0100 |
commit | da9b4c33cd68929437e1443f6ab23027b3f26ce0 (patch) | |
tree | 307255eb1ca3906059b16f3bca26095fb79a1cf2 /components/canvas/raqote_backend.rs | |
parent | 1597b956b89d12d3fd43b36ee9969e2be2e15342 (diff) | |
download | servo-da9b4c33cd68929437e1443f6ab23027b3f26ce0.tar.gz servo-da9b4c33cd68929437e1443f6ab23027b3f26ce0.zip |
Make fill() handle all composition operations
Diffstat (limited to 'components/canvas/raqote_backend.rs')
-rw-r--r-- | components/canvas/raqote_backend.rs | 35 |
1 files changed, 5 insertions, 30 deletions
diff --git a/components/canvas/raqote_backend.rs b/components/canvas/raqote_backend.rs index a7cf3bd1023..317703154c3 100644 --- a/components/canvas/raqote_backend.rs +++ b/components/canvas/raqote_backend.rs @@ -329,36 +329,11 @@ impl GenericDrawTarget for raqote::DrawTarget { warn!("no support for drawing shadows"); } 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( - path.as_raqote(), - pattern.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(), - ); - }, - } + let mut options = draw_options.as_raqote().clone(); + self.push_layer_with_blend(1., options.blend_mode); + options.blend_mode = raqote::BlendMode::SrcOver; + self.fill(path.as_raqote(), pattern.as_raqote(), &options); + self.pop_layer(); } fn fill_rect( &mut self, |