SoMarkerSet(3)

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

πŸŽ€ NAME πŸŽ€

SoMarkerSet β€” bestie, this is the Coin class that displays a set of 2D bitmap markers in 3D. That's it. That's the whole job. Little 2D sprites, vibing in a 3D scene. πŸ’–

(Manual page: SoMarkerSet(3), Coin manual, SoMarkerSet(3) β€” yes it says its own name three times, it's an icon like that. πŸ’…)


✨ SYNOPSIS ✨

#include <Inventor/nodes/SoMarkerSet.h>

Inherits SoPointSet. So like… it IS a point set, but make it fashion. πŸ¦‹


🌸 Public Types 🌸

enum MarkerType

Every marker shape you could ever want, in three sizes (5Γ—5, 7Γ—7, 9Γ—9), line and filled versions, no cap:

enum MarkerType { NONE = -1, CROSS_5_5, PLUS_5_5, MINUS_5_5, SLASH_5_5,
    BACKSLASH_5_5, BAR_5_5, STAR_5_5, Y_5_5, LIGHTNING_5_5, WELL_5_5,
    CIRCLE_LINE_5_5, SQUARE_LINE_5_5, DIAMOND_LINE_5_5,
    TRIANGLE_LINE_5_5, RHOMBUS_LINE_5_5, HOURGLASS_LINE_5_5,
    SATELLITE_LINE_5_5, PINE_TREE_LINE_5_5, CAUTION_LINE_5_5,
    SHIP_LINE_5_5, CIRCLE_FILLED_5_5, SQUARE_FILLED_5_5,
    DIAMOND_FILLED_5_5, TRIANGLE_FILLED_5_5, RHOMBUS_FILLED_5_5,
    HOURGLASS_FILLED_5_5, SATELLITE_FILLED_5_5, PINE_TREE_FILLED_5_5,
    CAUTION_FILLED_5_5, SHIP_FILLED_5_5, CROSS_7_7, PLUS_7_7, MINUS_7_7,
    SLASH_7_7, BACKSLASH_7_7, BAR_7_7, STAR_7_7, Y_7_7, LIGHTNING_7_7,
    WELL_7_7, CIRCLE_LINE_7_7, SQUARE_LINE_7_7, DIAMOND_LINE_7_7,
    TRIANGLE_LINE_7_7, RHOMBUS_LINE_7_7, HOURGLASS_LINE_7_7,
    SATELLITE_LINE_7_7, PINE_TREE_LINE_7_7, CAUTION_LINE_7_7,
    SHIP_LINE_7_7, CIRCLE_FILLED_7_7, SQUARE_FILLED_7_7,
    DIAMOND_FILLED_7_7, TRIANGLE_FILLED_7_7, RHOMBUS_FILLED_7_7,
    HOURGLASS_FILLED_7_7, SATELLITE_FILLED_7_7, PINE_TREE_FILLED_7_7,
    CAUTION_FILLED_7_7, SHIP_FILLED_7_7, CROSS_9_9, PLUS_9_9, MINUS_9_9,
    SLASH_9_9, BACKSLASH_9_9, BAR_9_9, STAR_9_9, Y_9_9, LIGHTNING_9_9,
    WELL_9_9, CIRCLE_LINE_9_9, SQUARE_LINE_9_9, DIAMOND_LINE_9_9,
    TRIANGLE_LINE_9_9, RHOMBUS_LINE_9_9, HOURGLASS_LINE_9_9,
    SATELLITE_LINE_9_9, PINE_TREE_LINE_9_9, CAUTION_LINE_9_9,
    SHIP_LINE_9_9, CIRCLE_FILLED_9_9, SQUARE_FILLED_9_9,
    DIAMOND_FILLED_9_9, TRIANGLE_FILLED_9_9, RHOMBUS_FILLED_9_9,
    HOURGLASS_FILLED_9_9, SATELLITE_FILLED_9_9, PINE_TREE_FILLED_9_9,
    CAUTION_FILLED_9_9, SHIP_FILLED_9_9, NUM_MARKERS }

NONE = -1 is the "no thoughts, head empty" option, and NUM_MARKERS is the lil sentinel at the end counting them all. ✨


πŸ’œ Public Types inherited from SoShape πŸ’œ

enum TriangleShape

enum TriangleShape { TRIANGLE_STRIP, TRIANGLE_FAN, TRIANGLES, POLYGON,
    QUADS, QUAD_STRIP, POINTS, LINES, LINE_STRIP }

πŸ’œ Public Types inherited from SoNode πŸ’œ

enum NodeType

All the flavors of node-ness, with their hex values, no edits, no cuts:

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 }

