readFormatInformation() {
        if (this.parsedFormatInfo !== null && this.parsedFormatInfo !== undefined) {
            return this.parsedFormatInfo;
        }
        // Read top-left format info bits
        let formatInfoBits1 = 0;
        for (let i = 0; i < 6; i++) {
            formatInfoBits1 = this.copyBit(i, 8, formatInfoBits1);
        }
        // .. and skip a bit in the timing pattern ...
        formatInfoBits1 = this.copyBit(7, 8, formatInfoBits1);
        formatInfoBits1 = this.copyBit(8, 8, formatInfoBits1);
        formatInfoBits1 = this.copyBit(8, 7, formatInfoBits1);
        // .. and skip a bit in the timing pattern ...
        for (let j = 5; j >= 0; j--) {
            formatInfoBits1 = this.copyBit(8, j, formatInfoBits1);
        }
        // Read the top-right/bottom-left pattern too
        const dimension = this.bitMatrix.getHeight();
        let formatInfoBits2 = 0;
        const jMin = dimension - 7;
        for (let j = dimension - 1; j >= jMin; j--) {
            formatInfoBits2 = this.copyBit(8, j, formatInfoBits2);
        }
        for (let i = dimension - 8; i < dimension; i++) {
            formatInfoBits2 = this.copyBit(i, 8, formatInfoBits2);
        }
        this.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits1, formatInfoBits2);
        if (this.parsedFormatInfo !== null) {
            return this.parsedFormatInfo;
        }
        throw new FormatException();
    }
/**
     * <p>Reads format information from one of its two locations within the QR Code.</p>
     *
     * @return {@link FormatInformation} encapsulating the QR Code's format info
     * @throws FormatException if both format information locations cannot be parsed as
     * the valid encoding of format information
     */
Reads format information from one of its two locations within the QR Code.
@return  FormatInformation encapsulating the QR Code's format info
@throws FormatException if both format information locations cannot be parsed as
the valid encoding of format information
Reads format information from one of its two locations within the QR Code . @return FormatInformation encapsulating the QR Code ' s format info @throws FormatException if both format information locations cannot be parsed as the valid encoding of format information
readFormatInformation() {
        if (this.parsedFormatInfo !== null && this.parsedFormatInfo !== undefined) {
            return this.parsedFormatInfo;
        }
        let formatInfoBits1 = 0;
        for (let i = 0; i < 6; i++) {
            formatInfoBits1 = this.copyBit(i, 8, formatInfoBits1);
        }
        formatInfoBits1 = this.copyBit(7, 8, formatInfoBits1);
        formatInfoBits1 = this.copyBit(8, 8, formatInfoBits1);
        formatInfoBits1 = this.copyBit(8, 7, formatInfoBits1);
        for (let j = 5; j >= 0; j--) {
            formatInfoBits1 = this.copyBit(8, j, formatInfoBits1);
        }
        const dimension = this.bitMatrix.getHeight();
        let formatInfoBits2 = 0;
        const jMin = dimension - 7;
        for (let j = dimension - 1; j >= jMin; j--) {
            formatInfoBits2 = this.copyBit(8, j, formatInfoBits2);
        }
        for (let i = dimension - 8; i < dimension; i++) {
            formatInfoBits2 = this.copyBit(i, 8, formatInfoBits2);
        }
        this.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits1, formatInfoBits2);
        if (this.parsedFormatInfo !== null) {
            return this.parsedFormatInfo;
        }
        throw new FormatException();
    }
readFormatInformation ( ) { if ( this . parsedFormatInfo !== null && this . parsedFormatInfo !== undefined ) { return this . parsedFormatInfo ; } let formatInfoBits1 = 0 ; for ( let i = 0 ; i < 6 ; i ++ ) { formatInfoBits1 = this . copyBit ( i , 8 , formatInfoBits1 ) ; } formatInfoBits1 = this . copyBit ( 7 , 8 , formatInfoBits1 ) ; formatInfoBits1 = this . copyBit ( 8 , 8 , formatInfoBits1 ) ; formatInfoBits1 = this . copyBit ( 8 , 7 , formatInfoBits1 ) ; for ( let j = 5 ; j >= 0 ; j -- ) { formatInfoBits1 = this . copyBit ( 8 , j , formatInfoBits1 ) ; } const dimension = this . bitMatrix . getHeight ( ) ; let formatInfoBits2 = 0 ; const jMin = dimension - 7 ; for ( let j = dimension - 1 ; j >= jMin ; j -- ) { formatInfoBits2 = this . copyBit ( 8 , j , formatInfoBits2 ) ; } for ( let i = dimension - 8 ; i < dimension ; i ++ ) { formatInfoBits2 = this . copyBit ( i , 8 , formatInfoBits2 ) ; } this . parsedFormatInfo = FormatInformation . decodeFormatInformation ( formatInfoBits1 , formatInfoBits2 ) ; if ( this . parsedFormatInfo !== null ) { return this . parsedFormatInfo ; } throw new FormatException ( ) ; }
<p>Reads format information from one of its two locations within the QR Code.</p>
 @return {@link FormatInformation} encapsulating the QR Code's format info
 @throws FormatException if both format information locations cannot be parsed as
 the valid encoding of format information
<p > Reads format information from one of its two locations within the QR Code . < / p > @return { @link FormatInformation } encapsulating the QR Code ' s format info @throws FormatException if both format information locations cannot be parsed as the valid encoding of format information
// Read top-left format info bits // .. and skip a bit in the timing pattern ... // .. and skip a bit in the timing pattern ... // Read the top-right/bottom-left pattern too