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   // Description:
00032   // Reimplement the superclass's method (see vtkKWWizardStep).
00033   virtual void ShowUserInterface();
00034   virtual void HideUserInterface();
00035 
00036   // Description:
00037   // Callbacks.
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   // We call this function in order to remove nodes when going backwards 
00044   virtual void RemoveResults()  { 
00045     this->ROIMapRemove();
00046   }
00047 
00048   // Description:
00049   // Callback functions for buttons
00050   void ProcessGUIEvents(vtkObject *caller, unsigned long event, void *callData);
00051   // Process MRML events to get changes from ROI widget
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   // keep this for backward compatibility
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; // to process events from roi node
00133   bool roiUpdateGuard;
00134 
00135   vtkCallbackCommand *ROIMRMLCallbackCommand;
00136 };
00137 
00138 #endif

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1