On 4/6/2011 12:32 PM, David Hyatt wrote:
He wants a way to detect Desktop zoom (which is done two different ways in 
WebKit).  It's difficult to figure out how to expose these, since Desktop zoom 
is ultimately just the CSS zoom property, which can be applied to any element 
(so folding it into a global makes little sense).  The other kind of Desktop 
zoom that involves a fixed scale factor applies a transform.  Again, transforms 
can be applied to descendant elements as well, so relying solely on what 
happened to be specified at the document level makes little sense.
The descendant elements are under the control of the author.

That is, if I decide to use body.style.webkitTransform, in my scripting environment, I'm going to know that,
because I initiated the request, and I'll add that to my calculations.

Worst case, I can always walk the DOM, grab the transform style, and use CSSMatrix to calculate values.

With desktop zoom, the user initiates through the UA, which sends a resize event through to window, but the scale is not directly exposed to the scripting environment in WebKit.

I am simply looking for the scale factor; this is an accessibility issue, for users who are using the UA zoom.

I'm not really sure how to easily solve this problem.  I suppose we could just 
mix in document-level zoom and transform state into devicePixelRatio, but that 
feels inelegant to me given that individual child elements can change the zoom 
and transform.  It wouldn't necessarily be accurate.  I also don't like the 
idea of having to re-resolve style just because the zoom level changed.  That 
would just slow things down.
Current use of window.devicePixelRatio is static, we might as well keep it that way. On mobile devices, authors disable UA scaling and handle the entire process themselves.

I see adding a pixel ratio property to window.screen as the cleanest solution.

CSS checks work, they're not slow, but they're extra work on the author, and in-elegant, as media matches return booleans, not float values. They're inefficient, but not slow in any practical sense.

I'm really open to any kind of help I can give here.

I've full experience implementing the stack, from multi-level descendant transforms starting at document.body, to the hacks necessary to get window.screen.pixelRatio, and still support an additional magnification AT, such as ZoomText or the OS magnifier. I also have experience with transform3d/webgl, but that's a different issue.

I've spoken to reps from both Google (re: TV) and Microsoft about having distinct X and Y ratios, as MS currently does in screen. Robert O suggested that tracking horizontal and vertical scaling separately was unnecessary (non square pixels) on modern displays. Both reps agreed. It doesn't harm anything, to have both X and Y scale values, but it does not seem to be necessary.
http://msdn.microsoft.com/en-us/library/ms535868(v=vs.85).aspx

Netscape exposes the value to trusted scripts as screenPixelsPerCSSPixel
through their Utils Components interface.
https://developer.mozilla.org/en/NsIDOMWindowUtils


-Charles
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to