🫢 Public Member Functions 🫢

  • virtual SoType getTypeId (void) const β€” the whole "who am I, type-wise" situation.
  • SoMarkerSet (void) β€” constructor, the classic. Makes a new one.
  • virtual void GLRender (SoGLRenderAction *action) β€” does the actual drawing when it's time to render, and it's handing the action over to do it.
  • virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action) β€” reports how many primitives are in here, for the counting girlies.

🫢 Public Member Functions inherited from SoPointSet 🫢

  • SoPointSet (void)
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action)

🫢 Public Member Functions inherited from SoVertexShape 🫢

  • virtual void notify (SoNotList *nl)
  • virtual void write (SoWriteAction *action)

🫢 Public Member Functions inherited from SoShape 🫢

  • virtual SbBool affectsState (void) const
  • virtual void rayPick (SoRayPickAction *action)
  • virtual void callback (SoCallbackAction *action)
  • const SoBoundingBoxCache * getBoundingBoxCache (void) const

🫢 Public Member Functions inherited from SoNode 🫢

  • 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 void doAction (SoAction *action)
  • virtual void GLRenderBelowPath (SoGLRenderAction *action)
  • virtual void GLRenderInPath (SoGLRenderAction *action)
  • virtual void GLRenderOffPath (SoGLRenderAction *action)
  • virtual void getMatrix (SoGetMatrixAction *action)
  • virtual void handleEvent (SoHandleEventAction *action)
  • virtual void pick (SoPickAction *action)
  • virtual void search (SoSearchAction *action)
  • virtual void audioRender (SoAudioRenderAction *action)
  • virtual void grabEventsSetup (void)
  • virtual void grabEventsCleanup (void)
  • virtual void startNotify (void)
  • 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 🫢

  • 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 🫢

  • 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. (Translation: is this thing type, or does it descend from type? Yes? TRUE. πŸ’…)
  • 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)
  • static void initClass (void)
  • static int getNumDefinedMarkers (void) β€” how many markers exist rn.
  • static void addMarker (int idx, const SbVec2s &size, const unsigned char *bytes, SbBool isLSBFirst=TRUE, SbBool isUpToDown=TRUE) β€” slide a new marker into slot idx. Note the two defaults, both TRUE.
  • static SbBool getMarker (int idx, SbVec2s &size, const unsigned char *&bytes, SbBool &isLSBFirst) β€” pull the marker at idx back out.
  • static SbBool removeMarker (int idx) β€” yeet the marker at idx.
  • static SbBool isMarkerBitSet (int idx, int bitNumber) β€” is that one specific bit set in that marker? πŸ’€

⭐ Static Public Member Functions inherited from SoPointSet ⭐

  • static SoType getClassTypeId (void)
  • static void initClass (void)

⭐ Static Public Member Functions inherited from SoNonIndexedShape ⭐

  • static SoType getClassTypeId (void)
  • static void initClass (void)

⭐ Static Public Member Functions inherited from SoVertexShape ⭐

  • static SoType getClassTypeId (void)
  • static void initClass (void)

⭐ Static Public Member Functions inherited from SoShape ⭐

  • 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. (It's giving "getting everyone on the same page" energy. 🫢)
  • static void getScreenSize (SoState *const state, const SbBox3f &boundingbox, SbVec2s &rectsize)
  • static float getDecimatedComplexity (SoState *state, float complexity)

⭐ 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)

πŸ‘‘ Public Attributes πŸ‘‘

  • SoMFInt32 markerIndex β€” the field where you tell it which markers to draw. Main character field fr fr. πŸ’–

✨ Public Attributes inherited from SoPointSet ✨

bestie these are the fields you inherit just by being a SoPointSet-adjacent queen πŸ’–

  • SoSFInt32 numPoints β€” the field that holds how many points are in your set. iconic.

🌸 Public Attributes inherited from SoNonIndexedShape 🌸

  • SoSFInt32 startIndex β€” the field that says where in the coordinate list to start. lowkey important.

πŸ¦‹ Public Attributes inherited from SoVertexShape πŸ¦‹

  • SoSFNode vertexProperty β€” the field that can hold a node supplying your vertex data. main character energy.

πŸ’… PROTECTED MEMBER FUNCTIONS πŸ’…

these are the ones you get to poke at if you're subclassing, no cap πŸ”’

  • virtual const SoFieldData * getFieldData (void) const β€” hands you the field data table. it's giving "here's the receipts".
  • virtual ~SoMarkerSet () β€” the destructor. protected, so only the family gets to call it. πŸŽ€

πŸ”₯ Protected Member Functions inherited from SoPointSet πŸ”₯

  • virtual ~SoPointSet () β€” destructor, protected vibes.
  • virtual void generatePrimitives (SoAction *action) β€” makes the primitives for rendering/picking.
  • virtual void computeBBox (SoAction *action, SbBox3f &box, SbVec3f &center) β€” works out the bounding box and its center.
  • virtual SbBool generateDefaultNormals (SoState *, SoNormalCache *nc) β€” generates default normals, caching them.
  • virtual SbBool generateDefaultNormals (SoState *state, SoNormalBundle *bundle) β€” same energy, but with a normal bundle.

🧚 Protected Member Functions inherited from SoNonIndexedShape 🧚

  • SoNonIndexedShape (void) β€” constructor, protected.
  • virtual ~SoNonIndexedShape () β€” destructor, protected.
  • void computeCoordBBox (SoAction *action, int numVertices, SbBox3f &box, SbVec3f &center) β€” computes the bounding box from a bunch of coordinates.
  • void fixNumVerticesPointers (SoState *state, const int32_t *&start, const int32_t *&end, int32_t *dummyarray) const β€” fixes up the vertex pointers so nothing goes feral. πŸ’€

⭐ Protected Member Functions inherited from SoVertexShape ⭐

  • SoVertexShape (void) β€” constructor.
  • virtual ~SoVertexShape () β€” destructor.
  • virtual SbBool shouldGLRender (SoGLRenderAction *action) β€” decides whether this shape should actually get GL-rendered.
  • void setNormalCache (SoState *const state, const int num, const SbVec3f *normals) β€” stashes normals in the cache.
  • SoNormalCache * getNormalCache (void) const β€” retrieves the normal cache.
  • SoNormalCache * generateAndReadLockNormalCache (SoState *const state) β€” generates and read-locks the normal cache.
  • void getVertexData (SoState *state, const SoCoordinateElement *&coords, const SbVec3f *&normals, const SbBool neednormals) β€” pulls out the vertex data you need.
  • void readLockNormalCache (void) β€” locks the normal cache for reading.
  • void readUnlockNormalCache (void) β€” unlocks it again. balanced, as all things should be. 🫢

