base and bounds methods for DisplayItem

This commit is contained in:
Tim Kuehn 2013-05-24 18:36:41 -07:00 committed by Patrick Walton
parent 2e4cecc718
commit ea1a406589

View file

@ -19,6 +19,7 @@ use geometry::Au;
use render_context::RenderContext;
use text::SendableTextRun;
use core::cast::transmute_region;
use geom::{Point2D, Rect, Size2D};
use servo_net::image::base::Image;
use servo_util::range::Range;
@ -151,5 +152,21 @@ impl<E> DisplayItem<E> {
}
}
}
fn base<'a>(&'a self) -> &'a BaseDisplayItem<E> {
// FIXME(tkuehn): Workaround for Rust region bug.
unsafe {
match *self {
SolidColorDisplayItemClass(ref solid_color) => transmute_region(&solid_color.base),
TextDisplayItemClass(ref text) => transmute_region(&text.base),
ImageDisplayItemClass(ref image_item) => transmute_region(&image_item.base),
BorderDisplayItemClass(ref border) => transmute_region(&border.base)
}
}
}
fn bounds(&self) -> Rect<Au> {
self.base().bounds
}
}