| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 default: | 166 default: |
| 167 return false; | 167 return false; |
| 168 } | 168 } |
| 169 } | 169 } |
| 170 } | 170 } |
| 171 | 171 |
| 172 CompositorAnimationsImpl::CompositorTiming out; | 172 CompositorAnimationsImpl::CompositorTiming out; |
| 173 if (!CompositorAnimationsImpl::convertTimingForCompositor(timing, 0, out, pl
ayerPlaybackRate)) | 173 if (!CompositorAnimationsImpl::convertTimingForCompositor(timing, 0, out, pl
ayerPlaybackRate)) |
| 174 return false; | 174 return false; |
| 175 | 175 |
| 176 if (timing.timingFunction->type() == TimingFunction::CubicBezierFunction) { | |
| 177 // FIXME: Fix compositor timing functions to accept inputs outside of | |
| 178 // [0,1]. | |
| 179 const CubicBezierTimingFunction& cubic = toCubicBezierTimingFunction(*ti
ming.timingFunction); | |
| 180 const KeyframeVector& keyframes = keyframeEffect.getFrames(); | |
| 181 double startRange = 0; | |
| 182 double endRange = 1; | |
| 183 cubic.range(&startRange, &endRange); | |
| 184 | |
| 185 ASSERT(keyframes.size() >= 2); | |
| 186 if ((startRange < 0 || endRange > 1) && (keyframes.first()->easing().typ
e() != TimingFunction::LinearFunction || keyframes[keyframes.size() - 2]->easing
().type() != TimingFunction::LinearFunction)) | |
| 187 return false; | |
| 188 } | |
| 189 | |
| 190 return true; | 176 return true; |
| 191 } | 177 } |
| 192 | 178 |
| 193 bool CompositorAnimations::canStartAnimationOnCompositor(const Element& element) | 179 bool CompositorAnimations::canStartAnimationOnCompositor(const Element& element) |
| 194 { | 180 { |
| 195 return element.renderer() && element.renderer()->compositingState() == Paint
sIntoOwnBacking; | 181 return element.renderer() && element.renderer()->compositingState() == Paint
sIntoOwnBacking; |
| 196 } | 182 } |
| 197 | 183 |
| 198 bool CompositorAnimations::startAnimationOnCompositor(const Element& element, in
t group, double startTime, double timeOffset, const Timing& timing, const Animat
ionEffect& effect, Vector<int>& startedAnimationIds, double playerPlaybackRate) | 184 bool CompositorAnimations::startAnimationOnCompositor(const Element& element, in
t group, double startTime, double timeOffset, const Timing& timing, const Animat
ionEffect& effect, Vector<int>& startedAnimationIds, double playerPlaybackRate) |
| 199 { | 185 { |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 break; | 536 break; |
| 551 default: | 537 default: |
| 552 ASSERT_NOT_REACHED(); | 538 ASSERT_NOT_REACHED(); |
| 553 } | 539 } |
| 554 animations.append(animation.release()); | 540 animations.append(animation.release()); |
| 555 } | 541 } |
| 556 ASSERT(!animations.isEmpty()); | 542 ASSERT(!animations.isEmpty()); |
| 557 } | 543 } |
| 558 | 544 |
| 559 } // namespace blink | 545 } // namespace blink |
| OLD | NEW |