Source code for svgen.color.alpha
"""
svgen - A module for working with alpha channels for colors.
"""
# built-in
from math import isclose
from typing import Union
# internal
from svgen.color.numbers import css_number_to_ratio
Alphalike = Union[float, int, str]
[docs]
class Alpha(float):
"""A class describing the transparency of a color."""
def __eq__(self, other: object) -> bool:
"""Determine if two alpha values are equal."""
if not isinstance(other, Alpha):
return NotImplemented
return isclose(float(self), float(other), rel_tol=1e-4, abs_tol=0.005)
def __new__(cls, val: Alphalike) -> "Alpha":
"""From the provided value, get a ratio between 0.0 and 1.0."""
return super().__new__(cls, css_number_to_ratio(val))
@property
def hex_str(self) -> str:
"""Convert this alpha value to a hex string."""
return f"{int(float(self) * 255.0):X}"
# Provide a default that has no transparency.
DEFAULT = Alpha(1.0)