View Raw SPL
/* RGB to composite integer color */
rgb2colorref(r=0, g=0, b=0, a = {})
{
        local colorref = 0, vu;

        if (argc == 1)
        {
                if (isarray(r) && numcols(r) == 3)
                {
                        b = col(r, 3);
                        g = col(r, 2);
                        r = col(r, 1);
                }
                else
                {
                        error(sprintf("%s - 3 column series required for single input", __FUNC__));
                }
        }

        if (isempty(a))
        {
                /* no alpha */
                colorref = ((b & 0xFF) << 16) + ((g & 0xFF) << 8) + (r & 0xFF);
                vu = "Composite BGR";
        }
        else
        {
                colorref = ((a & 0xFF) << 24) + ((b & 0xFF) << 16) + ((g & 0xFF) << 8) + (r & 0xFF);
                vu = "Composite ABGR";
        }

        if (isarray(colorref))
        {
                setvunits(colorref, vu);
        }

        return(colorref);
}