parent
f7496654ae
commit
a9d4fed205
3 changed files with 35 additions and 18 deletions
|
|
@ -1081,19 +1081,26 @@ fn WndProc(
|
|||
global.render_cells_arena.allocator(),
|
||||
global.screen.buf.len,
|
||||
) catch |e| oom(e);
|
||||
var prev_width: usize = 1;
|
||||
var prev_cell: render.Cell = undefined;
|
||||
for (global.screen.buf, global.render_cells.items) |*screen_cell, *render_cell| {
|
||||
const width = screen_cell.char.width;
|
||||
const codepoint = if (std.unicode.utf8ValidateSlice(screen_cell.char.grapheme))
|
||||
std.unicode.wtf8Decode(screen_cell.char.grapheme) catch std.unicode.replacement_character
|
||||
else
|
||||
std.unicode.replacement_character;
|
||||
render_cell.* = .{
|
||||
.glyph_index = state.render_state.generateGlyph(
|
||||
font,
|
||||
codepoint,
|
||||
),
|
||||
.background = renderColorFromVaxis(screen_cell.style.bg),
|
||||
.foreground = renderColorFromVaxis(screen_cell.style.fg),
|
||||
};
|
||||
if (prev_width > 1) {
|
||||
render_cell.* = prev_cell;
|
||||
render_cell.glyph_index = state.render_state.generateGlyph(font, codepoint, true);
|
||||
} else {
|
||||
render_cell.* = .{
|
||||
.glyph_index = state.render_state.generateGlyph(font, codepoint, false),
|
||||
.background = renderColorFromVaxis(screen_cell.style.bg),
|
||||
.foreground = renderColorFromVaxis(screen_cell.style.fg),
|
||||
};
|
||||
}
|
||||
prev_width = width;
|
||||
prev_cell = render_cell.*;
|
||||
}
|
||||
render.paint(
|
||||
&state.render_state,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue