00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "vtk3DQuantSurfaceWidget.h"
00018 #include <vtkPointPicker.h>
00019 #include <vtkCamera.h>
00020 #include <vtkWindowLevelLookupTable.h>
00021
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
00078
00079
00080
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
00109 vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
00110 pRenderWindow->Render( );
00111 }
00112 }
00113
00114 void listContourVTK::Set3DContourActor( int slice, vtkPoints* contour3D, bool showActor){
00115
00116 EraseSliceContourActor(slice);
00117
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
00140 vtkRenderer *pRenderer = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
00141 vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
00142
00143 if (showActor==true){
00144 pRenderer->AddActor( _lst3DContoursVtkActor[slice] );
00145 }
00146
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
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
00171 pRenderWindow->Render( );
00172 }
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00192
00193
00194
00195
00196
00197
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
00257 _mar->_experiment->setAxis( 0 );
00258 temp = _mar->_experiment->getAxis( );
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
00313 _marCT->setAxis( 0 );
00314 temp = _marCT->getAxis( );
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;
00422 double *c;
00423 double *n;
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