mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Calculate the size of a text run
This commit is contained in:
parent
5af6c891ed
commit
86f59bd5ef
1 changed files with 24 additions and 1 deletions
|
@ -1,5 +1,8 @@
|
|||
import geom::point::Point2D;
|
||||
import geom::size::Size2D;
|
||||
import gfx::geometry::{au, px_to_au};
|
||||
import libc::{c_void};
|
||||
import font::font;
|
||||
import font::{font, create_test_font};
|
||||
import glyph::glyph;
|
||||
import shaper::shape_text;
|
||||
|
||||
|
@ -10,5 +13,25 @@ class text_run {
|
|||
new(font: &font, text: str) {
|
||||
self.glyphs = shape_text(font, text);
|
||||
}
|
||||
|
||||
fn size() -> Size2D<au> {
|
||||
let height = px_to_au(14);
|
||||
let pen_start_x = px_to_au(0);
|
||||
let pen_start_y = height;
|
||||
let pen_start = Point2D(pen_start_x, pen_start_y);
|
||||
let pen_end = self.glyphs.foldl(pen_start) { |cur, glyph|
|
||||
Point2D(cur.x.add(glyph.pos.offset.x).add(glyph.pos.advance.x),
|
||||
cur.y.add(glyph.pos.offset.y).add(glyph.pos.advance.y))
|
||||
};
|
||||
ret Size2D(pen_end.x, pen_end.y);
|
||||
}
|
||||
}
|
||||
|
||||
fn should_calculate_the_total_size() {
|
||||
#[test];
|
||||
|
||||
let font = create_test_font();
|
||||
let run = text_run(&font, "firecracker");
|
||||
let expected = Size2D(px_to_au(110), px_to_au(14));
|
||||
assert run.size() == expected;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue