"""
Multi display backend - forwards to multiple displays.
"""


class MultiDisplay:
    """Display that forwards to multiple displays.

    Supports reuse - passes reuse flag to all child displays.
    """

    width: int = 80
    height: int = 24

    def __init__(self, displays: list):
        self.displays = displays
        self.width = 80
        self.height = 24

    def init(self, width: int, height: int, reuse: bool = False) -> None:
        """Initialize all child displays with dimensions.

        Args:
            width: Terminal width in characters
            height: Terminal height in rows
            reuse: If True, use reuse mode for child displays
        """
        self.width = width
        self.height = height
        for d in self.displays:
            d.init(width, height, reuse=reuse)

    def show(self, buffer: list[str], border: bool = False) -> None:
        for d in self.displays:
            d.show(buffer, border=border)

    def clear(self) -> None:
        for d in self.displays:
            d.clear()

    def get_dimensions(self) -> tuple[int, int]:
        """Get dimensions from the first child display that supports it."""
        for d in self.displays:
            if hasattr(d, "get_dimensions"):
                return d.get_dimensions()
        return (self.width, self.height)

    def cleanup(self) -> None:
        for d in self.displays:
            d.cleanup()
