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"
91 int linkOpParmToHandleParm(
const char *op_type,
92 const char *handle_parm_name,
93 const char *op_parm_name);
97 int activateHandleParm(
int pindex);
100 void disableHandleParm(
int pindex);
102 virtual int attach(
OP_Node &node);
103 virtual int detach(
OP_Node &node);
104 virtual void detachAll();
106 void attachForKeyframe(
OP_Node &node);
107 void detachForKeyframe(
OP_Node &node);
108 void detachAllForKeyframe();
112 void isolateHandleParms(
int beg,
115 void setShowOpPath(
bool onoff);
116 virtual bool getShowOpPath()
const;
123 void setRootDescription(
const char *description);
124 const char *getRootDescription()
const;
125 void buildDescription();
127 virtual void descriptionChanged(
const char* old_description);
132 void setIsTimeOverride(
bool is_time_override);
133 void setTimeOverrideTime(
fpreal t);
136 {
return myIsTimeOverride; }
138 {
return myTimeOverrideTime; }
143 {
return myAllowUsingPerOpSettingsTable; }
145 {
return myAllowUsingLastSettingsTable; }
147 {
return myAllowUsingOpTypeSettings; }
149 {
return myAllowUsingLastVisibilitySetting; }
163 OP_Operator *lastSettingsOperatorTypeRestriction()
const;
166 OP_Node *getOpNode(
int opnum = 0)
const;
167 int getNumOps()
const;
168 OP_Node *getKeyframeOpNode(
int opnum = 0)
const;
169 int getKeyframeNumOps()
const;
172 int hasOpNode(
const OP_Node &node)
const;
173 int hasKeyframeOpNode(
const OP_Node &node)
const;
174 OP_Node *findOpNode(
int op_type,
const char *op_name)
const;
177 void doUpdateFromOpParms();
178 virtual void forceUpdateFromOpParms();
179 virtual void updateOpParms();
183 virtual void handleOpNodeChange(
OP_Node &node);
195 virtual int refreshBindings(
int op_type,
const char *op_name);
203 {
return myParmNames.entries() > 0; }
207 {
return *myParmNames(opnum); }
214 {
return *myParmNames(opnum); }
218 int getOpnumForHandleParmIndex(
int idx)
const;
221 const UT_Color &getActiveColor()
const;
222 virtual void setActiveColor(
const UT_Color &
c);
225 void setBindingState(
const bool active);
231 bool ethereal()
const;
235 int writeOptions(std::ostream &os,
const char *baseCommand);
240 void editChannels(
int append_channels,
int opnum=-1);
241 void findKey(
int direction,
int opnum=-1);
242 void setKeys(
int opnum = -1,
243 int pindex_start = -1,
245 const char *undo_str = 0);
246 void removeKeys(
int opnum=-1);
247 void deleteChannels(
int opnum=-1);
248 void lockParms(
int opnum=-1);
249 void revertToDefaults(
int opnum=-1);
250 void revertToFactoryDefaults(
int opnum=-1);
251 void overwriteDefaults(
int opnum=-1);
258 bool specific_to_op)
const;
261 virtual void saveSettingsToAppropriateLocation();
265 void loadSettingsFromTables(
bool okay_to_use_last_settings);
269 void removeSettingsFromTables();
281 static void extractProjection(
UT_String &channel,
285 const char *parmname)
288 extractProjection(channel, parmname,
293 void setLateBinding(LateBinding * binding);
294 bool hasLateBinding()
const;
295 bool hasLateBinding(LateBinding
const * binding)
const;
300 int findHandleParmIndex(
const char *h_parm_name)
const;
303 virtual void onDeletion();
312 virtual bool handleDetach();
313 virtual bool handleIsDetached()
const;
314 virtual bool handleIsDetachable()
const;
317 void updateSettings(
char const* setting_string);
318 virtual bool getSettingValue(
char const* setting_name,
hboost::any& out_value)
const;
322 { myAllowUsingPerOpSettingsTable = onoff; }
324 { myAllowUsingLastSettingsTable = onoff; }
326 { myAllowUsingOpTypeSettings = onoff; }
328 { myAllowUsingLastVisibilitySetting = onoff; }
331 int iterateParms(
int opnum, ReadParmFunc
func)
const;
332 int iterateParms(
int opnum, ModifyParmFunc
func,
bool modify_locked=
false);
337 virtual void updateFromOpParms();
346 virtual int justLinked(
int pindex);
347 virtual void justUnlinked(
int pindex);
349 virtual PI_Interest *getInputGroupInterests()
const;
355 void addAllInputGroupInterests(
int opnum);
356 void removeAllInputGroupInterests(
int opnum);
359 virtual fpreal getTime()
const;
364 int getParmValue(
int pindex,
int &
val,
int d=0)
const;
372 int getParmInstValue(
int pindex,
const int *inst,
374 int nestlevel=1)
const;
375 int getParmInstValue(
int pindex,
const int *inst,
377 int nestlevel=1)
const;
378 int getParmInstValue(
int pindex,
const int *inst,
380 int nestlevel=1)
const;
382 void getParmInstVector3(
int pindex,
const int *inst,
386 int setParmValue(
int pindex,
int val,
bool addkey=
false);
387 int setParmValue(
int pindex,
fpreal val,
bool addkey=
false);
393 int setParmInstValue(
int pindex,
const int *inst,
394 int val,
bool addkey=
false,
396 int setParmInstValue(
int pindex,
const int *inst,
399 int setParmInstValue(
int pindex,
const int *inst,
403 void setParmInstVector3(
int pindex,
const int *inst,
406 int performParmCallback(
int pindex,
int theitem);
409 int val,
bool addkey=
false);
418 bool readParm(
int pindex, ReadParmFunc
f)
const;
419 bool modifyParm(
int pindex, ModifyParmFunc
f,
bool modify_locked=
false);
423 void copyKeyStructure(
int pindex_dest,
int pindex_from);
426 bool isParmEnabled(
int pindex,
int opnum = 0)
const;
433 {
return myParmNames.entries(); }
440 virtual int hasTimeInterest()
const;
441 virtual void handleTimeChange();
450 void beginDistributedUndoBlock(
const char *operation,
452 void endDistributedUndoBlock();
456 bool inDistributedUndoBlock();
467 virtual void setOwnerOp(
const char *owner_op);
470 virtual void setOwnerOpGroup(
const char *owner_op_group);
471 const UT_String &getOwnerOpGroup()
const;
479 static bool isOpParmLocked(
482 const OP_Node **ret_node = NULL);
485 void updateStateValues(
void* ui_event);
488 void beginHandleChange(
void* ui_event);
491 void endHandleChange(
void* ui_event);
494 void allocProxy(
void*
ptr);
504 int linkOpParm(
const char *op_type,
505 int pindex,
const char *parmname);
506 void updateParmLockStatus(
OP_Node &
op );
508 void addParmNames(
int opnum);
509 void removeParmNames(
int opnum);
511 void setKeysSingleOp(
int opnum,
int pindex = -1,
513 const char *name_prefix = NULL);
514 void removeKeysSingleOp(
int opnum);
515 void deleteChannelsSingleOp(
int opnum);
516 void lockParmsSingleOp(
int opnum);
517 void revertToDefaultsSingleOp(
int opnum);
518 void revertToFactoryDefaultsSingleOp(
int opnum);
519 void overwriteDefaultsSingleOp(
int opnum);
523 int addInputGroupInterest(
int pindex,
526 int removeInputGroupInterest(
int pindex,
532 static void handleOpChangeCallback(
OP_Node *
op,
void *callee,
535 void clearOpTypeParmNamesMap();
538 void updateHandleValues();
557 const PI_Interest *myInterests;
565 int myDistributedUndoBlockLevel;
566 bool myAllowUsingPerOpSettingsTable;
567 bool myAllowUsingLastSettingsTable;
568 bool myAllowUsingOpTypeSettings;
569 bool myAllowUsingLastVisibilitySetting;
572 bool myIsTimeOverride;
573 fpreal myTimeOverrideTime;
574 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)
__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