buffer_line.dart 901 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import 'package:xterm/buffer/cell.dart';
  2. import 'package:xterm/buffer/cell_attr.dart';
  3. class BufferLine {
  4. final _cells = <Cell>[];
  5. bool _isWrapped = false;
  6. bool get isWrapped {
  7. return _isWrapped;
  8. }
  9. int get length {
  10. return _cells.length;
  11. }
  12. void add(Cell cell) {
  13. _cells.add(cell);
  14. }
  15. void insert(int index, Cell cell) {
  16. _cells.insert(index, cell);
  17. }
  18. void clear() {
  19. _cells.clear();
  20. }
  21. void erase(CellAttr attr, int start, int end) {
  22. for (var i = start; i < end; i++) {
  23. if (i >= length) {
  24. add(Cell(attr: attr));
  25. } else {
  26. getCell(i).erase(attr);
  27. }
  28. }
  29. }
  30. Cell getCell(int index) {
  31. return _cells[index];
  32. }
  33. void removeRange(int start, [int? end]) {
  34. start = start.clamp(0, _cells.length);
  35. end ??= _cells.length;
  36. end = end.clamp(start, _cells.length);
  37. _cells.removeRange(start, end);
  38. }
  39. }