SoTransformBoxDragger(3IV)NAMESoTransformBoxDragger (SoXfBoxDrag) - box-like object you scale, rotate,
and translate by dragging with the mouse
INHERITS FROM
SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit >
SoDragger > SoTransformBoxDraggerSYNOPSIS
#include <Inventor_c/draggers/SoTransformBoxDragger.h>
typedef SoTransformBoxDragger
SoXfBoxDrag
Fields from class SoTransformBoxDragger:
SoSFRotation rotation
SoSFVec3f translation
SoSFVec3f scaleFactor
Fields from class SoDragger:
SoSFBool isActive
Fields from class SoInteractionKit:
SoSFEnum renderCaching
SoSFEnum boundingBoxCaching
SoSFEnum renderCulling
SoSFEnum pickCulling
Parts from class SoBaseKit:
(SoNodeKitListPart) callbackList
Functions from class SoTransformBoxDragger:
SoTransformBoxDragger * SoXfBoxDragCreate()
const SoNodekitCatalog * SoXfBoxDragGetClassNkitCat()
SoType SoXfBoxDragGetClassTypeId()
Functions from class SoDragger:
void SoXfBoxDragAddStartCB(SoXfBoxDrag *this, SoDraggerCB
*f, void *userData = NULL)
void SoXfBoxDragRemoveStartCB(SoXfBoxDrag *this,
SoDraggerCB *f, void *userData = NULL)
void SoXfBoxDragAddMotionCB(SoXfBoxDrag *this, SoDraggerCB
*f, void *userData = NULL)
void SoXfBoxDragRemoveMotionCB(SoXfBoxDrag *this,
SoDraggerCB *f, void *userData = NULL)
Page 1SoTransformBoxDragger(3IV)
void SoXfBoxDragAddFinishCB(SoXfBoxDrag *this, SoDraggerCB
*f, void *userData = NULL)
void SoXfBoxDragRemoveFinishCB(SoXfBoxDrag *this,
SoDraggerCB *f, void *userData = NULL)
void SoXfBoxDragAddValueChangedCB(SoXfBoxDrag *this,
SoDraggerCB *f, void *userData = NULL)
void SoXfBoxDragRemoveValueChangedCB(SoXfBoxDrag *this,
SoDraggerCB *f, void *userData = NULL)
SbBool SoXfBoxDragEnableValueChangedCBs(SoXfBoxDrag *this)
void SoXfBoxDragSetMinGesture(SoXfBoxDrag *this, int
pixels)
int SoXfBoxDragGetMinGesture(const SoXfBoxDrag *this)
void SoXfBoxDragSetMinScale(float newMinScale)
float SoXfBoxDragGetMinScale()
Functions from class SoInteractionKit:
SbBool SoXfBoxDragSetPartAsPath(SoXfBoxDrag *this, const
char *partName, SoPath *surrogatePath )
Functions from class SoBaseKit:
const SoNodekitCatalog * SoXfBoxDragGetCat(const SoXfBoxDrag *this)
SoNode * SoXfBoxDragGetPart(SoXfBoxDrag *this, const
char *partName, SbBool makeIfNeeded)
SbString SoXfBoxDragGetPartString(SoXfBoxDrag *this,
const SoBase *part)
SoNodeKitPath * SoXfBoxDragCreatePathToPart(SoXfBoxDrag *this,
const char *partName, SbBool makeIfNeeded,
const SoPath *pathToExtend = NULL)
SbBool SoXfBoxDragSetPart(SoXfBoxDrag *this, const
char *partName, SoNode *newPart)
SbBool SoXfBoxDragSet(SoXfBoxDrag *this, char
*partName, char *parameters)
SbBool SoXfBoxDragSet2(SoXfBoxDrag *this, char
*nameValuePairs)
SbBool SoXfBoxDragIsSearchingChildren()
void SoXfBoxDragSetSearchingChildren(SbBool newVal)
Functions from class SoNode:
void SoXfBoxDragSetOverride(SoXfBoxDrag *this, SbBool
state)
SbBool SoXfBoxDragIsOverride(const SoXfBoxDrag *this)
SoNode * SoXfBoxDragCopy(const SoXfBoxDrag *this, SbBool
copyConnections = FALSE)
SbBool SoXfBoxDragAffectsState(const SoXfBoxDrag *this)
SoNode * SoXfBoxDragGetByName(const char *name)
int SoXfBoxDragGetByNameList(const char *name, SoNodeList
*list)
Functions from class SoFieldContainer:
Page 2SoTransformBoxDragger(3IV)
void SoXfBoxDragSetToDflts(SoXfBoxDrag *this)
SbBool SoXfBoxDragHasDfltVals(const SoXfBoxDrag *this)
SbBool SoXfBoxDragFldsAreEq(const SoXfBoxDrag *this, const
SoFieldContainer *fc)
void SoXfBoxDragCopyFieldVals(SoXfBoxDrag *this, const
SoFieldContainer *fc, SbBool copyConnections =
FALSE)
void SoXfBoxDragGet(SoXfBoxDrag *this, SbString
*fieldDataString)
int SoXfBoxDragGetFields(const SoXfBoxDrag *this,
SoFieldList *resultList)
SoField * SoXfBoxDragGetField(const SoXfBoxDrag *this, const
char *fieldName)
SbBool SoXfBoxDragGetFieldName(const SoXfBoxDrag *this,
const SoField *field, SbName *fieldName)
SbBool SoXfBoxDragIsNotifyEnabled(const SoXfBoxDrag *this)
SbBool SoXfBoxDragEnableNotify(SoXfBoxDrag *this, SbBool
flag)
Functions from class SoBase:
void SoXfBoxDragRef(SoXfBoxDrag *this)
void SoXfBoxDragUnref(const SoXfBoxDrag *this)
void SoXfBoxDragUnrefNoDelete(const SoXfBoxDrag *this)
void SoXfBoxDragTouch(SoXfBoxDrag *this)
SoType SoXfBoxDragGetTypeId(const SoXfBoxDrag *this)
SbBool SoXfBoxDragIsOfType(const SoXfBoxDrag *this, SoType
type)
void SoXfBoxDragSetName(SoXfBoxDrag *this, const char
*name)
SbName SoXfBoxDragGetName(const SoXfBoxDrag *this)
DESCRIPTIONSoTransformBoxDragger is a composite dragger shaped like a box with small
cubes at the corners. Click and drag any of these cubes to scale the box
uniformly. Drag any edge of the box to rotate the whole dragger about its
center, along an axis parallel to that edge. Pick any face of the box for
2D translation in the plane of that face.
Although the box looks just about like a wireframe cube, it is composed
of many different simple draggers arranged in a composite assembly. When
one part is dragged, the transformBox makes sure they all move together.
Each of the parts of the box is a different dragger with the default
geometry changed. The faces of the box are SoTranslate2Draggers, the
edges are SoRotateCylindricalDraggers, and the cubes are an
SoScaleUniformDragger. Drag them and the dragger will update its
translation, rotation and scaleFactor fields to reflect the changes. As
with all draggers, if you change the fields the dragger will move to
match the new settings.
Remember: This is not an SoTransform!. If you want to move other objects
Page 3SoTransformBoxDragger(3IV)
with this dragger, you can either:
[a] Use an SoTransformBoxManip, which is subclassed from SoTransform. It
creates one of these draggers and uses it as the interface to change its
fields. (see the SoTransformBoxManip man 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
SoDraggerSetPart(). The default part geometries are defined as resources
for this SoTransformBoxDragger 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/transformBoxDragger.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
SoSFRotation rotation
Orientation of the dragger.
SoSFVec3f translation
Position of the dragger.
SoSFVec3f scaleFactor
Scale of the dragger.
FUNCTIONSSoTransformBoxDragger * SoXfBoxDragCreate()
Constructor.
const SoNodekitCatalog * SoXfBoxDragGetClassNkitCat()
Returns an SoNodekitCatalog for this class
SoType SoXfBoxDragGetClassTypeId()
Returns type identifier for this class.
CATALOG PARTSPage 4SoTransformBoxDragger(3IV)
___________________________________________________________________
All parts
NULL by
Part Name Part Type Default Type Default
callbackList NodeKitListPart -- yes
surroundScale SurroundScale -- yes
antiSquish AntiSquish -- no
scaler ScaleUniformDragger -- yes
rotator1 RotateCylindricalDragger -- yes
rotator2 RotateCylindricalDragger -- yes
rotator3 RotateCylindricalDragger -- yes
translator1 Translate2Dragger -- yes
translator2 Translate2Dragger -- yes
translator3 Translate2Dragger -- yes
translator4 Translate2Dragger -- yes
translator5 Translate2Dragger -- yes
translator6 Translate2Dragger -- yes
___________________________________________________________________
|
|
________________________________________________________________
Extra information for list parts from above table
Part Name Container Type Permissible Types
Callback, EventCallback
callbackList Separator
________________________________________________________________
|
|
DRAGGER RESOURCES
Resource: transformBoxScalerScaler
Part: scaler.scaler
Appearance: Eight small white cubes at the corners of the box
Description: Picking this initiates uniform 3D scaling of the
dragger.
Resource: transformBoxScalerScalerActive
Part: scaler.scalerActive
Appearance: Yellow version of the regular scaler part
Description: Displayed while the dragger is being scaled.
Resource: transformBoxScalerFeedback
Part: scaler.feedback
Appearance: Empty separator
Description: Removes any feedback geometry created in the
constructor of the SoScaleUniformDragger.
Resource: transformBoxScalerFeedbackActive
Part: scaler.feedbackActive
Appearance: Empty separator
Description: Removes any feedbackActive geometry created in the
constructor of the SoScaleUniformDragger.
Resource: transformBoxRotatorRotator
Page 5SoTransformBoxDragger(3IV)
Parts: rotator1.rotator
rotator2.rotator
rotator3.rotator
Appearance: Four white lines along the edges of the box
Description: Picking this begins rotational dragging. In each of the
three rotateCylindrical draggers, the lines of the
rotator part are oriented parallel to the axis of
rotation.
Resource: transformBoxRotatorRotatorActive
Parts: rotator1.rotatorActive
rotator2.rotatorActive
rotator3.rotatorActive
Appearance: Four yellow lines along the edges of the box
Description: Displayed while the dragger is being rotated
Resource: transformBoxRotatorFeedback
Parts: rotator1.feedback
rotator2.feedback
rotator3.feedback
Appearance: Empty separator
Description: Removes any feedback geometry created in the
constructor of the SoRotateCylindricalDragger.
Resource: transformBoxRotatorFeedbackActive
Parts: rotator1.feedbackActive
rotator2.feedbackActive
rotator3.feedbackActive
Appearance: Thin purple line through center of box
Description: Displayed to show axis of rotation during rotational
dragging.
Resource: transformBoxTranslatorTranslator
Parts: translator1.translator
translator2.translator
translator3.translator
translator4.translator
translator5.translator
translator6.translator
Appearance: Invisible but pickable square surface
Description: Picking these begins 2-D translational dragging within
the plane of one of the sides of the box. The
invisible squares of the six translate2Draggers are
arranged to form the sides of the box. The squares
are easy to discern, although rendered as invisible;
they are bounded by the lines of the rotational
dragger parts.
Resource: transformBoxTranslatorTranslatorActive
Parts: translator1.translatorActive
translator2.translatorActive
translator3.translatorActive
Page 6SoTransformBoxDragger(3IV)
translator4.translatorActive
translator5.translatorActive
translator6.translatorActive
Appearance: Invisible square surface
Description: Shown during 2-D translational dragging.
Resource: transformBoxTranslatorXAxisFeedback
Parts: translator1.xAxisFeedback
translator2.xAxisFeedback
translator3.xAxisFeedback
translator4.xAxisFeedback
translator5.xAxisFeedback
translator6.xAxisFeedback
Appearance: Short thin purple line
Description: Only shown if dragger is moving and the axis is a
permissable direction of motion. When pressing
<shift>, motion is constrained, and this is displayed
only if the primary motion is in the X direction.
Resource: transformBoxTranslatorYAxisFeedback
Parts: translator1.yAxisFeedback
translator2.yAxisFeedback
translator3.yAxisFeedback
translator4.yAxisFeedback
translator5.yAxisFeedback
translator6.yAxisFeedback
Appearance: Short thin purple line
Description: Only shown if dragger is moving and the axis is a
permissable direction of motion. When pressing
<shift>, motion is constrained, and this is displayed
only if the primary motion is in the Y direction.
FILE FORMAT/DEFAULTS
TransformBoxDragger {
renderCaching AUTO
boundingBoxCaching AUTO
renderCulling AUTO
pickCulling AUTO
isActive FALSE
rotation 0 0 1 0
translation 0 0 0
scaleFactor 1 1 1
callbackList NULL
surroundScale NULL
antiSquish AntiSquish {
sizing BIGGEST_DIMENSION }
scaler ScaleUniformDragger {
}
rotator1 RotateCylindricalDragger {
Page 7SoTransformBoxDragger(3IV)
}
rotator2 RotateCylindricalDragger {
}
rotator3 RotateCylindricalDragger {
}
translator1 Translate2Dragger {
}
translator2 Translate2Dragger {
}
translator3 Translate2Dragger {
}
translator4 Translate2Dragger {
}
translator5 Translate2Dragger {
}
translator6 Translate2Dragger {
}
scaler.scaler <transformBoxScalerScaler resource>
scaler.scalerActive <transformBoxScalerScalerActive resource>
scaler.feedback <transformBoxScalerFeedback resource>
scaler.feedbackActive <transformBoxScalerFeedbackActive resource>
rotator1.rotator <transformBoxRotatorRotator resource>
rotator2.rotator <transformBoxRotatorRotator resource>
rotator3.rotator <transformBoxRotatorRotator resource>
rotator1.rotatorActive <transformBoxRotatorRotatorActive resource>
rotator2.rotatorActive <transformBoxRotatorRotatorActive resource>
rotator3.rotatorActive <transformBoxRotatorRotatorActive resource>
rotator1.feedback <transformBoxRotatorFeedback resource>
rotator2.feedback <transformBoxRotatorFeedback resource>
rotator3.feedback <transformBoxRotatorFeedback resource>
rotator1.feedbackActive <transformBoxRotatorFeedbackActive resource>
rotator2.feedbackActive <transformBoxRotatorFeedbackActive resource>
rotator3.feedbackActive <transformBoxRotatorFeedbackActive resource>
translator1.translator <transformBoxTranslatorTranslator resource>
translator2.translator <transformBoxTranslatorTranslator resource>
translator3.translator <transformBoxTranslatorTranslator resource>
translator4.translator <transformBoxTranslatorTranslator resource>
translator5.translator <transformBoxTranslatorTranslator resource>
translator6.translator <transformBoxTranslatorTranslator resource>
translator1.translatorActive <transformBoxTranslatorTranslatorActive resource>
translator2.translatorActive <transformBoxTranslatorTranslatorActive resource>
translator3.translatorActive <transformBoxTranslatorTranslatorActive resource>
translator4.translatorActive <transformBoxTranslatorTranslatorActive resource>
Page 8SoTransformBoxDragger(3IV)
translator5.translatorActive <transformBoxTranslatorTranslatorActive resource>
translator6.translatorActive <transformBoxTranslatorTranslatorActive resource>
translator1.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
translator2.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
translator3.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
translator4.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
translator5.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
translator6.xAxisFeedback <transformBoxTranslatorXAxisFeedback resource>
translator1.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
translator2.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
translator3.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
translator4.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
translator5.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
translator6.yAxisFeedback <transformBoxTranslatorYAxisFeedback resource>
}
SEE ALSO
SoInteractionKit, SoDragger, SoCenterballDragger,
SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger,
SoJackDragger, SoPointLightDragger, SoRotateCylindricalDragger,
SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger,
SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger,
SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger,
SoTrackballDragger, SoTransformerDragger, SoTranslate1Dragger,
SoTranslate2Dragger
Page 9