summaryrefslogtreecommitdiff
path: root/src/caelestia/utils/colour.py
blob: a86c205bbec3d8c9a13738d09fa5b712a5b2d043 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Colour:
    _rgb_vals: tuple[int, ...]
    _hex_vals: tuple[str, ...]

    def __init__(self, hex: str):
        hex = hex.ljust(8, "f")
        self._hex_vals = tuple(hex[i : i + 2] for i in range(0, 7, 2))
        self._rgb_vals = tuple(int(h, 16) for h in self._hex_vals)

    @property
    def hex(self) -> str:
        return "".join(self._hex_vals[:-1])

    @property
    def hexalpha(self) -> str:
        return "".join(self._hex_vals)

    @property
    def rgb(self) -> str:
        return f"rgb({','.join(map(str, self._rgb_vals[:-1]))})"

    @property
    def rgbalpha(self) -> str:
        return f"rgba({','.join(map(str, self._rgb_vals))})"


def get_dynamic_colours(colours: dict[str, str]) -> dict[str, Colour]:
    return {name: Colour(code) for name, code in colours.items()}