SoEventCallback(3)

πŸ“¦
version 4.0.10 Β· 4 versions
, in fedora 43, fedora 44

πŸŽ€ NAME πŸŽ€

okay so bestie, meet SoEventCallback β€” she's the whole moment in the Coin manual page SoEventCallback(3). This class provides functionality for catching events. that's her job, that's her purpose, and she is so good at it. πŸ’…βœ¨


🌸 SYNOPSIS 🌸

#include <Inventor/nodes/SoEventCallback.h>

Inherits SoNode. so yes, she's a node, she's in the family tree, she got the genes. πŸ§¬πŸ‘‘


πŸ‘‘ Public Member Functions πŸ‘‘

the main character's own methods, front and center:

  • virtual SoType getTypeId (void) const β€” the type-check queen, she knows who she is πŸ’–
  • SoEventCallback (void) β€” the constructor, she's born ready
  • void setPath (SoPath *path) β€” hand her a SoPath bestie
  • const SoPath * getPath (void) β€” and she'll hand one right back
  • void addEventCallback (SoType eventtype, SoEventCallbackCB *f, void *userdata=NULL) β€” add a callback for a given event type, with userdata defaulting to NULL
  • void removeEventCallback (SoType eventtype, SoEventCallbackCB *f, void *userdata=NULL) β€” and take it right back off, same signature, same NULL default
  • SoHandleEventAction * getAction (void) const β€” grab the action
  • const SoEvent * getEvent (void) const β€” grab the event
  • const SoPickedPoint * getPickedPoint (void) const β€” grab the picked point
  • void setHandled (void) β€” mark it handled ✨
  • SbBool isHandled (void) const β€” and check if it's handled
  • void grabEvents (void) β€” grab 'em
  • void releaseEvents (void) β€” release 'em

🌈 Public Member Functions inherited from SoNode 🌈

she inherited all of this, no cap:

  • void setOverride (const SbBool state)
  • SbBool isOverride (void) const
  • void setNodeType (const NodeType type)
  • NodeType getNodeType (void) const
  • virtual SoNode * copy (SbBool copyconnections=FALSE) const
  • virtual SbBool affectsState (void) const
  • virtual void doAction (SoAction *action)
  • virtual void GLRender (SoGLRenderAction *action)
  • virtual void GLRenderBelowPath (SoGLRenderAction *action)
  • virtual void GLRenderInPath (SoGLRenderAction *action)
  • virtual void GLRenderOffPath (SoGLRenderAction *action)
  • virtual void callback (SoCallbackAction *action)
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action)
  • virtual void getMatrix (SoGetMatrixAction *action)
  • virtual void pick (SoPickAction *action)
  • virtual void rayPick (SoRayPickAction *action)
  • virtual void search (SoSearchAction *action)
  • virtual void write (SoWriteAction *action)
  • virtual void audioRender (SoAudioRenderAction *action)
  • virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)
  • virtual void grabEventsSetup (void)
  • virtual void grabEventsCleanup (void)
  • virtual void startNotify (void)
  • virtual void notify (SoNotList *l)
  • SbUniqueId getNodeId (void) const
  • virtual SoChildList * getChildren (void) const
  • virtual void writeInstance (SoOutput *out)
  • virtual SoNode * addToCopyDict (void) const
  • virtual void copyContents (const SoFieldContainer *from, SbBool copyconnections)
  • virtual SoFieldContainer * copyThroughConnection (void) const

πŸ¦‹ Public Member Functions inherited from SoFieldContainer πŸ¦‹

more heirlooms, bestie:

  • void setToDefaults (void)
  • SbBool hasDefaultValues (void) const
  • SbBool fieldsAreEqual (const SoFieldContainer *container) const
  • void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE)
  • SbBool set (const char *const fielddata)
  • void get (SbString &fielddata)
  • virtual int getFields (SoFieldList &l) const
  • virtual int getAllFields (SoFieldList &l) const
  • virtual SoField * getField (const SbName &name) const
  • virtual SoField * getEventIn (const SbName &name) const
  • virtual SoField * getEventOut (const SbName &name) const
  • SbBool getFieldName (const SoField *const field, SbName &name) const
  • SbBool enableNotify (const SbBool flag)
  • SbBool isNotifyEnabled (void) const
  • SbBool set (const char *fielddata, SoInput *input)
  • void get (SbString &fielddata, SoOutput *out)
  • virtual SbBool validateNewFieldValue (SoField *field, void *newval)
  • virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE)
  • SbBool getIsBuiltIn (void) const
  • virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) const
  • void setUserData (void *userdata) const
  • void * getUserData (void) const

πŸ’œ Public Member Functions inherited from SoBase πŸ’œ

the OG ancestors, we love them:

  • void ref (void) const
  • void unref (void) const
  • void unrefNoDelete (void) const
  • int32_t getRefCount (void) const
  • void touch (void)
  • SbBool isOfType (SoType type) const β€” Returns TRUE if the type of this object is either of the same type or inherited from type.
  • virtual SbName getName (void) const
  • virtual void setName (const SbName &newname)
  • void addAuditor (void *const auditor, const SoNotRec::Type type)
  • void removeAuditor (void *const auditor, const SoNotRec::Type type)
  • const SoAuditorList & getAuditors (void) const
  • SbBool shouldWrite (void)
  • void assertAlive (void) const

⭐ Static Public Member Functions ⭐

  • static SoType getClassTypeId (void) β€” the class-level type id, slay
  • 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. (yes bestie, she registers herself with Coin, iconic behaviour πŸ’…)

🌟 Static Public Member Functions inherited from SoNode 🌟

  • static uint32_t getCompatibilityTypes (const SoType &nodetype)
  • static SoType getClassTypeId (void)
  • static SoNode * getByName (const SbName &name)
  • static int getByName (const SbName &name, SoNodeList &l)
  • 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 SbUniqueId getNextNodeId (void)
  • static int getActionMethodIndex (const SoType type)
  • static void getBoundingBoxS (SoAction *action, SoNode *node)
  • static void GLRenderS (SoAction *action, SoNode *node)
  • static void callbackS (SoAction *action, SoNode *node)
  • static void getMatrixS (SoAction *action, SoNode *node)
  • static void handleEventS (SoAction *action, SoNode *node)
  • 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 void audioRenderS (SoAction *action, SoNode *node)
  • static void getPrimitiveCountS (SoAction *action, SoNode *node)

πŸ’« Static Public Member Functions inherited from SoFieldContainer πŸ’«

  • 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 SoType getClassTypeId (void) β€” This static method returns the SoType object associated with objects of this class.
  • static void cleanupClass (void)
  • static void initCopyDict (void)
  • static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)
  • static SoFieldContainer * checkCopy (const SoFieldContainer *orig)
  • static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)
  • static void copyDone (void)

✨ Static Public Member Functions inherited from SoBase ✨

  • 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 SoType getClassTypeId (void) β€” This static method returns the SoType object associated with objects of this class.
  • static void addName (SoBase *const base, const char *const name)
  • static void removeName (SoBase *const base, const char *const name)
  • static void incrementCurrentWriteCounter (void)
  • static void decrementCurrentWriteCounter (void)
  • static SoBase * getNamedBase (const SbName &name, SoType type)
  • static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)
  • static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype)
  • static void setInstancePrefix (const SbString &c)
  • static void setTraceRefs (SbBool trace)
  • static SbBool getTraceRefs (void)
  • static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)
  • static SbBool readRoute (SoInput *input)

πŸ”’ Protected Member Functions πŸ”’

for the inner circle only, bestie:

  • virtual const SoFieldData * getFieldData (void) const
  • virtual ~SoEventCallback () β€” the destructor, she exits gracefully πŸ’–
  • virtual void handleEvent (SoHandleEventAction *action) β€” her whole thing, honestly

πŸŽ€ 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 void destroy (void)
  • SbBool hasMultipleWriteRefs (void) const
  • SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const
  • void writeFooter (SoOutput *out) const
  • virtual const char * getFileFormatName (void) const
  • virtual SoNotRec createNotRec (void)

πŸ›‘οΈ Static Protected Member Functions πŸ›‘οΈ

  • static const SoFieldData ** getFieldDataPtr (void)

🌈 Static Protected Member Functions inherited from SoNode 🌈

  • static const SoFieldData ** getFieldDataPtr (void)
  • static void setNextActionMethodIndex (int index)
  • static int getNextActionMethodIndex (void)
  • static void incNextActionMethodIndex (void)
  • static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)

πŸ’œ Static Protected Member Functions inherited from SoBase πŸ’œ

  • static uint32_t getCurrentWriteCounter (void)
  • static void staticDataLock (void)
  • static void staticDataUnlock (void)

🫢 Additional Inherited Members 🫢

the little extras she picked up along the way:

  • 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 SbUniqueId nextUniqueId = 1, static int nextActionMethodIndex = 0

okay so that's all of part 1, and bestie there is so much more coming in part 2 β€” don't go anywhere πŸ’–βœ¨

🌸 Detailed Description 🌸

The SoEventCallback class provides functionality for catching events. like it literally catches them for you, bestie πŸ’–

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 whole pipeline is giving assembly line, ngl ✨

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. that's your moment, main character energy fr fr πŸ‘‘

⚠️ 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. they will STEAL your event bestie, no cap 😭

FILE FORMAT/DEFAULTS:

EventCallback {
}

πŸŽ€ Constructor & Destructor Documentation πŸŽ€

SoEventCallback::SoEventCallback (void )

Constructor. born ready πŸ’…

SoEventCallback::~SoEventCallback () [protected], [virtual]

Destructor. bye bye bestie, it was iconic πŸ¦‹


✨ Member Function Documentation ✨

SoType SoEventCallback::getClassTypeId (void ) [static]

This static method returns the SoType object associated with objects of this class. the class ID card, very official ✨

SoType SoEventCallback::getTypeId (void ) const [virtual]

Returns the type identification of an object derived from a class inheriting SoBase. This is used for runtime type checking and "downward" casting. the "what ARE you actually" check, iykyk

Implements SoBase.

const SoFieldData ** SoEventCallback::getFieldDataPtr (void ) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. ngl it's not for you, it's for the library's inner circle πŸ™ˆ

Returns the SoFieldData class which holds information about fields in this node.

const SoFieldData * SoEventCallback::getFieldData (void ) const [protected], [virtual]

Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL. NULL is a whole mood, honestly

Reimplemented from SoFieldContainer.

void SoEventCallback::setPath (SoPath * pathptr)

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. so like, gatekeeping but make it a feature πŸ’…

See also getPath()

const SoPath * SoEventCallback::getPath (void )

Returns the path that must be picked before callbacks are invoked. peep the gatekeeping path

See also setPath()

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. you're basically assigning it a little bestie to call when stuff happens 🫢

void SoEventCallback::removeEventCallback (SoType eventtype, SoEventCallbackCB * f, void * userdata = NULL)

Unregister the given callback function f. breaking up, but respectfully πŸ’”

SoHandleEventAction * SoEventCallback::getAction (void ) const

Returns the SoHandleEventAction instance currently traversing the scene graph with the SoEvent-derived event object. there it is, the action itself, iconic

const SoEvent * SoEventCallback::getEvent (void ) const

Returns a pointer to the event object which is currently being sent through the scene graph. the event in question, the moment itself ✨

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. tell the action you got it so it stops running around 😭

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. mouse clicks get a point, keyboard presses don't, that's just the vibe 🌈

void SoEventCallback::setHandled (void )

Use this method from a callback function to notify the node that the event has been handled. you handled it. claim it. periodt. πŸ’…

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). so the rest of the scene is getting left on read, sorry bestie 😭

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. check before you act, queen πŸ‘‘

SbBool SoEventCallback::isHandled (void ) const

Check whether or not the event from the SoHandleEventAction has been handled. the vibe check in function form 🌸

void SoEventCallback::grabEvents (void )

Set up the node so all future events (until releaseEvents() is called) in Coin will be directly forwarded to this node. it's giving clingy but make it useful 🫢

void SoEventCallback::releaseEvents (void )

Do not grab event handling any more. let go, release, breathe 🧚

See also grabEvents()

void SoEventCallback::handleEvent (SoHandleEventAction * action) [protected], [virtual]

Invokes the registered callback functions. the moment where everyone gets called πŸ“žβœ¨

Reimplemented from SoNode.


πŸ¦‹ Author πŸ¦‹

Generated automatically by Doxygen for Coin from the source code. not a human, just a very thorough robot bestie πŸŽ€


that's a wrap on the SoEventCallback(3) saga bestie!! πŸ’– This page came from Coin version 4.0.10, dated Thu Jun 25 2026 00:00:00 β€” go catch some events, you absolute icon πŸ‘‘βœ¨πŸ’…
πŸ“¦ where this page comes from