#include "ash/system/progress_indicator/progress_icon_animation.h"
#include "base/memory/ptr_util.h"
#include "ui/gfx/animation/tween.h"
namespace ash {
ProgressIconAnimation::ProgressIconAnimation()
: ProgressIndicatorAnimation(
base::Milliseconds(400),
false) {}
ProgressIconAnimation::~ProgressIconAnimation() = default;
std::unique_ptr<ProgressIconAnimation> ProgressIconAnimation::Create() {
auto animation = base::WrapUnique(new ProgressIconAnimation());
animation->Init();
return animation;
}
void ProgressIconAnimation::UpdateAnimatableProperties(double fraction) {
fraction = gfx::Tween::CalculateValue(gfx::Tween::Type::ACCEL_20_DECEL_100,
fraction);
inner_icon_translate_y_scale_factor_ =
gfx::Tween::FloatValueBetween(fraction, -0.5f, 0.f);
inner_ring_stroke_width_scale_factor_ =
gfx::Tween::FloatValueBetween(fraction, 0.f, 1.f);
opacity_ = gfx::Tween::FloatValueBetween(std::min(fraction * 2.0, 1.0),
0.f, 1.f);
}
}