{-# OPTIONS -Wall #-}


--------------------------------------------------------------------------------
-- |
-- Module      :  Wumpus.Drawing.Text.DocSymbols
-- Copyright   :  (c) Stephen Tetley 2011
-- License     :  BSD3
--
-- Maintainer  :  stephen.tetley@gmail.com
-- Stability   :  highly unstable
-- Portability :  GHC 
--
-- Symbols - redefined Basis.Symbols.
-- 
--------------------------------------------------------------------------------

module Wumpus.Drawing.Text.DocSymbols
  (

    ocircle
  , small_ocircle

  , empty_box

  , left_slice
  , right_slice

  )
  where

import qualified Wumpus.Drawing.Basis.Symbols as S
import Wumpus.Drawing.Text.Base.DocTextZero


import Wumpus.Basic.Kernel                      -- package: wumpus-basic

-- import Wumpus.Core                              -- package: wumpus-core

import Control.Applicative


ocircle :: (Fractional u, InterpretUnit u) => GenDocGraphic st u
ocircle = embedPosObject $ makePosObject qy gf
  where
    qy = (\h -> let hh = 0.5 * h in Orientation hh hh 0 h) <$> capHeight
    gf = capHeight >>= \h -> moveStart (go_up $ 0.5 * h) (S.scircle $ 0.5 * h)



small_ocircle :: (Fractional u, InterpretUnit u) => GenDocGraphic st u
small_ocircle = embedPosObject $ makePosObject qy gf
  where
    qy = (\h -> let hw = 0.33 * h in Orientation hw hw 0 h) <$> capHeight
    gf = capHeight >>= \h -> moveStart (go_up $ 0.33 * h) (S.scircle $ 0.25 * h)

empty_box :: (Fractional u, InterpretUnit u) => GenDocGraphic st u
empty_box = embedPosObject $ makePosObject qy gf
  where
    qy = (\h -> let hw = 0.5 * h in Orientation hw hw 0 h) <$> capHeight
    gf = capHeight >>= \h -> moveStart (go_up $ 0.33 * h) (S.empty_box $ 0.66 * h)



left_slice :: (Real u, Floating u, InterpretUnit u) => GenDocGraphic st u
left_slice = embedPosObject $ makePosObject qy gf
  where
    qy = (\h -> let hw = 0.66 * h in Orientation hw hw 0 h) <$> capHeight
    gf = capHeight >>= \h -> moveStart (go_up $ 0.33 * h) (S.sleft_slice h)

right_slice :: (Real u, Floating u, InterpretUnit u) => GenDocGraphic st u
right_slice = embedPosObject $ makePosObject qy gf
  where
    qy = (\h -> let hw = 0.66 * h in Orientation hw hw 0 h) <$> capHeight
    gf = capHeight >>= \h -> moveStart (go_up $ 0.33 * h) (S.sright_slice h)

-- More to follow...