aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-01-09 12:06:47 -0700
committerbors-servo <metajack+bors@gmail.com>2015-01-09 12:06:47 -0700
commitda400a7a453eacf6f3089cc07e5dc61f385a0909 (patch)
tree6026f5e80de0a1ffd974749d89d90d562bf12144 /components/script
parent43e34d6d1050227eecc8fa293f9faec066f173a1 (diff)
parent81f47344d6e121d86de368a25107415406de3c0f (diff)
downloadservo-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.rs10
-rw-r--r--components/script/dom/htmlcanvaselement.rs26
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()