Bug 1354947 - Add equal operators for comparing ComputedTimingFunction with nsTimingFunction. r?birtles
MozReview-Commit-ID: 7pQQP3xlKot
--- a/dom/animation/ComputedTimingFunction.h
+++ b/dom/animation/ComputedTimingFunction.h
@@ -75,16 +75,30 @@ public:
(HasSpline() ?
mTimingFunction == aOther.mTimingFunction :
mStepsOrFrames == aOther.mStepsOrFrames);
}
bool operator!=(const ComputedTimingFunction& aOther) const
{
return !(*this == aOther);
}
+ bool operator==(const nsTimingFunction& aOther) const
+ {
+ return mType == aOther.mType &&
+ (HasSpline()
+ ? mTimingFunction.X1() == aOther.mFunc.mX1 &&
+ mTimingFunction.Y1() == aOther.mFunc.mY1 &&
+ mTimingFunction.X2() == aOther.mFunc.mX2 &&
+ mTimingFunction.Y2() == aOther.mFunc.mY2
+ : mStepsOrFrames == aOther.mStepsOrFrames);
+ }
+ bool operator!=(const nsTimingFunction& aOther) const
+ {
+ return !(*this == aOther);
+ }
int32_t Compare(const ComputedTimingFunction& aRhs) const;
void AppendToString(nsAString& aResult) const;
static double GetPortion(const Maybe<ComputedTimingFunction>& aFunction,
double aPortion,
BeforeFlag aBeforeFlag)
{
return aFunction ? aFunction->GetValue(aPortion, aBeforeFlag) : aPortion;
@@ -100,11 +114,28 @@ private:
: mType(aType)
, mStepsOrFrames(aStepsOrFrames) { }
nsTimingFunction::Type mType = nsTimingFunction::Type::Linear;
nsSMILKeySpline mTimingFunction;
uint32_t mStepsOrFrames;
};
+inline bool
+operator==(const Maybe<ComputedTimingFunction>& aLHS,
+ const nsTimingFunction& aRHS)
+{
+ if (aLHS.isNothing()) {
+ return aRHS.mType == nsTimingFunction::Type::Linear;
+ }
+ return aLHS.value() == aRHS;
+}
+
+inline bool
+operator!=(const Maybe<ComputedTimingFunction>& aLHS,
+ const nsTimingFunction& aRHS)
+{
+ return !(aLHS == aRHS);
+}
+
} // namespace mozilla
#endif // mozilla_ComputedTimingFunction_h