SoTrackballDragger(3IV)

SoTrackballDragger - striped ball you can rotate or scale uniformly by dragging with the mouse

As shipped in IRIX 6.5.22. Added in IRIX 6.5.22.

NAME
     SoTrackballDragger - striped ball you can rotate or scale uniformly by
     dragging with the mouse

INHERITS FROM
     SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit >
     SoDragger > SoTrackballDragger

SYNOPSIS
     #include <Inventor/draggers/SoTrackballDragger.h>

          Fields from class SoTrackballDragger:

     SoSFVec3f           scaleFactor
     SoSFRotation        rotation

          Fields from class SoDragger:

     SoSFBool            isActive

          Fields from class SoInteractionKit:

     SoSFEnum            renderCaching
     SoSFEnum            boundingBoxCaching
     SoSFEnum            renderCulling
     SoSFEnum            pickCulling

          Parts from class SoBaseKit:

     (SoNodeKitListPart)  callbackList

          Methods from class SoTrackballDragger:

                         SoTrackballDragger()
     SbBool              isAnimationEnabled()
     void                setAnimationEnabled(SbBool newVal)
     static const SoNodekitCatalog *
                         getClassNodekitCatalog() const
     static SoType       getClassTypeId()

          Methods from class SoDragger:

     void                addStartCallback(SoDraggerCB *f, void *userData =
                              NULL)
     void                removeStartCallback(SoDraggerCB *f, void *userData =
                              NULL)
     void                addMotionCallback(SoDraggerCB *f, void *userData =
                              NULL)
     void                removeMotionCallback(SoDraggerCB *f, void *userData =
                              NULL)
     void                addFinishCallback(SoDraggerCB *f, void *userData =
                              NULL)
     void                removeFinishCallback(SoDraggerCB *f, void *userData =
                              NULL)
     void                addValueChangedCallback(SoDraggerCB *f, void
                              *userData = NULL)
     void                removeValueChangedCallback(SoDraggerCB *f, void
                              *userData = NULL)
     SbBool              enableValueChangedCallbacks()
     void                setMinGesture(int pixels)
     int                 getMinGesture() const
     static void         setMinScale(float newMinScale)
     static float        getMinScale()

          Methods from class SoInteractionKit:

     virtual SbBool      setPartAsPath(const SbName &partName, SoPath
                              *surrogatePath )

          Methods from class SoBaseKit:

     virtual const SoNodekitCatalog *
                              getNodekitCatalog() const
     virtual SoNode *         getPart(const SbName &partName, SbBool
                                   makeIfNeeded)
     SbString                 getPartString(const SoBase *part)
     virtual SoNodeKitPath *  createPathToPart(const SbName &partName, SbBool
                                   makeIfNeeded, const SoPath *pathToExtend =
                                   NULL)
     virtual SbBool           setPart(const SbName &partName, SoNode *newPart)
     SbBool                   set(char *partName, char *parameters)
     SbBool                   set(char *nameValuePairs)
     static SbBool            isSearchingChildren()
     static void              setSearchingChildren(SbBool newVal)

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

          Macros from class SoBaseKit:

     SO_GET_PART(kit, partName, partClass)
     SO_CHECK_PART(kit, partName, partClass)


DESCRIPTION
     SoTrackballDragger is a ball wrapped in three circular stripes. The
     stripes are oriented like wheels that spin around the x, y, and z axes.
     Drag the stripes to rotate the trackball around those axes. You do not
     have to hit the lines; pick anywhere within the stripe's outline. To
     rotate the trackball freely in 3 dimensions, click the area between the
     stripes and then drag. An invisible but pickable sphere initiates this
     dragging. If the mouse is still moving when you release it, the trackball
     will continue to spin.

     Press the <Control> key to scale the trackball uniformly instead of
     rotating.

     Press the <Shift> key and the user axis appears; this is a draggable axis
     with an extra stripe around it. Moving the mouse along the surface of the
     sphere drags the 'pole' of the axis. Release the <Shift> key and the user
     axis remains; drag the new stripe for constrained rotation around the
     user axis. To make the user axis disappear, press <Shift> and drag the
     pole to where two of other stripes intersect. This aligns the user axis
     with a primary axis, at which point the user axis disappears.

     As you drag the trackball, it updates its rotation field, or its
     scaleFactor field if the <Control> key is down. As with all draggers, if
     you change the fields the dragger moves in response.

     Remember: This is not an SoTransform!. If you want to move other objects
     with this dragger, you can either:

     [a] Use an SoTrackballManip, which is subclassed from SoTransform. The
     manipulator creates one of these draggers and uses it as the interface to
     edit the manipulator's fields. (see the SoTrackballManip reference page).

     [b] Use field-to-field connections to connect the fields of this dragger
     to those of any SoTransformation node.

     You can change the parts in any instance of this dragger using setPart().
     The default part geometries are defined as resources for this
     SoTrackballDragger class. They are detailed in the Dragger Resources
     section of the online reference page for this class. You can make your
     program use different default resources for the parts by copying the file
     /usr/share/data/draggerDefaults/trackballDragger.iv into your own
     directory, editing the file, and then setting the environment variable
     SO_DRAGGER_DIR to be a path to that directory.

FIELDS
     SoSFVec3f           scaleFactor
          Scale of the dragger.

     SoSFRotation        rotation
          Orientation of the dragger.


