{- | Module : Graphics.XDot.Types Copyright : (c) Dennis Felsing License : 3-Clause BSD-style Maintainer : dennis@felsin9.de This module contains various types used to represent xdot parameters. -} module Graphics.XDot.Types ( Point, Rectangle, Alignment(..), Object(..), Operation(..) ) where -- | A simple point, consisting of an x and y position. type Point = (Double, Double) -- | A rectangle, x and y position, width and height. type Rectangle = (Double, Double, Double, Double) -- | Alignment of text. data Alignment = LeftAlign | CenterAlign | RightAlign deriving Show -- | An object an operation can belong to. data Object n = None | Node n | Edge n n deriving (Show, Eq) -- | Drawing operations supported by xdot. See -- for more information data Operation = Ellipse { xy :: Point, w :: Double, h :: Double, filled :: Bool } | Polygon { points :: [Point], filled :: Bool } | Polyline { points :: [Point] } | BSpline { points :: [Point], filled :: Bool } | Text { baseline :: Point, alignment :: Alignment, width :: Double, text :: String } | Color { rgba :: (Double, Double, Double, Double), filled :: Bool } | Font { size :: Double, name :: String } | Style { style :: String } -- TODO: Add type | Image { xy :: Point, w :: Double, h :: Double, name :: String } deriving Show