module FRP.Helm.Window (
dimensions, width, height
) where
import Foreign.Marshal.Alloc
import Foreign.Storable
import FRP.Elerea.Simple
import FRP.Helm (Engine(..))
import FRP.Helm.Utilities
import qualified Graphics.UI.SDL as SDL
dimensions :: Engine -> SignalGen (Signal (Int, Int))
dimensions (Engine { window }) = effectful $ alloca $ \wptr -> alloca $ \hptr -> do
SDL.getWindowSize window wptr hptr
w <- peek wptr
h <- peek hptr
return (fromIntegral w, fromIntegral h)
width :: Engine -> SignalGen (Signal Int)
width engine = fst <~ dimensions engine
height :: Engine -> SignalGen (Signal Int)
height engine = snd <~ dimensions engine