OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 double m_y2; | 165 double m_y2; |
166 SubType m_subType; | 166 SubType m_subType; |
167 mutable OwnPtr<UnitBezier> m_bezier; | 167 mutable OwnPtr<UnitBezier> m_bezier; |
168 }; | 168 }; |
169 | 169 |
170 class PLATFORM_EXPORT StepsTimingFunction FINAL : public TimingFunction { | 170 class PLATFORM_EXPORT StepsTimingFunction FINAL : public TimingFunction { |
171 public: | 171 public: |
172 enum SubType { | 172 enum SubType { |
173 Start, | 173 Start, |
174 End, | 174 End, |
| 175 Middle, |
175 Custom | 176 Custom |
176 }; | 177 }; |
177 | 178 |
178 static PassRefPtr<StepsTimingFunction> create(int steps, bool stepAtStart) | 179 enum StepAtPosition { |
| 180 StepAtStart, |
| 181 StepAtMiddle, |
| 182 StepAtEnd |
| 183 }; |
| 184 |
| 185 static PassRefPtr<StepsTimingFunction> create(int steps, StepAtPosition step
AtPosition) |
179 { | 186 { |
180 return adoptRef(new StepsTimingFunction(Custom, steps, stepAtStart)); | 187 return adoptRef(new StepsTimingFunction(Custom, steps, stepAtPosition)); |
181 } | 188 } |
182 | 189 |
183 static StepsTimingFunction* preset(SubType subType) | 190 static StepsTimingFunction* preset(SubType subType) |
184 { | 191 { |
185 switch (subType) { | 192 switch (subType) { |
186 case Start: | 193 case Start: |
187 { | 194 { |
188 DEFINE_STATIC_REF(StepsTimingFunction, start, (adoptRef(new Step
sTimingFunction(Start, 1, true)))); | 195 DEFINE_STATIC_REF(StepsTimingFunction, start, (adoptRef(new Step
sTimingFunction(Start, 1, StepAtStart)))); |
189 return start; | 196 return start; |
190 } | 197 } |
| 198 case Middle: |
| 199 { |
| 200 DEFINE_STATIC_REF(StepsTimingFunction, middle, (adoptRef(new Ste
psTimingFunction(Middle, 1, StepAtMiddle)))); |
| 201 return middle; |
| 202 } |
191 case End: | 203 case End: |
192 { | 204 { |
193 DEFINE_STATIC_REF(StepsTimingFunction, end, (adoptRef(new StepsT
imingFunction(End, 1, false)))); | 205 DEFINE_STATIC_REF(StepsTimingFunction, end, (adoptRef(new StepsT
imingFunction(End, 1, StepAtEnd)))); |
194 return end; | 206 return end; |
195 } | 207 } |
196 default: | 208 default: |
197 ASSERT_NOT_REACHED(); | 209 ASSERT_NOT_REACHED(); |
198 return 0; | 210 return 0; |
199 } | 211 } |
200 } | 212 } |
201 | 213 |
202 | 214 |
203 virtual ~StepsTimingFunction() { } | 215 virtual ~StepsTimingFunction() { } |
204 | 216 |
205 virtual String toString() const OVERRIDE; | 217 virtual String toString() const OVERRIDE; |
206 | 218 |
207 virtual double evaluate(double fraction, double) const OVERRIDE; | 219 virtual double evaluate(double fraction, double) const OVERRIDE; |
208 | 220 |
209 int numberOfSteps() const { return m_steps; } | 221 int numberOfSteps() const { return m_steps; } |
210 bool stepAtStart() const { return m_stepAtStart; } | 222 StepAtPosition stepAtPosition() const { return m_stepAtPosition; } |
211 | 223 |
212 SubType subType() const { return m_subType; } | 224 SubType subType() const { return m_subType; } |
213 | 225 |
214 private: | 226 private: |
215 StepsTimingFunction(SubType subType, int steps, bool stepAtStart) | 227 StepsTimingFunction(SubType subType, int steps, StepAtPosition stepAtPositio
n) |
216 : TimingFunction(StepsFunction) | 228 : TimingFunction(StepsFunction) |
217 , m_steps(steps) | 229 , m_steps(steps) |
218 , m_stepAtStart(stepAtStart) | 230 , m_stepAtPosition(stepAtPosition) |
219 , m_subType(subType) | 231 , m_subType(subType) |
220 { | 232 { |
221 } | 233 } |
222 | 234 |
223 int m_steps; | 235 int m_steps; |
224 bool m_stepAtStart; | 236 StepAtPosition m_stepAtPosition; |
225 SubType m_subType; | 237 SubType m_subType; |
226 }; | 238 }; |
227 | 239 |
228 class PLATFORM_EXPORT ChainedTimingFunction FINAL : public TimingFunction { | 240 class PLATFORM_EXPORT ChainedTimingFunction FINAL : public TimingFunction { |
229 public: | 241 public: |
230 static PassRefPtr<ChainedTimingFunction> create() | 242 static PassRefPtr<ChainedTimingFunction> create() |
231 { | 243 { |
232 return adoptRef(new ChainedTimingFunction); | 244 return adoptRef(new ChainedTimingFunction); |
233 } | 245 } |
234 | 246 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 value.type() == TimingFunction::typeName##Function) | 317 value.type() == TimingFunction::typeName##Function) |
306 | 318 |
307 DEFINE_TIMING_FUNCTION_TYPE_CASTS(Linear); | 319 DEFINE_TIMING_FUNCTION_TYPE_CASTS(Linear); |
308 DEFINE_TIMING_FUNCTION_TYPE_CASTS(CubicBezier); | 320 DEFINE_TIMING_FUNCTION_TYPE_CASTS(CubicBezier); |
309 DEFINE_TIMING_FUNCTION_TYPE_CASTS(Steps); | 321 DEFINE_TIMING_FUNCTION_TYPE_CASTS(Steps); |
310 DEFINE_TIMING_FUNCTION_TYPE_CASTS(Chained); | 322 DEFINE_TIMING_FUNCTION_TYPE_CASTS(Chained); |
311 | 323 |
312 } // namespace WebCore | 324 } // namespace WebCore |
313 | 325 |
314 #endif // TimingFunction_h | 326 #endif // TimingFunction_h |
OLD | NEW |