sotrackballdragger(3)

NAME

SoTrackballDragger

SYNOPSIS

#include <Inventor/draggers/SoTrackballDragger.h>
Inherits SoDragger.

Detailed Description

The SoTrackballDragger provides the end-user with rotation
and scaling
interaction possibilities.
Here's how the dragger looks with its default geometry in
the inactive
state:.
The dragger has three 'bands' around a transparent sphere,
which when
clicked and dragged will rotate around the three principal
axes. In
addition, the user can define his own rotation axis by
holding down a
SHIFT key while clicking with the left mouse button and
dragging. A
new, distinctively colored axis and dragger band will be
then be added.
Free-form rotation on the sphere can be done by clicking
and dragging
outside the pre-defined 'rotation bands'.
Scale operations are made available by holding down a CTRL
key when
clicking with the left mouse button. The dragger is then
in scaling
mode, and dragging while holding down the mouse button
will uniformly
scale the trackball sphere.
For the application programmer's convenience, the Coin li
brary also
provides a manipulator class called SoTrackballManip,
which wraps the
SoTrackballDragger into the necessary mechanisms for mak
ing direct
insertion of this dragger into a scenegraph possible with
very little
effort.
See also:
SoTrackballManip
Public Member Functions
virtual SoType getTypeId (void) const
virtual const SoNodekitCatalog * getNodekitCatalog (void)
const
SoTrackballDragger (void)
SbBool isAnimationEnabled (void)
void setAnimationEnabled (SbBool newval)
Static Public Member Functions
static SoType getClassTypeId (void) static const SoNodekitCatalog * getClassNodekitCatalog
(void)
static void initClass (void)
Public Attributes
SoSFRotation rotation
SoSFVec3f scaleFactor
Protected Member Functions
virtual const SoFieldData * getFieldData (void) const ~SoTrackballDragger ()
virtual SbBool setUpConnections (SbBool onoff, SbBool
doitalways=0)
virtual void setDefaultOnNonWritingFields (void) void dragStart (void)
void drag (void)
void dragFinish (void)
void setAllPartsActive (SbBool onoroff)
Static Protected Member Functions
static const SoFieldData ** getFieldDataPtr (void) static const SoNodekitCatalog ** getClassNodekitCatalogPtr
(void)
static void startCB (void *f, SoDragger *d) static void motionCB (void *f, SoDragger *d) static void finishCB (void *f, SoDragger *d) static void metaKeyChangeCB (void *f, SoDragger *d) static void fieldSensorCB (void *f, SoSensor *s) static void valueChangedCB (void *f, SoDragger *d)
Protected Attributes
SoSFNode XRotator
SoSFNode XRotatorActive
SoSFNode XRotatorSwitch
SoSFNode YRotator
SoSFNode YRotatorActive
SoSFNode YRotatorSwitch
SoSFNode ZRotator
SoSFNode ZRotatorActive
SoSFNode ZRotatorSwitch
SoSFNode antiSquish
SoSFNode rotator
SoSFNode rotatorActive
SoSFNode rotatorSwitch
SoSFNode surroundScale
SoSFNode userAxis
SoSFNode userAxisActive
SoSFNode userAxisRotation SoSFNode userAxisSwitch
SoSFNode userRotator
SoSFNode userRotatorActive SoSFNode userRotatorSwitch SoFieldSensor * rotFieldSensor SoFieldSensor * scaleFieldSensor
Friends
class SoTrackballDraggerP

Constructor & Destructor Documentation

SoTrackballDragger::SoTrackballDragger (void)
Default constructor, sets up the dragger nodekit catalog
with the
interaction and feedback geometry.
Node kit structure (new entries versus parent class marked
with arrow
prefix):

