mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This CL flips the switch to make Sky use Dart. TBR=eseidel@chromium.org BUG=454613 Review URL: https://codereview.chromium.org/922893002
105 lines
3.3 KiB
C++
105 lines
3.3 KiB
C++
// Copyright 2014 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "sky/engine/config.h"
|
|
#include "sky/engine/core/animation/TimingInput.h"
|
|
|
|
#include "sky/engine/core/css/parser/BisonCSSParser.h"
|
|
#include "sky/engine/core/css/resolver/CSSToStyleMap.h"
|
|
|
|
namespace blink {
|
|
|
|
void TimingInput::setStartDelay(Timing& timing, double startDelay)
|
|
{
|
|
if (std::isfinite(startDelay))
|
|
timing.startDelay = startDelay / 1000;
|
|
else
|
|
timing.startDelay = Timing::defaults().startDelay;
|
|
}
|
|
|
|
void TimingInput::setEndDelay(Timing& timing, double endDelay)
|
|
{
|
|
if (std::isfinite(endDelay))
|
|
timing.endDelay = endDelay / 1000;
|
|
else
|
|
timing.endDelay = Timing::defaults().endDelay;
|
|
}
|
|
|
|
void TimingInput::setFillMode(Timing& timing, const String& fillMode)
|
|
{
|
|
if (fillMode == "none") {
|
|
timing.fillMode = Timing::FillModeNone;
|
|
} else if (fillMode == "backwards") {
|
|
timing.fillMode = Timing::FillModeBackwards;
|
|
} else if (fillMode == "both") {
|
|
timing.fillMode = Timing::FillModeBoth;
|
|
} else if (fillMode == "forwards") {
|
|
timing.fillMode = Timing::FillModeForwards;
|
|
} else {
|
|
timing.fillMode = Timing::defaults().fillMode;
|
|
}
|
|
}
|
|
|
|
void TimingInput::setIterationStart(Timing& timing, double iterationStart)
|
|
{
|
|
if (std::isfinite(iterationStart))
|
|
timing.iterationStart = std::max<double>(iterationStart, 0);
|
|
else
|
|
timing.iterationStart = Timing::defaults().iterationStart;
|
|
}
|
|
|
|
void TimingInput::setIterationCount(Timing& timing, double iterationCount)
|
|
{
|
|
if (!std::isnan(iterationCount))
|
|
timing.iterationCount = std::max<double>(iterationCount, 0);
|
|
else
|
|
timing.iterationCount = Timing::defaults().iterationCount;
|
|
}
|
|
|
|
void TimingInput::setIterationDuration(Timing& timing, double iterationDuration)
|
|
{
|
|
if (!std::isnan(iterationDuration) && iterationDuration >= 0)
|
|
timing.iterationDuration = iterationDuration / 1000;
|
|
else
|
|
timing.iterationDuration = Timing::defaults().iterationDuration;
|
|
}
|
|
|
|
void TimingInput::setPlaybackRate(Timing& timing, double playbackRate)
|
|
{
|
|
if (std::isfinite(playbackRate))
|
|
timing.playbackRate = playbackRate;
|
|
else
|
|
timing.playbackRate = Timing::defaults().playbackRate;
|
|
}
|
|
|
|
void TimingInput::setPlaybackDirection(Timing& timing, const String& direction)
|
|
{
|
|
if (direction == "reverse") {
|
|
timing.direction = Timing::PlaybackDirectionReverse;
|
|
} else if (direction == "alternate") {
|
|
timing.direction = Timing::PlaybackDirectionAlternate;
|
|
} else if (direction == "alternate-reverse") {
|
|
timing.direction = Timing::PlaybackDirectionAlternateReverse;
|
|
} else {
|
|
timing.direction = Timing::defaults().direction;
|
|
}
|
|
}
|
|
|
|
void TimingInput::setTimingFunction(Timing& timing, const String& timingFunctionString)
|
|
{
|
|
if (RefPtr<CSSValue> timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue(timingFunctionString))
|
|
timing.timingFunction = CSSToStyleMap::mapAnimationTimingFunction(timingFunctionValue.get(), true);
|
|
else
|
|
timing.timingFunction = Timing::defaults().timingFunction;
|
|
}
|
|
|
|
Timing TimingInput::convert(double duration)
|
|
{
|
|
Timing result;
|
|
setIterationDuration(result, duration);
|
|
return result;
|
|
}
|
|
|
|
} // namespace blink
|