public static int GetBCHTypeInfo(int data) { int num = data << 10; while (QRUtil.GetBCHDigit(num) - QRUtil.GetBCHDigit(1335) >= 0) { num ^= 1335 << QRUtil.GetBCHDigit(num) - QRUtil.GetBCHDigit(1335); } return((data << 10 | num) ^ 21522); }
private void MapData(byte[] data, int maskPattern) { int inc = -1; int row = moduleCount - 1; int bitIndex = 7; int byteIndex = 0; for (int col = moduleCount - 1; col > 0; col -= 2) { if (col == 6) { col--; } while (true) { for (int c = 0; c < 2; c++) { if (modules[row][col - c] == null) { bool dark = false; if (byteIndex < data.Length) { dark = (((int)(((uint)data[byteIndex]) >> bitIndex) & 1) == 1); } bool mask = QRUtil.GetMask(maskPattern, row, col - c); if (mask) { dark = !dark; } modules[row][col - c] = dark; bitIndex--; if (bitIndex == -1) { byteIndex++; bitIndex = 7; } } } row += inc; if (row < 0 || moduleCount <= row) { row -= inc; inc = -inc; break; } } } }
private int GetBestMaskPattern() { int num = 0; int result = 0; for (int i = 0; i < 8; i++) { this.Make(true, i); int lostPoint = QRUtil.GetLostPoint(this); if (i == 0 || num > lostPoint) { num = lostPoint; result = i; } } return(result); }
private void SetupTypeInfo(bool test, int maskPattern) { int data = this.errorCorrectLevel << 3 | maskPattern; int bCHTypeInfo = QRUtil.GetBCHTypeInfo(data); for (int i = 0; i < 15; i++) { bool value = !test && (bCHTypeInfo >> i & 1) == 1; if (i < 6) { this.modules[i][8] = new bool?(value); } else { if (i < 8) { this.modules[i + 1][8] = new bool?(value); } else { this.modules[this.moduleCount - 15 + i][8] = new bool?(value); } } } for (int j = 0; j < 15; j++) { bool value2 = !test && (bCHTypeInfo >> j & 1) == 1; if (j < 8) { this.modules[8][this.moduleCount - j - 1] = new bool?(value2); } else { if (j < 9) { this.modules[8][15 - j - 1 + 1] = new bool?(value2); } else { this.modules[8][15 - j - 1] = new bool?(value2); } } } this.modules[this.moduleCount - 8][8] = new bool?(!test); }
private void MapData(byte[] data, int maskPattern) { int num = -1; int num2 = this.moduleCount - 1; int num3 = 7; int num4 = 0; for (int i = this.moduleCount - 1; i > 0; i -= 2) { if (i == 6) { i--; } do { for (int j = 0; j < 2; j++) { if (!this.modules[num2][i - j].HasValue) { bool flag = false; if (num4 < data.Length) { flag = (((uint)data[num4] >> num3 & 1u) == 1u); } bool mask = QRUtil.GetMask(maskPattern, num2, i - j); if (mask) { flag = !flag; } this.modules[num2][i - j] = new bool?(flag); num3--; if (num3 == -1) { num4++; num3 = 7; } } } num2 += num; }while (num2 >= 0 && this.moduleCount > num2); num2 -= num; num = -num; } }
private int GetBestMaskPattern() { int minLostPoint = 0; int pattern = 0; for (int i = 0; i < 8; i++) { Make(true, i); int lostPoint = QRUtil.GetLostPoint(this); if (i == 0 || minLostPoint > lostPoint) { minLostPoint = lostPoint; pattern = i; } } return(pattern); }
private void SetupTypeInfo(bool test, int maskPattern) { int data = (errorCorrectLevel << 3) | maskPattern; int bits = QRUtil.GetBCHTypeInfo(data); for (int i = 0; i < 15; i++) { bool mod = (!test && ((bits >> i) & 1) == 1); if (i < 6) { modules[i][8] = mod; } else if (i < 8) { modules[i + 1][8] = mod; } else { modules[moduleCount - 15 + i][8] = mod; } } for (int i = 0; i < 15; i++) { bool mod = (!test && ((bits >> i) & 1) == 1); if (i < 8) { modules[8][moduleCount - i - 1] = mod; } else if (i < 9) { modules[8][15 - i - 1 + 1] = mod; } else { modules[8][15 - i - 1] = mod; } } modules[moduleCount - 8][8] = !test; }
private static byte[] CreateBytes(BitBuffer buffer, RSBlock[] rsBlocks) { int num = 0; int num2 = 0; int num3 = 0; int[][] array = new int[rsBlocks.Length][]; int[][] array2 = new int[rsBlocks.Length][]; for (int i = 0; i < rsBlocks.Length; i++) { int dataCount = rsBlocks[i].GetDataCount(); int num4 = rsBlocks[i].GetTotalCount() - dataCount; num2 = Math.Max(num2, dataCount); num3 = Math.Max(num3, num4); array[i] = new int[dataCount]; for (int j = 0; j < array[i].Length; j++) { array[i][j] = (int)(255 & buffer.GetBuffer()[j + num]); } num += dataCount; Polynomial errorCorrectPolynomial = QRUtil.GetErrorCorrectPolynomial(num4); Polynomial polynomial = new Polynomial(array[i], errorCorrectPolynomial.GetLength() - 1); Polynomial polynomial2 = polynomial.Mod(errorCorrectPolynomial); array2[i] = new int[errorCorrectPolynomial.GetLength() - 1]; for (int k = 0; k < array2[i].Length; k++) { int num5 = k + polynomial2.GetLength() - array2[i].Length; array2[i][k] = ((num5 >= 0) ? polynomial2.Get(num5) : 0); } } int num6 = 0; for (int l = 0; l < rsBlocks.Length; l++) { num6 += rsBlocks[l].GetTotalCount(); } byte[] array3 = new byte[num6]; int num7 = 0; for (int m = 0; m < num2; m++) { for (int n = 0; n < rsBlocks.Length; n++) { if (m < array[n].Length) { array3[num7++] = (byte)array[n][m]; } } } for (int num8 = 0; num8 < num3; num8++) { for (int num9 = 0; num9 < rsBlocks.Length; num9++) { if (num8 < array2[num9].Length) { array3[num7++] = (byte)array2[num9][num8]; } } } return(array3); }
private static byte[] CreateBytes(BitBuffer buffer, RSBlock[] rsBlocks) { int offset = 0; int maxDcCount = 0; int maxEcCount = 0; int[][] dcdata = new int[rsBlocks.Length][]; int[][] ecdata = new int[rsBlocks.Length][]; for (int r = 0; r < rsBlocks.Length; r++) { int dcCount = rsBlocks[r].GetDataCount(); int ecCount = rsBlocks[r].GetTotalCount() - dcCount; maxDcCount = Math.Max(maxDcCount, dcCount); maxEcCount = Math.Max(maxEcCount, ecCount); dcdata[r] = new int[dcCount]; for (int i = 0; i < dcdata[r].Length; i++) { dcdata[r][i] = 0xff & buffer.GetBuffer()[i + offset]; } offset += dcCount; Polynomial rsPoly = QRUtil.GetErrorCorrectPolynomial(ecCount); Polynomial rawPoly = new Polynomial(dcdata[r], rsPoly.GetLength() - 1); Polynomial modPoly = rawPoly.Mod(rsPoly); ecdata[r] = new int[rsPoly.GetLength() - 1]; for (int i = 0; i < ecdata[r].Length; i++) { int modIndex = i + modPoly.GetLength() - ecdata[r].Length; ecdata[r][i] = (modIndex >= 0)? modPoly.Get(modIndex) : 0; } } int totalCodeCount = 0; for (int i = 0; i < rsBlocks.Length; i++) { totalCodeCount += rsBlocks[i].GetTotalCount(); } byte[] data = new byte[totalCodeCount]; int index = 0; for (int i = 0; i < maxDcCount; i++) { for (int r = 0; r < rsBlocks.Length; r++) { if (i < dcdata[r].Length) { data[index++] = (byte)dcdata[r][i]; } } } for (int i = 0; i < maxEcCount; i++) { for (int r = 0; r < rsBlocks.Length; r++) { if (i < ecdata[r].Length) { data[index++] = (byte)ecdata[r][i]; } } } return(data); }