зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1248340 - Part 3: Implement Frames for OMTA. r=birtles
MozReview-Commit-ID: k3Wvl4ofe7 --HG-- extra : rebase_source : edbf827ffe102a5353c41078bd2b14c8b56eb23e
This commit is contained in:
Родитель
98f895d166
Коммит
aa57157303
|
@ -36,6 +36,11 @@ public:
|
|||
mType == nsTimingFunction::Type::StepEnd);
|
||||
return mStepsOrFrames;
|
||||
}
|
||||
uint32_t GetFrames() const
|
||||
{
|
||||
MOZ_ASSERT(mType == nsTimingFunction::Type::Frames);
|
||||
return mStepsOrFrames;
|
||||
}
|
||||
bool operator==(const ComputedTimingFunction& aOther) const
|
||||
{
|
||||
return mType == aOther.mType &&
|
||||
|
|
|
@ -33,9 +33,16 @@ AnimationUtils::TimingFunctionToComputedTimingFunction(
|
|||
result.Init(nsTimingFunction(type, sf.steps()));
|
||||
return Some(result);
|
||||
}
|
||||
case TimingFunction::TFramesFunction: {
|
||||
FramesFunction ff = aTimingFunction.get_FramesFunction();
|
||||
ComputedTimingFunction result;
|
||||
result.Init(nsTimingFunction(nsTimingFunction::Type::Frames,
|
||||
ff.frames()));
|
||||
return Some(result);
|
||||
}
|
||||
default:
|
||||
MOZ_ASSERT_UNREACHABLE(
|
||||
"Function must be null, bezier or step");
|
||||
"Function must be null, bezier, step or frames");
|
||||
break;
|
||||
}
|
||||
return Nothing();
|
||||
|
|
|
@ -102,10 +102,15 @@ struct StepFunction {
|
|||
int type;
|
||||
};
|
||||
|
||||
struct FramesFunction {
|
||||
int frames;
|
||||
};
|
||||
|
||||
union TimingFunction {
|
||||
null_t;
|
||||
CubicBezierFunction;
|
||||
StepFunction;
|
||||
FramesFunction;
|
||||
};
|
||||
|
||||
// Send the angle with units rather than sending all angles in radians
|
||||
|
|
|
@ -433,6 +433,10 @@ ToTimingFunction(const Maybe<ComputedTimingFunction>& aCTF)
|
|||
spline->X2(), spline->Y2()));
|
||||
}
|
||||
|
||||
if (aCTF->GetType() == nsTimingFunction::Type::Frames) {
|
||||
return TimingFunction(FramesFunction(aCTF->GetFrames()));
|
||||
}
|
||||
|
||||
uint32_t type = aCTF->GetType() == nsTimingFunction::Type::StepStart ? 1 : 2;
|
||||
return TimingFunction(StepFunction(aCTF->GetSteps(), type));
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче