{-# OPTIONS -Wall #-}

--------------------------------------------------------------------------------
-- |
-- Module      :  Wumpus.Microprint.Datatypes
-- Copyright   :  (c) Stephen Tetley 2010
-- License     :  BSD3
--
-- Maintainer  :  stephen.tetley@gmail.com
-- Stability   :  unstable
-- Portability :  GHC
--
-- Base datatypes.
--
--------------------------------------------------------------------------------

module Wumpus.Microprint.Datatypes
  (

  -- * Datatypes  
    DrawWordF
  , RenderScalingCtx
  , makeRenderScalingCtx

  , Tile(..)
  , Height
  , GreekText

  ) where

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

import Wumpus.Core                              -- package: wumpus-core


-- | 'DrawWordF' :
--
-- > colour * scaled_width * scaled_height -> char_count -> DLocGraphic
--
type DrawWordF = RGBi -> Double -> Double -> Int -> DLocGraphic



type RenderScalingCtx   = ScalingContext Int Int Double

makeRenderScalingCtx :: (Int -> Double) -> (Int -> Double) -> RenderScalingCtx
makeRenderScalingCtx fx fy = 
    ScalingContext { scale_in_x = fx, scale_in_y = fy }



data Tile = Space Int | Word RGBi Int
  deriving (Eq,Ord,Show)

type Height = Int


-- Note probably better if used a list of lines instead
--
-- > [[Title]] 
--
-- and did not have line break in the Tile datatype.
--
type GreekText = (Height,[[Tile]])