wumpus-drawing-0.4.0: src/Wumpus/Drawing/Text/Base/PosChar.hs
{-# OPTIONS -Wall #-}
--------------------------------------------------------------------------------
-- |
-- Module : Wumpus.Drawing.Text.Base.PosChar
-- Copyright : (c) Stephen Tetley 2011
-- License : BSD3
--
-- Maintainer : stephen.tetley@gmail.com
-- Stability : unstable
-- Portability : GHC
--
-- Drawing single a char as a PosImage.
--
--------------------------------------------------------------------------------
module Wumpus.Drawing.Text.Base.PosChar
(
LocRectChar
, posChar
, posEscChar
, charLabel
, escCharLabel
) where
import Wumpus.Drawing.Text.Base.Common
import Wumpus.Basic.Kernel -- package: wumpus-basic
import Wumpus.Core -- package: wumpus-core
type PosChar u = PosObject u
posChar :: InterpretUnit u => Char -> PosChar u
posChar = makePosChar . CharLiteral
posEscChar :: InterpretUnit u => EscapedChar -> PosChar u
posEscChar = makePosChar
-- Note this type doesn\'t support concat...
--
-- While it may be adequate, it does need another prefix.
--
type LocRectChar u = RectAddress -> LocImage u (BoundingBox u)
charLabel :: (Floating u, InterpretUnit u) => Char -> LocRectChar u
charLabel ch = escCharLabel $ CharLiteral ch
escCharLabel :: (Floating u, InterpretUnit u)
=> EscapedChar -> LocRectChar u
escCharLabel esc = \raddr -> runPosObject raddr (makePosChar esc)
makePosChar :: InterpretUnit u
=> EscapedChar -> PosObject u
makePosChar esc = makePosObject (charOrientationZero esc) (escText1 esc)
escText1 :: InterpretUnit u => EscapedChar -> LocGraphic u
escText1 ch = dcEscapedlabel $ wrapEscChar ch