<div style="font-family:arial,helvetica,sans-serif"><font>Hey Ion,<div><br></div><div>A few things...</div><div>- We didn't actually switch to floats for Layout, but with sub-pixel layout enabled, we use integers that represent 1/60th of a pixel instead of one (similar to Gecko).</div>

<div>- The CSSOM defines those properties to be longs <a href="http://dev.w3.org/csswg/cssom-view/#extensions-to-the-htmlelement-interface">http://dev.w3.org/csswg/cssom-view/#extensions-to-the-htmlelement-interface</a> so changing this would violate the spec and potentially lead to web-compat issues.</div>

<div>- You can get floating-point-level precision values by using <span style="background-color:rgb(255,255,255);white-space:pre-wrap">getClientBoundingRect().</span></div><div><span style="background-color:rgb(255,255,255);white-space:pre-wrap">- IE uses a flag that switches between ints and floats. I don't advocate this option (I think it adds complexity and doesn't solve a problem that can't be solved using getClientBoundingRect) but it at least avoids web compat issues. </span><span style="white-space:pre-wrap"><a href="http://msdn.microsoft.com/en-us/library/ie/hh673543(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/ie/hh673543(v=vs.85).aspx</a></span></div>

<div><span style="white-space:pre-wrap"><br></span></div><div><span style="white-space:pre-wrap">Hope that helps,</span></div><div>-Levi</div><div><br><div class="gmail_quote">On Mon, Jun 18, 2012 at 7:56 AM, Ion Rosca <span dir="ltr"><<a href="mailto:rosca@adobe.com" target="_blank">rosca@adobe.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal">Hello,<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I have some questions regarding zooming and offsetWidth/Height/Top/Left<b>. <u></u><u></u></b></p><p class="MsoNormal">Currently, Element.offset* properties return imprecise values when zooming in/out. One of the bugs describing this problem would be <a href="http://code.google.com/p/chromium/issues/detail?id=104074" target="_blank">Issue 104074: offsetWidth of element is shrinking when zooming in</a> with a simple <a href="http://jsfiddle.net/V4HQc/" target="_blank">test case</a>. <u></u><u></u></p>

<p class="MsoNormal">The product I’m working on also embeds WebKit and it would really need more precision from Element.offset*. We’ve done some testing by making offset*s to return floats and this approach appears to improve precision a lot.<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I found in <a href="http://lists.webkit.org/pipermail/webkit-dev/2011-June.txt" target="_blank">archive</a> an email from <i><a href="mailto:leviw@chromium.org" target="_blank">Levi Weintraub</a></i>, sent in June 2011, saying:<u></u><u></u></p>

<p class="MsoNormal"><i><span style="font-size:10.0pt;font-family:"Courier New"">… Changing rendering (and hit testing) to use floats does not necessarily mean<u></u><u></u></span></i></p><p class="MsoNormal"><i><span style="font-size:10.0pt;font-family:"Courier New"">that we need to expose floats through the dom api, however if we are to<u></u><u></u></span></i></p>

<p class="MsoNormal"><i><span style="font-size:10.0pt;font-family:"Courier New"">support sub-pixel layout (i.e. style=?left: 12.3px?) this would be required.<u></u><u></u></span></i></p><p class="MsoNormal"><i><span style="font-size:10.0pt;font-family:"Courier New"">Specifically we?d need to change the offsetLeft/Top/Width/Height properties<u></u><u></u></span></i></p>

<p class="MsoNormal"><i><span style="font-size:10.0pt;font-family:"Courier New"">to return floating point values <a href="https://bugs.webkit.org/show_bug.cgi?id=54018" target="_blank">[2]</a>.</span></i><span style="font-size:10.0pt;font-family:"Courier New""><u></u><u></u></span></p>

<p class="MsoNormal">The meta <a href="https://bugs.webkit.org/show_bug.cgi?id=60318" target="_blank">bug 60318</a>  (<b>Switch away from integers …)</b> Levi was working on is already fixed and the inner bugs (addressing this problem) <a href="https://bugs.webkit.org/show_bug.cgi?id=54018" target="_blank">bug 54018</a><b> (Make offset* return doubles instead of ints) </b>and<b> </b><a href="https://bugs.webkit.org/show_bug.cgi?id=39884" target="_blank">bug 39884</a><b> - Full Page Zoom: rounding errors with element metrics </b>are still opened and theirs resolution is not clear.<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">What’s your opinion on this subject? Were there some other discussions on it I couldn’t find? Is there a chance for making offset properties returning floats to be accepted? What are the implications of making this change in terms of specifications?<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Thank you,<u></u><u></u></p><p class="MsoNormal">Ion Rosca<u></u><u></u></p></div></div></div></div><br>_______________________________________________<br>
webkit-dev mailing list<br>
<a href="mailto:webkit-dev@lists.webkit.org">webkit-dev@lists.webkit.org</a><br>
<a href="http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev" target="_blank">http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev</a><br>
<br></blockquote></div><br></div></font></div>