tabs.dart 859 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'dart:math' show min;
  2. const _kMaxColumns = 1024;
  3. class TabStops {
  4. final _stops = List<bool>.filled(_kMaxColumns, false);
  5. int? find(int start, int end) {
  6. if (start >= end) {
  7. return null;
  8. }
  9. end = min(end, _stops.length);
  10. for (var i = start; i < end; i++) {
  11. if (_stops[i]) {
  12. return i;
  13. }
  14. }
  15. return null;
  16. }
  17. void setAt(int index) {
  18. assert(index >= 0 && index < _kMaxColumns);
  19. _stops[index] = true;
  20. }
  21. void clearAt(int index) {
  22. assert(index >= 0 && index < _kMaxColumns);
  23. _stops[index] = false;
  24. }
  25. void clearAll() {
  26. _stops.fillRange(0, _kMaxColumns, false);
  27. }
  28. bool isSetAt(int index) {
  29. return _stops[index];
  30. }
  31. void reset() {
  32. clearAll();
  33. const interval = 8;
  34. for (var i = 0; i < _kMaxColumns; i += interval) {
  35. _stops[i] = true;
  36. }
  37. }
  38. }