code: private static int  hslToRgb(float hue, float sat, float light)
     {
        hue = (hue >= 0f) ? hue % 360f : (hue % 360f) + 360f;  // positive modulo (ie. -10 => 350)
        hue /= 60f;    // [0, 360] -> [0, 6]
        sat /= 100;   // [0, 100] -> [0, 1]
        light /= 100; // [0, 100] -> [0, 1]
        sat = (sat < 0f) ? 0f : (sat > 1f) ? 1f : sat;
        light = (light < 0f) ? 0f : (light > 1f) ? 1f : light;
        float  t1, t2;
        if (light <= 0.5f) {
           t2 = light * (sat + 1f);
        } else {
           t2 = light + sat - (light * sat);
        }
        t1 = light * 2f - t2;
        float  r = hueToRgb(t1, t2, hue + 2f);
        float  g = hueToRgb(t1, t2, hue);
        float  b = hueToRgb(t1, t2, hue - 2f);
        return clamp255(r * 256f)<<16 | clamp255(g * 256f)<<8 | clamp255(b * 256f);
     }
docs: Hue (degrees), saturation [0, 100], lightness [0, 100]