/*========================================================================= Program: wxMaracas Module: $RCSfile: wxImageViewerWidget.h,v $ Language: C++ Date: $Date: 2009/05/14 13:54:57 $ Version: $Revision: 1.1 $ Copyright: (c) 2002, 2003 License: This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #ifndef __WX__IMAGE__VIEWER__WIDGET__ #define __WX__IMAGE__VIEWER__WIDGET__ //As it is extremely easy to use vtkImageViewer/ vtkImageViewer2, I gave up with //vtkImagePlaneWidget #include #include "InterfaceVtkPanelWidgets.h" // #include "vtk3DSurfaceWidget.h" //EED pour avoir access a la classe "InterfaceVtkPanelWidgets" #include "../manualContour.h" #include "wxVTKRenderWindowInteractorEditContour.h" #include "wxVTKRenderWindowInteractor.h" #include "vtkImageViewer2.h" #include "vtkImageData.h" #include "vtkActor.h" #include "vtkPoints.h" class marZoomROIObserver; class wxVtk2DView_TMP : public wxVtkBaseView{ public: wxVtk2DView_TMP(vtkImageViewer2 *imageviewer2); ~wxVtk2DView_TMP(); virtual vtkRenderer *GetRenderer(); virtual vtkRenderWindow *GetRenWin(); virtual void Configure(); void SetWxVTKRenderWindowInteractor( wxVTKRenderWindowInteractor *wxVTKiren); virtual wxVTKRenderWindowInteractor *GetWxVTKRenderWindowInteractor(); private: wxVTKRenderWindowInteractor *_wxVTKiren; vtkImageViewer2 *_imageviewer2; }; /** * \brief Panel class composed of a vtk renderwindow with double click available * and add some buttons */ class wxImageViewerWidget : public wxPanel{ public: wxImageViewerWidget( wxWindow *parent, wxWindowID id = -1, const wxPoint &pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSUNKEN_BORDER, //wxTAB_TRAVERSAL, const wxString& name = wxPanelNameStr ); ~wxImageViewerWidget( ); virtual void ConstructVTK(vtkImageData *imageData); virtual void ExecuteEvent(vtkObject *wdg, unsigned long event, void* calldata); void ExecuteEvent1(vtkObject *wdg, unsigned long event, void* calldata); void ExecuteEvent2(vtkObject *wdg, unsigned long event, void* calldata); void SetImage(vtkImageData* imagedata); void SetInterfaceVtkPanelWidgets(InterfaceVtkPanelWidgets * intVtkPanWid) { _intVtkPanWid = intVtkPanWid; }; void SetState(int state); void SetStateManualContour(int state); void CreateNewManualContour(); int GetNumberOfPointsSplineManualContour(); double* GetVectorPointsXManualContour(); double* GetVectorPointsYManualContour(); void EraseManualContour(); void SetZSlice(int z); int GetZSlice(); void Render(); void AddObserver_1(); void AddObserver_2(); protected: int _state; marZoomROIObserver *_Observer; vtkInteractorStyle2DMaracas *_interactorStyle2DMaracas; vtkImageViewer2 *_imageViewer; InterfaceVtkPanelWidgets *_intVtkPanWid; wxVTKRenderWindowInteractorEditContour *_wxVTKiren; private: manualContourControler *_manContControl; manualContourModel *_mContourModel; manualViewContour *_mViewContour; }; //---------------------------------------------------------------------------- class wxImageViewerWidgetRoi : public wxImageViewerWidget{ public : wxImageViewerWidgetRoi( wxWindow* parent, wxWindowID id = -1, const wxPoint &pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSUNKEN_BORDER, //wxTAB_TRAVERSAL, const wxString& name = wxPanelNameStr ); ~wxImageViewerWidgetRoi( ); void GetROI( int extent[6] ); virtual void ConstructVTK(vtkImageData *imageData); void TransfromeCoordViewWorld(int &X, int &Y, int &Z); bool GetRoiSelected(); private : virtual void ExecuteEvent(vtkObject *wdg, unsigned long event, void* calldata); bool _bboxEnabled; bool _sliceEnabled; bool _RoiSelected; vtkPoints *_pts; vtkActor *_bboxActor; vtkPolyDataMapper *_bboxMapper; vtkPolyData *_pd; }; #endif // __WX__IMAGE__VIEWER__WIDGET__