[CSSWG] Minutes Tokyo F2F Thu 2017-04-20 Part II: Transforms [css-transforms]

=========================================
   These are the official CSSWG minutes.
   Unless you're correcting the minutes,
  Please respond by starting a new thread
    with an appropriate subject line.
=========================================


FX Track
++++++++

Transforms
----------

   - RESOLVED: Close (https://github.com/w3c/csswg-drafts/issues/933:
               "Effect of transforms on background-attachment:fixed" without
               any change.
   - RESOLVED: Close both https://github.com/w3c/csswg-drafts/issues/930
               "Some comments on the non-scaling stroke spec text" and
               https://github.com/w3c/csswg-drafts/issues/929 "scale 0
               on non-scaling stroke" with no change to transforms spec.
   - RESOLVED: Accept https://github.com/w3c/csswg-drafts/issues/927:
               "Smarter interpolation of truncated lists" as written.
   - RESOLVED: No change to current getComputedStyle behavior, but we
               hope that CSS typed OM will return a function for
               computedStyleMap (https://github.com/w3c/csswg-drafts/issues/891)
   - RESOLVED: No change for https://github.com/w3c/csswg-drafts/issues/895:
               "transform-origin: 0% != 0px"; Implementations just
               need to support transform-box.
   - RESOLVED: No change on https://github.com/w3c/csswg-drafts/issues/892:
               Define basis for percentage transform on patterns,
               gradients, clipPath; issue handled by transform-box
   - RESOLVED: Add "auto" as initial value for transform-box, give it
               the current border-box/view-box dual behavior.
               Note: This was changed to initial value of view-box the next day.
   - RESOLVED: Add stroke/padding/content-box, and set up the proper
               mappings between them for transform-box.
               Note: Mappings resolved to match fill-stroke fpwd on Friday.
   - RESOLVED: The root SVG element of a standalone is a CSS box, and
               the standard implications fall out of that.
   - RESOLVED: Overflow bounds that are computed at the end of layout
               can increase (but not decrease) by paint-level effects
               such as transforms.

===== FULL MINUTES BELOW ======

Agenda: https://wiki.csswg.org/planning/tokyo-2017#topics
Note: The group split the morning of the 20 April on two
       tracks: FX and Text.

Scribe: dino

FX Track
++++++++

Transforms
==========

Status
------

   smfr: There are 9 issues that need discussion on Transforms Level
         1. I've been splitting the L1 and L2 tests out. I'm also
         looking over the L1 test suite to work out gaps in coverage.
   <smfr> list of issues with needs-discuss: 
https://github.com/w3c/csswg-drafts/issues?q=is%3Aopen+is%3Aissue+label%3Acss-transforms-1+label%3A%22Needs+Group+Input%2FDecision%22
   smfr: I'll report in a week or two. So far I've just moved any 3D
         stuff into another directory. I'm going to move SVG stuff
         into a new directory too.
   smfr: I'll talk to gsnedders about what directory structure WPT
         prefers.
   dbaron: There are some mozilla tests in the mozilla/import
           directory. You should look there too.
   smfr: ok. And they have metadata?
   dbaron: Yes, but might need updating.

background-attachment: fixed
----------------------------
   Github topic: https://github.com/w3c/csswg-drafts/issues/933

   smfr: This issue doesn't need discussion because florian just
         commented.
   smfr: Long ago we resolved that b-a:fixed behaves like b-a:scroll
         if any ancestor has a non-none transform.
   smfr: Florian had a concern that maybe authors wanted to do
         something special. He now says he is ok.
   Rossen: Have we already resolved?
   <we look for a link to minutes... maybe from Hamburg>
   smfr: I think what we spec is what all browsers implement.
   dbaron: It might be weird to people if they use a translate and
           break b-a:fixed but I'm ok with it.

   RESOLVED: Close this issue without any change.

Comments on Scaling Stroke
--------------------------
   Github Topic: https://github.com/w3c/csswg-drafts/issues/930 and https://github.com/w3c/csswg-drafts/issues/929

   smfr: Two similar issues:
   smfr: Current implementations draw nothing when the matrix is
         non-invertible.
   smfr: This is just for svg's non-scaling stroke.
   smfr: Some comments want *something* to be drawn, but that would
         be a change to SVG.
   smfr: I suggest keeping the current behavior of drawing nothing.
   TabAtkins: Agree.
   dbaron: I agree too. We'd need to work out what to draw.
   Rossen: Is this a spec change?
   smfr: Current spec doesn't say anything about non-scaling stroke-
   smfr: not sure where that should be covered.
   Rossen: Sounds like we don't need to make a change in L1. Any
           change would have to be in the SVG specification.
   <smfr> https://www.w3.org/TR/SVG2/coords.html#VectorEffectProperty
   smfr: SVG 2 has some things to control the behavior ^^
   <Rossen> http://www.w3.org/TR/SVG2/painting.html#non-scaling-stroke
   Rossen: I can't see anything in the non-scaling stroke text about
           this.

   Rossen: OK. Seems that the consensus is that the Transforms L1
           text doesn't need to mention this. If there is a change to
           SVG, it will happen elsewhere.

   RESOLVED: Close both 930 and 929 with no change to transforms spec.
   <dbaron> but see the longer comment in 930

   Rossen: It might be nice to add a non-norm note to Transforms
           Level 1 explaining this.
   smfr: Yes.

Smarter interpolation of truncated lists
----------------------------------------
   Github Topic: https://github.com/w3c/csswg-drafts/issues/927

   smfr: We talked about this in Seattle a bit. We suggested adding a
         special name that can match anything. e.g. identity or none.
   smfr: Should we add this to level 1?
   smfr: There are some side-effects of not doing it - e.g. rotations
         greater than 360
   smfr: I don't like that it is a behavior change, so suggest
         deferring.
   TabAtkins: I'm ok with deferring any behavior change.

   Rossen: There was a lot of discussion on this. Have you played
           with it?
   smfr: We haven't implemented.
   Rossen: What is the fear of compatibility risk?
   smfr: They might get different animations.
   dbaron: Since people have to manually write this, there is no
           compat risk.
   <dbaron> (assuming they do, at least)

   smfr: This issue is also asking for magical matching (inserting
         identity transforms).
   smfr: It's saying that it uses the common prefix for as much as
         possible, then smoosh together the rest into a matrix.
   dbaron: There is more compat risk there.
   dbaron: Not sure how much interop there is here, since we've
           changed it a lot.
   TabAtkins: Better behavior would be nice, but yes there is a
              compat risk.

   smfr: Could we change this behavior in level 2?
   Rossen: More risky.
   dbaron: If we want to change, do it in level 1.
   shane: There is a risk. I don't think it is a big issue though. I
          have no data to support it. We're talking about visual
          behavior of an animation
   shane: and this is a fallback behavior that is now hopefully more
          closely matching the author intent.
   shane: I think this is only stopping messed up animations from
          looking messed up.
   birtles: It's hard to think of a case where it looks worse.

   smfr: So change the behavior for Level 1? As the github issue
         suggests?
   TabAtkins: That is the most reasonable way to intuit author
              preference here.
   smfr: Right.
   <no one disagrees>
   <wait.....>
   dbaron: We'd be hesitant to be first implementation, but if
           everyone else agrees, then we're ok.
   Rossen: If we already resolved this, do we need to change anything?
   smfr: I can't find it.
   TabAtkins: I don't think we did.
   smfr: Maybe we resolved this would be a L2 thing.
   Rossen: We can resolve it now.
   Rossen: Objections?
   <none>

   RESOLVED: Accept the issue as written.

getComputedStyle should return a list of transform functions
------------------------------------------------------------
   GitHub Issue: https://github.com/w3c/csswg-drafts/issues/891

   smfr: Implementations are always returning a matrix or matrix3d.
         Authors want a list of functions.
   dbaron: This will cause breakage.
   TabAtkins: The CSS Typed OM should return the functions
   dino: Suggested resolution - no change to current getComputedStyle
         behavior, but we hope that CSS typed OM will return a list
         of functions for computedStyleMap.
   Rossen: objections?
   <none>

   RESOLVED: No change to current getComputedStyle behavior, but we
             hope that CSS typed OM will return a function for
             computedStyleMap

transform-origin: 0% != 0px
---------------------------
   Github Topic: https://github.com/w3c/csswg-drafts/issues/895

   dbaron: It's only different for SVG?
   smfr: Yes.
   ChrisL: It's not that crazy to have the UA stylesheet do different
           things for SVG and CSS.

   smfr: Auto is one proposal. Or a keyword 'viewport'
   Rossen: I'd prefer 'auto' as a magic keyword. And this might be
           our only option.
   Rossen: Other comments?
   TabAtkins: I like 'auto'
   TabAtkins: Proposal is that the current 0% becomes 'auto', and
              then we change 0% to be the same as 0px
   smfr: So 'auto' would be different for CSS and SVG?.
   TabAtkins: I don't care about that as much as having 0% and 0px
              using the same base.
   TabAtkins: transform-origin will now accept an 'auto' value which
              will be the initial value. For CSS, that is equivalent
              to 50% 50%. For SVG, it's equivalent to 0px 0px. And,
              from now on, in SVG, % are in the same base as px, so
              relative to the element.
   <discussion of what % means for CSS properties in SVG>

   ChrisL: I want to make sure that we're not clipped to 0-100% for
           CSS in SVG stuff.
   dino: Definitely not for transform-origin.
   smfr: There is also a proposal for transform-box, which would
         affect what % are resolved against.
   smfr: This is in level 1, but I'm not sure there are
         implementations.
   birtles: We implemented it.
   <birtles> Gecko intent to ship has some background:
             https://groups.google.com/forum/#!topic/mozilla.dev.platform/ssV6H4_3WGU
   dino: If we all implement the transform-box values there is no
         need have the percentages change.
   birtles: Blink has it implemented behind a flag
   <birtles> Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=595829
   <BogdanBrinza> Edge doesn't have plans for (at least) next release
                  or two since we don't support CSS transforms on SVG
                  boxes yet, so the problem doesn't exist for us
   Rossen:  proposed resolution: no need to change anything for this
            issue. implementations just need to add transform-box, or
            behave as if you do implement it

   RESOLVED: No need to change anything for this issue.
             Implementations just need to support transform-box.

   smfr: So we think that heycam's comments are all addressed by
         transform-box.
   dbaron: Yes.

Define basis for percentage transform on patterns, gradients, clipPath
----------------------------------------------------------------------
   Scribe: TabAtkins
   GitHub Topic: https://github.com/w3c/csswg-drafts/issues/892

   smfr: Does transform-box resolve this one as well?
   TabAtkins: Yeah, should be.
   smfr: transform-box doesn't have a definition for the gradient
         "size" though. Perhaps it's not something you should be able
         to do.
   ChrisL: There's a default clip-path on the SVG root that's set to
           its bounding box.
   Rossen: Would the bounding box change if the clip-path was shrunk?
   ChrisL: No.
   Rossen: So no, there's no way to target the clip-path box.
   smfr: So a no-change?
   TabAtkins: Seems like it yes. Everything is either handled by
              transform-box already, or doesn't have a use-case.

   RESOLVED: no change

border-box vs view-box in transform-box
---------------------------------------
   GitHub Topic: https://github.com/w3c/csswg-drafts/issues/857

   TabAtkins: I have an action to review the CSS <=> SVG box keyword
              mappings and find a consistent mapping between them.
   TabAtkins: This one (border-box = view-box) is particularly bad;
              border-box normally equals stroke-box.
   TabAtkins: I suspect it was done solely to give us an initial
              value that captured the difference between CSS and SVG.
   Rossen: So is that a spec bug?
   TabAtkins: Yeah. We should make border-box work properly. Then add
              a new initial value (auto?) that still captures the
              dual-behavior we want.
   Rossen: Objections?
   smfr: Ah yeah, they're bending what border-box means right now.

   RESOLVED: Add "auto" as initial value for transform-box, give it
             the current border-box/view-box dual behavior

   TabAtkins: Further issue here - spec maps fill-box to border-box.
              That violates the mapping used elsewhere in CSS, where
              border=stroke and padding/content=fill.
   TabAtkins: Suspect it was just because there's only use-cases for
              those two, and they're close enough that they were just
              mapped for convenience. But that's inconsistent and bad
              for the platform.
   TabAtkins: Should we add the additional box keywords and set up a
              proper mapping?

   RESOLVED: Add stroke/padding/content-box, and set up the proper
             mappings between them for transform-box.

Transforms on root SVG element
------------------------------
   GitHub Topic: https://github.com/w3c/csswg-drafts/issues/894

   <room reads the issue>
   TabAtkins: Hm, initial comment claims that backgrounds & borders
              work on the root SVG of a standalone SVG doc?
   <Rossen> https://upload.wikimedia.org/wikipedia/commons/e/e3/Tiger.svg
   <ChrisL> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100
             100" style="border: 5px solid red">
   <ChrisL> <rect width="100" height="100" fill="green"/>
   <ChrisL> </svg>
   <dino> 
data:image/svg+xml,<svg%20width="20"%20height="20"%20style="border:%203px%20solid%20red"><circle%20cx="10"%20cy="10"%20r="10"/></svg>
   <dino> actually 
data:image/svg+xml,<svg%20xmlns="http://www.w3.org/2000/svg"%20width="20"%20height="20"%20style="border:%203px%20solid%20red"><circle%20cx="10"%20cy="10"%20r="10"/></svg>
   [Result: standalone SVG's root element is a CSS box in all impls.
       Chrome/WebKit have a bug that it treats the transform-origin
       as the top-left; everyone else just does the standard CSS
       behavior.]
   TabAtkins: So I think we can just agree, and let Amelia draft the
              language as she offered?

   RESOLVED: The root SVG element of a standalone is a CSS box, and
             the standard implications fall out of that.

How transforms affect overflow geometry
---------------------------------------
   GitHub Topic: https://github.com/w3c/csswg-drafts/issues/901

   Rossen: [draws example on whiteboard]
   Rossen: Opposite, start with something small with a 50% width,
           scale it large to overflow and trigger a scrollbar, do we
           trigger a scrollbar and resize the box?
   Rossen: Edge flips the scrollbar on once, that's it, and doesn't
           recompute the sizes.
   ChrisL: A common problem is one that would fit except that the
           scrollbars are there.
   Rossen: That only happens if you're throwing transforms around.
   flackr: In this example it's just something that was big
           beforehand.
   flackr: And this happens with normal layout too, right?
   TabAtkins: Yeah, everyone settles on displaying the scrollbar
              somehow.

   <smfr> https://drafts.csswg.org/css-transforms-1/issues-wd-2013#issue-48
   [reviews the minutes of the resolutions for issue 48]
   Rossen: So in this example (example scaled down) the layout bounds
           are still tall and trigger scrollbars.
   smfr: Is that the same as saying that overflow bounds are the
         union of the untransformed and transformed boxes?
   smfr: More detail - in a tree of transforms, you compute a
         bounding box without transforms, and one with transforms,
         and take the union.
   <smfr> https://lists.w3.org/Archives/Public/www-style/2015Nov/0167.html
   Rossen: Corollary: if you discover your transform bounds fit
           entirely in your box, you can omit the scrollbars.
   TabAtkins: No, that violates the "can increase bounds, not
              decrease".

   RESOLVED: Overflow bounds that are computed at the end of layout
             can increase (but not decrease) by paint-level effects
             such as transforms.

   <smfr> https://bug1198135.bmoattachments.org/attachment.cgi?id=8684006
   smfr: I'm concerned about the issue in the mail I just posted - if
         perspective can cause overflow bounds to increase, it might
         result in horizontal scrollbars in some cases that aren't
         there today.
   smfr: But apparently Firefox already does that, so maybe we're
         okay.
   Rossen: Anyway, this is a level 2 issue, since it's a 3d issue.
           We're good for level 1.

Finishing up
------------

   Rossen: So next steps?
   smfr: Not sure how to split up the matrix math. Previously was
         always a 4x4.
   smfr: Would be nasty to change it.
   TabAtkins: Seems fine to just keep it as 4x4 in the 2d case. Math
              works out the same.
   smfr: There's a bunch of needs-edits with the SVG label. I think I
         can get Amelia to help with those.

   smfr: So handling the publishing of level 1 vs 2.
   ChrisL: No need for a FPWD on level 1, we effectively just punted
           bits of the spec to level 2.
   ChrisL: Need a good changes section that describes what was
           punted, and a good DoC.
   <ChrisL> and fpwd of Transforms 2

   ChrisL: What sort of tests are these?
   smfr: Should all be reftests.
   smfr: Stuff that's easy to test has good coverage, hard to test
         has poor coverage.
   smfr: Probably a lot of duplicate tests on easy stuff.

Received on Saturday, 27 May 2017 00:48:59 UTC