codemonitor-0.2: src/Render/Rect.hs
module Render.Rect where
data Rect = Rect Double Double Double Double deriving (Eq, Show)
shrink :: Double -> Rect -> Rect
shrink by (Rect x y w h) = Rect (x+by) (y+by) (w-2*by) (h-2*by)
divideVertical :: Rect -> Double -> (Rect, Rect)
divideVertical (Rect x y w h) percent = (Rect x y w splitH, Rect x splitH w (h - splitH))
where splitH = percent * h
splitVertical :: Rect -> Int -> [Rect]
splitVertical (Rect x y w h) n = map calcNew [1..n]
where
calcNew n = Rect x (y+(fromIntegral n-1)*newH) w newH
newH = h / fromIntegral n
splitHorizontal :: Rect -> Int -> [Rect]
splitHorizontal (Rect x y w h) n = map calcNew [1..n]
where
calcNew n = Rect (x+(fromIntegral n -1)*newW) y newW h
newW = w / fromIntegral n