void Flcc_ValueBox::generate() { int X = 0, Y = 0, W = w(), H = h(); box()->inset(X,Y,W,H); Fl_Image *im = new Fl_Image(W, H, 32); uint32 *dst = (uint32*)im->data(); uint32 rgb; int skip = (im->pitch() - W * im->bytespp()) >> 2; for(int y = 0; y < H; y++) { float Yf = 255*(1.0-float(y)/H); fl_rgb888_from_rgb(rgb, uchar(tr*Yf+.5f), uchar(tg*Yf+.5f), uchar(tb*Yf+.5f)); for(int x = 0; x < W; x++) { *dst++ = rgb; } dst += skip; } if(bg) delete bg; bg = im; }
void Flcc_HueBox::generate() { int X = 0, Y = 0, W = w(), H = h(); box()->inset(X,Y,W,H); #ifdef UPDATE_HUE_BOX const float V = ((Fl_Color_Chooser*)(parent()))->v(); #else const float V = 1.0f; #endif Fl_Image *im = new Fl_Image(W, H, 32); uint32 *dst = (uint32 *)im->data(); int skip = (im->pitch() - W * im->bytespp()) >> 2; register float r,g,b; for(int y = 0; y < H; y++) { float Yf = (float)y / H; for (int x = 0; x < W; x++) { float Xf = (float)x / W; float H,S; tohs(Xf, Yf, H, S); Fl_Color_Chooser::hsv2rgb(H,S,V,r,g,b); fl_rgb888_from_rgb(*dst++, uchar(255*r+.5f), uchar(255*g+.5f), uchar(255*b+.5f)); } dst += skip; } if(bg) delete bg; bg = im; }