@@ -3269,13 +3269,13 @@ The <a>timing function</a> specified on the last keyframe in the
3269
3269
list is never applied.
3270
3270
3271
3271
Each <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> .
3274
3274
The possible operations and their meanings are identical to those defined
3275
3275
for the <a>composite operation</a> associated with the <a>keyframe effect</a>
3276
3276
as a whole in [[#effect-composition]] .
3277
3277
If 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
3279
3279
<a>keyframe effect</a> as a whole is used for values specified in that keyframe.
3280
3280
3281
3281
<h4 id="calculating-computed-keyframes">Calculating computed keyframes</h4>
@@ -4669,10 +4669,10 @@ interface KeyframeEffect : AnimationEffect {
4669
4669
dictionary ComputedKeyframe {
4670
4670
// ... property-value pairs ...
4671
4671
// 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" ;
4676
4676
};
4677
4677
</pre>
4678
4678
@@ -4701,8 +4701,9 @@ interface KeyframeEffect : AnimationEffect {
4701
4701
:: The <a>keyframe-specific composite operation</a> used to combine the
4702
4702
values specified in this keyframe with the <a>underlying value</a> .
4703
4703
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.
4706
4707
4707
4708
</div>
4708
4709
@@ -4722,10 +4723,10 @@ interface KeyframeEffect : AnimationEffect {
4722
4723
4723
4724
<pre class='idl'>
4724
4725
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" ;
4729
4730
};
4730
4731
</pre>
4731
4732
@@ -4999,17 +5000,17 @@ WebIDL-like definition:
4999
5000
dictionary Keyframe {
5000
5001
// ... property-value pairs ...
5001
5002
// 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" ;
5005
5006
};
5006
5007
5007
5008
dictionary PropertyIndexedKeyframes {
5008
5009
// ... property-value and property-valuelist pairs ...
5009
5010
// i.e. (DOMString or sequence&lt;DOMString&gt;) propertyName
5010
5011
(double? or sequence<double?>) offset = [];
5011
5012
(DOMString or sequence<DOMString>) easing = [];
5012
- (CompositeOperation? or sequence<CompositeOperation? >) composite = [];
5013
+ (CompositeOperationOrAuto or sequence<CompositeOperationOrAuto >) composite = [];
5013
5014
};
5014
5015
5015
5016
typedef (sequence<Keyframe> or PropertyIndexedKeyframes) KeyframeArgument;
@@ -5042,8 +5043,8 @@ The meaning and allowed values of each argument is as follows:
5042
5043
:: The <a>keyframe-specific composite operation</a> used to combine the values
5043
5044
specified in this keyframe with the <a>underlying value</a> .
5044
5045
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.
5047
5048
5048
5049
5049
5050
Since this type cannot be expressed in WebIDL, its processing is defined in
@@ -5096,7 +5097,7 @@ otherwise, using the following procedure:
5096
5097
dictionary BasePropertyIndexedKeyframe {
5097
5098
(double? or sequence<double?>) offset = [];
5098
5099
(DOMString or sequence<DOMString>) easing = [];
5099
- (CompositeOperation? or sequence<CompositeOperation? >) composite = [];
5100
+ (CompositeOperationOrAuto or sequence<CompositeOperationOrAuto >) composite = [];
5100
5101
};
5101
5102
</pre>
5102
5103
@@ -5105,9 +5106,9 @@ otherwise, using the following procedure:
5105
5106
5106
5107
<pre class='idl'>
5107
5108
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" ;
5111
5112
};
5112
5113
</pre>
5113
5114
@@ -5330,11 +5331,11 @@ keyframes using the following procedure:
5330
5331
1. If the “composite” member of the <var> property-indexed
5331
5332
keyframe</var> is <em> not</em> an empty sequence:
5332
5333
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
5335
5336
“composite” member of <var> property-indexed
5336
5337
keyframe</var> .
5337
- If that member is a single <a>nullable</a> <a>composite
5338
+ If that member is a single {{CompositeOperationOrAuto}} value
5338
5339
operation</a> , let <var> composite modes</var> be a sequence of
5339
5340
length one, with the value of the “composite” as its
5340
5341
single item.
@@ -5345,7 +5346,8 @@ keyframes using the following procedure:
5345
5346
from the beginning of the list until <var> composite modes</var>
5346
5347
has as many items as <var> processed keyframes</var> .
5347
5348
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
5349
5351
<a>keyframe-specific composite operation</a> on the
5350
5352
<a>keyframe</a> with the corresponding position in
5351
5353
<var> processed keyframes</var> until the end of <var> processed
@@ -5435,7 +5437,8 @@ dictionary KeyframeEffectOptions : EffectTiming {
5435
5437
animation with the <a>effect stack</a> , as specified by one
5436
5438
of the <a>CompositeOperation</a> enumeration values.
5437
5439
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> .
5439
5442
5440
5443
</div>
5441
5444
@@ -5462,39 +5465,51 @@ enum IterationCompositeOperation {"replace", "accumulate"};
5462
5465
subsequent iterations of an <a>animation effect</a> build
5463
5466
on the final value of the previous iteration.
5464
5467
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>
5466
5469
5467
- The possible values of an <a>animation effect</a> 's
5470
+ The possible values of an <a>keyframe effect</a> 's
5468
5471
composition behavior are represented by the
5469
5472
<dfn>CompositeOperation</dfn> enumeration.
5470
5473
5471
5474
<pre class='idl'>
5472
5475
enum CompositeOperation {"replace", "add", "accumulate"};
5473
5476
</pre>
5474
5477
5475
- : <code> replace</code >
5478
+ : <dfn enum-value for=CompositeOperation><dfn enum-value for=CompositeOperationOrAuto> replace</dfn> </dfn >
5476
5479
:: Corresponds to the <a
5477
5480
lt="composite operation replace"> replace</a>
5478
5481
<a>composite operation</a> value such that
5479
5482
the <a>animation effect</a> overrides the <a>underlying value</a> it
5480
5483
is combined with.
5481
5484
5482
- : <code> add</code >
5485
+ : <dfn enum-value for=CompositeOperation><dfn enum-value for=CompositeOperationOrAuto> add</dfn> </dfn >
5483
5486
:: Corresponds to the <a
5484
5487
lt="composite operation add"> add</a>
5485
5488
<a>composite operation</a> value such that
5486
5489
the <a>animation effect</a> is <a
5487
5490
lt="animation addition"> added</a> to the <a>underlying value</a>
5488
5491
with which it is combined.
5489
5492
5490
- : <code> accumulate</code >
5493
+ : <dfn enum-value for=CompositeOperation><dfn enum-value for=CompositeOperationOrAuto> accumulate</dfn> </dfn >
5491
5494
:: Corresponds to the <a
5492
5495
lt="composite operation accumulate"> accumulate</a>
5493
5496
<a>composite operation</a> value such that
5494
5497
the <a>animation effect</a> is <a
5495
5498
lt="animation accumulation"> accumulated</a> on to the
5496
5499
<a>underlying value</a> .
5497
5500
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
+
5498
5513
<h3 id="the-animatable-interface-mixin">The <code>Animatable</code> interface mixin</h3>
5499
5514
5500
5515
Objects that may be the target of an {{KeyframeEffect}} object implement
@@ -5972,15 +5987,17 @@ The following changes have been made since the <a
5972
5987
the attribute name used to specify keyframe offsets.
5973
5988
* Updated the procedure to <a>process a keyframes argument</a> to allow
5974
5989
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> .
5977
5992
* Changed the type of the
5978
5993
{{KeyframeEffect/KeyframeEffect(target, keyframes,
5979
5994
options)/target}} argument to the {{KeyframeEffect}} and
5980
5995
(now obsolete) <code> KeyframeEffectReadOnly</code> constructors,
5981
5996
and the {{KeyframeEffect/target}} member of these same interfaces,
5982
5997
from <code> Animatable?</code> to <code> (Element or CSSPseudoElement)?</code>
5983
5998
(<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.
5984
6001
* Dropped the <code> SharedKeyframeList</code> interface.
5985
6002
* Converted {{Animatable}} from a <code> [NoInterfaceObject] </code> interface
5986
6003
to an [=interface mixin=] .
0 commit comments