Mercurial > cpython-lru_cache-weakref
annotate Lib/colorsys.py @ 79675:c0a2294de787 2.7
Issue #16199: Backport 2to3 typo fix from 3.2.
| author | Chris Jerdonek <chris.jerdonek@gmail.com> |
|---|---|
| date | Thu, 11 Oct 2012 16:15:46 -0700 |
| parents | 61787533395c |
| children | 80e9cb6163b4 |
| rev | line source |
|---|---|
|
10304
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
1 """Conversion functions between RGB and other color systems. |
|
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
2 |
|
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
3 This modules provides two functions for each color system ABC: |
|
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
4 |
|
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
5 rgb_to_abc(r, g, b) --> a, b, c |
|
10305
5dbcddbded00
Oops, one more "x, y, z" to convert...
Fred Drake <fdrake@acm.org>
parents:
10304
diff
changeset
|
6 abc_to_rgb(a, b, c) --> r, g, b |
|
10304
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
7 |
|
35857
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
8 All inputs and outputs are triples of floats in the range [0.0...1.0] |
|
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
9 (with the exception of I and Q, which covers a slightly larger range). |
|
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
10 Inputs outside the valid range may cause exceptions or invalid outputs. |
|
10304
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
11 |
|
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
12 Supported color systems: |
|
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
13 RGB: Red, Green, Blue components |
|
35857
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
14 YIQ: Luminance, Chrominance (used by composite video signals) |
|
11759
020526e72eac
Fix the question marks next to the expansions of some of the
Fred Drake <fdrake@acm.org>
parents:
10305
diff
changeset
|
15 HLS: Hue, Luminance, Saturation |
|
020526e72eac
Fix the question marks next to the expansions of some of the
Fred Drake <fdrake@acm.org>
parents:
10305
diff
changeset
|
16 HSV: Hue, Saturation, Value |
|
10304
b648f9e8b3ed
Adjusted comment at the top to be less confusing, following Fredrik
Fred Drake <fdrake@acm.org>
parents:
1035
diff
changeset
|
17 """ |
|
35857
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
18 |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 # References: |
|
35857
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
20 # http://en.wikipedia.org/wiki/YIQ |
|
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
21 # http://en.wikipedia.org/wiki/HLS_color_space |
|
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
22 # http://en.wikipedia.org/wiki/HSV_color_space |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 |
|
16070
b5345e99596b
added __all__ lists to a number of Python modules
Skip Montanaro <skip@pobox.com>
parents:
11759
diff
changeset
|
24 __all__ = ["rgb_to_yiq","yiq_to_rgb","rgb_to_hls","hls_to_rgb", |
|
b5345e99596b
added __all__ lists to a number of Python modules
Skip Montanaro <skip@pobox.com>
parents:
11759
diff
changeset
|
25 "rgb_to_hsv","hsv_to_rgb"] |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 # Some floating point constants |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 ONE_THIRD = 1.0/3.0 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 ONE_SIXTH = 1.0/6.0 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 TWO_THIRD = 2.0/3.0 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 # YIQ: used by composite video signals (linear combinations of RGB) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 # Y: perceived grey level (0.0 == black, 1.0 == white) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 # I, Q: color components |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 def rgb_to_yiq(r, g, b): |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 y = 0.30*r + 0.59*g + 0.11*b |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 i = 0.60*r - 0.28*g - 0.32*b |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 q = 0.21*r - 0.52*g + 0.31*b |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 return (y, i, q) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 def yiq_to_rgb(y, i, q): |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 r = y + 0.948262*i + 0.624013*q |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 g = y - 0.276066*i - 0.639810*q |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 b = y - 1.105450*i + 1.729860*q |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
47 if r < 0.0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
48 r = 0.0 |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
49 if g < 0.0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
50 g = 0.0 |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
51 if b < 0.0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
52 b = 0.0 |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
53 if r > 1.0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
54 r = 1.0 |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
55 if g > 1.0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
56 g = 1.0 |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
57 if b > 1.0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
58 b = 1.0 |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 return (r, g, b) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 |
|
35857
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
62 # HLS: Hue, Luminance, Saturation |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 # H: position in the spectrum |
|
35857
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
64 # L: color lightness |
|
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
65 # S: color saturation |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
67 def rgb_to_hls(r, g, b): |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 maxc = max(r, g, b) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
69 minc = min(r, g, b) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 # XXX Can optimize (maxc+minc) and (maxc-minc) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 l = (minc+maxc)/2.0 |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
72 if minc == maxc: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
73 return 0.0, l, 0.0 |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
74 if l <= 0.5: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
75 s = (maxc-minc) / (maxc+minc) |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
76 else: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
77 s = (maxc-minc) / (2.0-maxc-minc) |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 rc = (maxc-r) / (maxc-minc) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 gc = (maxc-g) / (maxc-minc) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
80 bc = (maxc-b) / (maxc-minc) |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
81 if r == maxc: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
82 h = bc-gc |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
83 elif g == maxc: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
84 h = 2.0+rc-bc |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
85 else: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
86 h = 4.0+gc-rc |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 h = (h/6.0) % 1.0 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 return h, l, s |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 def hls_to_rgb(h, l, s): |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
91 if s == 0.0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
92 return l, l, l |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
93 if l <= 0.5: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
94 m2 = l * (1.0+s) |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
95 else: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
96 m2 = l+s-(l*s) |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
97 m1 = 2.0*l - m2 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
98 return (_v(m1, m2, h+ONE_THIRD), _v(m1, m2, h), _v(m1, m2, h-ONE_THIRD)) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
99 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
100 def _v(m1, m2, hue): |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
101 hue = hue % 1.0 |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
102 if hue < ONE_SIXTH: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
103 return m1 + (m2-m1)*hue*6.0 |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
104 if hue < 0.5: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
105 return m2 |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
106 if hue < TWO_THIRD: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
107 return m1 + (m2-m1)*(TWO_THIRD-hue)*6.0 |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
108 return m1 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
109 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
110 |
|
35857
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
111 # HSV: Hue, Saturation, Value |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 # H: position in the spectrum |
|
35857
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
113 # S: color saturation ("purity") |
|
87e2210e07f4
r879@spiff: Fredrik | 2005-11-12 14:38:03 +0100
Fredrik Lundh <fredrik@pythonware.com>
parents:
16070
diff
changeset
|
114 # V: color brightness |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
115 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
116 def rgb_to_hsv(r, g, b): |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
117 maxc = max(r, g, b) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
118 minc = min(r, g, b) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
119 v = maxc |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
120 if minc == maxc: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
121 return 0.0, 0.0, v |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
122 s = (maxc-minc) / maxc |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 rc = (maxc-r) / (maxc-minc) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
124 gc = (maxc-g) / (maxc-minc) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
125 bc = (maxc-b) / (maxc-minc) |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
126 if r == maxc: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
127 h = bc-gc |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
128 elif g == maxc: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
129 h = 2.0+rc-bc |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
130 else: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
131 h = 4.0+gc-rc |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
132 h = (h/6.0) % 1.0 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
133 return h, s, v |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
134 |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
135 def hsv_to_rgb(h, s, v): |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
136 if s == 0.0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
137 return v, v, v |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
138 i = int(h*6.0) # XXX assume int() truncates! |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
139 f = (h*6.0) - i |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
140 p = v*(1.0 - s) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
141 q = v*(1.0 - s*f) |
|
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
142 t = v*(1.0 - s*(1.0-f)) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
35857
diff
changeset
|
143 i = i%6 |
|
51194
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
144 if i == 0: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
145 return v, t, p |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
146 if i == 1: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
147 return q, v, p |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
148 if i == 2: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
149 return p, v, t |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
150 if i == 3: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
151 return p, q, v |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
152 if i == 4: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
153 return t, p, v |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
154 if i == 5: |
|
61787533395c
Merged revisions 69118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
40450
diff
changeset
|
155 return v, p, q |
|
1035
5fb3f73a627f
New module 'colorsys' implements conversions between different color systems.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 # Cannot get here |
