HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OP_Value.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  * NAME: OP library (C++)
7  *
8  * COMMENTS: Value for expressing interest in a node...
9  *
10  */
11 
12 #ifndef __OP_Value_h__
13 #define __OP_Value_h__
14 
15 #include "OP_API.h"
16 #include <UT/UT_ValArray.h>
17 #include <UT/UT_WorkBuffer.h>
18 
19 class OP_Node;
20 class OP_EventHandler;
21 
22 typedef enum
23 {
24  OP_CHILD_CREATED, // A new node has been created -- DATA: ptr to child
25  OP_CHILD_REORDERED, // A child's index has been changed
26  // -- DATA: child ptr
27 
28  OP_NODE_DELETED, // This node was deleted
29  OP_CHILD_DELETED, // Let the network know about the above.
30 
31  OP_CHILD_UNSTOWED, // These are used by OH to signal that an OH gadget
32  OP_NODE_STOWED, // is stow/unstowed and should have interests added
33  // or removed appropriately.
34  OP_NODE_HIDDEN, // Almost the same as a STOWED. UNSTOW is opposite.
35  OP_CHILD_REVEALED, // Almost the same as a UNSTOWED. STOW is opposite.
36  OP_CHILD_HIDDEN, // Let network know about the above.
37 
38  OP_CHILD_SWITCHED, // Change to networks current, display or render node.
39 
40  OP_NAME_CHANGED, // This node's name changed
41 
42  // these five need to be propagated to dependents so that we can recook
43  OP_INPUT_REWIRED, // One of this node's inputs was connected to
44  // a different node -- DATA: input index
45  OP_INPUT_CHANGED, // One of the input nodes has changed
46  OP_FLAG_CHANGED, // Something like the display flag changed
47 
48 
49  // of the following three events, each implies the preceeding ones
50  OP_PARM_UICHANGED, // A parameter's appearance changed
51  // -- DATA: parm index
52  OP_PARM_CHANGED, // A parameter's value changed -- DATA: parm index
53  OP_PARM_ANIMATED, // One of the node's channels has changed in a drastic
54  // way eg keyframe added/removed -- DATA: parm index
55  OP_PARM_CHANNELS, // A channel has been added, deleted, or renamed
56  // -- DATA: parm index
57 
58  OP_UI_CHANGED, // for example error status, current, selected
59  // -- DATA: OP_UIChangeType
60  OP_UI_CURRENT_CHANGED, // The current node has been set when emitted
61  // from OPgetDirector() -- DATA: node pointer
62  OP_UI_EDIT_CURRENT_CHANGED, // The current node has been set when emitted
63  // from OPgetDirector() and is meant to be
64  // edited -- DATA: node pointer
65  OP_UI_EDIT_NETWORK, // Our picked network has changed.
66  // This is only emitted from OP_Director
67  // -- DATA: network node pointer
68  OP_UI_MOVED, // location change
69  OP_OUTPUT_CHANGED, // the output of a node has changed
70  OP_OUTPUT_CHANGED_FOR_COOK_TYPE, // the output of a node has changed as the
71  // node changed from cooking for render to
72  // cooking for display or vice versa.
73  // This change, unlike OP_OUTPUT_CHANGED,
74  // is not propagated to dependents!
75  // -- DATA: 0 = cooked for display
76  // -- DATA: 1 = cooked for render
77  OP_GROUPLIST_CHANGED,// The network group list or selection has changed
78  OP_INDIRECT_CREATED,// An OP_IndirectInput object was added to the net
79  OP_INDIRECT_DELETED,// or deleted from the net.
80 
81  OP_COOKING_CHANGED, // current status of cook state (for performance)
82 
83  OP_GROUP_CREATED, // An OP_Group object was added to the net
84  OP_GROUP_DELETED, // or deleted from the net.
85  OP_GROUP_CHANGED, // An OP_Group was renamed or its membership
86  // changed.
87 
88  OP_DATA_COOKSELECTION_CHANGED, // The data's cook selection changed
89  OP_DATA_USERSELECTION_CHANGED, // The data's user selection changed
90 
91  // These CHGROUP events are only triggered on the OP_Director
92  // data is (CH_Group*)
93  OP_CHGROUP_CREATED, // Channel group added (must be first)
94  OP_CHGROUP_REMOVED, // Channel group removed
95  OP_CHGROUP_RENAMED, // Channel group renamed
96  OP_CHGROUP_MOVED, // Channel group changed index
97  OP_CHGROUP_SELCHANGED, // Group selection changed
98  OP_CHGROUP_CURCHANGED, // Current group changed
99  OP_CHGROUP_CHANGED, // Channel group membership has changed
100  // (stays last)
101 
102  OP_CHPLAYBACK_CHANGED, // Paramaters which affect playback
103  // were changed (eg, framerate, limits)
104 
105  OP_INPUT_RENAMED, // One of our inputs was renamed
106 
107  OP_CHSCOPE_CHANGED, // Channel scope has changed (only OP_Director)
108  OP_CHSCOPEPIN_CHANGED, // Channel selection has changed
109  OP_CHSCOPESELECTION_CHANGED,// Channel selection has changed
110  // (only OP_Director)
111  OP_CHSCOPE_DISPLAY_CHANGED, // Channel selection has changed
112  // (only OP_Director)
113  OP_CHSCOPE_GRAPH_SELECTION_CHANGED, // Channel selection has changed
114  // (only OP_Director)
115 
116  OP_CHILD_PICK_CHANGED, // A selection has changed for our children
117 
118  OP_NODE_PREDELETE, // This node will be deleted
119 
120  OP_NETWORKBOX_CREATED, // A network box was created within the network
121  // -- DATA: OP_NetworkBox*
122  OP_NETWORKBOX_DELETED, // A network box was removed from the network
123  // -- DATA: OP_NetworkBox*
124  OP_NETWORKBOX_CHANGED, // The contents of a network box have changed
125  // -- DATA: OP_NetworkBox*
126  OP_NETWORKBOX_STOWED, // An OP_NetworkBox has been stowed, similar to
127  // OP_NODE_STOWED
128 
129  OP_SPAREPARM_MODIFIED, // A Spare parm was created or deleted.
130 
131  OP_MULTIPARM_MODIFIED, // A Multiparm instance was created or deleted.
132 
133  OP_PARM_ENABLE_CHANGED, // Parm's enable state changed.
134  // -- DATA: parm index
135 
136  OP_POSTIT_NOTE_CREATED, // A post it note was created within the network
137  OP_POSTIT_NOTE_DELETED, // A post it note was removed from the network
138  OP_POSTIT_NOTE_CHANGED, // The contents of a post it note have changed
139  OP_POSTIT_NOTE_STOWED, // An OP_PostIt has been stowed, similar to
140  // OP_NODE_STOWED
142 
143  OP_UI_REFRESH_EXPOSED, // Send after an event that could have changed
144  // exposed flags in a network.
145 
146  OP_PARM_VISIBLE_CHANGED, // Parms' visible state changed.
147  // -- DATA: parm index
148 
149  OP_CUSTOM_DATA_CHANGED, // Some custom data held on the node changed.
150  // -- DATA: node-specific enum indicating
151  // exactly which bit of custom data changed
152 
153  OP_WORK_ITEM_SELECTION_CHANGED, // The selected work item was changed
154  // -- DATA: work item ID, unique to the
155  // TOP network that the event was emitted
156  // from
157 
159 
160 } OP_EventType;
161 
162 typedef void (*OP_EventMethod)(OP_Node *caller, void *callee,
163  OP_EventType type, void *data);
164 
165 OP_API extern const char *OPeventToString(OP_EventType type);
166 
167 // UTformat support.
168 static inline size_t
169 format(char *buffer, size_t buffer_size, const OP_EventType &v)
170 {
171  UT_WorkBuffer eventtext;
172  eventtext.sprintf("%s (%d)", OPeventToString(v), (int)(v));
173  if (!buffer)
174  return eventtext.length();
175  else
176  {
177  size_t len = std::min(size_t(eventtext.length()), buffer_size);
178  ::memcpy(buffer, eventtext.buffer(), len);
179  return len;
180  }
181 }
183 {
184 public:
185  OP_Value(OP_Node *owner);
186  ~OP_Value();
187 
188  int hasOpInterest (void *data, OP_EventMethod eventHandler) const;
189  void addOpInterest (void *data, OP_EventMethod eventHandler);
190  void removeOpInterest(void *data, OP_EventMethod eventHandler);
191  void changed (OP_EventType type, void *data=0) const;
192 
193  unsigned numInterests() const;
194 
195  int64 getMemoryUsage(bool inclusive) const;
196 
197 private:
199  OP_Node *myOwner;
200 };
201 
202 #endif
SYS_FORCE_INLINE exint length() const
void
Definition: png.h:1083
SYS_FORCE_INLINE const char * buffer() const
ImageBuf OIIO_API min(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
Definition: core.h:760
void(* OP_EventMethod)(OP_Node *caller, void *callee, OP_EventType type, void *data)
Definition: OP_Value.h:162
GLenum GLsizei len
Definition: glew.h:7782
const GLdouble * v
Definition: glcorearb.h:837
long long int64
Definition: SYS_Types.h:116
int sprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
GLboolean * data
Definition: glcorearb.h:131
GLint GLint GLsizei GLint GLenum format
Definition: glcorearb.h:108
#define OP_API
Definition: OP_API.h:10
OP_EventType
Definition: OP_Value.h:22
type
Definition: core.h:1059
OP_API const char * OPeventToString(OP_EventType type)
Definition: format.h:895