#include <Inventor/nodes/SoMarkerSet.h>
Public Types | |
enum | MarkerType { 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 | |
SoMarkerSet (void) | |
virtual void | GLRender (SoGLRenderAction *action) |
virtual void | getPrimitiveCount (SoGetPrimitiveCountAction *action) |
Static Public Member Functions | |
static void | initClass (void) |
static int | getNumDefinedMarkers (void) |
static void | addMarker (int idx, const SbVec2s &size, const unsigned char *bytes, SbBool isLSBFirst=TRUE, SbBool isUpToDown=TRUE) |
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 | ~SoMarkerSet () |
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 (with the same API).
Defines the different standard markers.
SoMarkerSet::SoMarkerSet | ( | void | ) |
Constructor.
SoMarkerSet::~SoMarkerSet | ( | ) | [protected, virtual] |
Destructor.
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.
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.
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 = 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.
Here's a complete usage example which demonstrates how to set up a user-specified marker from a char-map:
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.
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.
Contains the set of index markers to display, defaults to 0 (CROSS_5_5).