Bug 1248340 - Part 3: Implement Frames for OMTA. r=birtles

MozReview-Commit-ID: k3Wvl4ofe7

--HG--
extra : rebase_source : edbf827ffe102a5353c41078bd2b14c8b56eb23e
This commit is contained in:
Boris Chiou 2017-02-26 15:34:02 +08:00
Родитель 98f895d166
Коммит aa57157303
4 изменённых файлов: 22 добавлений и 1 удалений

Просмотреть файл

@ -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));
}