00001 /*=auto========================================================================= 00002 00003 Portions (c) Copyright 2006 Brigham and Women's Hospital (BWH) All Rights Reserved. 00004 00005 See Doc/copyright/copyright.txt 00006 or http://www.slicer.org/copyright/copyright.txt for details. 00007 00008 Program: 3D Slicer 00009 Module: $RCSfile: vtkSlicerROIViewerWidget.h,v $ 00010 Date: $Date: 2010-02-15 16:34:06 -0500 (Mon, 15 Feb 2010) $ 00011 Version: $Revision: 12141 $ 00012 00013 =========================================================================auto=*/ 00014 00020 // 00021 00022 #ifndef __vtkSlicerROIViewerWidget_h 00023 #define __vtkSlicerROIViewerWidget_h 00024 00025 #include "vtkSlicerWidget.h" 00026 #include "vtkKWRenderWidget.h" 00027 00028 #include "vtkSlicerBoxWidget2.h" 00029 #include "vtkSlicerBoxRepresentation.h" 00030 #include "vtkSlicerViewerWidget.h" 00031 00032 class vtkMRMLROINode; 00033 class vtkKWRenderWidget; 00034 class vtkTransform; 00035 class vtkCollection; 00036 class vtkBoxWidgetCallback; 00037 00038 class VTK_SLICER_BASE_GUI_EXPORT vtkSlicerROIViewerWidget : public vtkSlicerWidget 00039 { 00040 public: 00041 static vtkSlicerROIViewerWidget* New(); 00042 vtkTypeRevisionMacro(vtkSlicerROIViewerWidget,vtkSlicerWidget); 00043 void PrintSelf(ostream& os, vtkIndent indent); 00044 00047 //virtual void ProcessWidgetEvents ( vtkObject *caller, unsigned long event, void *callData ); 00048 00051 virtual void AddMRMLObservers(); 00052 00055 virtual void RemoveMRMLObservers ( ); 00056 00059 virtual void ProcessMRMLEvents ( vtkObject *caller, unsigned long event, void *callData ); 00060 00061 00064 void SetMainViewerWidget(vtkSlicerViewerWidget *viewer) 00065 { 00066 this->MainViewerWidget = viewer; 00067 }; 00068 00069 vtkGetObjectMacro(MainViewerWidget, vtkSlicerViewerWidget); 00070 00073 void UpdateFromMRML(); 00074 00077 void UpdateROIFromMRML(vtkMRMLROINode *roi); 00078 00081 void UpdateROITransform(vtkMRMLROINode *roi); 00082 00086 void RequestRender(); 00087 00090 void Render(); 00091 00092 00095 vtkSlicerBoxWidget2 *GetBoxWidgetByID (const char *id); 00096 00099 00100 vtkBoxWidgetCallback *GetBoxWidgetCallbackByID (const char *id); 00101 00104 void RemoveBoxWidgets(); 00105 00108 void RemoveBoxWidget(const char *pointID); 00109 00112 void RemoveBoxWidget(vtkSlicerBoxWidget2* boxWidget); 00113 00114 void SetProcessingWidgetEvent(int flag) 00115 { 00116 this->ProcessingWidgetEvent = flag; 00117 }; 00118 00119 protected: 00120 vtkSlicerROIViewerWidget(); 00121 virtual ~vtkSlicerROIViewerWidget(); 00122 00125 virtual void CreateWidget(); 00126 00129 void AddMRMLROIObservers(vtkMRMLROINode *roi); 00130 00133 void RemoveMRMLROIObservers(); 00134 00137 void RemoveMRMLROINodeObservers(vtkMRMLROINode *roi); 00138 00139 00143 void RemoveROIObservers(); 00144 00148 void UpdateROIsFromMRML(); 00149 00150 00151 //BTX 00152 std::map<std::string, vtkSlicerBoxWidget2*> DisplayedBoxWidgets; 00153 std::map<std::string, vtkBoxWidgetCallback*> DisplayedBoxWidgetCallbacks; 00154 //ETX 00155 00158 int ProcessingMRMLEvent; 00159 int ProcessingWidgetEvent; 00160 00161 00164 vtkSlicerViewerWidget *MainViewerWidget; 00165 00166 00167 private: 00168 00169 vtkSlicerROIViewerWidget(const vtkSlicerROIViewerWidget&); 00170 void operator=(const vtkSlicerROIViewerWidget&); 00171 }; 00172 00173 #endif
1.6.1