iTextSharp.text.pdf.qrcode.MaskUtil.ApplyMaskPenaltyRule4 C# (CSharp) Метод

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

public static ApplyMaskPenaltyRule4 ( ByteMatrix matrix ) : int
matrix ByteMatrix
Результат int
        public static int ApplyMaskPenaltyRule4(ByteMatrix matrix) {
            int numDarkCells = 0;
            sbyte[][] array = matrix.GetArray();
            int width = matrix.GetWidth();
            int height = matrix.GetHeight();
            for (int y = 0; y < height; ++y) {
                for (int x = 0; x < width; ++x) {
                    if (array[y][x] == 1) {
                        numDarkCells += 1;
                    }
                }
            }
            int numTotalCells = matrix.GetHeight() * matrix.GetWidth();
            double darkRatio = (double)numDarkCells / numTotalCells;
            return Math.Abs((int)(darkRatio * 100 - 50)) / 5 * 10;
        }

Usage Example

Пример #1
0
        // The mask penalty calculation is complicated.  See Table 21 of JISX0510:2004 (p.45) for details.
        // Basically it applies four rules and summate all penalties.
        private static int CalculateMaskPenalty(ByteMatrix matrix)
        {
            var penalty = 0;

            penalty += MaskUtil.ApplyMaskPenaltyRule1(matrix);
            penalty += MaskUtil.ApplyMaskPenaltyRule2(matrix);
            penalty += MaskUtil.ApplyMaskPenaltyRule3(matrix);
            penalty += MaskUtil.ApplyMaskPenaltyRule4(matrix);
            return(penalty);
        }