aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/canvas/canvas_data.rs4
-rw-r--r--components/canvas/raqote_backend.rs21
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,