Tobias Pape avatar Tobias Pape committed 3c8a727

Tiny color ramp refactoring.

I promise, it is the last

Comments (0)

Files changed (1)

rpython/tool/ansiramp.py

 
 def hsv2ansi(h, s, v):
     # h: 0..1, s/v: 0..1
-    if s < 0.001:
+    if s < 0.1:
         return int(v * 23) + 232
     r, g, b = map(lambda x: int(x * 5), colorsys.hsv_to_rgb(h, s, v))
     return 16 + (r * 36) + (g * 6) + b
 
 def ramp_idx(i, num):
-    h = 0.57 + float(i)/num
-    s = float(num - i) / i if i > (num * 0.85) else 1
+    assert num > 0
+    i0 = float(i) / num
+    h = 0.57 + i0
+    s = 1 - pow(i0,3)
     v = 1
     return hsv2ansi(h, s, v)
 
     return [ramp_idx(i, num) for i in range(num)]
 
 ansi_ramp80 = ansi_ramp(80)
+
+if __name__ == '__main__':
+    import sys
+    from py.io import ansi_print
+    colors = int(sys.argv[1]) if len(sys.argv) > 1 else 80
+    for col in range(colors):
+        ansi_print('#', "38;5;%d" % ramp_idx(col, colors), newline=False, flush=True)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.