MeVisLabToolboxReference
FMEwork/VTK/Sources/VTK/MLVTK/VTKSupport/mlVTKModule.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00005 
00010 //----------------------------------------------------------------------------------
00011 #ifndef __mlVTKModule_H
00012 #define __mlVTKModule_H
00013 
00014 // Include most ml specific things.
00015 // Include dll-specific settings.
00016 #include "mlInitSystemVTKSupport.h"
00017 
00018 // Include most ml specific things.
00019 #ifndef __mlModuleIncludes_H
00020 #include "mlModuleIncludes.h"
00021 #endif
00022 
00023 // Include vtkObject class which is a base class of all automatically VTK
00024 // objects which potentially can be observed.
00025 #include <vtkObject.h>
00026 
00027 // Include support for subject/observer design pattern of VTK.
00028 #include <vtkCallbackCommand.h>
00029 
00030 // Include the class for dummy polygon data source used as placeholder for NULL polygon data sources.
00031 #include "vtkPolyDataAlgorithm.h"
00032 
00033 
00034 ML_START_NAMESPACE
00035    
00036   //----------------------------------------------------------------------------------
00040   //----------------------------------------------------------------------------------
00041   class MLVTK_SUPPORT_EXPORT VTKModule : public Module
00042   {
00043   public:
00044 
00046     VTKModule(int inputNum=0, int outputNum=0);
00047 
00049     virtual ~VTKModule();
00050 
00052     void       suppressHandleVTKObjectCalls(bool suppress);
00053 
00055     bool       areHandleVTKObjectCallsSuppressed();
00056 
00057   protected:
00058 
00060     void       setManagedObject(vtkObject *vObj);
00061 
00063     vtkObject *getManagedObject();
00064 
00065 
00067     void       setObservedObject(vtkObject *vObj, 
00068                                  vtkCommand::EventIds eventId=vtkCommand::AnyEvent, 
00069                                  float priority = 0.0f);
00070 
00072     vtkObject *getObservedObject();
00073 
00074 
00078     virtual void handleVTKObject(vtkObject * /*caller*/,  
00079                                  unsigned long /*eventId*/, 
00080                                  void * /*callData*/) { };
00081 
00085     std::string getInputCheckString() const;
00086 
00090     vtkPolyDataAlgorithm *getDummyPolyDataAlgorithm(int polyType = 0);
00091     
00092   private:
00093 
00096     virtual void _handleManagedVTKObject(vtkObject *caller,  
00097                                          unsigned long eventId, 
00098                                          void *callData);
00099 
00101     static void _vtkCallbackFunc(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata);
00102 
00104     static void _vtkManagedCallbackFunc(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata);
00105 
00106 
00108     bool                _suppressHandleVTKObjectCalls;
00109 
00111     vtkCallbackCommand *_observer;
00112 
00114     vtkObject          *_observedObject;
00115 
00117     vtkObject          *_managedObject;
00118 
00120     vtkCallbackCommand **_managedObservers;
00121 
00123     ML_MODULE_CLASS_HEADER(VTKModule);
00124   };
00125 
00126 ML_END_NAMESPACE
00127 
00128 #endif
00129