vtk2DQuantSliceWidget.cxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "vtk2DQuantSliceWidget.h"
00018 #include <vtkProperty.h>
00019 #include <vtkRenderer.h>
00020
00030 vtk2DQuantSliceWidget::vtk2DQuantSliceWidget( wxWindow* parent, wxWindowID id,
00031 const wxPoint& pos, const wxSize& size,
00032 long style, const wxString& name)
00033 : wxImageViewerWidget( parent, id, pos, size, style, name)
00034 {
00035
00036 _cntActor = NULL;
00037 _cntMapper = NULL;
00038
00039
00040 _diameterMinvtkActor = NULL;
00041 _diameterMinvtkPolyLine = NULL;
00042 _diameterMinvtkDataSetMapper = NULL;
00043 _diameterMinvtkUnstructuredGrid = NULL;
00044
00045
00046 _diameterMaxvtkActor = NULL;
00047 _diameterMaxvtkPolyLine = NULL;
00048 _diameterMaxvtkDataSetMapper = NULL;
00049 _diameterMaxvtkUnstructuredGrid = NULL;
00050 }
00051
00052
00053 vtk2DQuantSliceWidget::~vtk2DQuantSliceWidget( )
00054 {
00055
00056 if( _cntActor ) _cntActor->Delete();
00057 if( _cntMapper ) _cntMapper->Delete();
00058
00059
00060 if( _diameterMinvtkActor ) _diameterMinvtkActor->Delete();
00061 if( _diameterMinvtkPolyLine ) _diameterMinvtkPolyLine->Delete();
00062 if( _diameterMinvtkDataSetMapper ) _diameterMinvtkDataSetMapper->Delete();
00063 if( _diameterMinvtkUnstructuredGrid ) _diameterMinvtkUnstructuredGrid->Delete();
00064
00065
00066 if( _diameterMaxvtkActor ) _diameterMaxvtkActor->Delete();
00067 if( _diameterMaxvtkPolyLine ) _diameterMaxvtkPolyLine->Delete();
00068 if( _diameterMaxvtkDataSetMapper ) _diameterMaxvtkDataSetMapper->Delete();
00069 if( _diameterMaxvtkUnstructuredGrid ) _diameterMaxvtkUnstructuredGrid->Delete();
00070 }
00071
00072
00073
00074
00075 void vtk2DQuantSliceWidget::SetContour( vtkPolyData *cnt )
00076 {
00077
00078
00079
00080 _cnt = cnt;
00081
00082 if( !_cntMapper ) {
00083 _cntMapper = vtkPolyDataMapper::New( );
00084 _cntMapper->ScalarVisibilityOff( );
00085 _cntMapper->ImmediateModeRenderingOn();
00086 }
00087 _cntMapper->SetInput( _cnt );
00088
00089
00090 if( !_cntActor ) {
00091 _cntActor = vtkActor::New( );
00092 _cntActor->SetMapper( _cntMapper );
00093 (_cntActor->GetProperty( ))->SetColor( 0 , 1 , 0 );
00094 (_cntActor->GetProperty( ))->SetLineWidth( 2 );
00095 (_cntActor->GetProperty( ))->BackfaceCullingOff( );
00096 }
00097 else{
00098 _imageViewer->GetRenderer()->RemoveActor( _cntActor );
00099 }
00100
00101 _cntActor->SetPosition(0,0,100);
00102 _imageViewer->GetRenderer()->AddActor( _cntActor );
00103 _imageViewer->Render( );
00104
00105 }
00106
00107
00108
00109 void vtk2DQuantSliceWidget::SetDiameterMin(vtkPoints *diameterMin, bool showActor){
00110 if (_diameterMinvtkActor!=NULL) _imageViewer->GetRenderer()->RemoveActor( _diameterMinvtkActor );
00111 if (_diameterMinvtkActor!=NULL) _diameterMinvtkActor->Delete();
00112 if (_diameterMinvtkPolyLine!=NULL) _diameterMinvtkPolyLine->Delete();
00113 if (_diameterMinvtkDataSetMapper!=NULL) _diameterMinvtkDataSetMapper->Delete();
00114 if (_diameterMinvtkUnstructuredGrid!=NULL) _diameterMinvtkUnstructuredGrid->Delete();
00115
00116 _diameterMinvtkActor = vtkActor::New();
00117 _diameterMinvtkPolyLine = vtkPolyLine::New();
00118 _diameterMinvtkDataSetMapper = vtkDataSetMapper::New();
00119 _diameterMinvtkUnstructuredGrid = vtkUnstructuredGrid::New();
00120
00121
00122 (_diameterMinvtkPolyLine->GetPointIds() )->SetNumberOfIds(2);
00123 ( _diameterMinvtkPolyLine->GetPointIds() )->SetId(0,0);
00124 ( _diameterMinvtkPolyLine->GetPointIds() )->SetId(1,1);
00125 _diameterMinvtkUnstructuredGrid->Allocate(1,1);
00126 _diameterMinvtkUnstructuredGrid->InsertNextCell(_diameterMinvtkPolyLine->GetCellType() ,
00127 _diameterMinvtkPolyLine->GetPointIds() );
00128 _diameterMinvtkUnstructuredGrid->SetPoints( diameterMin );
00129 _diameterMinvtkDataSetMapper->SetInput(_diameterMinvtkUnstructuredGrid);
00130 _diameterMinvtkDataSetMapper->ImmediateModeRenderingOn();
00131 _diameterMinvtkActor->SetMapper(_diameterMinvtkDataSetMapper);
00132 _diameterMinvtkActor->GetProperty()->BackfaceCullingOn();
00133 _diameterMinvtkActor->GetProperty()->SetDiffuseColor(1,0,0);
00134
00135 if (showActor==true) _imageViewer->GetRenderer()->AddActor( _diameterMinvtkActor );
00136
00137 _imageViewer->Render( );
00138 }
00139
00140 void vtk2DQuantSliceWidget::SetDiameterMax(vtkPoints *diameterMax, bool showActor){
00141 if (_diameterMaxvtkActor!=NULL) _imageViewer->GetRenderer()->RemoveActor( _diameterMaxvtkActor );
00142 if (_diameterMaxvtkActor!=NULL) _diameterMaxvtkActor->Delete();
00143 if (_diameterMaxvtkPolyLine!=NULL) _diameterMaxvtkPolyLine->Delete();
00144 if (_diameterMaxvtkDataSetMapper!=NULL) _diameterMaxvtkDataSetMapper->Delete();
00145 if (_diameterMaxvtkUnstructuredGrid!=NULL) _diameterMaxvtkUnstructuredGrid->Delete();
00146
00147 _diameterMaxvtkActor = vtkActor::New();
00148 _diameterMaxvtkPolyLine = vtkPolyLine::New();
00149 _diameterMaxvtkDataSetMapper = vtkDataSetMapper::New();
00150 _diameterMaxvtkUnstructuredGrid = vtkUnstructuredGrid::New();
00151
00152
00153 (_diameterMaxvtkPolyLine->GetPointIds() )->SetNumberOfIds(2);
00154 ( _diameterMaxvtkPolyLine->GetPointIds() )->SetId(0,0);
00155 ( _diameterMaxvtkPolyLine->GetPointIds() )->SetId(1,1);
00156 _diameterMaxvtkUnstructuredGrid->Allocate(1,1);
00157 _diameterMaxvtkUnstructuredGrid->InsertNextCell(_diameterMaxvtkPolyLine->GetCellType() ,
00158 _diameterMaxvtkPolyLine->GetPointIds() );
00159 _diameterMaxvtkUnstructuredGrid->SetPoints( diameterMax );
00160 _diameterMaxvtkDataSetMapper->SetInput(_diameterMaxvtkUnstructuredGrid);
00161 _diameterMaxvtkDataSetMapper->ImmediateModeRenderingOn();
00162 _diameterMaxvtkActor->SetMapper(_diameterMaxvtkDataSetMapper);
00163 _diameterMaxvtkActor->GetProperty()->BackfaceCullingOn();
00164 _diameterMaxvtkActor->GetProperty()->SetDiffuseColor(0,0,1);
00165
00166 if (showActor==true) _imageViewer->GetRenderer()->AddActor( _diameterMaxvtkActor );
00167
00168 _imageViewer->Render( );
00169 }
00170
00171 void vtk2DQuantSliceWidget::Show2DContourDiameters( ){
00172 if (_cntActor!=NULL) _imageViewer->GetRenderer()->AddActor( _cntActor );
00173 if (_diameterMinvtkActor!=NULL) _imageViewer->GetRenderer()->AddActor( _diameterMinvtkActor );
00174 if (_diameterMaxvtkActor!=NULL) _imageViewer->GetRenderer()->AddActor( _diameterMaxvtkActor );
00175 _imageViewer->Render( );
00176 }
00177
00178 void vtk2DQuantSliceWidget::Hide2DContourDiameters( ){
00179 if ( _cntActor != NULL ) { _imageViewer->GetRenderer()->RemoveActor( _cntActor ); }
00180 if ( _diameterMinvtkActor != NULL ) { _imageViewer->GetRenderer()->RemoveActor( _diameterMinvtkActor ); }
00181 if ( _diameterMaxvtkActor != NULL ) { _imageViewer->GetRenderer()->RemoveActor( _diameterMaxvtkActor ); }
00182 _imageViewer->Render( );
00183 }
00184
00185
00186
00187
00188
00189