aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorMátyás Mustoha <mmatyas@inf.u-szeged.hu>2015-04-09 11:47:19 +0200
committerMátyás Mustoha <mmatyas@inf.u-szeged.hu>2015-04-09 11:50:31 +0200
commitb9244ec1c2c38ce19cd7f9fe113317837c673b2f (patch)
treeedd549f02456b366f154329df1908d4cdf0ebcea /components/script/dom/canvasrenderingcontext2d.rs
parent74afd086d2ce5a5631a63a1f6642cfc0de5dfef7 (diff)
downloadservo-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.rs36
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) {