HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HOM_ParmTuple.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_ParmTuple_h__
10 #define __HOM_ParmTuple_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 <vector>
19 #include <stdexcept>
20 class HOM_ParmTemplate;
21 class HOM_Parm;
22 class HOM_Ramp;
23 
24 SWIGOUT(%rename(ParmTuple) HOM_ParmTuple;)
25 
27 {
28 public:
30  { HOM_CONSTRUCT_OBJECT(this) }
31  HOM_ParmTuple(const HOM_ParmTuple &parm_tuple)
32  { HOM_CONSTRUCT_OBJECT(this) }
33  virtual ~HOM_ParmTuple()
34  { HOM_DESTRUCT_OBJECT(this) }
35 
36  virtual bool operator==(HOM_PtrOrNull<HOM_ParmTuple> parm_tuple) = 0;
37  virtual bool operator!=(HOM_PtrOrNull<HOM_ParmTuple> parm_tuple) = 0;
38 
39  virtual int __hash__() = 0;
40  virtual std::string __repr__() = 0;
41 
42  SWIGOUT(%newobject node;)
43  virtual HOM_Node *node() = 0;
44 
45  SWIGOUT(%newobject parmTemplate;)
46  virtual HOM_ParmTemplate *parmTemplate() = 0;
47 
48  virtual std::string name() = 0;
49  virtual std::string description() = 0;
50 
51  // Wrapping a version of set() that takes a vector of doubles will
52  // let you pass a vector of doubles or a vector of ints to it. So,
53  // we don't bother to provide a version that takes a vector of ints.
54  virtual void _set(const std::vector<double> &float_values) = 0;
55  virtual void setPending(const std::vector<double> &float_values) = 0;
56  virtual void _set(const std::vector<std::string> &string_values) = 0;
57  virtual void setPending(const std::vector<std::string> &string_values) = 0;
58  virtual void _set(const std::vector<HOM_Ramp *> &ramp_values) = 0;
59  virtual void setPending(const std::vector<HOM_Ramp *> &ramp_values) = 0;
60 
61  virtual void overwriteDefaults() = 0;
62  virtual void revertToDefaults() = 0;
63  virtual void revertToAndRestorePermanentDefaults() = 0;
64 
65  SWIGOUT(%kwargs isAtDefault;)
66  virtual bool isAtDefault(bool compare_temporary_defaults=true,
67  bool compare_expressions=true) = 0;
68  virtual bool isAtRampDefault() = 0;
69 
70  virtual double rangeMin() = 0;
71  virtual double rangeMax() = 0;
72  virtual void setRange(double min, double max) = 0;
73  virtual void setRangeToDefault() = 0;
74  virtual bool isRangeAtDefault() = 0;
75 
76  virtual void setDefaultRange(double min, double max) = 0;
77  virtual void clearDefaultRange() = 0;
78 
79  virtual std::vector<double> evalAsFloats() = 0;
80 
81  virtual std::vector<double> evalAsFloatsAtFrame(double frame) = 0;
82 
83  virtual std::vector<int> evalAsInts() = 0;
84 
85  virtual std::vector<int> evalAsIntsAtFrame(double frame) = 0;
86 
87  virtual std::vector<std::string> evalAsStrings() = 0;
88 
89  virtual std::vector<std::string> evalAsStringsAtFrame(double frame) = 0;
90 
91  virtual std::vector<HOM_ElemPtr<HOM_Ramp> > evalAsRamps() = 0;
92 
93  SWIGOUT(%newobject evalAsRampAtFrame;)
94  virtual std::vector<HOM_ElemPtr<HOM_Ramp> > evalAsRampsAtFrame(double frame) = 0;
95 
96  SWIGOUT(%newobject evalAsGeometries;)
97  virtual std::vector<HOM_ElemPtr<HOM_Geometry> > evalAsGeometries() = 0;
98 
99  SWIGOUT(%newobject evalAsGeometriesAtFrame;)
100  virtual std::vector<HOM_ElemPtr<HOM_Geometry> > evalAsGeometriesAtFrame(double frame) = 0;
101 
102  SWIGOUT(%newobject evalAsImageLayers;)
103  virtual std::vector<HOM_ElemPtr<HOM_ImageLayer> > evalAsImageLayers() = 0;
104 
105  SWIGOUT(%newobject evalAsImageLayersAtFrame;)
106  virtual std::vector<HOM_ElemPtr<HOM_ImageLayer> > evalAsImageLayersAtFrame(double frame) = 0;
107 
108  SWIGOUT(%newobject evalAsNanoVDBs;)
109  virtual std::vector<HOM_ElemPtr<HOM_NanoVDB> > evalAsNanoVDBs() = 0;
110 
111  SWIGOUT(%newobject evalAsNanoVDBsAtFrame;)
112  virtual std::vector<HOM_ElemPtr<HOM_NanoVDB> > evalAsNanoVDBsAtFrame(double frame) = 0;
113 
114  SWIGOUT(%newobject evalAsDetachedAttribs;)
115  virtual std::vector<HOM_ElemPtr<HOM_DetachedAttrib> > evalAsDetachedAttribs() = 0;
116 
117  SWIGOUT(%newobject evalAsDetachedAttribsAtFrame;)
118  virtual std::vector<HOM_ElemPtr<HOM_DetachedAttrib> > evalAsDetachedAttribsAtFrame(double frame) = 0;
119 
120  virtual std::vector<std::map<std::string, std::string> >
121  evalAsJSONMaps() = 0;
122  virtual std::vector<std::map<std::string, std::string> >
123  evalAsJSONMapsAtFrame(double frame) = 0;
124 
125 
126  virtual void lock(bool on) = 0;
127  virtual void lock(const std::vector<bool> &bool_values) = 0;
128  virtual void setAutoscope(const std::vector<bool> &bool_values) = 0;
129 
130  virtual bool isSpare() = 0;
131 
132  virtual bool isTimeDependent() = 0;
133 
134  virtual bool isMultiParmInstance() = 0;
135  virtual bool isMultiParmParent() = 0;
136  SWIGOUT(%newobject parentMultiParm;)
137  virtual HOM_Parm *parentMultiParm() = 0;
138  virtual std::vector<int> multiParmInstanceIndices() = 0;
139 
140  virtual int multiParmInstancesPerItem() = 0;
141  virtual int multiParmInstancesCount() = 0;
142  virtual int multiParmStartOffset() = 0;
143 
144  virtual std::vector<HOM_ElemPtr<HOM_ParmTuple> > multiParmInstances() = 0;
145 
146  virtual void insertMultiParmInstance(int inst_index) = 0;
147 
148  virtual void removeMultiParmInstance(int inst_index) = 0;
149 
150  virtual void moveMultiParmInstances(const std::vector<int> &moves) = 0;
151  virtual void moveUpMultiParmInstance(int inst_index) = 0;
152  virtual void moveDownMultiParmInstance(int inst_index) = 0;
153 
154  virtual std::vector<std::string> containingFolders() = 0;
155  virtual std::vector<int> containingFolderIndices() = 0;
156  virtual std::vector<HOM_ElemPtr<HOM_ParmTuple> >
157  containingFolderSetParmTuples() = 0;
158 
159  virtual void setKeyframe(const std::vector<HOM_BaseKeyframe *> &keyframes) = 0;
160  virtual void deleteKeyframeAtFrame(double frame) = 0;
161  virtual void deleteAllKeyframes() = 0;
162 
163  SWIGOUT(%newobject __getitem__;)
164  virtual HOM_Parm *__getitem__(int index) = 0;
165  virtual int __len__() = 0;
166  virtual bool __bool__() = 0;
167 
168  SWIGOUT(%newobject createClip;)
169  virtual HOM_Node *createClip(HOM_Node &parent_node,
170  const char *name,
171  bool create_new,
172  bool apply_immediately,
173  bool current_value_only=false,
174  bool create_locked=false,
175  bool set_value_to_default=false) = 0;
176 
177  virtual void appendClip(HOM_Node &chop_node,
178  bool apply_immediately,
179  bool current_value_only=false,
180  bool create_locked=false,
181  bool set_value_to_default=false) = 0;
182 
183  virtual HOM_BinaryString _clipData(double start,
184  double end,
185  bool binary = true,
186  bool use_blosc_compression = true,
187  double sample_rate = 0) = 0;
188 
189  SWIGOUT(%kwargs _setClipData;)
190  virtual void _setClipData(HOM_BinaryString data,
191  bool binary = true,
192  bool blosc_compressed = true,
193  double sample_rate = 0,
194  double start = HOM_MIN_NEGATIVE_DOUBLE) = 0;
195 
196  virtual void _saveClip(std::string file_name,
197  double start,
198  double end,
199  double sample_rate = 0) = 0;
200 
201  SWIGOUT(%kwargs _loadClip;)
202  virtual void _loadClip(std::string file_name,
203  double sample_rate = 0,
204  double start = HOM_MIN_NEGATIVE_DOUBLE) = 0;
205 
206  virtual void copyToParmClipboard() = 0;
207 
208  virtual void *_asVoidPointer() = 0;
209 
210  SWIGOUT(%kwargs asCode;)
211  virtual std::string asCode(bool brief=false, bool save_values=true,
212  bool save_keyframes=true,
213  bool save_keys_in_frames=false,
214  bool save_flag_values=true,
215  bool save_aliases=true,
216  const char *function_name=NULL) = 0;
217 
218  // You can get the parm data type with parmTemplate().dataType().
219  // However, we need a way to get the parm data type's enum value
220  // from C++ code without creating a temporary ParmTemplate object,
221  // so that's why parmDataTypeEnumId() exists.
222  SWIGOUT(%ignore parmDataTypeEnumId;)
223  virtual int parmDataTypeEnumId() = 0;
224 
225  // For data parameters only.
226  // You can get the data parm type with parmTemplate().dataParmType().
227  // However, we need a way to get the data parm type's enum value
228  // from C++ code without creating a temporary ParmTemplate object,
229  // so that's why dataParmTypeEnumId() exists.
230  SWIGOUT(%ignore dataParmTypeEnumId;)
231  virtual int dataParmTypeEnumId() = 0;
232 
233  virtual std::string help() = 0;
234  virtual std::string helpUrl() = 0;
235 
236  virtual bool isDisabled() = 0;
237 
238  virtual void disable(bool on) = 0;
239 
240  virtual bool isHidden() = 0;
241 
242  virtual void hide(bool on) = 0;
243 
244  virtual bool isVisible() = 0;
245 
246  virtual bool isConstrained() = 0;
247 
248  virtual bool isShowingExpression() = 0;
249  virtual void showExpression(bool value) = 0;
250 
251 #ifdef SWIG
252 %extend
253 {
254  %warnfilter(321) eval;
255  InterpreterObject eval()
256  {
257  return HOMevalParmTuple(*self);
258  }
259 
260  InterpreterObject evalAtFrame(double frame)
261  {
262  return HOMevalParmTupleAtFrame(*self, frame);
263  }
264 
265  InterpreterObject evalAtTime(double time)
266  {
267  return HOMevalParmTupleAtFrame(*self, HOM().timeToFrame(time));
268  }
269 }
270 #endif
271 };
272 
273 #endif
#define HOM_DESTRUCT_OBJECT(pointer)
Definition: HOM_Module.h:1398
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
#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)
std::string help(const App *app, const Error &e)
Printout the full help string on error (if this fn is set, the old default for CLI11) ...
Definition: CLI11.h:8978
#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
#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
void * _asVoidPointer()
Definition: HOM_Ramp.h:78
OIIO_UTIL_API bool rename(string_view from, string_view to, std::string &err)
GLuint index
Definition: glcorearb.h:786
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
virtual ~HOM_ParmTuple()
Definition: HOM_ParmTuple.h:33
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
HOM_ParmTuple(const HOM_ParmTuple &parm_tuple)
Definition: HOM_ParmTuple.h:31