// 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());
}
}