#ifndef __DefOrgViewerWithKWState_h #define __DefOrgViewerWithKWState_h #include "vtkKWScaleWithEntry.h" #include #include #include "vtkKWApplication.h" #include "vtkKWFrame.h" #include #include #include "DefOrgViewerAdapterBase.h" #include #include "vtkImageViewer2.h" #include "vtkKWRenderWidget.h" #include "vtkKWTopLevel.h" //#include "vtkKWComboBoxWithLabel.h" #include "DefOrgViewerAdapterDynamicLoader.h" namespace mial{ /*!Structure for storing the correspondance between SOViewer and RenderWidget. Each SOViewer has a RenderWidget that it is associated with*/ struct SOViewerDescriptor{ typedef sov::VTKRenderer3D::Pointer SOViewerPointer; SOViewerPointer theSoViewerPointer; vtkKWRenderWidget* theRenderWidget; SOViewerDescriptor(SOViewerPointer _theSoViewerPointer, vtkKWRenderWidget* _theRenderWidget): theSoViewerPointer(_theSoViewerPointer), theRenderWidget(_theRenderWidget) {} //defined for std::map; not used SOViewerDescriptor():theRenderWidget(NULL){} ~SOViewerDescriptor(){ if (theRenderWidget!=NULL) theRenderWidget->Delete(); } }; /*!Structure for storing the correspondance between ImageViewer and RenderWidget. Each ImageViewer has a corresponding RenderWidget*/ struct ImageViewerDescriptor{ vtkImageViewer2* theImageViewerPointer; vtkKWRenderWidget* theRenderWidget; ImageViewerDescriptor(vtkImageViewer2* _theImageViewerPointer, vtkKWRenderWidget* _theRenderWidget): theImageViewerPointer(_theImageViewerPointer), theRenderWidget(_theRenderWidget) {} //defined for std::map; not used ImageViewerDescriptor():theRenderWidget(NULL), theImageViewerPointer(NULL){} ~ImageViewerDescriptor(){ if (theImageViewerPointer!=NULL) theImageViewerPointer->Delete(); if (theRenderWidget!=NULL) theRenderWidget->Delete(); } }; /*!Storing the state relating to the currently loaded organism. Created and destroyed as new organism is loaded*/ class vtkDefOrgViewerWithKWState{ public: typedef sov::VTKRenderer3D::Pointer SOViewerPointer; std::vector m_OpenedWindows; std::map m_DefOrgPropertyScaleMap; std::map< itkScenePointer, SOViewerDescriptor> m_OutputSceneSOVMap; std::map< vtkImageImport*, ImageViewerDescriptor> m_OutputImageViewerMap; //std::vector m_LayerComboBoxes; //SoViewer related SOViewerPointer GetCurrentSOViewer(); vtkKWRenderWidget* GetCurrentSOViewerRenderWidget(); SOViewerPointer GetSOViewer(itkScenePointer itkScenePointerKey); vtkKWRenderWidget* GetSOViewerRenderWidget(itkScenePointer itkScenePointerKey); void SetSOViewerRenderWidget(itkScenePointer itkScenePointerKey, vtkKWRenderWidget* renderWidget); void SetSOViewer(itkScenePointer itkScenePointerKey, SOViewerPointer newSOViewerPointer); //ImageViewer related vtkImageViewer2* GetCurrentImageViewer(); vtkKWRenderWidget* GetCurrentImageViewerRenderWidget(); vtkImageViewer2* GetImageViewer(vtkImageImport* vtkImageImportPointerKey); vtkKWRenderWidget* GetImageViewerRenderWidget(vtkImageImport* vtkImageImportPointerKey); void SetImageViewerRenderWidget(vtkImageImport* vtkImageImportPointerKey,vtkKWRenderWidget* renderWidget); void SetImageViewer(vtkImageImport* vtkImageImportPointerKey, vtkImageViewer2* newImageViewerPointer); DefOrgViewerAdapterBase* theDefOrg; bool isDefOrgSet(){ return theDefOrg!=0; } int currSOViewerIndex; int currImageViewerIndex; DefOrgViewerAdapterDynamicLoader DynamicLoader; /*!Constructor initializes currSOViewerIndex to 0*/ vtkDefOrgViewerWithKWState():theDefOrg(0),currSOViewerIndex(0), currImageViewerIndex(0){ } ~vtkDefOrgViewerWithKWState(); }; } #endif