Source code for svgen.color.theme.visualize

"""
A module for visualizing color themes.
"""

# built-in
from typing import Iterator, Union

# internal
from svgen.cartesian.rectangle import Rectangle
from svgen.cartesian.rectangle.grid import RectangleGrid
from svgen.color.theme import ColorTheme
from svgen.color.theme.manager import THEMES, ColorThemeManager
from svgen.element.rect import Rect


[docs] def visualize_theme( theme: Union[ColorTheme, str], rect: Rectangle, columns: bool = True ) -> Iterator[Rect]: """ Create filled rectangle elements for this theme inside another rectangle. """ # Allow a theme to be specified as a string name. if isinstance(theme, str): theme = THEMES.data[theme] assert isinstance(theme, ColorTheme) for box, color in zip( RectangleGrid( rect, theme.size if columns else 1, 1 if columns else theme.size ).boxes, theme.data.values(), ): curr = Rect(box) curr.assign_fill_color(color) yield curr
[docs] def visualize( rect: Rectangle, manager: ColorThemeManager = None, columns: bool = True ) -> Iterator[Rect]: """Visualize all managed themes within a provided rectangle.""" if manager is None: manager = THEMES for box, theme in zip( RectangleGrid(rect, 1, manager.size).boxes, manager.data.values() ): if theme is not None: yield from visualize_theme(theme, box, columns=columns)