What I have been using are the following two functions. I believe they originated with Monte Goulding. (With a slight addition to allow for a single parameter input containing the rgb values.)
They have been VERY useful. There are times when HSV is critical.
(Of course neither is useful in getting the RGB--or HSV--values from the color names.)

Jim Hurley

function RGBtoHSV r, g, b
   if the paramcount is 1 then
      put item 3 of r into b
      put item 2 of r into g
      put item 1 of r into r
   end if
   local maxv, minv, diff, s, rc, gc, bc, h
   set the numberFormat to "0.###############"
   put r / 255 into r
   put g / 255 into g
   put b / 255 into b
   put max(r,g,b) into maxv
   put min(r,g,b) into minv
   put maxv - minv into diff
   if maxv <> 0 and diff <> 0 then
      put diff / maxv into s
      put (maxv - r) / diff into rc
      put (maxv - g) / diff into gc
      put (maxv - b) / diff into bc
      if r = maxv then put bc - gc into h
      else if g = maxv then put 2 + rc - bc into h
      else if b = maxv then put 4 + gc - rc into h
      multiply h by 60
      if h < 0 then
         add 360 to h
      end if
   else
      put 0 into s
      put 0 into h
   end if
   return round(h),round(s * 100),round(maxv * 100)
end RGBtoHSV

function HSVtoRGB h, s, v
     if the paramcount is 1 then
      put item 3 of h into v
      put item 2 of h into s
      put item 1 of h into h
   end if
  local rgb, i, f, p, q, t
  set the numberFormat to "0.###############"
  divide s by 100
  divide v by 100
  if s is 0 then put v,v,v into rgb
  else
    divide h by 60
    put trunc(h) into i
    put h - i into f
    put v * (1 - s) into p
    put v * (1 - s * f) into q
    put v * (1 - s * (1- f)) into t
    if i is 0 then put v,t,p into rgb
    if i is 1 then put q,v,p into rgb
    if i is 2 then put p,v,t into rgb
    if i is 3 then put p,q,v into rgb
    if i is 4 then put t,p,v into rgb
    if i is 5 then put v,p,q into rgb
  end if
return round(item 1 of rgb * 255), round(item 2 of rgb * 255), round(item 3 of rgb * 255)
end HSVtoRGB


_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to