int init_color(short color, short r, short g, short b) { T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b)); if (initialize_color == NULL) returnCode(ERR); if (color < 0 || color >= COLORS) returnCode(ERR); if (r < 0 || r > 1000 || g < 0 || g > 1000 || b < 0 || b > 1000) returnCode(ERR); if (hue_lightness_saturation) rgb2hls(r, g, b, &SP->_color_table[color].red, &SP->_color_table[color].green, &SP->_color_table[color].blue); else { SP->_color_table[color].red = r; SP->_color_table[color].green = g; SP->_color_table[color].blue = b; } if (initialize_color) { TPUTS_TRACE("initialize_color"); putp(tparm(initialize_color, color, r, g, b)); } returnCode(OK); }
NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx NCURSES_COLOR_T color, NCURSES_COLOR_T r, NCURSES_COLOR_T g, NCURSES_COLOR_T b) { int result = ERR; int maxcolors; T((T_CALLED("init_color(%p,%d,%d,%d,%d)"), (void *) SP_PARM, color, r, g, b)); if (SP_PARM == 0) returnCode(result); maxcolors = MaxColors; if (InitColor && SP_PARM->_coloron && (color >= 0 && OkColorHi(color)) && (okRGB(r) && okRGB(g) && okRGB(b))) { SP_PARM->_color_table[color].init = 1; SP_PARM->_color_table[color].r = r; SP_PARM->_color_table[color].g = g; SP_PARM->_color_table[color].b = b; if (UseHlsPalette) { rgb2hls(r, g, b, &SP_PARM->_color_table[color].red, &SP_PARM->_color_table[color].green, &SP_PARM->_color_table[color].blue); } else { SP_PARM->_color_table[color].red = r; SP_PARM->_color_table[color].green = g; SP_PARM->_color_table[color].blue = b; } #ifdef USE_TERM_DRIVER CallDriver_4(SP_PARM, td_initcolor, color, r, g, b); #else NCURSES_PUTP2("initialize_color", TPARM_4(initialize_color, color, r, g, b)); #endif SP_PARM->_color_defs = max(color + 1, SP_PARM->_color_defs); result = OK; } returnCode(result); }
// BANG - calculate and output void cs_bang(t_cs *x) { if(x->attr_mode == ps_rgb2hsl) rgb2hsl(x, x->val1, x->val2, x->val3); // first for speed else if(x->attr_mode == ps_hsl2rgb) hsl2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_no_transform) no_transform(x); else if(x->attr_mode == ps_rgb2cmy) rgb2cmy(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_cmy2rgb) cmy2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2hsv) rgb2hsv(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_hsv2rgb) hsv2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2xyz) rgb2xyz(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_xyz2rgb) xyz2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2uvw) rgb2uvw(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_uvw2rgb) uvw2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2retinalcone) rgb2cone(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_retinalcone2rgb) cone2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2lab) rgb2lab(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_lab2rgb) lab2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2yiq) rgb2yiq(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_yiq2rgb) yiq2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2hls) rgb2hls(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_hls2rgb) hls2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2rgbcie) rgb2rgbcie(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgbcie2rgb) rgbcie2rgb(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgb2rgbsmpte) rgb2rgbsmpte(x, x->val1, x->val2, x->val3); else if(x->attr_mode == ps_rgbsmpte2rgb) rgbsmpte2rgb(x, x->val1, x->val2, x->val3); if(x->attr_outputtype == ps_packed){ Atom temp_list[3]; atom_setlong(temp_list+0, x->calc1); atom_setlong(temp_list+1, x->calc2); atom_setlong(temp_list+2, x->calc3); outlet_list(x->out1, 0L, 3, temp_list); // output the result } else{ outlet_int(x->out3, x->calc3); // output the result outlet_int(x->out2, x->calc2); // output the result outlet_int(x->out1, x->calc1); // output the result } }