{-# LANGUAGE TemplateHaskell #-} module Config where import Data.Label import System.Console.GetOpt data Config = Config { _configWidth :: Int , _configHeight :: Int } deriving Show $(mkLabels [''Config]) defaults :: Config defaults = Config { _configWidth = 800 , _configHeight = 600 } options :: [OptDescr (Config -> Config)] options = [ Option [] ["width"] (ReqArg (set configWidth . read) "INT") "visualisation width (800)" , Option [] ["height"] (ReqArg (set configHeight . read) "INT") "visualisation height (600)" ] header :: [String] header = [ "accelerate-julia (c) [2019] The Accelerate Team" , "" , "Usage: accelerate-julia [OPTIONS]" , "" ] footer :: [String] footer = [ "" , "Runtime usage:" , " ESC quit" , " mouse drag translate display" , " w/s zoom in/out" , " a/d iteration count" , " z/c escape radius" , " q/e speed up/slow down" , " left/right forward/backwards in time" , " 0 .. 9 select presets" , " r reset" , " . print current configuration" , " space pause/resume" , "" ]