static recordPattern(row, start, counters) {
        const numCounters = counters.length;
        for (let index = 0; index < numCounters; index++)
            counters[index] = 0;
        const end = row.getSize();
        if (start >= end) {
            throw new NotFoundException();
        }
        let isWhite = !row.get(start);
        let counterPosition = 0;
        let i = start;
        while (i < end) {
            if (row.get(i) !== isWhite) {
                counters[counterPosition]++;
            }
            else {
                if (++counterPosition === numCounters) {
                    break;
                }
                else {
                    counters[counterPosition] = 1;
                    isWhite = !isWhite;
                }
            }
            i++;
        }
        // If we read fully the last section of pixels and filled up our counters -- or filled
        // the last counter but ran off the side of the image, OK. Otherwise, a problem.
        if (!(counterPosition === numCounters || (counterPosition === numCounters - 1 && i === end))) {
            throw new NotFoundException();
        }
    }
/**
     * Records the size of successive runs of white and black pixels in a row, starting at a given point.
     * The values are recorded in the given array, and the number of runs recorded is equal to the size
     * of the array. If the row starts on a white pixel at the given start point, then the first count
     * recorded is the run of white pixels starting from that point; likewise it is the count of a run
     * of black pixels if the row begin on a black pixels at that point.
     *
     * @param row row to count from
     * @param start offset into row to start at
     * @param counters array into which to record counts
     * @throws NotFoundException if counters cannot be filled entirely from row before running out
     *  of pixels
     */
Records the size of successive runs of white and black pixels in a row, starting at a given point.
The values are recorded in the given array, and the number of runs recorded is equal to the size
of the array. If the row starts on a white pixel at the given start point, then the first count
recorded is the run of white pixels starting from that point; likewise it is the count of a run
of black pixels if the row begin on a black pixels at that point.

@param row row to count from
@param start offset into row to start at
@param counters array into which to record counts
@throws NotFoundException if counters cannot be filled entirely from row before running out
of pixels
Records the size of successive runs of white and black pixels in a row starting at a given point . The values are recorded in the given array and the number of runs recorded is equal to the size of the array . If the row starts on a white pixel at the given start point then the first count recorded is the run of white pixels starting from that point ; likewise it is the count of a run of black pixels if the row begin on a black pixels at that point . @param row row to count from @param start offset into row to start at @param counters array into which to record counts @throws NotFoundException if counters cannot be filled entirely from row before running out of pixels
static recordPattern(row, start, counters) {
        const numCounters = counters.length;
        for (let index = 0; index < numCounters; index++)
            counters[index] = 0;
        const end = row.getSize();
        if (start >= end) {
            throw new NotFoundException();
        }
        let isWhite = !row.get(start);
        let counterPosition = 0;
        let i = start;
        while (i < end) {
            if (row.get(i) !== isWhite) {
                counters[counterPosition]++;
            }
            else {
                if (++counterPosition === numCounters) {
                    break;
                }
                else {
                    counters[counterPosition] = 1;
                    isWhite = !isWhite;
                }
            }
            i++;
        }
        if (!(counterPosition === numCounters || (counterPosition === numCounters - 1 && i === end))) {
            throw new NotFoundException();
        }
    }
static recordPattern ( row , start , counters ) { const numCounters = counters . length ; for ( let index = 0 ; index < numCounters ; index ++ ) counters [ index ] = 0 ; const end = row . getSize ( ) ; if ( start >= end ) { throw new NotFoundException ( ) ; } let isWhite = ! row . get ( start ) ; let counterPosition = 0 ; let i = start ; while ( i < end ) { if ( row . get ( i ) !== isWhite ) { counters [ counterPosition ] ++ ; } else { if ( ++ counterPosition === numCounters ) { break ; } else { counters [ counterPosition ] = 1 ; isWhite = ! isWhite ; } } i ++ ; } if ( ! ( counterPosition === numCounters || ( counterPosition === numCounters - 1 && i === end ) ) ) { throw new NotFoundException ( ) ; } }
Records the size of successive runs of white and black pixels in a row, starting at a given point.
Records the size of successive runs of white and black pixels in a row starting at a given point .
// If we read fully the last section of pixels and filled up our counters -- or filled // the last counter but ran off the side of the image, OK. Otherwise, a problem.