packages feed

yampa-gloss-0.1.0.0: examples/Example.hs

{-# LANGUAGE Arrows #-}
import Control.Arrow                      ( (^<<), returnA )
import FRP.Yampa                          ( SF, time )
import GHC.Float                          ( double2Float )
import Graphics.Gloss                     ( Picture (Color, Translate)
                                          , Display(InWindow), circleSolid
                                          , red, rotate, white, withAlpha )
import Graphics.Gloss.Interface.FRP.Yampa ( playYampa )

main :: IO ()
main = playYampa (InWindow "YampaDemo" (1280, 1050) (200, 200)) white 30 rotatingColor

rotatingColor :: SF a Picture
rotatingColor = proc _ -> do
  t <- double2Float ^<< time -< () -- Yampa's time is Double, Gloss units are Float.
  returnA -< rotate (180 * t / pi) $ Translate 200 200
                                   $ Color (withAlpha 0.8 red)
                                   $ circleSolid 80