Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

SoMarkerSet Class Reference

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

#include <Inventor/nodes/SoMarkerSet.h>

Inheritance diagram for SoMarkerSet::

SoPointSet SoNonIndexedShape SoVertexShape SoShape SoNode SoFieldContainer SoBase List of all members.

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 Methods

 SoMarkerSet (void)
virtual void GLRender (SoGLRenderAction *action)
virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)

Static Public Methods

void initClass (void)
int getNumDefinedMarkers (void)
void addMarker (int markerIndex, const SbVec2s &size, const unsigned char *bytes, SbBool isLSBFirst=TRUE, SbBool isUpToDown=TRUE)
SbBool getMarker (int markerIndex, SbVec2s &size, const unsigned char *&bytes, SbBool &isLSBFirst)
SbBool removeMarker (int markerIndex)
SbBool isMarkerBitSet (int markerIndex, int bitNumber)

Public Attributes

SoMFInt32 markerIndex

Protected Methods

virtual ~SoMarkerSet ()

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 (with the same API).


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

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]
 

Overloaded to add the number of markers to the number of images in action.

Reimplemented from SoPointSet.

int SoMarkerSet::getNumDefinedMarkers void [static]
 

Returns the number of defined markers.

void SoMarkerSet::addMarker int markerIndex,
const SbVec2s & size,
const unsigned char * bytes,
SbBool isLSBFirst = TRUE,
SbBool isUpToDown = TRUE
[static]
 

Replace the bitmap for the marker at markerIndex 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 markerIndex,
SbVec2s & size,
const unsigned char *& bytes,
SbBool & isLSBFirst
[static]
 

Returns data for marker at markerIndex.

SbBool SoMarkerSet::removeMarker int markerIndex [static]
 

Removes marker at markerIndex.

SbBool SoMarkerSet::isMarkerBitSet int markerIndex,
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 documentation for this class was generated from the following files:
Generated at Tue Mar 5 03:31:26 2002 for Coin by doxygen1.2.9 written by Dimitri van Heesch, © 1997-2001