SoTabBoxDragger(3)

πŸ“¦ version 3.1.3, in fedora 43, fedora 44

🌸 NAME 🌸

Hiii bestie, welcome to the SoTabBoxDragger page, fresh out of the Library Functions Manual (that's the (3) energy, iykyk). And okay so what even is it?

SoTabBoxDragger β€” it wraps a box around your geometry, and then you can translate it and scale it. That's it. That's the whole vibe. πŸ’…

This page is a whole trilogy, and this right here is part 1 of 3 β€” more parts are coming, so don't go anywhere 🫢

πŸŽ€ SYNOPSIS πŸŽ€

#include <Inventor/draggers/SoTabBoxDragger.h>

Inherits SoDragger.

✨ Public Member Functions ✨

  • virtual SoType getTypeId (void) const β€” hands you the runtime SoType id for this class, the classic "who am I really" move ✨
  • virtual const SoNodekitCatalog * getNodekitCatalog (void) const β€” gives you the nodekit catalog, aka the full blueprint of every part this thing is built from πŸ—ΊοΈ
  • SoTabBoxDragger (void) β€” the constructor, bestie. Call it, get a dragger. Periodt.
  • void adjustScaleTabSize (void) β€” fiddles with the size of the scale tabs so they actually look right πŸ’…

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

okay so these are all the goodies you get for free just by being a SoDragger β€” no cap, there's a lot of them:

  • virtual void callback (SoCallbackAction *action) β€” runs the callback action down through this node.
  • virtual void GLRender (SoGLRenderAction *action) β€” the render action, aka "draw me" ✨
  • virtual void getMatrix (SoGetMatrixAction *action) β€” feeds this node's transform into the matrix action.
  • virtual void rayPick (SoRayPickAction *action) β€” ray pick handling, for when something's aiming at you.
  • virtual void search (SoSearchAction *action) β€” lets a search action find this node.
  • virtual void write (SoWriteAction *action) β€” writes this node out.
  • virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action) β€” counts up the primitives.
  • void setProjectorEpsilon (const float epsilon) β€” sets the projector epsilon to epsilon.
  • float getProjectorEpsilon (void) const β€” reads the projector epsilon back out.
  • void addStartCallback (SoDraggerCB *func, void *data=NULL) β€” registers a callback that fires when a drag starts 🎬
  • void removeStartCallback (SoDraggerCB *func, void *data=NULL) β€” un-registers that start callback.
  • void addMotionCallback (SoDraggerCB *func, void *data=NULL) β€” registers a callback for while you're dragging (the motion, the wiggle) πŸ’ƒ
  • void removeMotionCallback (SoDraggerCB *func, void *data=NULL) β€” takes that motion callback back off.
  • void addFinishCallback (SoDraggerCB *func, void *data=NULL) β€” registers a callback for when the drag is done, slay.
  • void removeFinishCallback (SoDraggerCB *func, void *data=NULL) β€” removes the finish callback.
  • void addValueChangedCallback (SoDraggerCB *func, void *data=NULL) β€” registers a callback for when the value changes.
  • void removeValueChangedCallback (SoDraggerCB *func, void *data=NULL) β€” removes that one too.
  • void setMinGesture (int pixels) β€” sets the minimum gesture size, in pixels.
  • int getMinGesture (void) const β€” gets that minimum gesture size back.
  • SbBool enableValueChangedCallbacks (SbBool newval) β€” turns value-changed callbacks on or off with newval.
  • const SbMatrix & getMotionMatrix (void) β€” hands you the motion matrix by reference.
  • void addOtherEventCallback (SoDraggerCB *func, void *data=NULL) β€” registers a callback for all the other events.
  • void removeOtherEventCallback (SoDraggerCB *func, void *data=NULL) β€” removes that other-events callback.
  • void registerChildDragger (SoDragger *child) β€” registers child as a child dragger.
  • void unregisterChildDragger (SoDragger *child) β€” un-registers it.
  • void registerChildDraggerMovingIndependently (SoDragger *child) β€” registers child as a child dragger that moves on its own, main character energy πŸ‘‘
  • void unregisterChildDraggerMovingIndependently (SoDragger *child) β€” un-registers that independent mover.
  • SbMatrix getLocalToWorldMatrix (void) β€” the local-to-world matrix.
  • SbMatrix getWorldToLocalMatrix (void) β€” the world-to-local matrix.
  • SbVec3f getLocalStartingPoint (void) β€” where the drag started, in local space.
  • SbVec3f getWorldStartingPoint (void) β€” where the drag started, in world space.
  • void getPartToLocalMatrix (const SbName &partname, SbMatrix &parttolocalmatrix, SbMatrix &localtopartmatrix) β€” gives you both the part-to-local and local-to-part matrices for partname.
  • void transformMatrixLocalToWorld (const SbMatrix &frommatrix, SbMatrix &tomatrix) β€” converts frommatrix from local space into world space, in tomatrix.
  • void transformMatrixWorldToLocal (const SbMatrix &frommatrix, SbMatrix &tomatrix) β€” the reverse trip, world space back to local.
  • void transformMatrixToLocalSpace (const SbMatrix &frommatrix, SbMatrix &tomatrix, const SbName &fromspacepartname) β€” transforms frommatrix into the local space of fromspacepartname.
  • virtual void setMotionMatrix (const SbMatrix &newmatrix) β€” sets the motion matrix to newmatrix.
  • void valueChanged (void) β€” tells the dragger its value changed.
  • const SbMatrix & getStartMotionMatrix (void) β€” the motion matrix from when the drag began.
  • virtual void saveStartParameters (void) β€” stashes the starting parameters away.
  • const SoPath * getPickPath (void) const β€” the pick path.
  • const SoEvent * getEvent (void) const β€” the event.
  • SoPath * createPathToThis (void) β€” builds a path pointing at this thing.
  • const SoPath * getSurrogatePartPickedOwner (void) const β€” the owner of the surrogate part that got picked.
  • const SbName & getSurrogatePartPickedName (void) const β€” the name of that picked surrogate part.
  • const SoPath * getSurrogatePartPickedPath (void) const β€” the path of that picked surrogate part.
  • void setStartingPoint (const SoPickedPoint *newpoint) β€” sets the starting point from a SoPickedPoint.
  • void setStartingPoint (const SbVec3f &newpoint) β€” sets the starting point from a vector.
  • const SbViewVolume & getViewVolume (void) β€” the view volume.
  • void setViewVolume (const SbViewVolume &vol) β€” sets the view volume to vol.
  • const SbViewportRegion & getViewportRegion (void) β€” the viewport region.
  • void setViewportRegion (const SbViewportRegion &reg) β€” sets the viewport region to reg.
  • SoHandleEventAction * getHandleEventAction (void) const β€” the handle-event action.
  • void setHandleEventAction (SoHandleEventAction *newAction) β€” sets the handle-event action to newAction.
  • void setTempPathToThis (const SoPath *somethingclose) β€” sets a temporary path to this, from something close by.
  • virtual void grabEventsSetup (void) β€” the setup for grabbing events.
  • virtual void grabEventsCleanup (void) β€” the cleanup after grabbing events.
  • void workFieldsIntoTransform (SbMatrix &mtx) β€” works the fields into the transform mtx.
  • void setFrontOnProjector (ProjectorFrontSetting newval) β€” sets the front-on-projector setting to newval.
  • ProjectorFrontSetting getFrontOnProjector (void) const β€” reads that setting back.

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

  • SoInteractionKit (void) β€” constructor, standard issue.
  • virtual SbBool setPartAsPath (const SbName &partname, SoPath *path) β€” sets the part called partname to be the given path.
  • virtual SbBool setPartAsDefault (const SbName &partname, SoNode *node, SbBool onlyifdefault=TRUE) β€” sets partname to node as the default, but only if onlyifdefault says so.
  • virtual SbBool setPartAsDefault (const SbName &partname, const SbName &nodename, SbBool onlyifdefault=TRUE) β€” same thing but you name the node with nodename instead.
  • SbBool isPathSurrogateInMySubgraph (const SoPath *path, SoPath *&pathToOwner, SbName &surrogatename, SoPath *&surrogatepath, SbBool fillargs=TRUE) β€” checks whether path is a surrogate inside this subgraph, and fills in the owner path, surrogate name and surrogate path.
  • SbBool isPathSurrogateInMySubgraph (const SoPath *path) β€” the simpler version: just yes or no for path.
  • virtual SbBool setPart (const SbName &partname, SoNode *from) β€” sets the part partname using from.

🧚 Public Member Functions inherited from SoBaseKit 🧚

  • SoBaseKit (void) β€” constructor.
  • virtual SoNode * getPart (const SbName &partname, SbBool makeifneeded) β€” grabs the part partname, making it first if makeifneeded says to.
  • SbString getPartString (const SoBase *part) β€” gives you the part string for part.
  • virtual SoNodeKitPath * createPathToPart (const SbName &partname, SbBool makeifneeded, const SoPath *pathtoextend=NULL) β€” builds a nodekit path to partname, optionally extending pathtoextend.
  • SbBool set (const char *namevaluepairliststring) β€” sets stuff from a namevaluepairliststring.
  • SbBool set (const char *partnamestring, const char *parameterstring) β€” sets a part using a partnamestring and a parameterstring.
  • virtual void doAction (SoAction *action) β€” runs the action.
  • virtual SoChildList * getChildren (void) const β€” the children list.
  • void printDiagram (void) β€” prints the diagram, so cute.
  • void printSubDiagram (const SbName &rootname, int level) β€” prints a sub-diagram starting at rootname, down to level.
  • void printTable (void) β€” prints the table.
  • virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE) β€” adds a write reference to out.
  • SbBool forceChildDrivenWriteRefs (SoOutput *out) β€” forces the child-driven write references.

⭐ Public Member Functions inherited from SoNode ⭐

  • void setOverride (const SbBool state) β€” sets the override flag to state.
  • SbBool isOverride (void) const β€” is it overriding? yes/no.
  • void setNodeType (const NodeType type) β€” sets the node type to type.
  • NodeType getNodeType (void) const β€” reads the node type.
  • virtual SoNode * copy (SbBool copyconnections=FALSE) const β€” copies the node, connections and all if you ask nicely.
  • virtual SbBool affectsState (void) const β€” does this node affect state?
  • virtual void GLRenderBelowPath (SoGLRenderAction *action) β€” GL render, below path flavour.
  • virtual void GLRenderInPath (SoGLRenderAction *action) β€” GL render, in path flavour.
  • virtual void GLRenderOffPath (SoGLRenderAction *action) β€” GL render, off path flavour.
  • virtual void pick (SoPickAction *action) β€” the pick action.
  • virtual void audioRender (SoAudioRenderAction *action) β€” the audio render action πŸ”Š
  • virtual void startNotify (void) β€” kicks off notification.
  • virtual void notify (SoNotList *l) β€” notifies with the list l.
  • uint32_t getNodeId (void) const β€” the node id.
  • virtual void writeInstance (SoOutput *out) β€” writes the instance out to out.
  • virtual SoFieldContainer * copyThroughConnection (void) const β€” copies through the connection.

πŸ“ Public Member Functions inherited from SoFieldContainer πŸ“

  • void setToDefaults (void) β€” resets everything to defaults.
  • SbBool hasDefaultValues (void) const β€” are all the values default? yes/no.
  • SbBool fieldsAreEqual (const SoFieldContainer *container) const β€” compares fields against container.
  • void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE) β€” copies the field values from container.
  • SbBool set (const char *const fielddata) β€” sets from fielddata.
  • void get (SbString &fielddata) β€” gets the field data out into fielddata.
  • virtual int getFields (SoFieldList &l) const β€” gets the fields into the list l.
  • virtual int getAllFields (SoFieldList &l) const β€” gets all the fields into l.
  • virtual SoField * getField (const SbName &name) const β€” grabs the field called name.
  • virtual SoField * getEventIn (const SbName &name) const β€” grabs the event-in called name.
  • virtual SoField * getEventOut (const SbName &name) const β€” grabs the event-out called name.
  • SbBool getFieldName (const SoField *const field, SbName &name) const β€” works out the name of field.
  • SbBool enableNotify (const SbBool flag) β€” toggles notification with flag.
  • SbBool isNotifyEnabled (void) const β€” is notification enabled?
  • SbBool set (const char *fielddata, SoInput *input) β€” sets from fielddata, reading through input.
  • void get (SbString &fielddata, SoOutput *out) β€” gets the field data out, writing through out.
  • virtual SbBool validateNewFieldValue (SoField *field, void *newval) β€” checks whether newval is valid for field.
  • SbBool getIsBuiltIn (void) const β€” is it built in?
  • virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) const β€” reports the managed and unmanaged memory sizes of the fields.
  • void setUserData (void *userdata) const β€” attaches userdata to this.
  • void * getUserData (void) const β€” gets that userdata back out.

🌈 Public Member Functions inherited from SoBase 🌈

  • void ref (void) const β€” bumps the reference count up.
  • void unref (void) const β€” drops the reference count down.
  • void unrefNoDelete (void) const β€” drops the count but does not delete. sneaky but valid.
  • int32_t getRefCount (void) const β€” what's the ref count rn?
  • void touch (void) β€” touches the node, so everyone knows something changed ✨
  • SbBool isOfType (SoType type) const β€” is this thing of type type?
  • virtual SbName getName (void) const β€” the name.
  • virtual void setName (const SbName &newname) β€” renames it to newname.
  • void addAuditor (void *const auditor, const SoNotRec::Type type) β€” adds an auditor of the given type.
  • void removeAuditor (void *const auditor, const SoNotRec::Type type) β€” removes that auditor.
  • const SoAuditorList & getAuditors (void) const β€” the whole auditor list.
  • SbBool shouldWrite (void) β€” should this be written out?
  • void assertAlive (void) const β€” asserts that this object is alive. don't skip this one bestie πŸ’€

πŸ‘‘ Static Public Member Functions πŸ‘‘

  • static SoType getClassTypeId (void) β€” the class-wide SoType id.
  • static const SoNodekitCatalog * getClassNodekitCatalog (void) β€” the class-wide nodekit catalog.
  • static void initClass (void) β€” initializes the class. call it once, love it forever.

🫢 Static Public Member Functions inherited from SoDragger 🫢

  • static SoType getClassTypeId (void) β€” the class type id.
  • static const SoNodekitCatalog * getClassNodekitCatalog (void) β€” the class nodekit catalog.
  • static void setMinScale (float newminscale) β€” sets the minimum scale to newminscale.
  • static float getMinScale (void) β€” reads the minimum scale back.
  • static void workValuesIntoTransform (SbMatrix &mtx, const SbVec3f *translationptr, const SbRotation *rotationptr, const SbVec3f *scalefactorptr, const SbRotation *scaleorientationptr, const SbVec3f *centerptr) β€” works translation, rotation, scale factor, scale orientation and center all into the transform mtx.
  • static void getTransformFast (SbMatrix &mtx, SbVec3f &translation, SbRotation &rotation, SbVec3f &scalefactor, SbRotation &scaleorientation, const SbVec3f &center) β€” the fast transform extraction, with a center.
  • static void getTransformFast (SbMatrix &mtx, SbVec3f &translation, SbRotation &rotation, SbVec3f &scalefactor, SbRotation &scaleorientation) β€” same, no center.
  • static SbMatrix appendTranslation (const SbMatrix &mtx, const SbVec3f &translation, const SbMatrix *conversion=NULL) β€” appends a translation onto mtx, with optional conversion.
  • static SbMatrix appendScale (const SbMatrix &mtx, const SbVec3f &scale, const SbVec3f &scalecenter, const SbMatrix *conversion=NULL) β€” appends a scale around scalecenter.
  • static SbMatrix appendRotation (const SbMatrix &mtx, const SbRotation &rot, const SbVec3f &rotcenter, const SbMatrix *conversion=NULL) β€” appends a rotation rot around rotcenter.
  • static void initClass (void) β€” initializes the class.
  • static void initClasses (void) β€” initializes all the classes. overachiever behavior πŸ’…

πŸ’– Static Public Member Functions inherited from SoInteractionKit πŸ’–

  • static SoType getClassTypeId (void) β€” class type id.
  • static const SoNodekitCatalog * getClassNodekitCatalog (void) β€” class nodekit catalog.
  • static void initClass (void) β€” initializes the class.
  • static void setSwitchValue (SoNode *node, const int newVal) β€” sets the switch value on node to newVal.

πŸ¦‹ Static Public Member Functions inherited from SoBaseKit πŸ¦‹

  • static SoType getClassTypeId (void) β€” class type id.
  • static void initClass (void) β€” initializes the class.
  • static const SoNodekitCatalog * getClassNodekitCatalog (void) β€” class nodekit catalog.
  • static SbBool isSearchingChildren (void) β€” is it searching children?
  • static void setSearchingChildren (const SbBool newval) β€” sets searching-children to newval.

🌟 Static Public Member Functions inherited from SoNode 🌟

  • static uint32_t getCompatibilityTypes (const SoType &nodetype) β€” the compatibility types for nodetype.
  • static SoType getClassTypeId (void) β€” class type id.
  • static SoNode * getByName (const SbName &name) β€” finds a node by name.
  • static int getByName (const SbName &name, SoNodeList &l) β€” finds nodes by name and drops them into l.
  • static void initClass (void) β€” initializes the class.
  • static void initClasses (void) β€” initializes the classes.
  • static uint32_t getNextNodeId (void) β€” the next node id.
  • static int getActionMethodIndex (const SoType type) β€” the action method index for type.
  • static void getBoundingBoxS (SoAction *action, SoNode *node) β€” the static bounding-box entry point.
  • static void GLRenderS (SoAction *action, SoNode *node) β€” the static GL render entry point.
  • static void callbackS (SoAction *action, SoNode *node) β€” the static callback entry point.
  • static void getMatrixS (SoAction *action, SoNode *node) β€” the static get-matrix entry point.
  • static void handleEventS (SoAction *action, SoNode *node) β€” the static handle-event entry point.
  • static void pickS (SoAction *action, SoNode *node) β€” the static pick entry point.
  • static void rayPickS (SoAction *action, SoNode *node) β€” the static ray-pick entry point.
  • static void searchS (SoAction *action, SoNode *node) β€” the static search entry point.
  • static void writeS (SoAction *action, SoNode *node) β€” the static write entry point.
  • static void audioRenderS (SoAction *action, SoNode *node) β€” the static audio render entry point πŸ”Š
  • static void getPrimitiveCountS (SoAction *action, SoNode *node) β€” the static primitive-count entry point.

✨ Static Public Member Functions inherited from SoFieldContainer ✨

bestie these are the ones you get handed down, no need to write them yourself:

  • static void initClass (void) β€” sets the class up so the type system knows it exists πŸ’…
  • static SoType getClassTypeId (void) β€” hands you the SoType for this class
  • static void cleanupClass (void) β€” tears down whatever initClass built
  • static void initCopyDict (void) β€” gets the copy dictionary ready for business
  • static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy) β€” registers an originalβ†’copy pairing in that dict
  • static SoFieldContainer * checkCopy (const SoFieldContainer *orig) β€” peeks at the dict to see if orig has a copy already
  • static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections) β€” same energy, but you also get to say whether connections come along
  • static void copyDone (void) β€” okay we're done copying, wrap it up πŸŽ€

✨ Static Public Member Functions inherited from SoBase ✨

the SoBase starter pack, fr fr:

  • static void initClass (void) β€” class init, classic
  • static SoType getClassTypeId (void) β€” the type id, as always
  • static void addName (SoBase *const base, const char *const name) β€” gives base a name so you can find it later
  • static void removeName (SoBase *const base, const char *const name) β€” takes that name away again πŸ™ˆ
  • static void incrementCurrentWriteCounter (void) β€” bumps the write counter up
  • static void decrementCurrentWriteCounter (void) β€” bumps it back down
  • static SoBase * getNamedBase (const SbName &name, SoType type) β€” looks up a named base of the type you asked for
  • static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type) β€” the plural version, drops them all into baselist
  • static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype) β€” reads a base off the input, returns whether it worked
  • static void setInstancePrefix (const SbString &c) β€” sets the prefix used for instances
  • static void setTraceRefs (SbBool trace) β€” turns reference tracing on or off
  • static SbBool getTraceRefs (void) β€” tells you if reference tracing is on
  • static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname) β€” wires a route up from one node's field to another's
  • static SbBool readRoute (SoInput *input) β€” reads a route in from the input

πŸ’– Public Attributes πŸ’–

  • SoSFVec3f translation β€” the translation, as a vec3f, obviously πŸ’…
  • SoSFVec3f scaleFactor β€” the scale factor, also a vec3f

inherited from SoDragger

  • SoSFBool isActive β€” are we active right now or nah

inherited from SoInteractionKit

  • SoSFEnum renderCaching β€” caching setting for rendering
  • SoSFEnum boundingBoxCaching β€” caching setting for bounding boxes
  • SoSFEnum renderCulling β€” culling setting for rendering
  • SoSFEnum pickCulling β€” culling setting for picking

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

for the subclass girlies only:

  • virtual const SoFieldData * getFieldData (void) const β€” hands back the field data
  • virtual ~SoTabBoxDragger (void) β€” the destructor, it's virtual, it's protected, it's doing its thing
  • virtual SbBool setUpConnections (SbBool onoff, SbBool doitalways=FALSE) β€” hooks up (or unhooks) the internal connections; pass doitalways=TRUE if you want it done regardless
  • virtual void setDefaultOnNonWritingFields (void) β€” sets the defaults on the fields that don't get written out

inherited from SoDragger

  • SoDragger (void) β€” constructor
  • virtual ~SoDragger (void) β€” destructor
  • SbVec2f getNormalizedLocaterPosition (void) β€” the locater position, but normalized
  • SbVec2s getLocaterPosition (void) β€” where the locater is, raw
  • SbVec2s getStartLocaterPosition (void) const β€” where the locater was when it all started
  • void setStartLocaterPosition (SbVec2s p) β€” set that starting position to p
  • SbBool isAdequateConstraintMotion (void) β€” is this motion good enough for the constraint
  • virtual SbBool shouldGrabBasedOnSurrogate (const SoPath *pickpath, const SoPath *surrogatepath) β€” decides whether a grab should happen based on the surrogate path
  • void setCameraInfo (SoAction *action) β€” pulls camera info out of the action
  • virtual void handleEvent (SoHandleEventAction *ha) β€” handles the event, as one does
  • void transferMotion (SoDragger *child) β€” passes motion along to the child dragger
  • void setIgnoreInBbox (SbBool newval) β€” should this be ignored when computing bounding boxes
  • SbBool isIgnoreInBbox (void) β€” is it being ignored in the bbox or not
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action) β€” fills in the bounding box
  • void setActiveChildDragger (SoDragger *newchilddragger) β€” sets which child dragger is the active one
  • SoDragger * getActiveChildDragger (void) const β€” which child dragger is active rn
  • void updateDraggerCache (const SoPath *path) β€” refreshes the dragger cache for that path

inherited from SoInteractionKit

  • virtual ~SoInteractionKit () β€” destructor szn
  • virtual void copyContents (const SoFieldContainer *fromFC, SbBool copyConnections) β€” copies the contents over from fromFC, connections optional
  • virtual SbBool setPart (const int partNum, SoNode *node) β€” assigns node to part number partNum
  • virtual SbBool readInstance (SoInput *in, unsigned short flags) β€” reads an instance off the input
  • virtual SbBool setAnyPartAsDefault (const SbName &partname, SoNode *node, SbBool anypart=TRUE, SbBool onlyifdefault=TRUE) β€” sets a part as the default, with anypart and onlyifdefault toggles
  • virtual SbBool setAnyPartAsDefault (const SbName &partname, const SbName &nodename, SbBool anypart=TRUE, SbBool onlyifdefault=TRUE) β€” same deal but you name the node instead
  • SbBool setAnySurrogatePath (const SbName &name, SoPath *path, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE) β€” sets a surrogate path, with optional leaf and public checks
  • void connectSeparatorFields (SoSeparator *dest, SbBool onOff) β€” wires up the separator fields on dest, on or off

inherited from SoBaseKit

  • virtual ~SoBaseKit () β€” destructor again, it's giving consistency
  • virtual SoNode * addToCopyDict (void) const β€” adds this node to the copy dictionary
  • SoGroup * getContainerNode (const SbName &listname, SbBool makeifneeded=TRUE) β€” grabs the container node for listname, making it if needed
  • virtual SoNode * getAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE) β€” gets any part by name, with all the little toggles
  • virtual SoNodeKitPath * createPathToAnyPart (const SbName &partname, SbBool makeifneeded, SbBool leafcheck=FALSE, SbBool publiccheck=FALSE, const SoPath *pathtoextend=NULL) β€” builds a path to any part, optionally extending an existing pathtoextend
  • virtual SbBool setAnyPart (const SbName &partname, SoNode *from, SbBool anypart=TRUE) β€” sets any part from a node
  • void createNodekitPartsList (void) β€” builds the nodekit parts list
  • void createFieldList (void) β€” builds the field list
  • virtual void createDefaultParts (void) β€” creates the default parts 🫢
  • const SoNodekitParts * getNodekitPartsList (void) const β€” returns the nodekit parts list
  • const SbList< SoSFNode * > & getCatalogInstances (void) const β€” returns the catalog instances
  • void catalogError (void) β€” throws a catalog error
  • void countMyFields (SoOutput *out) β€” counts the fields on the way out

inherited from SoNode

  • SoNode (void) β€” constructor
  • virtual ~SoNode (void) β€” destructor

inherited from SoFieldContainer

  • SoFieldContainer (void) β€” constructor
  • virtual ~SoFieldContainer (void) β€” destructor

inherited from SoBase

  • SoBase (void) β€” constructor
  • virtual ~SoBase () β€” destructor
  • virtual void destroy (void) β€” destroys the thing πŸ’€
  • SbBool hasMultipleWriteRefs (void) const β€” does it have more than one write ref
  • SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const β€” writes the header, tells it whether it's a group and whether it's an engine
  • void writeFooter (SoOutput *out) const β€” writes the footer to match
  • virtual const char * getFileFormatName (void) const β€” the name of the file format

🌟 Static Protected Member Functions 🌟

  • static const SoFieldData ** getFieldDataPtr (void) β€” a pointer to the field data pointer, iconic
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void) β€” same energy, but for the nodekit catalog
  • static void invalidateSurroundScaleCB (void *f, SoDragger *d) β€” callback that invalidates the surround scale
  • static void fieldSensorCB (void *f, SoSensor *s) β€” the field sensor callback
  • static void valueChangedCB (void *f, SoDragger *d) β€” the value-changed callback

inherited from SoDragger

  • static const SoFieldData ** getFieldDataPtr (void) β€” field data pointer pointer
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void) β€” nodekit catalog pointer pointer
  • static void childTransferMotionAndValueChangedCB (void *, SoDragger *) β€” when a child transfers motion and the value changes
  • static void childValueChangedCB (void *, SoDragger *) β€” when a child's value changes
  • static void childStartCB (void *, SoDragger *) β€” when a child starts
  • static void childMotionCB (void *, SoDragger *) β€” when a child moves
  • static void childFinishCB (void *, SoDragger *) β€” when a child finishes
  • static void childOtherEventCB (void *, SoDragger *) β€” when a child gets literally any other event

inherited from SoInteractionKit

  • static const SoFieldData ** getFieldDataPtr (void) β€” yes, again
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void) β€” and again
  • static void readDefaultParts (const char *fileName, const char defaultBuffer[], int defBufSize) β€” reads the default parts from fileName out of defaultBuffer of size defBufSize
  • static void fieldSensorCB (void *, SoSensor *) β€” the field sensor callback

inherited from SoBaseKit

  • static const SoFieldData ** getFieldDataPtr (void) β€” field data pointer pointer, the sequel
  • static const SoNodekitCatalog ** getClassNodekitCatalogPtr (void) β€” nodekit catalog pointer pointer, the sequel

inherited from SoNode

  • static const SoFieldData ** getFieldDataPtr (void) β€” ok you get it by now πŸ’…
  • static void setNextActionMethodIndex (int index) β€” sets the next action method index to index
  • static int getNextActionMethodIndex (void) β€” reads the next action method index
  • static void incNextActionMethodIndex (void) β€” bumps the next action method index up
  • static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask) β€” sets compatibility types for nodetype with a bitmask

inherited from SoBase

  • static uint32_t getCurrentWriteCounter (void) β€” the current write counter value
  • static void staticDataLock (void) β€” locks the static data
  • static void staticDataUnlock (void) β€” unlocks it, we're free πŸ¦‹

🧚 Protected Attributes 🧚

these are the internal parts, lowkey the whole kit:

  • SoSFNode boxGeom β€” the box geometry
  • SoSFNode surroundScale β€” the surround scale
  • SoSFNode tabPlane1 β€” tab plane number one
  • SoSFNode tabPlane1Sep β€” its separator
  • SoSFNode tabPlane1Xf β€” its transform
  • SoSFNode tabPlane2 β€” tab plane number two
  • SoSFNode tabPlane2Sep β€” its separator
  • SoSFNode tabPlane2Xf β€” its transform
  • SoSFNode tabPlane3 β€” tab plane number three
  • SoSFNode tabPlane3Sep β€” its separator
  • SoSFNode tabPlane3Xf β€” its transform
  • SoSFNode tabPlane4 β€” tab plane number four
  • SoSFNode tabPlane4Sep β€” its separator
  • SoSFNode tabPlane4Xf β€” its transform
  • SoSFNode tabPlane5 β€” tab plane number five
  • SoSFNode tabPlane5Sep β€” its separator
  • SoSFNode tabPlane5Xf β€” its transform
  • SoSFNode tabPlane6 β€” tab plane number six
  • SoSFNode tabPlane6Sep β€” its separator
  • SoSFNode tabPlane6Xf β€” its transform
  • SoFieldSensor * translFieldSensor β€” the sensor watching the translation field
  • SoFieldSensor * scaleFieldSensor β€” the sensor watching the scale field

inherited from SoDragger

  • SoSFNode motionMatrix β€” the motion matrix ✨

inherited from SoInteractionKit

  • SoSFNode geomSeparator β€” the geometry separator
  • SoSFNode topSeparator β€” the top separator
  • SoFieldSensor * fieldSensor β€” the field sensor
  • SoSeparator * oldTopSep β€” the previous top separator, kept around

inherited from SoBaseKit

  • SoSFNode callbackList β€” the callback list
  • SoChildList * children β€” the children
  • SbBool connectionsSetUp β€” have the connections been set up yet

inherited from SoNode

  • uint32_t uniqueId β€” every node gets a unique id, periodt

inherited from SoFieldContainer

  • SbBool isBuiltIn β€” is it built in or not

🌈 Additional Inherited Members 🌈

Public Types inherited from SoDragger

  • enum ProjectorFrontSetting { FRONT, BACK, USE_PICK } β€” where the projector faces: front, back, or just use whatever the pick says

Public Types inherited from SoInteractionKit

  • enum CacheEnabled { OFF, ON, AUTO } β€” caching: off, on, or auto, the holy trinity

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 } β€” every node type bit, all eighteen of them, no cap πŸ’―

Protected Types inherited from SoBase

  • enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 } β€” two flags, engine or group

Static Protected Attributes inherited from SoNode

  • static uint32_t nextUniqueId = 1 β€” the next unique id starts at 1
  • static int nextActionMethodIndex = 0 β€” and the next action method index starts at 0

πŸ‘‘ Detailed Description πŸ‘‘

okay so the SoTabBoxDragger wraps a box around geometry you can then translate and scale. it's giving hands-on, it's giving direct manipulation, and honestly? iconic.

Here's how the dragger looks with its default geometry in the inactive state:

This dragger lets the end-user do translation and non-uniform scaling of geometry with an easy to understand interface.

Click and drag any side of the box to translate β€” and hold down a SHIFT key to lock it to one axis πŸ”’. Click and drag any of the tab markers in the corners to scale. The way the different tabs influence the scale operation should be straight-forward and intuitive to the end-user.

The SoTabBoxDragger is a composite dragger, implemented with 6 SoTabPlaneDragger instances set up as the sides of a box. six of them. one per side. it's a whole squad 🫢

πŸŽ€ CONSTRUCTOR & DESTRUCTOR DOCUMENTATION πŸŽ€

πŸ’– SoTabBoxDragger::SoTabBoxDragger (void)

okay bestie, this is the default constructor and she is booked and busy β€” she sets up the dragger nodekit catalog with all the interaction and feedback geometry. πŸ’…

Here's the node kit structure, and the entries that are new versus the parent class are marked with an arrow prefix, so keep an eye out:

CLASS SoTabBoxDragger
-->"this"
      "callbackList"
      "topSeparator"
         "motionMatrix"
-->      "surroundScale"
-->      "tabPlane1Sep"
-->         "tabPlane1Xf"
-->         "tabPlane1"
-->      "tabPlane2Sep"
-->         "tabPlane2Xf"
-->         "tabPlane2"
-->      "tabPlane3Sep"
-->         "tabPlane3Xf"
-->         "tabPlane3"
-->      "tabPlane4Sep"
-->         "tabPlane4Xf"
-->         "tabPlane4"
-->      "tabPlane5Sep"
-->         "tabPlane5Xf"
-->         "tabPlane5"
-->      "tabPlane6Sep"
-->         "tabPlane6Xf"
-->         "tabPlane6"
         "geomSeparator"
-->         "boxGeom"

(if you wanna know how that output formatting works, peek at SoBaseKit::printDiagram(), iykyk ✨)

and now the detailed info on catalog parts, because we are nothing if not thorough:

CLASS SoTabBoxDragger
PVT   "this",  SoTabBoxDragger  ---
      "callbackList",  SoNodeKitListPart [ SoCallback, SoEventCallback ]
PVT   "topSeparator",  SoSeparator  ---
PVT   "motionMatrix",  SoMatrixTransform  ---
      "surroundScale",  SoSurroundScale  ---
PVT   "tabPlane1Sep",  SoSeparator  ---
PVT   "tabPlane1Xf",  SoTransform  ---
      "tabPlane1",  SoTabPlaneDragger  ---
PVT   "tabPlane2Sep",  SoSeparator  ---
PVT   "tabPlane2Xf",  SoTransform  ---
      "tabPlane2",  SoTabPlaneDragger  ---
PVT   "tabPlane3Sep",  SoSeparator  ---
PVT   "tabPlane3Xf",  SoTransform  ---
      "tabPlane3",  SoTabPlaneDragger  ---
PVT   "tabPlane4Sep",  SoSeparator  ---
PVT   "tabPlane4Xf",  SoTransform  ---
      "tabPlane4",  SoTabPlaneDragger  ---
PVT   "tabPlane5Sep",  SoSeparator  ---
PVT   "tabPlane5Xf",  SoTransform  ---
      "tabPlane5",  SoTabPlaneDragger  ---
PVT   "tabPlane6Sep",  SoSeparator  ---
PVT   "tabPlane6Xf",  SoTransform  ---
      "tabPlane6",  SoTabPlaneDragger  ---
PVT   "geomSeparator",  SoSeparator  ---
      "boxGeom",  SoSeparator  ---

(and for that output formatting, go say hi to SoBaseKit::printTable() 🌸)


