module CondLayout(ifSizeP,ifSizeS,stretchCaseS,alignFixedS,alignFixedS') where
import LayoutRequest
import Spacers(idS,hAlignS,vAlignS,hvAlignS,compS,noStretchS)
ifSizeP :: (Size -> Size -> Bool) -> Placer -> Placer -> Placer
ifSizeP Size -> Size -> Bool
b (P Placer1
p1) (P Placer1
p2) = Placer1 -> Placer
P (Placer1 -> Placer) -> Placer1 -> Placer
forall a b. (a -> b) -> a -> b
$ (Size -> Size -> Bool) -> Placer1 -> Placer1 -> Placer1
forall p b.
(Size -> Size -> Bool)
-> (p -> (LayoutRequest, b))
-> (p -> (LayoutRequest, b))
-> p
-> (LayoutRequest, b)
ifSize Size -> Size -> Bool
b Placer1
p1 Placer1
p2
ifSizeS :: (Size -> Size -> Bool) -> Spacer -> Spacer -> Spacer
ifSizeS Size -> Size -> Bool
b (S Spacer1
s1) (S Spacer1
s2) = Spacer1 -> Spacer
S (Spacer1 -> Spacer) -> Spacer1 -> Spacer
forall a b. (a -> b) -> a -> b
$ (Size -> Size -> Bool) -> Spacer1 -> Spacer1 -> Spacer1
forall p b.
(Size -> Size -> Bool)
-> (p -> (LayoutRequest, b))
-> (p -> (LayoutRequest, b))
-> p
-> (LayoutRequest, b)
ifSize Size -> Size -> Bool
b Spacer1
s1 Spacer1
s2
ifSize :: (Size -> Size -> Bool)
-> (p -> (LayoutRequest, b))
-> (p -> (LayoutRequest, b))
-> p
-> (LayoutRequest, b)
ifSize Size -> Size -> Bool
p p -> (LayoutRequest, b)
primP p -> (LayoutRequest, b)
spareP p
reqs =
if Size -> Size -> Bool
p Size
primSize Size
spareSize
then (LayoutRequest, b)
primP2
else (LayoutRequest, b)
spareP2
where
primP2 :: (LayoutRequest, b)
primP2@(Layout {minsize :: LayoutRequest -> Size
minsize=Size
primSize},b
_) = p -> (LayoutRequest, b)
primP p
reqs
spareP2 :: (LayoutRequest, b)
spareP2@(Layout {minsize :: LayoutRequest -> Size
minsize=Size
spareSize},b
_) = p -> (LayoutRequest, b)
spareP p
reqs
stretchCaseS :: ((Bool,Bool)->Spacer) -> Spacer
stretchCaseS :: ((Bool, Bool) -> Spacer) -> Spacer
stretchCaseS (Bool, Bool) -> Spacer
sS = Spacer1 -> Spacer
S (Spacer1 -> Spacer) -> Spacer1 -> Spacer
forall a b. (a -> b) -> a -> b
$ \ LayoutRequest
req -> Spacer -> Spacer1
unS ((Bool, Bool) -> Spacer
sS (LayoutRequest -> Bool
fixedh LayoutRequest
req,LayoutRequest -> Bool
fixedv LayoutRequest
req)) LayoutRequest
req
alignFixedS :: Alignment -> Alignment -> Spacer
alignFixedS Alignment
ha Alignment
va =
((Bool, Bool) -> Spacer) -> Spacer
stretchCaseS (((Bool, Bool) -> Spacer) -> Spacer)
-> ((Bool, Bool) -> Spacer) -> Spacer
forall a b. (a -> b) -> a -> b
$ \ (Bool, Bool)
fixedhv ->
case (Bool, Bool)
fixedhv of
(Bool
False,Bool
False) -> Spacer
idS
(Bool
True, Bool
False) -> Alignment -> Spacer
hAlignS Alignment
ha
(Bool
False,Bool
True) -> Alignment -> Spacer
vAlignS Alignment
va
(Bool
True, Bool
True) -> Alignment -> Alignment -> Spacer
hvAlignS Alignment
ha Alignment
va
alignFixedS' :: Alignment -> Alignment -> Spacer
alignFixedS' Alignment
ha Alignment
va =
((Bool, Bool) -> Spacer) -> Spacer
stretchCaseS (((Bool, Bool) -> Spacer) -> Spacer)
-> ((Bool, Bool) -> Spacer) -> Spacer
forall a b. (a -> b) -> a -> b
$ \ (Bool, Bool)
fhv ->
(Bool -> Bool -> Spacer) -> (Bool, Bool) -> Spacer
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry Bool -> Bool -> Spacer
noStretchS (Bool, Bool)
fhv Spacer -> Spacer -> Spacer
`compS` Alignment -> Alignment -> Spacer
alignFixedS Alignment
ha Alignment
va