performPaint method
Hook for subclasses to implement actual painting.
Implementation
@override
void performPaint(Buffer buffer, Offset offset) {
final grid = widget as Grid;
final w = size.width;
final h = size.height;
final startY = max(0, -offset.dy);
final endY = min(h, buffer.height - offset.dy);
final startX = max(0, -offset.dx);
final endX = min(w, buffer.width - offset.dx);
if (startX >= endX || startY >= endY) return;
for (var y = startY; y < grid.tiles.length && y < endY; y++) {
final row = grid.tiles[y];
for (var x = startX; x < row.length && x < endX; x++) {
buffer.setAttributes(
offset.dx + x,
offset.dy + y,
char: row[x].char,
fg: row[x].style.foreground?.argb,
bg: row[x].style.background?.argb,
modifiers: row[x].style.modifiers,
);
}
}
}