diff --git a/layers.rs b/layers.rs index 9780ada..53af3e1 100644 --- a/layers.rs +++ b/layers.rs @@ -12,10 +12,8 @@ use texturegl::Texture; use geom::matrix::{Matrix4, identity}; use geom::size::Size2D; use geom::rect::Rect; -use geom::point::Point2D; use platform::surface::{NativePaintingGraphicsContext, NativeSurfaceMethods, NativeSurface}; use std::cell::{RefCell, RefMut}; -use std::num::Zero; use std::rc::Rc; use quadtree::{Quadtree, NodeStatus, Normal, Tile}; @@ -32,20 +30,22 @@ pub struct Layer { pub tiles: RefCell>>, pub quadtree: RefCell>>, pub transform: RefCell>, - pub origin: RefCell>, + pub bounds: RefCell>, tile_size: uint, pub extra_data: RefCell, } impl Layer { - pub fn new(page_size: Size2D, tile_size: uint, data: T) -> Layer { + pub fn new(bounds: Rect, tile_size: uint, data: T) -> Layer { Layer { children: RefCell::new(vec!()), tiles: RefCell::new(vec!()), - quadtree: RefCell::new(Quadtree::new(Size2D(page_size.width as uint, page_size.height as uint), - tile_size, Some(MAX_TILE_MEMORY_PER_LAYER))), + quadtree: RefCell::new(Quadtree::new(Size2D(bounds.size.width as uint, + bounds.size.height as uint), + tile_size, + Some(MAX_TILE_MEMORY_PER_LAYER))), transform: RefCell::new(identity()), - origin: RefCell::new(Zero::zero()), + bounds: RefCell::new(bounds), tile_size: tile_size, extra_data: RefCell::new(data), } @@ -72,6 +72,7 @@ impl Layer { } pub fn resize(this: Rc>, new_size: Size2D) -> Vec> { + this.bounds.borrow_mut().size = new_size; this.quadtree.borrow_mut().resize(new_size.width as uint, new_size.height as uint) } diff --git a/rendergl.rs b/rendergl.rs index a11095f..29932f0 100755 --- a/rendergl.rs +++ b/rendergl.rs @@ -367,7 +367,7 @@ impl Render for layers::Layer { render_context: RenderContext, transform: Matrix4, scene_size: Size2D) { - let origin = self.origin.borrow(); + let origin = self.bounds.borrow().origin; let transform = transform.translate(origin.x, origin.y, 0.0).mul(&*self.transform.borrow()); for tile in self.tiles.borrow().iter() { tile.render(render_context, transform, scene_size)