SoIndexedMarkerSet Class Reference
[Shapes]

VSG extension Extension of IndexedPointSet that draws a small bitmap (symbol) at each 3D location. More...

#include <Inventor/nodes/SoIndexedMarkerSet.h>

Inheritance diagram for SoIndexedMarkerSet:
SoIndexedPointSet SoIndexedShape SoVertexShape SoShape SoNode SoFieldContainer SoBase SoRefCounter SoTypedObject

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
}

Public Member Functions

virtual SoType getTypeId () const
 SoIndexedMarkerSet ()

Static Public Member Functions

static SoType getClassTypeId ()
static int getNumDefinedMarkers ()
static void addMarker (int markerIndex, const SbVec2s &size, const unsigned char *bytes, SbBool isLSBFirst=TRUE, SbBool isUpToDown=TRUE)
static void addMarker (int markerIndex, const SbVec2s &size, const unsigned char *bytes, const uint32_t *orderedRGBA, SbBool isLSBFirst=TRUE, SbBool isUpToDown=TRUE)
static void addMarker (int markerIndex, SoMarker *marker)
static SbBool getMarker (int markerIndex, SbVec2s &size, const unsigned char *&bytes, SbBool &isLSBFirst)
static SbBool getMarker (int markerIndex, SbVec2s &size, const unsigned char *&bytes, const uint32_t *&orderedRGBA, SbBool &isLSBFirst)
static SoMarkergetMarker (int markerIndex)
static SbBool removeMarker (int markerIndex)

Public Attributes

SoMFInt32 markerIndex
SoMFFloat markerScale
SoSFFloat markerGlobalScale

Detailed Description

VSG extension Extension of IndexedPointSet that draws a small bitmap (symbol) at each 3D location.

This class draws a marker (small image) at each of a set of points located at the coordinates specified by the vertexProperty field (from SoVertexShape) or the current inherited 3D coordinates. For best performance, the vertexProperty field is recommended. The coordinate of each marker is specified by the coordIndex field which indexes into the list of coordinates. The number of markers is the number of values in the coordIndex field.

You specify the marker to be drawn at each point using the field markerIndex, which indexes into the global list of marker definitions. There is a set of pre-defined markers already in the global list. You can add your own marker definitions to this list using the addMarker functions. Marker definitions in the global list can be used by any SoMarkerSet or SoIndexedMarkerSet node. You can specify fewer index values than the number of markers to be drawn (the number of coordinates). In this case the node will cycle through the provided index values as many times as necessary. If all the markers in the set will use the same definition it is only necessary to set the first value in markerIndex.

You can specify a scale factor (> 0) for each marker using the field markerScale. You can specify fewer scale values than the number of markers to be drawn, but in this case the "missing" values are assumed to be 1. You can also specify a scale factor to be applied to every marker in the set using the field markerGlobalScale. This scale factor is applied in addition to the individual scale factor (if any).

A marker is an image defined by a bitmap and optional color values. If no color values are given then image pixels corresponding to "1" bits are drawn using the current material color (see SoMaterial) and pixels corresponding to "0" bits are not drawn (whatever is behind the marker shows through). If color values are given then each pixel in the image is assigned an RGBA value.

The coordinates of the markers are transformed by the current cumulative transformation.

Lighting is not applied to markers (i.e., they are rendered with light model BASE_COLOR) unless the application explicitly sets normal vectors using SoVertexProperty or SoNormal.

Automatic simplification (by skipping points) is controlled by the SoComplexity field value. Only values < 0.25 have any effect.

Note that custom markers defined with addMarker are not automatically saved in the Open Inventor file when an SoWriteAction is applied to the scene graph (and therefore are not defined if the scene graph is reloaded). To save marker definitions in an Open Inventor file use the SoMarker node.

Depending on the current material and normal binding values, the materials and normals for the vertices may be accessed in order or indexed. If they are indexed, the materialIndex and normalIndex fields are used. Treatment of the current material and normal binding is as follows: PER_PART, PER_FACE, and PER_VERTEX bindings bind one material or normal to each point. The default material binding is OVERALL. The default normal binding is PER_VERTEX.

Limitations:

Shape Antialiasing type is SoShape::POINTS.

The following markers are defined by default:

MARKERS.gif

FILE FORMAT/DEFAULT

ACTION BEHAVIOR

SEE ALSO

SoCoordinate3, SoFullSceneAntialiasing, SoIndexedPointSet, SoMarkerSet, SoVertexProperty

See related examples:

MarkerSet, ColoredMarkerSet


Member Enumeration Documentation

Marker type.

Enumerator:
CROSS_5_5 

Cross 5x5.

PLUS_5_5 

Plus 5x5.

MINUS_5_5 

Minus 5x5.

SLASH_5_5 

Slash 5x5.

BACKSLASH_5_5 

Backslash 5x5.

BAR_5_5 

Bar 5x5.

STAR_5_5 

Star 5x5.

Y_5_5 

Y 5x5.

LIGHTNING_5_5 

