WoW:USERAPI HexToRGBPerc: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
No edit summary
 
m (Increased the function's Intelligence.)
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)
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 function HexToRGBPerc(hex)
local rhex, ghex, bhex = string.sub(hex, 1, 2), string.sub(hex, 3, 4), string.sub(hex, 5, 6)
    local rhex, ghex, bhex, base
return tonumber(rhex, 16)/255, tonumber(ghex, 16)/255, tonumber(bhex, 16)/255
    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
  end

Revision as of 13:23, 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 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