vtk3DQuantSurfaceWidget.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   wxMaracas
00004   Module:    $RCSfile: vtk3DQuantSurfaceWidget.cxx,v $
00005   Language:  C++
00006   Date:      $Date: 2009/05/14 13:54:57 $
00007   Version:   $Revision: 1.1 $
00008 
00009   Copyright: (c) 2002, 2003
00010   License:
00011   
00012      This software is distributed WITHOUT ANY WARRANTY; without even 
00013      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00014      PURPOSE.  See the above copyright notice for more information.
00015 
00016 =========================================================================*/
00017 #include "vtk3DQuantSurfaceWidget.h"
00018 #include <vtkPointPicker.h>
00019 #include <vtkCamera.h>
00020 #include <vtkWindowLevelLookupTable.h>
00021 // EED
00022 #include <vtkPolyLine.h> 
00023 #include <vtkPlaneSource.h> 
00024 
00025 
00026 
00027 //----------------------------------------------------------------------------
00028 RectangleGuideVtk::RectangleGuideVtk(){
00029   _showActor    = false;
00030   _grid                 = NULL; 
00031   _actor                = NULL;
00032   _points               = NULL;
00033   _mapper               = NULL;
00034   _poly_line    = NULL;
00035   _iSlice               = -1;
00036 }
00037 //----------------------------------------------------------------------------
00038 RectangleGuideVtk::~RectangleGuideVtk(){
00039   if( _grid              )      _grid->Delete();
00040   if( _actor     )      _actor->Delete();
00041   if( _points    )      _points->Delete();
00042   if( _mapper    )      _mapper->Delete();
00043   if( _poly_line )      _poly_line->Delete();
00044 }
00045 
00046 //----------------------------------------------------------------------------
00047 //----------------------------------------------------------------------------
00048 //----------------------------------------------------------------------------
00049 //----------------------------------------------------------------------------
00050 listContourVTK::listContourVTK(vtk3DQuantSurfaceWidget *quantSurfaceWidget){
00051         _r=1;
00052         _g=1;
00053         _b=1;
00054         _vtk3DQuantSurfaceWidget=quantSurfaceWidget;
00055 }
00056 //----------------------------------------------------------------------------
00057 listContourVTK::~listContourVTK(){
00058         EraseListContourActor();
00059 }
00060 //----------------------------------------------------------------------------
00061 void listContourVTK::SetColour(int r,int g,int b){
00062         _r=r;
00063         _g=g;
00064         _b=b;
00065 }
00066 //----------------------------------------------------------------------------
00067 void listContourVTK::InitListContourActor(int nos){
00068   EraseListContourActor();
00069   int i;
00070   for (i=0;i<nos;i++){
00071     _lst3DContoursVtkActor.push_back( NULL );
00072     _lst3DContoursVtkUnstructuredGrid.push_back( NULL );
00073     _lst3DContoursVtkDataSetMapper.push_back( NULL );
00074     _lst3DContoursVtkPolyLine.push_back( NULL );
00075   }
00076 
00077   // Refresh 3DWidget
00078 // EED 31 mai 2007 
00079 //  vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
00080 //  pRenderWindow->Render( );
00081 }
00082 //----------------------------------------------------------------------------
00083 void listContourVTK::EraseListContourActor(){
00084         int i;
00085         for (i=0;i<_lst3DContoursVtkActor.size();i++){
00086                 EraseSliceContourActor(i,false);
00087          }
00088         _lst3DContoursVtkActor.clear();
00089         _lst3DContoursVtkUnstructuredGrid.clear();
00090         _lst3DContoursVtkDataSetMapper.clear();
00091         _lst3DContoursVtkPolyLine.clear();
00092 }
00093 //----------------------------------------------------------------------------
00094 void listContourVTK::EraseSliceContourActor(int slice, bool refresh){
00095         if (_lst3DContoursVtkActor[slice]!=NULL){
00096                 vtkRenderer *pRenderer = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
00097                 if (_lst3DContoursVtkActor[slice])                                      pRenderer->RemoveActor(_lst3DContoursVtkActor[slice]);
00098                 if (_lst3DContoursVtkUnstructuredGrid[slice])           _lst3DContoursVtkUnstructuredGrid[slice]->Delete();
00099                 if (_lst3DContoursVtkDataSetMapper[slice])                      _lst3DContoursVtkDataSetMapper[slice]->Delete();
00100                 if (_lst3DContoursVtkPolyLine[slice])                           _lst3DContoursVtkPolyLine[slice]->Delete();
00101                 if (_lst3DContoursVtkActor[slice])                                      _lst3DContoursVtkActor[slice]->Delete();
00102                 _lst3DContoursVtkUnstructuredGrid[slice]=NULL;
00103                 _lst3DContoursVtkDataSetMapper[slice]=NULL;
00104                 _lst3DContoursVtkPolyLine[slice]=NULL;
00105                 _lst3DContoursVtkActor[slice]=NULL;
00106         }
00107         if (refresh==true){
00108                 // Refresh 3DWidget
00109                 vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
00110                 pRenderWindow->Render( );
00111         }
00112 }
00113 //----------------------------------------------------------------------------
00114 void listContourVTK::Set3DContourActor( int slice, vtkPoints* contour3D, bool showActor){
00115         // Erase old actor
00116         EraseSliceContourActor(slice);
00117         // generate new actor
00118         int id,numberOfPoints;
00119         numberOfPoints=contour3D->GetNumberOfPoints ();
00120         _lst3DContoursVtkPolyLine[slice]        = vtkPolyLine::New();
00121 
00122         ( _lst3DContoursVtkPolyLine[slice]->GetPointIds() )->SetNumberOfIds(numberOfPoints);
00123         for (id=0;id<numberOfPoints;id++){
00124                 ( _lst3DContoursVtkPolyLine[slice]->GetPointIds() )->SetId(id,id);
00125         }
00126         _lst3DContoursVtkUnstructuredGrid[slice]=vtkUnstructuredGrid::New();
00127         _lst3DContoursVtkUnstructuredGrid[slice]->Allocate(1,1);
00128         _lst3DContoursVtkUnstructuredGrid[slice]->InsertNextCell(   _lst3DContoursVtkPolyLine[slice]->GetCellType() , 
00129                                                                                                                                 _lst3DContoursVtkPolyLine[slice]->GetPointIds() );
00130         _lst3DContoursVtkUnstructuredGrid[slice]->SetPoints( contour3D );
00131         _lst3DContoursVtkDataSetMapper[slice] = vtkDataSetMapper::New();
00132         _lst3DContoursVtkDataSetMapper[slice]->SetInput(_lst3DContoursVtkUnstructuredGrid[slice]);
00133         _lst3DContoursVtkDataSetMapper[slice]->ImmediateModeRenderingOn();
00134         _lst3DContoursVtkActor[slice]=vtkActor::New();
00135         _lst3DContoursVtkActor[slice]->SetMapper(_lst3DContoursVtkDataSetMapper[slice]);
00136         _lst3DContoursVtkActor[slice]->GetProperty()->BackfaceCullingOn();
00137         _lst3DContoursVtkActor[slice]->GetProperty()->SetDiffuseColor(_r,_g,_b);
00138         _lst3DContoursVtkActor[slice]->PickableOff( );
00139         // add new actor
00140         vtkRenderer *pRenderer                  = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
00141         vtkRenderWindow* pRenderWindow  = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
00142 
00143         if (showActor==true){ 
00144                 pRenderer->AddActor( _lst3DContoursVtkActor[slice] );
00145         }
00146         // Refresh 3DWidget
00147         pRenderWindow->Render( );
00148 
00149 
00150 }
00151 //----------------------------------------------------------------------------
00152 void listContourVTK::Show3DContourActor( ){
00153         vtkRenderer *pRenderer                  = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
00154         vtkRenderWindow* pRenderWindow  = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
00155         int i;
00156         for (i=0;i<_lst3DContoursVtkActor.size();i++){
00157                 if (_lst3DContoursVtkActor[i]!=NULL) pRenderer->AddActor( _lst3DContoursVtkActor[i] );  
00158          }
00159         // Refresh 3DWidget
00160         pRenderWindow->Render( );
00161 }
00162 //----------------------------------------------------------------------------
00163 void listContourVTK::Hide3DContourActor( ){
00164         vtkRenderer *pRenderer                  = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
00165         vtkRenderWindow* pRenderWindow  = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
00166         int i;
00167         for (i=0;i<_lst3DContoursVtkActor.size();i++){
00168                 if (_lst3DContoursVtkActor[i]!=NULL) pRenderer->RemoveActor( _lst3DContoursVtkActor[i] );       
00169          }
00170         // Refresh 3DWidget
00171         pRenderWindow->Render( );
00172 }
00173 
00174 
00175 //----------------------------------------------------------------------------
00176 //----------------------------------------------------------------------------
00177 //----------------------------------------------------------------------------
00178 
00179 
00180 
00181 
00182 
00192 //----------------------------------------------------------------------------
00193 /*
00194 BEGIN_EVENT_TABLE( vtk3DQuantSurfaceWidget, vtk3DSurfaceWidget )
00195   //  EVT_LEFT_DCLICK( vtk3DQuantSurfaceWidget::OnLeftDClick )
00196   // EVT_MOUSEWHEEL( vtk3DQuantSurfaceWidget::OnMouseWheel )
00197 END_EVENT_TABLE( );
00198 */
00199 //----------------------------------------------------------------------------
00200 vtk3DQuantSurfaceWidget::vtk3DQuantSurfaceWidget(
00201         wxWindow* parent,
00202         wxWindowID id,
00203         const wxPoint& pos,
00204         const wxSize& size,
00205         long style,
00206         const wxString& name)
00207         : vtk3DSurfaceWidget( parent, id, pos, size, style, name ){
00208   _3DSliceMapper                = NULL;
00209   _3DSliceActor                 = NULL;
00210   _bwlookup                             = NULL;
00211   _collookup                    = NULL;
00212   _hs_rectGuide                 = new RectangleGuideVtk();
00213   _s1_rectGuide                 = new RectangleGuideVtk();
00214   _s2_rectGuide                 = new RectangleGuideVtk();
00215   _sA_rectGuide                 = new RectangleGuideVtk();
00216   _sB_rectGuide                 = new RectangleGuideVtk();
00217 
00218   _lstContVtk                   = new listContourVTK(this);
00219   _lstContHealtyVtk             = new listContourVTK(this);
00220   _lstContVtk->SetColour(1,1,0);
00221   _lstContHealtyVtk->SetColour(0,0,1);
00222 
00223 }
00224 
00225 vtk3DQuantSurfaceWidget::~vtk3DQuantSurfaceWidget()
00226 {
00227   if( _3DSliceActor )   _3DSliceActor   ->Delete();
00228   if( _3DSliceMapper)   _3DSliceMapper  ->Delete();
00229   if( _bwlookup         )       _bwlookup               ->Delete();
00230   if( _collookup        )       _collookup              ->Delete();
00231 
00232   delete _hs_rectGuide;
00233   delete _s1_rectGuide;
00234   delete _s2_rectGuide;
00235   delete _sA_rectGuide;
00236   delete _sB_rectGuide;
00237 
00238   delete _lstContVtk;
00239   delete _lstContHealtyVtk;
00240 }
00241 
00242 
00243 //----------------------------------------------------------------------------
00244 void vtk3DQuantSurfaceWidget::ShowMARACASDataAndAxe( marInterface* mar )
00245 {
00246   marAxis                       *temp;
00247   vtkPolyData           *allData;
00248   int nos;
00249   vtkProbeFilter        *pFilter;
00250 
00251   this->ShowMARACASData( mar );
00252   this->ConfigureVTK();
00253 
00254   _pRenderer->SetBackground( 0.35, 0.35, 0.35 );
00255 
00256   // Axis
00257   _mar->_experiment->setAxis( 0 );
00258   temp          = _mar->_experiment->getAxis( );  // ??? getActualAxis ??
00259   allData       = temp->Draw( );
00260 
00261   nos           = _mar->_experiment->getNumberOfSlices( );
00262   pFilter       = _mar->_experiment->get3DSlice( (int) (nos-1)/2 );
00263 
00264   _bwlookup = vtkWindowLevelLookupTable::New( );
00265   _bwlookup->SetHueRange( 0 , 1 );
00266   _bwlookup->SetNumberOfColors( (int)(_range[1] - _range[0] + 1) );
00267   _bwlookup->SetTableRange( _range[0] , _range[1] );
00268   _bwlookup->SetSaturationRange( 0 , 0 );
00269   _bwlookup->SetValueRange( 0 , 1 );
00270   _bwlookup->SetAlphaRange( 1 , 1 );
00271   _bwlookup->Build( );
00272 
00273   _collookup = vtkLookupTable::New( );
00274   _collookup->SetNumberOfColors( 256 );
00275   _collookup->SetTableRange( 0 , 255 );
00276   _collookup->Build( );
00277   _collookup->SetTableValue( 0  , 1 , 0 , 0 , 1 );
00278   _collookup->SetTableValue(128 , 0 , 0 , 1 , 1 );
00279   _collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
00280 
00281   _3DSliceMapper = vtkDataSetMapper::New( );
00282   _3DSliceMapper->SetInput(pFilter->GetOutput( ) );
00283   _3DSliceMapper->SetLookupTable( _bwlookup );
00284   _3DSliceMapper->SetScalarRange( _range );
00285   _3DSliceMapper->ImmediateModeRenderingOn( );
00286 
00287   _3DSliceActor = vtkActor::New( );
00288   _3DSliceActor->SetMapper( _3DSliceMapper );
00289   _pRenderer->AddActor( _3DSliceActor);
00290 
00291   _lstContVtk->InitListContourActor(nos);
00292   _lstContHealtyVtk->InitListContourActor(nos);
00293   
00294   this->SetAxis( allData );
00295 }
00296 
00297 //----------------------------------------------------------------------------
00298 
00299 //----------------------------------------------------------------------------
00300 void vtk3DQuantSurfaceWidget::ShowMARACASDataAndAxeCT( marInterfaceCT* mar )
00301 {
00302   marAxis                       *temp;
00303   vtkPolyData           *allData;
00304   int nos;
00305   vtkProbeFilter        *pFilter;
00306 
00307   this->ShowMARACASDataCT( mar );
00308   this->ConfigureVTK();
00309 
00310   _pRenderer->SetBackground( 0.75, 0.75, 0.75 );
00311 
00312   // Axis
00313   _marCT->setAxis( 0 );
00314   temp          = _marCT->getAxis( );  // ??? getActualAxis ??
00315   allData       = temp->Draw( );
00316 
00317   nos           = _marCT->getNumberOfSlices( );
00318   pFilter       = _marCT->get3DSlice( (int) (nos-1)/2 );
00319 
00320   _bwlookup = vtkWindowLevelLookupTable::New( );
00321   _bwlookup->SetHueRange( 0 , 1 );
00322   _bwlookup->SetNumberOfColors( (int)(_range[1] - _range[0] + 1) );
00323   _bwlookup->SetTableRange( _range[0] , _range[1] );
00324   _bwlookup->SetSaturationRange( 0 , 0 );
00325   _bwlookup->SetValueRange( 0 , 1 );
00326   _bwlookup->SetAlphaRange( 1 , 1 );
00327   _bwlookup->Build( );
00328 
00329   _collookup = vtkLookupTable::New( );
00330   _collookup->SetNumberOfColors( 256 );
00331   _collookup->SetTableRange( 0 , 255 );
00332   _collookup->Build( );
00333   _collookup->SetTableValue( 0  , 1 , 0 , 0 , 1 );
00334   _collookup->SetTableValue(128 , 0 , 0 , 1 , 1 );
00335   _collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
00336 
00337   _3DSliceMapper = vtkDataSetMapper::New( );
00338   _3DSliceMapper->SetInput(pFilter->GetOutput( ) );
00339   _3DSliceMapper->SetLookupTable( _bwlookup );
00340   _3DSliceMapper->SetScalarRange( _range );
00341   _3DSliceMapper->ImmediateModeRenderingOn( );
00342 
00343   _3DSliceActor = vtkActor::New( );
00344   _3DSliceActor->SetMapper( _3DSliceMapper );
00345   _pRenderer->AddActor( _3DSliceActor);
00346 
00347   _lstContVtk->InitListContourActor(nos);
00348   _lstContHealtyVtk->InitListContourActor(nos);
00349   
00350   this->SetAxis( allData );
00351 }
00352 
00353 //----------------------------------------------------------------------------
00354 
00355 void vtk3DQuantSurfaceWidget::SetBWLookUp(){
00356   _3DSliceMapper->SetLookupTable( _bwlookup );
00357   _pRenderWindow->Render( );
00358 }    
00359 //----------------------------------------------------------------------------
00360 void vtk3DQuantSurfaceWidget::SetColorLookUp(){
00361   _3DSliceMapper->SetLookupTable( _collookup );
00362   _pRenderWindow->Render( );
00363 }
00364 //----------------------------------------------------------------------------
00365 void vtk3DQuantSurfaceWidget::SetImage( vtkProbeFilter* pFilter )
00366 {
00367   _3DSliceMapper->SetInput(pFilter->GetOutput( ) );
00368 }
00369 //----------------------------------------------------------------------------
00370 void vtk3DQuantSurfaceWidget::Show3DSliceActor( )
00371 {
00372   _pRenderer->AddActor( _3DSliceActor );
00373   _pRenderWindow->Render( );
00374 }
00375 //----------------------------------------------------------------------------
00376 void vtk3DQuantSurfaceWidget::Hide3DSliceActor( )
00377 {
00378   _pRenderer->RemoveActor( _3DSliceActor );
00379   _pRenderWindow->Render( );
00380 }
00381 //----------------------------------------------------------------------------
00382 void vtk3DQuantSurfaceWidget::InitListContourActor(int type, int nos){
00383         if ((type==0) || (type==-1)){ _lstContVtk->InitListContourActor(nos); }
00384         if ((type==1) || (type==-1)){ _lstContHealtyVtk->InitListContourActor(nos); }
00385 }
00386 //----------------------------------------------------------------------------
00387 void vtk3DQuantSurfaceWidget::Show3DContourActor( int type ){
00388         if (type==0){ _lstContVtk->Show3DContourActor(); }
00389         if (type==1){ _lstContHealtyVtk->Show3DContourActor(); }
00390 }
00391 //----------------------------------------------------------------------------
00392 void vtk3DQuantSurfaceWidget::Hide3DContourActor( int type ){
00393         if (type==0){ _lstContVtk->Hide3DContourActor(); }
00394         if (type==1){ _lstContHealtyVtk->Hide3DContourActor(); }
00395 }
00396 //----------------------------------------------------------------------------
00397 void vtk3DQuantSurfaceWidget::Set3DContourActor( int slice, vtkPoints* contour3D, bool showActor , int type){
00398         if (type==0) { _lstContVtk->Set3DContourActor(slice,contour3D,showActor);       }
00399         if (type==1) { _lstContHealtyVtk->Set3DContourActor(slice,contour3D,showActor); }
00400 }
00401 //----------------------------------------------------------------------------
00402 void vtk3DQuantSurfaceWidget::Erase3DContourActor( int slice){
00403         _lstContVtk->EraseSliceContourActor(slice);
00404 }
00405 //----------------------------------------------------------------------------
00406 void vtk3DQuantSurfaceWidget::Show3DHealthySliceActor( )
00407 {
00408   _pRenderer->AddActor( _hs_rectGuide->_actor );
00409   _pRenderWindow->Render( );
00410 }
00411 //----------------------------------------------------------------------------
00412 void vtk3DQuantSurfaceWidget::Hide3DHealthySliceActor( )
00413 {
00414   _pRenderer->RemoveActor( _hs_rectGuide->_actor );
00415   _pRenderWindow->Render( );
00416 }
00417 //----------------------------------------------------------------------------
00418 void vtk3DQuantSurfaceWidget::Set3DSliceActor( RectangleGuideVtk *_rectGuide ,float scale, int k,int r,int g,int b){
00419         int             sizeIma;
00420         double  dimIma;
00421         double  *o;  // Origen
00422         double  *c;  // Center
00423         double  *n;  // Normal
00424 
00425         double  ori[3];
00426         double  p1[3];
00427         double  p2[3];
00428 
00429         sizeIma = _mar->_experiment->getAxis( )->getParameters( )->getSizeIma( );
00430         dimIma  = _mar->_experiment->getAxis( )->getParameters( )->getDimIma( );
00431     o           = _mar->_experiment->getAxis( )->getSplinePoint(k);  
00432     c           = _mar->_experiment->getAxis( )->getSplinePoint(k);  
00433     n           = _mar->_experiment->getAxis( )->getNormal(k);  
00434 
00435     vtkPlaneSource* pSource = vtkPlaneSource::New( );
00436     pSource->SetOrigin( o[0]                            , o[1], o[2]                            );
00437     pSource->SetPoint1( o[0]+dimIma*scale - 1.0 , o[1], o[2]                            );
00438     pSource->SetPoint2( o[0]                            , o[1], o[2]+dimIma*scale - 1.0 );
00439     pSource->SetResolution( sizeIma - 1 , sizeIma - 1   );
00440     pSource->Update( );
00441     pSource->SetCenter( c[ 0 ], c[ 1 ], c[ 2 ] );
00442     pSource->SetNormal( n[ 0 ], n[ 1 ], n[ 2 ] );
00443     pSource->Update( );
00444         pSource->GetOrigin( ori );
00445     pSource->GetPoint1( p1      );
00446     pSource->GetPoint2( p2      );
00447 
00448         if (_rectGuide->_actor)         _pRenderer->RemoveActor(_rectGuide->_actor);
00449         if (_rectGuide->_grid)          _rectGuide->_grid->Delete();
00450         if (_rectGuide->_actor)         _rectGuide->_actor->Delete();
00451         if (_rectGuide->_points)        _rectGuide->_points->Delete();
00452         if (_rectGuide->_mapper)        _rectGuide->_mapper->Delete();
00453         if (_rectGuide->_poly_line)     _rectGuide->_poly_line->Delete();
00454 
00455         _rectGuide->_poly_line = vtkPolyLine::New();
00456         ( _rectGuide->_poly_line->GetPointIds() )->SetNumberOfIds(8);
00457         ( _rectGuide->_poly_line->GetPointIds() )->SetId(0,0);
00458         ( _rectGuide->_poly_line->GetPointIds() )->SetId(1,1);
00459         ( _rectGuide->_poly_line->GetPointIds() )->SetId(2,2);
00460         ( _rectGuide->_poly_line->GetPointIds() )->SetId(3,3);
00461         ( _rectGuide->_poly_line->GetPointIds() )->SetId(4,4);
00462         ( _rectGuide->_poly_line->GetPointIds() )->SetId(5,5);
00463         ( _rectGuide->_poly_line->GetPointIds() )->SetId(6,6);
00464         ( _rectGuide->_poly_line->GetPointIds() )->SetId(7,7);
00465 
00466         _rectGuide->_points=vtkPoints::New();
00467         _rectGuide->_points->InsertNextPoint( ori[0]                    , ori[1]                                        , ori[2]                        );
00468         _rectGuide->_points->InsertNextPoint( p1[0]                             , p1[1]                                         , p1[2]                         );
00469         _rectGuide->_points->InsertNextPoint( p2[0]+p1[0]-ori[0], p2[1]+p1[1]-ori[1]            , p2[2]+p1[2]-ori[2]);
00470         _rectGuide->_points->InsertNextPoint( p2[0]                             , p2[1]                                         , p2[2]                         );
00471         _rectGuide->_points->InsertNextPoint( ori[0]                    , ori[1]                                        , ori[2]                        );
00472         _rectGuide->_points->InsertNextPoint( p2[0]+p1[0]-ori[0], p2[1]+p1[1]-ori[1]            , p2[2]+p1[2]-ori[2]);
00473         _rectGuide->_points->InsertNextPoint( p1[0]                             , p1[1]                                         , p1[2]                         );
00474         _rectGuide->_points->InsertNextPoint( p2[0]                             , p2[1]                                         , p2[2]                         );
00475 
00476         _rectGuide->_grid=vtkUnstructuredGrid::New();
00477         _rectGuide->_grid->Allocate(1,1);
00478         _rectGuide->_grid->InsertNextCell( _rectGuide->_poly_line->GetCellType() , _rectGuide->_poly_line->GetPointIds() );
00479         _rectGuide->_grid->SetPoints( _rectGuide->_points );
00480 
00481         _rectGuide->_mapper = vtkDataSetMapper::New();
00482         _rectGuide->_mapper->SetInput(_rectGuide->_grid);
00483         _rectGuide->_mapper->ImmediateModeRenderingOn();
00484 
00485         _rectGuide->_actor=vtkActor::New();
00486         _rectGuide->_actor->SetMapper(_rectGuide->_mapper);
00487         _rectGuide->_actor->GetProperty()->BackfaceCullingOn();
00488         _rectGuide->_actor->GetProperty()->SetDiffuseColor(r,g,b);
00489         _rectGuide->_actor->PickableOff( );
00490         _rectGuide->_iSlice = k;
00491 }
00492 //----------------------------------------------------------------------------
00493 void vtk3DQuantSurfaceWidget::Set3DHealthySliceActor(  ){
00494         int k = _mar->_experiment->getAxis( )->getHealthySlice();
00495         Set3DSliceActor( _hs_rectGuide , 1.0 , k ,0,0,1);
00496 }
00497 
00498 //----------------------------------------------------------------------------
00499 void vtk3DQuantSurfaceWidget::Set3DRegionSliceActor( int type , int k1, int k2 ){
00500         Set3DStartRegionSliceActor(type, k1);
00501         Set3DEndRegionSliceActor(type, k2);
00502 }
00503 //----------------------------------------------------------------------------
00504 void vtk3DQuantSurfaceWidget::Set3DStartRegionSliceActor( int type , int k ){
00505         if (type==0){
00506                 Set3DSliceActor( _s1_rectGuide , 0.3 , k ,1,0,0);
00507                 _mar->_experiment->getAxis()->setStartQuant(k);
00508         }
00509         if (type==1){
00510                 Set3DSliceActor( _sA_rectGuide , 0.3 , k ,1,1,0);
00511         }
00512 }
00513 //----------------------------------------------------------------------------
00514 void vtk3DQuantSurfaceWidget::Set3DEndRegionSliceActor( int type , int k ){
00515         if (type==0){
00516                 Set3DSliceActor( _s2_rectGuide , 0.3 , k ,1,0,0);
00517                 _mar->_experiment->getAxis()->setFinishQuant(k);
00518         }
00519         if (type==1){
00520                 Set3DSliceActor( _sB_rectGuide , 0.3 , k ,1,1,0);
00521         }
00522 }
00523 //----------------------------------------------------------------------------
00524 void vtk3DQuantSurfaceWidget::Show3DRegionSliceActor( int type ){
00525         Show3DStartRegionSliceActor(type);
00526         Show3DEndRegionSliceActor(type);
00527 }
00528 //----------------------------------------------------------------------------
00529 void vtk3DQuantSurfaceWidget::Show3DStartRegionSliceActor( int type ){
00530         if ((type==0) && (_s1_rectGuide->_iSlice!=-1)){
00531                 _pRenderer->AddActor( _s1_rectGuide->_actor );
00532                 _s1_rectGuide->_showActor=true;
00533         }
00534         if ((type==1) && (_sA_rectGuide->_iSlice!=-1)){
00535                 _pRenderer->AddActor( _sA_rectGuide->_actor );
00536                 _sA_rectGuide->_showActor=true;
00537         }
00538   _pRenderWindow->Render( );
00539 }
00540 //----------------------------------------------------------------------------
00541 void vtk3DQuantSurfaceWidget::Show3DEndRegionSliceActor( int type ){
00542         if ((type==0) && (_s2_rectGuide->_iSlice!=-1)){
00543                 _pRenderer->AddActor( _s2_rectGuide->_actor );
00544                 _s2_rectGuide->_showActor=true;
00545         }
00546         if ((type==1) && (_sB_rectGuide->_iSlice!=-1)){
00547                 _pRenderer->AddActor( _sB_rectGuide->_actor );
00548                 _sB_rectGuide->_showActor=true;
00549         }
00550   _pRenderWindow->Render( );
00551 }
00552 //----------------------------------------------------------------------------
00553 void vtk3DQuantSurfaceWidget::Hide3DRegionSliceActor( int type ){
00554         Hide3DStartRegionSliceActor(type );
00555         Hide3DEndRegionSliceActor(type );
00556 }
00557 //----------------------------------------------------------------------------
00558 void vtk3DQuantSurfaceWidget::Hide3DStartRegionSliceActor( int type ){
00559         if (type==0){
00560                 if (_s1_rectGuide->_showActor==true){
00561                         _pRenderer->RemoveActor( _s1_rectGuide->_actor );
00562                         _s1_rectGuide->_showActor=false;
00563                 }
00564         }
00565         if (type==1){
00566                 if (_sA_rectGuide->_showActor==true){
00567                         _pRenderer->RemoveActor( _sA_rectGuide->_actor );
00568                         _sA_rectGuide->_showActor=false;
00569                 }
00570         }
00571         _pRenderWindow->Render( );
00572 }
00573 //----------------------------------------------------------------------------
00574 void vtk3DQuantSurfaceWidget::Hide3DEndRegionSliceActor( int type ){
00575         if (type==0){
00576                 if (_s2_rectGuide->_showActor==true){
00577                         _pRenderer->RemoveActor( _s2_rectGuide->_actor );
00578                         _s2_rectGuide->_showActor=false;
00579                 }
00580         }
00581         if (type==1){
00582                 if (_sB_rectGuide->_showActor==true){
00583                         _pRenderer->RemoveActor( _sB_rectGuide->_actor );
00584                         _sB_rectGuide->_showActor=false;
00585                 }
00586         }
00587         _pRenderWindow->Render( );
00588 }
00589 //----------------------------------------------------------------------------
00590 void vtk3DQuantSurfaceWidget::GetSliceLimites(int type, int &sliceStart,int &sliceEnd){
00591         if (type==0){
00592                 sliceStart      = _s1_rectGuide->_iSlice;
00593                 sliceEnd        = _s2_rectGuide->_iSlice;
00594         }
00595         if (type==1){
00596                 sliceStart      = _sA_rectGuide->_iSlice;
00597                 sliceEnd        = _sB_rectGuide->_iSlice;
00598         }
00599 }
00600 //--------------------------------------------------------------------
00601 int vtk3DQuantSurfaceWidget::GetAnalysisTypeStenosis(){
00602         return _analysisTypeStenosis;
00603 }
00604 //--------------------------------------------------------------------
00605 void vtk3DQuantSurfaceWidget::SetAnalysisTypeStenosis(int analysisTypeStenosis){
00606         _analysisTypeStenosis=analysisTypeStenosis;
00607 }
00608 
00609 
00610 

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1