| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Imj.Graphics.Render
Contents
- class Draw e where
- class Draw e => Render e where
- drawChar :: (Draw e, MonadReader e m, MonadIO m) => Char -> Coords Pos -> LayeredColor -> m ()
- drawChars :: (Draw e, MonadReader e m, MonadIO m) => Int -> Char -> Coords Pos -> LayeredColor -> m ()
- drawTxt :: (Draw e, MonadReader e m, MonadIO m) => Text -> Coords Pos -> LayeredColor -> m ()
- drawStr :: (Draw e, MonadReader e m, MonadIO m) => String -> Coords Pos -> LayeredColor -> m ()
- drawColorStr :: (Draw e, MonadReader e m, MonadIO m) => ColorString -> Coords Pos -> m ()
- drawAlignedTxt_ :: (Draw e, MonadReader e m, MonadIO m) => Text -> LayeredColor -> Alignment -> m ()
- drawAlignedTxt :: (Draw e, MonadReader e m, MonadIO m) => Text -> LayeredColor -> Alignment -> m Alignment
- drawAlignedColorStr :: (Draw e, MonadReader e m, MonadIO m) => Alignment -> ColorString -> m Alignment
- renderToScreen :: (Render e, MonadReader e m, MonadIO m) => m ()
- data LayeredColor = LayeredColor {}
- data Coords a = Coords {}
- data Alignment = Alignment {
- _alignmentKing :: !AlignmentKind
- _alignmentRef :: !(Coords Pos)
- data Text :: *
- data Char :: *
- type String = [Char]
- class Monad m => MonadIO (m :: * -> *)
- class Monad m => MonadReader r (m :: * -> *) | m -> r
Draw and Render
Draw describes the ability to draw colored Chars, Strings, Texts.
Render makes the result of draw*** calls visible on the screen.
Optimized instances of Draw and Render, for games and animations
drawing in the terminal, are
available in Imj.Graphics.Render.Delta.Env. They minimize stdout usage using double
buffering and delta rendering, thereby mitigating the
screen tearing effect.
Minimal complete definition
Methods
drawChar' :: MonadIO m => e -> Char -> Coords Pos -> LayeredColor -> m () Source #
Draw a Char.
drawChars' :: MonadIO m => e -> Int -> Char -> Coords Pos -> LayeredColor -> m () Source #
Draw repeated chars.
drawTxt' :: MonadIO m => e -> Text -> Coords Pos -> LayeredColor -> m () Source #
Draw Text.
drawStr' :: MonadIO m => e -> String -> Coords Pos -> LayeredColor -> m () Source #
Draw String.
drawColorStr' :: MonadIO m => e -> ColorString -> Coords Pos -> m () Source #
Draw a ColorString.
drawAlignedTxt_' :: MonadIO m => e -> Text -> LayeredColor -> Alignment -> m () Source #
Draw text aligned w.r.t alignment and reference coordinates.
drawAlignedTxt' :: MonadIO m => e -> Text -> LayeredColor -> Alignment -> m Alignment Source #
Draws text aligned w.r.t alignment and reference coordinates.
Returns an Alignment where the reference coordinate of the input Alignment
was projected on the next line.
drawAlignedColorStr' :: MonadIO m => e -> Alignment -> ColorString -> m Alignment Source #
Draw a ColorString with an Alignment constraint.
class Draw e => Render e where Source #
Class describing the ability to render the result of a Draw to the
screen.
It is left to the implementation to decide wether to clear the screen or not (after a
renderToScreen for example), and with which color.
Minimal complete definition
From MonadReader
The functions below use Draw and Render instances in a MonadReader monad.
Hence, if you run in a MonadReader YourEnv monad
(where YourEnv is your environment equiped with Draw and Render instances),
you can write:
import Control.Monad.IO.Class(MonadIO) import Control.Monad.Reader.Class(MonadReader) import Control.Monad.Reader(runReaderT) import Imj.Graphics.Class.Render import Imj.Graphics.Render.FromMonadReader(drawStr, renderToScreen) helloWorld :: (Draw e, Render e, MonadReader e m, MonadIO m) => m () helloWorld = drawStr "Hello World" (Coords 10 10) green >> renderToScreen main = createEnv >>= runReaderT helloWorld
This example follows this pattern.
Draw char(s)
drawChar :: (Draw e, MonadReader e m, MonadIO m) => Char -> Coords Pos -> LayeredColor -> m () Source #
drawChars :: (Draw e, MonadReader e m, MonadIO m) => Int -> Char -> Coords Pos -> LayeredColor -> m () Source #
Draws a Char multiple times, starting at the given coordinates and then
moving to the right.
Draw text
drawTxt :: (Draw e, MonadReader e m, MonadIO m) => Text -> Coords Pos -> LayeredColor -> m () Source #
drawStr :: (Draw e, MonadReader e m, MonadIO m) => String -> Coords Pos -> LayeredColor -> m () Source #
drawColorStr :: (Draw e, MonadReader e m, MonadIO m) => ColorString -> Coords Pos -> m () Source #
Draw a ColorString.
Draw aligned text
drawAlignedTxt_ :: (Draw e, MonadReader e m, MonadIO m) => Text -> LayeredColor -> Alignment -> m () Source #
Draws text with Alignment.
drawAlignedTxt :: (Draw e, MonadReader e m, MonadIO m) => Text -> LayeredColor -> Alignment -> m Alignment Source #
drawAlignedColorStr :: (Draw e, MonadReader e m, MonadIO m) => Alignment -> ColorString -> m Alignment Source #
Draw a ColorString with an Alignment constraint.
Render to the physical device
renderToScreen :: (Render e, MonadReader e m, MonadIO m) => m () Source #
Render the drawing to {the screen, the console, etc...}.
Reexports
data LayeredColor Source #
A background and a foreground Color8.
Constructors
| LayeredColor | |
Fields
| |
Instances
| Eq LayeredColor Source # | |
| Show LayeredColor Source # | |
| DiscreteDistance LayeredColor Source # | First interpolate background color, then foreground color |
| DiscreteInterpolation LayeredColor Source # | First interpolate background color, then foreground color |
Constructors
| Alignment | |
Fields
| |
The character type Char is an enumeration whose values represent
Unicode (or equivalently ISO/IEC 10646) characters (see
http://www.unicode.org/ for details). This set extends the ISO 8859-1
(Latin-1) character set (the first 256 characters), which is itself an extension
of the ASCII character set (the first 128 characters). A character literal in
Haskell has type Char.
To convert a Char to or from the corresponding Int value defined
by Unicode, use toEnum and fromEnum from the
Enum class respectively (or equivalently ord and chr).
Instances
| Bounded Char | Since: 2.1 |
| Enum Char | Since: 2.1 |
| Eq Char | |
| Data Char | Since: 4.0.0.0 |
| Ord Char | |
| Read Char | Since: 2.1 |
| Show Char | Since: 2.1 |
| Prim Char | |
| Random Char | |
| ErrorList Char | |
| Unbox Char | |
| Vector Vector Char | |
| MVector MVector Char | |
| Generic1 k (URec k Char) | |
| IsString (Seq Char) | |
| Functor (URec * Char) | |
| Foldable (URec * Char) | |
| Traversable (URec * Char) | |
| Eq (URec k Char p) | |
| Ord (URec k Char p) | |
| Show (URec k Char p) | |
| Generic (URec k Char p) | |
| data Vector Char | |
| data URec k Char | Used for marking occurrences of Since: 4.9.0.0 |
| data MVector s Char | |
| type Rep1 k (URec k Char) | |
| type Rep (URec k Char p) | |
class Monad m => MonadIO (m :: * -> *) #
Monads in which IO computations may be embedded.
Any monad built by applying a sequence of monad transformers to the
IO monad will be an instance of this class.
Instances should satisfy the following laws, which state that liftIO
is a transformer of monads:
Minimal complete definition
Instances
| MonadIO IO | Since: 4.9.0.0 |
| MonadIO m => MonadIO (ListT m) | |
| MonadIO m => MonadIO (MaybeT m) | |
| (Error e, MonadIO m) => MonadIO (ErrorT e m) | |
| MonadIO m => MonadIO (ExceptT e m) | |
| MonadIO m => MonadIO (StateT s m) | |
| MonadIO m => MonadIO (StateT s m) | |
| (Monoid w, MonadIO m) => MonadIO (WriterT w m) | |
| (Monoid w, MonadIO m) => MonadIO (WriterT w m) | |
| MonadIO m => MonadIO (IdentityT * m) | |
| MonadIO m => MonadIO (ReaderT * r m) | |
| MonadIO m => MonadIO (ContT * r m) | |
| (Monoid w, MonadIO m) => MonadIO (RWST r w s m) | |
| (Monoid w, MonadIO m) => MonadIO (RWST r w s m) | |
class Monad m => MonadReader r (m :: * -> *) | m -> r #
See examples in Control.Monad.Reader.
Note, the partially applied function type (->) r is a simple reader monad.
See the instance declaration below.
Instances
| MonadReader r m => MonadReader r (MaybeT m) | |
| MonadReader r m => MonadReader r (ListT m) | |
| (Monoid w, MonadReader r m) => MonadReader r (WriterT w m) | |
| (Monoid w, MonadReader r m) => MonadReader r (WriterT w m) | |
| MonadReader r m => MonadReader r (StateT s m) | |
| MonadReader r m => MonadReader r (StateT s m) | |
| MonadReader r m => MonadReader r (IdentityT * m) | |
| MonadReader r m => MonadReader r (ExceptT e m) | |
| (Error e, MonadReader r m) => MonadReader r (ErrorT e m) | |
| Monad m => MonadReader r (ReaderT * r m) | |
| MonadReader r ((->) LiftedRep LiftedRep r) | |
| MonadReader r' m => MonadReader r' (ContT * r m) | |
| (Monad m, Monoid w) => MonadReader r (RWST r w s m) | |
| (Monad m, Monoid w) => MonadReader r (RWST r w s m) | |