aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/gfx/font.rs4
-rw-r--r--src/components/gfx/geometry.rs6
-rw-r--r--src/components/gfx/render_context.rs14
-rw-r--r--src/components/main/layout/layout_task.rs3
-rw-r--r--src/components/script/dom/bindings/element.rs2
5 files changed, 16 insertions, 13 deletions
diff --git a/src/components/gfx/font.rs b/src/components/gfx/font.rs
index 99901cdc643..afd35dcbd16 100644
--- a/src/components/gfx/font.rs
+++ b/src/components/gfx/font.rs
@@ -399,8 +399,8 @@ impl Font {
let azglyph = struct__AzGlyph {
mIndex: glyph.index() as uint32_t,
mPosition: struct__AzPoint {
- x: (origin.x + glyph_offset.x).to_px() as AzFloat,
- y: (origin.y + glyph_offset.y).to_px() as AzFloat
+ x: (origin.x + glyph_offset.x).to_nearest_px() as AzFloat,
+ y: (origin.y + glyph_offset.y).to_nearest_px() as AzFloat
}
};
origin = Point2D(origin.x + glyph_advance, origin.y);
diff --git a/src/components/gfx/geometry.rs b/src/components/gfx/geometry.rs
index 0f3b53ae197..b89d0f29343 100644
--- a/src/components/gfx/geometry.rs
+++ b/src/components/gfx/geometry.rs
@@ -82,15 +82,15 @@ pub fn box<T:Clone + Ord + Add<T,T> + Sub<T,T>>(x: T, y: T, w: T, h: T) -> Rect<
impl Au {
pub fn scale_by(self, factor: float) -> Au {
- Au(((*self as float) * factor) as i32)
+ Au(((*self as float) * factor).round() as i32)
}
pub fn from_px(px: int) -> Au {
NumCast::from(px * 60)
}
- pub fn to_px(&self) -> int {
- (**self / 60) as int
+ pub fn to_nearest_px(&self) -> int {
+ ((**self as float) / 60f).round() as int
}
pub fn to_snapped(&self) -> Au {
diff --git a/src/components/gfx/render_context.rs b/src/components/gfx/render_context.rs
index 0f1f30d9b99..c9d278fea96 100644
--- a/src/components/gfx/render_context.rs
+++ b/src/components/gfx/render_context.rs
@@ -124,8 +124,10 @@ trait ToAzureRect {
impl ToAzureRect for Rect<Au> {
fn to_azure_rect(&self) -> Rect<AzFloat> {
- Rect(Point2D(self.origin.x.to_px() as AzFloat, self.origin.y.to_px() as AzFloat),
- Size2D(self.size.width.to_px() as AzFloat, self.size.height.to_px() as AzFloat))
+ Rect(Point2D(self.origin.x.to_nearest_px() as AzFloat,
+ self.origin.y.to_nearest_px() as AzFloat),
+ Size2D(self.size.width.to_nearest_px() as AzFloat,
+ self.size.height.to_nearest_px() as AzFloat))
}
}
@@ -135,9 +137,9 @@ trait ToSideOffsetsPx {
impl ToSideOffsetsPx for SideOffsets2D<Au> {
fn to_float_px(&self) -> SideOffsets2D<AzFloat> {
- SideOffsets2D::new(self.top.to_px() as AzFloat,
- self.right.to_px() as AzFloat,
- self.bottom.to_px() as AzFloat,
- self.left.to_px() as AzFloat)
+ SideOffsets2D::new(self.top.to_nearest_px() as AzFloat,
+ self.right.to_nearest_px() as AzFloat,
+ self.bottom.to_nearest_px() as AzFloat,
+ self.left.to_nearest_px() as AzFloat)
}
}
diff --git a/src/components/main/layout/layout_task.rs b/src/components/main/layout/layout_task.rs
index ee9ce45de6e..141df0e3f33 100644
--- a/src/components/main/layout/layout_task.rs
+++ b/src/components/main/layout/layout_task.rs
@@ -348,7 +348,8 @@ impl LayoutTask {
let render_layer = RenderLayer {
display_list: display_list.clone(),
- size: Size2D(root_size.width.to_px() as uint, root_size.height.to_px() as uint)
+ size: Size2D(root_size.width.to_nearest_px() as uint,
+ root_size.height.to_nearest_px() as uint)
};
self.display_list = Some(display_list.clone());
diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs
index 8ca841772de..60d4ca9cfc2 100644
--- a/src/components/script/dom/bindings/element.rs
+++ b/src/components/script/dom/bindings/element.rs
@@ -223,7 +223,7 @@ extern fn HTMLImageElement_getWidth(cx: *JSContext, _argc: c_uint, vp: *mut JSVa
let (port, chan) = comm::stream();
// TODO(tkuehn): currently this just queries top-level page's layout. Need to handle subframes.
match (*page).query_layout(ContentBoxQuery(node, chan), port) {
- Ok(ContentBoxResponse(rect)) => rect.size.width.to_px(),
+ Ok(ContentBoxResponse(rect)) => rect.size.width.to_nearest_px(),
Err(()) => 0
}
// TODO: if nothing is being rendered(?), return zero dimensions