mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
CanvasRenderTask connected to Layout
Update rust-azure to f4a02f3f621b0a994a20d42e438371a87c62f898.
This commit is contained in:
parent
43e34d6d10
commit
81f47344d6
11 changed files with 359 additions and 130 deletions
|
@ -9,13 +9,15 @@ use geom::size::Size2D;
|
|||
use servo_util::task::spawn_named;
|
||||
|
||||
use std::comm;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[deriving(Copy)]
|
||||
#[deriving(Clone)]
|
||||
pub enum CanvasMsg {
|
||||
FillRect(Rect<f32>),
|
||||
ClearRect(Rect<f32>),
|
||||
StrokeRect(Rect<f32>),
|
||||
Recreate(Size2D<i32>),
|
||||
SendPixelContents(Sender<Arc<Vec<u8>>>),
|
||||
Close,
|
||||
}
|
||||
|
||||
|
@ -29,7 +31,7 @@ pub struct CanvasPaintTask {
|
|||
impl CanvasPaintTask {
|
||||
fn new(size: Size2D<i32>) -> CanvasPaintTask {
|
||||
CanvasPaintTask {
|
||||
drawtarget: CanvasPaintTask::create(size),
|
||||
drawtarget: CanvasPaintTask::create_with_data(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),
|
||||
|
@ -47,6 +49,7 @@ impl CanvasPaintTask {
|
|||
CanvasMsg::StrokeRect(ref rect) => painter.stroke_rect(rect),
|
||||
CanvasMsg::ClearRect(ref rect) => painter.clear_rect(rect),
|
||||
CanvasMsg::Recreate(size) => painter.recreate(size),
|
||||
CanvasMsg::SendPixelContents(chan) => painter.send_pixel_contents(chan),
|
||||
CanvasMsg::Close => break,
|
||||
}
|
||||
}
|
||||
|
@ -68,11 +71,20 @@ impl CanvasPaintTask {
|
|||
self.drawtarget.stroke_rect(rect, &self.stroke_color, &self.stroke_opts, &drawopts);
|
||||
}
|
||||
|
||||
fn create(size: Size2D<i32>) -> DrawTarget {
|
||||
DrawTarget::new(BackendType::Skia, size, SurfaceFormat::B8G8R8A8)
|
||||
fn create_with_data(size: Size2D<i32>) -> DrawTarget {
|
||||
DrawTarget::new_with_data(BackendType::Skia,
|
||||
Vec::from_elem((size.width * size.height * 4) as uint, 0u8),
|
||||
0,
|
||||
size,
|
||||
size.width * 4,
|
||||
SurfaceFormat::B8G8R8A8)
|
||||
}
|
||||
|
||||
fn recreate(&mut self, size: Size2D<i32>) {
|
||||
self.drawtarget = CanvasPaintTask::create(size);
|
||||
self.drawtarget = CanvasPaintTask::create_with_data(size);
|
||||
}
|
||||
|
||||
fn send_pixel_contents(&mut self, chan: Sender<Arc<Vec<u8>>>) {
|
||||
chan.send(self.drawtarget.data.clone().unwrap());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue