Skip to content

Filters

Description

Filter plugins allow you to apply a filter to a given color, altering its appearance.

Plugin Class

class Filter(Plugin, metaclass=ABCMeta):
    """Filter plugin."""

    NAME = ""
    DEFAULT_SPACE = 'srgb-linear'
    ALLOWED_SPACES = ('srgb-linear', 'srgb')

    @abstractmethod
    def filter(self, color: 'Color', amount: float | None, **kwargs: Any) -> None:
        """Filter the given color."""

Once registered, the plugin can then be used via filter by passing its NAME via the method parameter along with the amount specifying to what magnitude the filter is applied. Any additional key word arguments also be specified to allow for overriding default behaviors. The current color will then be altered by the filter.

DEFAULT_SPACE describes the default color space under which the filter is applied, while ALLOWED_SPACES defines optional, allowed spaces that can be specified. Color space conversion is handled before passing the color to the plugin.

color.filter(NAME, amount, **kwargs)

If you'd like the user to be able to set specific defaults, you can define an __init__ method and manage defaults accordingly. Defaults can be passed in when instantiating a new plugin.

Color.register(Plugin(**kwargs))