Beispiel #1
0
    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?)");
    }
Beispiel #2
0
 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;
     }
 }