Source code for pytamaro.color

"""
`Color` type, functions to produce colors, and constants for important colors.
"""

from dataclasses import dataclass
from functools import cached_property

from skia import Color4f

from pytamaro.localization import translate


[docs]@dataclass(frozen=True) class Color: """ Represents a color. A color also has a degree of opacity, from completely transparent (like the color `transparent`) to completely opaque (like the color `red`). """ red: int # [0-255] green: int # [0-255] blue: int # [0-255] alpha: float # [0-1] @cached_property def skia_color(self) -> Color4f: """ Returns the current color as a Skia color. :meta private: :returns: a Skia color """ return Color4f(self.red / 255, self.green / 255, self.blue / 255, self.alpha) def __repr__(self) -> str: from pytamaro.color_names import \ _known_colors # pylint: disable=cyclic-import,import-outside-toplevel maybe_known_color = _known_colors.get(self) if maybe_known_color: return translate(maybe_known_color) alpha_repr = "" if self.alpha == 1 else f", {self.alpha}" return f"{translate('rgb_color')}({self.red}, {self.green}, {self.blue}{alpha_repr})"