aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorDavid Zbarsky <dzbarsky@gmail.com>2015-11-28 16:47:28 -0800
committerDavid Zbarsky <dzbarsky@gmail.com>2015-11-30 21:23:51 -0800
commit302f41d34bcb8d7eecc58770087f1727a99e19d7 (patch)
tree85b8e75ff939c7d171c3c7f141cd1ebe6233747c /components/script/dom/canvasrenderingcontext2d.rs
parentb4906aa008325963348b6cc13bbcf8d2a4c9d694 (diff)
downloadservo-302f41d34bcb8d7eecc58770087f1727a99e19d7.tar.gz
servo-302f41d34bcb8d7eecc58770087f1727a99e19d7.zip
Reset canvas state when changing bitmap dimensions
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index c0ca96beef6..5fed20daae7 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -143,12 +143,20 @@ impl CanvasRenderingContext2D {
CanvasRenderingContext2DBinding::Wrap)
}
- pub fn recreate(&self, size: Size2D<i32>) {
+ // https://html.spec.whatwg.org/multipage/#concept-canvas-set-bitmap-dimensions
+ pub fn set_bitmap_dimensions(&self, size: Size2D<i32>) {
+ self.reset_to_initial_state();
self.ipc_renderer
.send(CanvasMsg::Common(CanvasCommonMsg::Recreate(size)))
.unwrap();
}
+ // https://html.spec.whatwg.org/multipage/#reset-the-rendering-context-to-its-default-state
+ fn reset_to_initial_state(&self) {
+ self.saved_states.borrow_mut().clear();
+ *self.state.borrow_mut() = CanvasContextState::new();
+ }
+
pub fn ipc_renderer(&self) -> IpcSender<CanvasMsg> {
self.ipc_renderer.clone()
}