comment + style changes

This commit is contained in:
Qwerasd
2025-09-08 10:40:56 -06:00
parent ecf3e2ad7d
commit 31e54ff44a
3 changed files with 13 additions and 7 deletions

View File

@@ -38,9 +38,11 @@ pub const Shaper = switch (options.backend) {
/// for a shaping call. Note all terminal cells may be present; only
/// cells that have a glyph that needs to be rendered.
pub const Cell = struct {
/// The column that this cell occupies. Since a set of shaper cells is
/// always on the same line, only the X is stored. It is expected the
/// caller has access to the original screen cell.
/// The X position of this shaper cell relative to the offset of the
/// run. Because runs are always within a single row, it is expected
/// that the caller can reconstruct the full position of the cell by
/// using the known Y position of the cell and adding the X position
/// to the run offset.
x: u16,
/// An additional offset to apply to the rendering.

View File

@@ -23,7 +23,9 @@ pub const TextRun = struct {
/// to share the same cache entry, improving cache efficiency.
hash: u64,
/// The offset in the row where this run started
/// The offset in the row where this run started. This is added to the
/// X position of the final shaped cells to get the absolute position
/// in the row where they belong.
offset: u16,
/// The total number of cells produced by this run.

View File

@@ -2528,9 +2528,11 @@ pub fn Renderer(comptime GraphicsAPI: type) type {
break :cache cells;
};
const cells = shaper_cells.?;
// Advance our index until we reach or pass
// our current x position in the shaper cells.
while (shaper_cells.?[shaper_cells_i].x + run.offset < x) {
while (run.offset + cells[shaper_cells_i].x < x) {
shaper_cells_i += 1;
}
}
@@ -2769,13 +2771,13 @@ pub fn Renderer(comptime GraphicsAPI: type) type {
// If we encounter a shaper cell to the left of the current
// cell then we have some problems. This logic relies on x
// position monotonically increasing.
assert(cells[shaper_cells_i].x + run.offset >= x);
assert(run.offset + cells[shaper_cells_i].x >= x);
// NOTE: An assumption is made here that a single cell will never
// be present in more than one shaper run. If that assumption is
// violated, this logic breaks.
while (shaper_cells_i < cells.len and cells[shaper_cells_i].x + run.offset == x) : ({
while (shaper_cells_i < cells.len and run.offset + cells[shaper_cells_i].x == x) : ({
shaper_cells_i += 1;
}) {
self.addGlyph(