discussion about touch events
Jim Graham
james.graham at oracle.com
Wed Nov 20 15:58:11 PST 2013
I'm only occasionally skimming this thread so I hope I don't disrupt discussions by throwing in a few observations now and then...
On 11/20/2013 7:30 AM, Assaf Yavnai wrote:
> Pavel,
>
> I think that this is a very good example why touch events should be processed separately from mouse events.
> For example, if you will press a button with a touch it will remain in "hover" state although you released the finger from the screen. This is done because the "hover" state listen to the mouse coordinates, which is invalid for touch.
> Touch events doesn't have the concept of move, only drag.
Some screens actually have a hover mode (the Galaxy Note series can detect both finger and stylus hover, but they use a Wacom-like sensor rather than the typical touch sensor). In those cases, one could consider a hover mode to be similar to a mouse move event.
Even screens without hover detection have pressure detection and a light pressure below a configurable "touch" threshold could probably also be treated as hover as well?
Even with a mouse you have the concept of "the mouse has left the building" - consider if the mouse was moved to another screen for instance. The loss of finger/stylus hover should probably be treated similarly, the location of the current "finger/mouse/pointer thing" is currently "nowhere near anything" when the touch implement leaves detection range...?
On the subject of detection of proximity of points to shapes, that is actually an area that I've tried to come up with good algorithms for the AA shaders and not had much great success (I've come up with various approximations, but they often tend to suffer from the points raised earlier about very wide and thin rectangles). The CAG code of the java.awt.geom package (cloned into the FX source base) could potentially detect intersections between an oval and an arbitrary shape, but I'm not sure of the performance. I know that I once found the AWT team using the Area code to do picking (with just rectangle shapes, though) until I explained to them that there are probably some more specific algorithms that would be an order of magnitude faster for the common case of rectangle-rectilinear math. Still, they managed to use it just fine for a bit without noticing any performance issues. The code base also has some fairly optimized "rectangle intersects arbitrary shape" code that!
would b
e much faster than an Area.intersect(Shape) operation. It might be generalizable to "oval intersects arbitrary shape" with some work, or perhaps "set of rectangles or polygons that approximate an oval intersects arbitrary shape". I don't have time right now to look into that, but I'm throwing the suggestions out in case someone else is inspired...
...jim
More information about the openjfx-dev
mailing list