somarkerset(3)

NAME

SoMarkerSet

SYNOPSIS

#include <Inventor/nodes/SoMarkerSet.h>
Inherits SoPointSet.

Detailed Description

The SoMarkerSet class displays a set of 2D bitmap markers in 3D.

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.

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
Public Types
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 }
Public Member Functions
virtual SoType getTypeId (void) const
SoMarkerSet (void)
virtual void GLRender (SoGLRenderAction *action) virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)
Static Public Member Functions
static SoType getClassTypeId (void) static void initClass (void)
static int getNumDefinedMarkers (void) static void addMarker (int idx, const SbVec2s &size, const unsigned
char *bytes, SbBool isLSBFirst=1, SbBool isUpToDown=1)
static SbBool getMarker (int idx, SbVec2s &size, const unsigned char
*&bytes, SbBool &isLSBFirst)
static SbBool removeMarker (int idx)
static SbBool isMarkerBitSet (int idx, int bitNumber)
Public Attributes
SoMFInt32 markerIndex
Protected Member Functions
virtual const SoFieldData * getFieldData (void) const virtual ~SoMarkerSet ()
Static Protected Member Functions
static const SoFieldData ** getFieldDataPtr (void)

Member Enumeration Documentation

enum SoMarkerSet::MarkerType
Defines the different standard markers.

Constructor & Destructor Documentation

SoMarkerSet::SoMarkerSet (void)
Constructor.
SoMarkerSet::~SoMarkerSet () [protected, virtual]
Destructor.

Member Function Documentation

SoType SoMarkerSet::getClassTypeId (void) [static]
This static method returns the SoType object associated with objects of this class.
Reimplemented from SoPointSet.
SoType SoMarkerSet::getTypeId (void) const [virtual]
Returns the type identification of an object derived from a class
inheriting SoBase. This is used for run-time type checking and 'downward' casting.
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
}
}
For application programmers wanting to extend the library with new
nodes, engines, nodekits, draggers or others: this method needs to be
overridden in all subclasses. This is typically done as part of setting up the full type system for extension classes, which is usually
accomplished by using 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 information on writing Coin extensions, see the class
documentation of the toplevel superclasses for the various class
groups.
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.
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. If no fields are present, returns NULL.
Reimplemented from SoPointSet.
void SoMarkerSet::initClass (void) [static]
Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
Reimplemented from SoPointSet.
Referenced by SoNode::initClasses().
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 who wants to throw geometry primitives at OpenGL overrides this method.
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 calculates their primitive count
also overrides this method to change the relevant state variables.
Reimplemented from SoPointSet.
References SoNode::getPrimitiveCount(), SoSFNode::getValue(), and
SoVertexShape::vertexProperty.
int SoMarkerSet::getNumDefinedMarkers (void) [static]
Returns the number of defined markers.
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 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 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.

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.
References SbList< Type >::append(), and SbList< Type >::getLength().
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.

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.

Author

Generated automatically by Doxygen for Coin from the source code.
Copyright © 2010-2025 Platon Technologies, s.r.o.           Index | Man stránky | tLDP | Dokumenty | Utilitky | O projekte
Design by styleshout