aboutsummaryrefslogtreecommitdiff
path: root/src/renderer/mod.rs
diff options
context:
space:
mode:
authorChristian Duerr <chrisduerr@users.noreply.github.com>2019-04-19 18:00:24 +0000
committerGitHub <noreply@github.com>2019-04-19 18:00:24 +0000
commitcfc20d4f34dca535654cc32df18e785296af4cc5 (patch)
treeb9697a365d1ec4b3161fd67937497e90a63f5c0d /src/renderer/mod.rs
parenta47d716daace7c197392854754406a06454ec380 (diff)
downloadr-alacritty-cfc20d4f34dca535654cc32df18e785296af4cc5.tar.gz
r-alacritty-cfc20d4f34dca535654cc32df18e785296af4cc5.tar.bz2
r-alacritty-cfc20d4f34dca535654cc32df18e785296af4cc5.zip
Fix cursor dimensions with font offset
Previously cursor dimensions were not calculated correctly when a font offset was specified, since the font offset was completely ignored. This has been fixed by moving all the cursor logic from the font into the Alacritty crate, applying the config's offsets before rasterizing the cursors. This has also fixed an issue with some cursors not being rendered as double-width correctly when over double-width glyphs. This fixes #2209.
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