--- /dev/null
+/*=========================================================================
+
+ Program: wxMaracas
+ Module: $RCSfile: vtk3DQuantSurfaceWidget.cxx,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.
+
+=========================================================================*/
+#include "vtk3DQuantSurfaceWidget.h"
+#include <vtkPointPicker.h>
+#include <vtkCamera.h>
+#include <vtkWindowLevelLookupTable.h>
+// EED
+#include <vtkPolyLine.h>
+#include <vtkPlaneSource.h>
+
+
+
+//----------------------------------------------------------------------------
+RectangleGuideVtk::RectangleGuideVtk(){
+ _showActor = false;
+ _grid = NULL;
+ _actor = NULL;
+ _points = NULL;
+ _mapper = NULL;
+ _poly_line = NULL;
+ _iSlice = -1;
+}
+//----------------------------------------------------------------------------
+RectangleGuideVtk::~RectangleGuideVtk(){
+ if( _grid ) _grid->Delete();
+ if( _actor ) _actor->Delete();
+ if( _points ) _points->Delete();
+ if( _mapper ) _mapper->Delete();
+ if( _poly_line ) _poly_line->Delete();
+}
+
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+listContourVTK::listContourVTK(vtk3DQuantSurfaceWidget *quantSurfaceWidget){
+ _r=1;
+ _g=1;
+ _b=1;
+ _vtk3DQuantSurfaceWidget=quantSurfaceWidget;
+}
+//----------------------------------------------------------------------------
+listContourVTK::~listContourVTK(){
+ EraseListContourActor();
+}
+//----------------------------------------------------------------------------
+void listContourVTK::SetColour(int r,int g,int b){
+ _r=r;
+ _g=g;
+ _b=b;
+}
+//----------------------------------------------------------------------------
+void listContourVTK::InitListContourActor(int nos){
+ EraseListContourActor();
+ int i;
+ for (i=0;i<nos;i++){
+ _lst3DContoursVtkActor.push_back( NULL );
+ _lst3DContoursVtkUnstructuredGrid.push_back( NULL );
+ _lst3DContoursVtkDataSetMapper.push_back( NULL );
+ _lst3DContoursVtkPolyLine.push_back( NULL );
+ }
+
+ // Refresh 3DWidget
+// EED 31 mai 2007
+// vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
+// pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void listContourVTK::EraseListContourActor(){
+ int i;
+ for (i=0;i<_lst3DContoursVtkActor.size();i++){
+ EraseSliceContourActor(i,false);
+ }
+ _lst3DContoursVtkActor.clear();
+ _lst3DContoursVtkUnstructuredGrid.clear();
+ _lst3DContoursVtkDataSetMapper.clear();
+ _lst3DContoursVtkPolyLine.clear();
+}
+//----------------------------------------------------------------------------
+void listContourVTK::EraseSliceContourActor(int slice, bool refresh){
+ if (_lst3DContoursVtkActor[slice]!=NULL){
+ vtkRenderer *pRenderer = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
+ if (_lst3DContoursVtkActor[slice]) pRenderer->RemoveActor(_lst3DContoursVtkActor[slice]);
+ if (_lst3DContoursVtkUnstructuredGrid[slice]) _lst3DContoursVtkUnstructuredGrid[slice]->Delete();
+ if (_lst3DContoursVtkDataSetMapper[slice]) _lst3DContoursVtkDataSetMapper[slice]->Delete();
+ if (_lst3DContoursVtkPolyLine[slice]) _lst3DContoursVtkPolyLine[slice]->Delete();
+ if (_lst3DContoursVtkActor[slice]) _lst3DContoursVtkActor[slice]->Delete();
+ _lst3DContoursVtkUnstructuredGrid[slice]=NULL;
+ _lst3DContoursVtkDataSetMapper[slice]=NULL;
+ _lst3DContoursVtkPolyLine[slice]=NULL;
+ _lst3DContoursVtkActor[slice]=NULL;
+ }
+ if (refresh==true){
+ // Refresh 3DWidget
+ vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
+ pRenderWindow->Render( );
+ }
+}
+//----------------------------------------------------------------------------
+void listContourVTK::Set3DContourActor( int slice, vtkPoints* contour3D, bool showActor){
+ // Erase old actor
+ EraseSliceContourActor(slice);
+ // generate new actor
+ int id,numberOfPoints;
+ numberOfPoints=contour3D->GetNumberOfPoints ();
+ _lst3DContoursVtkPolyLine[slice] = vtkPolyLine::New();
+
+ ( _lst3DContoursVtkPolyLine[slice]->GetPointIds() )->SetNumberOfIds(numberOfPoints);
+ for (id=0;id<numberOfPoints;id++){
+ ( _lst3DContoursVtkPolyLine[slice]->GetPointIds() )->SetId(id,id);
+ }
+ _lst3DContoursVtkUnstructuredGrid[slice]=vtkUnstructuredGrid::New();
+ _lst3DContoursVtkUnstructuredGrid[slice]->Allocate(1,1);
+ _lst3DContoursVtkUnstructuredGrid[slice]->InsertNextCell( _lst3DContoursVtkPolyLine[slice]->GetCellType() ,
+ _lst3DContoursVtkPolyLine[slice]->GetPointIds() );
+ _lst3DContoursVtkUnstructuredGrid[slice]->SetPoints( contour3D );
+ _lst3DContoursVtkDataSetMapper[slice] = vtkDataSetMapper::New();
+ _lst3DContoursVtkDataSetMapper[slice]->SetInput(_lst3DContoursVtkUnstructuredGrid[slice]);
+ _lst3DContoursVtkDataSetMapper[slice]->ImmediateModeRenderingOn();
+ _lst3DContoursVtkActor[slice]=vtkActor::New();
+ _lst3DContoursVtkActor[slice]->SetMapper(_lst3DContoursVtkDataSetMapper[slice]);
+ _lst3DContoursVtkActor[slice]->GetProperty()->BackfaceCullingOn();
+ _lst3DContoursVtkActor[slice]->GetProperty()->SetDiffuseColor(_r,_g,_b);
+ _lst3DContoursVtkActor[slice]->PickableOff( );
+ // add new actor
+ vtkRenderer *pRenderer = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
+ vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
+
+ if (showActor==true){
+ pRenderer->AddActor( _lst3DContoursVtkActor[slice] );
+ }
+ // Refresh 3DWidget
+ pRenderWindow->Render( );
+
+
+}
+//----------------------------------------------------------------------------
+void listContourVTK::Show3DContourActor( ){
+ vtkRenderer *pRenderer = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
+ vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
+ int i;
+ for (i=0;i<_lst3DContoursVtkActor.size();i++){
+ if (_lst3DContoursVtkActor[i]!=NULL) pRenderer->AddActor( _lst3DContoursVtkActor[i] );
+ }
+ // Refresh 3DWidget
+ pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void listContourVTK::Hide3DContourActor( ){
+ vtkRenderer *pRenderer = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderer();
+ vtkRenderWindow* pRenderWindow = _vtk3DQuantSurfaceWidget->QuantSurfaceWidget_GetRenderWindow();
+ int i;
+ for (i=0;i<_lst3DContoursVtkActor.size();i++){
+ if (_lst3DContoursVtkActor[i]!=NULL) pRenderer->RemoveActor( _lst3DContoursVtkActor[i] );
+ }
+ // Refresh 3DWidget
+ pRenderWindow->Render( );
+}
+
+
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+
+
+
+
+
+/**
+ * Again wxVTK is an hybrid class, double click was done using wxWindows, simply
+ * because VTK doesn't provide such facility (as opposed to wheel support that is
+ * supposed to be merged in VTK trunk sooner or later:
+ *
+ * http://public.kitware.com/pipermail/vtkusers/2003-August/019548.html
+ * http://www.creatis.insa-lyon.fr/~malaterre/vtk/wheel.patch
+ */
+
+//----------------------------------------------------------------------------
+/*
+BEGIN_EVENT_TABLE( vtk3DQuantSurfaceWidget, vtk3DSurfaceWidget )
+ // EVT_LEFT_DCLICK( vtk3DQuantSurfaceWidget::OnLeftDClick )
+ // EVT_MOUSEWHEEL( vtk3DQuantSurfaceWidget::OnMouseWheel )
+END_EVENT_TABLE( );
+*/
+//----------------------------------------------------------------------------
+vtk3DQuantSurfaceWidget::vtk3DQuantSurfaceWidget(
+ wxWindow* parent,
+ wxWindowID id,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxString& name)
+ : vtk3DSurfaceWidget( parent, id, pos, size, style, name ){
+ _3DSliceMapper = NULL;
+ _3DSliceActor = NULL;
+ _bwlookup = NULL;
+ _collookup = NULL;
+ _hs_rectGuide = new RectangleGuideVtk();
+ _s1_rectGuide = new RectangleGuideVtk();
+ _s2_rectGuide = new RectangleGuideVtk();
+ _sA_rectGuide = new RectangleGuideVtk();
+ _sB_rectGuide = new RectangleGuideVtk();
+
+ _lstContVtk = new listContourVTK(this);
+ _lstContHealtyVtk = new listContourVTK(this);
+ _lstContVtk->SetColour(1,1,0);
+ _lstContHealtyVtk->SetColour(0,0,1);
+
+}
+
+vtk3DQuantSurfaceWidget::~vtk3DQuantSurfaceWidget()
+{
+ if( _3DSliceActor ) _3DSliceActor ->Delete();
+ if( _3DSliceMapper) _3DSliceMapper ->Delete();
+ if( _bwlookup ) _bwlookup ->Delete();
+ if( _collookup ) _collookup ->Delete();
+
+ delete _hs_rectGuide;
+ delete _s1_rectGuide;
+ delete _s2_rectGuide;
+ delete _sA_rectGuide;
+ delete _sB_rectGuide;
+
+ delete _lstContVtk;
+ delete _lstContHealtyVtk;
+}
+
+
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::ShowMARACASDataAndAxe( marInterface* mar )
+{
+ marAxis *temp;
+ vtkPolyData *allData;
+ int nos;
+ vtkProbeFilter *pFilter;
+
+ this->ShowMARACASData( mar );
+ this->ConfigureVTK();
+
+ _pRenderer->SetBackground( 0.35, 0.35, 0.35 );
+
+ // Axis
+ _mar->_experiment->setAxis( 0 );
+ temp = _mar->_experiment->getAxis( ); // ??? getActualAxis ??
+ allData = temp->Draw( );
+
+ nos = _mar->_experiment->getNumberOfSlices( );
+ pFilter = _mar->_experiment->get3DSlice( (int) (nos-1)/2 );
+
+ _bwlookup = vtkWindowLevelLookupTable::New( );
+ _bwlookup->SetHueRange( 0 , 1 );
+ _bwlookup->SetNumberOfColors( (int)(_range[1] - _range[0] + 1) );
+ _bwlookup->SetTableRange( _range[0] , _range[1] );
+ _bwlookup->SetSaturationRange( 0 , 0 );
+ _bwlookup->SetValueRange( 0 , 1 );
+ _bwlookup->SetAlphaRange( 1 , 1 );
+ _bwlookup->Build( );
+
+ _collookup = vtkLookupTable::New( );
+ _collookup->SetNumberOfColors( 256 );
+ _collookup->SetTableRange( 0 , 255 );
+ _collookup->Build( );
+ _collookup->SetTableValue( 0 , 1 , 0 , 0 , 1 );
+ _collookup->SetTableValue(128 , 0 , 0 , 1 , 1 );
+ _collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
+
+ _3DSliceMapper = vtkDataSetMapper::New( );
+ _3DSliceMapper->SetInput(pFilter->GetOutput( ) );
+ _3DSliceMapper->SetLookupTable( _bwlookup );
+ _3DSliceMapper->SetScalarRange( _range );
+ _3DSliceMapper->ImmediateModeRenderingOn( );
+
+ _3DSliceActor = vtkActor::New( );
+ _3DSliceActor->SetMapper( _3DSliceMapper );
+ _pRenderer->AddActor( _3DSliceActor);
+
+ _lstContVtk->InitListContourActor(nos);
+ _lstContHealtyVtk->InitListContourActor(nos);
+
+ this->SetAxis( allData );
+}
+
+//----------------------------------------------------------------------------
+
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::ShowMARACASDataAndAxeCT( marInterfaceCT* mar )
+{
+ marAxis *temp;
+ vtkPolyData *allData;
+ int nos;
+ vtkProbeFilter *pFilter;
+
+ this->ShowMARACASDataCT( mar );
+ this->ConfigureVTK();
+
+ _pRenderer->SetBackground( 0.75, 0.75, 0.75 );
+
+ // Axis
+ _marCT->setAxis( 0 );
+ temp = _marCT->getAxis( ); // ??? getActualAxis ??
+ allData = temp->Draw( );
+
+ nos = _marCT->getNumberOfSlices( );
+ pFilter = _marCT->get3DSlice( (int) (nos-1)/2 );
+
+ _bwlookup = vtkWindowLevelLookupTable::New( );
+ _bwlookup->SetHueRange( 0 , 1 );
+ _bwlookup->SetNumberOfColors( (int)(_range[1] - _range[0] + 1) );
+ _bwlookup->SetTableRange( _range[0] , _range[1] );
+ _bwlookup->SetSaturationRange( 0 , 0 );
+ _bwlookup->SetValueRange( 0 , 1 );
+ _bwlookup->SetAlphaRange( 1 , 1 );
+ _bwlookup->Build( );
+
+ _collookup = vtkLookupTable::New( );
+ _collookup->SetNumberOfColors( 256 );
+ _collookup->SetTableRange( 0 , 255 );
+ _collookup->Build( );
+ _collookup->SetTableValue( 0 , 1 , 0 , 0 , 1 );
+ _collookup->SetTableValue(128 , 0 , 0 , 1 , 1 );
+ _collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
+
+ _3DSliceMapper = vtkDataSetMapper::New( );
+ _3DSliceMapper->SetInput(pFilter->GetOutput( ) );
+ _3DSliceMapper->SetLookupTable( _bwlookup );
+ _3DSliceMapper->SetScalarRange( _range );
+ _3DSliceMapper->ImmediateModeRenderingOn( );
+
+ _3DSliceActor = vtkActor::New( );
+ _3DSliceActor->SetMapper( _3DSliceMapper );
+ _pRenderer->AddActor( _3DSliceActor);
+
+ _lstContVtk->InitListContourActor(nos);
+ _lstContHealtyVtk->InitListContourActor(nos);
+
+ this->SetAxis( allData );
+}
+
+//----------------------------------------------------------------------------
+
+void vtk3DQuantSurfaceWidget::SetBWLookUp(){
+ _3DSliceMapper->SetLookupTable( _bwlookup );
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::SetColorLookUp(){
+ _3DSliceMapper->SetLookupTable( _collookup );
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::SetImage( vtkProbeFilter* pFilter )
+{
+ _3DSliceMapper->SetInput(pFilter->GetOutput( ) );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Show3DSliceActor( )
+{
+ _pRenderer->AddActor( _3DSliceActor );
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Hide3DSliceActor( )
+{
+ _pRenderer->RemoveActor( _3DSliceActor );
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::InitListContourActor(int type, int nos){
+ if ((type==0) || (type==-1)){ _lstContVtk->InitListContourActor(nos); }
+ if ((type==1) || (type==-1)){ _lstContHealtyVtk->InitListContourActor(nos); }
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Show3DContourActor( int type ){
+ if (type==0){ _lstContVtk->Show3DContourActor(); }
+ if (type==1){ _lstContHealtyVtk->Show3DContourActor(); }
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Hide3DContourActor( int type ){
+ if (type==0){ _lstContVtk->Hide3DContourActor(); }
+ if (type==1){ _lstContHealtyVtk->Hide3DContourActor(); }
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Set3DContourActor( int slice, vtkPoints* contour3D, bool showActor , int type){
+ if (type==0) { _lstContVtk->Set3DContourActor(slice,contour3D,showActor); }
+ if (type==1) { _lstContHealtyVtk->Set3DContourActor(slice,contour3D,showActor); }
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Erase3DContourActor( int slice){
+ _lstContVtk->EraseSliceContourActor(slice);
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Show3DHealthySliceActor( )
+{
+ _pRenderer->AddActor( _hs_rectGuide->_actor );
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Hide3DHealthySliceActor( )
+{
+ _pRenderer->RemoveActor( _hs_rectGuide->_actor );
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Set3DSliceActor( RectangleGuideVtk *_rectGuide ,float scale, int k,int r,int g,int b){
+ int sizeIma;
+ double dimIma;
+ double *o; // Origen
+ double *c; // Center
+ double *n; // Normal
+
+ double ori[3];
+ double p1[3];
+ double p2[3];
+
+ sizeIma = _mar->_experiment->getAxis( )->getParameters( )->getSizeIma( );
+ dimIma = _mar->_experiment->getAxis( )->getParameters( )->getDimIma( );
+ o = _mar->_experiment->getAxis( )->getSplinePoint(k);
+ c = _mar->_experiment->getAxis( )->getSplinePoint(k);
+ n = _mar->_experiment->getAxis( )->getNormal(k);
+
+ vtkPlaneSource* pSource = vtkPlaneSource::New( );
+ pSource->SetOrigin( o[0] , o[1], o[2] );
+ pSource->SetPoint1( o[0]+dimIma*scale - 1.0 , o[1], o[2] );
+ pSource->SetPoint2( o[0] , o[1], o[2]+dimIma*scale - 1.0 );
+ pSource->SetResolution( sizeIma - 1 , sizeIma - 1 );
+ pSource->Update( );
+ pSource->SetCenter( c[ 0 ], c[ 1 ], c[ 2 ] );
+ pSource->SetNormal( n[ 0 ], n[ 1 ], n[ 2 ] );
+ pSource->Update( );
+ pSource->GetOrigin( ori );
+ pSource->GetPoint1( p1 );
+ pSource->GetPoint2( p2 );
+
+ if (_rectGuide->_actor) _pRenderer->RemoveActor(_rectGuide->_actor);
+ if (_rectGuide->_grid) _rectGuide->_grid->Delete();
+ if (_rectGuide->_actor) _rectGuide->_actor->Delete();
+ if (_rectGuide->_points) _rectGuide->_points->Delete();
+ if (_rectGuide->_mapper) _rectGuide->_mapper->Delete();
+ if (_rectGuide->_poly_line) _rectGuide->_poly_line->Delete();
+
+ _rectGuide->_poly_line = vtkPolyLine::New();
+ ( _rectGuide->_poly_line->GetPointIds() )->SetNumberOfIds(8);
+ ( _rectGuide->_poly_line->GetPointIds() )->SetId(0,0);
+ ( _rectGuide->_poly_line->GetPointIds() )->SetId(1,1);
+ ( _rectGuide->_poly_line->GetPointIds() )->SetId(2,2);
+ ( _rectGuide->_poly_line->GetPointIds() )->SetId(3,3);
+ ( _rectGuide->_poly_line->GetPointIds() )->SetId(4,4);
+ ( _rectGuide->_poly_line->GetPointIds() )->SetId(5,5);
+ ( _rectGuide->_poly_line->GetPointIds() )->SetId(6,6);
+ ( _rectGuide->_poly_line->GetPointIds() )->SetId(7,7);
+
+ _rectGuide->_points=vtkPoints::New();
+ _rectGuide->_points->InsertNextPoint( ori[0] , ori[1] , ori[2] );
+ _rectGuide->_points->InsertNextPoint( p1[0] , p1[1] , p1[2] );
+ _rectGuide->_points->InsertNextPoint( p2[0]+p1[0]-ori[0], p2[1]+p1[1]-ori[1] , p2[2]+p1[2]-ori[2]);
+ _rectGuide->_points->InsertNextPoint( p2[0] , p2[1] , p2[2] );
+ _rectGuide->_points->InsertNextPoint( ori[0] , ori[1] , ori[2] );
+ _rectGuide->_points->InsertNextPoint( p2[0]+p1[0]-ori[0], p2[1]+p1[1]-ori[1] , p2[2]+p1[2]-ori[2]);
+ _rectGuide->_points->InsertNextPoint( p1[0] , p1[1] , p1[2] );
+ _rectGuide->_points->InsertNextPoint( p2[0] , p2[1] , p2[2] );
+
+ _rectGuide->_grid=vtkUnstructuredGrid::New();
+ _rectGuide->_grid->Allocate(1,1);
+ _rectGuide->_grid->InsertNextCell( _rectGuide->_poly_line->GetCellType() , _rectGuide->_poly_line->GetPointIds() );
+ _rectGuide->_grid->SetPoints( _rectGuide->_points );
+
+ _rectGuide->_mapper = vtkDataSetMapper::New();
+ _rectGuide->_mapper->SetInput(_rectGuide->_grid);
+ _rectGuide->_mapper->ImmediateModeRenderingOn();
+
+ _rectGuide->_actor=vtkActor::New();
+ _rectGuide->_actor->SetMapper(_rectGuide->_mapper);
+ _rectGuide->_actor->GetProperty()->BackfaceCullingOn();
+ _rectGuide->_actor->GetProperty()->SetDiffuseColor(r,g,b);
+ _rectGuide->_actor->PickableOff( );
+ _rectGuide->_iSlice = k;
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Set3DHealthySliceActor( ){
+ int k = _mar->_experiment->getAxis( )->getHealthySlice();
+ Set3DSliceActor( _hs_rectGuide , 1.0 , k ,0,0,1);
+}
+
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Set3DRegionSliceActor( int type , int k1, int k2 ){
+ Set3DStartRegionSliceActor(type, k1);
+ Set3DEndRegionSliceActor(type, k2);
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Set3DStartRegionSliceActor( int type , int k ){
+ if (type==0){
+ Set3DSliceActor( _s1_rectGuide , 0.3 , k ,1,0,0);
+ _mar->_experiment->getAxis()->setStartQuant(k);
+ }
+ if (type==1){
+ Set3DSliceActor( _sA_rectGuide , 0.3 , k ,1,1,0);
+ }
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Set3DEndRegionSliceActor( int type , int k ){
+ if (type==0){
+ Set3DSliceActor( _s2_rectGuide , 0.3 , k ,1,0,0);
+ _mar->_experiment->getAxis()->setFinishQuant(k);
+ }
+ if (type==1){
+ Set3DSliceActor( _sB_rectGuide , 0.3 , k ,1,1,0);
+ }
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Show3DRegionSliceActor( int type ){
+ Show3DStartRegionSliceActor(type);
+ Show3DEndRegionSliceActor(type);
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Show3DStartRegionSliceActor( int type ){
+ if ((type==0) && (_s1_rectGuide->_iSlice!=-1)){
+ _pRenderer->AddActor( _s1_rectGuide->_actor );
+ _s1_rectGuide->_showActor=true;
+ }
+ if ((type==1) && (_sA_rectGuide->_iSlice!=-1)){
+ _pRenderer->AddActor( _sA_rectGuide->_actor );
+ _sA_rectGuide->_showActor=true;
+ }
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Show3DEndRegionSliceActor( int type ){
+ if ((type==0) && (_s2_rectGuide->_iSlice!=-1)){
+ _pRenderer->AddActor( _s2_rectGuide->_actor );
+ _s2_rectGuide->_showActor=true;
+ }
+ if ((type==1) && (_sB_rectGuide->_iSlice!=-1)){
+ _pRenderer->AddActor( _sB_rectGuide->_actor );
+ _sB_rectGuide->_showActor=true;
+ }
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Hide3DRegionSliceActor( int type ){
+ Hide3DStartRegionSliceActor(type );
+ Hide3DEndRegionSliceActor(type );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Hide3DStartRegionSliceActor( int type ){
+ if (type==0){
+ if (_s1_rectGuide->_showActor==true){
+ _pRenderer->RemoveActor( _s1_rectGuide->_actor );
+ _s1_rectGuide->_showActor=false;
+ }
+ }
+ if (type==1){
+ if (_sA_rectGuide->_showActor==true){
+ _pRenderer->RemoveActor( _sA_rectGuide->_actor );
+ _sA_rectGuide->_showActor=false;
+ }
+ }
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::Hide3DEndRegionSliceActor( int type ){
+ if (type==0){
+ if (_s2_rectGuide->_showActor==true){
+ _pRenderer->RemoveActor( _s2_rectGuide->_actor );
+ _s2_rectGuide->_showActor=false;
+ }
+ }
+ if (type==1){
+ if (_sB_rectGuide->_showActor==true){
+ _pRenderer->RemoveActor( _sB_rectGuide->_actor );
+ _sB_rectGuide->_showActor=false;
+ }
+ }
+ _pRenderWindow->Render( );
+}
+//----------------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::GetSliceLimites(int type, int &sliceStart,int &sliceEnd){
+ if (type==0){
+ sliceStart = _s1_rectGuide->_iSlice;
+ sliceEnd = _s2_rectGuide->_iSlice;
+ }
+ if (type==1){
+ sliceStart = _sA_rectGuide->_iSlice;
+ sliceEnd = _sB_rectGuide->_iSlice;
+ }
+}
+//--------------------------------------------------------------------
+int vtk3DQuantSurfaceWidget::GetAnalysisTypeStenosis(){
+ return _analysisTypeStenosis;
+}
+//--------------------------------------------------------------------
+void vtk3DQuantSurfaceWidget::SetAnalysisTypeStenosis(int analysisTypeStenosis){
+ _analysisTypeStenosis=analysisTypeStenosis;
+}
+
+
+