home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 June / maximum-cd-2009-06.iso / DiscContents / digsby_setup.exe / lib / colorsys.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-02-26  |  3.2 KB  |  146 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __all__ = [
  5.     'rgb_to_yiq',
  6.     'yiq_to_rgb',
  7.     'rgb_to_hls',
  8.     'hls_to_rgb',
  9.     'rgb_to_hsv',
  10.     'hsv_to_rgb']
  11. ONE_THIRD = 1 / 3
  12. ONE_SIXTH = 1 / 6
  13. TWO_THIRD = 2 / 3
  14.  
  15. def rgb_to_yiq(r, g, b):
  16.     y = 0.3 * r + 0.59 * g + 0.11 * b
  17.     i = 0.6 * r - 0.28 * g - 0.32 * b
  18.     q = (0.21 * r - 0.52 * g) + 0.31 * b
  19.     return (y, i, q)
  20.  
  21.  
  22. def yiq_to_rgb(y, i, q):
  23.     r = y + 0.948262 * i + 0.624013 * q
  24.     g = y - 0.276066 * i - 0.63981 * q
  25.     b = (y - 1.10545 * i) + 1.72986 * q
  26.     if r < 0:
  27.         r = 0
  28.     
  29.     if g < 0:
  30.         g = 0
  31.     
  32.     if b < 0:
  33.         b = 0
  34.     
  35.     if r > 1:
  36.         r = 1
  37.     
  38.     if g > 1:
  39.         g = 1
  40.     
  41.     if b > 1:
  42.         b = 1
  43.     
  44.     return (r, g, b)
  45.  
  46.  
  47. def rgb_to_hls(r, g, b):
  48.     maxc = max(r, g, b)
  49.     minc = min(r, g, b)
  50.     l = (minc + maxc) / 2
  51.     if minc == maxc:
  52.         return (0, l, 0)
  53.     
  54.     if l <= 0.5:
  55.         s = (maxc - minc) / (maxc + minc)
  56.     else:
  57.         s = (maxc - minc) / (2 - maxc - minc)
  58.     rc = (maxc - r) / (maxc - minc)
  59.     gc = (maxc - g) / (maxc - minc)
  60.     bc = (maxc - b) / (maxc - minc)
  61.     if r == maxc:
  62.         h = bc - gc
  63.     elif g == maxc:
  64.         h = 2 + rc - bc
  65.     else:
  66.         h = 4 + gc - rc
  67.     h = h / 6 % 1
  68.     return (h, l, s)
  69.  
  70.  
  71. def hls_to_rgb(h, l, s):
  72.     if s == 0:
  73.         return (l, l, l)
  74.     
  75.     if l <= 0.5:
  76.         m2 = l * (1 + s)
  77.     else:
  78.         m2 = l + s - l * s
  79.     m1 = 2 * l - m2
  80.     return (_v(m1, m2, h + ONE_THIRD), _v(m1, m2, h), _v(m1, m2, h - ONE_THIRD))
  81.  
  82.  
  83. def _v(m1, m2, hue):
  84.     hue = hue % 1
  85.     if hue < ONE_SIXTH:
  86.         return m1 + (m2 - m1) * hue * 6
  87.     
  88.     if hue < 0.5:
  89.         return m2
  90.     
  91.     if hue < TWO_THIRD:
  92.         return m1 + (m2 - m1) * (TWO_THIRD - hue) * 6
  93.     
  94.     return m1
  95.  
  96.  
  97. def rgb_to_hsv(r, g, b):
  98.     maxc = max(r, g, b)
  99.     minc = min(r, g, b)
  100.     v = maxc
  101.     if minc == maxc:
  102.         return (0, 0, v)
  103.     
  104.     s = (maxc - minc) / maxc
  105.     rc = (maxc - r) / (maxc - minc)
  106.     gc = (maxc - g) / (maxc - minc)
  107.     bc = (maxc - b) / (maxc - minc)
  108.     if r == maxc:
  109.         h = bc - gc
  110.     elif g == maxc:
  111.         h = 2 + rc - bc
  112.     else:
  113.         h = 4 + gc - rc
  114.     h = h / 6 % 1
  115.     return (h, s, v)
  116.  
  117.  
  118. def hsv_to_rgb(h, s, v):
  119.     if s == 0:
  120.         return (v, v, v)
  121.     
  122.     i = int(h * 6)
  123.     f = h * 6 - i
  124.     p = v * (1 - s)
  125.     q = v * (1 - s * f)
  126.     t = v * (1 - s * (1 - f))
  127.     if i % 6 == 0:
  128.         return (v, t, p)
  129.     
  130.     if i == 1:
  131.         return (q, v, p)
  132.     
  133.     if i == 2:
  134.         return (p, v, t)
  135.     
  136.     if i == 3:
  137.         return (p, q, v)
  138.     
  139.     if i == 4:
  140.         return (t, p, v)
  141.     
  142.     if i == 5:
  143.         return (v, p, q)
  144.     
  145.  
  146.