aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2014-08-03 10:48:47 -0400
committerJosh Matthews <josh@joshmatthews.net>2014-08-03 10:48:47 -0400
commit57aa3813b90cd964b23c30af3c10b0135562e79c (patch)
tree66b5f0d828651514d79ae1c45b67eb5cd22fd2ae /src
parent7e8f33a003292ee242e9cdc1568f403d77d33899 (diff)
parent4a0bb1be518dff3c0fba060dc6dd7aaeff21dded (diff)
downloadservo-57aa3813b90cd964b23c30af3c10b0135562e79c.tar.gz
servo-57aa3813b90cd964b23c30af3c10b0135562e79c.zip
Merge pull request #2934 from saneyuki/canvas
Move CanvasRenderTask to gfx crate.
Diffstat (limited to 'src')
-rw-r--r--src/components/gfx/canvas_render_task.rs78
-rw-r--r--src/components/gfx/gfx.rs4
-rw-r--r--src/components/script/dom/canvasrenderingcontext2d.rs72
-rw-r--r--src/components/script/script.rs2
4 files changed, 84 insertions, 72 deletions
diff --git a/src/components/gfx/canvas_render_task.rs b/src/components/gfx/canvas_render_task.rs
new file mode 100644
index 00000000000..7eafd1aef09
--- /dev/null
+++ b/src/components/gfx/canvas_render_task.rs
@@ -0,0 +1,78 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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 azure::azure_hl::{DrawTarget, Color, B8G8R8A8, SkiaBackend, StrokeOptions, DrawOptions};
+use azure::azure_hl::ColorPattern;
+use geom::rect::Rect;
+use geom::size::Size2D;
+
+use std::comm;
+use std::task::TaskBuilder;
+
+pub enum CanvasMsg {
+ FillRect(Rect<f32>),
+ ClearRect(Rect<f32>),
+ StrokeRect(Rect<f32>),
+ Recreate(Size2D<i32>),
+ Close,
+}
+
+pub struct CanvasRenderTask {
+ drawtarget: DrawTarget,
+ fill_color: ColorPattern,
+ stroke_color: ColorPattern,
+ stroke_opts: StrokeOptions,
+}
+
+impl CanvasRenderTask {
+ fn new(size: Size2D<i32>) -> CanvasRenderTask {
+ CanvasRenderTask {
+ drawtarget: CanvasRenderTask::create(size),
+ fill_color: ColorPattern::new(Color::new(0., 0., 0., 1.)),
+ stroke_color: ColorPattern::new(Color::new(0., 0., 0., 1.)),
+ stroke_opts: StrokeOptions::new(1.0, 1.0),
+ }
+ }
+
+ pub fn start(size: Size2D<i32>) -> Sender<CanvasMsg> {
+ let (chan, port) = comm::channel::<CanvasMsg>();
+ let builder = TaskBuilder::new().named("CanvasTask");
+ builder.spawn(proc() {
+ let mut renderer = CanvasRenderTask::new(size);
+
+ loop {
+ match port.recv() {
+ FillRect(ref rect) => renderer.fill_rect(rect),
+ StrokeRect(ref rect) => renderer.stroke_rect(rect),
+ ClearRect(ref rect) => renderer.clear_rect(rect),
+ Recreate(size) => renderer.recreate(size),
+ Close => break,
+ }
+ }
+ });
+ chan
+ }
+
+ fn fill_rect(&self, rect: &Rect<f32>) {
+ let drawopts = DrawOptions::new(1.0, 0);
+ self.drawtarget.fill_rect(rect, &self.fill_color, Some(&drawopts));
+ }
+
+ fn clear_rect(&self, rect: &Rect<f32>) {
+ self.drawtarget.clear_rect(rect);
+ }
+
+ fn stroke_rect(&self, rect: &Rect<f32>) {
+ let drawopts = DrawOptions::new(1.0, 0);
+ self.drawtarget.stroke_rect(rect, &self.stroke_color, &self.stroke_opts, &drawopts);
+ }
+
+ fn create(size: Size2D<i32>) -> DrawTarget {
+ DrawTarget::new(SkiaBackend, size, B8G8R8A8)
+ }
+
+ fn recreate(&mut self, size: Size2D<i32>) {
+ self.drawtarget = CanvasRenderTask::create(size);
+ }
+}
diff --git a/src/components/gfx/gfx.rs b/src/components/gfx/gfx.rs
index 6453c9c3630..32fa30aba51 100644
--- a/src/components/gfx/gfx.rs
+++ b/src/components/gfx/gfx.rs
@@ -54,6 +54,10 @@ pub mod color;
pub mod display_list;
pub mod render_task;
+// Canvas Rendering
+#[allow(dead_code)]
+pub mod canvas_render_task;
+
// Fonts
pub mod font;
pub mod font_context;
diff --git a/src/components/script/dom/canvasrenderingcontext2d.rs b/src/components/script/dom/canvasrenderingcontext2d.rs
index 6774e042791..d448425ef54 100644
--- a/src/components/script/dom/canvasrenderingcontext2d.rs
+++ b/src/components/script/dom/canvasrenderingcontext2d.rs
@@ -9,14 +9,11 @@ use dom::bindings::js::{JSRef, Temporary};
use dom::bindings::trace::Untraceable;
use dom::bindings::utils::{Reflector, Reflectable, reflect_dom_object};
-use azure::azure_hl::{DrawTarget, Color, B8G8R8A8, SkiaBackend, StrokeOptions, DrawOptions};
-use azure::azure_hl::ColorPattern;
use geom::point::Point2D;
use geom::rect::Rect;
use geom::size::Size2D;
-use std::comm;
-use std::task::TaskBuilder;
+use gfx::canvas_render_task::{CanvasMsg, CanvasRenderTask, ClearRect, Close, FillRect, Recreate, StrokeRect};
#[deriving(Encodable)]
pub struct CanvasRenderingContext2D {
@@ -25,73 +22,6 @@ pub struct CanvasRenderingContext2D {
renderer: Untraceable<Sender<CanvasMsg>>,
}
-enum CanvasMsg {
- FillRect(Rect<f32>),
- ClearRect(Rect<f32>),
- StrokeRect(Rect<f32>),
- Recreate(Size2D<i32>),
- Close,
-}
-
-struct CanvasRenderTask {
- drawtarget: DrawTarget,
- fill_color: ColorPattern,
- stroke_color: ColorPattern,
- stroke_opts: StrokeOptions,
-}
-
-impl CanvasRenderTask {
- fn new(size: Size2D<i32>) -> CanvasRenderTask {
- CanvasRenderTask {
- drawtarget: CanvasRenderTask::create(size),
- fill_color: ColorPattern::new(Color::new(0., 0., 0., 1.)),
- stroke_color: ColorPattern::new(Color::new(0., 0., 0., 1.)),
- stroke_opts: StrokeOptions::new(1.0, 1.0),
- }
- }
-
- fn start(size: Size2D<i32>) -> Sender<CanvasMsg> {
- let (chan, port) = comm::channel::<CanvasMsg>();
- let builder = TaskBuilder::new().named("CanvasTask");
- builder.spawn(proc() {
- let mut renderer = CanvasRenderTask::new(size);
-
- loop {
- match port.recv() {
- FillRect(ref rect) => renderer.fill_rect(rect),
- StrokeRect(ref rect) => renderer.stroke_rect(rect),
- ClearRect(ref rect) => renderer.clear_rect(rect),
- Recreate(size) => renderer.recreate(size),
- Close => break,
- }
- }
- });
- chan
- }
-
- fn fill_rect(&self, rect: &Rect<f32>) {
- let drawopts = DrawOptions::new(1.0, 0);
- self.drawtarget.fill_rect(rect, &self.fill_color, Some(&drawopts));
- }
-
- fn clear_rect(&self, rect: &Rect<f32>) {
- self.drawtarget.clear_rect(rect);
- }
-
- fn stroke_rect(&self, rect: &Rect<f32>) {
- let drawopts = DrawOptions::new(1.0, 0);
- self.drawtarget.stroke_rect(rect, &self.stroke_color, &self.stroke_opts, &drawopts);
- }
-
- fn create(size: Size2D<i32>) -> DrawTarget {
- DrawTarget::new(SkiaBackend, size, B8G8R8A8)
- }
-
- fn recreate(&mut self, size: Size2D<i32>) {
- self.drawtarget = CanvasRenderTask::create(size);
- }
-}
-
impl CanvasRenderingContext2D {
pub fn new_inherited(global: &GlobalRef, size: Size2D<i32>) -> CanvasRenderingContext2D {
CanvasRenderingContext2D {
diff --git a/src/components/script/script.rs b/src/components/script/script.rs
index f07646c4ff6..80c71e0499f 100644
--- a/src/components/script/script.rs
+++ b/src/components/script/script.rs
@@ -19,7 +19,6 @@
#[phase(plugin, link)]
extern crate log;
-extern crate azure;
extern crate debug;
extern crate cssparser;
extern crate collections;
@@ -42,6 +41,7 @@ extern crate style;
extern crate sync;
extern crate servo_msg = "msg";
extern crate url = "url_";
+extern crate gfx;
pub mod cors;