12 #ifndef __CH_Manager_h__
13 #define __CH_Manager_h__
54 class CH_ScriptAccessManager;
58 class CH_UndoScopeChannels;
65 typedef std::function<void(const UT_StringHolder &)>
80 virtual void changed() = 0;
87 virtual void changed(
int type,
void* fsc) = 0;
88 virtual void removed(
void* fsc) = 0;
119 bool scopeChannelInternal(
const CH_Channel *chp,
bool on_off);
120 bool scopeChannelInternal(
const CH_ChannelRef &chref,
bool on_off);
122 void scopeChannel(
const char *full_chan_path,
bool on_off);
123 void unscopeChannelsWithNodeId(
int node_id,
bool force=
false);
126 void scopeChanged(
unsigned flags,
bool propagate=
true );
130 bool isChannelScoped(
const char *full_chan_path)
const;
136 bool isChannelDisplayed(
CH_Channel *chp)
const;
138 bool isChannelDisplayed(
const char *full_chan_path )
const;
139 void clearDisplayedChannels(
bool propagate =
true );
140 void displayAllScopedChannels(
bool propagate =
true );
141 void displaySelectedScopedChannels(
bool propagate =
true );
144 bool propagate =
true );
145 void displayChannel(
const char *full_chan_path,
146 bool propagate =
true );
148 bool propagate =
true );
149 void undisplayChannel(
const char *full_chan_path,
150 bool propagate =
true );
151 void undisplayChannelsWithNodeId(
int node_id,
bool force=
false);
156 bool isChannelSelected(
const char *full_chan_path )
const;
157 void clearSelectedChannels(
bool propagate =
true );
158 void selectAllScopedChannels(
bool propagate =
true );
161 bool propagate =
true );
162 void selectChannel(
const char *full_chan_path,
163 bool propagate =
true );
165 bool propagate =
true );
166 void deselectChannel(
const char *full_chan_path,
167 bool propagate =
true );
172 void togglePinAllScopedChannels();
174 void pinAllScopedChannels(
bool propagate =
true );
175 void unpinAllScopedChannels(
bool propagate =
true );
176 void pinSelectedChannels(
bool propagate =
true,
178 void unpinSelectedChannels(
bool propagate =
true,
181 bool propagate =
true );
183 bool propagate =
true );
185 bool propagate =
true );
187 bool propagate =
true );
188 void unpinChannelsWithNodeId(
int node_id,
bool force=
false);
189 void clearPinnedChannels(
bool propagate =
true );
194 void clearLayerScope();
196 bool isLayerScoped(
const char *full_chan_path)
const;
199 void scopeLayer(
const char *full_chan_path,
bool on_off);
200 bool scopeLayerInternal(
CH_Channel *chp,
bool on_off);
201 bool scopeLayerInternal(
const CH_ChannelRef &chref,
bool on_off);
207 bool isLayerSelected(
const char *full_chan_path)
const;
208 void clearSelectedLayers(
bool propagate =
true);
209 void selectAllScopedLayers(
bool propagate =
true);
211 void selectLayer(
const CH_ChannelRef &chref,
bool propagate=
true);
212 void selectLayer(
const char *full_chan_path,
bool propagate=
true);
213 void deselectLayer(
const CH_ChannelRef &chref,
bool propagate=
true);
214 void deselectLayer(
const char *full_chan_path,
bool propagate=
true);
219 void togglePinAllScopedLayers();
221 void pinAllScopedLayers(
bool propagate =
true );
222 void unpinAllScopedLayers(
bool propagate =
true );
223 void pinSelectedLayers(
bool propagate =
true,
225 void unpinSelectedLayers(
bool propagate =
true,
228 bool propagate =
true );
230 bool propagate =
true );
232 bool propagate =
true );
234 bool propagate =
true );
235 void clearPinnedLayers(
bool propagate =
true );
241 bool isLayerDisplayed(
const char *full_chan_path )
const;
242 void clearDisplayedLayers(
bool propagate =
true );
243 void displayAllScopedLayers(
bool propagate =
true );
244 void displaySelectedScopedLayers(
bool propagate =
true );
247 bool propagate =
true );
248 void displayLayer(
const char *full_chan_path,
249 bool propagate =
true );
251 bool propagate =
true );
252 void undisplayLayer(
const char *full_chan_path,
253 bool propagate =
true );
258 bool isGraphSelected(
const char *full_chan_path )
const;
259 void clearGraphSelected(
bool propagate =
true );
261 bool propagate =
true );
262 void selectGraph(
const char *full_chan_path,
263 bool propagate =
true );
265 bool propagate =
true );
266 void deselectGraph(
const char *full_chan_path,
267 bool propagate =
true );
277 bool propagate =
true );
282 bool propagate =
true );
285 unsigned getChannelFlags(
const CH_ChannelRef &chref )
const;
290 void clearChannelScope(
bool clear_all_tables=
false);
296 int getNumScopedChanRefs();
299 int getNumScopedChanRefs(
bool filtered);
306 bool sorted=
false)
const;
310 void getScopedChannelsKeyFrames(
UT_IntArray &frames,
311 int minframe,
int maxframe);
313 bool hasScopedChannels();
316 {
return myKeepChannelSelection; }
318 { myKeepChannelSelection =
b;}
323 FilterAnimationLayers = 1,
331 { myEnableFilter[filter_type] =
b; }
333 {
return myEnableFilter[filter_type]; }
336 { myFilter[filter_type] =
f;}
338 {
return myFilter[filter_type]; }
341 { myFilterTranlates =
b;}
343 {
return myFilterTranlates; }
346 { myFilterRotates =
b;}
348 {
return myFilterRotates; }
351 { myFilterScales =
b;}
353 {
return myFilterScales; }
356 { myFilterParmLabels[filter_type] =
b;}
358 {
return myFilterParmLabels[filter_type]; }
361 { myFilterFullNames[filter_type] =
b;}
363 {
return myFilterFullNames[filter_type]; }
370 void triggerDependentFilters(
int type);
372 bool hasFilter()
const;
388 bool myKeepChannelSelection;
389 mutable int myNumScopedChannels;
390 mutable int myTotalScopedChannels;
395 bool myEnableFilter[NumFilterType];
396 bool myFilterParmLabels[NumFilterType];
397 bool myFilterFullNames[NumFilterType];
398 bool myIsFiltered[NumFilterType];
399 bool myFilterTranlates;
400 bool myFilterRotates;
417 CH_ON_COLLISION_ASSERT
418 } CollisionBehaviour;
421 CH_EXPANSION_TYPE_EXPRESSION = 1,
422 CH_EXPANSION_TYPE_VARIABLE = 1 << 1,
423 CH_EXPANSION_TYPE_TILDE = 1 << 2,
424 CH_EXPANSION_TYPE_NO_COMMENTS = 1 << 3,
425 CH_EXPANSION_TYPE_NO_RAWSTRINGS = 1 << 4,
426 CH_EXPANSION_TYPE_DEFAULT = CH_EXPANSION_TYPE_EXPRESSION |
427 CH_EXPANSION_TYPE_VARIABLE |
428 CH_EXPANSION_TYPE_TILDE,
445 virtual void aboutToDelete();
454 virtual void setContext();
458 void resetPlayback();
460 void resetChannelOptions(
bool notify =
true);
461 bool loadChannelOptions(
const char *
filename );
462 bool saveChannelOptions(
const char *
filename );
467 myDefaultExpression.harden( s );
470 {
return (
const char *)myDefaultExpression; }
474 myDefaultRotationExpression.harden(s);
477 {
return (
const char *)myDefaultRotationExpression;}
481 {
return myAutoSlope; }
483 { myDefaultSlope = slope; }
485 {
return myDefaultSlope; }
487 { myAutoSplit = onoff; }
489 {
return myAutoSplit; }
491 { myDefaultSplitExpression.harden(
492 expr ? expr :
"" ); }
494 {
return (
const char *)myDefaultSplitExpression; }
497 { myHoldLastKey = onoff; }
499 {
return myHoldLastKey; }
501 {
return (
const char *)myChanCreateKeyExpression; }
503 { myChanCreateKeyExpression.harden(s ? s :
""); }
505 {
return myAlwaysCommitKey; }
507 { myAlwaysCommitKey = onoff; }
517 void clearChannelScope();
525 int getNumScopedChanRefs()
526 {
return myScopedChannels.getNumScopedChanRefs(); }
534 bool sorted=false)
const;
544 void getScopedChannelsKeyFrames(
UT_IntArray &frames,
545 int minframe,
int maxframe);
549 void blockModifyScope(
int on_off);
557 void scopeChannel(const
char *full_chan_path,
bool on_off);
559 bool scopeChannelInternal(const
CH_Channel *chp,
bool on_off);
561 bool scopeChannelInternal(const
CH_ChannelRef &chref,
bool on_off);
563 virtual
void getChannelsWithNodeId(
CH_ChannelList &chans,
int node_id) const;
567 void scopeChanged(
unsigned flags,
bool propagate=true );
573 bool isChannelScoped(const
char *full_chan_path) const;
580 void clearPendingChannels();
582 bool hasPendingChannels() const;
592 bool isChannelDisplayed(
CH_Channel *chp) const;
596 bool isChannelDisplayed( const
char *full_chan_path ) const;
598 void clearDisplayedChannels(
bool propagate = true );
600 void displayAllScopedChannels(
bool propagate = true );
602 void displaySelectedScopedChannels(
bool propagate = true );
606 bool propagate = true );
608 void displayChannel( const
char *full_chan_path,
609 bool propagate = true );
612 bool propagate = true );
614 void undisplayChannel( const
char *full_chan_path,
615 bool propagate = true );
623 bool isChannelSelected( const
char *full_chan_path ) const;
625 void clearSelectedChannels(
bool propagate = true );
627 void selectAllScopedChannels(
bool propagate = true );
631 bool propagate = true );
633 void selectChannel( const
char *full_chan_path,
634 bool propagate = true );
637 bool propagate = true );
639 void deselectChannel( const
char *full_chan_path,
640 bool propagate = true );
646 void togglePinAllScopedChannels();
650 void pinAllScopedChannels(
bool propagate = true );
652 void unpinAllScopedChannels(
bool propagate = true );
654 void pinSelectedChannels(
bool propagate = true,
655 int operateOn = CH_SELECTED );
657 void unpinSelectedChannels(
bool propagate = true,
658 int operateOn = CH_SELECTED );
661 bool propagate = true );
664 bool propagate = true );
669 void clearLayerScope();
673 bool isLayerScoped(const
char *full_chan_path) const;
679 void scopeLayer(const
char *full_chan_path,
bool on_off);
681 bool scopeLayerInternal(
CH_Channel *chp,
bool on_off);
683 bool scopeLayerInternal(const
CH_ChannelRef &chref,
bool on_off);
691 bool isLayerSelected( const
char *full_chan_path ) const;
693 void clearSelectedLayers(
bool propagate = true );
695 void selectAllScopedLayers(
bool propagate = true );
698 void selectLayer( const
CH_ChannelRef &chref,
bool propagate = true );
700 void selectLayer( const
char *full_chan_path,
bool propagate = true );
702 void deselectLayer( const
CH_ChannelRef &chref,
bool propagate = true );
704 void deselectLayer( const
char *full_chan_path,
bool propagate = true );
710 void togglePinAllScopedLayers();
714 void pinAllScopedLayers(
bool propagate = true );
716 void unpinAllScopedLayers(
bool propagate = true );
718 void pinSelectedLayers(
bool propagate = true,
int operateOn =
CH_LAYER_SELECTED );
720 void unpinSelectedLayers(
bool propagate = true,
int operateOn = CH_LAYER_SELECTED );
733 bool isLayerDisplayed( const
char *full_chan_path ) const;
735 void clearDisplayedLayers(
bool propagate = true );
737 void displayAllScopedLayers(
bool propagate = true );
739 void displaySelectedScopedLayers(
bool propagate = true );
743 bool propagate = true );
745 void displayLayer( const
char *full_chan_path,
746 bool propagate = true );
749 bool propagate = true );
751 void undisplayLayer( const
char *full_chan_path,
752 bool propagate = true );
758 bool propagate = true );
760 unsigned getChannelFlags( const
CH_ChannelRef &chref ) const;
768 int expandString(const
char *
string,
UT_String &expanded,
771 int expansion_type = CH_EXPANSION_TYPE_DEFAULT,
773 context_options_stack =
nullptr,
777 void buildStringOpDependencies( const
char *str,
void *ref_id,
784 bool scanForVariableInString(const
char *
variable,
785 const
char *
string) const;
787 const
char *new_fullpath,
788 const
char *old_fullpath,
790 const
char *chan_name,
791 const
char *old_chan_name,
802 context_options_stack =
nullptr,
803 DEP_ContextOptionsReadHandle context_options =
804 DEP_ContextOptionsReadHandle());
810 context_options_stack =
nullptr,
811 DEP_ContextOptionsReadHandle context_options =
812 DEP_ContextOptionsReadHandle());
816 static
void evaluationError(
int err,
int thread, const
char *
path);
827 bool getIsSettingGlobalParam()
const
828 {
return (mySettingGlobalParam > 0); }
829 void getGlobalParamF(
const char *token,
CH_Collection *scope,
831 bool add_dependencies );
832 void getGlobalParamS(
const char *token,
CH_Collection *scope,
834 int thread,
bool add_dependencies );
839 void getGlobalParamAnyScopeF(
const char *token,
CH_Collection *scope,
841 bool add_dependencies );
842 void getGlobalParamAnyScopeS(
const char *token,
CH_Collection *scope,
844 int thread,
bool add_dependencies );
846 int setGlobalFloatParam(
const char *token,
849 int setGlobalStringParam(
const char *token,
854 void dumpGlobalParams(std::ostream &out)
const;
858 void dirtyOrphanGlobalParamDependents(
const char *token,
866 {
return (mySettingGuideParam > 0); }
874 CH_Group *findGroup(
const char *const_path,
bool create =
false,
877 const char *
pattern,
bool minimal );
889 bool propagate =
true);
890 void updateGroupSelectionFromScoped(
void *by,
891 bool propagate =
true);
894 bool propagate =
true);
896 const char *
name=
"new_group");
899 CH_Group *createGroup(
const char *const_path,
908 void collapseChildren(
CH_Group *parent );
914 CollisionBehaviour cb,
915 const char *new_name = 0 );
917 CollisionBehaviour cb,
918 const char *new_name = 0 );
920 CollisionBehaviour cb );
922 CollisionBehaviour cb );
938 static bool couldExpandString(
const char *str);
942 {
return myDefaultExprLanguage; }
944 { myDefaultExprLanguage = language; }
948 {
return p == &myScopedChannels; }
952 {
return myScopedChannels; }
954 {
return myScopedChannels; }
957 void timeGroupsChanged();
962 void destroyTimeGroup(
int i);
971 int getTimeGroupIdx(
const char *
name )
const;
990 int niceFrameSeparation(
fpreal initialSep,
991 int minimumSep = 1)
const;
1006 static fpreal getDefaultFPS();
1009 static int getDefaultChopMotionSamples();
1012 void setRawNumSamples(
int n,
bool notify =
true);
1014 void setSamplesPerSec(
fpreal fps,
bool notify =
true);
1016 void setRawSamplesPerSec(
fpreal fps,
bool notify =
true);
1018 void setChopMotionSamples(
int n,
bool notify =
true);
1023 {
return getFrame( myStart ); }
1025 {
return getFrame( myEnd ); }
1030 void setGlobalStart(
fpreal start,
bool notify =
true);
1040 return ((sample-1.0)/myFPS);
1050 return niceNumber(getSampleRaw(t));
1055 return (
int)
SYSfloor(getSampleRaw(t+getTolerance()));
1060 return sample_delta/myFPS;
1065 return time_delta*myFPS;
1070 return getTime(
SYSrint( getSampleRaw(t) ) );
1076 return getTime(getSnapSubsample(getSampleRaw(t)));
1089 return SYSrint((frame - getGlobalStartFrame())
1090 * (1.0 / mySampleStep))
1091 * mySampleStep + getGlobalStartFrame();
1105 snaptime = getSnapToFrameTime( t );
1106 return SYSisEqual(t, snaptime, getTolerance());
1118 void setIntegerFrameFlag(
int flag,
bool notify =
true);
1121 void setRestrictRangeFlag(
int flag,
bool notify =
true);
1124 void setShowRangeFlag(
int flag,
bool notify =
true);
1127 void setShowTicksFlag(
int flag,
bool notify =
true);
1130 void setShowAudioFlag(
int flag,
bool notify =
true);
1133 void setShowKeysFlag(
int flag,
bool notify =
true);
1136 void setShowSimCacheFlag(
int flag,
bool notify =
true);
1145 void parseUnitsString(
const char *
units,
1148 fpreal scaleToMKS(
const char *fromunits)
const;
1149 fpreal scaleFromMKS(
const char *tounits)
const;
1152 void setRealTimeFlag(
int flag,
bool notify =
true);
1154 void setRealTimeFactor(
fpreal f,
bool notify =
true);
1156 void setRealTimeDisableSkip(
bool b,
bool notify =
true);
1158 void setSampleStep(
fpreal s,
bool notify =
true);
1162 start = myRangeStart;
1171 int saveChannels(
const char *
filename,
bool binary,
bool compiled,
1173 bool displayed =
false)
const;
1174 int loadChannels(
const char *
filename,
1175 const char *src_pattern,
1176 const char *dest_pattern,
1181 bool delete_keys =
false,
1183 static bool readCHNFileHeader(
UT_IStream &is,
bool quiet,
1187 static bool skipCHNFileHeaderForCollection(
UT_IStream &is,
bool &is_fp64);
1188 static bool getFileType(
const char *
filename,
int &raw,
int &
binary );
1189 static bool printFileInfo(std::ostream &os,
const char *
filename,
1191 bool print_segments=
true );
1212 evalContext(thread).myCollection =
g;
1214 evalContext(thread).myChannel = 0;
1215 evalContext(thread).mySegment = 0;
1216 evalContext(thread).myChannelName = 0;
1227 return evalContext(thread).myCollection;
1234 { myRootCollection = root; }
1236 {
return myRootCollection; }
1243 {
return myEvalContext.getValueForThread(thread); }
1247 {
return myEvalContext.getValueForThread(thread); }
1250 {
return evalContext(thread).myChannel; }
1252 {
return evalContext(thread).mySegment; }
1254 {
return evalContext(thread).myChannelName; }
1257 {
return evalContext(thread).myContextOptionsStack; }
1260 {
return evalContext(thread).myContextOptions; }
1265 {
return evalContext(thread).time(); }
1267 { evalContext(thread).setTime(time); }
1269 { evalContext(thread).setFlicks(fl); }
1285 bool getVariableValue(
UT_String &str,
int i,
1287 bool getVariableValue(
fpreal &
val,
int i,
1291 bool getVariableValue(
int &
val,
int i,
int thread)
const;
1294 virtual bool getVariableString(
const char *
name,
1307 static void lookupVariableNoThread(
const char *
name,
1311 static void lookupExpressionNoThread(
const char *
name,
1332 const char *
path)
const;
1353 bool use_alias=
false)
const;
1355 void changeReferencesToNodeId(
int old_id,
int new_id);
1361 void removeReferencesToNodeId(
int node_id);
1363 void displayScope()
const;
1377 {
return myAutoKeyTuples; }
1379 { myAutoKeyTuples=
b; }
1384 {
return mySetAutoScopeOnChannelCreate; }
1386 { mySetAutoScopeOnChannelCreate=
b; }
1391 {
return myAutoScopeIncludeAnimated; }
1393 { myAutoScopeIncludeAnimated=
b; }
1397 {
return myFollowScopedChannelReferences; }
1399 { myFollowScopedChannelReferences=
b; }
1412 fpreal evalCycleOffsetFunc(
1414 fpreal evalCycleOffsettFunc(
1441 {
return myAutoScopeIncludeChild; }
1443 { myAutoScopeIncludeChild=
b; }
1448 {
return myAutoScopeIncludeConstraints; }
1450 { myAutoScopeIncludeConstraints=
b; }
1458 {
return myDefaultContextOptions; }
1461 void setDefaultContextOption(
1464 void setDefaultContextOption(
1469 void setDefaultContextOptionUiConfig(
1472 void removeDefaultContextOption(
1474 void clearDefaultContextOptions();
1475 bool saveDefaultContextOptions(std::ostream &os)
const;
1476 bool loadDefaultContextOptions(
UT_IStream &is);
1477 int addDefaultContextOptionCallback(
1479 void removeDefaultContextOptionCallback(
int id);
1480 bool isAutomaticContextOption(
1482 bool isAutomaticContextOptionOverridden(
1484 void pushRopCookContextOptions(
bool ropcook,
1490 void updateRopCookContextOptions(
bool ropcook,
1496 void popRopCookContextOptions();
1503 void triggerChannelChanged();
1514 {
return myIgnoreUpdateScopeFlag; }
1516 { myIgnoreUpdateScopeFlag = onoff; }
1518 void initExpressionLibrary();
1522 void initLibraryGlue();
1527 void internalScopeChanged(
unsigned flags,
1528 bool propagate=
true );
1530 void playbackChanged();
1532 void handleGroupCollision(
CH_Group *new_group,
1534 CollisionBehaviour cb );
1536 void destroyContents();
1537 int internalSetGlobalParam(
const char *token,
1540 int setSingleGlobalParam(
const char *token,
1543 void internalDirtyOrphanGlobalParamDependents(
1548 void propagateDefaultContextOptionDirtied(
1551 static char *chExprExpander(
const char *str,
int thread);
1557 bool operator==(
const chParamKey &key)
const;
1561 const char *getToken()
const
1569 {
return key.hash(); }
1600 chParamData *findGlobalParam(
const char *token,
1602 chParamData *findOrCreateGlobalParam(
1604 fpreal fval,
const char *sval);
1606 chParamData *myLastGlobalParam;
1607 int mySettingGlobalParam;
1609 int mySettingGuideParam;
1611 int myChopMotionSamples;
1613 unsigned myGroupsSorted:1,
1616 myRealTimeDisableSkip:1,
1625 mySetAutoScopeOnChannelCreate:1,
1626 myAutoScopeIncludeAnimated:1,
1627 myFollowScopedChannelReferences:1,
1628 myAutoScopeIncludeChild:1,
1629 myAutoScopeIncludeConstraints:1;
1632 short myRawInterpFlag;
1638 SlopeMode myAutoSlope;
1642 bool myAlwaysCommitKey;
1655 int myBlockModifyScope;
1656 unsigned myPendingScopeChange;
1657 bool myPendingChannelChanged;
1663 myDefaultContextOptionCallbacks;
1664 int myNextDefaultContextOptionCallbackId;
1666 bool myIgnoreUpdateScopeFlag;
1672 friend class CH_UndoScopeChannels;
1687 : myContext(chman.evalContext(thread))
1688 , myCollection(nullptr)
1689 , myPopCollection(false)
1690 , myPopContextOptions(false)
1692 #if defined(CH_USE_FLICKS)
1693 myFlicks = myContext.flicks();
1695 mySeconds = myContext.time();
1697 myContext.setTime(time);
1700 myPopCollection =
true;
1701 myCollection = myContext.myCollection;
1702 myContext.myCollection = ch;
1704 if (!context_options.isNull())
1706 myPopContextOptions =
true;
1707 myContextOptionsStack = myContext.myContextOptionsStack;
1708 myContext.myContextOptionsStack = context_options_stack;
1709 myContextOptions = myContext.myContextOptions;
1710 myContext.myContextOptions = context_options;
1716 #if defined(CH_USE_FLICKS)
1717 myContext.setFlicks(myFlicks);
1719 myContext.setTime(mySeconds);
1721 if (myPopCollection)
1722 myContext.myCollection = myCollection;
1723 if (myPopContextOptions)
1725 myContext.myContextOptionsStack = myContextOptionsStack;
1726 myContext.myContextOptions = myContextOptions;
1735 #if defined(CH_USE_FLICKS)
1740 bool myPopCollection;
1741 bool myPopContextOptions;
1752 : myContext(
CH_Manager::getContext()->evalContext(thread))
1754 myCollection = myContext.myCollection;
1756 myContext.myCollection = collection;
1760 return myContext.myCollection;
1765 myContext.myCollection = collection;
1769 myContext.myCollection = myCollection;
1812 : myOwner(owner), myChanRef(ref), myFlags(flags)
1817 bool checkPtr()
const;
fpreal getSampleDelta(fpreal time_delta) const
fpreal getRealTimeFactor() const
CH_API void CHsortChannelRefs(CH_ChannelRefList &channels)
GLboolean GLboolean GLboolean b
DEP_ContextOptionsHandle getDefaultContextOptions() const
fpreal getSnapToSubframeTime(fpreal t) const
GT_API const UT_StringHolder filename
bool getAutoScopeIncludeConstraints() const
const char * getEvalChannelName(int thread) const
fpreal getSnapToFrameTime(fpreal t) const
fpreal getSecsPerSample() const
CH_API fpreal CHgetTimeFromFrame(fpreal frame)
#define SYS_DEPRECATED(__V__)
void setAutoScopeOnChannelCreate(bool b)
CH_API fpreal CHgetSampleFromTime(fpreal time)
virtual ~CH_ChannelColorManager()
void setAutoScopeIncludeChild(bool b)
const DEP_ContextOptionsStack * getEvalChannelContextOptionsStack(int thread) const
void setAutoScopeIncludeConstraints(bool b)
fpreal getUnitLength() const
GT_API const UT_StringHolder time
bool(* CH_StringVarEvalFunc)(UT_String &val, int varid, int thread)
UT_StringArray JOINTS head
void setHoldFlag(int flag)
bool(* CH_IntVarEvalFunc)(int &val, int varid, int thread)
const GLuint GLenum const void * binary
GLsizei const GLchar *const * path
void setKeepChannelListSelection(bool b)
bool getAutoScopeOnChannelCreate() const
void setFilterParmLabels(FilterType filter_type, bool b)
void setFilterScales(bool b)
fpreal getSampleRaw(fpreal t) const
const CH_TimeGroup * getTimeGroup(int i) const
std::size_t SYS_HashType
Define the type for hash values.
fpreal getSnapSample(fpreal frame) const
void setEvalCollection(CH_Collection *g, int thread)
int getShowSimCacheFlag() const
CH_API void CHsortChannelPaths(UT_StringArray &channel_paths)
CH_API void CHoutputChannelList(UT_WorkBuffer &info, CH_ChannelList &channels)
bool getAutoScopeIncludeChild() const
Selectively extract and filter point data using a custom filter operator.
CH_API void CHbuildRange(int start, int end, UT_SuperIntervalR &r)
fpreal getTimeDelta(fpreal sample_delta) const
fpreal getTimeCodeOffset(fpreal) const
GLuint const GLchar * name
bool getFilterParmLabels(FilterType filter_type) const
bool getIsSettingGuideParam() const
int getRealTimeFlag() const
void setEnableFilter(FilterType filter_type, bool b)
CH_ScopeUndo(CH_ScopedChannels *owner, const CH_ChannelRef &ref, unsigned flags)
SYS_API fpreal64 SYSniceNumber(fpreal64 num, int digits=6)
fpreal getSnapSubsample(fpreal frame) const
const CH_EvalContext & evalContext(int thread) const
int getHoldLastKey() const
void setAutoScopeIncludeAnimated(bool b)
int getShowKeysFlag() const
fpreal getUnitMass() const
static bool getContextExists()
void setUnitMass(fpreal unitmass)
bool getRealTimeDisableSkip() const
SlopeMode getAutoSlope() const
void setChanCreateKeyExpression(const char *s)
void setFollowScopedChannelReferences(bool b)
bool getFilterFullNames(FilterType filter_type) const
int getGlobalEndFrame() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
bool getFollowScopedChannelReferences() const
int getNTimeGroups() const
void setDefaultSplitExpression(const char *expr)
void getSampleRange(fpreal &start, fpreal &end)
int getFrame(fpreal t) const
fpreal getSampleStep() const
bool getFilterTranslates() const
CH_API void CHsortLayerRefs(CH_ChannelRefList &channels)
bool getAutoScopeIncludeAnimated() const
int getRawInterpolation()
CH_AutoEvaluateTime(CH_Manager &chman, int thread, fpreal time, CH_Collection *ch=nullptr, const DEP_ContextOptionsStack *context_options_stack=nullptr, DEP_ContextOptionsReadHandle context_options=DEP_ContextOptionsReadHandle())
bool getFilterScales() const
CH_Manager * CHgetManager()
fpreal getGlobalStart() const
fpreal getSample(fpreal t) const
const UT_StringHolder & getFilter(FilterType filter_type) const
int getIntegerFrameFlag() const
std::function< void(const UT_StringHolder &)> CH_DefaultContextOptionCallback
const CH_Segment * getEvalSegment(int thread) const
bool getAutoKeyTuples() const
Auto-Key all Tuples is a preference to key tuples together.
bool getEnableFilter(FilterType filter_type) const
DEP_ContextOptionsReadHandle getEvalChannelContextOptions(int thread) const
void setRootCollection(CH_Collection *root)
fpreal getSamplesPerSec() const
int getRestrictRangeFlag() const
void setDefaultSlope(fpreal slope)
GLsizei GLsizei GLchar * source
void setEvaluateTime(SYS_Flicks fl, int thread)
Functions for obtaining and setting the current evaluation time.
CH_EvalContext & evalContext(int thread)
CH_API void CHchannelsToCollections(CH_ChannelList const &channels, CH_CollectionList &collections)
const CH_Channel * getEvalChannel(int thread) const
void setRawInterpolation(int state)
CH_API void CHdisplayFlags(unsigned flags, std::ostream &s)
void setDefaultExpression(const char *s)
fpreal getGlobalEnd() const
void setDefaultExprLanguage(CH_ExprLanguage language)
bool getIgnoreUpdateScopeFlag() const
SYS_API fpreal32 SYSfloor(fpreal32 val)
fpreal getAudioLevel() const
CH_Collection * collection() const
CH_API int CHgetFrameFromTime(fpreal time)
void setAudioLevel(fpreal lvl)
CH_ExprLanguage getDefaultExprLanguage()
void setAutoSlope(SlopeMode m)
void setFilterFullNames(FilterType filter_type, bool b)
fpreal32 SYSrint(fpreal32 val)
virtual ~CH_FilterChanged()
fpreal getDefaultSlope() const
static CH_Manager * getContext()
int getShowAudioFlag() const
bool getIsAtFrame(fpreal t) const
int getShowRangeFlag() const
const char * getDefaultExpression() const
GT_API const UT_StringHolder version
void setDefaultRotationExpression(const char *s)
CH_AutoEvalCollection(int thread, CH_Collection *collection=NULL)
GLenum GLuint GLenum GLsizei const GLchar * buf
const CH_ScopedChannels & getGlobalScopedChannels() const
CH_ScopedChannels * myOwner
fpreal getEvaluateTime(int thread) const
Functions for obtaining and setting the current evaluation time.
CH_Collection * getEvalCollection(int thread) const
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
void setUnitLength(fpreal unitlength)
bool getFilterRotates() const
UT_COWReadHandle< DEP_ContextOptions > DEP_ContextOptionsReadHandle
void setAutoKeyTuples(bool b)
Push & restore the evaluation time (and optionally a channel collection)
int getChopMotionSamples() const
CH_ScopedChannels & getGlobalScopedChannels()
const char * getDefaultRotationExpression() const
virtual ~CH_ChannelChanged()
SYS_HashType operator()(const chParamKey &key) const
void setAlwaysCommitKeyChange(bool onoff)
bool getAutoSplit() const
void setHoldLastKey(bool onoff)
fpreal getNumSamples() const
void setFilterRotates(bool b)
virtual CH_ScriptAccessManager * getAccessManager(int)
void setTimeCodeOffset(fpreal t)
bool getAlwaysCommitKeyChange() const
void set(CH_Collection *collection)
virtual bool getChannelAutoSelect(const CH_ChannelRef &chref) const
CH_TimeGroup * getTimeGroup(int i)
CH_Collection * getRootCollection() const
bool getKeepChannelListSelection() const
bool operator!=(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
static fpreal niceNumber(fpreal num, int digits=6)
void setAutoSplit(bool onoff)
void setFilterTranslates(bool b)
const char * getDefaultSplitExpression() const
void setIgnoreUpdateScopeFlag(bool onoff)
bool(* CH_FloatVarEvalFunc)(fpreal &val, int varid, int thread)
void setEvaluateTime(fpreal time, int thread)
Functions for obtaining and setting the current evaluation time.
int getGlobalStartFrame() const
fpreal getTolerance() const
fpreal getTime(fpreal sample) const
void setFilter(FilterType filter_type, const UT_StringHolder &f)
int getShowTicksFlag() const
CH_API void CHsortChannels(CH_ChannelList &channels)
ImageBuf OIIO_API channels(const ImageBuf &src, int nchannels, cspan< int > channelorder, cspan< float > channelvalues={}, cspan< std::string > newchannelnames={}, bool shuffle_channel_names=false, int nthreads=0)
CH_ScopedChannels & CHgetScopedChannels()
const char * getChanCreateKeyExpression() const
bool isGlobalScopedChannels(CH_ScopedChannels *p)