HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HOM_Node.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_Node_h__
10 #define __HOM_Node_h__
11 
12 #include "HOM_API.h"
13 #include "HOM_NetworkMovableItem.h"
14 #include "HOM_BinaryString.h"
15 #include "HOM_EnumModules.h"
16 #include "HOM_IterableList.h"
17 #include "HOM_PtrOrNull.h"
18 #include <PY/PY_OpaqueObject.h>
19 #include <string>
20 #include <vector>
21 
22 class HOM_StickyNote;
23 class HOM_NodeConnection;
24 class HOM_NodeGroup;
25 class HOM_NodeType;
27 class HOM_Parm;
28 class HOM_ParmTuple;
29 class HOM_IndirectInput;
31 class HOM_HDAModule;
34 class HOM_ParmTemplate;
35 class HOM_DopSimulation;
36 class HOM_DopObject;
38 class HOM_NodeInfoTree;
39 class CL_Clip;
40 
42 
43 class HOM_API HOM_Node : virtual public HOM_NetworkMovableItem
44 {
45 public:
47  : HOM_NetworkMovableItem(HOM_networkItemType::Node)
48  { HOM_CONSTRUCT_OBJECT(this) }
49  HOM_Node(const HOM_Node &node)
51  { HOM_CONSTRUCT_OBJECT(this) }
52  ~HOM_Node() override
53  { HOM_DESTRUCT_OBJECT(this) }
54 
55  virtual bool operator==(HOM_PtrOrNull<HOM_Node> node) = 0;
56  virtual bool operator!=(HOM_PtrOrNull<HOM_Node> node) = 0;
57 
58  int __hash__() override = 0;
59  std::string __repr__() override = 0;
60  virtual std::string __str__() = 0;
61 
62  virtual bool isNetwork() = 0;
63  virtual bool isEditable() = 0;
64 
65  SWIGOUT(%newobject type;)
66  SWIGOUT(%warnfilter(321) type;)
67  virtual HOM_NodeType *type() = 0;
68  virtual HOM_NodeTypeCategory *childTypeCategory() = 0;
69 
70  virtual bool isFlagReadable(HOM_EnumValue &flag) = 0;
71  virtual bool isFlagWritable(HOM_EnumValue &flag) = 0;
72  virtual bool isGenericFlagSet(HOM_EnumValue &flag) = 0;
73  virtual void setGenericFlag(HOM_EnumValue &flag, bool value) = 0;
74 
75  virtual bool isDisplayDescriptiveNameFlagSet() = 0;
76  virtual void setDisplayDescriptiveNameFlag(bool on) = 0;
77 
78  virtual std::vector<std::string> errors() = 0;
79  virtual std::vector<std::string> warnings() = 0;
80  virtual std::vector<std::string> messages() = 0;
81 
82  SWIGOUT(%newobject node;)
83  SWIGOUT(%kwargs node;)
84  virtual HOM_Node* node(const char* node_path) = 0;
85 
86  SWIGOUT(%kwargs nodes;)
87  virtual std::vector<HOM_ElemPtr<HOM_Node> > nodes(
88  const std::vector<std::string>& node_paths) = 0;
89 
90  SWIGOUT(%newobject item;)
91  SWIGOUT(%kwargs item;)
92  virtual HOM_NetworkMovableItem* item(const char* item_path) = 0;
93 
94  SWIGOUT(%kwargs items;)
95  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > items(
96  const std::vector<std::string>& item_paths) = 0;
97 
98  SWIGOUT(%kwargs glob;)
99  virtual std::vector<HOM_ElemPtr<HOM_Node> > glob(
100  const char *pattern, bool ignore_case=false) = 0;
101 
102  SWIGOUT(%kwargs recursiveGlob;)
103  virtual std::vector<HOM_ElemPtr<HOM_Node> > recursiveGlob(
104  const char *pattern,
105  HOM_EnumValue &filter = HOM_nodeTypeFilter::NoFilter,
106  bool include_subnets = true,
107  bool ignore_case = false) = 0;
108 
109  SWIGOUT(%newobject createNode;)
110  SWIGOUT(%kwargs createNode;)
111  virtual HOM_Node* createNode(
112  const char* node_type_name,
113  const char* node_name=NULL,
114  bool run_init_scripts=true,
115  bool load_contents=true,
116  bool exact_type_name=false,
117  bool force_valid_node_name=false) = 0;
118 
119  virtual int inputIndex(const char *input_name) = 0;
120  virtual int outputIndex(const char *output_name) = 0;
121 
122  virtual void setInput(
123  int input_index,
124  HOM_NetworkMovableItem *item_to_become_input,
125  int output_index = 0) = 0;
126 
127  virtual void setNamedInput(
128  const char *input_name,
129  HOM_NetworkMovableItem *item_to_become_input,
130  const char *output_name) = 0;
131 
132  virtual void setNamedInput(
133  const char *input_name,
134  HOM_NetworkMovableItem *item_to_become_input,
135  int output_index) = 0;
136 
137  virtual void setFirstInput(
138  HOM_NetworkMovableItem *item_to_become_input,
139  int output_index = 0) = 0;
140 
141  SWIGOUT(%kwargs setNextInput;)
142  virtual void setNextInput(
143  HOM_NetworkMovableItem *item_to_become_input,
144  int output_index = 0,
145  bool unordered_only = false) = 0;
146 
147  virtual void insertInput(
148  int input_index,
149  HOM_NetworkMovableItem *item_to_become_input,
150  int output_index = 0) = 0;
151 
152  virtual int numOrderedInputs() = 0;
153 
154  virtual std::vector<HOM_ElemPtr<HOM_Node> > inputs() = 0;
155  virtual std::vector<HOM_ElemPtr<HOM_Node> > inputsFollowingOutputs() = 0;
156 
157  SWIGOUT(%warnfilter(321) input;)
158  virtual HOM_Node *input(int input_index) = 0;
159  virtual HOM_Node *inputFollowingOutputs(int input_index) = 0;
160 
161  virtual std::vector<HOM_ElemPtr<HOM_NodeConnection> > inputConnections() = 0;
162 
163  SWIGOUT(%newobject inputConnectors;)
164  virtual HOM_IterableList<std::vector<HOM_ElemPtr<HOM_NodeConnection> > > *
165  inputConnectors() = 0;
166 
167  SWIGOUT(%kwargs inputAncestors;)
168  virtual std::vector<HOM_ElemPtr<HOM_Node> > inputAncestors(
169  bool include_ref_inputs = true,
170  bool follow_subnets = false,
171  bool only_used_inputs = false) = 0;
172 
173  virtual std::vector<std::string> inputNames() = 0;
174  virtual std::vector<std::string> inputLabels() = 0;
175 
176  virtual std::vector<std::string> outputNames() = 0;
177  virtual std::vector<std::string> outputLabels() = 0;
178 
179  virtual std::vector<HOM_ElemPtr<HOM_Node> > outputs() = 0;
180 
181  virtual std::vector<HOM_ElemPtr<HOM_NodeConnection> >
182  outputConnections() = 0;
183 
184  SWIGOUT(%newobject outputConnectors;)
185  virtual HOM_IterableList<std::vector<HOM_ElemPtr<HOM_NodeConnection> > > *
186  outputConnectors() = 0;
187 
188  virtual HOM_EnumValue &connectionDrawStyle() = 0;
189  virtual void setConnectionDrawStyle(HOM_EnumValue &style) = 0;
190 
191  // Access things contained in this node (node must be a network).
192  virtual std::vector<HOM_ElemPtr<HOM_Node> > children() = 0;
193  SWIGOUT(%kwargs allSubChildren;)
194  virtual std::vector<HOM_ElemPtr<HOM_Node> > allSubChildren(
195  bool top_down = true,
196  bool recurse_in_locked_nodes = true,
197  bool sync_delayed_definition = false) = 0;
198  SWIGOUT(%kwargs selectedChildren;)
199  virtual std::vector<HOM_ElemPtr<HOM_Node> > selectedChildren(
200  bool include_hidden = false,
201  bool include_hidden_support_nodes = false) = 0;
202 
203  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > allItems() = 0;
204  SWIGOUT(%kwargs allSubItems;)
205  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > allSubItems(
206  bool top_down = true,
207  bool recurse_in_locked_nodes = true,
208  bool sync_delayed_definition = false) = 0;
209  SWIGOUT(%kwargs selectedItems;)
210  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > selectedItems(
211  bool include_hidden = false,
212  bool include_hidden_support_nodes = false) = 0;
213  SWIGOUT(%kwargs numItems;)
214  virtual int numItems(HOM_EnumValue *item_type = NULL,
215  bool selected_only = false,
216  bool include_hidden = false) = 0;
217 
218  // Picked child item copy/paste/delete methods.
219  SWIGOUT(%kwargs deleteItems;)
220  virtual void deleteItems(
221  const std::vector<HOM_NetworkMovableItem *>&
222  items = std::vector<HOM_NetworkMovableItem *>(),
223  bool disable_safety_checks = false) = 0;
224  virtual void copyItemsToClipboard(
225  const std::vector<HOM_NetworkMovableItem *> &items =
226  std::vector<HOM_NetworkMovableItem *>()) = 0;
227  virtual void pasteItemsFromClipboard(HOM_Vector2 *position = NULL) = 0;
228  SWIGOUT(%kwargs copyItems;)
229  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > copyItems(
230  const std::vector<HOM_NetworkMovableItem *> &items,
231  bool channel_reference_originals=false,
232  bool relative_references=true,
233  bool connect_outputs_to_multi_inputs=false) = 0;
234 
235  SWIGOUT(%newobject creator;)
236  virtual HOM_Node *creator() = 0;
237  SWIGOUT(%newobject network;)
239  { return creator(); }
240 
241  SWIGOUT(%newobject moveToGoodPosition;)
242  SWIGOUT(%kwargs moveToGoodPosition;)
243  virtual HOM_Vector2 *moveToGoodPosition(bool relative_to_inputs = true,
244  bool move_inputs = true,
245  bool move_outputs = true,
246  bool move_unconnected = true) = 0;
247 
248  // TODO: Have an argument to specify sorting orders once bug 25998 is fixed.
249  // Have an argument equivalent to oplayout -t once bug 26018 is fixed.
250  SWIGOUT(%kwargs layoutChildren);
251  virtual void layoutChildren
252  (const std::vector<HOM_NetworkMovableItem *> &items =
253  std::vector<HOM_NetworkMovableItem *>(),
254  double horizontal_spacing=-1,
255  double vertical_spacing=-1) = 0;
256 
257  virtual bool isCurrent() = 0;
258  SWIGOUT(%kwargs setCurrent;)
259  virtual void setCurrent(bool on, bool clear_all_selected = false) = 0;
260 
261  virtual bool isHidden() = 0;
262  virtual void hide(bool on) = 0;
263 
264  virtual std::string comment() = 0;
265  virtual void setComment(const char *comment) = 0;
266  virtual void appendComment(const char *comment) = 0;
267 
268  SWIGOUT(%kwargs destroy;)
269  virtual void destroy(bool disable_safety_checks=false) = 0;
270 
271  virtual std::vector<HOM_ElemPtr<HOM_NetworkBox> > networkBoxes() = 0;
272  SWIGOUT(%newobject iterNetworkBoxes;)
273  virtual HOM_IterableList<HOM_NetworkBox> *iterNetworkBoxes() = 0;
274  SWIGOUT(%newobject createNetworkBox;)
275  virtual HOM_NetworkBox *createNetworkBox(const char *name=NULL) = 0;
276  SWIGOUT(%newobject findNetworkBox;)
277  virtual HOM_NetworkBox *findNetworkBox(const char *name) = 0;
278  virtual std::vector<HOM_ElemPtr<HOM_NetworkBox> >
279  findNetworkBoxes(const char *pattern) = 0;
280 
281  virtual std::vector<HOM_ElemPtr<HOM_NetworkDot> > networkDots() = 0;
282  SWIGOUT(%newobject createNetworkDot;)
283  virtual HOM_NetworkDot *createNetworkDot() = 0;
284 
285  virtual bool canCreateDigitalAsset() = 0;
286 
287  // Sub-Network methods.
288  SWIGOUT(%kwargs collapseIntoSubnet;)
289  SWIGOUT(%newobject collapseIntoSubnet;)
290  virtual HOM_Node *collapseIntoSubnet(
291  const std::vector<HOM_NetworkMovableItem*> &child_items,
292  const char *subnet_name=NULL, const char *subnet_type=NULL) = 0;
293 
294  virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> >
295  extractAndDelete() = 0;
296 
297  virtual std::vector<HOM_ElemPtr<HOM_SubnetIndirectInput> >
298  indirectInputs() = 0;
299 
300  // get the nodes inside a subnet that feed its outputs
301  virtual std::vector<HOM_ElemPtr<HOM_Node> >
302  subnetOutputs() = 0;
303 
304  virtual bool isSubNetwork() = 0;
305 
306  // User data methods:
307  virtual void setUserData(const char *name, const std::string &value) = 0;
308  SWIGOUT(%ignore boostAnyUserData;)
309  virtual hboost::any boostAnyUserData(const char *name) = 0;
310  virtual void destroyUserData(const char *name, bool must_exist=true) = 0;
311  virtual void clearUserDataDict() = 0;
312  virtual std::map<std::string, std::string> userDataDict() = 0;
313 
314 #ifdef SWIG
315 %extend
316 {
317  InterpreterObject userData(const char *name)
318  { return HOMboostAnyToInterpreterObject(self->boostAnyUserData(name)); }
319 }
320 #endif
321 
322  // Sticky methods
323  SWIGOUT(%newobject createStickyNote;)
324  virtual HOM_StickyNote *createStickyNote(const char *name=NULL) = 0;
325  virtual std::vector<HOM_ElemPtr<HOM_StickyNote> > stickyNotes() = 0;
326  SWIGOUT(%newobject iterStickyNotes;)
327  virtual HOM_IterableList<HOM_StickyNote> *iterStickyNotes() = 0;
328  SWIGOUT(%newobject findStickyNote;)
329  virtual HOM_StickyNote *findStickyNote(const char *name) = 0;
330  SWIGOUT(%newobject findStickyNotes;)
331  virtual std::vector<HOM_ElemPtr<HOM_StickyNote> > findStickyNotes(
332  const char *pattern) = 0;
333 };
334 
335 #endif
type
Definition: core.h:556
std::string ignore_case(std::string item)
Helper function to allow ignore_case to be passed to IsMember or Transform.
Definition: CLI11.h:3456
#define HOM_DESTRUCT_OBJECT(pointer)
Definition: HOM_Module.h:1398
Definition: Node.h:52
GLsizei const GLfloat * value
Definition: glcorearb.h:824
HOM_Node()
Definition: HOM_Node.h:46
#define SWIGOUT(x)
Definition: HOM_Defines.h:24
string __repr__(VtArray< T > const &self)
Definition: wrapArray.h:312
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:108
HOM_Node(const HOM_Node &node)
Definition: HOM_Node.h:49
bool any(const vbool4 &v)
Definition: simd.h:3600
#define HOM_API
Definition: HOM_API.h:13
void ignore(T const &) VULKAN_HPP_NOEXCEPT
Definition: vulkan.hpp:6508
HOM_Node * network()
Definition: HOM_Node.h:238
#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
~HOM_Node() override
Definition: HOM_Node.h:52
GLuint const GLchar * name
Definition: glcorearb.h:786
GLushort pattern
Definition: glad.h:2583
OIIO_UTIL_API bool rename(string_view from, string_view to, std::string &err)
SIM_API const UT_StringHolder position
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons.
Definition: Mat3.h:542
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glcorearb.h:1297