Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
mco_dolo
Visitor

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 4
Komag
Roku Guru

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
Visitor

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
Visitor

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
necrotek
Roku Guru

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 <<  😎 + r )
        else
            return ( (r << 24) + (g << 16) + (b <<  😎 + a )
        end if 

    end function 
0 Kudos