MeVisLabToolboxReference
MeVisLab/Standard/Sources/Inventor/SoCSO/SoCSO3DVis/SoCSO3DVis.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00004 
00009 //----------------------------------------------------------------------------------
00010 
00011 #ifndef __SoCSO3DVis_H
00012 #define __SoCSO3DVis_H
00013 
00014 
00015 #include "SoCSOIncludes.h"
00016 #include "SoCSOSystem.h"
00017 
00018 
00020 
00022 class SOCSO_EXPORT SoCSO3DVis : public SoSeparator
00023 {
00024 
00025 public:
00026 
00028   SoCSO3DVis();
00030   static void initClass();
00031 
00032 
00033   /* FIELDS */
00034 
00036   SoSFMLBase inCSOList;  
00038   SoSFMLBase inStylePalette;
00039   
00041   SoSFBool    autoApply;
00043   SoSFTrigger apply;
00044 
00046   SoSFBool enableSelection;
00048   SoSFBool highlightSelectedGroups;
00050   SoSFFloat pathPointWidthOffset;
00052   SoSFFloat seedPointSizeScaling;
00054   SoSFBool useRenderTimeDelay;
00056   SoSFFloat timerDelayMilliSeconds;
00058   SoSFBool listenToRepaintNotifications;
00060   SoSFBool listenToFinishingNotifications;
00062   SoSFBool listenToSelectionChangedNotifications;
00063 
00065   SoSFBool useStylePalette;
00067   SoSFEnum stylePaletteUseIndexAs;
00068 
00069   /* METHODS */
00070   
00072   virtual void  handleEvent(SoHandleEventAction *action);
00073 
00074 protected:
00075 
00077   virtual ~SoCSO3DVis();
00078 
00079 private:
00080 
00081   /* MEMBER VARIABLES */
00082 
00084   SoSeparator* _separator;
00086   SoNodeSensor *_nodeSensor;
00088   ml::CSOList* _csoList;
00090   bool _isInNotificationCB;
00092   SbTime _lastUpdateTime;
00094   bool _useRenderDelayTimer;
00096   float _timerDelayMilliSeconds;
00097 
00099   bool _hasValidStylePalette;
00100 
00101 
00102   /* METHODS */
00103 
00105   void _generateScene();
00107   void _setUpVisualization(ml::CSO* cso, float& red, float& green, float& blue, float& alpha, 
00108                           int& linePattern, float& lineWidth,
00109                           int& markerMode, float& markerRed, float& markerGreen, float& markerBlue, float& markerAlpha, 
00110                           float& markerSize);
00111 
00113   void _setClosestCSOSelected(const SbVec3f& selectionPoint);
00114   
00116   static void   _nodeChangedCB(void *data, SoDataSensor* a);
00118   void          _nodeChanged(SoDataSensor* sensor);
00120   static void _csoListNotificationCB(void* userData, int notificationFlag);
00121 
00122   SO_NODE_HEADER(SoCSO3DVis);
00123 };
00124 
00126 
00127 
00128 #endif // __SoCSO3DVis_H