Loading dom/animation/ComputedTimingFunction.h +7 −4 Original line number Diff line number Diff line Loading @@ -30,8 +30,11 @@ class ComputedTimingFunction { }; struct StepFunc { uint32_t mSteps; StyleStepPosition mPos; uint32_t mSteps = 1; StyleStepPosition mPos = StyleStepPosition::End; constexpr StepFunc() = default; constexpr StepFunc(uint32_t aSteps, StyleStepPosition aPos) : mSteps(aSteps), mPos(aPos){}; bool operator==(const StepFunc& aOther) const { return mSteps == aOther.mSteps && mPos == aOther.mPos; } Loading @@ -46,7 +49,7 @@ class ComputedTimingFunction { return ComputedTimingFunction(aSteps, aPos); } ComputedTimingFunction() = default; constexpr ComputedTimingFunction() = default; explicit ComputedTimingFunction(const nsTimingFunction& aFunction) { Init(aFunction); } Loading Loading @@ -109,7 +112,7 @@ class ComputedTimingFunction { ComputedTimingFunction(uint32_t aSteps, StyleStepPosition aPos) : mType(Type::Step), mSteps{aSteps, aPos} {} Type mType; Type mType = Type::Ease; SMILKeySpline mTimingFunction; StepFunc mSteps; }; Loading dom/animation/ScrollTimeline.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include "nsIScrollableFrame.h" #include "nsLayoutUtils.h" #define SCROLL_TIMELINE_DURATION_MILLISEC 100000 namespace mozilla::dom { // --------------------------------- Loading @@ -38,6 +40,8 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED_0(ScrollTimeline, AnimationTimeline) TimingParams ScrollTimeline::sTiming; ScrollTimeline::ScrollTimeline(Document* aDocument, Element* aScroller) : AnimationTimeline(aDocument->GetParentObject()), mDocument(aDocument), Loading @@ -54,6 +58,12 @@ ScrollTimeline::ScrollTimeline(Document* aDocument, Element* aScroller) mDirection(StyleScrollDirection::Auto) { MOZ_ASSERT(aDocument); // Use default values except for |mDuration| and |mFill|. // Use a fixed duration defined in SCROLL_TIMELINE_DURATIONMILLISEC, and use // FillMode::Both to make sure the animation is in effect at 100%. sTiming = TimingParams(SCROLL_TIMELINE_DURATION_MILLISEC, 0.0, 1.0, PlaybackDirection::Normal, FillMode::Both); RegisterWithScrollSource(); } Loading dom/animation/ScrollTimeline.h +6 −14 Original line number Diff line number Diff line Loading @@ -13,8 +13,6 @@ #include "mozilla/TimingParams.h" #include "mozilla/WritingModes.h" #define SCROLL_TIMELINE_DURATION_MILLISEC 100000 namespace mozilla { namespace dom { Loading Loading @@ -99,18 +97,7 @@ class ScrollTimeline final : public AnimationTimeline { Tick(); } static const TimingParams& GetTiming() { // Use default values except for mDuration and mFill. // Use a fixed duration defined in SCROLL_TIMELINE_DURATIONMILLISEC, and use // FillMode::Both to make sure the animation is in effect at 100%. // Note: it's unfortunate TimingParams cannot be a const variable because // we have to use StickyTimingDuration::FromMilliseconds() in its // constructor. static TimingParams sTiming = TimingParams(SCROLL_TIMELINE_DURATION_MILLISEC, 0.0, 1.0, PlaybackDirection::Normal, FillMode::Both); return sTiming; } static constexpr const TimingParams& GetTiming() { return sTiming; } protected: virtual ~ScrollTimeline() { Teardown(); } Loading Loading @@ -152,6 +139,11 @@ class ScrollTimeline final : public AnimationTimeline { // So now we will only use the scroll direction from @scroll-timeline rule. RefPtr<Element> mSource; StyleScrollDirection mDirection; // Note: it's unfortunate TimingParams cannot be a const variable because // we have to use StickyTimingDuration::FromMilliseconds() in its // constructor. static TimingParams sTiming; }; /** Loading dom/animation/TimingParams.h +11 −8 Original line number Diff line number Diff line Loading @@ -29,19 +29,22 @@ class UnrestrictedDoubleOrKeyframeAnimationOptions; } // namespace dom struct TimingParams { TimingParams() = default; constexpr TimingParams() = default; TimingParams(float aDuration, float aDelay, float aIterationCount, dom::PlaybackDirection aDirection, dom::FillMode aFillMode) constexpr TimingParams(float aDuration, float aDelay, float aIterationCount, dom::PlaybackDirection aDirection, dom::FillMode aFillMode) : mIterations(aIterationCount), mDirection(aDirection), mFill(aFillMode) { mDuration.emplace(StickyTimeDuration::FromMilliseconds(aDuration)); mDelay = TimeDuration::FromMilliseconds(aDelay); Update(); } TimingParams(const TimeDuration& aDuration, const TimeDuration& aDelay, constexpr TimingParams(const TimeDuration& aDuration, const TimeDuration& aDelay, const TimeDuration& aEndDelay, float aIterations, float aIterationStart, dom::PlaybackDirection aDirection, float aIterationStart, dom::PlaybackDirection aDirection, dom::FillMode aFillMode, Maybe<ComputedTimingFunction>&& aFunction) : mDelay(aDelay), Loading dom/smil/SMILKeySpline.h +2 −2 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ namespace mozilla { */ class SMILKeySpline { public: SMILKeySpline() : mX1(0), mY1(0), mX2(0), mY2(0) { constexpr SMILKeySpline() : mX1(0), mY1(0), mX2(0), mY2(0) { /* caller must call Init later */\ } Loading Loading @@ -97,7 +97,7 @@ class SMILKeySpline { double mY2; enum { kSplineTableSize = 11 }; double mSampleValues[kSplineTableSize]; double mSampleValues[kSplineTableSize] = {}; static const double kSampleStepSize; }; Loading Loading
dom/animation/ComputedTimingFunction.h +7 −4 Original line number Diff line number Diff line Loading @@ -30,8 +30,11 @@ class ComputedTimingFunction { }; struct StepFunc { uint32_t mSteps; StyleStepPosition mPos; uint32_t mSteps = 1; StyleStepPosition mPos = StyleStepPosition::End; constexpr StepFunc() = default; constexpr StepFunc(uint32_t aSteps, StyleStepPosition aPos) : mSteps(aSteps), mPos(aPos){}; bool operator==(const StepFunc& aOther) const { return mSteps == aOther.mSteps && mPos == aOther.mPos; } Loading @@ -46,7 +49,7 @@ class ComputedTimingFunction { return ComputedTimingFunction(aSteps, aPos); } ComputedTimingFunction() = default; constexpr ComputedTimingFunction() = default; explicit ComputedTimingFunction(const nsTimingFunction& aFunction) { Init(aFunction); } Loading Loading @@ -109,7 +112,7 @@ class ComputedTimingFunction { ComputedTimingFunction(uint32_t aSteps, StyleStepPosition aPos) : mType(Type::Step), mSteps{aSteps, aPos} {} Type mType; Type mType = Type::Ease; SMILKeySpline mTimingFunction; StepFunc mSteps; }; Loading
dom/animation/ScrollTimeline.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include "nsIScrollableFrame.h" #include "nsLayoutUtils.h" #define SCROLL_TIMELINE_DURATION_MILLISEC 100000 namespace mozilla::dom { // --------------------------------- Loading @@ -38,6 +40,8 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED_0(ScrollTimeline, AnimationTimeline) TimingParams ScrollTimeline::sTiming; ScrollTimeline::ScrollTimeline(Document* aDocument, Element* aScroller) : AnimationTimeline(aDocument->GetParentObject()), mDocument(aDocument), Loading @@ -54,6 +58,12 @@ ScrollTimeline::ScrollTimeline(Document* aDocument, Element* aScroller) mDirection(StyleScrollDirection::Auto) { MOZ_ASSERT(aDocument); // Use default values except for |mDuration| and |mFill|. // Use a fixed duration defined in SCROLL_TIMELINE_DURATIONMILLISEC, and use // FillMode::Both to make sure the animation is in effect at 100%. sTiming = TimingParams(SCROLL_TIMELINE_DURATION_MILLISEC, 0.0, 1.0, PlaybackDirection::Normal, FillMode::Both); RegisterWithScrollSource(); } Loading
dom/animation/ScrollTimeline.h +6 −14 Original line number Diff line number Diff line Loading @@ -13,8 +13,6 @@ #include "mozilla/TimingParams.h" #include "mozilla/WritingModes.h" #define SCROLL_TIMELINE_DURATION_MILLISEC 100000 namespace mozilla { namespace dom { Loading Loading @@ -99,18 +97,7 @@ class ScrollTimeline final : public AnimationTimeline { Tick(); } static const TimingParams& GetTiming() { // Use default values except for mDuration and mFill. // Use a fixed duration defined in SCROLL_TIMELINE_DURATIONMILLISEC, and use // FillMode::Both to make sure the animation is in effect at 100%. // Note: it's unfortunate TimingParams cannot be a const variable because // we have to use StickyTimingDuration::FromMilliseconds() in its // constructor. static TimingParams sTiming = TimingParams(SCROLL_TIMELINE_DURATION_MILLISEC, 0.0, 1.0, PlaybackDirection::Normal, FillMode::Both); return sTiming; } static constexpr const TimingParams& GetTiming() { return sTiming; } protected: virtual ~ScrollTimeline() { Teardown(); } Loading Loading @@ -152,6 +139,11 @@ class ScrollTimeline final : public AnimationTimeline { // So now we will only use the scroll direction from @scroll-timeline rule. RefPtr<Element> mSource; StyleScrollDirection mDirection; // Note: it's unfortunate TimingParams cannot be a const variable because // we have to use StickyTimingDuration::FromMilliseconds() in its // constructor. static TimingParams sTiming; }; /** Loading
dom/animation/TimingParams.h +11 −8 Original line number Diff line number Diff line Loading @@ -29,19 +29,22 @@ class UnrestrictedDoubleOrKeyframeAnimationOptions; } // namespace dom struct TimingParams { TimingParams() = default; constexpr TimingParams() = default; TimingParams(float aDuration, float aDelay, float aIterationCount, dom::PlaybackDirection aDirection, dom::FillMode aFillMode) constexpr TimingParams(float aDuration, float aDelay, float aIterationCount, dom::PlaybackDirection aDirection, dom::FillMode aFillMode) : mIterations(aIterationCount), mDirection(aDirection), mFill(aFillMode) { mDuration.emplace(StickyTimeDuration::FromMilliseconds(aDuration)); mDelay = TimeDuration::FromMilliseconds(aDelay); Update(); } TimingParams(const TimeDuration& aDuration, const TimeDuration& aDelay, constexpr TimingParams(const TimeDuration& aDuration, const TimeDuration& aDelay, const TimeDuration& aEndDelay, float aIterations, float aIterationStart, dom::PlaybackDirection aDirection, float aIterationStart, dom::PlaybackDirection aDirection, dom::FillMode aFillMode, Maybe<ComputedTimingFunction>&& aFunction) : mDelay(aDelay), Loading
dom/smil/SMILKeySpline.h +2 −2 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ namespace mozilla { */ class SMILKeySpline { public: SMILKeySpline() : mX1(0), mY1(0), mX2(0), mY2(0) { constexpr SMILKeySpline() : mX1(0), mY1(0), mX2(0), mY2(0) { /* caller must call Init later */\ } Loading Loading @@ -97,7 +97,7 @@ class SMILKeySpline { double mY2; enum { kSplineTableSize = 11 }; double mSampleValues[kSplineTableSize]; double mSampleValues[kSplineTableSize] = {}; static const double kSampleStepSize; }; Loading