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

Method updateTrackKeysInfoBar

Gui/TrackerPanel.cpp:1978–2033  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1976}
1977
1978void
1979TrackerPanelPrivate::updateTrackKeysInfoBar(int time)
1980{
1981 std::set<int> keyframes;
1982 std::list<TrackMarkerPtr> markers;
1983
1984 context.lock()->getSelectedMarkers(&markers);
1985
1986 for (std::list<TrackMarkerPtr>::iterator it = markers.begin(); it != markers.end(); ++it) {
1987 std::set<int> keys;
1988 (*it)->getUserKeyframes(&keys);
1989 keyframes.insert( keys.begin(), keys.end() );
1990 }
1991
1992 prevKeyframe->setEnabled( !keyframes.empty() );
1993 nextKeyframe->setEnabled( !keyframes.empty() );
1994 addKeyframe->setEnabled( !markers.empty() );
1995 removeKeyframe->setEnabled( !markers.empty() );
1996 clearAnimation->setEnabled( !markers.empty() );
1997
1998 totalKeyframes->setValue( (double)keyframes.size() );
1999
2000 if ( keyframes.empty() ) {
2001 currentKeyframe->setValue(1.);
2002 currentKeyframe->setAnimation(0);
2003 } else {
2004 ///get the first time that is equal or greater to the current time
2005 std::set<int>::iterator lowerBound = keyframes.lower_bound(time);
2006 int dist = 0;
2007 if ( lowerBound != keyframes.end() ) {
2008 dist = std::distance(keyframes.begin(), lowerBound);
2009 }
2010
2011 if ( lowerBound == keyframes.end() ) {
2012 ///we're after the last keyframe
2013 currentKeyframe->setValue( (double)keyframes.size() );
2014 currentKeyframe->setAnimation(1);
2015 } else if (*lowerBound == time) {
2016 currentKeyframe->setValue(dist + 1);
2017 currentKeyframe->setAnimation(2);
2018 } else {
2019 ///we're in-between 2 keyframes, interpolate
2020 if ( lowerBound == keyframes.begin() ) {
2021 currentKeyframe->setValue(1.);
2022 } else {
2023 std::set<int>::iterator prev = lowerBound;
2024 if ( prev != keyframes.begin() ) {
2025 --prev;
2026 }
2027 currentKeyframe->setValue( (double)(time - *prev) / (double)(*lowerBound - *prev) + dist );
2028 }
2029
2030 currentKeyframe->setAnimation(1);
2031 }
2032 }
2033} // TrackerPanelPrivate::updateTrackKeysInfoBar
2034
2035void

Callers 6

selectInternalMethod · 0.80
onTrackKeyframeSetMethod · 0.80
onTimeChangedMethod · 0.80

Calls 11

getSelectedMarkersMethod · 0.80
emptyMethod · 0.80
lockMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
getUserKeyframesMethod · 0.45
insertMethod · 0.45
setEnabledMethod · 0.45
setValueMethod · 0.45
sizeMethod · 0.45
setAnimationMethod · 0.45

Tested by

no test coverage detected