diff options
author | David Zbarsky <dzbarsky@gmail.com> | 2015-11-28 16:47:28 -0800 |
---|---|---|
committer | David Zbarsky <dzbarsky@gmail.com> | 2015-11-30 21:23:51 -0800 |
commit | 302f41d34bcb8d7eecc58770087f1727a99e19d7 (patch) | |
tree | 85b8e75ff939c7d171c3c7f141cd1ebe6233747c /components/script/dom/canvasrenderingcontext2d.rs | |
parent | b4906aa008325963348b6cc13bbcf8d2a4c9d694 (diff) | |
download | servo-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.rs | 10 |
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() } |