Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
mco_dolo
Level 7

How to convert rgba to hex?

I have a color in rgba format coming from the server, but I don't think roku can understand rgba, so was wondering if there was a convenient api to convert rgba to hex?
Example:
(255, 255 , 255, 255) - > 0xFFFFFFFF

Thanks
0 Kudos
4 Replies
Komag
Level 9

Re: How to convert rgba to hex?

Dunno if there is one, but should be pretty easy to code one up I would think.
0 Kudos
mco_dolo
Level 7

Re: How to convert rgba to hex?

Yea, I just wrote a function for it


// Example: If you input 255, 255, 255, 255 as the argument it will return "0xFFFFFFFF"
function rgbaToHex(r as integer, g as integer, b as integer, a as integer)
    hexArray = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
    hexColor = "0x"
    
    for i = 0 to 3
        colorChannel = invalid
        
        if(i = 0) then
            colorChannel = r
            
        else if(i = 1) then
            colorChannel = g
            
        else if(i=2) then  
            colorChannel = b
            
        else if(i=3) then
            colorChannel = a
        end if
    
        sixteens = int(colorChannel / 16) // How many 16's can go into colorChannel (since hex is base 16)?
        ones = colorChannel mod 16 // How many 1's are in the remainder?
        
        hexColor += hexArray[sixteens] + hexArray[ones]
    end for

    return hexColor
end function
0 Kudos
rftvaa
Level 7

Re: How to convert rgba to hex?

Hi,
you can improve your solution by using StrI(value as Integer, radix as Integer) as String 
example: StrI(255, 16) '= "ff"
0 Kudos
Highlighted
necrotek
Level 7

Re: How to convert rgba to hex?

You can use a bitshift

function rgbToColor(r, g, b, a,LE=false) 
        if LE=true'(LITTLE_ENDIAN)
            return ( (a << 24) + (b << 16) + (g <<  8) + r )
        else
            return ( (r << 24) + (g << 16) + (b <<  8) + a )
        end if 

    end function 
0 Kudos