Color space conversion made easy to use. Just call this useful Objective-C method.
You need:
- http://objective-c-functions.blogspot.com/2013/06/helpful-color-struct-rgb-hsv.html
/** Convert from HSV to RGB.
RGB range is [0;1] for all channels. HSV range can be anything sane ([0;360] or [0;1]).
@param col HSV color to convert.
@return Returns RGB color.
@see hsvFromRgb:
*/
+ (COLOR_RGB)rgbFromHsv:(COLOR_HSV)col {
CGFloat h1 = col.h;
CGFloat s1 = col.s;
CGFloat v1 = col.v;
CGFloat var_r, var_g, var_b;
if (h1 > 1.0f) {
h1 = h1 - (CGFloat)floorf(h1);
}
if (h1 == 1.0f) h1 = 0.0f;
if (v1 < 0.0f) v1 = 0.0f;
if (v1 > 1.0f) v1 = 1.0f;
if (s1 < 0.0f) s1 = 0.0f;
if (s1 > 1.0f) s1 = 1.0f;
if (s1 == 0.0f) {
var_r = var_g = var_b = v1;
}
else {
CGFloat var_i, var_h, var_1, var_2, var_3;
var_h = h1 * 6.0f;
var_i = (CGFloat)floorf(var_h);
var_1 = v1 * (1.0f - s1);
var_2 = v1 * (1.0f - s1 * (var_h - var_i));
var_3 = v1 * (1.0f - s1 * (1.0f - (var_h - var_i)));
if (var_i == 0.0f) {
var_r = v1;
var_g = var_3;
var_b = var_1;
}
else if (var_i == 1.0f) {
var_r = var_2;
var_g = v1;
var_b = var_1;
}
else if (var_i == 2.0f) {
var_r = var_1;
var_g = v1;
var_b = var_3;
}
else if (var_i == 3.0f) {
var_r = var_1;
var_g = var_2;
var_b = v1;
}
else if (var_i == 4.0f) {
var_r = var_3;
var_g = var_1;
var_b = v1;
}
else {
var_r = v1;
var_g = var_1;
var_b = var_2;
}
}
COLOR_RGB ret = {var_r, var_g, var_b};
return ret;
}
Download the ready-for-use source file (.m) of HSV to RGB Color space conversion
No comments:
Post a Comment