diff options
author | Joe Wilm <joe@jwilm.com> | 2016-04-10 16:19:39 -0700 |
---|---|---|
committer | Joe Wilm <joe@jwilm.com> | 2016-04-10 16:25:05 -0700 |
commit | b84eb9e921c040c4eadaabd8f3087690efa267b6 (patch) | |
tree | a2cbfc7f71e5477905b823b4b1f0f4420c486eee /src/text.rs | |
parent | 99474ef78a75c3f07b54770c95231af575e4b64c (diff) | |
download | r-alacritty-b84eb9e921c040c4eadaabd8f3087690efa267b6.tar.gz r-alacritty-b84eb9e921c040c4eadaabd8f3087690efa267b6.tar.bz2 r-alacritty-b84eb9e921c040c4eadaabd8f3087690efa267b6.zip |
Add a Grid
The grid holds the state of the terminal with row-major ordering.
Eventually, the grid::Cell type will hold other attributes such as
color, background color, decorations, and weight.
An initialization list is added for common ASCII symbols.
Diffstat (limited to 'src/text.rs')
-rw-r--r-- | src/text.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/text.rs b/src/text.rs index bd884ad3..ea0df76a 100644 --- a/src/text.rs +++ b/src/text.rs @@ -51,6 +51,21 @@ impl Rasterizer { } } + pub fn box_size_for_font(&mut self, desc: &FontDesc, size: f32) -> (u32, u32) { + let face = self.get_face(&desc).unwrap(); + + let scale_size = self.dpr * size; + + let em_size = face.em_size() as f32; + let w = face.max_advance_width() as f32; + let h = face.height() as f32; + + let w_scale = w / em_size; + let h_scale = h / em_size; + + ((w_scale * scale_size) as u32, (h_scale * scale_size) as u32) + } + pub fn get_face(&mut self, desc: &FontDesc) -> Option<Face<'static>> { if let Some(face) = self.faces.get(desc) { return Some(face.clone()); @@ -71,7 +86,6 @@ impl Rasterizer { pub fn get_glyph(&mut self, desc: &FontDesc, size: f32, c: char) -> RasterizedGlyph { let face = self.get_face(desc).expect("TODO handle get_face error"); - // TODO DPI face.set_char_size(to_freetype_26_6(size * self.dpr), 0, self.dpi_x, self.dpi_y).unwrap(); face.load_char(c as usize, freetype::face::RENDER).unwrap(); let glyph = face.glyph(); |