- From: Brian Birtles <bbirtles@mozilla.com>
- Date: Fri, 04 Jul 2014 10:38:20 +0900
- To: "public-fx@w3.org" <public-fx@w3.org>
Web Animations minutes, 3 July 2014
Present: Doug, Shane, Brian
Archived etherpad:
https://web-animations.etherpad.mozilla.org/ep/pad/view/ro.92487irtSfEow/rev.18067
Agenda:
1. How is the bikeshed conversion going?
2. Computed timing
3. Filling animations
4. Name property
5. Finished promise
6. Readonly version for CSS interfaces
7. Offset sorting, clipping, construction
8. Where are we up to with AnimationPlayer.startTime?
1. HOW IS THE BIKESHED CONVERSION GOING?
========================================
(Shane)
Waiting on nested list support.
Probably want to move it to GitHub too. Maybe do that first.
> Shane and Doug to look into.
> Shane to implement interface summarization first.
Doug: We'll likely just turn off the mirroring to
https://github.com/web-animations/web-animations-spec and start doing
the conversion there.
Shane: Conversion will probably only take a day.
2. COMPUTED TIMING
==================
(Brian)
As per
http://lists.w3.org/Archives/Public/public-fx/2014AprJun/0174.html item
4, I added this to the spec
(https://dvcs.w3.org/hg/FXTF/rev/651feaed027a), then a whole lot of
discussion occurred about the DOMRectReadOnly pattern which I had
blindly followed:
http://lists.w3.org/Archives/Public/public-script-coord/2014AprJun/0246.html
I followed up with some questions here:
http://lists.w3.org/Archives/Public/public-fx/2014JulSep/0000.html
> Wait and see what feedback we get
3. FILLING ANIMATIONS
=====================
(Brian)
Previous discussion:
http://lists.w3.org/Archives/Public/public-fx/2014AprJun/0174.html item 3
Strawman proposal:
Behaviour:
* If there are 1 or more animations that fill forwards and are no longer
current, the first player returned by Element.getAnimationPlayers
returns that a player corresponding to the combined effect of all
forwards filling animations. It has the following properties:
- It is a regular AnimationPlayer pointing to a regular Animation as
source
- They Animation has a KeyframesEffect has 1~3 keyframes with a value
for all of the forwards-filling properties.
If *any* of the forwards filling animations for a given property
have composite 'replace', the resulting fill value will be in a keyframe
with composite 'replace'
If *all* are 'accumulate' or 'add' they'd go in a separate
keyframe with the appropriate composite mode
Not sure what happens if all are either 'accumulate' or 'add'
but it can probably be represented as one or the other.
- The animation has duration Infinity (probably startTime -Infinity,
not sure) (or does it just have fill mode)
* Other timing properties are set to some kind of defaults
It's important to use a player/animation that inherits from the regular
interface so that script doesn't have to handle this case specially.
From an implementation point of view, the UA basically needs to track
just the composite "fill" value for each property that has 1 or more
forwards-filling animations.
In the case where you have an animation stack like the following where
all the animations have finished and are filling forwards:
Animation F, add
Animation E, add <-- script is keeping this object alive
Animation D, add
Animation C, add
Animation B, add <-- script is keeping this object alive
Animation A, replace
Changing the animation values / timing of B or E should affect the
result as if animations A~F were still alive.
A UA could implement this by tracking the values for A, C+D, F but
discarding the rest of the object state when these objects were garbage
collected.
Note that it would need to do this even if Animation E had composite
mode 'replace' since that could be updated by script.
The important point is that getAnimationPlayers would *still* only
return one AnimationPlayer/Animation for the whole set and its keyframe
values would represent the composite effect of A~F. If changes were made
to E or B the keyframe values would be updated.
> On further discussion, the problem seems to be with changing this
summarised/filling player. What happens if you have a handle to a player
forming part of the filling value but then you get a handle to the
filling player and cancel it what happens to the one you had a handle on?
Use cases:
* understand the source of a filling value (Brian would prefer if the
same approach works whether the animation is playing or filling but he
might be dreaming)
* remove fill where the corresponding player is no longer reachable
> Shane and Doug to try to think of an approach that doesn't hit the
problems above.
4. NAME PROPERTY
================
(Brian)
Previous discussion:
http://lists.w3.org/Archives/Public/public-fx/2014AprJun/0141.html item 1
Proposal: It goes on AnimationEffect and we add a member to
KeyframeEffectOptions and MotionPathEffectOptions. It is purely
informational, setting it has no effect.
Rationale: It's a property of the effect. In CSS animation-name points
to the effect.
If you put it on Animation, then I think you'd expect changing it to
update the effect (which is pretty much how it works in CSS). However,
that doesn't quite work since not every @keyframes rule is represented
by the same KeyframeEffect object due to application of
animation-timing-function. I think it's better not to create something
that sort-of works like CSS but not quite (it's also different because
you can't change effects on the fly with CSS).
Shane: I think the point is that this *is* purely informational, and
therefore is *not* animation-name, which is a key. From a usage
perspective it's much nicer on the animation. If 'name' and
'animation-name' are too closely related lexicographically, we could
call it 'label' instead.
> There are different use cases here. Putting it on the effect makes
sense for mapping back to CSS @keyframes rules but is less useful for
animations generated by script (and probably SVG) where it seems useful
for authors to be able to tag the *Animation* not just the
*AnimationEffect* it is using. We can, of course, use expando properties
for that but if we standardize a property for it then, for example,
devtools on different UAs can report the same label.
Naming: label? ID is more idiomatic but these things will probably not
be unique (e.g. when they are cloned, or spawned from a single <animate>
element) so label might be better. Calling it "name" might cause
confusion with AnimationEffect.name? (assuming that's what we call it
there?) Maybe it's ok?
But 'name' is readonly for Function objects (and an 'effect' can point
to a function). Is that ok that sometimes anim.effect.name is readonly?
Add member to KeyframeEffectOptions and MotionPathEffectOptions but what
about the name on an Animation?
> We probably want to add a name property to Animation and
AnimationEffect but have yet to sort out details.
CSS integration spec will define how name automatically gets filled in
for effects coming from @keyframes rules.
5. FINISHED PROMISE
===================
(Brian)
Previous discussion:
http://lists.w3.org/Archives/Public/public-fx/2014AprJun/0141.html item 2
and: http://lists.w3.org/Archives/Public/public-fx/2014AprJun/0174.html
item 2
I prepared a strawman proposal to get this moving.
> Send to list.
6. READONLY VERSION FOR CSS INTERFACES
======================================
(Brian)
> Follow this up next time.
7. OFFSET SORTING, CLIPPING, CONSTRUCTION
=========================================
(Shane)
Summary: we should be strict or generous, but not sometimes one and
sometimes the other.
> Shane to describe this on the list and send two proposals.
8. WHERE ARE WE UP TO WITH AnimationPlayer.startTime?
=====================================================
(Brian)
> Follow this up next time.
Next meeting, Thurs 10 July 2014 07:00 UTC
Local time:
http://arewemeetingyet.com/UTC/2014-07-10/07:00/Web%20Animations
Past meetings: http://www.w3.org/Graphics/fx/wiki/Web_Animations/Meetings
Received on Friday, 4 July 2014 01:38:42 UTC