wxEmptyPanel_3_Widget.cxx

Go to the documentation of this file.
00001 
00002 
00003 
00004 //EED 29Dic2006 Borrame prueba mara Michael
00005 
00006 #include <vtkMetaImageReader.h>
00007 #include <vtkMetaImageWriter.h>
00008 #include <vtkPlaneSource.h>
00009 #include <vtkProbeFilter.h>
00010 #include <vtkDataSet.h>
00011 #include <vtkStructuredPoints.h>
00012 #include <vtkPointData.h>
00013 #include <vtkImageResample.h>
00014 #include <vtkJPEGWriter.h>
00015 #include <vtkBMPWriter.h>
00016  
00017 
00018 
00019 #include "vtkActor.h"
00020 #include "vtkSphereSource.h"
00021 #include "vtkPolyDataMapper.h"
00022 #include "vtkImageData.h"
00023 #include "vtkImageCast.h"
00024 
00025 #include "wxEmptyPanel_3_Widget.h"
00026 
00027 
00028 
00029 #include <wx/splitter.h>
00030 
00031 //-------------------------------------------------------------------
00032 //-------------------------------------------------------------------
00033 //-------------------------------------------------------------------
00034 BEGIN_EVENT_TABLE( wxEmptyPanel_3_Widget, wxPanel )
00035         EVT_MENU( 12121, wxEmptyPanel_3_Widget::OnRefreshView )
00036 END_EVENT_TABLE( );
00037 //-------------------------------------------------------------------
00038 wxEmptyPanel_3_Widget::wxEmptyPanel_3_Widget(wxWindow *parent)
00039 : wxPanel( parent, -1) 
00040 {
00041         wxBoxSizer                      *sizer                  = new wxBoxSizer(wxVERTICAL  );
00042     wxSplitterWindow    *pnlSplitter    = new wxSplitterWindow( this , -1);
00043         wxPanel                         *viewPanel              = CreateViewPanel(pnlSplitter);
00044         wxPanel                         *controlPanel   = CreateControlPanel(pnlSplitter);
00045 
00046         sizer           -> Add( pnlSplitter ,1,wxGROW  ,0);
00047         pnlSplitter     -> SetMinimumPaneSize( 50 );
00048     pnlSplitter -> SplitVertically( viewPanel, controlPanel );
00049         this            -> SetSizer(sizer);
00050 //EEDxx2.4
00051 //      FitInside();
00052 }
00053 //-------------------------------------------------------------------
00054 wxEmptyPanel_3_Widget::~wxEmptyPanel_3_Widget(){
00055         delete _imageviewer2D_1;
00056 }
00057 //-------------------------------------------------------------------
00058 wxPanel* wxEmptyPanel_3_Widget::CreateViewPanel(wxWindow *parent)
00059 {
00060         wxPanel *panel          =       new wxPanel(parent,-1);
00061     wxBoxSizer *sizer   =       new wxBoxSizer(wxVERTICAL);
00062 
00063         _imageviewer2D_1        = new wxVtk2DBaseView(panel);
00064         wxVTKRenderWindowInteractor *iren   = _imageviewer2D_1->GetWxVTKRenderWindowInteractor();
00065         sizer->Add(iren , 1, wxEXPAND, 0);
00066 
00067 
00068         panel->SetSizer(sizer);
00069         panel->SetAutoLayout(true);
00070         panel->SetSize(400,400);
00071         panel->Layout();
00072         return panel;
00073 }
00074 //-------------------------------------------------------------------
00075 wxPanel* wxEmptyPanel_3_Widget::CreateControlPanel(wxWindow *parent)
00076 {
00077         _parent=parent;
00078         wxPanel *panel  = new wxPanel(parent,-1);
00079 
00080         wxButton *btnContourA   = new wxButton( panel, -1, _T("Active Contour A"));
00081         wxButton *btnContourB   = new wxButton( panel, -1, _T("Active Contour B"));
00082         wxButton *btnContourAB  = new wxButton( panel, -1, _T("Active Contour AB"));
00083 
00084 
00085     wxFlexGridSizer *sizer = new wxFlexGridSizer(1);
00086         sizer->Add(new wxStaticText(panel,-1,_T("  ")));
00087         sizer->Add(new wxStaticText(panel,-1,_T("  ")));
00088         sizer->Add(btnContourA);
00089         sizer->Add(btnContourB);
00090         sizer->Add(btnContourAB);
00091 
00092         panel->SetSizer(sizer);
00093         panel->SetAutoLayout(true);
00094         panel->SetSize(400,400);
00095         panel->Layout();
00096         Connect(btnContourA->GetId()            , wxEVT_COMMAND_BUTTON_CLICKED  , (wxObjectEventFunction) &wxEmptyPanel_3_Widget::OnContourA  );
00097         Connect(btnContourB->GetId()            , wxEVT_COMMAND_BUTTON_CLICKED  , (wxObjectEventFunction) &wxEmptyPanel_3_Widget::OnContourB  );
00098         Connect(btnContourAB->GetId()           , wxEVT_COMMAND_BUTTON_CLICKED  , (wxObjectEventFunction) &wxEmptyPanel_3_Widget::OnContourAB );
00099         return panel;
00100 }
00101 //------------------------------------------------------------------------
00102 void wxEmptyPanel_3_Widget::Refresh()
00103 {
00104         _imageviewer2D_1->Refresh();
00105 }
00106 //----------------------------------------------------------------------------
00107 void wxEmptyPanel_3_Widget::OnRefreshView(wxCommandEvent & event)
00108 {
00109         Refresh();
00110 }
00111 
00112 
00113 //------------------------------------------------------------------------
00114 
00115 void wxEmptyPanel_3_Widget::ConfigureVTK(marImageData *marimagedata)
00116 {
00117     wxBusyCursor wait;
00118         double spc[3];
00119         
00120         vtkImageData *vtkimagedata = marimagedata->GetImageData(); // image t=0
00121         vtkimagedata->UpdateInformation();
00122         vtkimagedata->SetUpdateExtent(vtkimagedata->GetWholeExtent());
00123         vtkimagedata->Update();
00124         _data = vtkimagedata;
00125         _data->GetSpacing(spc);
00126         _vtkbasedata_1 = new vtkBaseData();
00127         _vtkbasedata_1->SetMarImageData(marimagedata);  
00128         _imageviewer2D_1->SetVtkBaseData( _vtkbasedata_1 );
00129         _imageviewer2D_1->Configure();
00130 
00131 //      vtkImageViewer2 *_imageViewer=_imageviewer2D_1->_imageViewer2XYZ->GetVtkImageViewer2();
00132 
00133         // Contorno 1
00134         _manContourControl_1    = new manualContourControler();
00135         _mContourModel_1                = new manualContourModel();
00136         _mViewContour_1                 = new manualViewContour();
00137         _mViewContour_1->SetModel( _mContourModel_1 );
00138         _mViewContour_1->SetWxVtkBaseView( _imageviewer2D_1 );
00139         _mViewContour_1->SetRange( 2 );
00140         _mViewContour_1->SetZ( 1000 );
00141 
00142 
00143 //EED 3 oct 2006
00144         _mViewContour_1->SetSpacing(spc);
00145 
00146 
00147 //EED 3 oct 2006
00148         _mViewContour_1->SetColorNormalContour(0, 0, 1);
00149         _mViewContour_1->SetColorEditContour(0, 0.5, 0.5);
00150 
00151 
00152         _manContourControl_1->SetModelView( _mContourModel_1 , _mViewContour_1 );
00153         _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manContourControl_1 );
00154         _manContourControl_1->CreateNewManualContour();
00155         _manContourControl_1->SetActive(false);
00156         _mViewContour_1->RefreshContour();
00157 
00158         // Rectangulo
00159         _manRoiControl  = new manualRoiControler();
00160         _mContourModel  = new manualContourModel();
00161         _mViewRoi               = new manualViewRoi();
00162         _mViewRoi->SetModel( _mContourModel );
00163         _mViewRoi->SetWxVtkBaseView( _imageviewer2D_1 );
00164         _mViewRoi->SetRange( 2 );
00165         _mViewRoi->SetZ( 1000 );
00166 
00167 //EED 3 oct 2006
00168         _mViewRoi->SetSpacing(spc);
00169 
00170         _manRoiControl->SetModelView( _mContourModel , _mViewRoi );
00171         _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manRoiControl );
00172         _manRoiControl->CreateNewManualContour();
00173         _manRoiControl->SetActive(true);
00174         _mViewRoi->RefreshContour();
00175 
00176         // Contorno 2
00177         _manContourControl_2    = new manualContourControler();
00178         _mContourModel_2                = new manualContourModel();
00179         _mViewContour_2                 = new manualViewContour();
00180         _mViewContour_2->SetModel( _mContourModel_2 );
00181         _mViewContour_2->SetWxVtkBaseView( _imageviewer2D_1 );
00182         _mViewContour_2->SetRange( 2 );
00183         _mViewContour_2->SetZ( 1000 );
00184 
00185 //EED 3 oct 2006
00186         _mViewContour_2->SetSpacing(spc);
00187 
00188 //EED 3 oct 2006
00189         _mViewContour_2->SetColorNormalContour(1, 1, 1);
00190         _mViewContour_2->SetColorEditContour(0.5, 0.5, 0.5);
00191 
00192 
00193         _manContourControl_2->SetModelView( _mContourModel_2 , _mViewContour_2 );
00194         _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manContourControl_2 );
00195         _manContourControl_2->CreateNewManualContour();
00196         _manContourControl_2->SetActive(false);
00197         _mViewContour_2->RefreshContour();
00198 
00199 CreateNewPoint( 0,0);
00200 
00201         Refresh();      
00202 }
00203 
00204 
00205 //----------------------------------------------------------------------------
00206 //eedx21
00207 void wxEmptyPanel_3_Widget::CreateNewPoint(double x, double y)
00208 {
00209 /*
00210 
00211                 vtkSphereSource* aSphere =vtkSphereSource::New();
00212         aSphere->SetRadius(0.2);
00213         aSphere->SetCenter(x,y,0.5);
00214 
00215         point_mapped.push_back(vtkPolyDataMapper::New());
00216         point_mapped.back()->ImmediateModeRenderingOn();
00217         //point_mapped.back()->ScalarVisibilityOff( );
00218         point_mapped.back()->SetInput(aSphere->GetOutput());
00219 
00220         point_actor.push_back(vtkActor::New());
00221         point_actor.back()->SetMapper(point_mapped.back());
00222         point_actor.back()->GetProperty()->BackfaceCullingOff();
00223         point_actor.back()->GetProperty()->SetColor(0, 1, 0);
00224 
00225         point_actor.back()->ApplyProperties();
00226 
00227         _wxvtkbaseview->GetRenderer()->AddActor(point_actor.back());
00228         _wxvtkbaseview->GetRenWin()->Render();
00229 */
00230 
00231 /*
00232                 vtkActor                        *spheresActor   = vtkActor::New( );
00233         vtkSphereSource         *spheres                = vtkSphereSource::New( );
00234         vtkPolyDataMapper       *spheresMapper  = vtkPolyDataMapper::New( );
00235         spheresMapper   -> SetInput( spheres->GetOutput( ) );
00236         spheresActor    -> SetMapper( spheresMapper );
00237                 _imageviewer2D_1 -> GetRenderer() -> AddActor( spheresActor );
00238                 spheres->SetCenter( x,y,0 );
00239                 spheres->SetRadius( 10 );
00240 */
00241 
00242         vtkSphereSource         *spheres                = vtkSphereSource::New( );
00243                 spheres->SetCenter( x,y,0 );
00244                 spheres->SetRadius( 5 );
00245         vtkPolyDataMapper       *spheresMapper  = vtkPolyDataMapper::New( );
00246                 spheresMapper   ->ImmediateModeRenderingOn();
00247         spheresMapper   -> SetInput( spheres->GetOutput( ) );
00248         vtkActor                        *spheresActor   = vtkActor::New( );
00249         spheresActor    -> SetMapper( spheresMapper );
00250         spheresActor    ->GetProperty()->BackfaceCullingOff();
00251         spheresActor    ->GetProperty()->SetColor(0, 1, 0);
00252         spheresActor    ->ApplyProperties();
00253                 _imageviewer2D_1 -> GetRenderer() -> AddActor( spheresActor );
00254 
00255 
00256 }
00257 
00258 
00259 
00260 
00261 //------------------------------------------------------------------------
00262 void wxEmptyPanel_3_Widget::OnContourA(wxCommandEvent& event)
00263 {
00264         _manRoiControl           -> SetActive(false);
00265         _manContourControl_1 -> SetActive(true);
00266         _manContourControl_2 -> SetActive(false);
00267 }
00268 //------------------------------------------------------------------------
00269 void wxEmptyPanel_3_Widget::OnContourB(wxCommandEvent& event)
00270 {
00271         _manRoiControl           -> SetActive(false);
00272         _manContourControl_1 -> SetActive(false);
00273         _manContourControl_2 -> SetActive(true);
00274 }
00275 //------------------------------------------------------------------------
00276 void wxEmptyPanel_3_Widget::OnContourAB(wxCommandEvent& event)
00277 {
00278         _manRoiControl           -> SetActive(false);
00279         _manContourControl_1 -> SetActive(true);
00280         _manContourControl_2 -> SetActive(true);
00281 }
00282 //------------------------------------------------------------------------
00283 

Generated on 20 Oct 2010 for creaMaracasVisu_lib by  doxygen 1.6.1