"""The painter module provides different painters for parts of the canvas.
Painters can be swapped in and out.
Each painter takes care of a layer in the canvas (such as grid, items
and handles).
"""
from typing import Collection, Protocol
from gaphas.item import Item
from gaphas.types import CairoContext
[docs]class Painter(Protocol):
"""Painter interface."""
[docs] def paint(self, items: Collection[Item], cairo: CairoContext) -> None:
"""Do the paint action (called from the View)."""
pass
[docs]class ItemPainterType(Protocol):
[docs] def paint_item(self, item: Item, cairo: CairoContext) -> None:
"""Draw a single item."""
[docs] def paint(self, items: Collection[Item], cairo: CairoContext) -> None:
"""Do the paint action (called from the View)."""
pass