13 #ifndef __PI_OpHandleLink__
14 #define __PI_OpHandleLink__
32 #include <hboost/any.hpp>
36 #define PI_SETTING_SHOWOPPATH "showoppath"
37 #define PI_SETTING_COLOR "color"
38 #define PI_SETTING_OWNEROP "ownerop"
39 #define PI_SETTING_OWNEROPGROUP "owneropgroup"
96 int linkOpParmToHandleParm(
const char *op_type,
97 const char *handle_parm_name,
98 const char *op_parm_name);
102 int activateHandleParm(
int pindex);
105 void disableHandleParm(
int pindex);
107 virtual int attach(
OP_Node &node);
108 virtual int detach(
OP_Node &node);
109 virtual void detachAll();
111 void attachForKeyframe(
OP_Node &node);
112 void detachForKeyframe(
OP_Node &node);
113 void detachAllForKeyframe();
117 void isolateHandleParms(
int beg,
120 void setShowOpPath(
bool onoff);
121 virtual bool getShowOpPath()
const;
128 void setRootDescription(
const char *description);
129 const char *getRootDescription()
const;
130 void buildDescription();
132 virtual void descriptionChanged(
const char* old_description);
137 void setIsTimeOverride(
bool is_time_override);
138 void setTimeOverrideTime(
fpreal t);
141 {
return myIsTimeOverride; }
143 {
return myTimeOverrideTime; }
148 {
return myAllowUsingPerOpSettingsTable; }
150 {
return myAllowUsingLastSettingsTable; }
152 {
return myAllowUsingOpTypeSettings; }
154 {
return myAllowUsingLastVisibilitySetting; }
168 OP_Operator *lastSettingsOperatorTypeRestriction()
const;
171 OP_Node *getOpNode(
int opnum = 0)
const;
172 int getNumOps()
const;
173 OP_Node *getKeyframeOpNode(
int opnum = 0)
const;
174 int getKeyframeNumOps()
const;
177 int hasOpNode(
const OP_Node &node)
const;
178 int hasKeyframeOpNode(
const OP_Node &node)
const;
179 OP_Node *findOpNode(
int op_type,
const char *op_name)
const;
184 void doUpdateFromOpParms(
void*
values=
nullptr);
185 virtual void forceUpdateFromOpParms(
void*
values=
nullptr);
186 virtual void updateOpParms();
190 virtual void handleOpNodeChange(
OP_Node &node);
202 virtual int refreshBindings(
int op_type,
const char *op_name);
210 {
return myParmNames.entries() > 0; }
214 {
return *myParmNames(opnum); }
221 {
return *myParmNames(opnum); }
225 int getOpnumForHandleParmIndex(
int idx)
const;
228 const UT_Color &getActiveColor()
const;
229 virtual void setActiveColor(
const UT_Color &
c);
232 void setBindingState(
const bool active);
238 bool ethereal()
const;
242 int writeOptions(std::ostream &os,
const char *baseCommand);
247 void editChannels(
int append_channels,
int opnum=-1);
248 void findKey(
int direction,
int opnum=-1);
249 void setKeys(
int opnum = -1,
250 int pindex_start = -1,
252 const char *undo_str = 0);
253 void removeKeys(
int opnum=-1);
254 void deleteChannels(
int opnum=-1);
255 void lockParms(
int opnum=-1);
256 void revertToDefaults(
int opnum=-1);
257 void revertToFactoryDefaults(
int opnum=-1);
258 void overwriteDefaults(
int opnum=-1);
265 bool specific_to_op)
const;
268 virtual void saveSettingsToAppropriateLocation();
272 void loadSettingsFromTables(
bool okay_to_use_last_settings);
276 void removeSettingsFromTables();
288 static void extractProjection(
UT_String &channel,
292 const char *parmname)
295 extractProjection(channel, parmname,
300 void setLateBinding(LateBinding * binding);
301 bool hasLateBinding()
const;
302 bool hasLateBinding(LateBinding
const * binding)
const;
307 int findHandleParmIndex(
const char *h_parm_name)
const;
310 virtual void onDeletion();
319 virtual bool handleDetach();
320 virtual bool handleIsDetached()
const;
321 virtual bool handleIsDetachable()
const;
324 void updateSettings(
char const* setting_string);
325 virtual bool getSettingValue(
char const* setting_name,
hboost::any& out_value)
const;
329 { myAllowUsingPerOpSettingsTable = onoff; }
331 { myAllowUsingLastSettingsTable = onoff; }
333 { myAllowUsingOpTypeSettings = onoff; }
335 { myAllowUsingLastVisibilitySetting = onoff; }
338 int iterateParms(
int opnum, ReadParmFunc
func)
const;
339 int iterateParms(
int opnum, ModifyParmFunc
func,
bool modify_locked=
false);
345 virtual fpreal getTime()
const;
350 int getParmValue(
int pindex,
int &
val,
int d=0)
const;
354 int setParmValue(
int pindex,
int val,
bool addkey=
false);
355 int setParmValue(
int pindex,
fpreal val,
bool addkey=
false);
359 int val,
bool addkey=
false);
369 virtual void updateFromOpParms();
378 virtual int justLinked(
int pindex);
379 virtual void justUnlinked(
int pindex);
381 virtual PI_Interest *getInputGroupInterests()
const;
387 void addAllInputGroupInterests(
int opnum);
388 void removeAllInputGroupInterests(
int opnum);
394 int getParmInstValue(
int pindex,
const int *inst,
396 int nestlevel=1)
const;
397 int getParmInstValue(
int pindex,
const int *inst,
399 int nestlevel=1)
const;
400 int getParmInstValue(
int pindex,
const int *inst,
402 int nestlevel=1)
const;
404 void getParmInstVector3(
int pindex,
const int *inst,
411 int setParmInstValue(
int pindex,
const int *inst,
412 int val,
bool addkey=
false,
414 int setParmInstValue(
int pindex,
const int *inst,
417 int setParmInstValue(
int pindex,
const int *inst,
421 void setParmInstVector3(
int pindex,
const int *inst,
424 int performParmCallback(
int pindex,
int theitem);
428 bool readParm(
int pindex, ReadParmFunc
f)
const;
429 bool modifyParm(
int pindex, ModifyParmFunc
f,
bool modify_locked=
false);
433 void copyKeyStructure(
int pindex_dest,
int pindex_from);
436 bool isParmEnabled(
int pindex,
int opnum = 0)
const;
443 {
return myParmNames.entries(); }
450 virtual int hasTimeInterest()
const;
451 virtual void handleTimeChange();
460 void beginDistributedUndoBlock(
const char *operation,
462 void endDistributedUndoBlock();
466 bool inDistributedUndoBlock();
477 virtual void setOwnerOp(
const char *owner_op);
480 virtual void setOwnerOpGroup(
const char *owner_op_group);
481 const UT_String &getOwnerOpGroup()
const;
489 static bool isOpParmLocked(
492 const OP_Node **ret_node = NULL);
495 void updateStateValues(
void* ui_event);
498 void beginHandleChange(
void* ui_event);
501 void endHandleChange(
void* ui_event);
504 void allocProxy(
void*
ptr);
514 int linkOpParm(
const char *op_type,
515 int pindex,
const char *parmname);
516 void updateParmLockStatus(
OP_Node &
op );
518 void addParmNames(
int opnum);
519 void removeParmNames(
int opnum);
521 void setKeysSingleOp(
int opnum,
int pindex = -1,
523 const char *name_prefix = NULL);
524 void removeKeysSingleOp(
int opnum);
525 void deleteChannelsSingleOp(
int opnum);
526 void lockParmsSingleOp(
int opnum);
527 void revertToDefaultsSingleOp(
int opnum);
528 void revertToFactoryDefaultsSingleOp(
int opnum);
529 void overwriteDefaultsSingleOp(
int opnum);
533 int addInputGroupInterest(
int pindex,
536 int removeInputGroupInterest(
int pindex,
542 static void handleOpChangeCallback(
OP_Node *
op,
void *callee,
545 void clearOpTypeParmNamesMap();
549 void updateHandleValues(
void*
values);
551 PRM_Parm* getOpParmFromIndex(
int pindex)
const;
570 const PI_Interest *myInterests;
578 int myDistributedUndoBlockLevel;
579 bool myAllowUsingPerOpSettingsTable;
580 bool myAllowUsingLastSettingsTable;
581 bool myAllowUsingOpTypeSettings;
582 bool myAllowUsingLastVisibilitySetting;
585 bool myIsTimeOverride;
586 fpreal myTimeOverrideTime;
587 LateBinding* myLateBinding;
void setAllowUsingPerOpSettingsTable(bool onoff)
PXL_API const char * getDescription(const ColorSpace *space)
Return the description of the color space.
int getProxyIndex() const
virtual int wantsOpNodeChange(const OP_Node &) const
GT_API const UT_StringHolder time
IMF_EXPORT IMATH_NAMESPACE::V3f direction(const IMATH_NAMESPACE::Box2i &dataWindow, const IMATH_NAMESPACE::V2f &pixelPosition)
GLsizei const GLfloat * value
void setAllowUsingLastSettingsTable(bool onoff)
bool allowsUsingOpTypeSettings() const
bool allowsUsingLastVisibilitySetting() const
GLboolean GLboolean GLboolean GLboolean a
virtual bool flagOpNodeChangeNeeded(OP_Node &)
virtual void endHandleChange(PI_OpHandleLink const *pi, void *ui_event)
UT_Function< void(const PRM_Parm &parm, int vecidx)> ReadParmFunc
PRM_ValueCallback myCallback
bool any(const vbool4 &v)
bool getIsTimeOverride() const
virtual void handleOpUIChange(OP_Node &)
void setAllowUsingOpTypeSettings(bool onoff)
static void extractChannelName(UT_String &channel, const char *parmname)
constexpr enabler dummy
An instance to use in EnableIf.
bool hasLinkedParms() const
std::function< T > UT_Function
GLboolean GLboolean GLboolean b
void(* PRM_ValueCallback)(void *callee, void *value)
that also have some descendant prim *whose name begins with which in turn has a child named baz where *the predicate active
bool allowsUsingLastSettingsTable() const
virtual const UT_StringArray & allParmNames(int opnum) const
void setAllowUsingLastVisibilitySetting(bool onoff)
GLenum GLsizei GLsizei GLint * values
__hostdev__ constexpr T pi()
Pi constant taken from Boost to match old behaviour.
bool allowsUsingPerOpSettingsTable() const
virtual void beginHandleChange(PI_OpHandleLink const *pi, void *ui_event)
const UT_StringArray & linkedParmNames(int opnum) const
int getLinkedParmCount() const
fpreal getTimeOverrideTime() const
**If you just want to fire and args
UT_Function< void(PRM_Parm &parm, int vecidx)> ModifyParmFunc