WoW:USERAPI ColorGradient: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 4: Line 4:
Converts a percent value into a gradient from 2 or more RGB percent values (0.0-1.0).  If more than 2 colors are passed, the gradient will be between the two colors which perc lies in an evenly divided range.
Converts a percent value into a gradient from 2 or more RGB percent values (0.0-1.0).  If more than 2 colors are passed, the gradient will be between the two colors which perc lies in an evenly divided range.


(Note that if you will always be generating a gradient between the same number of colors, you will see *significantly* greater performance if you customize this function to take a fixed number of arguments.)
<pre>
  local function ColorGradient(perc, ...)
  local function ColorGradient(perc, ...)
  if perc >= 1 then
  if perc >= 1 then
Line 20: Line 22:
  return r1 + (r2-r1)*relperc, g1 + (g2-g1)*relperc, b1 + (b2-b1)*relperc
  return r1 + (r2-r1)*relperc, g1 + (g2-g1)*relperc, b1 + (b2-b1)*relperc
  end
  end
</pre>


== Example ==
== Example ==
For this example we'll use 3 colors: red, yellow and green.  For a percent value of 0.75 we'd expect to get back a color that's halfway between yellow and green.  0.5 would yield pure yellow, 0.25 would yield an orange.
For this example we'll use 3 colors: red, yellow and green.  For a percent value of 0.75 we'd expect to get back a color that's halfway between yellow and green.  0.5 would yield pure yellow, 0.25 would yield an orange.
 
<pre>
  local r,g,b = ColorGradient(0.75, 1,0,0, 1,1,0, 0,1,0)
  local r,g,b = ColorGradient(0.75, 1,0,0, 1,1,0, 0,1,0)
  -- r = 0.5, g = 1.0, b = 0.0
  -- r = 0.5, g = 1.0, b = 0.0
</pre>