Provided by: libcoin80-doc_3.1.4~abc9f50-4ubuntu2_all bug

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
       virtual SoType getTypeId (void) const
           Returns the type identification of an object derived from a class inheriting SoBase. This is used for
           run-time type checking and 'downward' casting.
       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=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 const SoFieldData * getFieldData (void) const
       virtual ~SoMarkerSet ()

   Static Protected Member Functions
       static const SoFieldData ** getFieldDataPtr (void)

   Additional Inherited Members

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

   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
         }
       }

       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::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::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 (intidx, const SbVec2s &size, const unsigned char *bytes, SbBoolisLSBFirst =
       TRUE, SbBoolisUpToDown = 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. 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 (intidx, 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 (intidx) [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 (intidx, intbitNumber) [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.