MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / hsva

Method hsva

source/core/StarColor.cpp:144–201  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

142}
143
144Color Color::hsva(float h, float s, float v, float a) {
145 h = clamp(h, 0.0f, 1.0f);
146 s = clamp(s, 0.0f, 1.0f);
147 v = clamp(v, 0.0f, 1.0f);
148 a = clamp(a, 0.0f, 1.0f);
149
150 Color retColor;
151 if (s == 0.0f) {
152 retColor.setRedF(v);
153 retColor.setGreenF(v);
154 retColor.setBlueF(v);
155 retColor.setAlphaF(a);
156 } else {
157 float var_h, var_i, var_1, var_2, var_3, var_r, var_g, var_b;
158
159 var_h = h * 6.0f;
160 if (var_h == 6.0f)
161 var_h = 0.0f; // H must be < 1
162
163 var_i = floor(var_h);
164
165 var_1 = v * (1.0f - s);
166 var_2 = v * (1.0f - s * (var_h - var_i));
167 var_3 = v * (1.0f - s * (1.0f - (var_h - var_i)));
168
169 if (var_i == 0) {
170 var_r = v;
171 var_g = var_3;
172 var_b = var_1;
173 } else if (var_i == 1) {
174 var_r = var_2;
175 var_g = v;
176 var_b = var_1;
177 } else if (var_i == 2) {
178 var_r = var_1;
179 var_g = v;
180 var_b = var_3;
181 } else if (var_i == 3) {
182 var_r = var_1;
183 var_g = var_2;
184 var_b = v;
185 } else if (var_i == 4) {
186 var_r = var_3;
187 var_g = var_1;
188 var_b = v;
189 } else {
190 var_r = v;
191 var_g = var_1;
192 var_b = var_2;
193 }
194
195 retColor.setRedF(var_r);
196 retColor.setGreenF(var_g);
197 retColor.setBlueF(var_b);
198 retColor.setAlphaF(a);
199 }
200 return retColor;
201}

Callers

nothing calls this directly

Calls 5

clampFunction · 0.85
setRedFMethod · 0.80
setGreenFMethod · 0.80
setBlueFMethod · 0.80
setAlphaFMethod · 0.80

Tested by

no test coverage detected