Info:Addon takes two RGB colors and and on a given percentage morphs from colorA to colorB using HSV returning a new intermediate RGB color.
Function:
Lua Code:
local CS = CreateFrame("ColorSelect")
--GetSmudgeColorRGB function
--arg1: color table in RGB {r=0,g=0,b=0}
--arg2: color table in RGB {r=1,g=1,b=1}
--arg3: percentage 0-1
function CS:GetSmudgeColorRGB(colorA,colorB,percentage)
self:SetColorRGB(colorA.r, colorA.g, colorA.b)
colorA.h, colorA.s, colorA.v = self:GetColorHSV()
self:SetColorRGB(colorB.r, colorB.g, colorB.b)
colorB.h, colorB.s, colorB.v = self:GetColorHSV()
local colorC = {}
--check if the angle between the two H values is > 180
if abs(colorA.h-colorB.h) > 180 then
local angle = (360-abs(colorA.h-colorB.h))*percentage
if colorA.h < colorB.h then
colorC.h = floor(colorA.h-angle)
if colorC.h < 0 then
colorC.h = 360+colorC.h
end
else
colorC.h = floor(colorA.h+angle)
if colorC.h > 360 then
colorC.h = colorC.h-360
end
end
else
colorC.h = floor(colorA.h-(colorA.h-colorB.h)*percentage)
end
colorC.s = colorA.s-(colorA.s-colorB.s)*percentage
colorC.v = colorA.v-(colorA.v-colorB.v)*percentage
self:SetColorHSV(colorC.h, colorC.s, colorC.v)
colorC.r, colorC.g, colorC.b = self:GetColorRGB()
return colorC
end
--GetSmudgeColorRGB function call
local color = CS:GetSmudgeColorRGB({r=1,g=0,b=0}, {r=0,g=1,b=0}, 0.5)
GIThttps://github.com/zorker/rothui/tre....0/ColorSmudge