| from typing import NamedTuple, Tuple |
| |
| |
| class ColorTriplet(NamedTuple): |
| """The red, green, and blue components of a color.""" |
| |
| red: int |
| """Red component in 0 to 255 range.""" |
| green: int |
| """Green component in 0 to 255 range.""" |
| blue: int |
| """Blue component in 0 to 255 range.""" |
| |
| @property |
| def hex(self) -> str: |
| """get the color triplet in CSS style.""" |
| red, green, blue = self |
| return f"#{red:02x}{green:02x}{blue:02x}" |
| |
| @property |
| def rgb(self) -> str: |
| """The color in RGB format. |
| |
| Returns: |
| str: An rgb color, e.g. ``"rgb(100,23,255)"``. |
| """ |
| red, green, blue = self |
| return f"rgb({red},{green},{blue})" |
| |
| @property |
| def normalized(self) -> Tuple[float, float, float]: |
| """Convert components into floats between 0 and 1. |
| |
| Returns: |
| Tuple[float, float, float]: A tuple of three normalized colour components. |
| """ |
| red, green, blue = self |
| return red / 255.0, green / 255.0, blue / 255.0 |