@@ -3269,13 +3269,13 @@ The <a>timing function</a> specified on the last keyframe in the
32693269list is never applied.
32703270
32713271Each <a>keyframe</a> may have a <dfn>keyframe-specific composite
3272- operation</dfn> that, if not null, is applied to all values
3273- specified in that <a>keyframe</a> .
3272+ operation</dfn> that, if set, is applied to all values specified in that
3273+ <a>keyframe</a> .
32743274The possible operations and their meanings are identical to those defined
32753275for the <a>composite operation</a> associated with the <a>keyframe effect</a>
32763276as a whole in [[#effect-composition]] .
32773277If the <a>keyframe-specific composite operation</a> for a <a>keyframe</a>
3278- is null , the <a>composite operation</a> specified for the
3278+ is not set , the <a>composite operation</a> specified for the
32793279<a>keyframe effect</a> as a whole is used for values specified in that keyframe.
32803280
32813281<h4 id="calculating-computed-keyframes">Calculating computed keyframes</h4>
@@ -4669,10 +4669,10 @@ interface KeyframeEffect : AnimationEffect {
46694669 dictionary ComputedKeyframe {
46704670 // ... property-value pairs ...
46714671 // i.e. DOMString propertyName
4672- double? offset = null;
4673- double computedOffset;
4674- DOMString easing = "linear";
4675- CompositeOperation? composite = null ;
4672+ double? offset = null;
4673+ double computedOffset;
4674+ DOMString easing = "linear";
4675+ CompositeOperationOrAuto composite = "auto" ;
46764676 };
46774677 </pre>
46784678
@@ -4701,8 +4701,9 @@ interface KeyframeEffect : AnimationEffect {
47014701 :: The <a>keyframe-specific composite operation</a> used to combine the
47024702 values specified in this keyframe with the <a>underlying value</a> .
47034703
4704- This member will be <code> null</code> if the <a>composite
4705- operation</a> specified on the <a>keyframe effect</a> is being used.
4704+ This member will be {{CompositeOperationOrAuto/auto}} if the
4705+ <a>composite operation</a> specified on the <a>keyframe effect</a> is
4706+ being used.
47064707
47074708 </div>
47084709
@@ -4722,10 +4723,10 @@ interface KeyframeEffect : AnimationEffect {
47224723
47234724 <pre class='idl'>
47244725 dictionary BaseComputedKeyframe {
4725- double? offset = null;
4726- double computedOffset;
4727- DOMString easing = "linear";
4728- CompositeOperation? composite = null ;
4726+ double? offset = null;
4727+ double computedOffset;
4728+ DOMString easing = "linear";
4729+ CompositeOperationOrAuto composite = "auto" ;
47294730 };
47304731 </pre>
47314732
@@ -4999,17 +5000,17 @@ WebIDL-like definition:
49995000dictionary Keyframe {
50005001 // ... property-value pairs ...
50015002 // i.e. DOMString propertyName
5002- double? offset = null;
5003- DOMString easing = "linear";
5004- CompositeOperation? composite = null ;
5003+ double? offset = null;
5004+ DOMString easing = "linear";
5005+ CompositeOperationOrAuto composite = "auto" ;
50055006};
50065007
50075008dictionary PropertyIndexedKeyframes {
50085009 // ... property-value and property-valuelist pairs ...
50095010 // i.e. (DOMString or sequence&lt;DOMString&gt;) propertyName
50105011 (double? or sequence<double?>) offset = [];
50115012 (DOMString or sequence<DOMString>) easing = [];
5012- (CompositeOperation? or sequence<CompositeOperation? >) composite = [];
5013+ (CompositeOperationOrAuto or sequence<CompositeOperationOrAuto >) composite = [];
50135014};
50145015
50155016typedef (sequence<Keyframe> or PropertyIndexedKeyframes) KeyframeArgument;
@@ -5042,8 +5043,8 @@ The meaning and allowed values of each argument is as follows:
50425043:: The <a>keyframe-specific composite operation</a> used to combine the values
50435044 specified in this keyframe with the <a>underlying value</a> .
50445045
5045- If <code> null </code> , the <a>composite operation</a> specified on the
5046- <a>keyframe effect</a> will be used.
5046+ If {{CompositeOperationOrAuto/auto}} , the <a>composite operation</a>
5047+ specified on the <a>keyframe effect</a> will be used.
50475048
50485049
50495050Since this type cannot be expressed in WebIDL, its processing is defined in
@@ -5096,7 +5097,7 @@ otherwise, using the following procedure:
50965097 dictionary BasePropertyIndexedKeyframe {
50975098 (double? or sequence<double?>) offset = [];
50985099 (DOMString or sequence<DOMString>) easing = [];
5099- (CompositeOperation? or sequence<CompositeOperation? >) composite = [];
5100+ (CompositeOperationOrAuto or sequence<CompositeOperationOrAuto >) composite = [];
51005101 };
51015102 </pre>
51025103
@@ -5105,9 +5106,9 @@ otherwise, using the following procedure:
51055106
51065107 <pre class='idl'>
51075108 dictionary BaseKeyframe {
5108- double? offset = null;
5109- DOMString easing = "linear";
5110- CompositeOperation? composite = null ;
5109+ double? offset = null;
5110+ DOMString easing = "linear";
5111+ CompositeOperationOrAuto composite = "auto" ;
51115112 };
51125113 </pre>
51135114
@@ -5330,11 +5331,11 @@ keyframes using the following procedure:
53305331 1. If the “composite” member of the <var> property-indexed
53315332 keyframe</var> is <em> not</em> an empty sequence:
53325333
5333- 1. Let <var> composite modes</var> be a sequence of <a>nullable</a>
5334- <a>composite operations</a> assigned from the
5334+ 1. Let <var> composite modes</var> be a sequence of
5335+ {{CompositeOperationOrAuto}} values assigned from the
53355336 “composite” member of <var> property-indexed
53365337 keyframe</var> .
5337- If that member is a single <a>nullable</a> <a>composite
5338+ If that member is a single {{CompositeOperationOrAuto}} value
53385339 operation</a> , let <var> composite modes</var> be a sequence of
53395340 length one, with the value of the “composite” as its
53405341 single item.
@@ -5345,7 +5346,8 @@ keyframes using the following procedure:
53455346 from the beginning of the list until <var> composite modes</var>
53465347 has as many items as <var> processed keyframes</var> .
53475348
5348- 1. Assign each non-null value in <var> composite modes</var> to the
5349+ 1. Assign each value in <var> composite modes</var> that is not
5350+ {{CompositeOperationOrAuto/auto}} to the
53495351 <a>keyframe-specific composite operation</a> on the
53505352 <a>keyframe</a> with the corresponding position in
53515353 <var> processed keyframes</var> until the end of <var> processed
@@ -5435,7 +5437,8 @@ dictionary KeyframeEffectOptions : EffectTiming {
54355437 animation with the <a>effect stack</a> , as specified by one
54365438 of the <a>CompositeOperation</a> enumeration values.
54375439 This is used for all <a>keyframes</a> that specify
5438- a null <a>keyframe-specific composite operation</a> .
5440+ a {{CompositeOperationOrAuto/auto}} <a>keyframe-specific composite
5441+ operation</a> .
54395442
54405443</div>
54415444
@@ -5462,39 +5465,51 @@ enum IterationCompositeOperation {"replace", "accumulate"};
54625465 subsequent iterations of an <a>animation effect</a> build
54635466 on the final value of the previous iteration.
54645467
5465- <h3 id="the-compositeoperation-enumeration">The <code>CompositeOperation</code> enumeration </h3>
5468+ <h3 id="the-compositeoperation-enumeration">The <code>CompositeOperation</code> and <code>CompositeOperationOrAuto</code> enumerations </h3>
54665469
5467- The possible values of an <a>animation effect</a> 's
5470+ The possible values of an <a>keyframe effect</a> 's
54685471composition behavior are represented by the
54695472<dfn>CompositeOperation</dfn> enumeration.
54705473
54715474<pre class='idl'>
54725475enum CompositeOperation {"replace", "add", "accumulate"};
54735476</pre>
54745477
5475- : <code> replace</code >
5478+ : <dfn enum-value for=CompositeOperation><dfn enum-value for=CompositeOperationOrAuto> replace</dfn> </dfn >
54765479:: Corresponds to the <a
54775480 lt="composite operation replace"> replace</a>
54785481 <a>composite operation</a> value such that
54795482 the <a>animation effect</a> overrides the <a>underlying value</a> it
54805483 is combined with.
54815484
5482- : <code> add</code >
5485+ : <dfn enum-value for=CompositeOperation><dfn enum-value for=CompositeOperationOrAuto> add</dfn> </dfn >
54835486:: Corresponds to the <a
54845487 lt="composite operation add"> add</a>
54855488 <a>composite operation</a> value such that
54865489 the <a>animation effect</a> is <a
54875490 lt="animation addition"> added</a> to the <a>underlying value</a>
54885491 with which it is combined.
54895492
5490- : <code> accumulate</code >
5493+ : <dfn enum-value for=CompositeOperation><dfn enum-value for=CompositeOperationOrAuto> accumulate</dfn> </dfn >
54915494:: Corresponds to the <a
54925495 lt="composite operation accumulate"> accumulate</a>
54935496 <a>composite operation</a> value such that
54945497 the <a>animation effect</a> is <a
54955498 lt="animation accumulation"> accumulated</a> on to the
54965499 <a>underlying value</a> .
54975500
5501+ The possible values of a [=keyframe=] 's composition behavior share the same
5502+ values as the {{CompositeOperation}} enumeration along with the additional
5503+ {{CompositeOperationOrAuto/auto}} value.
5504+
5505+ <pre class='idl'>
5506+ enum CompositeOperationOrAuto {"replace", "add", "accumulate", "auto"};
5507+ </pre>
5508+
5509+ : <dfn enum-value for=CompositeOperationOrAuto>auto</dfn>
5510+ :: Indicates that the [=composite operation=] of the associated [=keyframe
5511+ effect=] should be used.
5512+
54985513<h3 id="the-animatable-interface-mixin">The <code>Animatable</code> interface mixin</h3>
54995514
55005515Objects that may be the target of an {{KeyframeEffect}} object implement
@@ -5972,15 +5987,17 @@ The following changes have been made since the <a
59725987 the attribute name used to specify keyframe offsets.
59735988* Updated the procedure to <a>process a keyframes argument</a> to allow
59745989 specifying <code> offset</code> , <code> composite</code> and multiple
5975- <code> easing</code> values including allowing <code> null </code> values for
5976- <code> composite</code> .
5990+ <code> easing</code> values including allowing
5991+ {{CompositeOperationOrAuto/auto}} values for <code> composite</code> .
59775992* Changed the type of the
59785993 {{KeyframeEffect/KeyframeEffect(target, keyframes,
59795994 options)/target}} argument to the {{KeyframeEffect}} and
59805995 (now obsolete) <code> KeyframeEffectReadOnly</code> constructors,
59815996 and the {{KeyframeEffect/target}} member of these same interfaces,
59825997 from <code> Animatable?</code> to <code> (Element or CSSPseudoElement)?</code>
59835998 (<a href="https://github.com/w3c/web-animations/issues/186">#186</a> ).
5999+ * Made unspecified [=composite operations=] on [=keyframes=] be represented by
6000+ {{CompositeOperationOrAuto/auto}} values.
59846001* Dropped the <code> SharedKeyframeList</code> interface.
59856002* Converted {{Animatable}} from a <code> [NoInterfaceObject] </code> interface
59866003 to an [=interface mixin=] .
0 commit comments