fix(simulation): align vertical box drawing (#37137)

This commit is contained in:
Kit Langton
2026-07-15 11:26:16 -04:00
committed by GitHub
parent 36f8a1e6e5
commit e8bd386973
2 changed files with 44 additions and 0 deletions
+2
View File
@@ -90,6 +90,8 @@ function drawBlockElement(context: SKRSContext2D, char: string, x: number, y: nu
if (char === "█") context.fillRect(x, y, width, CellHeight)
else if (char === "▀") context.fillRect(x, y, width, CellHeight / 2)
else if (char === "▄") context.fillRect(x, y + CellHeight / 2, width, CellHeight / 2)
else if (char === "┃") context.fillRect(x + CellWidth / 2 - 1, y, 2, CellHeight)
else if (char === "╹") context.fillRect(x + CellWidth / 2 - 1, y, 2, CellHeight / 2)
else return false
return true
}
+42
View File
@@ -59,3 +59,45 @@ test("fills adjacent block elements without glyph gaps", async () => {
Array.from({ length: image.width }, () => [0, 0, 0, 255]).flat(),
)
})
test("draws heavy vertical box elements on cell boundaries", async () => {
const image = SimulationPng.screenshotFrame({
cols: 1,
rows: 2,
cursor: [0, 0],
lines: [
{
spans: [
{
text: "┃",
width: 1,
fg: RGBA.fromInts(255, 255, 255),
bg: RGBA.fromInts(0, 0, 0),
attributes: 0,
},
],
},
{
spans: [
{
text: "╹",
width: 1,
fg: RGBA.fromInts(255, 255, 255),
bg: RGBA.fromInts(0, 0, 0),
attributes: 0,
},
],
},
],
})
const canvas = createCanvas(image.width, image.height)
const context = canvas.getContext("2d")
context.drawImage(await loadImage(image.data), 0, 0)
expect([...context.getImageData(4, 0, 2, 30).data]).toEqual(
Array.from({ length: 60 }, () => [255, 255, 255, 255]).flat(),
)
expect([...context.getImageData(4, 30, 2, 10).data]).toEqual(
Array.from({ length: 20 }, () => [0, 0, 0, 255]).flat(),
)
})