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