shine-examples-0.1: simple-interaction/Main.hs
{-# LANGUAGE CPP #-}
import Graphics.Shine
import Graphics.Shine.Input
import Graphics.Shine.Picture
import GHCJS.DOM (currentDocumentUnchecked)
#if defined(ghcjs_HOST_OS)
run :: a -> a
run = id
#elif defined(MIN_VERSION_jsaddle_wkwebview)
import Language.Javascript.JSaddle.WKWebView (run)
#else
import Language.Javascript.JSaddle.WebKitGTK (run)
#endif
main :: IO ()
main = run $ do
doc <- currentDocumentUnchecked
ctx <- fixedSizeCanvas doc 800 600
play ctx doc 30 initialState draw handleInput step
where
initialState = False
draw False = Empty
draw True = RectF 300 300
handleInput (MouseBtn BtnLeft Down _) = const True
handleInput (MouseBtn BtnLeft Up _) = const False
handleInput _ = id
step _ = id