OCA\Richdocuments\Helper::convertHSLToRGB PHP 메소드

convertHSLToRGB() 보호된 정적인 메소드

protected static convertHSLToRGB ( integer $iH, integer $iS, integer $iV ) : string
$iH integer
$iS integer
$iV integer
리턴 string
    protected static function convertHSLToRGB($iH, $iS, $iV)
    {
        if ($iH < 0) {
            $iH = 0;
            // Hue:
        }
        if ($iH > 360) {
            $iH = 360;
            //   0-360
        }
        if ($iS < 0) {
            $iS = 0;
            // Saturation:
        }
        if ($iS > 100) {
            $iS = 100;
            //   0-100
        }
        if ($iV < 0) {
            $iV = 0;
            // Lightness:
        }
        if ($iV > 100) {
            $iV = 100;
            //   0-100
        }
        $dS = $iS / 100.0;
        // Saturation: 0.0-1.0
        $dV = $iV / 100.0;
        // Lightness:  0.0-1.0
        $dC = $dV * $dS;
        // Chroma:     0.0-1.0
        $dH = $iH / 60.0;
        // H-Prime:    0.0-6.0
        $dT = $dH;
        // Temp variable
        while ($dT >= 2.0) {
            $dT -= 2.0;
        }
        // php modulus does not work with float
        $dX = $dC * (1 - abs($dT - 1));
        // as used in the Wikipedia link
        switch ($dH) {
            case $dH >= 0.0 && $dH < 1.0:
                $dR = $dC;
                $dG = $dX;
                $dB = 0.0;
                break;
            case $dH >= 1.0 && $dH < 2.0:
                $dR = $dX;
                $dG = $dC;
                $dB = 0.0;
                break;
            case $dH >= 2.0 && $dH < 3.0:
                $dR = 0.0;
                $dG = $dC;
                $dB = $dX;
                break;
            case $dH >= 3.0 && $dH < 4.0:
                $dR = 0.0;
                $dG = $dX;
                $dB = $dC;
                break;
            case $dH >= 4.0 && $dH < 5.0:
                $dR = $dX;
                $dG = 0.0;
                $dB = $dC;
                break;
            case $dH >= 5.0 && $dH < 6.0:
                $dR = $dC;
                $dG = 0.0;
                $dB = $dX;
                break;
            default:
                $dR = 0.0;
                $dG = 0.0;
                $dB = 0.0;
                break;
        }
        $dM = $dV - $dC;
        $dR += $dM;
        $dG += $dM;
        $dB += $dM;
        $dR *= 255;
        $dG *= 255;
        $dB *= 255;
        $dR = str_pad(dechex(round($dR)), 2, "0", STR_PAD_LEFT);
        $dG = str_pad(dechex(round($dG)), 2, "0", STR_PAD_LEFT);
        $dB = str_pad(dechex(round($dB)), 2, "0", STR_PAD_LEFT);
        return $dR . $dG . $dB;
    }