Milon\Barcode\PDF417::getErrorCorrectionLevel PHP Метод

getErrorCorrectionLevel() защищенный Метод

Returns the error correction level (0-8) to be used
protected getErrorCorrectionLevel ( $ecl, $numcw ) : integer
$ecl (int) error correction level
$numcw (int) number of data codewords
Результат integer error correction level
    protected function getErrorCorrectionLevel($ecl, $numcw)
    {
        // get maximum correction level
        $maxecl = 8;
        // starting error level
        $maxerrsize = 928 - $numcw;
        // available codewords for error
        while ($maxecl > 0) {
            $errsize = 0;
            if ($ecl >= 0) {
                // Avoid PHP7 ArithmeticError
                $errsize = 2 << $ecl;
            }
            if ($maxerrsize >= $errsize) {
                break;
            }
            --$maxecl;
        }
        // check for automatic levels
        if ($ecl < 0 or $ecl > 8) {
            if ($numcw < 41) {
                $ecl = 2;
            } elseif ($numcw < 161) {
                $ecl = 3;
            } elseif ($numcw < 321) {
                $ecl = 4;
            } elseif ($numcw < 864) {
                $ecl = 5;
            } else {
                $ecl = $maxecl;
            }
        }
        if ($ecl > $maxecl) {
            $ecl = $maxecl;
        }
        return $ecl;
    }