man SoTransformerDragger (Fonctions bibliothèques) -

NAME

SoTransformerDragger -

SYNOPSIS



#include <Inventor/draggers/SoTransformerDragger.h>

Inherits SoDragger.

Detailed Description

The SoTransformerDragger provides geometry for translation, scaling and rotations.

Here's how the dragger looks with its default geometry in the inactive state:.

Translate the dragger by clicking and dragging any of the (invisible) sides. Translation will default be done in the plane of the side the end-user selected. The user can hold down a SHIFT key to lock translation to a single of the axes in the plane. By holding down a CTRL key instead, translation can be done along the plane's normal vector.

Scaling is done by dragging the corner cubes. By default, uniform scaling will be done. Hold down SHIFT before selecting any of the corners to do non-uniform scaling. Uniform scaling towards a corner-point can be accomplished by holding down CTRL before clicking and dragging one of the cubes.

Rotation is done by dragging any of the 6 end-markers of the axis cross. The initial drag direction decides which orientation the rotation will be done in. Hold down SHIFT to do free-form rotation around the sphere instead.

This is a big and complex dragger which needs a fair amount of proper documentation when provided in end-user applications. If what you are trying to accomplish in your application does not really demand most of the features of this dragger, you are advised to investigate whether or not any of the less complex draggers can fulfill your requirements -- so you can provide an as simple as possible user interface to your end-users.

For the application programmer's convenience, the Coin library also provides a manipulator class called SoTransformerManip, which wraps the SoTransformerDragger into the necessary mechanisms for making direct insertion of this dragger into a scenegraph possible with very little effort.

See also: SoTransformerManip

Public Types

enum State { INACTIVE, RIT_X_ROTATE, TOP_Y_ROTATE, FNT_Z_ROTATE, LFT_X_ROTATE, BOT_Y_ROTATE, BAK_Z_ROTATE, PX_PY_PZ_3D_SCALE, PX_PY_NZ_3D_SCALE, PX_NY_PZ_3D_SCALE, PX_NY_NZ_3D_SCALE, NX_PY_PZ_3D_SCALE, NX_PY_NZ_3D_SCALE, NX_NY_PZ_3D_SCALE, NX_NY_NZ_3D_SCALE, RIT_TRANSLATE, TOP_TRANSLATE, FNT_TRANSLATE, LFT_TRANSLATE, BOT_TRANSLATE, BAK_TRANSLATE }

Public Member Functions

virtual SoType getTypeId (void) const

virtual const SoNodekitCatalog * getNodekitCatalog (void) const

SoTransformerDragger (void)

State getCurrentState (void)

void unsquishKnobs (void)

SbBool isLocateHighlighting (void)

void setLocateHighlighting (SbBool onoff)

SbVec3f getBoxPointInWorldSpace (const SbVec3f &pointonunitbox)

SbVec3f getBoxDirInWorldSpace (const SbVec3f &dironunitbox)

SbVec3f getWorldPointInBoxSpace (const SbVec3f &pointinworldspace)

SbVec2f getWorldPointInPixelSpace (const SbVec3f &thepoint)

SbVec3f getInteractiveCenterInBoxSpace (void)

Static Public Member Functions

static SoType getClassTypeId (void)

static const SoNodekitCatalog * getClassNodekitCatalog (void)

static void initClass (void)

static void setColinearThreshold (int newval)

static int getColinearThreshold (void)

Public Attributes

SoSFRotation rotation

SoSFVec3f translation

SoSFVec3f scaleFactor

SoSFFloat minDiscRotDot

Protected Member Functions

virtual const SoFieldData * getFieldData (void) const

~SoTransformerDragger ()

virtual SbBool setUpConnections (SbBool onoff, SbBool doitalways=0)

virtual void setDefaultOnNonWritingFields (void)

void dragStart (void)

void drag (void)

void dragFinish (void)

void updateAntiSquishList (void)

void setAllPartSwitches (int scalewhich, int rotatewhich, int translatewhich)

