GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  SODRAGGER (3)

NAME

SoDragger — base class for nodekits that move in response to click-drag-release mouse events

CONTENTS

Inherits From
Synopsis
Description
Fields
Methods
Catalog Parts
File Format/defaults
See Also

INHERITS FROM

SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger

SYNOPSIS

#include <Inventor/draggers/SoDragger.h>

    typedef void    
                    
typedef void         SoDraggerCB(void *userData, SoDragger *dragger)

Fields from class SoDragger:

    SoSFBool    
                    
SoSFBool             isActive

Fields from class SoInteractionKit:

    SoSFEnum    
                    
SoSFEnum             renderCaching    
SoSFEnum    
                    
SoSFEnum             boundingBoxCaching    
SoSFEnum    
                    
SoSFEnum             renderCulling    
SoSFEnum    
                    
SoSFEnum             pickCulling

Parts from class SoBaseKit:

    (SoNodeKitListPart)    
                     
(SoNodeKitListPart)   callbackList

Methods from class SoDragger:

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

Methods from class SoInteractionKit:

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

Methods from class SoBaseKit:

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

Methods from class SoNode:

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

Methods from class SoFieldContainer:

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

Methods from class SoBase:

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

Macros from class SoBaseKit:

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

DESCRIPTION

SoDragger is the base class for all nodekits you move by using the mouse to click-drag-and-release. More specifically, they are operated by a start (mouse button 1 pressed over dragger to pick it), followed by dragging (mouse motion events are interpreted by the dragger and result in some form of motion and/or change to a field), followed by finish (mouse up).

Each dragger has a different paradigm for interpreting mouse motion and changing its fields as a result. Draggers map 2D mouse motion into motion of a point on 3D lines, planes, spheres or cylinders. (See the SbProjector reference pages.) Then they react to this motion of a point through 3-space by scaling, translating, or rotating. For example, SoTranslate2Dragger maps mouse motion onto a 3D plane, then translates to follow the cursor as it moves within that plane.

Every dragger has fields that describe its current state. Scaling draggers have a scaleFactor field, rotational draggers have a rotation field, etc. All draggers have the isActive field, defined in this class. It is TRUE while the dragger is being dragged, FALSE otherwise.

Draggers that have only one part to pick and one motion field are called simple draggers. Examples are the SoRotateDiscDragger, SoScale1Dragger, and SoTranslate2Dragger.

Draggers that create assemblies out of other draggers and then orchestrate the motion of the whole assembly are call composite draggers. SoTransformBoxDragger is a composite dragger made entirely of simple draggers. SoDirectionalLightDragger contains both a simple dragger (SoRotateSphericalDragger) and a composite dragger (SoDragPointDragger) When using a composite dragger, the fields of the composite dragger are the ones you should work with. Draggers lower down in the assemblage usually have zeroed out values. For example, when you drag the face of a transformBox, an SoTranslate2Dragger, the transformBox "steals" the translation from the child dragger and transfers it up to the top of the composite dragger, where it effects all pieces of the assemblage.

Draggers always keep their fields up to date, including while they are being dragged. So you can use field-to-field connections and engines to connect dragger values to other parts of your scene graph. Hence draggers can be easily utilized as input devices for mouse-driven 3D interface elements. You can also register value-changed callbacks, which are called whenever any of the fields is changed.

Also, if you set the field of a dragger through some method other than dragging, (by calling setValue(), for example), the dragger’s internal SoFieldSensor will sense this and the dragger will move to satisfy that new value.

This makes it easy to constrain draggers to keep their fields within certain limits: if the limit is exceeded, just set it back to the exceeded maximum or minimum. You can do this even as the dragger is in use, by constraining the field value within a value-changed callback that you add with addValueChangedCallback(). In this case, be sure to temporarily disable the other value-changed callbacks using enableValueChangedCallbacks(). Doing this will prevent infinite-looping; changing the value followed by calling the callbacks which change the value ad infinitum.

When you drag a dragger, the dragger only moves itself. Draggers do not change the state or affect objects that follow in the scene graph. For example a dragger does not ever behave like an SoTransform and change the current transformation matrix. Draggers are not transforms, even if they have field names like translation, rotation, scaleFactor. Many draggers, such as SoTrackballDragger, have a corresponding SoTransformManip, in this case SoTrackballManip. The manipulator is a subclass of SoTransform, and affects other objects in the scene; it uses a trackball dragger to provide its user interface. In this way, draggers are employed extensively by manipulators. Callback functions on the dragger allow its employer to be notified of start, motion, finish, and value changes. In all cases, the callback function is passed a pointer to the dragger which initiated the callback. (See the various man pages for more details on specific draggers and manipulators).

