fixed color initialization, other bugs
--HG-- branch : pmacs2
This commit is contained in:
parent
c56299b992
commit
c27e561865
34
color.py
34
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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue