rhine-gloss-0.7.0: Gloss backend for Rhine

Safe HaskellNone
LanguageHaskell2010

FRP.Rhine.Gloss.IO

Description

Wrapper to write gloss applications in Rhine, using concurrency.

Synopsis

Documentation

data GlossConcT m a Source #

Wraps the concurrent variables needed for communication with the gloss backend.

Instances
MonadTrans GlossConcT Source # 
Instance details

Defined in FRP.Rhine.Gloss.IO

Methods

lift :: Monad m => m a -> GlossConcT m a #

Monad m => Monad (GlossConcT m) Source # 
Instance details

Defined in FRP.Rhine.Gloss.IO

Methods

(>>=) :: GlossConcT m a -> (a -> GlossConcT m b) -> GlossConcT m b #

(>>) :: GlossConcT m a -> GlossConcT m b -> GlossConcT m b #

return :: a -> GlossConcT m a #

fail :: String -> GlossConcT m a #

Functor m => Functor (GlossConcT m) Source # 
Instance details

Defined in FRP.Rhine.Gloss.IO

Methods

fmap :: (a -> b) -> GlossConcT m a -> GlossConcT m b #

(<$) :: a -> GlossConcT m b -> GlossConcT m a #

Applicative m => Applicative (GlossConcT m) Source # 
Instance details

Defined in FRP.Rhine.Gloss.IO

Methods

pure :: a -> GlossConcT m a #

(<*>) :: GlossConcT m (a -> b) -> GlossConcT m a -> GlossConcT m b #

liftA2 :: (a -> b -> c) -> GlossConcT m a -> GlossConcT m b -> GlossConcT m c #

(*>) :: GlossConcT m a -> GlossConcT m b -> GlossConcT m b #

(<*) :: GlossConcT m a -> GlossConcT m b -> GlossConcT m a #

MonadIO m => MonadIO (GlossConcT m) Source # 
Instance details

Defined in FRP.Rhine.Gloss.IO

Methods

liftIO :: IO a -> GlossConcT m a #

MonadIO m => Clock (GlossConcT m) GlossSimClockIO Source # 
Instance details

Defined in FRP.Rhine.Gloss.IO

Associated Types

type Time GlossSimClockIO :: Type #

type Tag GlossSimClockIO :: Type #

MonadIO m => Clock (GlossConcT m) GlossEventClockIO Source # 
Instance details

Defined in FRP.Rhine.Gloss.IO

Associated Types

type Time GlossEventClockIO :: Type #

type Tag GlossEventClockIO :: Type #

paintIO :: MonadIO m => Picture -> GlossConcT m () Source #

Add a picture to the canvas.

clearIO :: MonadIO m => GlossConcT m () Source #

Clear the canvas.

paintAllIO :: MonadIO m => Picture -> GlossConcT m () Source #

Clear the canvas and then paint.

data GlossSimClockIO Source #

Concurrently block on gloss simulation ticks.

Constructors

GlossSimClockIO 

launchGlossThread :: MonadIO m => GlossSettings -> GlossConcT m a -> m a Source #

Apply this to supply the GlossConcT effect. Creates a new thread in which gloss is run, and feeds the clocks GlossEventClockIO and GlossSimClockIO.

Usually, this function is applied to the result of flow, so you can handle all occurring effects as needed. If you only use gloss in your whole signal network, you can use flowGlossIO instead.

flowGlossIO :: (Clock (GlossConcT IO) cl, GetClockProxy cl, Time cl ~ Time (In cl), Time cl ~ Time (Out cl)) => GlossSettings -> Rhine (GlossConcT IO) cl () () -> IO () Source #

Run a Rhine in the GlossConcT monad by launching a separate thread for the gloss backend, and reactimate in the foreground.

glossConcurrently :: (Monad IO, Clock (GlossConcT IO) cl1, Clock (GlossConcT IO) cl2, Time cl1 ~ Time cl2) => Schedule (GlossConcT IO) cl1 cl2 Source #

A schedule in the GlossConcT transformer, supplying the same backend connection to its scheduled clocks.