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.
  }