RaZgRiZ

rgbtohsv

Aug 8th, 2014
433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.71 KB | None | 0 0
  1. // Returns given RGB color as an HSV color in 23bit INT format
  2. // usage: /rgbtohsv R G B [ action ]
  3. rgbtohsv = [
  4.     local r g b mn d h s v
  5.     r = (divf $arg1 0xFF)
  6.     g = (divf $arg2 0xFF)
  7.     b = (divf $arg3 0xFF)
  8.     v = (maxf $r $g $b)
  9.     mn = (minf $r $g $b)
  10.    
  11.     if (=f $mn $v) [
  12.         d = 0
  13.         h = 0
  14.         s = 0
  15.     ] [
  16.         d = (-f $v $mn)
  17.         s = (divf $d $v)
  18.         h = (casef $v $r [
  19.             floor (*f 60 (modf (divf (-f $g $b) $d) 6))
  20.         ] $g [
  21.             *f 60 (+f (divf (-f $b $r) $d) 2)
  22.         ] $b [
  23.             *f 60 (+f (divf (-f $r $g) $d) 4)
  24.         ])
  25.     ]
  26.     if (>= $numargs 4) [ doargs $arg4 ] [
  27.         | $v (<< $s 7) (<< $h 16)
  28.     ]
  29. ]
Advertisement
Add Comment
Please, Sign In to add comment