Provided by: inventor-doc_2.1.5-10+dfsg-2.1build2_all bug

NAME

       SoSurroundScale  —  transformation  node  that adjusts the current matrix so a default cube will surround
       other objects

INHERITS FROM

       SoBase > SoFieldContainer > SoNode > SoTransformation > SoSurroundScale

SYNOPSIS

       #include <Inventor/nodes/SoSurroundScale.h>

          Fields from class SoSurroundScale:

     SoSFInt32           numNodesUpToContainer
     SoSFInt32           numNodesUpToReset

          Methods from class SoSurroundScale:

                         SoSurroundScale()
     void                invalidate()
     static SoType       getClassTypeId()

          Methods from class SoNode:

     void                setOverride(SbBool state)
     SbBool              isOverride() const
     SoNode *            copy(SbBool copyConnections = FALSE) const
     virtual SbBool      affectsState() const
     static SoNode *     getByName(const SbName &name)
     static int          getByName(const SbName &name, SoNodeList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const SoFieldContainer *fc, SbBool copyConnections = FALSE)
     SbBool              set(const char *fieldDataString)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName) const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const

DESCRIPTION

       When traversed by an action, this node appends a transformation to the current transformation  matrix  so
       that  a default size cube will surround the objects specified by its fields. Transform manipulators, such
       as SoHandleBoxManip, use these nodes to make themselves surround other objects.

       This node only recalculates after the invalidate() method has been called.  Otherwise  it  uses  a  saved
       scale and translation.

       When calculating what to surround, the SoSurroundScale looks at the current path in the action and at its
       own  field  values.  Then  SoSurroundScale  applies  an  SoGetBoundingBoxAction  to  the  node  that   is
       numNodesUpToContainer  nodes  above  it  on  the path. SoSurroundScale also tells the action to reset the
       bounding box upon traversal of the node located  numNodesUpToReset  nodes  above  it  in  the  path.  The
       SoSurroundScale then appends a translation and scale to the current transformation so that a default size
       SoCube will translate and scale to fit this bounding box.

       For example, when an SoHandleBoxManip wants to surround the objects it is going to move, the scene  graph
       will look something like this:
                           RootNode
                 -------------------------
                 |                        |
               handleBoxManip        movingStuff
                 |
               handleBoxDragger
                 |
               separator
                -----------------------------------
                |            |                     |
              motionMatrix  surroundScale      cubeGeom
     The SoHandleBoxDragger wants to transform the cubeGeom so that it surrounds the movingStuff. So it sets the
     surroundScale fields to:

               numNodesUpToContainer = 4;
               numNodesUpToReset = 3;

     The  SoBoundingBoxAction  will  then  be  applied  to  RootNode,  with  a  reset   after   traversing   the
     SoHandleBoxManip.  So  the  SoSurroundScale  will surround the objects below separator, and to the right of
     handleBoxManip, producing the desired effect.

FIELDS

     SoSFInt32           numNodesUpToContainer
          When traversed by an action, if surroundScale needs to calculate a new box, surroundScale looks at the
          current path in the action. It travels up this path a distance of numNodesUpToContainer and applies an
          SoGetBoundingBoxAction to the node that it finds there.

     SoSFInt32           numNodesUpToReset
          Before  applying  the  SoGetBoundingBoxAction  (see  the   numNodesUpToContainer   field   aove)   the
          surroundScale  node  travels up the path a distance of numNodesUpToReset and tells the action to reset
          the bounding box upon traversal of that node.

METHODS

                         SoSurroundScale()
          Creates a surround scale node with default settings.

     void                invalidate()
          If you call this, then next time  an  action  is  applied  the  node  will  re-calculate  it's  cached
          translation and scale values.

     static SoType       getClassTypeId()
          Returns type identifier for this class.

ACTION BEHAVIOR

       SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction
          Accumulates scaling and translation transformations into the current transformation.

     SoGetMatrixAction
          Returns the matrix corresponding to the scaling and translation.

FILE FORMAT/DEFAULTS

       SurroundScale {
          numNodesUpToContainer  0
          numNodesUpToReset      0
     }

SEE ALSO

       SoTransformation,    SoTransformManip,    SoCenterballDragger,   SoCenterballManip,   SoHandleBoxDragger,
       SoHandleBoxManip,  SoJackDragger,  SoJackManip,   SoTabBoxDragger,   SoTabBoxManip,   SoTrackballDragger,
       SoTrackballManip, SoTransformBoxDragger, SoTransformBoxManip

                                                                                          SoSurroundScale(3IV)()