- From: Ian Hickson <ian@hixie.ch>
- Date: Tue, 17 Jul 2012 20:48:26 +0000 (UTC)
- To: whatwg@lists.whatwg.org
On Thu, 5 Jul 2012, Edward O'Connor wrote: > > Currently, there are only two ways to invoke the "clear regions that > cover the pixels" algorithm: by calling either addHitRegion() or > clearRect(). Authors should be able to explicitly remove a hit region as > well, with a removeHitRegion(id) method. > > Consider a region of a canvas which the author would like to toggle > between clickable and non-clickable states without drawing. Maybe > they're indicating clickability by drawing a different outline around > the region without actually redrawing the region itself, or perhaps > there is no visible indication that the region's clickability is > changing. Such an author should be able to straightforwardly achieve > this without redrawing the region (as clearRect would require) and > without installing a dummy hit region (as addHitRegion would require). Done. On Thu, 5 Jul 2012, Charles Pritchard wrote: > > There's also just removing the element from the DOM. Yes, I'd like a > removeHitRegion(Element) feature; though I can skate by with the empty > addHitRegion method. I don't follow this proposal. > I've not seen a response from you regarding the issues that Richard and > Steve have brought up around the lightweight nodes feature-proposal. It > seems relevant to the method signature of removeHitRegion. I checked the list but didn't see any recent relevant e-mails from anyone named Richard or Steve. If they filed bugs, I hope to get to those soon; I've been focusing on e-mail for a while to get the e-mail pile under control after having neglected it for too long. Re: using backing bitmaps for hit testing: On Fri, 6 Jul 2012, Rik Cabanier wrote: > > Yeah, this is the standard way of doing hit-testing. However, one > important use case is that this can be done with nested canvas elements. > Most (if not all) games, will use off-screen canvas elements to draw > elements which can then be reused. > > The programmer will creates hit test canvas elements which are then > composited similarly to the off-screen canvases. > > It seems that the additions that Ian made does not cover this use case > unless there's a way to extract the hit regions from a canvas and then > apply/remove them (with a possible matrix manipulation) to/from another > canvas. That's an interesting idea. I haven't added this yet, but it seems like something we should definitely keep in mind; if it turns out that the hit region API is popular, it would definitely be a logical next step. On Sat, 7 Jul 2012, Dean Jackson wrote: > > We're aware of this technique, but it has a couple of obvious issues: > > 1. It requires us to create a duplicate canvas, possibly using many MB > of RAM. It's generally going to be less memory to keep a list of > geometric regions. And performance won't be terrible if you implement > some spatial hashing, etc. > > 2. It doesn't allow for sub pixel testing. In your algorithm above, only > one region can be at a pixel (which also means it isn't our standard > drawing code with anti-aliasing). Consider a zoomed canvas, where we > might want more accurate hit testing. Certainly implementations are welcome to use a hit region list with fine paths, rather than pixels, so long as the effect is equivalent. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Tuesday, 17 July 2012 20:48:56 UTC