module Sizing where
import Geometry(pmax)

data Sizing
  = Static | Growing | Dynamic
--  | StaticDebug
  deriving (Sizing -> Sizing -> Bool
(Sizing -> Sizing -> Bool)
-> (Sizing -> Sizing -> Bool) -> Eq Sizing
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Sizing -> Sizing -> Bool
$c/= :: Sizing -> Sizing -> Bool
== :: Sizing -> Sizing -> Bool
$c== :: Sizing -> Sizing -> Bool
Eq,Int -> Sizing -> ShowS
[Sizing] -> ShowS
Sizing -> String
(Int -> Sizing -> ShowS)
-> (Sizing -> String) -> ([Sizing] -> ShowS) -> Show Sizing
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Sizing] -> ShowS
$cshowList :: [Sizing] -> ShowS
show :: Sizing -> String
$cshow :: Sizing -> String
showsPrec :: Int -> Sizing -> ShowS
$cshowsPrec :: Int -> Sizing -> ShowS
Show,ReadPrec [Sizing]
ReadPrec Sizing
Int -> ReadS Sizing
ReadS [Sizing]
(Int -> ReadS Sizing)
-> ReadS [Sizing]
-> ReadPrec Sizing
-> ReadPrec [Sizing]
-> Read Sizing
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Sizing]
$creadListPrec :: ReadPrec [Sizing]
readPrec :: ReadPrec Sizing
$creadPrec :: ReadPrec Sizing
readList :: ReadS [Sizing]
$creadList :: ReadS [Sizing]
readsPrec :: Int -> ReadS Sizing
$creadsPrec :: Int -> ReadS Sizing
Read)

newSize :: Sizing -> Point -> Point -> Point
newSize Sizing
sizing Point
curSize Point
reqSize =
  case Sizing
sizing of
    Sizing
Static  -> Point
curSize
--    StaticDebug  -> curSize
    Sizing
Growing -> Point -> Point -> Point
pmax Point
curSize Point
reqSize
    Sizing
Dynamic -> Point
reqSize