All FRP core functions can be used (see the reference for dyna
package).
Main types
Evt a
- event streamsDyn a
- dynamic valuesRun a
- main app/frp monadP2
/P3
- vectors (2D and 3D)Pio a
- processingIO
-monadDraw
- a sequence of drawing instructions (Pio ()
)Click
- click eventSpec
- initial config for the application
Run the application
runApp :: Spec -> Run (Dyn Draw) -> IO ()
-- init application, setup instructions
data Spec = Spec { spec'setup :: Pio () }
User interaction
-- mouse input
mouse :: Dyn P2
mouseRight :: Evt P2
mouseLeft :: Evt P2
mouseMiddle :: Evt P2
mouseWheel :: Evt Float
-- mouse pointer velocity
mouseV:: Dyn P2
-- mouse pointer acceleration
mouseA :: Dyn P2
-- detection of drag action
isDrag :: MouseButton -> Dyn Bool
drag :: MouseButton -> Dyn P2
dragV :: MouseButton -> Dyn P2
-- generic events
data Click = Click (Either Key MouseButton) KeyState Modifiers P2
data KeyState = Up | Down
getClicks :: Evt Click
-- Time that has passed since previous step of simulation
timeInterval :: Dyn Float
-- key actions
keyUp :: Key -> Evt Modifiers
keyDown :: Key -> Evt Modifiers
charUp :: Char -> Evt Modifiers
charDown :: Char -> Evt Modifiers
Drawing pictures and other processing functions
See the docs for processing-for-haskell.