All draggers are nodekits. However, draggers do not list their parts in the Parts section of the reference page. Instead, there is a section called Dragger Resources, more suited to describe the parts made available to the programmer. Because of space limitations, the Dragger Resources section only appears in the online versions of the reference pages. Each dragger has some parts you can pick on, and other parts that replace them when they are active or moving. These active parts are often just the same geometry in another color. Draggers also have pieces for displaying feedback. Each of these pieces has a default scene graph, as well as a special function within the dragger. Each part also has a resource name. All this information is contained in the DRAGGER RESOURCES section.

Since draggers are nodekits, you can set the parts in any instance of a dragger using setPart().

But draggers also give each part a resource name. When a dragger builds a part, it looks in the global dictionary for the node with that resourceName. By putting a new entry in the dictionary, you can override that default. The default part geometries are defined as resources for each class, and each class has a file you can change to alter the defaults. The files are listed in each dragger’s man page. You can make your program use different default resources for the parts by copying the listed file from the directory /usr/share/data/draggerDefaults into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory.

FIELDS

    SoSFBool    
                    
SoSFBool             isActive
TRUE when mouse is down and dragging, else FALSE.

METHODS

    void    
                    
void                 addStartCallback(SoDraggerCB *f, void *userData = NULL)    
void    
                    
void                 removeStartCallback(SoDraggerCB *f, void *userData = NULL)
Start callbacks are made after the mouse button 1 goes down and the dragger determines that it has been picked. If it is going to begin dragging, it grabs events and invokes the startCallbacks.

    void    
                    
void                 addMotionCallback(SoDraggerCB *f, void *userData = NULL)    
void    
                    
void                 removeMotionCallback(SoDraggerCB *f, void *userData = NULL)
Motion callbacks are called after each movement of the mouse during dragging.

    void    
                    
void                 addFinishCallback(SoDraggerCB *f, void *userData = NULL)    
void    
                    
void                 removeFinishCallback(SoDraggerCB *f, void *userData = NULL)
Finish callbacks are made after dragging ends and the dragger has stopped grabbing events.

    void    
                    
void                 addValueChangedCallback(SoDraggerCB *f, void *userData = NULL)    
void    
                    
void                 removeValueChangedCallback(SoDraggerCB *f, void *userData = NULL)
Value-changed callbacks are made after a dragger changes any of its fields. This does not include changes to the isActive field. See also enableValueChangedCallbacks.

    SbBool    
                    
SbBool               enableValueChangedCallbacks()
You can temporarily disable a dragger’s valueChangedCallbacks. The method returns a value that tells you if callbacks were already enabled. Use this method if you write a valueChanged callback of your own and you change one of the dragger’s fields within the callback. (For example, when writing a callback to constrain your dragger). Disable first, then change the field, then re-enable the callbacks (if they were enabled to start with). All this prevents you from entering an infinite loop of changing values, calling callbacks which change values, etc.

    void    
                    
void                 setMinGesture(int pixels)    
int    
                    
int                  getMinGesture() const
Set and get the number of pixels of movement required to initiate a constraint gesture. Default is 8.

    static void    
                    
static void          setMinScale(float newMinScale)    
static float    
                    
static float         getMinScale()
The smallest scale that any dragger will write. If the user attempts to go below this amount, the dragger will set it to this minimum. Default is .001

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

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

CATALOG PARTS

All parts
   NULL by
Part NamePart TypeDefault TypeDefault
callbackListNodeKitListPart--yes

Extra information for list parts from above table
Part NameContainer TypePermissible Types 
callbackListSeparatorCallback, EventCallback

FILE FORMAT/DEFAULTS

Dragger {



renderCaching       AUTO
boundingBoxCaching  AUTO
renderCulling       AUTO
pickCulling         AUTO
isActive            FALSE
callbackList        NULL


}

SEE ALSO

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

Search for    or go to Top of page |  Section 3 |  Main Index


SODRAGGER(3IV) (-->)

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.