def hex_to_rgb(hex_string: Color) -> Tuple[int, int, int]: hex_string = hex_string.lstrip('#') assert len(hex_string) == 6 r = int(hex_string[0:2], 16) g = int(hex_string[2:4], 16) b = int(hex_string[4:6], 16) return r, g, b
def _rgba(color: Color, alpha: int) -> Color: """ Args: color: may be an RGB or RGBA color """ assert color.startswith('#') and len(color) in (7, 9), f'invalid RGB color: "{color}"' assert 0 <= alpha < 255, f'alpha out of range: {alpha}' return f'{color[:7]}{alpha:02x}'
def hex_to_rgb(hex_string: Color) -> RGB: """ Returns hex string color as (r, g, b) tuple. """ hex_string = hex_string.lstrip('#') assert len(hex_string) == 6 r = int(hex_string[0:2], 16) g = int(hex_string[2:4], 16) b = int(hex_string[4:6], 16) return r, g, b
def set_color_alpha(color: Color, alpha: int) -> Color: """ Args: color: may be an RGB or RGBA hex color string alpha: the new alpha value (0-255) """ assert color.startswith('#') and len(color) in ( 7, 9), f'invalid RGB color: "{color}"' assert 0 <= alpha < 255, f'alpha out of range: {alpha}' return f'{color[:7]}{alpha:02x}'
def set_color_alpha(color: Color, alpha: int) -> Color: """ Returns `color` including the new `alpha` channel in hex format: "#RRGGBBAA". Args: color: may be an RGB or RGBA hex color string alpha: the new alpha value (0-255) """ assert color.startswith('#') and len(color) in ( 7, 9), f'invalid RGB color: "{color}"' assert 0 <= alpha < 256, f'alpha out of range: {alpha}' return f'{color[:7]}{alpha:02x}'