module Brillo.Data.Controller (Controller (..)) where import Brillo.Data.ViewPort -- | Functions to asynchronously control a `Brillo` display. data Controller = Controller { Controller -> IO () controllerSetRedraw :: IO () -- ^ Indicate that we want the picture to be redrawn. , Controller -> (ViewPort -> IO ViewPort) -> IO () controllerModifyViewPort :: (ViewPort -> IO ViewPort) -> IO () -- ^ Modify the current viewport, also indicating that it should be redrawn. }