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_GEOSELECTION_CHANGED, // The geometry's selection changed
89 
90  // These CHGROUP events are only triggered on the OP_Director
91  // data is (CH_Group*)
92  OP_CHGROUP_CREATED, // Channel group added (must be first)
93  OP_CHGROUP_REMOVED, // Channel group removed
94  OP_CHGROUP_RENAMED, // Channel group renamed
95  OP_CHGROUP_MOVED, // Channel group changed index
96  OP_CHGROUP_SELCHANGED, // Group selection changed
97  OP_CHGROUP_CURCHANGED, // Current group changed
98  OP_CHGROUP_CHANGED, // Channel group membership has changed
99  // (stays last)
100 
101  OP_INPUT_RENAMED, // One of our inputs was renamed
102 
103  OP_CHSCOPE_CHANGED, // Channel scope has changed (only OP_Director)
104  OP_CHSCOPEPIN_CHANGED, // Channel selection has changed
105  OP_CHSCOPESELECTION_CHANGED,// Channel selection has changed
106  // (only OP_Director)
107  OP_CHSCOPE_DISPLAY_CHANGED, // Channel selection has changed
108  // (only OP_Director)
109  OP_CHSCOPE_GRAPH_SELECTION_CHANGED, // Channel selection has changed
110  // (only OP_Director)
111 
112  OP_CHILD_PICK_CHANGED, // A selection has changed for our children
113 
114  OP_NODE_PREDELETE, // This node will be deleted
115 
116  OP_NETWORKBOX_CREATED, // A network box was created within the network
117  // -- DATA: OP_NetworkBox*
118  OP_NETWORKBOX_DELETED, // A network box was removed from the network
119  // -- DATA: OP_NetworkBox*
120  OP_NETWORKBOX_CHANGED, // The contents of a network box have changed
121  // -- DATA: OP_NetworkBox*
122  OP_NETWORKBOX_STOWED, // An OP_NetworkBox has been stowed, similar to
123  // OP_NODE_STOWED
124 
125  OP_SPAREPARM_MODIFIED, // A Spare parm was created or deleted.
126 
127  OP_MULTIPARM_MODIFIED, // A Multiparm instance was created or deleted.
128 
129  OP_PARM_ENABLE_CHANGED, // Parm's enable state changed.
130  // -- DATA: parm index
131 
132  OP_POSTIT_NOTE_CREATED, // A post it note was created within the network
133  OP_POSTIT_NOTE_DELETED, // A post it note was removed from the network
134  OP_POSTIT_NOTE_CHANGED, // The contents of a post it note have changed
135  OP_POSTIT_NOTE_STOWED, // An OP_PostIt has been stowed, similar to
136  // OP_NODE_STOWED
138 
139  OP_UI_REFRESH_EXPOSED, // Send after an event that could have changed
140  // exposed flags in a network.
141 
142  OP_PARM_VISIBLE_CHANGED, // Parms' visible state changed.
143  // -- DATA: parm index
144 
145  OP_CUSTOM_DATA_CHANGED, // Some custom data held on the node changed.
146  // -- DATA: node-specific enum indicating
147  // exactly which bit of custom data changed
148 
150 
151 } OP_EventType;
152 
153 typedef void (*OP_EventMethod)(OP_Node *caller, void *callee,
154  OP_EventType type, void *data);
155 
156 OP_API extern const char *OPeventToString(OP_EventType type);
157 
158 // UTformat support.
159 static inline size_t
160 format(char *buffer, size_t buffer_size, const OP_EventType &v)
161 {
162  UT_WorkBuffer eventtext;
163  eventtext.sprintf("%s (%d)", OPeventToString(v), (int)(v));
164  if (!buffer)
165  return eventtext.length();
166  else
167  {
168  size_t len = std::min(size_t(eventtext.length()), buffer_size);
169  ::memcpy(buffer, eventtext.buffer(), len);
170  return len;
171  }
172 }
174 {
175 public:
176  OP_Value(OP_Node *owner);
177  ~OP_Value();
178 
179  int hasOpInterest (void *data, OP_EventMethod eventHandler) const;
180  void addOpInterest (void *data, OP_EventMethod eventHandler);
181  void removeOpInterest(void *data, OP_EventMethod eventHandler);
182  void changed (OP_EventType type, void *data=0) const;
183 
184  unsigned numInterests() const;
185 
186  int64 getMemoryUsage(bool inclusive) const;
187 
188 private:
190  OP_Node *myOwner;
191 };
192 
193 #endif
SYS_FORCE_INLINE exint length() const
const GLdouble * v
Definition: glcorearb.h:836
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
SYS_FORCE_INLINE const char * buffer() const
GLuint buffer
Definition: glcorearb.h:659
long long int64
Definition: SYS_Types.h:107
void(* OP_EventMethod)(OP_Node *caller, void *callee, OP_EventType type, void *data)
Definition: OP_Value.h:153
GLboolean * data
Definition: glcorearb.h:130
int sprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
GLint GLint GLsizei GLint GLenum format
Definition: glcorearb.h:107
#define OP_API
Definition: OP_API.h:10
png_infop png_bytep png_size_t buffer_size
Definition: png.h:2124
OP_EventType
Definition: OP_Value.h:22
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:107
const std::enable_if<!VecTraits< T >::IsVec, T >::type & min(const T &a, const T &b)
Definition: Composite.h:129
OP_API const char * OPeventToString(OP_EventType type)