module YampaSDL2.Drawable.Rectangle ( rectangle ) where import Data.StateVar (($=)) import Linear.V2 import Linear.V4 import qualified SDL import YampaSDL2.Internal.AppOutput -- | Draw a rectangle -- -- Example: -- -- > rectangle (V2 0 0) (V2 100 200) (Filled blue) 3 rectangle :: Center -- ^ center of the rectangle -> V2 Double -- ^ size -> ShapeColour -- ^ colour -> Int -- ^ zIndex -> RenderObject rectangle center dimensions colour zIndex = let (V2 r t) = center + dimensions / 2 (V2 l b) = center - dimensions / 2 draw _ c renderer = do SDL.rendererDrawColor renderer $= colourToV4 colour let draw' = if isFilled colour then SDL.fillRect else SDL.drawRect newCenter = SDL.P $ (c - dimensions / 2) draw' renderer (return $ round <$> SDL.Rectangle newCenter dimensions) in RO center (V4 t r b l) zIndex draw