/// <summary> /// <p>Reads version information from one of its two locations within the QR Code.</p> /// </summary> /// <returns> <seealso cref="Version"/> encapsulating the QR Code's version </returns> /// <exception cref="FormatException"> if both version information locations cannot be parsed as /// the valid encoding of version information </exception> //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: Version readVersion() throws com.google.zxing.FormatException internal Version readVersion() { if (parsedVersion != null) { return(parsedVersion); } int dimension = bitMatrix.Height; int provisionalVersion = (dimension - 17) >> 2; if (provisionalVersion <= 6) { return(Version.getVersionForNumber(provisionalVersion)); } // Read top-right version info: 3 wide by 6 tall int versionBits = 0; int ijMin = dimension - 11; for (int j = 5; j >= 0; j--) { for (int i = dimension - 9; i >= ijMin; i--) { versionBits = copyBit(i, j, versionBits); } } Version theParsedVersion = Version.decodeVersionInformation(versionBits); if (theParsedVersion != null && theParsedVersion.DimensionForVersion == dimension) { parsedVersion = theParsedVersion; return(theParsedVersion); } // Hmm, failed. Try bottom left: 6 wide by 3 tall versionBits = 0; for (int i = 5; i >= 0; i--) { for (int j = dimension - 9; j >= ijMin; j--) { versionBits = copyBit(i, j, versionBits); } } theParsedVersion = Version.decodeVersionInformation(versionBits); if (theParsedVersion != null && theParsedVersion.DimensionForVersion == dimension) { parsedVersion = theParsedVersion; return(theParsedVersion); } throw FormatException.FormatInstance; }
/** * <p>Reads version information from one of its two locations within the QR Code.</p> * * @return {@link Version} encapsulating the QR Code's version * @throws ReaderException if both version information locations cannot be parsed as * the valid encoding of version information */ public Version readVersion() { if (parsedVersion != null) { return(parsedVersion); } int dimension = bitMatrix.getDimension(); int provisionalVersion = (dimension - 17) >> 2; if (provisionalVersion <= 6) { return(Version.getVersionForNumber(provisionalVersion)); } // Read top-right version info: 3 wide by 6 tall int versionBits = 0; for (int i = 5; i >= 0; i--) { int jMin = dimension - 11; for (int j = dimension - 9; j >= jMin; j--) { versionBits = copyBit(i, j, versionBits); } } parsedVersion = Version.decodeVersionInformation(versionBits); if (parsedVersion != null) { return(parsedVersion); } // Hmm, failed. Try bottom left: 6 wide by 3 tall versionBits = 0; for (int j = 5; j >= 0; j--) { int iMin = dimension - 11; for (int i = dimension - 11; i >= iMin; i--) { versionBits = copyBit(i, j, versionBits); } } parsedVersion = Version.decodeVersionInformation(versionBits); if (parsedVersion != null) { return(parsedVersion); } throw new ReaderException(); }