On Apr 8, 2009, at 9:23 AM, Simon Fraser wrote:
On Apr 8, 2009, at 7:06 AM, Eric Seidel wrote:
Dave, Simon, and other rendering gurus:
bool RenderObject::nodeAtPoint(const HitTestRequest&, HitTestResult&
result, int _x, int _y, int tx, int ty, HitTestAction hitTestAction)
_x, _y, tx, ty are very confusing.
As far as I can tell, _x, _y are relative to the root layer (which
can
change during hit-testing!) and tx, ty are more of the HTML "offset
to
your parent" optimization which painting uses.
Can you explain what the best way to convert from _x, _y to local
coordinates? And what I should rename _x, _y, and tx, ty to in a
forthcoming "make hit testing readable to normal humans" cleanup
patch?
As I understand it, _x and _y are relative to tx, ty, which in turn
is relative
to the rootLayer.
In general tx and ty, as passed to painting and hit testing
functions, are
the offsets that put you in the coordinate space of the parent
renderer,
relative to the current rootLayer being used for painting or hit
testing
(which, as you note, gets reset for transforms, and I think should
also get reset for HTML/SVG boundaries). So to get local x and y
for hit testing,
you'll see code like:
tx += x();
ty += y()
...
updateHitTestResult(_x - tx, _y - ty)
It is all rather confusing, but much of the complexity comes from
having to
deal with inlines.
Maybe one thing that would help would be combining (tx, ty) into an
IntPoint and (_x, _y) into an IntSize (since it as an offset from the
point established by tx, ty). Or vice versa.
Regards,
Maciej
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev