module FPPrac.Trees
( RoseTree
, RBTree
, NodeColor
, rbExampleTree
, roseExampleTree
, showRBTree
, showRBTreeList
, showRoseTree
, showRoseTreeList
) where
import Prelude
import Eventloop.EventloopCore
import Eventloop.Types.EventTypes
import Eventloop.DefaultConfiguration
import qualified Eventloop.Module.Websocket.Canvas as C
import Eventloop.Module.BasicShapes
import Eventloop.Module.DrawTrees
data ProgramState = ProgramState
deriving (Eq, Show)
beginProgramState = ProgramState
eventloopConfig trees = defaultConfig { moduleConfigurations=[ defaultDrawTreesModuleConfiguration
, defaultBasicShapesModuleConfiguration
, C.defaultCanvasModuleConfiguration
]}
where
defaultConfig = allModulesEventloopConfiguration beginProgramState (eventloop trees)
eventloop :: [Tree] -> ProgramState -> In -> (ProgramState, [Out])
eventloop trees state Start = (state, [ OutCanvas $ C.SetupCanvas 1 1 (1024, 1024) (C.CSSPercentage 0, C.CSSPercentage 0)
, OutDrawTrees $ DrawTrees 1 trees
, Stop
]
)
showRBTree :: RBTree -> IO()
showRBTree tree = showRBTreeList [tree]
showRBTreeList :: [RBTree] -> IO ()
showRBTreeList trees = startMainloop (eventloopConfig (map TRBTree trees))
showRoseTree :: RoseTree -> IO()
showRoseTree tree = showRoseTreeList [tree]
showRoseTreeList :: [RoseTree] -> IO ()
showRoseTreeList trees = startMainloop (eventloopConfig (map TRoseTree trees))