packages feed

DefendTheKing-0.2.1: src/Font.hs

module Font (
  DefendFont, DrawPos, Pix(..),
  loadFont
  ) where

import Geometry (triangulatePolygon)

import Data.Map (Map)
import Graphics.UI.GLUT (GLfloat)

type DrawPos = (GLfloat, GLfloat)

data Pix = Pix {
  pixOutline :: [[DrawPos]],
  -- | pixBody can (and is) be calculated from pixOutline
  -- it is in Pix for memoing this calculation.
  pixBody :: [[DrawPos]]
}

type DefendFont = Map String Pix

loadFont :: String -> DefendFont
loadFont =
  fmap loadChar . read
  where
    loadChar polygons =
      Pix {
        pixOutline = polygons,
        pixBody = triangulatePolygon =<< polygons
      }