Web Animations/Meetings/Meeting 13

From Effects Task Force

Time, location: 17 Apr 16:30 PDT / 18 Apr 09:30 AEST / 18 Apr 08:30 JST, Skype + Etherpad

Log

Agenda:
* Changes to fill modes / definition of "active"
* Liveness of animation objects and templates
  - We want properties of animation objects to be live
  - As for animation templates, we want changes to be reflected in the animation objects created from them
    -- one proposal is that properties on animation objects, if null, take their value from their template (see example 1 below)
* Spec progress
  - Renaming the template classes
  - Need for primary group instance

Example 1: animation objects, if null, take their value from their template
var a = AnimationTemplate("4s");
var b = a.animate(someDiv);
// b has duration of 4s
a.duration = 8s;
// b has duration of 8s
b.duration = 5s;
// b has duration of 5s
a.duration = 6s;
// b still has duration of 5s

Discussion about how to represent this in the Animation IDL - want to make it clear when a property is overridden but also want to make it easy to get the current value.

Property with getter and setter + isPropertyLocal could work - e.g.
duration
isDurationLocal

Then setting isDurationLocal to false reverts duration to the parent value, setting isDurationLocal to true effectively pins the current value of duration.
the isXXXLocal is part of the WebTiming interface

One other possibility is isPropertyLocal("duration") ?
  -- reduces the number of methods on that interface
  -- could still have revert/pin behaviour by also providing setPropertyLocal("duration", true)

var dur = anim.duration // Fetch the "effective" duration, i.e. queries template if not set locally?
anim.duration = 8; // Sets it locally
anim.isPropertyLocal("duration", false); // ?

var dur = anim.duration // fetch effective duration
anim.setLocalProperty("duration", null or a number)
anim.getLocalProperty("duration") -- returns null or a number

<-- OR FOR SUPER HAPPY SIMPLE TIMES ->
anim.intrisicDuration [RW] // fetch / set local duration, might return null
anim.duration [RO] // fetch inherited duration if anim.intrinsicDuration is null, can't set this here!
<- END SUPER HAPPY SIMPLE TIMES ->

Q: What happens with AnimationTemplates and AnimationGroupTemplates? What is the duration of the <animation> elements in these three cases

<par duration="10s">
  <animation duration="20s"/>
  <animation/>  <--- The AnimationTemplate object has duration = null ?
  <animation duration="5s"/>
</par>
Fill modes:
<seq>
  <animate dur="3s" id="a"/>
  <animate delay="2s" dur="4s" fill="backwards" id="b"/>
</seq>

At t=0s, do you see the backwards fill from b?

0-3s: A's animation and B's backwards fill apply
3-5s: B's backwards fill applies
5-9s: B's animation applies

One alternative:
0-3s: A's animation applies
3-5s: B's backwards fill applies
5-9s: B's animation applies

Renaming:

AnimationTemplate is too long
var anim = new AnimationTemplate();

A:
AnimationTemplate -> Animation
Animation -> AnimationInstance
AnimationGroupTemplate -> Timeline
AnimationGroup -> TimelineInstance

B:
AnimationTemplate -> Animation
Animation -> AnimationInstance
AnimationGroupTemplate -> AnimationGroup
AnimationGroup -> AnimationGroupInstance
Go with Timeline for now (i.e. A)