packages feed

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