MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / checkAnimationLevel

Method checkAnimationLevel

Engine/Knob.cpp:3768–3814  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3766}
3767
3768void
3769KnobHelper::checkAnimationLevel(ViewSpec view,
3770 int dimension)
3771{
3772 bool changed = false;
3773
3774 for (int i = 0; i < _imp->dimension; ++i) {
3775 if ( (i == dimension) || (dimension == -1) ) {
3776 AnimationLevelEnum level = eAnimationLevelNone;
3777
3778
3779 if ( canAnimate() &&
3780 isAnimated(i, view) &&
3781 getExpression(i).empty() &&
3782 getHolder() && getHolder()->getApp() ) {
3783 CurvePtr c = getCurve(view, i);
3784 double time = getHolder()->getApp()->getTimeLine()->currentFrame();
3785 if (c->getKeyFramesCount() > 0) {
3786 KeyFrame kf;
3787 int nKeys = c->getNKeyFramesInRange(time, time + 1);
3788 if (nKeys > 0) {
3789 level = eAnimationLevelOnKeyframe;
3790 } else {
3791 level = eAnimationLevelInterpolatedValue;
3792 }
3793 } else {
3794 level = eAnimationLevelNone;
3795 }
3796 } else {
3797 level = eAnimationLevelNone;
3798 }
3799 {
3800 QMutexLocker l(&_imp->animationLevelMutex);
3801 assert( dimension < (int)_imp->animationLevel.size() );
3802 if (_imp->animationLevel[i] != level) {
3803 changed = true;
3804 _imp->animationLevel[i] = level;
3805 }
3806 }
3807 }
3808 }
3809
3810 KnobGuiIPtr hasGui = getKnobGuiPointer();
3811 if ( changed && _signalSlotHandler && hasGui && !hasGui->isGuiFrozenForPlayback() ) {
3812 _signalSlotHandler->s_animationLevelChanged(view, dimension );
3813 }
3814}
3815
3816AnimationLevelEnum
3817KnobHelper::getAnimationLevel(int dimension) const

Callers 2

getAnimationLevelMethod · 0.80
endChangesMethod · 0.80

Calls 8

emptyMethod · 0.80
getNKeyFramesInRangeMethod · 0.80
getAppMethod · 0.45
currentFrameMethod · 0.45
getTimeLineMethod · 0.45
getKeyFramesCountMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected