| 443 | |
| 444 | |
| 445 | static int ChooseMaskPattern(const BitArray& bits, ErrorCorrectionLevel ecLevel, const Version& version, TritMatrix& matrix) |
| 446 | { |
| 447 | int minPenalty = std::numeric_limits<int>::max(); // Lower penalty is better. |
| 448 | int bestMaskPattern = -1; |
| 449 | // We try all mask patterns to choose the best one. |
| 450 | for (int maskPattern = 0; maskPattern < NUM_MASK_PATTERNS; maskPattern++) { |
| 451 | BuildMatrix(bits, ecLevel, version, maskPattern, matrix); |
| 452 | int penalty = MaskUtil::CalculateMaskPenalty(matrix); |
| 453 | if (penalty < minPenalty) { |
| 454 | minPenalty = penalty; |
| 455 | bestMaskPattern = maskPattern; |
| 456 | } |
| 457 | } |
| 458 | return bestMaskPattern; |
| 459 | } |
| 460 | |
| 461 | static int CalculateBitsNeeded(CodecMode mode, const BitArray& headerBits, const BitArray& dataBits, const Version& version) |
| 462 | { |
no test coverage detected