diff options
Diffstat (limited to 'src/renderer')
-rw-r--r-- | src/renderer/mod.rs | 17 | ||||
-rw-r--r-- | src/renderer/rects.rs | 4 |
2 files changed, 15 insertions, 6 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 diff --git a/src/renderer/rects.rs b/src/renderer/rects.rs index 2e5cd85b..b4f8a012 100644 --- a/src/renderer/rects.rs +++ b/src/renderer/rects.rs @@ -96,7 +96,7 @@ impl<'a> Rects<'a> { // Start a new line if the flag is present if cell.flags.contains(line.flag) { - *start = *cell; + *start = cell.clone(); *end = cell.into(); } else { line.range = None; @@ -105,7 +105,7 @@ impl<'a> Rects<'a> { // Check for new start of line None => { if cell.flags.contains(line.flag) { - line.range = Some((*cell, cell.into())); + line.range = Some((cell.clone(), cell.into())); } }, }; |