ZXing.QrCode.Internal.MatrixUtil.embedDataBits C# (CSharp) Метод

embedDataBits() публичный статический Метод

public static embedDataBits ( BitArray dataBits, int maskPattern, ByteMatrix matrix ) : void
dataBits ZXing.Common.BitArray
maskPattern int
matrix ByteMatrix
Результат void
        public static void embedDataBits(BitArray dataBits, int maskPattern, ByteMatrix matrix)
        {
            int bitIndex = 0;
             int direction = -1;
             // Start from the right bottom cell.
             int x = matrix.Width - 1;
             int y = matrix.Height - 1;
             while (x > 0)
             {
            // Skip the vertical timing pattern.
            if (x == 6)
            {
               x -= 1;
            }
            while (y >= 0 && y < matrix.Height)
            {
               for (int i = 0; i < 2; ++i)
               {
                  int xx = x - i;
                  // Skip the cell if it's not empty.
                  if (!isEmpty(matrix[xx, y]))
                  {
                     continue;
                  }
                  int bit;
                  if (bitIndex < dataBits.Size)
                  {
                     bit = dataBits[bitIndex] ? 1 : 0;
                     ++bitIndex;
                  }
                  else
                  {
                     // Padding bit. If there is no bit left, we'll fill the left cells with 0, as described
                     // in 8.4.9 of JISX0510:2004 (p. 24).
                     bit = 0;
                  }

                  // Skip masking if mask_pattern is -1.
                  if (maskPattern != -1)
                  {
                     if (MaskUtil.getDataMaskBit(maskPattern, xx, y))
                     {
                        bit ^= 0x1;
                     }
                  }
                  matrix[xx, y] = bit;
               }
               y += direction;
            }
            direction = -direction; // Reverse the direction.
            y += direction;
            x -= 2; // Move to the left.
             }
             // All bits should be consumed.
             if (bitIndex != dataBits.Size)
             {
            throw new WriterException("Not all bits consumed: " + bitIndex + '/' + dataBits.Size);
             }
        }