gesture
Purely functional recognition of Drag and Click gestures over a W3C Pointer Event -compatible API, for Scala/Scala.js
Built on top of the State
monad provided by the Cats library.
gesture core
Contains the library code:
-
GestureProcessor
converts a series ofPointerEvent
s into a series ofGestureEvent
s, while updating a Finite State Machine represented byPointerState
. -
Optionally,
GestureAndRegionProcessor[R]
can extend the functionality to tracking the regionR
where the gesture began and completed, if any. The region itself is provided by the user of the library an can be any type, so long a there is a search function(Double, Double) => Option[R]
to find the regionR
at a coordinate, if any. -
Coordinates are modeled as
(Double, Double)
Published for both Scala.jvm and Scala.js.
SBT: "com.github.benhutchison" %%% "gesture" % "0.3"
Changelog
Version | When | Changes |
---|---|---|
0.1 | Jan 16 | Initial release |
0.2 | Oct 16 | Upgrade libs, cats to 0.7.2, scalajs-dom to 0.9 |
0.3 | Nov 16 | Scala 2.12, cats to 0.8.1 |
gesture demo
Shows a working demo of the recognition system, implemented over an HTML canvas. Colored rectangles can be created and dragged around the screen.
To try it out, clone the project, run sbt demo/fullOptJS
, and then load file demo/demo-opt.html
in a browser.
The demo uses the reliable Points polyfill developed by Rich Harris to provide Pointer Events across browsers/devices.