Lightning 5x5.

WELL_5_5 

Well 5x5.

CIRCLE_LINE_5_5 

Circle line 5x5.

SQUARE_LINE_5_5 

Square line 5x5.

DIAMOND_LINE_5_5 

Diamond line 5x5.

TRIANGLE_LINE_5_5 

Triangle line 5x5.

RHOMBUS_LINE_5_5 

Rhombus line 5x5.

HOURGLASS_LINE_5_5 

Hourglass line 5x5.

SATELLITE_LINE_5_5 

Satellite line 5x5.

PINE_TREE_LINE_5_5 

Pine line 5x5.

CAUTION_LINE_5_5 

Caution line 5x5.

SHIP_LINE_5_5 

Ship line 5x5.

CIRCLE_FILLED_5_5 

Circle filled 5x5.

SQUARE_FILLED_5_5 

Square filled 5x5.

DIAMOND_FILLED_5_5 

Diamond filled 5x5.

TRIANGLE_FILLED_5_5 

Triangle filled 5x5.

RHOMBUS_FILLED_5_5 

Rhombus filled 5x5.

HOURGLASS_FILLED_5_5 

Hourglass filled 5x5.

SATELLITE_FILLED_5_5 

Satellite filled 5x5.

PINE_TREE_FILLED_5_5 

Pine filled 5x5.

CAUTION_FILLED_5_5 

Caution filled 5x5.

SHIP_FILLED_5_5 

Ship filled 5x5.

CROSS_7_7 

Cross 7x7.

PLUS_7_7 

Plus 7x7.

MINUS_7_7 

Minus 7x7.

SLASH_7_7 

Slash 7x7.

BACKSLASH_7_7 

Backslash 7x7.

BAR_7_7 

Bar 7x7.

STAR_7_7 

Star 7x7.

Y_7_7 

Y 7x7.

LIGHTNING_7_7 

Lightning 7x7.

WELL_7_7 

Well 7x7.

CIRCLE_LINE_7_7 

Circle line 7x7.

SQUARE_LINE_7_7 

Square line 7x7.

DIAMOND_LINE_7_7 

Diamond line 7x7.

TRIANGLE_LINE_7_7 

Triangle line 7x7.

RHOMBUS_LINE_7_7 

Rhombus line 7x7.

HOURGLASS_LINE_7_7 

Hourglass line 7x7.

SATELLITE_LINE_7_7 

Satellite line 7x7.

PINE_TREE_LINE_7_7 

Pine line 7x7.

CAUTION_LINE_7_7 

Caution line 7x7.

SHIP_LINE_7_7 

Ship line 7x7.

CIRCLE_FILLED_7_7 

Circle filled 7x7.

SQUARE_FILLED_7_7 

Square filled 7x7.

DIAMOND_FILLED_7_7 

Diamond filled 7x7.

TRIANGLE_FILLED_7_7 

Triangle filled 7x7.

RHOMBUS_FILLED_7_7 

Rhombus filled 7x7.

HOURGLASS_FILLED_7_7 

Hourglass filled 7x7.

SATELLITE_FILLED_7_7 

Satellite filled 7x7.

PINE_TREE_FILLED_7_7 

Pine filled 7x7.

CAUTION_FILLED_7_7 

Caution filled 7x7.

SHIP_FILLED_7_7 

Ship filled 7x7.

CROSS_9_9 

Cross 9x9.

PLUS_9_9 

Plus 9x9.

MINUS_9_9 

Minus 9x9.

SLASH_9_9 

Slash 9x9.

BACKSLASH_9_9 

Backslash 9x9.

BAR_9_9 

Bar 9x9.

STAR_9_9 

Star 9x9.

Y_9_9 

Y 9x9.

LIGHTNING_9_9 

Lightning 9x9.

WELL_9_9 

Well 9x9.

CIRCLE_LINE_9_9 

Circle line 9x9.

SQUARE_LINE_9_9 

Square line 9x9.

DIAMOND_LINE_9_9 

Diamond line 9x9.

TRIANGLE_LINE_9_9 

Triangle line 9x9.

RHOMBUS_LINE_9_9 

Rhombus line 9x9.

HOURGLASS_LINE_9_9 

Hourglass line 9x9.

SATELLITE_LINE_9_9 

Satellite line 9x9.

PINE_TREE_LINE_9_9 

Pine line 9x9.

CAUTION_LINE_9_9 

Caution line 9x9.

SHIP_LINE_9_9 

Ship line 9x9.

CIRCLE_FILLED_9_9 

Circle filled 9x9.

SQUARE_FILLED_9_9 

Square filled 9x9.

DIAMOND_FILLED_9_9 

Diamond filled 9x9.

TRIANGLE_FILLED_9_9 

Triangle filled 9x9.

RHOMBUS_FILLED_9_9 

Rhombus filled 9x9.

HOURGLASS_FILLED_9_9 

Hourglass filled 9x9.

SATELLITE_FILLED_9_9 

Satellite filled 9x9.

