private static void a(int i, ErrorCorrectionLevel errorcorrectionlevel, Mode mode, QRCode qrcode) { qrcode.setECLevel(errorcorrectionlevel); qrcode.setMode(mode); for (int j = 1; j <= 40; j++) { Version version = Version.getVersionForNumber(j); int k = version.getTotalCodewords(); com.google.zxing.qrcode.decoder.Version.ECBlocks ecblocks = version.getECBlocksForLevel(errorcorrectionlevel); int l = ecblocks.getTotalECCodewords(); int i1 = ecblocks.getNumBlocks(); int j1 = k - l; if (j1 >= a(i, version, mode)) { qrcode.setVersion(j); qrcode.setNumTotalBytes(k); qrcode.setNumDataBytes(j1); qrcode.setNumRSBlocks(i1); qrcode.setNumECBytes(l); qrcode.setMatrixWidth(version.getDimensionForVersion()); return; } } throw new WriterException("Cannot find proper rs block info (input data too big?)"); }