WoW:USERAPI HexToRGBPerc: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
m (Increased the function's Intelligence.)
No edit summary
Line 2: Line 2:
__NOTOC__
__NOTOC__


Takes a hex string (must be 6 char long!) and converts it to a RGB percent set (0.0-1.0)
local function HexToRGBPerc(hex)
local rhex, ghex, bhex = string.sub(hex, 1, 2), string.sub(hex, 3, 4), string.sub(hex, 5, 6)
return tonumber(rhex, 16)/255, tonumber(ghex, 16)/255, tonumber(bhex, 16)/255
end
== Alternative Version ==
Takes a hex string (must be 3 or 6 chars long!) and converts it to a RGB percent set (0.0-1.0). If ''hex'' is invalid, return black (0,0,0).
Takes a hex string (must be 3 or 6 chars long!) and converts it to a RGB percent set (0.0-1.0). If ''hex'' is invalid, return black (0,0,0).



Revision as of 22:08, 30 September 2007

This page documents a user-defined function that you can copy and paste into your addon. Replace PREFIX with your addon or lib prefix to avoid conflicts between different versions of these functions.

User defined functions


Takes a hex string (must be 6 char long!) and converts it to a RGB percent set (0.0-1.0)

local function HexToRGBPerc(hex)
	local rhex, ghex, bhex = string.sub(hex, 1, 2), string.sub(hex, 3, 4), string.sub(hex, 5, 6)
	return tonumber(rhex, 16)/255, tonumber(ghex, 16)/255, tonumber(bhex, 16)/255
end

Alternative Version

Takes a hex string (must be 3 or 6 chars long!) and converts it to a RGB percent set (0.0-1.0). If hex is invalid, return black (0,0,0).

local function HexToRGBPerc(hex)
    local rhex, ghex, bhex, base
    if strlen(hex) == 6 then
        rhex, ghex, bhex = strmatch('([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})', hex)
        base = 255
    elseif strlen(hex) == 3 then
        rhex, ghex, bhex = strmatch('([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])', hex)
        base = 16
    end
    if not (rhex and ghex and bhex) then
        return 0, 0, 0
    else
        return tonumber(rhex, 16)/base, tonumber(ghex, 16)/base, tonumber(bhex, 16)/base
    end
end