wumpus-basic-0.4.0: src/Wumpus/Basic/Monads/DrawingCtxClass.hs
{-# OPTIONS -Wall #-}
--------------------------------------------------------------------------------
-- |
-- Module : Wumpus.Basic.Monads.DrawingCtxClass
-- Copyright : (c) Stephen Tetley 2010
-- License : BSD3
--
-- Maintainer : stephen.tetley@gmail.com
-- Stability : unstable
-- Portability : GHC
--
-- Class.
--
--------------------------------------------------------------------------------
module Wumpus.Basic.Monads.DrawingCtxClass
(
-- * DrawingCtx class
DrawingCtxM(..)
, withinModifiedCtx
) where
import Wumpus.Basic.Graphic.DrawingAttr
class Monad m => DrawingCtxM m where
askDrawingCtx :: m DrawingAttr
localCtx :: DrawingAttr -> m a -> m a
withinModifiedCtx :: DrawingCtxM m
=> (DrawingAttr -> DrawingAttr) -> m a -> m a
withinModifiedCtx upd ma = askDrawingCtx >>= \ctx -> localCtx (upd ctx) ma