int getMouseGestureDirection (SbBool x_ok, SbBool y_ok, SbBool z_ok)

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 *, SoDragger *)

static void fieldSensorCB (void *f, SoSensor *s)

static void valueChangedCB (void *f, SoDragger *d)

static int getIgnoreAxis (SbVec2f axis[3][2], SbBool x_ok, SbBool y_ok, SbBool z_ok)

static void makeMinorAxisPerpendicularIfColinear (SbVec2f origin, SbVec2f axisends[3][2], int index_a, int index_b)

static SbBool isColinear (SbVec2f a1[2], SbVec2f a2[2], int pixels)

Protected Attributes

SoSFNode axisFeedbackLocation

SoSFNode axisFeedbackSep

SoSFNode circleFeedbackAntiSquish

SoSFNode circleFeedbackSep

SoSFNode circleFeedbackTransform

SoSFNode circleFeedbackTransformSwitch

SoSFNode negXRoundWallFeedback

SoSFNode negXWallFeedback

SoSFNode negXWallFeedbackSwitch

SoSFNode negYRoundWallFeedback

SoSFNode negYWallFeedback

SoSFNode negYWallFeedbackSwitch

SoSFNode negZRoundWallFeedback

SoSFNode negZWallFeedback

SoSFNode negZWallFeedbackSwitch

SoSFNode overallStyle

SoSFNode posXRoundWallFeedback

SoSFNode posXWallFeedback

SoSFNode posXWallFeedbackSwitch

SoSFNode posYRoundWallFeedback

SoSFNode posYWallFeedback

SoSFNode posYWallFeedbackSwitch

SoSFNode posZRoundWallFeedback

SoSFNode posZWallFeedback

SoSFNode posZWallFeedbackSwitch

SoSFNode radialFeedback

SoSFNode radialFeedbackSwitch

SoSFNode rotator1

SoSFNode rotator1Active

SoSFNode rotator1LocateGroup

SoSFNode rotator1Switch

SoSFNode rotator2

SoSFNode rotator2Active

SoSFNode rotator2LocateGroup

SoSFNode rotator2Switch

SoSFNode rotator3

SoSFNode rotator3Active

SoSFNode rotator3LocateGroup

SoSFNode rotator3Switch

SoSFNode rotator4

SoSFNode rotator4Active

SoSFNode rotator4LocateGroup

SoSFNode rotator4Switch

SoSFNode rotator5

SoSFNode rotator5Active

SoSFNode rotator5LocateGroup

SoSFNode rotator5Switch

SoSFNode rotator6

SoSFNode rotator6Active

SoSFNode rotator6LocateGroup

SoSFNode rotator6Switch

SoSFNode rotatorSep

SoSFNode scale1

SoSFNode scale1Active

SoSFNode scale1LocateGroup

SoSFNode scale1Switch

SoSFNode scale2

SoSFNode scale2Active

SoSFNode scale2LocateGroup

SoSFNode scale2Switch

SoSFNode scale3

SoSFNode scale3Active

SoSFNode scale3LocateGroup

SoSFNode scale3Switch

SoSFNode scale4

SoSFNode scale4Active

SoSFNode scale4LocateGroup

SoSFNode scale4Switch

SoSFNode scale5

SoSFNode scale5Active

SoSFNode scale5LocateGroup

SoSFNode scale5Switch

SoSFNode scale6

SoSFNode scale6Active

SoSFNode scale6LocateGroup

SoSFNode scale6Switch

SoSFNode scale7

SoSFNode scale7Active

SoSFNode scale7LocateGroup

SoSFNode scale7Switch

SoSFNode scale8

SoSFNode scale8Active

SoSFNode scale8LocateGroup

SoSFNode scale8Switch

SoSFNode scaleBoxFeedback

SoSFNode scaleBoxFeedbackSwitch

SoSFNode scaleSep

SoSFNode surroundScale

SoSFNode translateBoxFeedback

SoSFNode translateBoxFeedbackRotation

SoSFNode translateBoxFeedbackSep

SoSFNode translateBoxFeedbackSwitch

SoSFNode translator1

SoSFNode translator1Active

SoSFNode translator1LocateGroup

SoSFNode translator1Switch

SoSFNode translator2

SoSFNode translator2Active

SoSFNode translator2LocateGroup

SoSFNode translator2Switch

SoSFNode translator3

SoSFNode translator3Active

SoSFNode translator3LocateGroup

SoSFNode translator3Switch

SoSFNode translator4

SoSFNode translator4Active

SoSFNode translator4LocateGroup

SoSFNode translator4Switch

SoSFNode translator5

SoSFNode translator5Active

SoSFNode translator5LocateGroup

SoSFNode translator5Switch

SoSFNode translator6

SoSFNode translator6Active

SoSFNode translator6LocateGroup

SoSFNode translator6Switch

SoSFNode translatorSep

SoSFNode xAxisFeedbackActive

SoSFNode xAxisFeedbackSelect

SoSFNode xAxisFeedbackSwitch

SoSFNode xCircleFeedback

SoSFNode xCircleFeedbackSwitch

SoSFNode xCrosshairFeedback

SoSFNode yAxisFeedbackActive

SoSFNode yAxisFeedbackSelect

SoSFNode yAxisFeedbackSwitch

SoSFNode yCircleFeedback

SoSFNode yCircleFeedbackSwitch

SoSFNode yCrosshairFeedback

SoSFNode zAxisFeedbackActive

SoSFNode zAxisFeedbackSelect

SoSFNode zAxisFeedbackSwitch

SoSFNode zCircleFeedback

SoSFNode zCircleFeedbackSwitch

SoSFNode zCrosshairFeedback

SoFieldSensor * translFieldSensor

SoFieldSensor * scaleFieldSensor

SoFieldSensor * rotateFieldSensor

SoNodeList antiSquishList

Friends

class SoTransformerDraggerP

Member Enumeration Documentation

enum SoTransformerDragger::State

The various possible states the dragger might be in at any given time. That is: either SoTransformerDragger::INACTIVE if there's no interaction, or any of the other values to indicate what operation the end-user is currently executing.

Constructor & Destructor Documentation

