| 586 | } |
| 587 | |
| 588 | void |
| 589 | Curve::removeKeyFramesAfterTime(double time, |
| 590 | std::list<int>* keyframeRemoved) |
| 591 | { |
| 592 | KeyFrameSet newSet; |
| 593 | QMutexLocker l(&_imp->_lock); |
| 594 | |
| 595 | for (KeyFrameSet::iterator it = _imp->keyFrames.begin(); it != _imp->keyFrames.end(); ++it) { |
| 596 | if (it->getTime() > time) { |
| 597 | keyframeRemoved->push_back( it->getTime() ); |
| 598 | continue; |
| 599 | } |
| 600 | newSet.insert(*it); |
| 601 | } |
| 602 | _imp->keyFrames = newSet; |
| 603 | if ( !_imp->keyFrames.empty() ) { |
| 604 | KeyFrameSet::iterator last = _imp->keyFrames.end(); |
| 605 | --last; |
| 606 | refreshDerivatives(Curve::eCurveChangedReasonKeyframeChanged, last); |
| 607 | } |
| 608 | onCurveChanged(); |
| 609 | } |
| 610 | |
| 611 | bool |
| 612 | Curve::getKeyFrameWithIndex(int index, |