Man Linux: Main Page and Category List

NAME

       SoMarkerSet -

       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.

SYNOPSIS

       #include <Inventor/nodes/SoMarkerSet.h>

       Inherits SoPointSet.

   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
       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=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 ~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. (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.
   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] 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 = 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.

   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.