def rgb256(r: int, g: int, b: int) -> str: """ Convert an RGB colour to 256 colour ANSI graphics. Finds the closest color within the 256 color palette to a given RGB value. """ grey = False poss = True step = 2.5 while poss: # As long as the colour could be grey scale if r < step or g < step or b < step: grey = r < step and g < step and b < step poss = False step += 42.5 if grey: colour = 232 + int(float(sum([r, g, b]) / 33.0)) else: colour = sum([16] + [ int(6 * float(val) / 256) * mod for val, mod in ((r, 36), (g, 6), (b, 1)) ]) return sequence('m', fields=3)(38, 5, colour)
def rgb_reduce(r, g, b, mode=8): ''' Convert an RGB colour to 8 or 16 colour ANSI graphics. ''' colours = ANSI_COLOURS[:mode] matches = [(rgb_distance(c, map(int, [r, g, b])), i) for i, c in enumerate(colours)] matches.sort() return sequence('m')(str(30 + matches[0][1]))
def rgb_reduce(r: int, g: int, b: int, mode: int = 8) -> str: """ Convert an RGB colour to 8 or 16 colour ANSI graphics. Finds the closest color within the 8 or 16 color palette to a given RGB value. """ assert mode in (8, 16), 'Mode has to be 8 or 16, got %r instead.' % mode colours = ANSI_COLOURS[:mode] matches = [(rgb_distance(c, (r, g, b)), i) for i, c in enumerate(colours)] matches.sort() return sequence('m')(str(30 + matches[0][1]))
def rgb256(r, g, b): ''' Convert an RGB colour to 256 colour ANSI graphics. ''' grey = False poss = True step = 2.5 while poss: # As long as the colour could be grey scale if r < step or g < step or b < step: grey = r < step and g < step and b < step poss = False step += 42.5 if grey: colour = 232 + int(float(sum([r, g, b]) / 33.0)) else: colour = sum([16] + [int (6 * float(val) / 256) * mod for val, mod in ((r, 36), (g, 6), (b, 1))]) return sequence('m', fields=3)(38, 5, colour)
def rgb256(r, g, b): ''' Convert an RGB colour to 256 colour ANSI graphics. ''' grey = False poss = True step = 2.5 while poss: # As long as the colour could be grey scale if r < step or g < step or b < step: grey = r < step and g < step and b < step poss = False step += 42.5 if grey: colour = 232 + int(float(sum([r, g, b]) / 33.0)) else: colour = sum([16] + [ int(6 * float(val) / 256) * mod for val, mod in ((r, 36), (g, 6), (b, 1)) ]) return sequence('m', fields=3)(38, 5, colour)
#pylint: disable=C0103 from ansi.sequence import sequence # Cursor movement up = sequence('A') down = sequence('B') forward = sequence('C') back = sequence('D') next_line = sequence('E') prev_line = sequence('F') goto_x = sequence('H') goto = sequence('G', 2) erase = sequence('J') erase_data = erase erase_line = sequence('K') scroll_up = sequence('S') scroll_down = sequence('T') save_cursor = sequence('s') load_cursor = sequence('u')
def __init__(self, *values: Union[str, "Graphic"]) -> None: self.values = values self.sequence = sequence('m', fields=-1)(*values)
def colour256(colour): """Generate a 256 colour escape. This method takes a 256 colour code rather than taking 'true colour' and estimating it. """ seq = sequence('m', fields=3)(38, 5, colour) return f'\001{seq}\002'
def __init__(self, *values): self.values = values self.sequence = sequence('m', fields=-1)(*values)
def __init__(self, *values): self.values = values self.sequence = sequence("m", fields=-1)(*values)