🌈 Protected Member Functions inherited from SoShape 🌈

  • SoShape (void) β€” constructor.
  • virtual ~SoShape () β€” destructor.
  • float getComplexityValue (SoAction *action) β€” returns the complexity value for the action.
  • void beginSolidShape (SoGLRenderAction *action) β€” starts a solid shape render.
  • void endSolidShape (SoGLRenderAction *action) β€” ends it.
  • void GLRenderBoundingBox (SoGLRenderAction *action) β€” GL-renders the bounding box.
  • SbBool shouldPrimitiveCount (SoGetPrimitiveCountAction *action) β€” should we count primitives? yes/no.
  • SbBool shouldRayPick (SoRayPickAction *const action) β€” should we bother ray picking? yes/no.
  • void computeObjectSpaceRay (SoRayPickAction *const action) β€” computes the ray in object space.
  • void computeObjectSpaceRay (SoRayPickAction *const action, const SbMatrix &matrix) β€” same, but you hand it the matrix.
  • virtual SoDetail * createTriangleDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, const SoPrimitiveVertex *v3, SoPickedPoint *pp) β€” builds a detail object for a picked triangle.
  • virtual SoDetail * createLineSegmentDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, SoPickedPoint *pp) β€” detail for a picked line segment.
  • virtual SoDetail * createPointDetail (SoRayPickAction *action, const SoPrimitiveVertex *v, SoPickedPoint *pp) β€” detail for a picked point.
  • void invokeTriangleCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2, const SoPrimitiveVertex *const v3) β€” fires the triangle callbacks.
  • void invokeLineSegmentCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2) β€” fires the line-segment callbacks.
  • void invokePointCallbacks (SoAction *const action, const SoPrimitiveVertex *const v) β€” fires the point callbacks.
  • void beginShape (SoAction *const action, const TriangleShape shapetype, SoDetail *const detail=NULL) β€” kicks off a shape.
  • void shapeVertex (const SoPrimitiveVertex *const v) β€” feeds a vertex into the shape.
  • void endShape (void) β€” wraps the shape up.
  • void generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoMultiTextureCoordinateElement *const tce, const float s, const float t, const SbVec3f &normal) β€” builds a vertex from a point plus an s/t texture coord and a normal.
  • void generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoMultiTextureCoordinateElement *const tce, const float s, const float t, const float r, const SbVec3f &normal) β€” same but with the extra r texture coord. 3D texture girlies know. πŸ’œ
  • SbBool startVertexArray (SoGLRenderAction *action, const SoCoordinateElement *coords, const SbVec3f *pervertexnormals, const SbBool texpervertex, const SbBool colorpervertex) β€” sets up the vertex array for GL rendering.
  • void finishVertexArray (SoGLRenderAction *action, const SbBool vbo, const SbBool normpervertex, const SbBool texpervertex, const SbBool colorpervertex) β€” tears it down when you're done.

πŸ‘‘ Protected Member Functions inherited from SoNode πŸ‘‘

  • SoNode (void) β€” constructor.
  • virtual ~SoNode () β€” destructor.
  • virtual SbBool readInstance (SoInput *in, unsigned short flags) β€” reads the node instance from input.

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

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

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

  • SoBase (void) β€” constructor.
  • virtual ~SoBase () β€” destructor.
  • virtual void destroy (void) β€” nukes the object.
  • SbBool hasMultipleWriteRefs (void) const β€” checks whether there are multiple write references.
  • SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const β€” writes the output header.
  • void writeFooter (SoOutput *out) const β€” writes the footer.
  • virtual const char * getFileFormatName (void) const β€” returns the file format name.
  • virtual SoNotRec createNotRec (void) β€” creates a notification record.

πŸ”’ STATIC PROTECTED MEMBER FUNCTIONS πŸ”’

  • static const SoFieldData ** getFieldDataPtr (void) β€” gives you a pointer to the field data pointer. very meta of it. ✨

🌟 Static Protected Member Functions inherited from SoPointSet 🌟

  • static const SoFieldData ** getFieldDataPtr (void)

🌟 Static Protected Member Functions inherited from SoNonIndexedShape 🌟

  • static const SoFieldData ** getFieldDataPtr (void)

🌟 Static Protected Member Functions inherited from SoVertexShape 🌟

  • static const SoFieldData ** getFieldDataPtr (void)

🌟 Static Protected Member Functions inherited from SoShape 🌟

  • static const SoFieldData ** getFieldDataPtr (void)

🌟 Static Protected Member Functions inherited from SoNode 🌟

  • static const SoFieldData ** getFieldDataPtr (void)
  • static void setNextActionMethodIndex (int index) β€” sets the next action method index.
  • static int getNextActionMethodIndex (void) β€” reads it back.
  • static void incNextActionMethodIndex (void) β€” bumps it by one.
  • static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask) β€” sets compatibility types for a node type.

🌟 Static Protected Member Functions inherited from SoBase 🌟

  • static uint32_t getCurrentWriteCounter (void) β€” returns the current write counter.
  • static void staticDataLock (void) β€” locks the static data.
  • static void staticDataUnlock (void) β€” unlocks the static data.

πŸŽ€ ADDITIONAL INHERITED MEMBERS πŸŽ€

🫧 Protected Types inherited from SoBase 🫧

enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }

🫧 Protected Attributes inherited from SoNode 🫧

  • SbUniqueId uniqueId β€” this node's unique id.

🫧 Protected Attributes inherited from SoFieldContainer 🫧

  • SbBool isBuiltIn β€” whether the field container is built-in.

🫧 Static Protected Attributes inherited from SoNode 🫧

  • static SbUniqueId nextUniqueId = 1 β€” the counter for the next unique id, starting at 1.
  • static int nextActionMethodIndex = 0 β€” the next action method index, starting at 0.

πŸ“– DETAILED DESCRIPTION πŸ“–

okay so listen bestie, the SoMarkerSet class displays a set of 2D bitmap markers in 3D. yes literally, flat little markers, floating in your 3D scene. πŸ’–

This node uses the coordinates currently on the state (or in the vertexProperty field) in order. The numPoints field specifies the number of points in the set.

In addition to supplying the user with a set of standard markers to choose from, it is also possible to specify one's own bitmaps for markers. custom marker girlies, this is your moment. 🎨

This node class is an extension versus the original SGI Inventor v2.1 API. In addition to being a Coin extension, it is also present in TGS' Inventor implementation. (Note that TGS's implementation doesn't support the NONE markerIndex value.) ⚠️ so heads up, that one specific value is a Coin-only treat.

FILE FORMAT/DEFAULTS:

MarkerSet {
    vertexProperty NULL
    startIndex 0
    numPoints -1
    markerIndex 0
}

Since

  • TGS Inventor 2.5
  • Coin 1.0

🌈 MEMBER ENUMERATION DOCUMENTATION 🌈

enum SoMarkerSet::MarkerType

Defines the different standard markers. that's the whole vibe of this enum, she's here to name your markers. πŸ’…


🎬 CONSTRUCTOR & DESTRUCTOR DOCUMENTATION 🎬

SoMarkerSet::SoMarkerSet (void )

Constructor. she's born. 🌸

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

Destructor. protected + virtual, so she goes out with dignity. πŸŽ€

✨ Member Function Documentation ✨

Okay bestie, this is the part where we meet the actual functions β€” the little worker bees of SoMarkerSet. Every single one, no skipping, because we don't gatekeep here. πŸ’–


🌸 SoType SoMarkerSet::getClassTypeId (void ) [static]

This static method returns the SoType object associated with objects of this class. That's it, that's the whole gig β€” it hands you the class-wide type token. πŸŽ€

πŸ¦‹ SoType SoMarkerSet::getTypeId (void ) const [virtual]

Returns the type identification of an object derived from a class inheriting SoBase. This is what powers runtime type checking and "downward" casting β€” iykyk, it's how you figure out what you're actually holding at runtime before you cast down to it. πŸ‘‘

  • Reimplemented from SoPointSet.

πŸ’… const SoFieldData ** SoMarkerSet::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. So like… it's giving backstage pass, not front row. πŸ™ˆ

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

🧚 const SoFieldData * SoMarkerSet::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.

  • Reimplemented from SoPointSet.

⭐ void SoMarkerSet::initClass (void ) [static]

The docs give this one zero description β€” literally nothing. So we are not making anything up, bestie: it's a static void function taking void, and that's all the page tells us. Periodt. πŸ’€

πŸ”₯ void SoMarkerSet::GLRender (SoGLRenderAction * action) [virtual]

Action method for the SoGLRenderAction.

This is called during rendering traversals. Nodes influencing the rendering state in any way, or that want to throw geometry primitives at OpenGL, override this method. Main character energy for the render pipeline. 🌈

  • Reimplemented from SoPointSet.

πŸ’œ void SoMarkerSet::getPrimitiveCount (SoGetPrimitiveCountAction * action) [virtual]

Action method for the SoGetPrimitiveCountAction.

Calculates the number of triangle, line segment and point primitives for the node and adds these to the counters of the action.

Nodes influencing how geometry nodes calculate their primitive count also override this method to change the relevant state variables.

  • Reimplemented from SoPointSet.

πŸ“ int SoMarkerSet::getNumDefinedMarkers (void ) [static]

Returns the number of defined markers. Cute, simple, does exactly what it says on the tin. ✨

πŸ‘‘ void SoMarkerSet::addMarker (int idx, const SbVec2s & size, const unsigned char * bytes, SbBool isLSBFirst = TRUE, SbBool isUpToDown = TRUE) [static]

Replace the bitmap for the marker at idx with the representation given by size dimensions with the bitmap data at bytes. isLSBFirst and isUpToDown indicates how the bitmap data is ordered. Does nothing if markerIndex is NONE.

Here's a complete usage example which demonstrates how to set up a user specified marker from a character map. Note that the "multi colored" pixmap data is converted to a monochrome bitmap before being passed to addMarker() because addMarker() supports only bitmaps.

const int WIDTH = 18;
const int HEIGHT = 19;
const int BYTEWIDTH = (WIDTH + 7) / 2;

const char coin_marker[WIDTH * HEIGHT + 1] = {
  ".+                "
  "+@.+              "
  " .@#.+            "
  " +$@##.+          "
  "  .%@&##.+        "
  "  +$@&&*##.+      "
  "   .%@&&*=##.+    "
  "   +$@&&&&=-##.+  "
  "    .%@&&&&&-;#&+ "
  "    +$@&&&&&&=#.  "
  "     .%@&&&&*#.   "
  "     +$@&&&&#.    "
  "      .%@&@%@#.   "
  "      +$%@%.$@#.  "
  "       .%%. .$@#. "
  "       +$.   .$>#."
  "        +     .$. "
  "               .  "
  "                  " };

int byteidx = 0;
unsigned char bitmapbytes[BYTEWIDTH * HEIGHT];
for (int h = 0; h < HEIGHT; h++) {
  unsigned char bits = 0;
  for (int w = 0; w < WIDTH; w++) {
    if (coin_marker[(h * WIDTH) + w] != ' ') { bits |= (0x80 >> (w % 8)); }
    if ((((w + 1) % 8) == 0) || (w == WIDTH - 1)) {
      bitmapbytes[byteidx++] = bits;
      bits = 0;
    }
  }
}

int MYAPP_ARROW_IDX = SoMarkerSet::getNumDefinedMarkers(); // add at end
SoMarkerSet::addMarker(MYAPP_ARROW_IDX, SbVec2s(WIDTH, HEIGHT),
                       bitmapbytes, FALSE, TRUE);

This will provide you with an index given by MYAPP_ARROW_IDX which can be used in SoMarkerSet::markerIndex to display the new marker. Obsessed with a custom marker era, honestly. πŸŽ€

🫢 SbBool SoMarkerSet::getMarker (int idx, SbVec2s & size, const unsigned char *& bytes, SbBool & isLSBFirst) [static]

Returns data for marker at idx in the size, bytes and isLSBFirst parameters.

If no marker is defined for given idx, or SoMarkerSet::markerIndex is NONE (not removable), FALSE is returned. If everything is OK, TRUE is returned.

😭 SbBool SoMarkerSet::removeMarker (int idx) [static]

Removes marker at idx.

If no marker is defined for given idx, or SoMarkerSet::markerIndex is NONE (not removable), FALSE is returned. If everything is OK, TRUE is returned.

πŸ’€ SbBool SoMarkerSet::isMarkerBitSet (int idx, int bitNumber) [static]

Not supported in Coin. Should probably not have been part of the public Open Inventor API. Yeah… it's giving legacy baggage, bestie. Not our problem, just don't rely on it. 🚩


πŸŽ€ Member Data Documentation πŸŽ€

🌟 SoMFInt32 SoMarkerSet::markerIndex

Contains the set of index markers to display, defaults to 0 (CROSS_5_5). The special value NONE renders nothing for that marker.

Lowkey the most important field on this whole node β€” it's literally the list of which markers you're showing. Default 0 = CROSS_5_5, and NONE = vibes only, nothing rendered. ✨

πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for Coin from the source code. (Yes, a robot wrote it. We just gave it a glow-up. πŸ’…)


And that's a wrap on SoMarkerSet(3), bestie! This page came to you from Coin version 4.0.10, dated Thu Jun 25 2026 00:00:00, and if you ever need to find it again it lives under SoMarkerSet(3). Go render something iconic with it. πŸ¦‹πŸ’–πŸŒˆ

πŸ“¦ where this page comes from