πŸ¦‹ SoTabBoxDragger::~SoTabBoxDragger (void) [protected], [virtual]

The protected destructor, bestie. 🫢

and no, you don't need to stress about cleanup β€” dragger classes are derived from SoBase, so they're reference counted and get automatically destroyed when their reference count hits 0. she cleans up after herself, periodt. πŸ’…

✨ MEMBER FUNCTION DOCUMENTATION ✨

πŸ‘‘ SoType SoTabBoxDragger::getTypeId (void) const [virtual]

Returns the type identification of an object derived from a class inheriting SoBase. This is what powers run-time type checking and "downward" casting, fr fr.

Usage example, so you can see it in the wild:

void foo(SoNode * node)
{
  if (node->getTypeId() == SoFile::getClassTypeId()) {
    SoFile * filenode = (SoFile *)node;  // safe downward cast, knows the type
  }
}

Now listen β€” for any application programmer out there wanting to extend the library with new nodes, engines, nodekits, draggers or whatever else: this method needs to be overridden in all subclasses. That's typically done as part of setting up the full type system for your extension classes, which usually happens by using the pre-defined macros available through, for instance, Inventor/nodes/SoSubNode.h (that's SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on and so forth. 🌈

For more info on writing Coin extensions, go check the class documentation of the toplevel superclasses for the various class groups.

Reimplemented from SoDragger.


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

Hands you a pointer to the class-wide field data storage object for this instance. And if there are no fields present? It returns NULL. that's it, that's the whole vibe. πŸ™ˆ

Reimplemented from SoDragger.


🧚 const SoNodekitCatalog * SoTabBoxDragger::getNodekitCatalog (void) const [virtual]

Returns the nodekit catalog which defines the layout of this class' kit. she's the blueprint bestie. πŸ’œ

Reimplemented from SoDragger.


⭐ void SoTabBoxDragger::adjustScaleTabSize (void)

Signals the dragger to recalculate the size of its tabs. iconic behavior.

Literally, it just calls SoTabPlaneDragger::adjustScaleTabSize() for all 6 planes this dragger consists of. six for six, no skips. πŸ”₯


πŸŽ€ SbBool SoTabBoxDragger::setUpConnections (SbBool onoff, SbBool doitalways = FALSE) [protected], [virtual]

Sets up all internal connections for instances of this class.

heads up: this method will usually not be of interest to the application programmer β€” unless you wanna extend the library with new custom nodekits or dragger classes. If that's you, go read the SoBaseKit class documentation. πŸ“š

Reimplemented from SoInteractionKit.


πŸ’… void SoTabBoxDragger::setDefaultOnNonWritingFields (void) [protected], [virtual]

quick note bestie: this method is unlikely to be of interest to the application programmer who doesn't want to extend the library with new custom nodekits or draggers. but if you are writing extensions, the info lives in the SoBaseKit class documentation. 🫢

This is a virtual method, and the code in it should call SoField::setDefault() with argument TRUE on part fields that should not be written upon scenegraph export operations.

This is typically done when:

  1. field value is NULL and part is NULL by default
  2. it is a leaf SoGroup or SoSeparator node with no children
  3. it is a leaf listpart with no children and an SoGroup or SoSeparator container
  4. it is a non-leaf part and it's of SoGroup type and all fields are at their default values

Subclasses should usually override this to do additional settings for new member fields. And from the subclass β€” do not forget to call "upwards" to your superclass' setDefaultOnNonWritingFields() method. πŸ™

Reimplemented from SoDragger.


πŸ’– void SoTabBoxDragger::invalidateSurroundScaleCB (void * d, SoDragger * d) [static], [protected]

surroundScale is invalidated every time a child dragger is activated/deactivated using this callback. she stays in her lane and stays fresh. ✨


πŸ”₯ void SoTabBoxDragger::fieldSensorCB (void * d, SoSensor * s) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. (i.e. not your problem, bestie πŸ’€)


🌈 void SoTabBoxDragger::valueChangedCB (void * f, SoDragger * d) [static], [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. (same energy, different function πŸ¦‹)


πŸ“ MEMBER DATA DOCUMENTATION πŸ“

πŸ’œ SoSFVec3f SoTabBoxDragger::translation

Continuously updated to contain the current translation from the dragger's local origo position. she's always keeping you posted. πŸ“


🧚 SoSFVec3f SoTabBoxDragger::scaleFactor

Continuously updated to contain the current vector of scaling along the X, Y and Z axes. all three axes, accounted for. πŸ‘‘


πŸŽ€ SoFieldSensor* SoTabBoxDragger::translFieldSensor [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. πŸ™ˆ


🌸 SoFieldSensor* SoTabBoxDragger::scaleFieldSensor [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. πŸ’…


⭐ AUTHOR ⭐

Generated automatically by Doxygen for Coin from the source code. (yes, the docs wrote themselves, slay πŸ€–βœ¨)


and that's a wrap on the whole page, bestie!! 🫢 this one came from the Coin source, Version 3.1.3, and she's filed under SoTabBoxDragger(3). go forth and drag those tabs, you absolute icon. πŸ’–πŸŒˆπŸ‘‘

πŸ“¦ where this page comes from