{-# LANGUAGE RecordWildCards #-}
module Graphics.Layout.Box where
data Border m n = Border {
top :: m, bottom :: m, left :: n, right :: n
}
data Size m n = Size {inline :: n, block :: m}
data PaddedBox m n = PaddedBox {
min :: Size m n,
max :: Size m n,
size :: Size m n,
padding :: Border m n,
border :: Border m n,
margin :: Border m n
}
width PaddedBox {..} = left margin + left border + left padding +
inline size + right padding + right border + right margin
height PaddedBox {..} = top margin + top border + top padding +
block size + bottom padding + bottom border + bottom margin
minWidth PaddedBox {..} = left margin + left border + left padding +
inline min + right padding + right border + right margin
minHeight PaddedBox {..} = top margin + top border + top padding +
block min + bottom padding + bottom border + bottom margin
data Length = Pixels Double | Percent Double | Auto | Preferred | Min