MeVisLabToolboxReference
|
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