Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: cc/animation/timing_function.cc

Issue 2775143002: Implement frames() timing function (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/animation/timing_function.h" 5 #include "cc/animation/timing_function.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 case StepPosition::MIDDLE: 120 case StepPosition::MIDDLE:
121 return 0.5; 121 return 0.5;
122 case StepPosition::END: 122 case StepPosition::END:
123 return 0; 123 return 0;
124 default: 124 default:
125 NOTREACHED(); 125 NOTREACHED();
126 return 1; 126 return 1;
127 } 127 }
128 } 128 }
129 129
130 std::unique_ptr<FramesTimingFunction> FramesTimingFunction::Create(int frames) {
131 return base::WrapUnique(new FramesTimingFunction(frames));
132 }
133
134 FramesTimingFunction::FramesTimingFunction(int frames) : frames_(frames) {}
135
136 FramesTimingFunction::~FramesTimingFunction() {}
137
138 TimingFunction::Type FramesTimingFunction::GetType() const {
139 return Type::FRAMES;
140 }
141
142 float FramesTimingFunction::GetValue(double t) const {
143 return static_cast<float>(GetPreciseValue(t));
144 }
145
146 std::unique_ptr<TimingFunction> FramesTimingFunction::Clone() const {
147 return base::WrapUnique(new FramesTimingFunction(*this));
148 }
149
150 void FramesTimingFunction::Range(float* min, float* max) const {
151 *min = 0.0f;
152 *max = 1.0f;
153 }
154
155 float FramesTimingFunction::Velocity(double x) const {
156 return 0.0f;
157 }
158
159 double FramesTimingFunction::GetPreciseValue(double t) const {
160 const double frames = static_cast<double>(frames_);
161 return MathUtil::ClampToRange(std::floor(frames * t) / (frames - 1), 0.0,
162 1.0);
163 }
164
130 } // namespace cc 165 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698