METHODS
                         SoTrackballDragger()
          Constructor.

     SbBool              isAnimationEnabled()
     void                setAnimationEnabled(SbBool newVal)
          If the mouse is moving while you release it, the trackball will
          continue to spin afterwards. These two methods will query and set
          whether this feature is turned on or off. By default, the animation
          feature is turned on.

     static const SoNodekitCatalog *
                         getClassNodekitCatalog() const
          Returns an SoNodekitCatalog for this class

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


CATALOG PARTS

     ______________________________________________________________
                               All parts
                                                           NULL by
      Part Name           Part Type         Default Type   Default

      callbackList        NodeKitListPart   --               yes
      surroundScale       SurroundScale     --               yes
      antiSquish          AntiSquish        --               no
      rotator             Separator         --               yes
      rotatorActive       Separator         --               yes
      XRotator            Separator         --               yes
      XRotatorActive      Separator         --               yes
      YRotator            Separator         --               yes
      YRotatorActive      Separator         --               yes
      ZRotator            Separator         --               yes
      ZRotatorActive      Separator         --               yes
      userAxis            Separator         --               yes
      userAxisActive      Separator         --               yes
      userRotator         Separator         --               yes
      userRotatorActive   Separator         --               yes

     ______________________________________________________________
     |


















                                                                   |



















     ________________________________________________________________
            Extra information for list parts from above table

      Part Name      Container Type   Permissible Types

                                      Callback, EventCallback
      callbackList   Separator

     ________________________________________________________________
     |




                                                                     |






DRAGGER RESOURCES
     Resource:         trackballRotator
     Part:             rotator
     Appearance:       Invisible but pickable sphere
     Description:      Initiates unconstrained 3D rotation. Slightly smaller
                         radius than the stripes, so you must pick between the
                         stripes to use it.

     Resource:         trackballRotatorActive
     Part:             rotatorActive
     Appearance:       Invisible sphere
     Description:      Displayed during unconstrained 3D rotation.

     Resource:         trackballXRotator
     Part:             XRotator
     Appearance:       White outline of a stripe aligned with the X axis.
     Description:      Pick this to initiate constrained rotation about the X
                         axis.

     Resource:         trackballXRotatorActive
     Part:             XRotatorActive
     Appearance:       Yellow version of the regular XRotator
     Description:      Displayed during constrained rotation about the X axis.
     Resource:         trackballYRotator
     Part:             YRotator
     Appearance:       White outline of a stripe aligned with the Y axis.
     Description:      Pick this to initiate constrained rotation about the Y
                         axis.

     Resource:         trackballYRotatorActive
     Part:             YRotatorActive
     Appearance:       Yellow version of the regular YRotator
     Description:      Displayed during constrained rotation about the Y axis.

     Resource:         trackballZRotator
     Part:             ZRotator
     Appearance:       White outline of a stripe aligned with the Z axis.
     Description:      Pick this to initiate constrained rotation about the Z
                         axis.

     Resource:         trackballZRotatorActive
     Part:             ZRotatorActive
     Appearance:       Yellow version of the regular ZRotator
     Description:      Displayed during constrained rotation about the Z axis.

     Resource:         trackballUserAxis
     Part:             userAxis
     Appearance:       Thin purple line
     Description:      Displays the user axis. Dragging the userRotator
                         rotates about this line.

     Resource:         trackballUserAxisActive
     Part:             userAxisActive
     Appearance:       Thin purple line
     Description:      Displays the user axis. Dragging the userRotator
                         rotates about this line.

     Resource:         trackballUserRotator
     Part:             userRotator
     Appearance:       Transparent green stripe circling the user axis.
     Description:      Pick to initiate constrained rotation about the user
                         axis.

     Resource:         trackballUserRotatorActive
     Part:             userRotatorActive
     Appearance:       Brighter green version of the regular userRotator
     Description:      Displayed during constrained rotation about the user
                         axis.


FILE FORMAT/DEFAULTS
     TrackballDragger {
          renderCaching       AUTO
          boundingBoxCaching  AUTO
          renderCulling       AUTO
          pickCulling         AUTO
          isActive            FALSE
          rotation            0 0 1  0
          scaleFactor         1 1 1
          callbackList        NULL
          surroundScale       NULL
          antiSquish          AntiSquish {
              sizing LONGEST_DIAGONAL }

          rotator             <trackballRotator resource>
          rotatorActive       <trackballRotatorActive resource>
          XRotator            <trackballXRotator resource>
          XRotatorActive      <trackballXRotatorActive resource>
          YRotator            <trackballYRotator resource>
          YRotatorActive      <trackballYRotatorActive resource>
          ZRotator            <trackballZRotator resource>
          ZRotatorActive      <trackballZRotatorActive resource>
          userAxis            <trackballUserAxis resource>
          userAxisActive      <trackballUserAxisActive resource>
          userRotator         <trackballUserRotator resource>
          userRotatorActive   <trackballUserRotatorActive resource>
     }

NOTE
     Unlike most multi-function draggers, SoTrackballDragger is not a compound
     dragger made up of other draggers that perform its smaller tasks. This is
     not because it was inappropriate, but because the trackball was written
     before implementation of the methods that take care of synchronizing
     multiple child draggers. The younger SoCenterballDragger is similar in
     form to the trackball, but the centerball is a compound dragger.

SEE ALSO
     SoInteractionKit, SoDragger, SoCenterballDragger,
     SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger,
     SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger,
     SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger,
     SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger,
     SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger,
     SoTransformBoxDragger, SoTransformerDragger, SoTranslate1Dragger,
     SoTranslate2Dragger