{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
module Eventloop.Module.Graphs.Types
( module Eventloop.Module.Graphs.Types
, M.MouseEvent(..)
, M.MouseButton(..)
) where
import GHC.Generics (Generic)
import Control.DeepSeq
import qualified Eventloop.Module.Websocket.Mouse.Types as M
type Pos = (Float, Float)
type Vector = (Float, Float)
data GraphsIn = Mouse M.MouseEvent Pos
| Key [Char]
deriving (Eq, Show)
data GraphsOut = SetupGraphs
| DrawGraph Graph
| Instructions [String]
deriving (Eq, Show, Generic, NFData)
type Label = Char
type Weight = Float
type Node = (Label, Pos, Color)
type Edge = (Label, Label, Color, Weight, Thickness)
data Graph = Graph
{ nodes :: [Node]
, edges :: [Edge]
, directed :: Directed
, weighted :: Weighted
} deriving (Eq, Show, Generic, NFData)
data Color = Red
| Blue
| Green
| Purple
| Grey
| Yellow
| Orange
| Black
| White
deriving (Eq, Show, Generic, NFData)
data Thickness = Thin
| Thick
deriving (Eq, Show, Generic, NFData)
data Directed = Directed
| Undirected
deriving (Eq, Show, Generic, NFData)
data Weighted = Weighted
| Unweighted
deriving (Eq, Show, Generic, NFData)