I want to paint that:
hsv
I already wrote that code. I used that site to write hsvtorgb method: http://www.rapidtables.com/convert/color/hsv-to-rgb.htm Unfortunatelly my code doesn't show what i want. Can you tell me why? Thanks a lot! I am waiting for answers
void Widget::hsvtorgb(int h, float s, float v)
{
float C, X, m;
float r, g, b;
C = v * s;
X = C*(1 - abs(((h/60) % 2) - 1));
m = v - C;
if(h>=0 && h<60){r = C; g = X; b = 0;}
if(h>=60 && h<120){r = X; g = C; b = 0;}
if(h>=120 && h<180){r = 0; g = C; b = X;}
if(h>=180 && h<240){r = 0; g = X; b = C;}
if(h>=240 && h<300){r = X; g = 0; b = C;}
if(h>=300 && h<360){r = C; g = 0; b = X;}
R = (r + m) * 255;
G = (g + m) * 255;
B = (b + m) * 255;
}
void Widget::on_H_slider_valueChanged(int value)
{
h=value;
for(int i=0; i<600; i++)
{
for(int j=0; j<600; j++)
{
hsvtorgb(1.0*j/600, 1.0*i/600, v);
bits[600*4*i+4*j] = B;
bits[600*4*i+4*j+1] = G;
bits[600*4*i+4*j+2] = R;
}
}
update();
}
void Widget::on_S_slider_valueChanged(int value)
{
s=value/100;
for(int i=0; i<600; i++)
{
for(int j=0; j<600; j++)
{
hsvtorgb(h, s, v);
bits[600*4*i+4*j] = B;
bits[600*4*i+4*j+1] = G;
bits[600*4*i+4*j+2] = R;
}
}
update();
}
void Widget::on_V_slider_valueChanged(int value)
{
v=value/100;
for(int i=0; i<600; i++)
{
for(int j=0; j<600; j++)
{
hsvtorgb(h, s, v);
bits[600*4*i+4*j] = B;
bits[600*4*i+4*j+1] = G;
bits[600*4*i+4*j+2] = R;
}
}
update();
}