def __getitem__(self, pair):
fg, bg = pair
assert isinstance(fg, int) and -1 <= fg < 256
assert isinstance(bg, int) and -1 <= bg < 256
if pair in self.pair_numbers:
# If pair is stored, retrieve it.
return curses.color_pair(self.pair_numbers[pair])
elif self.counter < MAX_PAIRS:
# If we still haven't filled our queue, add the new pair.
curses.init_pair(self.counter, fg, bg)
self.pair_numbers[pair] = self.counter
self.counter += 1
return curses.color_pair(self.counter - 1)
else:
# If the queue is full, pop the oldest one out
# and use its pair number to create the new one.
_, oldest = self.pair_numbers.popitem(last=False)
curses.init_pair(oldest, fg, bg)
self.pair_numbers[pair] = oldest
return curses.color_pair(oldest)
评论列表
文章目录