packages feed

hgl-example-0.0.2: src/Main.hs

{-
  hugs -P:src src/Main.hs
-}

{-
  hugs

  :load Graphics.HGL.Utils

  :browse Graphics.HGL.Utils
-}
module Main where

import qualified GraphicDemo as G
import qualified Sierpinski as S
import qualified Locomotive as L

import System.Environment (getArgs, )
import System.Exit (exitWith, ExitCode(..), )
import Control.Monad (when, )


demos :: [(String, IO ())]
demos =
   ("text", G.textAnim) :
   ("triangle", G.dreieck) :
   ("17angle", G.siebzehneck) :
   ("spiral", G.spirale) :
   ("double-spiral", G.doppelSpirale) :
   ("rotating-spiral", G.spiraleAnim) :
   ("lissajous", G.lissajous) :
   ("rotating-lissajous", G.lissajousAnim) :
   ("rotating-star", G.sternAnim) :
   ("star-circle", G.sternenkreisAnim) :
   ("locomotive-0", L.squareWheelAnim) :
   ("locomotive-1", L.acentricAnim) :
   ("locomotive-2", L.asymmetricAnim) :
   ("locomotive-3", L.bigSmallAnim) :
   ("sierpinski", S.demo) :
   []


main :: IO ()
main =
   do args <- getArgs
      when (null args)
         (putStrLn "no demo name given" >>
          exitWith ExitSuccess)
      when (args == ["--list"])
         (mapM_ (putStrLn . fst) demos >>
          exitWith ExitSuccess)
      mapM_
         (\demo ->
            maybe (putStrLn $ "unkown demo: " ++ demo) id $
            lookup demo demos)
         args