SoTransformerDragger::SoTransformerDragger (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 SoTransformerDragger
  -->"this"
        "callbackList"
        "topSeparator"
           "motionMatrix"
  -->      "surroundScale"
  -->      "overallStyle"
           "geomSeparator"
  -->         "axisFeedbackSep"
  -->            "axisFeedbackLocation"
  -->            "xAxisFeedbackSwitch"
  -->               "xAxisFeedbackActive"
  -->               "xAxisFeedbackSelect"
  -->               "xCrosshairFeedback"
  -->            "yAxisFeedbackSwitch"
  -->               "yAxisFeedbackActive"
  -->               "yAxisFeedbackSelect"
  -->               "yCrosshairFeedback"
  -->            "zAxisFeedbackSwitch"
  -->               "zAxisFeedbackActive"
  -->               "zAxisFeedbackSelect"
  -->               "zCrosshairFeedback"
  -->         "translateBoxFeedbackSep"
  -->            "translateBoxFeedbackSwitch"
  -->               "translateBoxFeedbackRotation"
  -->               "translateBoxFeedback"
  -->         "scaleBoxFeedbackSwitch"
  -->            "scaleBoxFeedback"
  -->         "posXWallFeedbackSwitch"
  -->            "posXWallFeedback"
  -->            "posXRoundWallFeedback"
  -->         "posYWallFeedbackSwitch"
  -->            "posYWallFeedback"
  -->            "posYRoundWallFeedback"
  -->         "posZWallFeedbackSwitch"
  -->            "posZWallFeedback"
  -->            "posZRoundWallFeedback"
  -->         "negXWallFeedbackSwitch"
  -->            "negXWallFeedback"
  -->            "negXRoundWallFeedback"
  -->         "negYWallFeedbackSwitch"
  -->            "negYWallFeedback"
  -->            "negYRoundWallFeedback"
  -->         "negZWallFeedbackSwitch"
  -->            "negZWallFeedback"
  -->            "negZRoundWallFeedback"
  -->         "radialFeedbackSwitch"
  -->            "radialFeedback"
  -->      "translatorSep"
  -->         "translator1Switch"
  -->            "translator1LocateGroup"
  -->               "translator1"
  -->            "translator1Active"
  -->         "translator2Switch"
  -->            "translator2LocateGroup"
  -->               "translator2"
  -->            "translator2Active"
  -->         "translator3Switch"
  -->            "translator3LocateGroup"
  -->               "translator3"
  -->            "translator3Active"
  -->         "translator4Switch"
  -->            "translator4LocateGroup"
  -->               "translator4"
  -->            "translator4Active"
  -->         "translator5Switch"
  -->            "translator5LocateGroup"
  -->               "translator5"
  -->            "translator5Active"
  -->         "translator6Switch"
  -->            "translator6LocateGroup"
  -->               "translator6"
  -->            "translator6Active"
  -->      "rotatorSep"
  -->         "rotator1Switch"
  -->            "rotator1LocateGroup"
  -->               "rotator1"
  -->            "rotator1Active"
  -->         "rotator2Switch"
  -->            "rotator2LocateGroup"
  -->               "rotator2"
  -->            "rotator2Active"
  -->         "rotator3Switch"
  -->            "rotator3LocateGroup"
  -->               "rotator3"
  -->            "rotator3Active"
  -->         "rotator4Switch"
  -->            "rotator4LocateGroup"
  -->               "rotator4"
  -->            "rotator4Active"
  -->         "rotator5Switch"
  -->            "rotator5LocateGroup"
  -->               "rotator5"
  -->            "rotator5Active"
  -->         "rotator6Switch"
  -->            "rotator6LocateGroup"
  -->               "rotator6"
  -->            "rotator6Active"
  -->      "scaleSep"
  -->         "scale1Switch"
  -->            "scale1LocateGroup"
  -->               "scale1"
  -->            "scale1Active"
  -->         "scale2Switch"
  -->            "scale2LocateGroup"
  -->               "scale2"
  -->            "scale2Active"
  -->         "scale3Switch"
  -->            "scale3LocateGroup"
  -->               "scale3"
  -->            "scale3Active"
  -->         "scale4Switch"
  -->            "scale4LocateGroup"
  -->               "scale4"
  -->            "scale4Active"
  -->         "scale5Switch"
  -->            "scale5LocateGroup"
  -->               "scale5"
  -->            "scale5Active"
  -->         "scale6Switch"
  -->            "scale6LocateGroup"
  -->               "scale6"
  -->            "scale6Active"
  -->         "scale7Switch"
  -->            "scale7LocateGroup"
  -->               "scale7"
  -->            "scale7Active"
  -->         "scale8Switch"
  -->            "scale8LocateGroup"
  -->               "scale8"
  -->            "scale8Active"
  -->      "circleFeedbackSep"
  -->         "circleFeedbackTransformSwitch"
  -->            "circleFeedbackAntiSquish"
  -->            "circleFeedbackTransform"
  -->         "xCircleFeedbackSwitch"
  -->            "xCircleFeedback"
  -->         "yCircleFeedbackSwitch"
  -->            "yCircleFeedback"
  -->         "zCircleFeedbackSwitch"
  -->            "zCircleFeedback"
  .fi


(See SoBaseKit::printDiagram() for information about the output formatting.)

Detailed information on catalog parts:


  CLASS SoTransformerDragger
  PVT   "this",  SoTransformerDragger  --- 
        "callbackList",  SoNodeKitListPart [ SoCallback, SoEventCallback ] 
  PVT   "topSeparator",  SoSeparator  --- 
  PVT   "motionMatrix",  SoMatrixTransform  --- 
        "surroundScale",  SoSurroundScale  --- 
  PVT   "overallStyle",  SoGroup  --- 
  PVT   "geomSeparator",  SoSeparator  --- 
  PVT   "translatorSep",  SoSeparator  --- 
  PVT   "translator1Switch",  SoSwitch  --- 
  PVT   "translator1LocateGroup",  SoLocateHighlight  --- 
        "translator1",  SoSeparator  --- 
        "translator1Active",  SoSeparator  --- 
  PVT   "translator2Switch",  SoSwitch  --- 
  PVT   "translator2LocateGroup",  SoLocateHighlight  --- 
        "translator2",  SoSeparator  --- 
        "translator2Active",  SoSeparator  --- 
  PVT   "translator3Switch",  SoSwitch  --- 
  PVT   "translator3LocateGroup",  SoLocateHighlight  --- 
        "translator3",  SoSeparator  --- 
        "translator3Active",  SoSeparator  --- 
  PVT   "translator4Switch",  SoSwitch  --- 
  PVT   "translator4LocateGroup",  SoLocateHighlight  --- 
        "translator4",  SoSeparator  --- 
        "translator4Active",  SoSeparator  --- 
  PVT   "translator5Switch",  SoSwitch  --- 
  PVT   "translator5LocateGroup",  SoLocateHighlight  --- 
        "translator5",  SoSeparator  --- 
        "translator5Active",  SoSeparator  --- 
  PVT   "translator6Switch",  SoSwitch  --- 
  PVT   "translator6LocateGroup",  SoLocateHighlight  --- 
        "translator6",  SoSeparator  --- 
        "translator6Active",  SoSeparator  --- 
  PVT   "rotatorSep",  SoSeparator  --- 
  PVT   "rotator1Switch",  SoSwitch  --- 
  PVT   "rotator1LocateGroup",  SoLocateHighlight  --- 
        "rotator1",  SoSeparator  --- 
        "rotator1Active",  SoSeparator  --- 
  PVT   "rotator2Switch",  SoSwitch  --- 
  PVT   "rotator2LocateGroup",  SoLocateHighlight  --- 
        "rotator2",  SoSeparator  --- 
        "rotator2Active",  SoSeparator  --- 
  PVT   "rotator3Switch",  SoSwitch  --- 
  PVT   "rotator3LocateGroup",  SoLocateHighlight  --- 
        "rotator3",  SoSeparator  --- 
        "rotator3Active",  SoSeparator  --- 
  PVT   "rotator4Switch",  SoSwitch  --- 
  PVT   "rotator4LocateGroup",  SoLocateHighlight  --- 
        "rotator4",  SoSeparator  --- 
        "rotator4Active",  SoSeparator  --- 
  PVT   "rotator5Switch",  SoSwitch  --- 
  PVT   "rotator5LocateGroup",  SoLocateHighlight  --- 
        "rotator5",  SoSeparator  --- 
        "rotator5Active",  SoSeparator  --- 
  PVT   "rotator6Switch",  SoSwitch  --- 
  PVT   "rotator6LocateGroup",  SoLocateHighlight  --- 
        "rotator6",  SoSeparator  --- 
        "rotator6Active",  SoSeparator  --- 
  PVT   "scaleSep",  SoSeparator  --- 
  PVT   "scale1Switch",  SoSwitch  --- 
  PVT   "scale1LocateGroup",  SoLocateHighlight  --- 
        "scale1",  SoSeparator  --- 
        "scale1Active",  SoSeparator  --- 
  PVT   "scale2Switch",  SoSwitch  --- 
  PVT   "scale2LocateGroup",  SoLocateHighlight  --- 
        "scale2",  SoSeparator  --- 
        "scale2Active",  SoSeparator  --- 
  PVT   "scale3Switch",  SoSwitch  --- 
  PVT   "scale3LocateGroup",  SoLocateHighlight  --- 
        "scale3",  SoSeparator  --- 
        "scale3Active",  SoSeparator  --- 
  PVT   "scale4Switch",  SoSwitch  --- 
  PVT   "scale4LocateGroup",  SoLocateHighlight  --- 
        "scale4",  SoSeparator  --- 
        "scale4Active",  SoSeparator  --- 
  PVT   "scale5Switch",  SoSwitch  --- 
  PVT   "scale5LocateGroup",  SoLocateHighlight  --- 
        "scale5",  SoSeparator  --- 
        "scale5Active",  SoSeparator  --- 
  PVT   "scale6Switch",  SoSwitch  --- 
  PVT   "scale6LocateGroup",  SoLocateHighlight  --- 
        "scale6",  SoSeparator  --- 
        "scale6Active",  SoSeparator  --- 
  PVT   "scale7Switch",  SoSwitch  --- 
  PVT   "scale7LocateGroup",  SoLocateHighlight  --- 
        "scale7",  SoSeparator  --- 
        "scale7Active",  SoSeparator  --- 
  PVT   "scale8Switch",  SoSwitch  --- 
  PVT   "scale8LocateGroup",  SoLocateHighlight  --- 
        "scale8",  SoSeparator  --- 
        "scale8Active",  SoSeparator  --- 
  PVT   "circleFeedbackSep",  SoSeparator  --- 
  PVT   "circleFeedbackTransformSwitch",  SoSwitch  --- 
  PVT   "circleFeedbackAntiSquish",  SoAntiSquish  --- 
  PVT   "circleFeedbackTransform",  SoTransform  --- 
  PVT   "xCircleFeedbackSwitch",  SoSwitch  --- 
        "xCircleFeedback",  SoSeparator  --- 
  PVT   "yCircleFeedbackSwitch",  SoSwitch  --- 
        "yCircleFeedback",  SoSeparator  --- 
  PVT   "zCircleFeedbackSwitch",  SoSwitch  --- 
        "zCircleFeedback",  SoSeparator  --- 
  PVT   "axisFeedbackSep",  SoSeparator  --- 
  PVT   "axisFeedbackLocation",  SoTranslation  --- 
  PVT   "xAxisFeedbackSwitch",  SoSwitch  --- 
        "xAxisFeedbackActive",  SoSeparator  --- 
        "xAxisFeedbackSelect",  SoSeparator  --- 
        "xCrosshairFeedback",  SoSeparator  --- 
  PVT   "yAxisFeedbackSwitch",  SoSwitch  --- 
        "yAxisFeedbackActive",  SoSeparator  --- 
        "yAxisFeedbackSelect",  SoSeparator  --- 
        "yCrosshairFeedback",  SoSeparator  --- 
  PVT   "zAxisFeedbackSwitch",  SoSwitch  --- 
        "zAxisFeedbackActive",  SoSeparator  --- 
        "zAxisFeedbackSelect",  SoSeparator  --- 
        "zCrosshairFeedback",  SoSeparator  --- 
  PVT   "translateBoxFeedbackSep",  SoSeparator  --- 
  PVT   "translateBoxFeedbackSwitch",  SoSwitch  --- 
  PVT   "translateBoxFeedbackRotation",  SoRotation  --- 
        "translateBoxFeedback",  SoSeparator  --- 
  PVT   "scaleBoxFeedbackSwitch",  SoSwitch  --- 
        "scaleBoxFeedback",  SoSeparator  --- 
  PVT   "posXWallFeedbackSwitch",  SoSwitch  --- 
        "posXWallFeedback",  SoSeparator  --- 
        "posXRoundWallFeedback",  SoSeparator  --- 
  PVT   "posYWallFeedbackSwitch",  SoSwitch  --- 
        "posYWallFeedback",  SoSeparator  --- 
        "posYRoundWallFeedback",  SoSeparator  --- 
  PVT   "posZWallFeedbackSwitch",  SoSwitch  --- 
        "posZWallFeedback",  SoSeparator  --- 
        "posZRoundWallFeedback",  SoSeparator  --- 
  PVT   "negXWallFeedbackSwitch",  SoSwitch  --- 
        "negXWallFeedback",  SoSeparator  --- 
        "negXRoundWallFeedback",  SoSeparator  --- 
  PVT   "negYWallFeedbackSwitch",  SoSwitch  --- 
        "negYWallFeedback",  SoSeparator  --- 
        "negYRoundWallFeedback",  SoSeparator  --- 
  PVT   "negZWallFeedbackSwitch",  SoSwitch  --- 
        "negZWallFeedback",  SoSeparator  --- 
        "negZRoundWallFeedback",  SoSeparator  --- 
  PVT   "radialFeedbackSwitch",  SoSwitch  --- 
        "radialFeedback",  SoSeparator  --- 
  .fi


(See SoBaseKit::printTable() for information about the output formatting.) 

SoTransformerDragger::~SoTransformerDragger () [protected]

Protected destructor.

(Dragger classes are derived from SoBase, so they are reference counted and automatically destroyed when their reference count goes to 0.)

Member Function Documentation

SoType SoTransformerDragger::getClassTypeId (void) [static]

This static method returns the SoType object associated with objects of this class.

Reimplemented from SoDragger.

SoType SoTransformerDragger::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
    }
    else if (node->getTypeId().isOfType(SoGroup::getClassTypeId())) {
      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 ** SoTransformerDragger::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 * SoTransformerDragger::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 SoDragger.

const SoNodekitCatalog * SoTransformerDragger::getClassNodekitCatalog (void) [static]

Returns the nodekit catalog which defines the layout of this class' kit.

Reimplemented from SoDragger.

const SoNodekitCatalog * SoTransformerDragger::getNodekitCatalog (void) const [virtual]

Returns the nodekit catalog which defines the layout of this class' kit.

Reimplemented from SoDragger.

const SoNodekitCatalog ** SoTransformerDragger::getClassNodekitCatalogPtr (void) [static, protected]

Returns the pointer to the pointer of the nodekit catalog for this class.

Reimplemented from SoDragger.

void SoTransformerDragger::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.

SoTransformerDragger::State SoTransformerDragger::getCurrentState (void)

Returns an indicator for the current operation executed on the dragger by the end-user -- or SoTransformerDragger::INACTIVE if none.

SbBool SoTransformerDragger::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 application 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 SoTransformerDragger::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 library with new custom nodekits or draggers. If you indeed are writing extensions, 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 children

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.

void SoTransformerDragger::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 SoTransformerDragger::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 SoTransformerDragger::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 SoTransformerDragger::metaKeyChangeCB (void *, 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 SoTransformerDragger::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 SoTransformerDragger::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.

void SoTransformerDragger::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 SoTransformerDragger::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 dragger.

void SoTransformerDragger::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 interacting with the dragger.

int SoTransformerDragger::getMouseGestureDirection (SbBool x_ok, SbBool y_ok, SbBool z_ok) [protected]

Not implemented in Coin; should probably not have been public in the Open Inventor API. We'll consider to implement it if requested.

int SoTransformerDragger::getIgnoreAxis (SbVec2f axis[3][2], SbBool x_ok, SbBool y_ok, SbBool z_ok) [static, protected]

Not implemented in Coin; should probably not have been public in the Open Inventor API. We'll consider to implement it if requested.

void SoTransformerDragger::makeMinorAxisPerpendicularIfColinear (SbVec2f origin, SbVec2f axisends[3][2], int index_a, int index_b) [static, protected]

Not implemented in Coin; should probably not have been public in the Open Inventor API. We'll consider to implement it if requested.

SbBool SoTransformerDragger::isColinear (SbVec2f a1[2], SbVec2f a2[2], int pixels) [static, protected]

Not implemented in Coin; should probably not have been public in the Open Inventor API. We'll consider to implement it if requested.

Member Data Documentation

SoSFRotation SoTransformerDragger::rotation

This field is continuously updated to contain the orientation of the dragger.

SoSFVec3f SoTransformerDragger::translation

The dragger's offset position from the local origo.

SoSFVec3f SoTransformerDragger::scaleFactor

Continuously updated to contain the current vector of scaling along the X, Y and Z axes.

SoFieldSensor * SoTransformerDragger::translFieldSensor [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

SoFieldSensor * SoTransformerDragger::scaleFieldSensor [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

SoFieldSensor * SoTransformerDragger::rotateFieldSensor [protected]

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

SoNodeList SoTransformerDragger::antiSquishList [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.