diff options
author | Mátyás Mustoha <mmatyas@inf.u-szeged.hu> | 2015-04-09 11:47:19 +0200 |
---|---|---|
committer | Mátyás Mustoha <mmatyas@inf.u-szeged.hu> | 2015-04-09 11:50:31 +0200 |
commit | b9244ec1c2c38ce19cd7f9fe113317837c673b2f (patch) | |
tree | edd549f02456b366f154329df1908d4cdf0ebcea /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 74afd086d2ce5a5631a63a1f6642cfc0de5dfef7 (diff) | |
download | servo-b9244ec1c2c38ce19cd7f9fe113317837c673b2f.tar.gz servo-b9244ec1c2c38ce19cd7f9fe113317837c673b2f.zip |
Canvas: moved Rect validation to a common function.
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 8213e7afc87..9c7c7a58f2f 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -258,6 +258,18 @@ impl CanvasRenderingContext2D { _ => panic!("Image Cache: Unknown Result") } } + + fn create_drawable_rect(&self, x: f64, y: f64, w: f64, h: f64) -> Option<Rect<f32>> { + if !([x, y, w, h].iter().all(|val| val.is_finite())) { + return None; + } + + if w == 0.0 && h == 0.0 { + return None; + } + + Some(Rect(Point2D(x as f32, y as f32), Size2D(w as f32, h as f32))) + } } pub trait CanvasRenderingContext2DHelpers { @@ -358,33 +370,21 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'a, CanvasRenderingContext2D> } fn FillRect(self, x: f64, y: f64, width: f64, height: f64) { - if !(x.is_finite() && y.is_finite() && - width.is_finite() && height.is_finite()) { - return; + if let Some(rect) = self.create_drawable_rect(x, y, width, height) { + self.renderer.send(CanvasMsg::FillRect(rect)).unwrap(); } - - let rect = Rect(Point2D(x as f32, y as f32), Size2D(width as f32, height as f32)); - self.renderer.send(CanvasMsg::FillRect(rect)).unwrap(); } fn ClearRect(self, x: f64, y: f64, width: f64, height: f64) { - if !(x.is_finite() && y.is_finite() && - width.is_finite() && height.is_finite()) { - return; + if let Some(rect) = self.create_drawable_rect(x, y, width, height) { + self.renderer.send(CanvasMsg::ClearRect(rect)).unwrap(); } - - let rect = Rect(Point2D(x as f32, y as f32), Size2D(width as f32, height as f32)); - self.renderer.send(CanvasMsg::ClearRect(rect)).unwrap(); } fn StrokeRect(self, x: f64, y: f64, width: f64, height: f64) { - if !(x.is_finite() && y.is_finite() && - width.is_finite() && height.is_finite()) { - return; + if let Some(rect) = self.create_drawable_rect(x, y, width, height) { + self.renderer.send(CanvasMsg::StrokeRect(rect)).unwrap(); } - - let rect = Rect(Point2D(x as f32, y as f32), Size2D(width as f32, height as f32)); - self.renderer.send(CanvasMsg::StrokeRect(rect)).unwrap(); } fn BeginPath(self) { |