diff options
Diffstat (limited to 'src/renderer/mod.rs')
-rw-r--r-- | src/renderer/mod.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 47851224..5182a6f6 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -32,7 +32,7 @@ use crate::gl::types::*; use crate::index::{Column, Line}; use crate::renderer::rects::{Rect, Rects}; use crate::term::color::Rgb; -use crate::term::{self, cell, RenderableCell}; +use crate::term::{self, cell, RenderableCell, RenderableCellContent}; pub mod rects; @@ -950,11 +950,11 @@ impl<'a> RenderApi<'a> { .map(|(i, c)| RenderableCell { line, column: col + i, - chars: { + inner: RenderableCellContent::Chars({ let mut chars = [' '; cell::MAX_ZEROWIDTH_CHARS + 1]; chars[0] = c; chars - }, + }), bg: color.unwrap_or(Rgb { r: 0, g: 0, b: 0 }), fg: Rgb { r: 0, g: 0, b: 0 }, flags: cell::Flags::empty(), @@ -983,6 +983,13 @@ impl<'a> RenderApi<'a> { } pub fn render_cell(&mut self, cell: RenderableCell, glyph_cache: &mut GlyphCache) { + // loader.load_glyph(&rasterized) + if let RenderableCellContent::Raw(ref raw) = cell.inner { + let glyph = self.load_glyph(raw); + self.add_render_item(&cell, &glyph); + return; + } + // Get font key for cell // FIXME this is super inefficient. let font_key = if cell.flags.contains(cell::Flags::BOLD) { @@ -996,8 +1003,10 @@ impl<'a> RenderApi<'a> { // Don't render text of HIDDEN cells let mut chars = if cell.flags.contains(cell::Flags::HIDDEN) { [' '; cell::MAX_ZEROWIDTH_CHARS + 1] + } else if let RenderableCellContent::Chars(chars) = cell.inner { + chars } else { - cell.chars + unimplemented!(); }; // Render tabs as spaces in case the font doesn't support it |