[webkit-dev] Question about -webkit-transform: scale3d() when zero scale factor is used.

2011-02-03 Thread W. James MacLean
What is the intended behaviour if someone applies the following style to an
element:

-webkit-transform: scale3d(0.8, 0.8, 0)

?

Right now (in Chromium and Safari) there are two different behaviours
depending whether the GPU is involved or not.

With gpu acceleration the objects renders properly, but stops responding to
mouse events. This is due to the fact that elements with non-invertible
transforms are excluded from hit testing.

Without gpu acceleration, the object renders properly and continues to
respond to mouse events. This is due to the fact that when makeRenderable()
is called on the element's transform, it is forced to be affine and it
becomes invertible in the process.

So which, if either, is correct?

The following quote is found at

http://www.w3.org/TR/css3-2d-transforms/

In some cases, an animation might cause a transformation matrix to be
singular or non-invertible. For example, an animation in which scale moves
from 1 to -1. At the time when the matrix is in such a state, the
transformed element is not rendered.

In this case, neither behaviour seems quite consistent, since in both case
the element is rendered. Then again, this is -webkit-transform, not CSS
transform, so are the intended outcomes different?

Cheers,

James
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Question about -webkit-transform: scale3d() when zero scale factor is used.

2011-02-03 Thread Simon Fraser
On Feb 3, 2011, at 7:49 AM, W. James MacLean wrote:

 What is the intended behaviour if someone applies the following style to an 
 element:
 
 -webkit-transform: scale3d(0.8, 0.8, 0)
 
 ?
 
 Right now (in Chromium and Safari) there are two different behaviours 
 depending whether the GPU is involved or not.
 
 With gpu acceleration the objects renders properly, but stops responding to 
 mouse events. This is due to the fact that elements with non-invertible 
 transforms are excluded from hit testing.
 
 Without gpu acceleration, the object renders properly and continues to 
 respond to mouse events. This is due to the fact that when makeRenderable() 
 is called on the element's transform, it is forced to be affine and it 
 becomes invertible in the process.
 
 So which, if either, is correct?
 
 The following quote is found at
 
 http://www.w3.org/TR/css3-2d-transforms/
 
 In some cases, an animation might cause a transformation matrix to be 
 singular or non-invertible. For example, an animation in which scale moves 
 from 1 to -1. At the time when the matrix is in such a state, the transformed 
 element is not rendered.
 
 In this case, neither behaviour seems quite consistent, since in both case 
 the element is rendered. Then again, this is -webkit-transform, not CSS 
 transform, so are the intended outcomes different?

Please file a bug on this issue.

Since elements are planar, scaling in the Z plane doesn't really make much 
sense on the appearance of the element itself, but it will affect the 
z-positions of children which project out of the plane. I think we may need to 
clarify this in the 3D transforms spec, and suggest that the element remains 
visible and hit-testable even when its z-scale is 0.

Simon

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