diff options
author | David Zbarsky <dzbarsky@gmail.com> | 2015-11-28 20:03:17 -0800 |
---|---|---|
committer | David Zbarsky <dzbarsky@gmail.com> | 2015-12-05 17:49:49 -0800 |
commit | 789a90a82f7d0c89bf2b1065acbf218626a66a41 (patch) | |
tree | 321fbc8845716b9a9c037a49da66197a16866be0 /components/canvas | |
parent | 2af23dc06151475b053bd76976fd9da899f27b8b (diff) | |
download | servo-789a90a82f7d0c89bf2b1065acbf218626a66a41.tar.gz servo-789a90a82f7d0c89bf2b1065acbf218626a66a41.zip |
Implement IsPointInPath
Diffstat (limited to 'components/canvas')
-rw-r--r-- | components/canvas/canvas_paint_task.rs | 11 |
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 |