diff --git a/src/Magnum/Animation/Test/TrackTest.cpp b/src/Magnum/Animation/Test/TrackTest.cpp index 6a01b289b..b9b7e6e02 100644 --- a/src/Magnum/Animation/Test/TrackTest.cpp +++ b/src/Magnum/Animation/Test/TrackTest.cpp @@ -134,7 +134,7 @@ void TrackTest::constructEmpty() { void TrackTest::constructArrayInterpolator() { const Track a{ Containers::Array>{Containers::InPlaceInit, - {{0.0f, {3.0f, 1.0f, 0.1f}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}}, Math::select, Extrapolation::Extrapolated, Extrapolation::Constant}; @@ -142,6 +142,7 @@ void TrackTest::constructArrayInterpolator() { CORRADE_COMPARE(a.interpolator(), Math::select); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.data().size(), 2); CORRADE_COMPARE(a.keys().size(), 2); @@ -155,27 +156,28 @@ void TrackTest::constructArrayInterpolator() { void TrackTest::constructArrayInterpolatorDefaults() { const Track a{ Containers::Array>{Containers::InPlaceInit, - {{0.0f, {3.0f, 1.0f, 0.1f}}}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}}}, Math::lerp, Extrapolation::DefaultConstructed}; CORRADE_COMPARE(a.interpolation(), Interpolation::Custom); CORRADE_COMPARE(a.interpolator(), Math::lerp); CORRADE_COMPARE(a.before(), Extrapolation::DefaultConstructed); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 1.0f})); CORRADE_COMPARE(a.size(), 1); CORRADE_COMPARE(a.data().size(), 1); CORRADE_COMPARE(a.keys().size(), 1); CORRADE_COMPARE(a.values().size(), 1); - CORRADE_COMPARE(a[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.data()[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.keys()[0], 0.0f); + CORRADE_COMPARE(a[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.data()[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.keys()[0], 1.0f); CORRADE_COMPARE(a.values()[0], (Vector3{3.0f, 1.0f, 0.1f})); } void TrackTest::constructArrayInterpolation() { const Track a{ Containers::Array>{Containers::InPlaceInit, - {{0.0f, {3.0f, 1.0f, 0.1f}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}}, Interpolation::Linear, Extrapolation::Extrapolated, Extrapolation::Constant}; @@ -183,6 +185,7 @@ void TrackTest::constructArrayInterpolation() { CORRADE_COMPARE(a.interpolator(), Math::lerp); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.data().size(), 2); CORRADE_COMPARE(a.keys().size(), 2); @@ -196,20 +199,21 @@ void TrackTest::constructArrayInterpolation() { void TrackTest::constructArrayInterpolationDefaults() { const Track a{ Containers::Array>{Containers::InPlaceInit, - {{0.0f, {3.0f, 1.0f, 0.1f}}}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}}}, Interpolation::Constant, Extrapolation::DefaultConstructed}; CORRADE_COMPARE(a.interpolation(), Interpolation::Constant); CORRADE_COMPARE(a.interpolator(), Math::select); CORRADE_COMPARE(a.before(), Extrapolation::DefaultConstructed); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 1.0f})); CORRADE_COMPARE(a.size(), 1); CORRADE_COMPARE(a.data().size(), 1); CORRADE_COMPARE(a.keys().size(), 1); CORRADE_COMPARE(a.values().size(), 1); - CORRADE_COMPARE(a[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.data()[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.keys()[0], 0.0f); + CORRADE_COMPARE(a[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.data()[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.keys()[0], 1.0f); CORRADE_COMPARE(a.values()[0], (Vector3{3.0f, 1.0f, 0.1f})); } @@ -220,7 +224,7 @@ namespace { void TrackTest::constructArrayInterpolationInterpolator() { const Track a{ Containers::Array>{Containers::InPlaceInit, - {{0.0f, {3.0f, 1.0f, 0.1f}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}}, Interpolation::Linear, customLerp, Extrapolation::Extrapolated, Extrapolation::Constant}; @@ -228,6 +232,7 @@ void TrackTest::constructArrayInterpolationInterpolator() { CORRADE_COMPARE(a.interpolator(), customLerp); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.data().size(), 2); CORRADE_COMPARE(a.keys().size(), 2); @@ -241,26 +246,27 @@ void TrackTest::constructArrayInterpolationInterpolator() { void TrackTest::constructArrayInterpolationInterpolationDefaults() { const Track a{ Containers::Array>{Containers::InPlaceInit, - {{0.0f, {3.0f, 1.0f, 0.1f}}}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}}}, Interpolation::Constant, customLerp, Extrapolation::DefaultConstructed}; CORRADE_COMPARE(a.interpolation(), Interpolation::Constant); CORRADE_COMPARE(a.interpolator(), customLerp); CORRADE_COMPARE(a.before(), Extrapolation::DefaultConstructed); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 1.0f})); CORRADE_COMPARE(a.size(), 1); CORRADE_COMPARE(a.data().size(), 1); CORRADE_COMPARE(a.keys().size(), 1); CORRADE_COMPARE(a.values().size(), 1); - CORRADE_COMPARE(a[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.data()[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.keys()[0], 0.0f); + CORRADE_COMPARE(a[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.data()[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.keys()[0], 1.0f); CORRADE_COMPARE(a.values()[0], (Vector3{3.0f, 1.0f, 0.1f})); } void TrackTest::constructInitializerListInterpolator() { const Track a{ - {{0.0f, {3.0f, 1.0f, 0.1f}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}, Math::select, Extrapolation::Extrapolated, Extrapolation::DefaultConstructed}; @@ -268,6 +274,7 @@ void TrackTest::constructInitializerListInterpolator() { CORRADE_COMPARE(a.interpolator(), Math::select); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.data().size(), 2); CORRADE_COMPARE(a.keys().size(), 2); @@ -279,26 +286,27 @@ void TrackTest::constructInitializerListInterpolator() { } void TrackTest::constructInitializerListInterpolatorDefaults() { - const Track a{{{0.0f, {3.0f, 1.0f, 0.1f}}}, + const Track a{{{1.0f, {3.0f, 1.0f, 0.1f}}}, Math::lerp, Extrapolation::Constant}; CORRADE_COMPARE(a.interpolation(), Interpolation::Custom); CORRADE_COMPARE(a.interpolator(), Math::lerp); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 1.0f})); CORRADE_COMPARE(a.size(), 1); CORRADE_COMPARE(a.data().size(), 1); CORRADE_COMPARE(a.keys().size(), 1); CORRADE_COMPARE(a.values().size(), 1); - CORRADE_COMPARE(a[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.data()[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.keys()[0], 0.0f); + CORRADE_COMPARE(a[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.data()[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.keys()[0], 1.0f); CORRADE_COMPARE(a.values()[0], (Vector3{3.0f, 1.0f, 0.1f})); } void TrackTest::constructInitializerListInterpolation() { const Track a{ - {{0.0f, {3.0f, 1.0f, 0.1f}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}, Interpolation::Linear, Extrapolation::Extrapolated, Extrapolation::DefaultConstructed}; @@ -306,6 +314,7 @@ void TrackTest::constructInitializerListInterpolation() { CORRADE_COMPARE(a.interpolator(), Math::lerp); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.data().size(), 2); CORRADE_COMPARE(a.keys().size(), 2); @@ -317,26 +326,27 @@ void TrackTest::constructInitializerListInterpolation() { } void TrackTest::constructInitializerListInterpolationDefaults() { - const Track a{{{0.0f, {3.0f, 1.0f, 0.1f}}}, + const Track a{{{1.0f, {3.0f, 1.0f, 0.1f}}}, Interpolation::Constant, Extrapolation::Constant}; CORRADE_COMPARE(a.interpolation(), Interpolation::Constant); CORRADE_COMPARE(a.interpolator(), Math::select); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 1.0f})); CORRADE_COMPARE(a.size(), 1); CORRADE_COMPARE(a.data().size(), 1); CORRADE_COMPARE(a.keys().size(), 1); CORRADE_COMPARE(a.values().size(), 1); - CORRADE_COMPARE(a[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.data()[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.keys()[0], 0.0f); + CORRADE_COMPARE(a[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.data()[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.keys()[0], 1.0f); CORRADE_COMPARE(a.values()[0], (Vector3{3.0f, 1.0f, 0.1f})); } void TrackTest::constructInitializerListInterpolationInterpolator() { const Track a{ - {{0.0f, {3.0f, 1.0f, 0.1f}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}, Interpolation::Linear, customLerp, Extrapolation::Extrapolated, Extrapolation::DefaultConstructed}; @@ -344,6 +354,7 @@ void TrackTest::constructInitializerListInterpolationInterpolator() { CORRADE_COMPARE(a.interpolator(), customLerp); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.data().size(), 2); CORRADE_COMPARE(a.keys().size(), 2); @@ -355,26 +366,27 @@ void TrackTest::constructInitializerListInterpolationInterpolator() { } void TrackTest::constructInitializerListInterpolationInterpolatorDefaults() { - const Track a{{{0.0f, {3.0f, 1.0f, 0.1f}}}, + const Track a{{{1.0f, {3.0f, 1.0f, 0.1f}}}, Interpolation::Constant, customLerp, Extrapolation::Constant}; CORRADE_COMPARE(a.interpolation(), Interpolation::Constant); CORRADE_COMPARE(a.interpolator(), customLerp); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 1.0f})); CORRADE_COMPARE(a.size(), 1); CORRADE_COMPARE(a.data().size(), 1); CORRADE_COMPARE(a.keys().size(), 1); CORRADE_COMPARE(a.values().size(), 1); - CORRADE_COMPARE(a[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.data()[0], (std::pair{0.0f, {3.0f, 1.0f, 0.1f}})); - CORRADE_COMPARE(a.keys()[0], 0.0f); + CORRADE_COMPARE(a[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.data()[0], (std::pair{1.0f, {3.0f, 1.0f, 0.1f}})); + CORRADE_COMPARE(a.keys()[0], 1.0f); CORRADE_COMPARE(a.values()[0], (Vector3{3.0f, 1.0f, 0.1f})); } void TrackTest::convertView() { const Track a{ - {{0.0f, {3.0f, 1.0f, 0.1f}}, + {{1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}, Interpolation::Linear, customLerp, Extrapolation::Extrapolated, Extrapolation::DefaultConstructed}; const TrackView av = a; @@ -383,6 +395,7 @@ void TrackTest::convertView() { CORRADE_COMPARE(av.interpolator(), customLerp); CORRADE_COMPARE(av.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(av.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(av.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(av.size(), 2); CORRADE_COMPARE(av.keys().size(), 2); CORRADE_COMPARE(av.values().size(), 2); diff --git a/src/Magnum/Animation/Test/TrackViewTest.cpp b/src/Magnum/Animation/Test/TrackViewTest.cpp index f7f09ede9..3e69bc95d 100644 --- a/src/Magnum/Animation/Test/TrackViewTest.cpp +++ b/src/Magnum/Animation/Test/TrackViewTest.cpp @@ -125,6 +125,7 @@ void TrackViewTest::constructEmpty() { const TrackView a; CORRADE_VERIFY(!a.interpolator()); + CORRADE_COMPARE(a.duration(), Range1D{}); CORRADE_VERIFY(!a.size()); CORRADE_VERIFY(a.keys().empty()); CORRADE_VERIFY(a.values().empty()); @@ -132,7 +133,7 @@ void TrackViewTest::constructEmpty() { } void TrackViewTest::constructInterpolator() { - constexpr Float keys[]{0.0f, 5.0f}; + constexpr Float keys[]{1.0f, 5.0f}; constexpr Vector3 values[]{{3.0f, 1.0f, 0.1f}, {0.3f, 0.6f, 1.0f}}; const TrackView a{keys, values, Math::select, @@ -142,6 +143,7 @@ void TrackViewTest::constructInterpolator() { CORRADE_COMPARE(a.interpolator(), Math::select); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -149,7 +151,7 @@ void TrackViewTest::constructInterpolator() { } void TrackViewTest::constructInterpolatorDefaults() { - constexpr Float keys[]{0.0f, 5.0f}; + constexpr Float keys[]{1.0f, 5.0f}; constexpr Vector3 values[]{{3.0f, 1.0f, 0.1f}, {0.3f, 0.6f, 1.0f}}; const TrackView a{keys, values, Math::lerp, @@ -159,6 +161,7 @@ void TrackViewTest::constructInterpolatorDefaults() { CORRADE_COMPARE(a.interpolator(), Math::lerp); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -166,7 +169,7 @@ void TrackViewTest::constructInterpolatorDefaults() { } void TrackViewTest::constructInterpolation() { - constexpr Float keys[]{0.0f, 5.0f}; + constexpr Float keys[]{1.0f, 5.0f}; constexpr Vector3 values[]{{3.0f, 1.0f, 0.1f}, {0.3f, 0.6f, 1.0f}}; const TrackView a{keys, values, Interpolation::Linear, @@ -176,6 +179,7 @@ void TrackViewTest::constructInterpolation() { CORRADE_COMPARE(a.interpolator(), Math::lerp); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -183,7 +187,7 @@ void TrackViewTest::constructInterpolation() { } void TrackViewTest::constructInterpolationDefaults() { - constexpr Float keys[]{0.0f, 5.0f}; + constexpr Float keys[]{1.0f, 5.0f}; constexpr Vector3 values[]{{3.0f, 1.0f, 0.1f}, {0.3f, 0.6f, 1.0f}}; const TrackView a{keys, values, Interpolation::Constant, @@ -193,6 +197,7 @@ void TrackViewTest::constructInterpolationDefaults() { CORRADE_COMPARE(a.interpolator(), Math::select); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -204,7 +209,7 @@ namespace { } void TrackViewTest::constructInterpolationInterpolator() { - constexpr Float keys[]{0.0f, 5.0f}; + constexpr Float keys[]{1.0f, 5.0f}; constexpr Vector3 values[]{{3.0f, 1.0f, 0.1f}, {0.3f, 0.6f, 1.0f}}; const TrackView a{keys, values, Interpolation::Linear, @@ -214,6 +219,7 @@ void TrackViewTest::constructInterpolationInterpolator() { CORRADE_COMPARE(a.interpolator(), customLerp); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -221,7 +227,7 @@ void TrackViewTest::constructInterpolationInterpolator() { } void TrackViewTest::constructInterpolationInterpolatorDefaults() { - constexpr Float keys[]{0.0f, 5.0f}; + constexpr Float keys[]{1.0f, 5.0f}; constexpr Vector3 values[]{{3.0f, 1.0f, 0.1f}, {0.3f, 0.6f, 1.0f}}; const TrackView a{keys, values, Interpolation::Constant, @@ -231,6 +237,7 @@ void TrackViewTest::constructInterpolationInterpolatorDefaults() { CORRADE_COMPARE(a.interpolator(), customLerp); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -239,7 +246,7 @@ void TrackViewTest::constructInterpolationInterpolatorDefaults() { void TrackViewTest::constructSingleArrayInterpolator() { const std::pair data[]{ - {0.0f, {3.0f, 1.0f, 0.1f}}, + {1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}; const TrackView a{data, Math::select, @@ -249,6 +256,7 @@ void TrackViewTest::constructSingleArrayInterpolator() { CORRADE_COMPARE(a.interpolator(), Math::select); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -257,7 +265,7 @@ void TrackViewTest::constructSingleArrayInterpolator() { void TrackViewTest::constructSingleArrayInterpolatorDefaults() { const std::pair data[]{ - {0.0f, {3.0f, 1.0f, 0.1f}}, + {1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}; const TrackView a{data, Math::lerp, @@ -267,6 +275,7 @@ void TrackViewTest::constructSingleArrayInterpolatorDefaults() { CORRADE_COMPARE(a.interpolator(), Math::lerp); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -275,7 +284,7 @@ void TrackViewTest::constructSingleArrayInterpolatorDefaults() { void TrackViewTest::constructSingleArrayInterpolation() { const std::pair data[]{ - {0.0f, {3.0f, 1.0f, 0.1f}}, + {1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}; const TrackView a{data, Interpolation::Linear, @@ -285,6 +294,7 @@ void TrackViewTest::constructSingleArrayInterpolation() { CORRADE_COMPARE(a.interpolator(), Math::lerp); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -293,7 +303,7 @@ void TrackViewTest::constructSingleArrayInterpolation() { void TrackViewTest::constructSingleArrayInterpolationDefaults() { const std::pair data[]{ - {0.0f, {3.0f, 1.0f, 0.1f}}, + {1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}; const TrackView a{data, Interpolation::Constant, @@ -303,6 +313,7 @@ void TrackViewTest::constructSingleArrayInterpolationDefaults() { CORRADE_COMPARE(a.interpolator(), Math::select); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -311,7 +322,7 @@ void TrackViewTest::constructSingleArrayInterpolationDefaults() { void TrackViewTest::constructSingleArrayInterpolationInterpolator() { const std::pair data[]{ - {0.0f, {3.0f, 1.0f, 0.1f}}, + {1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}; const TrackView a{data, Interpolation::Linear, customLerp, @@ -321,6 +332,7 @@ void TrackViewTest::constructSingleArrayInterpolationInterpolator() { CORRADE_COMPARE(a.interpolator(), customLerp); CORRADE_COMPARE(a.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(a.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -329,7 +341,7 @@ void TrackViewTest::constructSingleArrayInterpolationInterpolator() { void TrackViewTest::constructSingleArrayInterpolationInterpolatorDefaults() { const std::pair data[]{ - {0.0f, {3.0f, 1.0f, 0.1f}}, + {1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}; const TrackView a{data, Interpolation::Constant, @@ -339,6 +351,7 @@ void TrackViewTest::constructSingleArrayInterpolationInterpolatorDefaults() { CORRADE_COMPARE(a.interpolator(), customLerp); CORRADE_COMPARE(a.before(), Extrapolation::Constant); CORRADE_COMPARE(a.after(), Extrapolation::Constant); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(a.size(), 2); CORRADE_COMPARE(a.keys().size(), 2); CORRADE_COMPARE(a.values().size(), 2); @@ -347,7 +360,7 @@ void TrackViewTest::constructSingleArrayInterpolationInterpolatorDefaults() { void TrackViewTest::constructCopyStorage() { const std::pair data[]{ - {0.0f, {3.0f, 1.0f, 0.1f}}, + {1.0f, {3.0f, 1.0f, 0.1f}}, {5.0f, {0.3f, 0.6f, 1.0f}}}; const TrackView a{data, Interpolation::Constant, customLerp, @@ -361,6 +374,7 @@ void TrackViewTest::constructCopyStorage() { CORRADE_COMPARE(bv.interpolator(), customLerp); CORRADE_COMPARE(bv.before(), Extrapolation::Extrapolated); CORRADE_COMPARE(bv.after(), Extrapolation::DefaultConstructed); + CORRADE_COMPARE(a.duration(), (Range1D{1.0f, 5.0f})); CORRADE_COMPARE(bv.size(), 2); CORRADE_COMPARE(bv.keys().size(), 2); CORRADE_COMPARE(bv.values().size(), 2); diff --git a/src/Magnum/Animation/Track.h b/src/Magnum/Animation/Track.h index 6d065c809..f0c0026fb 100644 --- a/src/Magnum/Animation/Track.h +++ b/src/Magnum/Animation/Track.h @@ -33,6 +33,7 @@ #include "Magnum/Animation/Animation.h" #include "Magnum/Animation/Interpolation.h" +#include "Magnum/Math/Range.h" namespace Magnum { namespace Animation { @@ -285,6 +286,17 @@ template duration() const { + return _data.empty() ? Math::Range1D{} : Math::Range1D{_data.front().first, _data.back().first}; + } + /** @brief Keyframe count */ std::size_t size() const { return _data.size(); } @@ -617,6 +629,17 @@ template duration() const { + return _keys.empty() ? Math::Range1D{} : Math::Range1D{keys().front(), keys().back()}; + } + /** @brief Keyframe count */ std::size_t size() const { return _keys.size(); }