From c27e5618655b4872b89cf041d4c13a386ebdfb4b Mon Sep 17 00:00:00 2001 From: Erik Osheim Date: Wed, 10 Jun 2009 17:55:33 -0400 Subject: [PATCH] fixed color initialization, other bugs --HG-- branch : pmacs2 --- color.py | 34 +++++++++++++++++++++++++++------- mode/colortest.py | 21 ++++++++++++++++++--- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/color.py b/color.py index 8253ceb..286b753 100644 --- a/color.py +++ b/color.py @@ -33,6 +33,11 @@ def color256(name, fallback, abbrev, r, g, b): abbrev2 = '%s%d%d%d' % (abbrev, r, g, b) if curses.COLORS == 256: value = 16 + r * 36 + g * 6 + b + if curses.can_change_color(): + try: + curses.init_color(value, r * 200, g * 200, b* 200) + except: + raise Exception("arghh: %d, %d, %d, %d", value, r * 200, g * 200, b * 200) else: value = fallback add_color(name2, value, abbrev2) @@ -52,6 +57,11 @@ def init(): add_color('black', curses.COLOR_BLACK, 'B') add_color('white', curses.COLOR_WHITE, 'w') + if default_color: + colors['default'] = -1 + ascii_map['d'] = 'default' + rev_ascii_map['default'] = 'd' + inited = True for i in range(0, 256): @@ -59,8 +69,20 @@ def init(): abbrev = 'f%02x' % i add_color(name, i, abbrev) + # GREY for i in range(0, 24): - color256('grey', curses.COLOR_WHITE, 'G', i, i, i) + name2 = 'grey%d' % i + abbrev2 = 'G%d' % i + if curses.COLORS == 256: + value = 232 + i + if curses.can_change_color(): + try: + curses.init_color(value, i * 41, i * 41, i * 41) + except: + raise Exception("arghh: %d, %d, %d, %d", value, i * 41, i * 41, i * 41) + else: + value = curses.COLOR_WHITE + add_color(name2, value, abbrev2) for i in range(1, 6): for j in range(0, i): @@ -75,11 +97,6 @@ def init(): color256('cyan', curses.COLOR_CYAN, 'c', j, i, i) color256('magenta', curses.COLOR_MAGENTA, 'm', i, j, i) - if default_color: - colors['default'] = -1 - ascii_map['d'] = 'default' - rev_ascii_map['default'] = 'd' - def build(fg, bg, *attr): v = curses.A_NORMAL | pairs(fg, bg) for x in attr: @@ -103,7 +120,10 @@ def pairs(fg, bg): assert index < curses.COLOR_PAIRS, "too many colors" assert type(fgi) == type(0), "illegal fgi: %r" % fgi assert type(bgi) == type(0), "illegal bgi: %r" % bgi - curses.init_pair(index, fgi, bgi) + try: + curses.init_pair(index, fgi, bgi) + except: + raise Exception('failed to init %d,%d,%d' % (index, fgi, bgi)) _pairs[key] = curses.color_pair(index) _colors.append(key) index = len(_colors) + 1 diff --git a/mode/colortest.py b/mode/colortest.py index ce7ded7..a2c22f7 100644 --- a/mode/colortest.py +++ b/mode/colortest.py @@ -11,8 +11,23 @@ class Colortest(Fundamental): name = 'Colortest' grammar = ColortestGrammar colors = {} - for i in range(0, 256): - c = '%02x' % i - colors['z' + c] = ('default', 'f' + c) + +def abc(name, r, g, b): + name2 = name + str(r) + str(g) + str(b) + ColortestGrammar.rules.append(PatternRule('z-' + name2, name2)) + Colortest.colors['z-' + name2] = (name2, 'default') + +for i in range(1, 6): + for j in range(0, i): + for k in range(0, i): + abc('red', i, j, k) + abc('green', j, i, k) + abc('blue', j, k, i) + +for i in range(1, 6): + for j in range(0, i): + abc('yellow', i, i, j) + abc('cyan', j, i, i) + abc('magenta', i, j, i) install = Colortest.install