View Raw SPL
/* defcolor using composite value */
defcolorint(name, intval, idx)
{
local r, g, b;
(name, intval, idx) = defcolorint_parse_args(name, intval, idx);
/* get RGB components */
(r, g, b) = int2rgb(intval);
/* set color using RGB values */
defcolor(name, r, g, b, idx);
}
defcolorint_parse_args(argv)
{
local name = {}, idx = {}, intval = {}, err = 0;
loop (j = 1..argvc)
{
if (isstring(getargv(j)))
{
if (isempty(name))
{
name = getargv(j);
}
else
{
err = 1;
break;
}
}
else if (isreal(getargv(j)))
{
if (isempty(intval))
{
intval = getargv(j);
}
else if (isempty(idx))
{
idx = getargv(j);
}
}
else
{
err = 1;
break;
}
}
if (err)
{
error(sprintf("%s - invalid argument type", __CALLER__));
}
if (isempty(name))
{
if (isempty(idx))
{
error(sprintf("%s - color name or color index required", __CALLER__));
}
name = "";
}
if (isempty(intval))
{
error(sprintf("%s - color value required", __CALLER__));
}
if (isempty(idx))
{
idx = -1;
}
return(name, intval, idx)
}