Skip to content

Commit bd7e591

Browse files
[web-animations-2] Make active boundary times inclusive if animation associated with a progress-based timeline (w3c#6702)
Addresses issue w3c#5223 by changing before and after phase calculations to have explicit exceptions for progress based timelines to make an active boundary end point inclusive at the timeline end.
1 parent 1d72b49 commit bd7e591

1 file changed

Lines changed: 37 additions & 5 deletions

File tree

web-animations-2/Overview.bs

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,13 +1066,43 @@ condition:
10661066
> * the <a>animation effect</a> has a <a>parent group</a> and the
10671067
> <a>parent group</a> is <a>current</a>.
10681068

1069-
Add the following definition to the list used in determining the phase of
1069+
Add the following definitions to the list used in determining the phase of
10701070
an <a>animation effect</a>.
10711071

10721072
: <dfn>effective timeline phase</dfn>
10731073
:: The associated <a>animation</a>'s <a>hold phase</a> if resolved, otherwise
10741074
the <a>animation</a> timeline's [=timeline phase=].
10751075

1076+
: <dfn>at progress timeline boundary</dfn>
1077+
:: Determined using the following procedure:
1078+
1079+
1. If <em>any</em> of the following conditions are true:
1080+
* the associated <an>animation</a>'s timeline is not a
1081+
[=progress-based timeline=], or
1082+
* the associated <a>animation</a>'s [=timeline duration=] is
1083+
unresolved or zero, or
1084+
* the <a>animation</a>'s [=playback rate=] is zero
1085+
1086+
return false
1087+
1088+
1. Let <var>effective start time</var> be the <a>animation</a>'s
1089+
[=start time=] if resolved, or zero otherwise.
1090+
1091+
1. Let <var>effective timeline time</var> be
1092+
<code><a>animation</a>'s <a>current time</a> / <a>animation</a>'s
1093+
[=playback rate=] + <var>effective start time</var></code>
1094+
1095+
1. Let <var>effective timeline progress</var> be
1096+
<code><var>effective timeline time</var> / [=timeline duration=]</code>
1097+
1098+
1. If <var>effective timeline progress</var> is 0 or 1, return true,
1099+
otherwise false.
1100+
1101+
Issue: This procedure is not strictly correct for a paused
1102+
animation if the <a>animation</a>'s current time is explicitly set, as this can
1103+
introduce a lead or lag, between the <a>timeline<a>'s current time and
1104+
<a>animation</a>'s current time.
1105+
10761106
Replace:
10771107

10781108
> An <a>animation effect</a> is in the before phase if the animation effect's
@@ -1096,8 +1126,9 @@ with:
10961126
> <em>and</em> <em>either</em> of the following conditions are met:
10971127
> 1. the <a>local time</a> is less than the <a>before-active boundary
10981128
> time</a>, <em>or</em>
1099-
> 1. the <a>animation direction</a> is "backwards" and the
1100-
> <a>local time</a> is equal to the <a>before-active boundary time</a>.
1129+
> 1. The <a>animation direction</a> is "backwards", the <a>local time</a>
1130+
> is equal to the <a>before-active boundary time</a> and not
1131+
> <a>at progress timeline boundary</a>.
11011132

11021133
Replace:
11031134

@@ -1122,8 +1153,9 @@ with:
11221153
> <em>and</em> <em>either</em> of the following conditions are met:
11231154
> 1. the <a>local time</a> is greater than the <a>active-after boundary
11241155
> time</a>, <em>or</em>
1125-
> 1. the <a>animation direction</a> is "forwards" and the <a>local time</a>
1126-
> is equal to the <a>active-after boundary time</a>.
1156+
> 1. the <a>animation direction</a> is "forwards", the <a>local time</a>
1157+
> is equal to the <a>active-after boundary time</a> and not
1158+
> <a>at progress timeline boundary</a>.
11271159

11281160
<h4 id="fill-modes">Fill modes</h4>
11291161

0 commit comments

Comments
 (0)