Coin Logo http://www.sim.no
http://www.coin3d.org

SoCenterballDragger.h
1 #ifndef COIN_SOCENTERBALLDRAGGER_H
2 #define COIN_SOCENTERBALLDRAGGER_H
3 
4 /**************************************************************************\
5  *
6  * This file is part of the Coin 3D visualization library.
7  * Copyright (C) 1998-2007 by Systems in Motion. All rights reserved.
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License
11  * ("GPL") version 2 as published by the Free Software Foundation.
12  * See the file LICENSE.GPL at the root directory of this source
13  * distribution for additional information about the GNU GPL.
14  *
15  * For using Coin with software that can not be combined with the GNU
16  * GPL, and for taking advantage of the additional benefits of our
17  * support services, please contact Systems in Motion about acquiring
18  * a Coin Professional Edition License.
19  *
20  * See http://www.coin3d.org/ for more information.
21  *
22  * Systems in Motion, Postboks 1283, Pirsenteret, 7462 Trondheim, NORWAY.
23  * http://www.sim.no/ sales@sim.no coin-support@coin3d.org
24  *
25 \**************************************************************************/
26 
27 #include <Inventor/draggers/SoDragger.h>
28 #include <Inventor/fields/SoSFRotation.h>
29 #include <Inventor/fields/SoSFVec3f.h>
30 
31 class SoSensor;
32 class SoFieldSensor;
33 
34 
35 class COIN_DLL_API SoCenterballDragger : public SoDragger {
36  typedef SoDragger inherited;
37 
38  SO_KIT_HEADER(SoCenterballDragger);
39 
40  SO_KIT_CATALOG_ENTRY_HEADER(XAxis);
41  SO_KIT_CATALOG_ENTRY_HEADER(XAxisSwitch);
42  SO_KIT_CATALOG_ENTRY_HEADER(XCenterChanger);
43  SO_KIT_CATALOG_ENTRY_HEADER(XRotator);
44  SO_KIT_CATALOG_ENTRY_HEADER(YAxis);
45  SO_KIT_CATALOG_ENTRY_HEADER(YAxisSwitch);
46  SO_KIT_CATALOG_ENTRY_HEADER(YCenterChanger);
47  SO_KIT_CATALOG_ENTRY_HEADER(YRotator);
48  SO_KIT_CATALOG_ENTRY_HEADER(ZAxis);
49  SO_KIT_CATALOG_ENTRY_HEADER(ZAxisSwitch);
50  SO_KIT_CATALOG_ENTRY_HEADER(ZCenterChanger);
51  SO_KIT_CATALOG_ENTRY_HEADER(ZRotator);
52  SO_KIT_CATALOG_ENTRY_HEADER(antiSquish);
53  SO_KIT_CATALOG_ENTRY_HEADER(lightModel);
54  SO_KIT_CATALOG_ENTRY_HEADER(rot2X90);
55  SO_KIT_CATALOG_ENTRY_HEADER(rotX90);
56  SO_KIT_CATALOG_ENTRY_HEADER(rotY90);
57  SO_KIT_CATALOG_ENTRY_HEADER(rotator);
58  SO_KIT_CATALOG_ENTRY_HEADER(surroundScale);
59  SO_KIT_CATALOG_ENTRY_HEADER(translateToCenter);
60 
61 public:
62  static void initClass(void);
63  SoCenterballDragger(void);
64 
65  virtual void saveStartParameters(void);
66 
69 
70 protected:
72  void transferCenterDraggerMotion(SoDragger * childdragger);
73  void setSwitches(SoDragger * activechild);
74  virtual SbBool setUpConnections(SbBool onoff, SbBool doitalways = FALSE);
75  virtual void setDefaultOnNonWritingFields(void);
76 
77  static void fieldSensorCB(void * f, SoSensor * s);
78  static void valueChangedCB(void * f, SoDragger * d);
79  static void kidStartCB(void * f, SoDragger * d);
80  static void kidFinishCB(void * f, SoDragger * d);
81 
82  virtual void getBoundingBox(SoGetBoundingBoxAction * action);
83  virtual void getMatrix(SoGetMatrixAction * action);
84 
87 
88 private:
89  SbVec3f savedtransl;
90  SbVec3f savedcenter;
91  void addChildDragger(SoDragger *child);
92  void removeChildDragger(const char *childname);
93 };
94 
95 #endif // !COIN_SOCENTERBALLDRAGGER_H
SoDragger::getMatrix
virtual void getMatrix(SoGetMatrixAction *action)
Definition: SoDragger.cpp:517
SoSFVec3f
The SoSFVec3f class is a container for an SbVec3f vector.
Definition: SoSFVec3f.h:31
SbRotation
The SbRotation class represents a rotation in 3D space.
Definition: SbRotation.h:33
SoDragger::workFieldsIntoTransform
void workFieldsIntoTransform(SbMatrix &mtx)
Definition: SoDragger.cpp:1123
SoDragger::registerChildDragger
void registerChildDragger(SoDragger *child)
Definition: SoDragger.cpp:722
SoRotation
The SoRotation class specifies a rotation transformation.
Definition: SoRotation.h:31
SoDragger::getBoundingBox
virtual void getBoundingBox(SoGetBoundingBoxAction *action)
Definition: SoDragger.cpp:1715
SbMatrix
The SbMatrix class is a 4x4 dimensional representation of a matrix.
Definition: SbMatrix.h:37
SoSFRotation
The SoSFRotation class is a container for an SbRotation.
Definition: SoSFRotation.h:31
SoBaseKit::getAnyPart
virtual SoNode * getAnyPart(const SbName &partname, SbBool makeifneeded, SbBool leafcheck=0, SbBool publiccheck=0)
Definition: SoBaseKit.cpp:1722
SoCenterballDragger
The SoCenterballDragger class is a dragger you can rotate and translate.
Definition: SoCenterballDragger.h:35
SbMatrix::setRotate
void setRotate(const SbRotation &q)
Definition: SbMatrix.cpp:314
SoSensor
The SoSensor class is the abstract base class for all sensors.
Definition: SoSensor.h:34
SoCenterballDragger::~SoCenterballDragger
~SoCenterballDragger()
Definition: SoCenterballDragger.cpp:297
SoBaseKit::getPart
virtual SoNode * getPart(const SbName &partname, SbBool makeifneeded)
Definition: SoBaseKit.cpp:699
SbMatrix::multVecMatrix
void multVecMatrix(const SbVec3f &src, SbVec3f &dst) const
Definition: SbMatrix.cpp:1357
SoCenterballDragger::fieldSensorCB
static void fieldSensorCB(void *f, SoSensor *s)
Definition: SoCenterballDragger.cpp:509
SoRotateSphericalDragger
The SoRotateSphericalDragger class is for rotating geometry in any direction.
Definition: SoRotateSphericalDragger.h:37
SoFieldSensor::getAttachedField
SoField * getAttachedField(void) const
Definition: SoFieldSensor.cpp:107
SoMatrixTransform::matrix
SoSFMatrix matrix
Definition: SoMatrixTransform.h:40
SbMatrix::inverse
SbMatrix inverse(void) const
Definition: SbMatrix.cpp:418
SbMatrix::multLeft
SbMatrix & multLeft(const SbMatrix &m)
Definition: SbMatrix.cpp:1280
SoSurroundScale
The SoSurroundScale class is used to automatically scale geometry to surround other geometry.
Definition: SoSurroundScale.h:34
SoSwitch
The SoSwitch class is a group node which selects one child subgraph for traversal.
Definition: SoSwitch.h:37
SoInteractionKit::setSwitchValue
static void setSwitchValue(SoNode *node, const int newVal)
Definition: SoInteractionKit.cpp:358
SoAntiSquish::recalcAlways
SoSFBool recalcAlways
Definition: SoAntiSquish.h:48
SoDragger::removeFinishCallback
void removeFinishCallback(SoDraggerCB *func, void *data=NULL)
Definition: SoDragger.cpp:622
SbMatrix::multRight
SbMatrix & multRight(const SbMatrix &m)
Definition: SbMatrix.cpp:1240
SoDragger
The SoDragger class is the base class for all draggers.
Definition: SoDragger.h:53
SbString
The SbString class is a string class with convenience functions for string operations.
Definition: SbString.h:42
SoInteractionKit::readDefaultParts
static void readDefaultParts(const char *fileName, const char defaultBuffer[], int defBufSize)
Definition: SoInteractionKit.cpp:433
SoSurroundScale::setDoingTranslations
void setDoingTranslations(const SbBool val)
Definition: SoSurroundScale.cpp:297
SoDragger::addFinishCallback
void addFinishCallback(SoDraggerCB *func, void *data=NULL)
Definition: SoDragger.cpp:611
SoFieldSensor::detach
void detach(void)
Definition: SoFieldSensor.cpp:92
SoInteractionKit::setUpConnections
virtual SbBool setUpConnections(SbBool onoff, SbBool doitalways=0)
Definition: SoInteractionKit.cpp:648
SoCenterballDragger::getBoundingBox
virtual void getBoundingBox(SoGetBoundingBoxAction *action)
Definition: SoCenterballDragger.cpp:621
SoSurroundScale::invalidate
void invalidate(void)
Definition: SoSurroundScale.cpp:270
SoDragger::addValueChangedCallback
void addValueChangedCallback(SoDraggerCB *func, void *data=NULL)
Definition: SoDragger.cpp:634
SoDragger::setMotionMatrix
void setMotionMatrix(const SbMatrix &newmatrix)
Definition: SoDragger.cpp:905
SoRotation::rotation
SoSFRotation rotation
Definition: SoRotation.h:40
SoCenterballDragger::centerFieldSensor
SoFieldSensor * centerFieldSensor
Definition: SoCenterballDragger.h:86
SoField::setDefault
void setDefault(SbBool def)
Definition: SoField.cpp:650
SoGetMatrixAction
The SoGetMatrixAction class is an action for accumulating the transformation matrix of a subgraph.
Definition: SoGetMatrixAction.h:35
SbRotation::inverse
SbRotation inverse(void) const
Definition: SbRotation.cpp:316
SoRotateCylindricalDragger
The SoRotateCylindricalDragger class is for rotating geometry around a single axis.
Definition: SoRotateCylindricalDragger.h:35
SoCenterballDragger::center
SoSFVec3f center
Definition: SoCenterballDragger.h:68
SoDragger::removeStartCallback
void removeStartCallback(SoDraggerCB *func, void *data=NULL)
Definition: SoDragger.cpp:581
SoAntiSquish::sizing
SoSFEnum sizing
Definition: SoAntiSquish.h:47
SbMatrix::getTransform
void getTransform(SbVec3f &t, SbRotation &r, SbVec3f &s, SbRotation &so) const
Definition: SbMatrix.cpp:997
SoLightModel
The SoLightModel class is a node for specifying the model for geometry lighting.
Definition: SoLightModel.h:31
SoTranslate2Dragger
The SoTranslate2Dragger class provides a mechanism for the end-user to translate in a plane.
Definition: SoTranslate2Dragger.h:35
SoCenterballDragger::kidFinishCB
static void kidFinishCB(void *f, SoDragger *d)
Definition: SoCenterballDragger.cpp:587
SoDragger::saveStartParameters
virtual void saveStartParameters(void)
Definition: SoDragger.cpp:944
SoDragger::enableValueChangedCallbacks
SbBool enableValueChangedCallbacks(SbBool newval)
Definition: SoDragger.cpp:677
SoCenterballDragger::rotation
SoSFRotation rotation
Definition: SoCenterballDragger.h:67
SoCenterballDragger::rotFieldSensor
SoFieldSensor * rotFieldSensor
Definition: SoCenterballDragger.h:85
SbVec3f
The SbVec3f class is a 3 dimensional vector with floating point coordinates.
Definition: SbVec3f.h:37
SoGetBoundingBoxAction
The SoGetBoundingBoxAction class calculates bounding boxes for nodes and subgraphs.
Definition: SoGetBoundingBoxAction.h:34
SoCenterballDragger::valueChangedCB
static void valueChangedCB(void *f, SoDragger *d)
Definition: SoCenterballDragger.cpp:528
SoDragger::setDefaultOnNonWritingFields
virtual void setDefaultOnNonWritingFields(void)
Definition: SoDragger.cpp:1743
SbString::sprintf
SbString & sprintf(const char *formatstr,...)
Definition: SbString.h:105
SoCenterballDragger::setSwitches
void setSwitches(SoDragger *activechild)
Definition: SoCenterballDragger.cpp:365
SoBaseKit::connectionsSetUp
SbBool connectionsSetUp
Definition: SoBaseKit.h:142
SoSurroundScale::isDoingTranslations
SbBool isDoingTranslations(void)
Definition: SoSurroundScale.cpp:309
SoFieldSensor::attach
void attach(SoField *field)
Definition: SoFieldSensor.cpp:77
SoCenterballDragger::getMatrix
virtual void getMatrix(SoGetMatrixAction *action)
Definition: SoCenterballDragger.cpp:636
SoDragger::getMotionMatrix
const SbMatrix & getMotionMatrix(void)
Definition: SoDragger.cpp:688
SoCenterballDragger::setDefaultOnNonWritingFields
virtual void setDefaultOnNonWritingFields(void)
Definition: SoCenterballDragger.cpp:490
SoFieldSensor
The SoFieldSensor class detects changes to a field.
Definition: SoFieldSensor.h:29
SoSeparator
The SoSeparator class is a state-preserving group node.
Definition: SoSeparator.h:34
SoCenterballDragger::transferCenterDraggerMotion
void transferCenterDraggerMotion(SoDragger *childdragger)
Definition: SoCenterballDragger.cpp:320
SoDragger::unregisterChildDragger
void unregisterChildDragger(SoDragger *child)
Definition: SoDragger.cpp:735
SoAntiSquish
The SoAntiSquish class is used to reset to uniform scaling.
Definition: SoAntiSquish.h:33
SoCenterballDragger::saveStartParameters
virtual void saveStartParameters(void)
Definition: SoCenterballDragger.cpp:306
SoCenterballDragger::kidStartCB
static void kidStartCB(void *f, SoDragger *d)
Definition: SoCenterballDragger.cpp:572
SoNode
The SoNode class is the base class for nodes used in scene graphs.
Definition: SoNode.h:47
SoDragger::addStartCallback
void addStartCallback(SoDraggerCB *func, void *data=NULL)
Definition: SoDragger.cpp:570
SoInteractionKit::fieldSensorCB
static void fieldSensorCB(void *, SoSensor *)
Definition: SoInteractionKit.cpp:725
SbMatrix::identity
static SbMatrix identity(void)
Definition: SbMatrix.cpp:748
SbString::getString
const char * getString(void) const
Definition: SbString.h:71
SbMatrix::setTranslate
void setTranslate(const SbVec3f &t)
Definition: SbMatrix.cpp:790
SoDragger::initClass
static void initClass(void)
Definition: SoDragger.cpp:388
SoCenterballDragger::SoCenterballDragger
SoCenterballDragger(void)
Definition: SoCenterballDragger.cpp:213
SoInteractionKit::setPartAsDefault
virtual SbBool setPartAsDefault(const SbName &partname, SoNode *node, SbBool onlyifdefault=1)
Definition: SoInteractionKit.cpp:271
SoMatrixTransform
The SoMatrixTransform class is a transformation node.
Definition: SoMatrixTransform.h:31
SoCenterballDragger::setUpConnections
virtual SbBool setUpConnections(SbBool onoff, SbBool doitalways=0)
Definition: SoCenterballDragger.cpp:413

Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.

Generated on Mon Jul 27 2020 for Coin by Doxygen. 1.8.18