CLASS SoTrackballDragger
-->"this"
"callbackList"
"topSeparator"
"motionMatrix"
--> "surroundScale"
--> "antiSquish"
"geomSeparator"
--> "rotatorSwitch"
--> "rotator"
--> "rotatorActive"
--> "XRotatorSwitch"
--> "XRotator"
--> "XRotatorActive"
--> "YRotatorSwitch"
--> "YRotator"
--> "YRotatorActive"
--> "ZRotatorSwitch"
--> "ZRotator"
--> "ZRotatorActive"
--> "userAxisRotation"
--> "userAxisSwitch"
--> "userAxis"
--> "userAxisActive"
--> "userRotatorSwitch"
--> "userRotator"
--> "userRotatorActive"
.fi
(See SoBaseKit::printDiagram() for information about the
output formatting.)
Detailed information on catalog parts:

CLASS SoTrackballDragger
PVT "this", SoTrackballDragger --
"callbackList", SoNodeKitListPart [ SoCallback,
SoEventCallback ]
PVT "topSeparator", SoSeparator --PVT "motionMatrix", SoMatrixTransform --
"surroundScale", SoSurroundScale --"antiSquish", SoAntiSquish --
PVT "geomSeparator", SoSeparator --PVT "rotatorSwitch", SoSwitch --
"rotator", SoSeparator --"rotatorActive", SoSeparator --
PVT "XRotatorSwitch", SoSwitch --
"XRotator", SoSeparator --"XRotatorActive", SoSeparator --
PVT "YRotatorSwitch", SoSwitch --
"YRotator", SoSeparator --"YRotatorActive", SoSeparator --
PVT "ZRotatorSwitch", SoSwitch --
"ZRotator", SoSeparator --"ZRotatorActive", SoSeparator --
PVT "userAxisRotation", SoRotation --PVT "userAxisSwitch", SoSwitch --
"userAxis", SoSeparator --"userAxisActive", SoSeparator --
PVT "userRotatorSwitch", SoSwitch --
"userRotator", SoSeparator --"userRotatorActive", SoSeparator --
.fi
(See SoBaseKit::printTable() for information about the
output formatting.)
SoTrackballDragger::~SoTrackballDragger () [protected]
Protected destructor.
(Dragger classes are derived from SoBase, so they are ref
erence counted
and automatically destroyed when their reference count
goes to 0.)

Member Function Documentation

