cloneArea function
Returns a copy of area from screen, or null when empty.
Implementation
Buffer? cloneArea(Screen screen, Rectangle area) {
if (screen case CloneAreaScreen(:final cloneArea)) {
final v = cloneArea(area);
if (v == null) return null;
if (v is Buffer) return v;
}
final b = Buffer.create(area.width, area.height);
for (var y = area.minY; y < area.maxY; y++) {
for (var x = area.minX; x < area.maxX; x++) {
final c = screen.cellAt(x, y);
if (c == null || c.isZero) continue;
b.setCell(x - area.minX, y - area.minY, c.clone());
}
}
return b;
}