<s> """<STR_LIT>""" <EOL> __all__ = [ "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" , <EOL> "<STR_LIT>" , "<STR_LIT>" ] <EOL> ONE_THIRD = <NUM_LIT:1.0> / <NUM_LIT> <EOL> ONE_SIXTH = <NUM_LIT:1.0> / <NUM_LIT> <EOL> TWO_THIRD = <NUM_LIT> / <NUM_LIT> <EOL> def rgb_to_yiq ( r , g , b ) : <EOL> y = <NUM_LIT> * r + <NUM_LIT> * g + <NUM_LIT> * b <EOL> i = <NUM_LIT> * r - <NUM_LIT> * g - <NUM_LIT> * b <EOL> q = <NUM_LIT> * r - <NUM_LIT> * g + <NUM_LIT> * b <EOL> return ( y , i , q ) <EOL> def yiq_to_rgb ( y , i , q ) : <EOL> r = y + <NUM_LIT> * i + <NUM_LIT> * q <EOL> g = y - <NUM_LIT> * i - <NUM_LIT> * q <EOL> b = y - <NUM_LIT> * i + <NUM_LIT> * q <EOL> if r < <NUM_LIT:0.0> : r = <NUM_LIT:0.0> <EOL> if g < <NUM_LIT:0.0> : g = <NUM_LIT:0.0> <EOL> if b < <NUM_LIT:0.0> : b = <NUM_LIT:0.0> <EOL> if r > <NUM_LIT:1.0> : r = <NUM_LIT:1.0> <EOL> if g > <NUM_LIT:1.0> : g = <NUM_LIT:1.0> <EOL> if b > <NUM_LIT:1.0> : b = <NUM_LIT:1.0> <EOL> return ( r , g , b ) <EOL> def rgb_to_hls ( r , g , b ) : <EOL> maxc = max ( r , g , b ) <EOL> minc = min ( r , g , b ) <EOL> l = ( minc + maxc ) / <NUM_LIT> <EOL> if minc == maxc : return <NUM_LIT:0.0> , l , <NUM_LIT:0.0> <EOL> if l <= <NUM_LIT:0.5> : s = ( maxc - minc ) / ( maxc + minc ) <EOL> else : s = ( maxc - minc ) / ( <NUM_LIT> - maxc - minc ) <EOL> rc = ( maxc - r ) / ( maxc - minc ) <EOL> gc = ( maxc - g ) / ( maxc - minc ) <EOL> bc = ( maxc - b ) / ( maxc - minc ) <EOL> if r == maxc : h = bc - gc <EOL> elif g == maxc : h = <NUM_LIT> + rc - bc <EOL> else : h = <NUM_LIT> + gc - rc <EOL> h = ( h / <NUM_LIT> ) % <NUM_LIT:1.0> <EOL> return h , l , s <EOL> def hls_to_rgb ( h , l , s ) : <EOL> if s == <NUM_LIT:0.0> : return l , l , l <EOL> if l <= <NUM_LIT:0.5> : m2 = l * ( <NUM_LIT:1.0> + s ) <EOL> else : m2 = l + s - ( l * s ) <EOL> m1 = <NUM_LIT> * l - m2 <EOL> return ( _v ( m1 , m2 , h + ONE_THIRD ) , _v ( m1 , m2 , h ) , _v ( m1 , m2 , h - ONE_THIRD ) ) <EOL> def _v ( m1 , m2 , hue ) : <EOL> hue = hue % <NUM_LIT:1.0> <EOL> if hue < ONE_SIXTH : return m1 + ( m2 - m1 ) * hue * <NUM_LIT> <EOL> if hue < <NUM_LIT:0.5> : return m2 <EOL> if hue < TWO_THIRD : return m1 + ( m2 - m1 ) * ( TWO_THIRD - hue ) * <NUM_LIT> <EOL> return m1 <EOL> def rgb_to_hsv ( r , g , b ) : <EOL> maxc = max ( r , g , b ) <EOL> minc = min ( r , g , b ) <EOL> v = maxc <EOL> if minc == maxc : return <NUM_LIT:0.0> , <NUM_LIT:0.0> , v <EOL> s = ( maxc - minc ) / maxc <EOL> rc = ( maxc - r ) / ( maxc - minc ) <EOL> gc = ( maxc - g ) / ( maxc - minc ) <EOL> bc = ( maxc - b ) / ( maxc - minc ) <EOL> if r == maxc : h = bc - gc <EOL> elif g == maxc : h = <NUM_LIT> + rc - bc <EOL> else : h = <NUM_LIT> + gc - rc <EOL> h = ( h / <NUM_LIT> ) % <NUM_LIT:1.0> <EOL> return h , s , v <EOL> def hsv_to_rgb ( h , s , v ) : <EOL> if s == <NUM_LIT:0.0> : return v , v , v <EOL> i = int ( h * <NUM_LIT> ) <EOL> f = ( h * <NUM_LIT> ) - i <EOL> p = v * ( <NUM_LIT:1.0> - s ) <EOL> q = v * ( <NUM_LIT:1.0> - s * f ) <EOL> t = v * ( <NUM_LIT:1.0> - s * ( <NUM_LIT:1.0> - f ) ) <EOL> i = i % <NUM_LIT:6> <EOL> if i == <NUM_LIT:0> : return v , t , p <EOL> if i == <NUM_LIT:1> : return q , v , p <EOL> if i == <NUM_LIT:2> : return p , v , t <EOL> if i == <NUM_LIT:3> : return p , q , v <EOL> if i == <NUM_LIT:4> : return t , p , v <EOL> if i == <NUM_LIT:5> : return v , p , q </s>
