#include /**************************************************************************** * HIS_to_RGB() returns the R/G/B values for the proper HIS color associated * with the following values: * HUE: * R: red value 0 - 255 * G: grn value 0 - 255 * B: blu value 0 - 255 * INTENSITY: * I intensity value: 0 (black) to 255 (full color) * SATURATION: * S saturation val: 0 (gray) to 255 (full color) * * make_gray_scale() generates a gray-scale color lookup table ****************************************************************************/ int HIS_to_RGB ( int R, /* red percent. for hue: value 0 - 255 */ int G, /* grn percent. for hue: value 0 - 255 */ int B, /* blu percent. for hue: value 0 - 255 */ int I, /* intensity value: 0 (black) to 255 (white) */ int S, /* saturation val: 0 (gray) to 255 (full color) */ CELL *red, /* resulting red value */ CELL *grn, /* resulting green value */ CELL *blu /* resulting blue value */ ) { /* modify according to intensity */ if (I != 255) { R = R * I / 255; G = G * I / 255; B = B * I / 255; } /* modify according to saturation (actually "haze factor") */ if (S != 255) { R = 127 + (R - 127) * S / 255 ; G = 127 + (G - 127) * S / 255 ; B = 127 + (B - 127) * S / 255 ; } /* make sure final values are within range */ if (R < 0) R = 0 ; if (G < 0) G = 0 ; if (B < 0) B = 0 ; if (R > 255) R = 255 ; if (G > 255) G = 255 ; if (B > 255) B = 255 ; *red = R; *grn = G; *blu = B; } int make_gray_scale (struct Colors *gray) { int i ; G_init_colors(gray) ; for (i = 0; i < 256; i++) G_set_color((CELL) i, i, i, i, gray) ; return 0; }