diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-01-09 12:06:47 -0700 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-01-09 12:06:47 -0700 |
commit | da400a7a453eacf6f3089cc07e5dc61f385a0909 (patch) | |
tree | 6026f5e80de0a1ffd974749d89d90d562bf12144 /components/script | |
parent | 43e34d6d1050227eecc8fa293f9faec066f173a1 (diff) | |
parent | 81f47344d6e121d86de368a25107415406de3c0f (diff) | |
download | servo-da400a7a453eacf6f3089cc07e5dc61f385a0909.tar.gz servo-da400a7a453eacf6f3089cc07e5dc61f385a0909.zip |
auto merge of #4137 : ebalint/servo/canvas, r=jdm
Content of the canvas is drawn, tests/html/test_canvas.html now works.
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 10 | ||||
-rw-r--r-- | components/script/dom/htmlcanvaselement.rs | 26 |
2 files changed, 34 insertions, 2 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 71a4b639cf2..9ed36217fec 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -44,6 +44,16 @@ impl CanvasRenderingContext2D { } } +pub trait LayoutCanvasRenderingContext2DHelpers { + unsafe fn get_renderer(&self) -> Sender<CanvasMsg>; +} + +impl LayoutCanvasRenderingContext2DHelpers for JS<CanvasRenderingContext2D> { + unsafe fn get_renderer(&self) -> Sender<CanvasMsg> { + (*self.unsafe_get()).renderer.clone() + } +} + impl<'a> CanvasRenderingContext2DMethods for JSRef<'a, CanvasRenderingContext2D> { fn Canvas(self) -> Temporary<HTMLCanvasElement> { Temporary::new(self.canvas) diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index eb02b6bc87d..15f25a495a5 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -2,6 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +use canvas::canvas_paint_task::CanvasMsg; use dom::attr::Attr; use dom::attr::AttrHelpers; use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding; @@ -9,8 +10,8 @@ use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding::HTMLCanvasElemen use dom::bindings::codegen::InheritTypes::HTMLCanvasElementDerived; use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast}; use dom::bindings::global::GlobalRef; -use dom::bindings::js::{MutNullableJS, JSRef, Temporary}; -use dom::canvasrenderingcontext2d::CanvasRenderingContext2D; +use dom::bindings::js::{MutNullableJS, JS, JSRef, Temporary}; +use dom::canvasrenderingcontext2d::{CanvasRenderingContext2D, LayoutCanvasRenderingContext2DHelpers}; use dom::document::Document; use dom::element::{Element, AttributeHandlers}; use dom::eventtarget::{EventTarget, EventTargetTypeId}; @@ -60,6 +61,27 @@ impl HTMLCanvasElement { } } +pub trait LayoutHTMLCanvasElementHelpers { + unsafe fn get_renderer(&self) -> Option<Sender<CanvasMsg>>; + unsafe fn get_canvas_width(&self) -> u32; + unsafe fn get_canvas_height(&self) -> u32; +} + +impl LayoutHTMLCanvasElementHelpers for JS<HTMLCanvasElement> { + unsafe fn get_renderer(&self) -> Option<Sender<CanvasMsg>> { + let context = (*self.unsafe_get()).context.get_inner(); + context.map(|cx| cx.get_renderer()) + } + + unsafe fn get_canvas_width(&self) -> u32 { + (*self.unsafe_get()).width.get() + } + + unsafe fn get_canvas_height(&self) -> u32 { + (*self.unsafe_get()).height.get() + } +} + impl<'a> HTMLCanvasElementMethods for JSRef<'a, HTMLCanvasElement> { fn Width(self) -> u32 { self.width.get() |