memory savings
This commit is contained in:
@@ -817,18 +817,20 @@ final class GhosttyTerminalRenderer extends TerminalRenderer {
|
|||||||
int blue = rgb & 0xff;
|
int blue = rgb & 0xff;
|
||||||
// Clamp the glyph rectangle to the buffer once, so the inner loops carry no
|
// Clamp the glyph rectangle to the buffer once, so the inner loops carry no
|
||||||
// per-pixel bounds check (this is the hottest pixel loop on a text repaint).
|
// per-pixel bounds check (this is the hottest pixel loop on a text repaint).
|
||||||
|
int glyphWidth = glyph.width();
|
||||||
|
byte[] glyphAlpha = glyph.alpha();
|
||||||
int gyStart = Math.max(0, -y);
|
int gyStart = Math.max(0, -y);
|
||||||
int gyEnd = Math.min(glyph.height, height - y);
|
int gyEnd = Math.min(glyph.height(), height - y);
|
||||||
int gxStart = Math.max(0, -x);
|
int gxStart = Math.max(0, -x);
|
||||||
int gxEnd = Math.min(glyph.width, width - x);
|
int gxEnd = Math.min(glyphWidth, width - x);
|
||||||
if (gyStart >= gyEnd || gxStart >= gxEnd) {
|
if (gyStart >= gyEnd || gxStart >= gxEnd) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int gy = gyStart; gy < gyEnd; gy++) {
|
for (int gy = gyStart; gy < gyEnd; gy++) {
|
||||||
int rowOffset = (y + gy) * width;
|
int rowOffset = (y + gy) * width;
|
||||||
int glyphOffset = gy * glyph.width;
|
int glyphOffset = gy * glyphWidth;
|
||||||
for (int gx = gxStart; gx < gxEnd; gx++) {
|
for (int gx = gxStart; gx < gxEnd; gx++) {
|
||||||
int alpha = glyph.alpha[glyphOffset + gx] & 0xff;
|
int alpha = glyphAlpha[glyphOffset + gx] & 0xff;
|
||||||
if (alpha == 0) {
|
if (alpha == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user