Coin
4.0.3
Coin3D core library
|
The SoEventCallback class provides functionality for catching events. More...
#include <Inventor/nodes/SoEventCallback.h>
Static Public Member Functions | |
static SoType | getClassTypeId (void) |
static void | initClass (void) |
Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system. | |
Static Public Member Functions inherited from SoNode | |
static void | audioRenderS (SoAction *action, SoNode *node) |
static void | callbackS (SoAction *action, SoNode *node) |
static int | getActionMethodIndex (const SoType type) |
static void | getBoundingBoxS (SoAction *action, SoNode *node) |
static SoNode * | getByName (const SbName &name) |
static int | getByName (const SbName &name, SoNodeList &l) |
static SoType | getClassTypeId (void) |
static uint32_t | getCompatibilityTypes (const SoType &nodetype) |
static void | getMatrixS (SoAction *action, SoNode *node) |
static SbUniqueId | getNextNodeId (void) |
static void | getPrimitiveCountS (SoAction *action, SoNode *node) |
static void | GLRenderS (SoAction *action, SoNode *node) |
static void | handleEventS (SoAction *action, SoNode *node) |
static void | initClass (void) |
Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system. | |
static void | initClasses (void) |
static void | pickS (SoAction *action, SoNode *node) |
static void | rayPickS (SoAction *action, SoNode *node) |
static void | searchS (SoAction *action, SoNode *node) |
static void | writeS (SoAction *action, SoNode *node) |
Static Public Member Functions inherited from SoFieldContainer | |
static void | addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy) |
static SoFieldContainer * | checkCopy (const SoFieldContainer *orig) |
static void | cleanupClass (void) |
static void | copyDone (void) |
static SoFieldContainer * | findCopy (const SoFieldContainer *orig, const SbBool copyconnections) |
static SoType | getClassTypeId (void) |
This static method returns the SoType object associated with objects of this class. | |
static void | initClass (void) |
Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system. | |
static void | initCopyDict (void) |
Static Public Member Functions inherited from SoBase | |
static void | addName (SoBase *const base, const char *const name) |
static SbBool | connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname) |
static void | decrementCurrentWriteCounter (void) |
static SoType | getClassTypeId (void) |
This static method returns the SoType object associated with objects of this class. | |
static SoBase * | getNamedBase (const SbName &name, SoType type) |
static int | getNamedBases (const SbName &name, SoBaseList &baselist, SoType type) |
static SbBool | getTraceRefs (void) |
static void | incrementCurrentWriteCounter (void) |
static void | initClass (void) |
Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system. | |
static SbBool | read (SoInput *input, SoBase *&base, SoType expectedtype) |
static SbBool | readRoute (SoInput *input) |
static void | removeName (SoBase *const base, const char *const name) |
static void | setInstancePrefix (const SbString &c) |
static void | setTraceRefs (SbBool trace) |
Protected Member Functions | |
virtual | ~SoEventCallback () |
virtual const SoFieldData * | getFieldData (void) const |
virtual void | handleEvent (SoHandleEventAction *action) |
Protected Member Functions inherited from SoNode | |
SoNode (void) | |
virtual | ~SoNode () |
virtual SbBool | readInstance (SoInput *in, unsigned short flags) |
Protected Member Functions inherited from SoFieldContainer | |
SoFieldContainer (void) | |
virtual | ~SoFieldContainer () |
Protected Member Functions inherited from SoBase | |
SoBase (void) | |
virtual | ~SoBase () |
virtual SoNotRec | createNotRec (void) |
virtual void | destroy (void) |
virtual const char * | getFileFormatName (void) const |
SbBool | hasMultipleWriteRefs (void) const |
void | writeFooter (SoOutput *out) const |
SbBool | writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const |
Static Protected Member Functions | |
static const SoFieldData ** | getFieldDataPtr (void) |
Static Protected Member Functions inherited from SoNode | |
static const SoFieldData ** | getFieldDataPtr (void) |
static int | getNextActionMethodIndex (void) |
static void | incNextActionMethodIndex (void) |
static void | setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask) |
static void | setNextActionMethodIndex (int index) |
Static Protected Member Functions inherited from SoBase | |
static uint32_t | getCurrentWriteCounter (void) |
static void | staticDataLock (void) |
static void | staticDataUnlock (void) |
Additional Inherited Members | |
Public Types inherited from SoNode | |
enum | NodeType { INVENTOR = 0x0000 , VRML1 = 0x0001 , VRML2 = 0x0002 , INVENTOR_1 = 0x0004 , INVENTOR_2_0 = 0x0008 , INVENTOR_2_1 = 0x0010 , INVENTOR_2_5 = 0x0020 , INVENTOR_2_6 = 0x0040 , COIN_1_0 = 0x0080 , COIN_2_0 = 0x0100 , EXTENSION = 0x0200 , COIN_2_2 = 0x0400 , COIN_2_3 = 0x0800 , COIN_2_4 = 0x1000 , INVENTOR_5_0 = 0x2000 , COIN_2_5 = 0x4000 , COIN_3_0 = 0x8000 , INVENTOR_6_0 = 0x10000 , COIN_4_0 = 0x20000 } |
Protected Types inherited from SoBase | |
enum | BaseFlags { IS_ENGINE = 0x01 , IS_GROUP = 0x02 } |
Protected Attributes inherited from SoNode | |
SbUniqueId | uniqueId |
Protected Attributes inherited from SoFieldContainer | |
SbBool | isBuiltIn |
Static Protected Attributes inherited from SoNode | |
static int | nextActionMethodIndex = 0 |
static SbUniqueId | nextUniqueId = 1 |
The SoEventCallback class provides functionality for catching events.
Use SoEventCallback nodes in the scene graph for catching user interaction events with the scene graph's render canvas.
This is how event handling works in Coin: when the user interacts with the render canvas, for instance by using the mouse pointer or by hitting the keyboard, the GUI interface toolkit (i.e. SoQt, SoWin, SoXt, Sc21 ...) will catch the event and translate it from a window system specific event to a generic Coin event. (For the types of generic Coin events, see the classes derived from SoEvent.) This event will then be wrapped inside a SoHandleEventAction and applied to the scene graph. All this happens within the So[Qt|Xt|Win|...] toolkit.
The SoHandleEventAction then traverses the scene graph, delivering the event to any node type which "is interested" in it. The SoEventCallback node type catches the action and forwards the event to a callback function set up by the application programmer.
Be careful about which position in the scene graph you insert SoEventCallback nodes if you are also using any of the built-in Coin library elements which are interested in user interaction events (like for instance the dragger and manipulator classes and the SoSelection nodes). These Coin elements might catch the event for themselves, short-circuiting the SoHandleEventAction traversal so the event will never reach the SoEventCallback node(s) you insert.
FILE FORMAT/DEFAULTS:
SoEventCallback::SoEventCallback | ( | void | ) |
Constructor.
|
protectedvirtual |
Destructor.
void SoEventCallback::addEventCallback | ( | SoType | eventtype, |
SoEventCallbackCB * | f, | ||
void * | userdata = NULL ) |
Set up a callback function f which will be invoked for the given eventtype. userdata will be given as the first argument to the function.
SoHandleEventAction * SoEventCallback::getAction | ( | void | ) | const |
Returns the SoHandleEventAction instance currently traversing the scene graph with the SoEvent-derived event object.
This static method returns the SoType object associated with objects of this class.
Returns a pointer to the event object which is currently being sent through the scene graph.
If your application code handles the event, you probably want to call SoEventCallback::setHandled() to notify the SoHandleEventAction that it should stop traversing the scene graph with the event.
|
protectedvirtual |
Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL
.
Reimplemented from SoFieldContainer.
|
staticprotected |
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.
Returns the SoFieldData class which holds information about fields in this node.
Returns the path that must be picked before callbacks are invoked.
const SoPickedPoint * SoEventCallback::getPickedPoint | ( | void | ) | const |
Returns the picked point for the current handle event traversal.
This is obviously only related to events which can be considered "pick-style" events, like mouse button presses.
Set up the node so all future events (until releaseEvents() is called) in Coin will be directly forwarded to this node.
|
protectedvirtual |
Invokes the registered callback functions.
Reimplemented from SoNode.
SbBool SoEventCallback::isHandled | ( | void | ) | const |
Check whether or not the event from the SoHandleEventAction has been handled.
Do not grab event handling any more.
void SoEventCallback::removeEventCallback | ( | SoType | eventtype, |
SoEventCallbackCB * | f, | ||
void * | userdata = NULL ) |
Unregister the given callback function f.
Use this method from a callback function to notify the node that the event has been handled.
The rest of the callbacks registered with the node will still be called, but further SoEventCallback nodes in the scene will not be notified about the event, neither will any other Coin elements in the scene graph (like for instance SoDragger objects, SoSelection nodes or manipulators).
Since callbacks registered within the same SoEventCallback node will still be invoked after the event has been handled, it is likely that you should use SoEventCallback::isHandled() to check for this condition from your callback functions.
Sets the path that must be picked before the registered callbacks are invoked. If NULL
, callbacks will be invoked for every event that matches the callback event type.