{-# 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) ----- Graph ----- 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) ----- Graph Graphical ----- 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)