performPaint method

  1. @override
void performPaint(
  1. Buffer buffer,
  2. Offset offset
)
override

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,
      );
    }
  }
}