SoType SoTrackballDragger::getClassTypeId (void) [static]
This static method returns the SoType object associated
with objects of
this class.
Reimplemented from SoDragger.
SoType SoTrackballDragger::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 down
ward cast, knows the type
}
else if (node->getTypeId().isOfType(SoGroup::get
ClassTypeId())) {
SoGroup * group = (SoGroup *)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 SoDragger.
const SoFieldData ** SoTrackballDragger::getFieldDataPtr
(void) [static,
protected]
This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer.
Reimplemented from SoDragger.
const SoFieldData * SoTrackballDragger::getFieldData (void)
const
[protected, virtual]
Returns a pointer to the class-wide field data storage ob
ject for this
instance. If no fields are present, returns NULL.
Reimplemented from SoDragger.
const SoNodekitCatalog *

SoTrackballDragger::getClassNodekitCatalog (void)

[static]
Returns the nodekit catalog which defines the layout of
this class'
kit.
Reimplemented from SoDragger.
const SoNodekitCatalog * SoTrackballDragger::getNodekitCatalog
(void) const
[virtual]
Returns the nodekit catalog which defines the layout of
this class'
kit.
Reimplemented from SoDragger.
const SoNodekitCatalog **

SoTrackballDragger::getClassNodekitCatalogPtr

(void) [static, protected] Returns the pointer to the pointer of the nodekit catalog
for this
class.
Reimplemented from SoDragger.
void SoTrackballDragger::initClass (void) [static]
Initializes type system for this dragger class.
Application programmers should usually not have to invoke
this method,
see documentation of SoInteraction::init().
Reimplemented from SoDragger.
SbBool SoTrackballDragger::isAnimationEnabled (void)
Whether or not the trackball will start a spin animation
after a quick
drag-and-release.
Note: this feature is not supported yet in the Coin li
brary, so even
though if TRUE is returned, spin animations will not be
possible to
trigger.
void SoTrackballDragger::setAnimationEnabled (SbBool newval)
Set a flag which will decide whether or not the trackball
will start a
spin animation after a quick drag-and-release.
Note: this feature is not supported yet in the Coin li
brary.
References SoBaseKit::getPart(), and SoSurroundScale::in
validate().
SbBool SoTrackballDragger::setUpConnections (SbBool onoff,

SbBool

doitalways = 0) [protected, virtual] Sets up all internal connections for instances of this
class.
(This method will usually not be of interest to the appli
cation
programmer, unless you want to extend the library with new
custom
nodekits or dragger classes. If so, see the SoBaseKit
class
documentation.)
Reimplemented from SoInteractionKit.
void SoTrackballDragger::setDefaultOnNonWritingFields (void)
[protected,
virtual]
(Be aware that this method is unlikely to be of interest
to the
application programmer who does not want to extend the li
brary with new
custom nodekits or draggers. If you indeed are writing ex
tensions, see
the information in the SoBaseKit class documentation.)
This is a virtual method, and the code in it should call
SoField::setDefault() with argument TRUE on part fields
that should not
be written upon scenegraph export operations.
This is typically done when:
1. field value is NULL and part is NULL by default
2. it is a leaf SoGroup or SoSeparator node with no chil
dren
3. it is a leaf listpart with no children and an SoGroup
or
SoSeparator container
4. it is a non-leaf part and it's of SoGroup type and all
fields are
at their default values
Subclasses should usually override this to do additional
settings for
new member fields. From the subclass, do remember to call
'upwards' to
your superclass' setDefaultOnNonWritingFields() method. Reimplemented from SoDragger.
References SoField::setDefault().
void SoTrackballDragger::dragStart (void) [protected] This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer. Called when dragger is selected (picked) by the user.
void SoTrackballDragger::drag (void) [protected] This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer. Called when user drags the mouse after picking the drag
ger.
void SoTrackballDragger::dragFinish (void) [protected] This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer. Called when mouse button is released after picking and in
teracting with
the dragger.
References SoDragger::getNormalizedLocaterPosition(),
SbRotation::getValue(), and SoDragger::saveStartParame
ters().
void SoTrackballDragger::setAllPartsActive (SbBool onoroff)
[protected]
If the input argument is TRUE, all the geometry parts of
the dragger
will become highligthed, as when active.
Used internally during scaling operations and free-form
rotations.
void SoTrackballDragger::startCB (void * f, SoDragger * d)
[static,
protected]
This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer.
void SoTrackballDragger::motionCB (void * f, SoDragger * d)
[static,
protected]
This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer.
void SoTrackballDragger::finishCB (void * f, SoDragger * d)
[static,
protected]
This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer.
void SoTrackballDragger::metaKeyChangeCB (void * f, SoDragger
* d) [static,
protected]
This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer. References SoSFNode::getClassTypeId(), SoFieldContain
er::getField(),
and SoField::isOfType().
void SoTrackballDragger::fieldSensorCB (void * d, SoSensor *
s) [static,
protected]
This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer. Reimplemented from SoInteractionKit.
void SoTrackballDragger::valueChangedCB (void * f, SoDragger *
d) [static,
protected]
This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer.

Member Data Documentation

SoSFRotation SoTrackballDragger::rotation
This field is continuously updated to contain the rotation
of the
dragger's trackball.
SoSFVec3f SoTrackballDragger::scaleFactor Continuously updated to contain the current vector of
scaling along the
X, Y and Z axes. The three components will always be
equal, as this
dragger only supports uniform scale operations.
SoFieldSensor * SoTrackballDragger::rotFieldSensor [protected] This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer.
SoFieldSensor * SoTrackballDragger::scaleFieldSensor
[protected]
This API member is considered internal to the library, as
it is not
likely to be of interest to the application programmer.

Author

Generated automatically by Doxygen for Coin from the
source code.
Version 2.5.0 28 Jun 2008 SoTrack
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout