MCPcopy Create free account
hub / github.com/ColorCop/ColorCop / HSLtoRGB

Method HSLtoRGB

ColorCop/ColorCopDlg.cpp:1059–1104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1057}
1058
1059void CColorCopDlg::HSLtoRGB(double H, double S, double L) {
1060 if (S == 0) {
1061 r = g = b = static_cast<int>(L * RGB_MAX_D);
1062 } else {
1063 double h = (H - static_cast<int>(H)) * 6.0;
1064 int caseH = static_cast<int>(h);
1065
1066 double f = h - static_cast<int>(h);
1067 double p = L * (1.0 - S);
1068 double q = L * (1.0 - S * f);
1069 double t = L * (1.0 - (S * (1.0 - f)));
1070
1071 switch (caseH) {
1072 case 0:
1073 r = static_cast<int>((L) * RGB_MAX_D);
1074 g = static_cast<int>((t) * RGB_MAX_D);
1075 b = static_cast<int>((p) * RGB_MAX_D);
1076 break;
1077 case 1:
1078 r = static_cast<int>((q) * RGB_MAX_D);
1079 g = static_cast<int>((L) * RGB_MAX_D);
1080 b = static_cast<int>((p) * RGB_MAX_D);
1081 break;
1082 case 2:
1083 r = static_cast<int>((p) * RGB_MAX_D);
1084 g = static_cast<int>((L) * RGB_MAX_D);
1085 b = static_cast<int>((t) * RGB_MAX_D);
1086 break;
1087 case 3:
1088 r = static_cast<int>((p) * RGB_MAX_D);
1089 g = static_cast<int>((q) * RGB_MAX_D);
1090 b = static_cast<int>((L) * RGB_MAX_D);
1091 break;
1092 case 4:
1093 r = static_cast<int>((t) * RGB_MAX_D);
1094 g = static_cast<int>((p) * RGB_MAX_D);
1095 b = static_cast<int>((L) * RGB_MAX_D);
1096 break;
1097 case 5:
1098 r = static_cast<int>((L) * RGB_MAX_D);
1099 g = static_cast<int>((p) * RGB_MAX_D);
1100 b = static_cast<int>((q) * RGB_MAX_D);
1101 break;
1102 }
1103 }
1104}
1105
1106void CColorCopDlg::UpdateCMYKFromRGB(int red, int green, int blue) {
1107 // Normalize RGB to [0,1]

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected