home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_316 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  3.2 KB  |  134 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  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.     if l <= 0.5:
  54.         s = (maxc - minc) / (maxc + minc)
  55.     else:
  56.         s = (maxc - minc) / (2 - maxc - minc)
  57.     rc = (maxc - r) / (maxc - minc)
  58.     gc = (maxc - g) / (maxc - minc)
  59.     bc = (maxc - b) / (maxc - minc)
  60.     if r == maxc:
  61.         h = bc - gc
  62.     elif g == maxc:
  63.         h = 2 + rc - bc
  64.     else:
  65.         h = 4 + gc - rc
  66.     h = h / 6 % 1
  67.     return (h, l, s)
  68.  
  69.  
  70. def hls_to_rgb(h, l, s):
  71.     if s == 0:
  72.         return (l, l, l)
  73.     if l <= 0.5:
  74.         m2 = l * (1 + s)
  75.     else:
  76.         m2 = l + s - l * s
  77.     m1 = 2 * l - m2
  78.     return (_v(m1, m2, h + ONE_THIRD), _v(m1, m2, h), _v(m1, m2, h - ONE_THIRD))
  79.  
  80.  
  81. def _v(m1, m2, hue):
  82.     hue = hue % 1
  83.     if hue < ONE_SIXTH:
  84.         return m1 + (m2 - m1) * hue * 6
  85.     if hue < 0.5:
  86.         return m2
  87.     if hue < TWO_THIRD:
  88.         return m1 + (m2 - m1) * (TWO_THIRD - hue) * 6
  89.     return m1
  90.  
  91.  
  92. def rgb_to_hsv(r, g, b):
  93.     maxc = max(r, g, b)
  94.     minc = min(r, g, b)
  95.     v = maxc
  96.     if minc == maxc:
  97.         return (0, 0, v)
  98.     s = (maxc - minc) / maxc
  99.     rc = (maxc - r) / (maxc - minc)
  100.     gc = (maxc - g) / (maxc - minc)
  101.     bc = (maxc - b) / (maxc - minc)
  102.     if r == maxc:
  103.         h = bc - gc
  104.     elif g == maxc:
  105.         h = 2 + rc - bc
  106.     else:
  107.         h = 4 + gc - rc
  108.     h = h / 6 % 1
  109.     return (h, s, v)
  110.  
  111.  
  112. def hsv_to_rgb(h, s, v):
  113.     if s == 0:
  114.         return (v, v, v)
  115.     i = int(h * 6)
  116.     f = h * 6 - i
  117.     p = v * (1 - s)
  118.     q = v * (1 - s * f)
  119.     t = v * (1 - s * (1 - f))
  120.     i = i % 6
  121.     if i == 0:
  122.         return (v, t, p)
  123.     if i == 1:
  124.         return (q, v, p)
  125.     if i == 2:
  126.         return (p, v, t)
  127.     if i == 3:
  128.         return (p, q, v)
  129.     if i == 4:
  130.         return (t, p, v)
  131.     if i == 5:
  132.         return (v, p, q)
  133.  
  134.