Resolves: tdf#143615 clamp relative times to 1.0

User input permits zero-length animations, so whenever we calculate
relative position within the animation time frame, the case
mnMinSimpleDuration == 0.0 means: we're already at the end of the
animation, i.e. set relative time to 1.0

Change-Id: I0e8c1e29f47bd9fa16f04115cf52d3a176e13fb0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133005
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
This commit is contained in:
Thorsten Behrens
2022-04-14 12:01:50 +02:00
parent af4407649d
commit e1db8c2787

View File

@@ -63,9 +63,12 @@ namespace slideshow::internal
// perform will be called at least mnMinNumberOfTurns
// times.
// fraction of time elapsed
// fraction of time elapsed (clamp to 1.0 for zero-length
// animations)
const double nFractionElapsedTime(
nCurrElapsedTime / mnMinSimpleDuration );
mnMinSimpleDuration != 0.0 ?
nCurrElapsedTime / mnMinSimpleDuration :
1.0 );
// fraction of minimum calls performed
const double nFractionRequiredCalls(
@@ -115,7 +118,10 @@ namespace slideshow::internal
// ===============================
const double nCurrElapsedTime( maTimer.getElapsedTime() );
double nT( nCurrElapsedTime / mnMinSimpleDuration );
// clamp to 1.0 for zero animation duration
double nT( mnMinSimpleDuration != 0.0 ?
nCurrElapsedTime / mnMinSimpleDuration :
1.0 );
// one of the stop criteria reached?