aboutsummaryrefslogtreecommitdiff
path: root/src/renderer/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer/mod.rs')
-rw-r--r--src/renderer/mod.rs17
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