-- replaces modules AlignF and SepF
module Spacer(module Spacer,Distance(..)) where
--import LayoutRequest
import Spacers
import Placer(spacer1F)

marginHVAlignF :: Distance -> Alignment -> Alignment -> F a b -> F a b
marginHVAlignF Distance
m Alignment
h Alignment
v = Spacer -> F a b -> F a b
forall a b. Spacer -> F a b -> F a b
spacer1F (Spacer -> F a b -> F a b) -> Spacer -> F a b -> F a b
forall a b. (a -> b) -> a -> b
$ Distance -> Alignment -> Alignment -> Spacer
marginHVAlignS Distance
m Alignment
h Alignment
v

alignF :: Size -> Size -> Alignment -> Alignment -> F a b -> F a b
alignF Size
uladd Size
bradd Alignment
halign Alignment
valign =
  Spacer -> F a b -> F a b
forall a b. Spacer -> F a b -> F a b
spacer1F (Size -> Size -> Spacer
hvMarginS Size
uladd Size
bradd Spacer -> Spacer -> Spacer
`compS` Alignment -> Alignment -> Spacer
hvAlignS Alignment
halign Alignment
valign)

layoutModifierF :: (LayoutRequest -> LayoutRequest) -> F a b -> F a b
layoutModifierF = Spacer -> F a b -> F a b
forall a b. Spacer -> F a b -> F a b
spacer1F (Spacer -> F a b -> F a b)
-> ((LayoutRequest -> LayoutRequest) -> Spacer)
-> (LayoutRequest -> LayoutRequest)
-> F a b
-> F a b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (LayoutRequest -> LayoutRequest) -> Spacer
layoutModifierS

noStretchF :: Bool -> Bool -> F a b -> F a b
noStretchF Bool
fh Bool
fv = Spacer -> F a b -> F a b
forall a b. Spacer -> F a b -> F a b
spacer1F (Bool -> Bool -> Spacer
noStretchS Bool
fh Bool
fv)

sepF :: Size -> F a b -> F a b
sepF = Spacer -> F a b -> F a b
forall a b. Spacer -> F a b -> F a b
spacer1F (Spacer -> F a b -> F a b)
-> (Size -> Spacer) -> Size -> F a b -> F a b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Size -> Spacer
sepS
marginF :: Distance -> F a b -> F a b
marginF = Spacer -> F a b -> F a b
forall a b. Spacer -> F a b -> F a b
spacer1F (Spacer -> F a b -> F a b)
-> (Distance -> Spacer) -> Distance -> F a b -> F a b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Distance -> Spacer
marginS