MCPcopy Create free account
hub / github.com/CalcProgrammer1/KeyboardVisualizer / hsv2rgb

Function hsv2rgb

KeyboardVisualizerCommon/hsv.cpp:77–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75}
76
77unsigned int hsv2rgb(hsv_t* hsv)
78{
79 unsigned char r = 0;
80 unsigned char g = 0;
81 unsigned char b = 0;
82
83 if (hsv->saturation == 0) {
84 r = g = b = hsv->value;
85 }
86 else {
87 int h = (hsv->hue)%360;
88 int s = hsv->saturation;
89 int v = hsv->value;
90 int i = h / (60 * HUE_DEGREE);
91 int p = (256 * v - s*v) / 256;
92
93 if (i & 1) {
94 int q = (256 * 60 * HUE_DEGREE*v - h*s*v + 60 * HUE_DEGREE*s*v*i) / (256 * 60 * HUE_DEGREE);
95 switch (i) {
96 case 1: r = q; g = v; b = p; break;
97 case 3: r = p; g = q; b = v; break;
98 case 5: r = v; g = p; b = q; break;
99 }
100 }
101 else {
102 int t = (256 * 60 * HUE_DEGREE*v + h*s*v - 60 * HUE_DEGREE*s*v*(i + 1)) / (256 * 60 * HUE_DEGREE);
103 switch (i) {
104 case 0: r = v; g = t; b = p; break;
105 case 2: r = p; g = v; b = t; break;
106 case 4: r = t; g = p; b = v; break;
107 }
108 }
109 }
110
111 return ToRGBColor(r, g, b);
112}
113
114
115#ifdef TEST

Callers 4

mainFunction · 0.85
DrawRainbowFunction · 0.85
DrawColorWheelFunction · 0.85
DrawSpectrumCycleFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected