recordPattern static method
Fills counters with alternating run lengths starting at start.
Implementation
static void recordPattern(UBitArray row, int start, Int32List counters) {
final int numCounters = counters.length;
counters.fillRange(0, numCounters, 0);
final int end = row.size;
if (start >= end) throw const UCodeDecodeException("Pattern start out of range");
bool isWhite = !row.get(start);
int counterPosition = 0;
int i = start;
while (i < end) {
if (row.get(i) != isWhite) {
counters[counterPosition]++;
} else {
counterPosition++;
if (counterPosition == numCounters) break;
counters[counterPosition] = 1;
isWhite = !isWhite;
}
i++;
}
if (!(counterPosition == numCounters || (counterPosition == numCounters - 1 && i == end))) {
throw const UCodeDecodeException("Truncated pattern");
}
}