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_INPUT_REWIRED, // An OP_IndirectInput object was rewired
80  OP_INDIRECT_DELETED, // or deleted from the net.
81 
82  OP_COOKING_CHANGED, // current status of cook state (for performance)
83 
84  OP_GROUP_CREATED, // An OP_Group object was added to the net
85  OP_GROUP_DELETED, // or deleted from the net.
86  OP_GROUP_CHANGED, // An OP_Group was renamed or its membership
87  // changed.
88 
89  OP_DATA_COOKSELECTION_CHANGED, // The data's cook selection changed
90  OP_DATA_USERSELECTION_CHANGED, // The data's user selection changed
91 
92  // These CHGROUP events are only triggered on the OP_Director
93  // data is (CH_Group*)
94  OP_CHGROUP_CREATED, // Channel group added (must be first)
95  OP_CHGROUP_REMOVED, // Channel group removed
96  OP_CHGROUP_RENAMED, // Channel group renamed
97  OP_CHGROUP_MOVED, // Channel group changed index
98  OP_CHGROUP_SELCHANGED, // Group selection changed
99  OP_CHGROUP_CURCHANGED, // Current group changed
100  OP_CHGROUP_CHANGED, // Channel group membership has changed
101  // (stays last)
102 
103  OP_CHPLAYBACK_CHANGED, // Parameters which affect playback
104  // were changed (eg, framerate, limits)
105  OP_CHDEFAULT_EXPR_CHANGED, // The default expression was changed
106 
107  OP_CHEXTERNAL_COLLECTION_CHANGED, // A channel has been added, deleted, or
108  // renamed in an external collection
109  // -- DATA: changed channel
110  OP_CHEXTERNAL_CHANNEL_KEY_CHANGED,// An external channel's key value was
111  // changed
112  // -- DATA: changed channel
113  OP_CHEXTERNAL_CHANNEL_CHANGED, // An external channel was changed in a
114  // major way (eg. keyframe added/removed)
115  // -- DATA: changed channel
116 
117 
118  OP_INPUT_RENAMED, // One of our inputs was renamed
119 
120  OP_CHSCOPE_CHANGED, // Channel scope has changed (only OP_Director)
121  OP_CHSCOPEPIN_CHANGED, // Channel selection has changed
122  OP_CHSCOPESELECTION_CHANGED,// Channel selection has changed
123  // (only OP_Director)
124  OP_CHSCOPE_DISPLAY_CHANGED, // Channel selection has changed
125  // (only OP_Director)
126  OP_CHSCOPE_GRAPH_SELECTION_CHANGED, // Channel selection has changed
127  // (only OP_Director)
128 
129  OP_CHILD_PICK_CHANGED, // A selection has changed for our children
130 
131  OP_NODE_PREDELETE, // This node will be deleted
132 
133  OP_NETWORKBOX_CREATED, // A network box was created within the network
134  // -- DATA: OP_NetworkBox*
135  OP_NETWORKBOX_DELETED, // A network box was removed from the network
136  // -- DATA: OP_NetworkBox*
137  OP_NETWORKBOX_CHANGED, // The contents of a network box have changed
138  // -- DATA: OP_NetworkBox*
139  OP_NETWORKBOX_STOWED, // An OP_NetworkBox has been stowed, similar to
140  // OP_NODE_STOWED
141 
142  OP_SPAREPARM_MODIFIED, // A Spare parm was created or deleted.
143 
144  OP_MULTIPARM_MODIFIED, // A Multiparm instance was created or deleted.
145 
146  OP_PARM_ENABLE_CHANGED, // Parm's enable state changed.
147  // -- DATA: parm index
148 
149  OP_POSTIT_NOTE_CREATED, // A post it note was created within the network
150  OP_POSTIT_NOTE_DELETED, // A post it note was removed from the network
151  OP_POSTIT_NOTE_CHANGED, // The contents of a post it note have changed
152  OP_POSTIT_NOTE_STOWED, // An OP_PostIt has been stowed, similar to
153  // OP_NODE_STOWED
155 
156  OP_UI_REFRESH_EXPOSED, // Send after an event that could have changed
157  // exposed flags in a network.
158 
159  OP_PARM_VISIBLE_CHANGED, // Parms' visible state changed.
160  // -- DATA: parm index
161 
162  OP_PARM_LOCK_CHANGED, // Parms' lock state changed.
163  // -- DATA: parm index
164 
165  OP_CUSTOM_DATA_CHANGED, // Some custom data held on the node changed.
166  // -- DATA: node-specific enum indicating
167  // exactly which bit of custom data changed
168 
169  OP_WORK_ITEM_SELECTION_CHANGED, // The selected work item was changed
170  // -- DATA: work item ID, unique to the
171  // TOP network that the event was emitted
172  // from
173 
175 
176 } OP_EventType;
177 
178 typedef void (*OP_EventMethod)(OP_Node *caller, void *callee,
179  OP_EventType type, void *data);
180 
181 OP_API extern const char *OPeventToString(OP_EventType type);
182 
183 // UTformat support.
184 static inline size_t
185 format(char *buffer, size_t buffer_size, const OP_EventType &v)
186 {
187  UT_WorkBuffer eventtext;
188  eventtext.sprintf("%s (%d)", OPeventToString(v), (int)(v));
189  if (!buffer)
190  return eventtext.length();
191  else
192  {
193  size_t len = std::min(size_t(eventtext.length()), buffer_size);
194  ::memcpy(buffer, eventtext.buffer(), len);
195  return len;
196  }
197 }
199 {
200 public:
201  OP_Value(OP_Node *owner);
202  ~OP_Value();
203 
204  int hasOpInterest (void *data, OP_EventMethod eventHandler) const;
205  void addOpInterest (void *data, OP_EventMethod eventHandler);
206  void removeOpInterest(void *data, OP_EventMethod eventHandler);
207  void changed (OP_EventType type, void *data=0) const;
208 
209  unsigned numInterests() const;
210 
211  int64 getMemoryUsage(bool inclusive) const;
212 
213 private:
215  OP_Node *myOwner;
216 };
217 
218 #endif
SYS_FORCE_INLINE exint length() const
void
Definition: png.h:1083
GLboolean * data
Definition: glcorearb.h:131
const GLdouble * v
Definition: glcorearb.h:837
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:178
GLint GLint GLsizei GLint GLenum format
Definition: glcorearb.h:108
long long int64
Definition: SYS_Types.h:116
int sprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
#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