diff options
-rw-r--r-- | components/canvas/canvas_data.rs | 4 | ||||
-rw-r--r-- | components/canvas/raqote_backend.rs | 21 |
2 files changed, 21 insertions, 4 deletions
diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index 1602c8c7467..d9b36ad5816 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -214,7 +214,7 @@ impl<'a> PathBuilderRef<'a> { // This defines required methods for DrawTarget of azure and raqote // The prototypes are derived from azure's methods. pub trait GenericDrawTarget { - fn clear_rect(&self, rect: &Rect<f32>); + fn clear_rect(&mut self, rect: &Rect<f32>); fn copy_surface( &mut self, surface: SourceSurface, @@ -527,7 +527,7 @@ impl<'a> CanvasData<'a> { } } - pub fn clear_rect(&self, rect: &Rect<f32>) { + pub fn clear_rect(&mut self, rect: &Rect<f32>) { self.drawtarget.clear_rect(rect); } diff --git a/components/canvas/raqote_backend.rs b/components/canvas/raqote_backend.rs index f3237498727..d33a6597ba5 100644 --- a/components/canvas/raqote_backend.rs +++ b/components/canvas/raqote_backend.rs @@ -192,8 +192,25 @@ impl Path { } impl GenericDrawTarget for raqote::DrawTarget { - fn clear_rect(&self, _rect: &Rect<f32>) { - unimplemented!(); + fn clear_rect(&mut self, rect: &Rect<f32>) { + let mut pb = raqote::PathBuilder::new(); + pb.rect( + rect.origin.x, + rect.origin.y, + rect.size.width, + rect.size.height, + ); + raqote::DrawTarget::fill( + self, + &pb.finish(), + &raqote::Source::Solid(raqote::SolidSource { + r: 0, + g: 0, + b: 0, + a: 0, + }), + &raqote::DrawOptions::new(), + ); } fn copy_surface( &mut self, |