00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SOROTATESPHERICALDRAGGER_H
00021 #define COIN_SOROTATESPHERICALDRAGGER_H
00022
00023 #include <Inventor/draggers/SoDragger.h>
00024 #include <Inventor/fields/SoSFRotation.h>
00025 #include <Inventor/SbMatrix.h>
00026 #include <Inventor/SbVec3f.h>
00027
00028 class SoSensor;
00029 class SoFieldSensor;
00030 class SbSphereProjector;
00031
00032
00033 class COIN_DLL_API SoRotateSphericalDragger : public SoDragger {
00034 typedef SoDragger inherited;
00035
00036 SO_KIT_HEADER(SoRotateSphericalDragger);
00037
00038 SO_KIT_CATALOG_ENTRY_HEADER(feedback);
00039 SO_KIT_CATALOG_ENTRY_HEADER(feedbackActive);
00040 SO_KIT_CATALOG_ENTRY_HEADER(feedbackSwitch);
00041 SO_KIT_CATALOG_ENTRY_HEADER(rotator);
00042 SO_KIT_CATALOG_ENTRY_HEADER(rotatorActive);
00043 SO_KIT_CATALOG_ENTRY_HEADER(rotatorSwitch);
00044
00045
00046 public:
00047 static void initClass(void);
00048 SoRotateSphericalDragger(void);
00049
00050 SoSFRotation rotation;
00051
00052 void setProjector(SbSphereProjector * p);
00053 const SbSphereProjector * getProjector(void) const;
00054
00055 protected:
00056 ~SoRotateSphericalDragger();
00057 virtual SbBool setUpConnections(SbBool onoff, SbBool doitalways = FALSE);
00058
00059 virtual void copyContents(const SoFieldContainer * fromfc,
00060 SbBool copyconnections);
00061
00062 static void startCB(void * f, SoDragger * d);
00063 static void motionCB(void * f, SoDragger * d);
00064 static void doneCB(void * f, SoDragger * d);
00065 static void fieldSensorCB(void * f, SoSensor * s);
00066 static void valueChangedCB(void * f, SoDragger * d);
00067
00068 void dragStart(void);
00069 void drag(void);
00070 void dragFinish(void);
00071
00072 SoFieldSensor * fieldSensor;
00073 SbMatrix prevMotionMatrix;
00074 SbVec3f prevWorldHitPt;
00075 SbSphereProjector * sphereProj;
00076 SbBool userProj;
00077 };
00078
00079 #endif // !COIN_SOROTATESPHERICALDRAGGER_H