PINE_TREE_FILLED_9_9 

Pine filled 9x9.

CAUTION_FILLED_9_9 

Caution filled 9x9.

SHIP_FILLED_9_9 

Ship filled 9x9.


Constructor & Destructor Documentation

SoIndexedMarkerSet::SoIndexedMarkerSet (  ) 

Constructor.


Member Function Documentation

static void SoIndexedMarkerSet::addMarker ( int  markerIndex,
SoMarker marker 
) [static]

Add a new marker with index markerIndex using an existing marker definition.

If the marker exists, it is replaced.

static void SoIndexedMarkerSet::addMarker ( int  markerIndex,
const SbVec2s size,
const unsigned char *  bytes,
const uint32_t *  orderedRGBA,
SbBool  isLSBFirst = TRUE,
SbBool  isUpToDown = TRUE 
) [static]

Add a new colored marker with index markerIndex .

If the marker exists, it is replaced. size is the size of the marker in pixels. bytes is the marker bitmap. orderedRGBA is an array of per-pixel color values to apply to the marker. The bitmap is arranged row by row from left to right and top to bottom (according to the parameter isUpToDown ). Each byte in the bitmap corresponds to eight pixels. Each value in orderedRGBA corresponds to one pixel. Open Inventor makes a copy of the bitmap and color values.

isLSBFirst : If TRUE, bits are ordered within a byte from least significant to most significant; otherwise the first bit in each byte is the most significant one. 8 isUpToDown : If TRUE, marker bitmap and color array are described from top to bottom (bytes[0] is the left top corner of the bitmap), otherwise from bottom to top (bytes[0] is the bottom left corner).

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

Add a new marker with index markerIndex .

If the marker exists, it is replaced. size is the size of the marker in pixels. bytes is the marker bitmap. The bitmap is arranged row by row from left to right and top to bottom (according to the parameter isUpToDown ). Each byte in the bitmap corresponds to eight pixels. Open Inventor makes a copy of the bitmap.

isLSBFirst : If TRUE, bits are ordered within a byte from least significant to most significant; otherwise the first bit in each byte is the most significant one.

isUpToDown : If TRUE, marker bitmap is described from top to bottom (bytes[0] is the left top corner of the bitmap), otherwise from bottom to top (bytes[0] is the bottom left corner).

static SoType SoIndexedMarkerSet::getClassTypeId (  )  [static]

Returns the type identifier for this class.

Reimplemented from SoIndexedPointSet.

static SoMarker* SoIndexedMarkerSet::getMarker ( int  markerIndex  )  [static]

Retrieve the definition of the marker with index markerIndex .

Returns NULL if the marker does not exist.

static SbBool SoIndexedMarkerSet::getMarker ( int  markerIndex,
SbVec2s size,
const unsigned char *&  bytes,
const uint32_t *&  orderedRGBA,
SbBool isLSBFirst 
) [static]

Retrieve the description of the colored marker with index markerIndex .

Returns TRUE if the marker exists, otherwise returns FALSE and the parameters are not modified. If the marker does not have color values, orderedRGBA will point to a single uint32_t containing the value zero.

static SbBool SoIndexedMarkerSet::getMarker ( int  markerIndex,
SbVec2s size,
const unsigned char *&  bytes,
SbBool isLSBFirst 
) [static]

Retrieve the description of the marker with index markerIndex .

Returns TRUE if the marker exists, otherwise returns FALSE and the parameters are not modified.

static int SoIndexedMarkerSet::getNumDefinedMarkers (  )  [static]

Return the number of defined markers.

virtual SoType SoIndexedMarkerSet::getTypeId (  )  const [virtual]

Returns the type identifier for this specific instance.

Reimplemented from SoIndexedPointSet.

static SbBool SoIndexedMarkerSet::removeMarker ( int  markerIndex  )  [static]

Remove the marker with index markerIndex .

Returns TRUE if the marker was successfully removed, FALSE otherwise.


Member Data Documentation

Specifies a global scale factor applied to all markers.

Default is 1. This scale factor is applied in addition to the individual scale factor (markerScale).

Supported only when using shader implementation.

NOTE: field available since Open Inventor 9.3

Specifies the marker index (type of marker) for each marker.

Default is 0. Predefined markers are in enum MarkerType. You can specify fewer index values than the number of markers to be drawn (the number of coordinates). In this case the node will cycle through the provided index values as many times as necessary. For example, if all the markers in the set will use the same definition it is only necessary to set the first value in markerIndex.

Specifies the scale factor applied to each marker.

Default is 1. You can specify fewer scale values than the number of markers to be drawn. In this case the "missing" values are looped from the first scale value each necessary time. You can also specify a scale factor to be applied to every marker in the set using the field markerGlobalScale.

Supported only when using shader implementation.

NOTE: field available since Open Inventor 9.3


The documentation for this class was generated from the following file:

Open Inventor Toolkit reference manual, generated on 12 Feb 2024
Copyright © Thermo Fisher Scientific All rights reserved.
http://www.openinventor.com/