module Graphics.X11.TurtleState (
	TurtleState(..),
	initialTurtleState,
) where

data TurtleState = TurtleState {
	turtleShape :: [(Double, Double)],
	turtleSize :: Double,
	turtlePos :: (Double, Double),
	turtleDir :: Double,
	turtlePenDown :: Bool,
	turtleUndo :: Bool,
	turtleUndoNum :: Int
 } deriving Show

initialTurtleState :: TurtleState
initialTurtleState = TurtleState {
	turtleShape = isUndefined "turtleShape",
	turtleSize = isUndefined "turtleSize",
	turtlePos = isUndefined "turtlePos",
	turtleDir = isUndefined "turtleDir",
	turtlePenDown = isUndefined "turtlePenDown",
	turtleUndo = False,
	turtleUndoNum = 1
 }

isUndefined :: String -> a
isUndefined name = error $ name ++ " is undefined"