dirtyBitSpans method

List<DirtySpan> dirtyBitSpans(
  1. int y
)

Implementation

List<DirtySpan> dirtyBitSpans(int y) {
  if (y < 0 || y >= dirtyBits.length) return const <DirtySpan>[];
  final bits = dirtyBits[y];
  if (bits.isEmpty) return const <DirtySpan>[];
  final spans = <DirtySpan>[];
  final rowWidth = width();
  var start = -1;
  for (var x = 0; x < rowWidth; x++) {
    final dirty = isCellDirty(x, y);
    if (dirty) {
      start = start == -1 ? x : start;
    } else if (start != -1) {
      spans.add(DirtySpan(start: start, end: x));
      start = -1;
    }
  }
  if (start != -1) {
    spans.add(DirtySpan(start: start, end: rowWidth));
  }
  return spans;
}