aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/canvas_paint_task.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/canvas/canvas_paint_task.rs')
-rw-r--r--components/canvas/canvas_paint_task.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/components/canvas/canvas_paint_task.rs b/components/canvas/canvas_paint_task.rs
index c1b81140d04..3a495620c03 100644
--- a/components/canvas/canvas_paint_task.rs
+++ b/components/canvas/canvas_paint_task.rs
@@ -136,6 +136,9 @@ impl<'a> CanvasPaintTask<'a> {
Canvas2dMsg::Fill => painter.fill(),
Canvas2dMsg::Stroke => painter.stroke(),
Canvas2dMsg::Clip => painter.clip(),
+ Canvas2dMsg::IsPointInPath(x, y, fill_rule, chan) => {
+ painter.is_point_in_path(x, y, fill_rule, chan)
+ },
Canvas2dMsg::DrawImage(imagedata, image_size, dest_rect, source_rect,
smoothing_enabled) => {
painter.draw_image(imagedata, image_size, dest_rect, source_rect, smoothing_enabled)
@@ -318,6 +321,14 @@ impl<'a> CanvasPaintTask<'a> {
self.drawtarget.push_clip(&self.path_builder.finish());
}
+ fn is_point_in_path(&mut self, x: f64, y: f64,
+ _fill_rule: FillRule, chan: IpcSender<bool>) {
+ let path = self.path_builder.finish();
+ let result = path.contains_point(x, y, &self.state.transform);
+ self.path_builder = path.copy_to_builder();
+ chan.send(result).unwrap();
+ }
+
fn draw_image(&self, image_data: Vec<u8>, image_size: Size2D<f64>,
dest_rect: Rect<f64>, source_rect: Rect<f64>, smoothing_enabled: bool) {
// We round up the floating pixel values to draw the pixels