HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HOM_Parm.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * COMMENTS:
7  */
8 
9 #ifndef __HOM_Parm_h__
10 #define __HOM_Parm_h__
11 
12 #include "HOM_API.h"
13 #include "HOM_Defines.h"
14 #include "HOM_Errors.h"
15 #include "HOM_BaseKeyframe.h"
16 #include "HOM_PtrOrNull.h"
17 #include <string>
18 #include <map>
19 #include <vector>
20 
21 class HOM_Color;
22 class HOM_ParmTemplate;
23 class HOM_ParmTuple;
24 class HOM_Track;
25 class HOM_Ramp;
26 class HOM_Geometry;
27 class HOM_ImageLayer;
28 class HOM_NanoVDB;
29 class HOM_DetachedAttrib;
30 class UT_WorkBuffer;
31 
32 SWIGOUT(%rename(Parm) HOM_Parm;)
33 
35 {
36 public:
38  { HOM_CONSTRUCT_OBJECT(this) }
39  HOM_Parm(const HOM_Parm &parm)
40  { HOM_CONSTRUCT_OBJECT(this) }
41  virtual ~HOM_Parm()
42  { HOM_DESTRUCT_OBJECT(this) }
43 
44  // We compare against a pointer instead of a reference because we want
45  // to be able to compare against None.
46  virtual bool operator==(HOM_PtrOrNull<HOM_Parm> parm) = 0;
47  virtual bool operator!=(HOM_PtrOrNull<HOM_Parm> parm) = 0;
48  SWIGOUT(%ignore operator<(HOM_Parm *parm);)
49  virtual bool operator<(HOM_Parm *parm) = 0;
50 
51  virtual int __hash__() = 0;
52  virtual std::string __repr__() = 0;
53 
54  SWIGOUT(%newobject node;)
55  virtual HOM_Node *node() = 0;
56 
57  SWIGOUT(%newobject tuple;)
58  SWIGOUT(%warnfilter(321) tuple;)
59  virtual HOM_ParmTuple *tuple() = 0;
60 
61  SWIGOUT(%newobject parmTemplate;)
62  virtual HOM_ParmTemplate *parmTemplate() = 0;
63 
64  virtual std::string name() = 0;
65  virtual std::string path() = 0;
66  virtual std::string description() = 0;
67  virtual int componentIndex() = 0;
68 
69  virtual std::vector<std::string> menuContents() = 0;
70  virtual std::vector<std::string> menuLabels() = 0;
71  virtual std::vector<std::string> menuItems() = 0;
72  virtual bool isDynamicMenu() = 0;
73 
74  SWIGOUT(%kwargs pressButton;)
75  virtual void pressButton(std::map<std::string, hboost::any> const & arguments=std::map<std::string, hboost::any>()) = 0;
76 
77  virtual std::string referenceExpression(HOM_Parm &to_base_parm, HOM_EnumValue *language=nullptr,
78  bool follow_parm_reference=true,
79  bool clear_channel=true) = 0;
80 
81  virtual void _set(double float_value,
82  bool follow_parm_reference=true) = 0;
83  virtual void _setPending(double float_value) = 0;
84  virtual void _set(int64 int_value,
85  bool follow_parm_reference=true) = 0;
86  virtual void _setPending(int64 int_value) = 0;
87  virtual void _set(const char *string_value,
88  bool follow_parm_reference=true) = 0;
89  virtual void _setPending(const char *string_value) = 0;
90  virtual void _set(HOM_Geometry *geo,
91  bool follow_parm_reference=true) = 0;
92  virtual void _setPending(HOM_Geometry *geo) = 0;
93  virtual void _set(HOM_ImageLayer *layer,
94  bool follow_parm_reference=true) = 0;
95  virtual void _setPending(HOM_ImageLayer *layer) = 0;
96  virtual void _set(HOM_NanoVDB *vdb,
97  bool follow_parm_reference=true) = 0;
98  virtual void _setPending(HOM_NanoVDB *vdb) = 0;
99  virtual void _set(HOM_DetachedAttrib *vdb,
100  bool follow_parm_reference=true) = 0;
101  virtual void _setPending(HOM_DetachedAttrib *vdb) = 0;
102  virtual void _set(HOM_CopCable *cable,
103  bool follow_parm_reference=true) = 0;
104  virtual void _setPending(HOM_CopCable *cable) = 0;
105  virtual void _set(const std::map<std::string, std::string> &map,
106  bool follow_parm_reference=true) = 0;
107  virtual void _setPending(const std::map<std::string, std::string> &map) = 0;
108  virtual void _set(HOM_Ramp *ramp_value,
109  bool follow_parm_reference=true) = 0;
110  virtual void _setPending(HOM_Ramp *ramp_value) = 0;
111 
112  virtual void _set(
113  HOM_Parm &parm, HOM_EnumValue *language=nullptr,
114  bool follow_parm_reference=true) = 0;
115 
116  virtual void _setNone() = 0;
117  virtual void _setNonePending() = 0;
118 
119  virtual void setFromParm(HOM_Parm &src) = 0;
120  virtual void setFromParmDefaults(HOM_Parm &src) = 0;
121 
122  virtual void overwriteDefaults() = 0;
123  virtual void revertToDefaults() = 0;
124  virtual void revertToAndRestorePermanentDefaults() = 0;
125  virtual void revertToRampDefaults() = 0;
126  virtual bool hasTemporaryDefaults() = 0;
127  SWIGOUT(%kwargs isAtDefault;)
128  virtual bool isAtDefault(bool compare_temporary_defaults=true,
129  bool compare_expressions=true) = 0;
130  virtual bool isAtRampDefault() = 0;
131 
132  virtual double rangeMin() = 0;
133  virtual double rangeMax() = 0;
134  virtual void setRange(double min, double max) = 0;
135  virtual void setRangeToDefault() = 0;
136  virtual bool isRangeAtDefault() = 0;
137 
138  virtual void setDefaultRange(double min, double max) = 0;
139  virtual void clearDefaultRange() = 0;
140 
141  SWIGOUT(%kwargs setExpression;)
142  virtual void setExpression(const char *expression,
143  HOM_EnumValue *language = NULL,
144  bool replace_expression=true) = 0;
145  virtual std::string expression() = 0;
146 
147  virtual HOM_EnumValue *expressionLanguage() = 0;
148 
149  virtual std::string rawValue() = 0;
150 
151  virtual bool isShowingExpression() = 0;
152  virtual void showExpression(bool value) = 0;
153 
154  virtual void setKeyframe(HOM_BaseKeyframe &keyframe) = 0;
155  virtual void setKeyframes(const std::vector<HOM_BaseKeyframe *> &keyframes) = 0;
156 
157  virtual std::vector<HOM_ElemPtr<HOM_BaseKeyframe> > keyframes() = 0;
158 
159  virtual std::vector<HOM_ElemPtr<HOM_BaseKeyframe> >
160  keyframesInRange(double start_frame, double end_frame) = 0;
161 
162  virtual std::vector<HOM_ElemPtr<HOM_BaseKeyframe> > keyframesBefore(double frame) = 0;
163  virtual std::vector<HOM_ElemPtr<HOM_BaseKeyframe> > keyframesAfter(double frame) = 0;
164 
165  virtual double evalAsFloat() = 0;
166  virtual double evalAsFloatAtFrame(double frame) = 0;
167  virtual int64 evalAsInt() = 0;
168  virtual int64 evalAsIntAtFrame(double frame) = 0;
169  virtual std::string evalAsString() = 0;
170  virtual std::string evalAsStringAtFrame(double frame) = 0;
171  SWIGOUT(%newobject evalAsGeometry;)
172  virtual HOM_Geometry *evalAsGeometry() = 0;
173  SWIGOUT(%newobject evalAsGeometryAtFrame;)
174  virtual HOM_Geometry *evalAsGeometryAtFrame(double frame) = 0;
175  SWIGOUT(%newobject evalAsImageLayer;)
176  virtual HOM_ImageLayer *evalAsImageLayer() = 0;
177  SWIGOUT(%newobject evalAsImageLayerAtFrame;)
178  virtual HOM_ImageLayer *evalAsImageLayerAtFrame(double frame) = 0;
179  SWIGOUT(%newobject evalAsNanoVDB;)
180  virtual HOM_NanoVDB *evalAsNanoVDB() = 0;
181  SWIGOUT(%newobject evalAsNanoVDBAtFrame;)
182  virtual HOM_NanoVDB *evalAsNanoVDBAtFrame(double frame) = 0;
183  SWIGOUT(%newobject evalAsDetachedAttrib;)
184  virtual HOM_DetachedAttrib *evalAsDetachedAttrib() = 0;
185  SWIGOUT(%newobject evalAsDetachedAttribAtFrame;)
186  virtual HOM_DetachedAttrib *evalAsDetachedAttribAtFrame(double frame) = 0;
187  SWIGOUT(%newobject evalAsCopCable;)
188  virtual HOM_CopCable *evalAsCopCable() = 0;
189  SWIGOUT(%newobject evalAsCopCableAtFrame;)
190  virtual HOM_CopCable *evalAsCopCableAtFrame(double frame) = 0;
191  virtual std::map<std::string, std::string> evalAsJSONMap() = 0;
192  virtual std::map<std::string, std::string>
193  evalAsJSONMapAtFrame(double frame) = 0;
194  SWIGOUT(%newobject evalAsRamp;)
195  virtual HOM_Ramp *evalAsRamp() = 0;
196  SWIGOUT(%newobject evalAsRampAtFrame;)
197  virtual HOM_Ramp *evalAsRampAtFrame(double frame) = 0;
198  SWIGOUT(%newobject evalAsNode;)
199  virtual HOM_Node *evalAsNode() = 0;
200  SWIGOUT(%newobject evalAsNodeAtFrame;)
201  virtual HOM_Node *evalAsNodeAtFrame(double frame) = 0;
202  virtual std::vector<HOM_ElemPtr<HOM_Node> > evalAsNodes() = 0;
203  virtual std::vector<HOM_ElemPtr<HOM_Node> > evalAsNodesAtFrame(double frame) = 0;
204  virtual std::string evalAsNodePath() = 0;
205  virtual std::string evalAsNodePathAtFrame(double frame) = 0;
206  virtual std::vector<std::string> evalAsNodePaths() = 0;
207  virtual std::vector<std::string> evalAsNodePathsAtFrame(double frame) = 0;
208 
209  virtual std::string unexpandedString() = 0;
210 
211  virtual void deleteKeyframeAtFrame(double frame) = 0;
212 
213  virtual void deleteAllKeyframes() = 0;
214 
215  // TODO: Rename this to referencedParm()!
216  SWIGOUT(%newobject getReferencedParm;)
217  virtual HOM_Parm *getReferencedParm() = 0;
218 
219  virtual std::vector<HOM_ElemPtr<HOM_Parm> > parmsReferencingThis() = 0;
220 
221  virtual bool isLocked() = 0;
222  virtual void lock(bool on) = 0;
223 
224  virtual bool isAutoscoped() = 0;
225  virtual void setAutoscope(bool on) = 0;
226 
227  virtual bool isScoped() = 0;
228  virtual void setScope(bool on) = 0;
229 
230  virtual bool isAutoSelected() = 0;
231  virtual void setAutoSelect(bool on) = 0;
232 
233  virtual bool isSelected() = 0;
234  virtual void setSelect(bool on) = 0;
235 
236  virtual std::string alias() = 0;
237  virtual void setAlias(const char *alias_name) = 0;
238 
239  virtual bool isSpare() = 0;
240 
241  virtual bool isTimeDependent() = 0;
242 
243  virtual bool isMultiParmInstance() = 0;
244  virtual bool isMultiParmParent() = 0;
245  SWIGOUT(%newobject parentMultiParm;)
246  virtual HOM_Parm *parentMultiParm() = 0;
247  virtual std::vector<int> multiParmInstanceIndices() = 0;
248 
249  virtual int multiParmInstancesPerItem() = 0;
250  virtual int multiParmInstancesCount() = 0;
251  virtual int multiParmStartOffset() = 0;
252 
253  virtual std::vector<HOM_ElemPtr<HOM_Parm> > multiParmInstances() = 0;
254 
255  virtual void insertMultiParmInstance(int inst_index) = 0;
256 
257  virtual void removeMultiParmInstance(int inst_index) = 0;
258 
259  virtual void moveMultiParmInstances(const std::vector<int> &moves) = 0;
260  virtual void moveUpMultiParmInstance(int inst_index) = 0;
261  virtual void moveDownMultiParmInstance(int inst_index) = 0;
262 
263  virtual std::vector<std::string> containingFolders() = 0;
264  virtual std::vector<int> containingFolderIndices() = 0;
265  virtual std::vector<HOM_ElemPtr<HOM_ParmTuple> >
266  containingFolderSetParmTuples() = 0;
267 
268  SWIGOUT(%kwargs asCode;)
269  virtual std::string asCode(
270  bool brief = false,
271  bool save_values = true,
272  bool save_keyframes = true,
273  bool save_keys_in_frames=false,
274  bool save_flag_values=true,
275  bool save_aliases=true,
276  const char *function_name = NULL) = 0;
277 
278  // You can get the parm data type with parmTemplate().dataType().
279  // However, we need a way to get the parm data type's enum value
280  // from C++ code without creating a temporary ParmTemplate object,
281  // so that's why parmDataTypeEnumId() exists.
282  SWIGOUT(%ignore parmDataTypeEnumId;)
283  virtual int parmDataTypeEnumId() = 0;
284 
285  // For data parameters only.
286  // You can get the data parm type with parmTemplate().dataParmType().
287  // However, we need a way to get the data parm type's enum value
288  // from C++ code without creating a temporary ParmTemplate object,
289  // so that's why dataParmTypeEnumId() exists.
290  SWIGOUT(%ignore dataParmTypeEnumId;)
291  virtual int dataParmTypeEnumId() = 0;
292 
293  SWIGOUT(%newobject createClip;)
294  virtual HOM_Node *createClip(HOM_Node &parent_node,
295  const char *name,
296  bool create_new,
297  bool apply_immediately,
298  bool current_value_only=false,
299  bool create_locked=false,
300  bool set_value_to_default=false) = 0;
301 
302  virtual void appendClip(HOM_Node &chop_node,
303  bool apply_immediately,
304  bool current_value_only=false,
305  bool create_locked=false,
306  bool set_value_to_default=false) = 0;
307 
308  virtual HOM_BinaryString _clipData(double start,
309  double end,
310  bool binary = true,
311  bool use_blosc_compression = true,
312  double sample_rate = 0) = 0;
313 
314  SWIGOUT(%kwargs _setClipData;)
315  virtual void _setClipData(HOM_BinaryString data,
316  bool binary = true,
317  bool blosc_compressed = true,
318  double sample_rate = 0,
319  double start = HOM_MIN_NEGATIVE_DOUBLE) = 0;
320 
321  virtual void _saveClip(std::string file_name,
322  double start,
323  double end,
324  double sample_rate = 0) = 0;
325 
326  SWIGOUT(%kwargs _loadClip;)
327  virtual void _loadClip(std::string file_name,
328  double sample_rate = 0,
329  double start = HOM_MIN_NEGATIVE_DOUBLE) = 0;
330 
331  SWIGOUT(%newobject overrideTrack;)
332  virtual HOM_Track *overrideTrack() = 0;
333  virtual bool isOverrideTrackActive() = 0;
334 
335  virtual void copyToParmClipboard() = 0;
336 
337  virtual bool isDisabled() = 0;
338 
339  virtual void disable(bool on) = 0;
340 
341  virtual bool isHidden() = 0;
342 
343  virtual void hide(bool on) = 0;
344 
345  virtual bool isVisible() = 0;
346 
347  virtual bool isConstrained() = 0;
348 
349  virtual bool isPending() = 0;
350 
351  virtual HOM_EnumValue &keyframeExtrapolation( bool before ) = 0;
352 
353  virtual void setKeyframeExtrapolation( bool before, HOM_EnumValue &e ) = 0;
354 
355  SWIGOUT(%kwargs keyframesRefit;)
356  virtual void keyframesRefit(
357  bool refit, double refit_tol, bool refit_preserve_extrema,
358  bool refit_bezier, bool resample, double resample_rate, double resample_tol,
359  bool range, double range_start, double range_end, HOM_EnumValue &bake_chop, const char *expression="",
360  bool refit_smooth=false) = 0;
361 
362  SWIGOUT(%newobject uiBackgroundColor;)
363  virtual HOM_Color *uiBackgroundColor() = 0;
364 
365  virtual void _moveKeyframes(const std::vector<int> &keyframe_ids,
366  const std::vector<double> &time_offsets,
367  const std::vector<double> &value_offsets) = 0;
368 
369  virtual void _deleteKeyframes(const std::vector<int> &keyframe_ids) = 0;
370 
371  virtual void _moveAllKeyframes( double time_offset, double value_offset)=0;
372 
373 #ifdef SWIG
374 %extend
375 {
376  %warnfilter(321) eval;
377  InterpreterObject eval()
378  {
379  return HOMevalParm(*self);
380  }
381 
382  InterpreterObject evalAtFrame(double frame)
383  {
384  return HOMevalParmAtFrame(*self, frame);
385  }
386 
387  InterpreterObject evalAtTime(double time)
388  {
389  return HOMevalParmAtFrame(*self, HOM().timeToFrame(time));
390  }
391 }
392 #endif
393 };
394 
395 #endif
virtual ~HOM_Parm()
Definition: HOM_Parm.h:41
#define HOM_DESTRUCT_OBJECT(pointer)
Definition: HOM_Module.h:1398
GLenum GLint * range
Definition: glcorearb.h:1925
GT_API const UT_StringHolder time
GLuint start
Definition: glcorearb.h:475
GLsizei const GLfloat * value
Definition: glcorearb.h:824
const GLuint GLenum const void * binary
Definition: glcorearb.h:1924
GLsizei const GLchar *const * path
Definition: glcorearb.h:3341
#define SWIGOUT(x)
Definition: HOM_Defines.h:24
string __repr__(VtArray< T > const &self)
Definition: wrapArray.h:312
ImageBuf OIIO_API min(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
PUGI__FN xpath_string string_value(const xpath_node &na, xpath_allocator *alloc)
Definition: pugixml.cpp:7990
GLenum GLuint GLint GLint layer
Definition: glcorearb.h:1299
#define HOM_API
Definition: HOM_API.h:13
void ignore(T const &) VULKAN_HPP_NOEXCEPT
Definition: vulkan.hpp:6508
GLuint GLuint end
Definition: glcorearb.h:475
#define HOM_CONSTRUCT_OBJECT(pointer)
Definition: HOM_Module.h:1397
bool operator!=(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Inequality operator, does exact floating point comparisons.
Definition: Mat3.h:556
long long int64
Definition: SYS_Types.h:116
char * lock(exint offset=0, exint reserve_bytes=0)
#define HOM_MIN_NEGATIVE_DOUBLE
Definition: HOM_Defines.h:53
HUSD_API bool eval(VtValue &val, T &ret_val)
GLuint const GLchar * name
Definition: glcorearb.h:786
HOM_Parm(const HOM_Parm &parm)
Definition: HOM_Parm.h:39
OIIO_UTIL_API bool rename(string_view from, string_view to, std::string &err)
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
HOM_Parm()
Definition: HOM_Parm.h:37
ImageBuf OIIO_API resample(const ImageBuf &src, bool interpolate=true, ROI roi={}, int nthreads=0)
HOM_API HOM_Module & HOM()
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons.
Definition: Mat3.h:542
Definition: format.h:1821
GLenum src
Definition: glcorearb.h:1793