SoMarkerSet(3)
๐ SoMarkerSet(3) โ from the Library Functions Manual ๐
okay bestie, sit down, hydrate, because we're about to get into SoMarkerSet(3) and honestly? it's giving iconic. โจ
๐ NAME ๐
SoMarkerSet โ the SoMarkerSet class displays a set of 2D bitmap markers in 3D. that's it, that's the vibe. ๐
โจ SYNOPSIS โจ
#include <Inventor/nodes/SoMarkerSet.h>
Inherits SoPointSet. so like, it's a SoPointSet at heart but with a glow-up. ๐
๐ฆ Public Types ๐ฆ
the marker menu, no cap โ every single one of these is a real value you can use:
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 }
likeโฆ that's a whole alphabet of little glyphs. shapes at 5_5, 7_7 and 9_9 sizes, each in a line version and a filled version, plus NONE = -1 and the counter NUM_MARKERS at the end keeping count. periodt. ๐
๐ธ Public Types inherited from SoShape ๐ธ
enum TriangleShape { TRIANGLE_STRIP, TRIANGLE_FAN, TRIANGLES, POLYGON,
QUADS, QUAD_STRIP, POINTS, LINES, LINE_STRIP }
๐ธ 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
}
๐ Public Member Functions ๐
these are the ones that belong to SoMarkerSet itself, bestie:
virtual SoType getTypeId (void) constโ hands you the type id, the classic. ๐ซSoMarkerSet (void)โ the constructor. hi bestie. ๐ซถvirtual void GLRender (SoGLRenderAction *action)โ does the actual drawing.virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)โ counts primitives.
๐ง 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) constvirtual void rayPick (SoRayPickAction *action)virtual void callback (SoCallbackAction *action)const SoBoundingBoxCache * getBoundingBoxCache (void) const
๐ง Public Member Functions inherited from SoNode ๐ง
okay this list is long but we do not skip, we do not summarise, we list every single one ๐
void setOverride (const SbBool state)SbBool isOverride (void) constvoid setNodeType (const NodeType type)NodeType getNodeType (void) constvirtual SoNode * copy (SbBool copyconnections=0) constvirtual 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)uint32_t getNodeId (void) constvirtual SoChildList * getChildren (void) constvirtual void writeInstance (SoOutput *out)virtual SoNode * addToCopyDict (void) constvirtual void copyContents (const SoFieldContainer *from, SbBool copyconnections)virtual SoFieldContainer * copyThroughConnection (void) const
๐ง Public Member Functions inherited from SoFieldContainer ๐ง
void setToDefaults (void)SbBool hasDefaultValues (void) constSbBool fieldsAreEqual (const SoFieldContainer *container) constvoid copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=0)SbBool set (const char *const fielddata)void get (SbString &fielddata)virtual int getFields (SoFieldList &l) constvirtual int getAllFields (SoFieldList &l) constvirtual SoField * getField (const SbName &name) constvirtual SoField * getEventIn (const SbName &name) constvirtual SoField * getEventOut (const SbName &name) constSbBool getFieldName (const SoField *const field, SbName &name) constSbBool enableNotify (const SbBool flag)SbBool isNotifyEnabled (void) constSbBool set (const char *fielddata, SoInput *in)void get (SbString &fielddata, SoOutput *out)virtual SbBool validateNewFieldValue (SoField *field, void *newval)virtual void addWriteReference (SoOutput *out, SbBool isfromfield=0)SbBool getIsBuiltIn (void) constvoid setUserData (void *userdata) constvoid * getUserData (void) const
๐ง Public Member Functions inherited from SoBase ๐ง
void ref (void) constvoid unref (void) constvoid unrefNoDelete (void) constint32_t getRefCount (void) constvoid touch (void)SbBool isOfType (SoType type) constvirtual SbName getName (void) constvirtual 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) constSbBool shouldWrite (void)void assertAlive (void) const
โญ Static Public Member Functions โญ
the static girlies โ no instance needed, they just exist:
static SoType getClassTypeId (void)static void initClass (void)static int getNumDefinedMarkers (void)โ tells you how many markers are currently defined.static void addMarker (int idx, const SbVec2s &size, const unsigned char *bytes, SbBool isLSBFirst=1, SbBool isUpToDown=1)โ drop a brand new marker into the set.static SbBool getMarker (int idx, SbVec2s &size, const unsigned char *&bytes, SbBool &isLSBFirst)โ fetch the details of a marker.static SbBool removeMarker (int idx)โ yeet a marker out of the set.static SbBool isMarkerBitSet (int idx, int bitNumber)โ check whether a specific bit is set on a 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)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)static void initClasses (void)static uint32_t 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)static SoType getClassTypeId (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)static SoType getClassTypeId (void)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 *in, SoBase *&base, SoType expectedtype)static void setInstancePrefix (const SbString &c)static void setTraceRefs (SbBool trace)static SbBool getTraceRefs (void)static SbBool connectRoute (SoInput *in, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)static SbBool readRoute (SoInput *in)
๐ธ Public Attributes ๐ธ
the actual data fields you can poke at:
SoMFInt32 markerIndexโ the multi-value field holding your marker indices. this is the main character of this whole class, fr fr. ๐
๐บ Public Attributes inherited from SoPointSet ๐บ
SoSFInt32 numPoints
๐บ Public Attributes inherited from SoNonIndexedShape ๐บ
SoSFInt32 startIndex
๐บ Public Attributes inherited from SoVertexShape ๐บ
SoSFNode vertexProperty
๐ฆ Protected Member Functions ๐ฆ
for the subclasses and the internal machinery, not for casual touching:
virtual const SoFieldData * getFieldData (void) constvirtual ~SoMarkerSet ()โ the destructor.
๐ Protected Member Functions inherited from SoPointSet ๐
virtual ~SoPointSet ()virtual void generatePrimitives (SoAction *action)virtual void computeBBox (SoAction *action, SbBox3f &box, SbVec3f ¢er)virtual SbBool generateDefaultNormals (SoState *, SoNormalCache *nc)virtual SbBool generateDefaultNormals (SoState *state, SoNormalBundle *bundle)
๐ Protected Member Functions inherited from SoNonIndexedShape ๐
SoNonIndexedShape (void)virtual ~SoNonIndexedShape ()void computeCoordBBox (SoAction *action, int numVertices, SbBox3f &box, SbVec3f ¢er)void fixNumVerticesPointers (SoState *state, const int32_t *&start, const int32_t *&end, int32_t *dummyarray) const
๐ Protected Member Functions ๐
okay so real talk: these are the lil behind-the-scenes helpers the class keeps to itself. you don't call them from the outside, but they're doing the heavy lifting, iykyk ๐
๐ Protected Member Functions inherited from SoVertexShape
SoVertexShape (void)โ the constructor, doing constructor things โจvirtual ~SoVertexShape ()โ the destructor, tearing it all down gently ๐ซถvirtual SbBool shouldGLRender (SoGLRenderAction *action)โ asks the universe (well, the action) whether this shape should actually render rnvoid setNormalCache (SoState *const state, const int num, const SbVec3f *normals)โ stashes those normals in the cache,numof them, fromnormalsSoNormalCache * getNormalCache (void) constโ hands you back the normal cache, no take-backsSoNormalCache * generateAndReadLockNormalCache (SoState *const state)โ generates the normal cache and read-locks it, all in one go, main character energy ๐void getVertexData (SoState *state, const SoCoordinateElement *&coords, const SbVec3f *&normals, const SbBool neednormals)โ pulls out the vertex data: coords, normals, and whether normals were actually neededvoid readLockNormalCache (void)โ read-locks the normal cache, simple asvoid readUnlockNormalCache (void)โ and this one unlocks it, balance restored ๐ง
๐ธ Protected Member Functions inherited from SoShape
SoShape (void)โ constructor โจvirtual ~SoShape ()โ destructor ๐ซถfloat getComplexityValue (SoAction *action)โ grabs the complexity value from the actionvoid beginSolidShape (SoGLRenderAction *action)โ starts a solid shape rendervoid endSolidShape (SoGLRenderAction *action)โ ends it, we love closure ๐void GLRenderBoundingBox (SoGLRenderAction *action)โ renders the bounding boxSbBool shouldPrimitiveCount (SoGetPrimitiveCountAction *action)โ should we count primitives? asking for the actionSbBool shouldRayPick (SoRayPickAction *const action)โ should this ray-pick? vibes onlyvoid computeObjectSpaceRay (SoRayPickAction *const action)โ computes the object-space rayvoid computeObjectSpaceRay (SoRayPickAction *const action, const SbMatrix &matrix)โ same thing but with amatrixin the mixvirtual SoDetail * createTriangleDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, const SoPrimitiveVertex *v3, SoPickedPoint *pp)โ makes a triangle detail from three verticesv1,v2,v3and the picked pointppvirtual SoDetail * createLineSegmentDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, SoPickedPoint *pp)โ line segment detail, two verticesv1,v2, plusppvirtual SoDetail * createPointDetail (SoRayPickAction *action, const SoPrimitiveVertex *v, SoPickedPoint *pp)โ point detail from vertexvand picked pointppvoid invokeTriangleCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2, const SoPrimitiveVertex *const v3)โ fires off the triangle callbacks forv1,v2,v3void invokeLineSegmentCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2)โ fires off the line segment callbacksvoid invokePointCallbacks (SoAction *const action, const SoPrimitiveVertex *const v)โ fires off the point callbacksvoid beginShape (SoAction *const action, const TriangleShape shapetype, SoDetail *const detail=NULL)โ kicks off a shape of typeshapetype, with optionaldetail(defaults toNULL)void shapeVertex (const SoPrimitiveVertex *const v)โ drops in a shape vertexvoid endShape (void)โ wraps the shape up ๐void generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoTextureCoordinateElement *const tce, const float s, const float t, const SbVec3f &normal)โ generates a vertex with coordss,tand anormalvoid generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoTextureCoordinateElement *const tce, const float s, const float t, const float r, const SbVec3f &normal)โ the deluxe version, withs,t,randnormalSbBool startVertexArray (SoGLRenderAction *action, const SoCoordinateElement *coords, const SbVec3f *pervertexnormals, const SbBool texpervertex, const SbBool colorpervertex)โ spins up the vertex array withcoords, per-vertex normals, and the tex/color per-vertex flagsvoid finishVertexArray (SoGLRenderAction *action, const SbBool vbo, const SbBool normpervertex, const SbBool texpervertex, const SbBool colorpervertex)โ shuts that vertex array down,vboand all ๐ฆ
๐ Protected Member Functions inherited from SoNode
SoNode (void)โ constructor โจvirtual ~SoNode ()โ destructor ๐ซถvirtual SbBool readInstance (SoInput *in, unsigned short flags)โ reads an instance in fromin, withflags
๐
Protected Member Functions inherited from SoFieldContainer
SoFieldContainer (void)โ constructor โจ~SoFieldContainer ()โ destructor ๐ซถ
๐ Protected Member Functions inherited from SoBase
SoBase (void)โ constructor โจvirtual ~SoBase ()โ destructor ๐ซถvirtual void destroy (void)โ destroys the thing, dramatically but correctly ๐SbBool hasMultipleWriteRefs (void) constโ checks if it's got multiple write refsSbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constโ writes the header out, knowing if it's aisgroupand/orisenginevoid writeFooter (SoOutput *out) constโ writes the footer, the lil goodbye ๐virtual const char * getFileFormatName (void) constโ returns the file format name as aconst char *
โญ Static Protected Member Functions โญ
static const SoFieldData ** getFieldDataPtr (void)โ returns a pointer-to-pointer to the field data, no cap ๐ซถ
๐ Static Protected Member Functions inherited from SoPointSet
static const SoFieldData ** getFieldDataPtr (void)โ same deal,SoPointSet's own version
๐ Static Protected Member Functions inherited from SoNonIndexedShape
static const SoFieldData ** getFieldDataPtr (void)โ andSoNonIndexedShape's version
๐ Static Protected Member Functions inherited from SoVertexShape
static const SoFieldData ** getFieldDataPtr (void)โSoVertexShape's turn
๐ Static Protected Member Functions inherited from SoShape
static const SoFieldData ** getFieldDataPtr (void)โSoShape's turn
๐ Static Protected Member Functions inherited from SoNode
static const SoFieldData ** getFieldDataPtr (void)โSoNode's versionstatic void setNextActionMethodIndex (int index)โ sets the next action method index toindexstatic int getNextActionMethodIndex (void)โ gets that index backstatic void incNextActionMethodIndex (void)โ bumps it up by one, slaystatic void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)โ sets compatibility types fornodetypewithbitmask
๐ Static Protected Member Functions inherited from SoBase
static uint32_t getCurrentWriteCounter (void)โ returns the current write counter as auint32_tstatic void staticDataLock (void)โ locks the static data ๐static void staticDataUnlock (void)โ unlocks it ๐
๐ Additional Inherited Members ๐
- Protected Types inherited from
SoBaseโenum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 } - Protected Attributes inherited from
SoNodeโuint32_t uniqueId - Protected Attributes inherited from
SoFieldContainerโSbBool isBuiltIn - Static Protected Attributes inherited from
SoNodeโstatic uint32_t nextUniqueId = 0, andstatic int nextActionMethodIndex = 0
โจ Detailed Description โจ
The SoMarkerSet class displays a set of 2D bitmap markers in 3D. literally its whole job and it does it gorgeously ๐
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 markers?? we love options ๐จ
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.)
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. ๐
๐ Constructor & Destructor Documentation ๐
SoMarkerSet::SoMarkerSet (void )
Constructor.
References markerIndex, and SoMarkerSet().
Referenced by getFieldData(), and SoMarkerSet().
SoMarkerSet::~SoMarkerSet () [protected], [virtual]
Destructor. ๐ซถ
๐ Member Function Documentation ๐
โจ SoType SoMarkerSet::getTypeId (void ) const [virtual]
Okay bestie, this one hands you the type identification of any object derived from a class that inherits SoBase. What's it for? Run-time type checking and "downward" casting. Very detective, very sleuth. ๐
Usage example:
void foo(SoNode * node)
{
if (node->getTypeId() == SoFile::getClassTypeId()) {
SoFile * filenode = (SoFile *)node; // safe downward cast, knows the type
}
else if (node->getTypeId().isOfType(SoGroup::getClassTypeId())) {
SoGroup * group = (SoGroup *)node; // safe downward cast, knows the type
}
}
Now listen up, application programmers who wanna extend the library with new nodes, engines, nodekits, draggers or whatever else: you must override this method in all subclasses. No skipping. This is normally done as part of setting up the full type system for your extension classes, and it's usually accomplished with the pre-defined macros available through, for instance, Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on.
For more tea on writing Coin extensions, go read the class documentation of the toplevel superclasses for the various class groups. ๐
Reimplemented from SoPointSet.
๐ const SoFieldData * SoMarkerSet::getFieldData (void ) const [protected], [virtual]
Returns 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 SoPointSet.
References SoMarkerSet().
๐ฆ void SoMarkerSet::GLRender (SoGLRenderAction * action) [virtual]
This is the action method for SoGLRenderAction.
It gets called during rendering traversals. Any node that influences the rendering state in any way, or that wants to throw geometry primitives at OpenGL, overrides this method. Very main character of it. ๐
Reimplemented from SoPointSet.
References SoAction::getState(), SoVertexShape::getVertexData(), SbViewportRegion::getViewportSizePixels(), markerIndex, SbMatrix::multVecMatrix(), SoPointSet::numPoints, SoState::pop(), SoDebugError::postWarning(), SoState::push(), SoVertexShape::shouldGLRender(), SoNonIndexedShape::startIndex, and SoVertexShape::vertexProperty.
๐ธ void SoMarkerSet::getPrimitiveCount (SoGetPrimitiveCountAction * action) [virtual]
Action method for SoGetPrimitiveCountAction.
It calculates the number of triangle, line segment and point primitives for the node, and adds these to the counters of the action. Math girlies rise up. ๐งฎ
Nodes that influence how geometry nodes calculate their primitive count also override this method to change the relevant state variables.
Reimplemented from SoPointSet.
References SoGetPrimitiveCountAction::addNumImage(), SoAction::getState(), SoVertexShape::getVertexData(), SoPointSet::numPoints, SoState::pop(), SoState::push(), SoShape::shouldPrimitiveCount(), SoNonIndexedShape::startIndex, and SoVertexShape::vertexProperty.
โญ int SoMarkerSet::getNumDefinedMarkers (void ) [static]
Returns the number of defined markers. Short, sweet, slay. ๐
๐ void SoMarkerSet::addMarker (int idx, const SbVec2s & size, const unsigned char * bytes, SbBool isLSBFirst = 1, SbBool isUpToDown = 1) [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 indicate how the bitmap data is ordered. And if markerIndex is NONE? It does nothing. Nada. Zilch. ๐
Here's a complete usage example which demonstrates how to set up a user-specified marker from a char-map. Note that the "multi-colored" pixmap data is converted to a monochrome bitmap before being passed to addMarker() because addMarker() supports only bitmaps. No color, bestie, we're monochrome here. ๐ค
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. Iconic. ๐
๐ 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. Simple as. โ
๐ SbBool SoMarkerSet::removeMarker (int idx) [static]
Removes marker at idx. Bye bye marker, hope you had a good run. ๐
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.
That's the whole thing. It's giving legacy baggage, honestly. ๐ญ
๐ 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. โจ
Referenced by GLRender(), and SoMarkerSet().
๐ Author ๐
Generated automatically by Doxygen for Coin from the source code. Yes bestie, a robot wrote the skeleton โ the personality is all mine. ๐ค๐
And that's a wrap on SoMarkerSet(3)! This lil page came to you straight from the Coin source code, Version 2.5.0 โ go check the version and date in your own local copy of the page if you need the exact stamp, because that footer is where it lives. Stay type-safe, stay slay. Periodt. ๐
โจ
๐ฆ where this page comes from
- fedora 43: Coin2-devel 2.5.0-52.fc43 ยท GPL-2.0-only
- fedora 43: Coin2-devel 2.5.0-52.fc43 ยท GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.fc44 ยท GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.fc44 ยท GPL-2.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms