module LayoutDir where import Geometry(Point(..), xcoord, ycoord) import LayoutRequest import Utils(swap) data Orientation = Above | Below | RightOf | LeftOf deriving (Orientation -> Orientation -> Bool (Orientation -> Orientation -> Bool) -> (Orientation -> Orientation -> Bool) -> Eq Orientation forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Orientation -> Orientation -> Bool $c/= :: Orientation -> Orientation -> Bool == :: Orientation -> Orientation -> Bool $c== :: Orientation -> Orientation -> Bool Eq, Eq Orientation Eq Orientation -> (Orientation -> Orientation -> Ordering) -> (Orientation -> Orientation -> Bool) -> (Orientation -> Orientation -> Bool) -> (Orientation -> Orientation -> Bool) -> (Orientation -> Orientation -> Bool) -> (Orientation -> Orientation -> Orientation) -> (Orientation -> Orientation -> Orientation) -> Ord Orientation Orientation -> Orientation -> Bool Orientation -> Orientation -> Ordering Orientation -> Orientation -> Orientation forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: Orientation -> Orientation -> Orientation $cmin :: Orientation -> Orientation -> Orientation max :: Orientation -> Orientation -> Orientation $cmax :: Orientation -> Orientation -> Orientation >= :: Orientation -> Orientation -> Bool $c>= :: Orientation -> Orientation -> Bool > :: Orientation -> Orientation -> Bool $c> :: Orientation -> Orientation -> Bool <= :: Orientation -> Orientation -> Bool $c<= :: Orientation -> Orientation -> Bool < :: Orientation -> Orientation -> Bool $c< :: Orientation -> Orientation -> Bool compare :: Orientation -> Orientation -> Ordering $ccompare :: Orientation -> Orientation -> Ordering $cp1Ord :: Eq Orientation Ord, Int -> Orientation -> ShowS [Orientation] -> ShowS Orientation -> String (Int -> Orientation -> ShowS) -> (Orientation -> String) -> ([Orientation] -> ShowS) -> Show Orientation forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Orientation] -> ShowS $cshowList :: [Orientation] -> ShowS show :: Orientation -> String $cshow :: Orientation -> String showsPrec :: Int -> Orientation -> ShowS $cshowsPrec :: Int -> Orientation -> ShowS Show) data LayoutDir = Horizontal | Vertical deriving (LayoutDir -> LayoutDir -> Bool (LayoutDir -> LayoutDir -> Bool) -> (LayoutDir -> LayoutDir -> Bool) -> Eq LayoutDir forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: LayoutDir -> LayoutDir -> Bool $c/= :: LayoutDir -> LayoutDir -> Bool == :: LayoutDir -> LayoutDir -> Bool $c== :: LayoutDir -> LayoutDir -> Bool Eq, Eq LayoutDir Eq LayoutDir -> (LayoutDir -> LayoutDir -> Ordering) -> (LayoutDir -> LayoutDir -> Bool) -> (LayoutDir -> LayoutDir -> Bool) -> (LayoutDir -> LayoutDir -> Bool) -> (LayoutDir -> LayoutDir -> Bool) -> (LayoutDir -> LayoutDir -> LayoutDir) -> (LayoutDir -> LayoutDir -> LayoutDir) -> Ord LayoutDir LayoutDir -> LayoutDir -> Bool LayoutDir -> LayoutDir -> Ordering LayoutDir -> LayoutDir -> LayoutDir forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: LayoutDir -> LayoutDir -> LayoutDir $cmin :: LayoutDir -> LayoutDir -> LayoutDir max :: LayoutDir -> LayoutDir -> LayoutDir $cmax :: LayoutDir -> LayoutDir -> LayoutDir >= :: LayoutDir -> LayoutDir -> Bool $c>= :: LayoutDir -> LayoutDir -> Bool > :: LayoutDir -> LayoutDir -> Bool $c> :: LayoutDir -> LayoutDir -> Bool <= :: LayoutDir -> LayoutDir -> Bool $c<= :: LayoutDir -> LayoutDir -> Bool < :: LayoutDir -> LayoutDir -> Bool $c< :: LayoutDir -> LayoutDir -> Bool compare :: LayoutDir -> LayoutDir -> Ordering $ccompare :: LayoutDir -> LayoutDir -> Ordering $cp1Ord :: Eq LayoutDir Ord, Int -> LayoutDir -> ShowS [LayoutDir] -> ShowS LayoutDir -> String (Int -> LayoutDir -> ShowS) -> (LayoutDir -> String) -> ([LayoutDir] -> ShowS) -> Show LayoutDir forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [LayoutDir] -> ShowS $cshowList :: [LayoutDir] -> ShowS show :: LayoutDir -> String $cshow :: LayoutDir -> String showsPrec :: Int -> LayoutDir -> ShowS $cshowsPrec :: Int -> LayoutDir -> ShowS Show) xc :: LayoutDir -> Point -> Int xc LayoutDir Horizontal = Point -> Int xcoord xc LayoutDir Vertical = Point -> Int ycoord yc :: LayoutDir -> Point -> Int yc LayoutDir Horizontal = Point -> Int ycoord yc LayoutDir Vertical = Point -> Int xcoord fixh :: LayoutDir -> LayoutRequest -> Bool fixh LayoutDir Horizontal = LayoutRequest -> Bool fixedh fixh LayoutDir Vertical = LayoutRequest -> Bool fixedv fixv :: LayoutDir -> LayoutRequest -> Bool fixv LayoutDir Horizontal = LayoutRequest -> Bool fixedv fixv LayoutDir Vertical = LayoutRequest -> Bool fixedh mkp :: LayoutDir -> Int -> Int -> Point mkp LayoutDir Horizontal Int x Int y = Int -> Int -> Point Point Int x Int y mkp LayoutDir Vertical Int x Int y = Int -> Int -> Point Point Int y Int x vswap :: LayoutDir -> (b, b) -> (b, b) vswap LayoutDir Horizontal = (b, b) -> (b, b) forall a. a -> a id vswap LayoutDir Vertical = (b, b) -> (b, b) forall b a. (b, a) -> (a, b) swap colinear :: LayoutDir -> p -> p -> p colinear LayoutDir Horizontal p h p v = p h colinear LayoutDir Vertical p h p v = p v orthogonal :: LayoutDir -> p -> p -> p orthogonal LayoutDir Horizontal p h p v = p v orthogonal LayoutDir Vertical p h p v = p h