IsValidMaskPattern() public static méthode

public static IsValidMaskPattern ( int maskPattern ) : bool
maskPattern int
Résultat bool
        // Return the mask bit for "getMaskPattern" at "x" and "y". See 8.8 of JISX0510:2004 for mask
        // pattern conditions.
        public static bool GetDataMaskBit(int maskPattern, int x, int y)
        {
            if (!QRCode.IsValidMaskPattern(maskPattern))
            {
                throw new ArgumentException("Invalid mask pattern");
            }
            int intermediate, temp;

            switch (maskPattern)
            {
            case 0:
                intermediate = (y + x) & 0x1;
                break;

            case 1:
                intermediate = y & 0x1;
                break;

            case 2:
                intermediate = x % 3;
                break;

            case 3:
                intermediate = (y + x) % 3;
                break;

            case 4:
                intermediate = ((y >> 1) + (x / 3)) & 0x1;
                break;

            case 5:
                temp         = y * x;
                intermediate = (temp & 0x1) + (temp % 3);
                break;

            case 6:
                temp         = y * x;
                intermediate = (((temp & 0x1) + (temp % 3)) & 0x1);
                break;

            case 7:
                temp         = y * x;
                intermediate = (((temp % 3) + ((y + x) & 0x1)) & 0x1);
                break;

            default:
                throw new ArgumentException("Invalid mask pattern: " + maskPattern);
            }
            return(intermediate == 0);
        }
Exemple #2
0
        // Make bit vector of type information. On success, store the result in "bits" and return true.
        // Encode error correction level and mask pattern. See 8.9 of
        // JISX0510:2004 (p.45) for details.
        public static void MakeTypeInfoBits(ErrorCorrectionLevel ecLevel, int maskPattern, BitVector bits)
        {
            if (!QRCode.IsValidMaskPattern(maskPattern))
            {
                throw new WriterException("Invalid mask pattern");
            }
            int typeInfo = (ecLevel.GetBits() << 3) | maskPattern;

            bits.AppendBits(typeInfo, 5);

            int bchCode = CalculateBCHCode(typeInfo, TYPE_INFO_POLY);

            bits.AppendBits(bchCode, 10);

            BitVector maskBits = new BitVector();

            maskBits.AppendBits(TYPE_INFO_MASK_PATTERN, 15);
            bits.Xor(maskBits);

            if (bits.Size() != 15)    // Just in case.
            {
                throw new WriterException("should not happen but we got: " + bits.Size());
            }
        }