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?)"); }
static void a(int i, int j, Mode mode, BitArray bitarray) { int k = mode.getCharacterCountBits(Version.getVersionForNumber(j)); if (i > -1 + (1 << k)) { throw new WriterException((new StringBuilder()).append(i).append("is bigger than").append(-1 + (1 << k)).toString()); } else { bitarray.appendBits(i, k); return; } }