vtkChangeTrackerROIStep.h
Go to the documentation of this file.00001 #ifndef __vtkChangeTrackerROIStep_h
00002 #define __vtkChangeTrackerROIStep_h
00003
00004 #include "vtkChangeTrackerStep.h"
00005
00006 class vtkKWFrame;
00007 class vtkKWRange;
00008 class vtkKWPushButton;
00009 class vtkSlicerModuleCollapsibleFrame;
00010 class vtkSlicerSliceGUI;
00011 class vtkRenderWindowInteractor;
00012 class vtkMRMLScalarVolumeNode;
00013 class vtkMRMLChangeTrackerNode;
00014 class vtkKWLabel;
00015 class vtkImageRectangularSource;
00016 class vtkMRMLROINode;
00017 class vtkObserverManager;
00018 class vtkSlicerROIDisplayWidget;
00019 class vtkKWSpinBoxWithLabel;
00020 class vtkKWRadioButtonSetWithLabel;
00021 class vtkCallbackCommand;
00022 class vtkSlicerVisibilityIcons;
00023
00024 class VTK_CHANGETRACKER_EXPORT vtkChangeTrackerROIStep : public vtkChangeTrackerStep
00025 {
00026 public:
00027 static vtkChangeTrackerROIStep *New();
00028 vtkTypeRevisionMacro(vtkChangeTrackerROIStep,vtkChangeTrackerStep);
00029 void PrintSelf(ostream& os, vtkIndent indent);
00030
00031
00032
00033 virtual void ShowUserInterface();
00034 virtual void HideUserInterface();
00035
00036
00037
00038 void ROIXChangedCallback(double min, double max);
00039 void ROIYChangedCallback(double min, double max);
00040 void ROIZChangedCallback(double min, double max);
00041
00042 virtual void TransitionCallback();
00043
00044 virtual void RemoveResults() {
00045 this->ROIMapRemove();
00046 }
00047
00048
00049
00050 void ProcessGUIEvents(vtkObject *caller, unsigned long event, void *callData);
00051
00052 void ProcessMRMLEvents(vtkObject *caller, unsigned long event, void *callData);
00053 void AddGUIObservers();
00054 void RemoveGUIObservers();
00055
00056 void AddROISamplingGUIObservers();
00057 void RemoveROISamplingGUIObservers();
00058
00059
00060 protected:
00061 vtkChangeTrackerROIStep();
00062 ~vtkChangeTrackerROIStep();
00063
00064 static void ROIMRMLCallback(vtkObject*, unsigned long, void*, void*);
00065
00066 vtkKWFrame *FrameButtons;
00067 vtkKWFrame *FrameBlank;
00068 vtkSlicerModuleCollapsibleFrame *FrameROI;
00069
00070 vtkSlicerModuleCollapsibleFrame *FrameROIIJK;
00071
00072 vtkKWFrame *FrameROIX;
00073 vtkKWFrame *FrameROIY;
00074 vtkKWFrame *FrameROIZ;
00075
00076 vtkKWPushButton *ButtonsShow;
00077 vtkSlicerVisibilityIcons *VisibilityIcons;
00078 vtkKWLabel *VisibilityLabel;
00079 vtkKWPushButton *ButtonsReset;
00080
00081 vtkKWRange *ROIX;
00082 vtkKWRange *ROIY;
00083 vtkKWRange *ROIZ;
00084
00085 vtkKWLabel *LabelROIX;
00086 vtkKWLabel *LabelROIY;
00087 vtkKWLabel *LabelROIZ;
00088
00089 vtkKWRadioButtonSetWithLabel *ResamplingChoice;
00090 vtkKWSpinBoxWithLabel *SpinResampleConst;
00091
00092 static void WizardGUICallback(vtkObject *caller, unsigned long event, void *clientData, void *callData );
00093
00094 private:
00095 vtkChangeTrackerROIStep(const vtkChangeTrackerROIStep&);
00096 void operator=(const vtkChangeTrackerROIStep&);
00097
00098 void ROIReset();
00099 void ROIUpdateWithNewSample(double rasSample[3]);
00100 void ROIUpdateAxisWithNewSample(vtkKWRange *ROIAxis, int Sample);
00101 void ROIUpdateWithNode();
00102 void ROIUpdateAxisWithNode(vtkMRMLChangeTrackerNode* Node, vtkKWRange *ROIAxis, int Axis);
00103
00104 int ROICheck();
00105
00106 int ROIMapShow();
00107 void ROIMapRemove();
00108 void ROIMapUpdate();
00109
00110
00111 void RetrieveInteractorCoordinates(vtkSlicerSliceGUI *sliceGUI, vtkRenderWindowInteractor *rwi,int coordsIJK[3], double coordsRAS[3]);
00112
00113 void ROIChangedCallback(int axis, double min, double max);
00114
00115 void DeleteSuperSampleNode();
00116
00117 void MRMLUpdateROINodeFromROI();
00118 void MRMLUpdateROIFromROINode();
00119 void ResetROICenter(int *ijkCoords);
00120
00121 void ROIIntensityMinMaxUpdate(vtkImageData* image, double &intensityMin, double &intensityMax);
00122 void InitROIRender();
00123 void UpdateROIRender();
00124 void ResetROIRender();
00125
00126 vtkMRMLScalarVolumeNode *ROILabelMapNode;
00127 vtkImageRectangularSource *ROILabelMap;
00128 int ROIHideFlag;
00129
00130 vtkMRMLROINode *roiNode;
00131 vtkSlicerROIDisplayWidget *roiWidget;
00132 vtkObserverManager *MRMLObserverManager;
00133 bool roiUpdateGuard;
00134
00135 vtkCallbackCommand *ROIMRMLCallbackCommand;
00136 };
00137
00138 #endif