wxVtkMPR3DView Class Reference

#include <wxVtkMPR3DView.h>

Collaboration diagram for wxVtkMPR3DView:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 wxVtkMPR3DView (wxVtk3DBaseView *wxvtk3Dbaseview)
virtual ~wxVtkMPR3DView ()
void VisibleImageActor (int idPosition, bool visible)
void VisiblePointWidget (bool visible)
void VisiblePlaneWidget (bool visible)
void SetVisibleTissue (int idTissue, bool visible)
bool GetVisibleTissue (int idTissue)
virtual void Refresh ()
virtual void RefreshView ()
virtual void Configure ()
void SetVtkMPR3DDataViewer (vtkMPR3DDataViewer *vtkmpr3Ddataviewer)
wxPanel * CreateControlPanel (wxWindow *parent, bool align)
vtkMPR3DDataViewerGetVtkMPR3DDataViewer ()
wxVtk3DBaseViewGetWxvtk3Dbaseview () throw (char*)
void InitOrientationPointWidget ()
void showOutlineActor (bool value)
void TestLoic1 ()
void TestLoic2 ()
void RemoveActor (vtkActor *actor)
void ResetCamera (int *ext=NULL, double *origin=NULL, double *spc=NULL)
void setColorTransferFunction (vtkColorTransferFunction *colortable)
void ConfigureFreePlanes ()
vtkImagePlaneWidget * GetPlaneWidget (unsigned char activationkey, double r, double g, double b, vtkCellPicker *picker)
void FreePlaneVisible (int plane, bool ok)
void FreePlaneInteraction (bool ok)

Private Attributes

wxVtk3DBaseView_wxvtk3Dbaseview
vtkMPR3DDataViewer_vtkmpr3Ddataviewer
wxVtkMPR3DViewCntrlPanel_wxvtkmpr3DviewCntrlPanel
vtkPolyData * _vtkplane
vtkActor * _contourPlaneActor
vtkPlaneWidget * _planeWidget
vtkPointWidget * _pointWidget
vtkProbeFilter * _probe
vtkPolyDataMapper * _contourMapper
vtkImagePlaneWidget * _planeWidgetX
vtkImagePlaneWidget * _planeWidgetY
vtkImagePlaneWidget * _planeWidgetZ

Detailed Description

Definition at line 17 of file wxVtkMPR3DView.h.


Constructor & Destructor Documentation

wxVtkMPR3DView::wxVtkMPR3DView ( wxVtk3DBaseView wxvtk3Dbaseview  ) 

Definition at line 19 of file wxVtkMPR3DView.cxx.

References _contourMapper, _planeWidget, _pointWidget, _probe, _vtkmpr3Ddataviewer, _vtkplane, _wxvtk3Dbaseview, and _wxvtkmpr3DviewCntrlPanel.

00020 {
00021         _wxvtk3Dbaseview                        =       wxvtk3Dbaseview;
00022         _vtkmpr3Ddataviewer                     =       NULL;
00023         _wxvtkmpr3DviewCntrlPanel       =       NULL;   
00024         //_myCallback                           =       NULL;
00025         _pointWidget                            =       NULL;
00026         _planeWidget                            =       NULL;
00027         _vtkplane                                       =       NULL;
00028         _probe                                          =       NULL;
00029         _contourMapper                          =       NULL;
00030         
00031         
00032         //EED Fev 3 2010
00033         //Free Planes 
00034 }

wxVtkMPR3DView::~wxVtkMPR3DView (  )  [virtual]

Definition at line 38 of file wxVtkMPR3DView.cxx.

References _contourMapper, _contourPlaneActor, _planeWidget, _pointWidget, _probe, _vtkplane, VisiblePlaneWidget(), and VisiblePointWidget().

00039 {
00040         VisiblePointWidget( false );
00041         VisiblePlaneWidget( false );
00042         
00043         if(_pointWidget!=NULL){
00044                 _pointWidget->Delete();
00045         }
00046         if(_planeWidget!=NULL){
00047                 _planeWidget->Delete();
00048         }
00049         
00050         if(_vtkplane!=NULL){
00051                 _vtkplane->Delete();            
00052                 _probe->Delete();
00053                 _contourMapper->Delete();                       
00054                 _contourPlaneActor->Delete();           
00055         }
00056         
00057 }

Here is the call graph for this function:


Member Function Documentation

void wxVtkMPR3DView::Configure (  )  [virtual]

Definition at line 95 of file wxVtkMPR3DView.cxx.

References _contourMapper, _contourPlaneActor, _planeWidget, _pointWidget, _probe, _vtkmpr3Ddataviewer, _vtkplane, _wxvtk3Dbaseview, _wxvtkmpr3DviewCntrlPanel, wxVtk3DBaseView::Configure(), ConfigureFreePlanes(), wxVtk3DBaseView::GetCamera(), vtkBaseData::GetImageData(), vtkMPR3DDataViewer::GetOutlineActor(), wxVtk3DBaseView::GetRenderer(), wxVtk3DBaseView::GetRenWin(), GetVtkMPR3DDataViewer(), vtkMPR3DDataViewer::GetVtkMPRBaseData(), GetWxvtk3Dbaseview(), vtkmyPWCallback_3DPointWidget::New(), ResetCamera(), vtkmyPWCallback_3DPointWidget::SetVtkPlaneWidget(), vtkmyPWCallback_3DPointWidget::SetVtkPointWidget(), vtkmyPWCallback_3DPointWidget::SetWxVtkMPR3DView(), and wxVtkMPR3DViewCntrlPanel::UpdateControlPanel().

Referenced by wxMaracasRenderTabbedPanel::addMPROptions().

00095                               {
00096 
00097         _wxvtk3Dbaseview->Configure();
00098         _wxvtkmpr3DviewCntrlPanel->UpdateControlPanel();
00099         
00100 //EED 27 Mai 2009 
00101 //      _wxvtk3Dbaseview->GetRenderer()->Clear();    
00102         
00103         // Actors are added to the renderer. 
00104         vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor();
00105         _wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor );                     
00106 //      _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(0)  );    // _saggital
00107 //      _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(1)  );    // _axial
00108 //      _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(2)  );    // _coronal
00109 
00110 
00111         // An initial camera view is created.  The Dolly() method moves 
00112         // the camera towards the FocalPoint, thereby enlarging the image.      
00113         _wxvtk3Dbaseview->GetRenderer()->SetActiveCamera(_wxvtk3Dbaseview->GetCamera());
00114         this->ResetCamera();
00115         
00116 
00117         // Set a background color for the renderer and set the size of the
00118         // render window (expressed in pixels).
00119         _wxvtk3Dbaseview->GetRenderer()->SetBackground( 0.36 , 0.36 , 0.36 );
00120         _wxvtk3Dbaseview->GetRenWin()->SetSize(400, 400);
00121 
00122         // Note that when camera movement occurs (as it does in the Dolly()
00123         // method), the clipping planes often need adjusting. Clipping planes
00124         // consist of two planes: near and far along the view direction. The 
00125         // near plane clips out objects in front of the plane; the far plane
00126         // clips out objects behind the plane. This way only what is drawn
00127         // between the planes is actually rendered.
00128         _wxvtk3Dbaseview->GetRenderer()->ResetCameraClippingRange();
00129 
00130 
00131         // vtkPointWidget
00132         //if(_myCallback!=NULL){
00133                 //_myCallback->Delete();
00134 
00135         //}
00136         vtkmyPWCallback_3DPointWidget *_myCallback = vtkmyPWCallback_3DPointWidget::New();
00137         _myCallback->SetWxVtkMPR3DView(this);
00138  
00139         if(_pointWidget!=NULL){
00140                 _pointWidget->Delete();
00141         }
00142         _pointWidget = vtkPointWidget::New();
00143         _myCallback->SetVtkPointWidget(_pointWidget);
00144         _pointWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); 
00145         _pointWidget->SetInput( GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData() );
00146         
00147         _pointWidget->AllOff();
00148         
00149         _pointWidget->PlaceWidget();
00150 //      _pointWidget->SetPosition( x,y,z ); 
00151         
00152 //EED01 29Mars2009
00153 // MACOS probleme vtk-window out of wx-window   
00154 //      _pointWidget->On();
00155         
00156         _pointWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback);
00157 
00158 
00159 // PlaneWidget
00160         if(_planeWidget!=NULL)
00161         {
00162                 _planeWidget->Delete();
00163         }
00164         _planeWidget = vtkPlaneWidget::New();
00165         _myCallback->SetVtkPlaneWidget(_planeWidget);
00166         _planeWidget->SetInput( GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData() );
00167         _planeWidget->NormalToXAxisOn();
00168         _planeWidget->SetResolution(50);
00169         _planeWidget->SetRepresentationToOutline();
00170         int dim[3];
00171         GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetDimensions(dim);
00172         int px=(dim[0]/2);
00173         int py=(dim[1]/2);
00174         int pz=(dim[2]/2);
00175         int dd=20;
00176         _planeWidget->PlaceWidget( px-dd , px+dd , py-dd , py+dd , pz-dd , pz+dd );
00177 
00178 
00179         if(_vtkplane==NULL){
00180                 _vtkplane = vtkPolyData::New();
00181                 
00182                 _probe = vtkProbeFilter::New();
00183                 _probe->SetInput(_vtkplane);
00184 
00185                 _contourMapper = vtkPolyDataMapper::New();
00186                 
00187                 _contourMapper->SetInput( _probe->GetPolyDataOutput() );
00188 
00189                 _contourPlaneActor = vtkActor::New();
00190                 _contourPlaneActor->SetMapper(_contourMapper);
00191 
00192                 _contourPlaneActor->VisibilityOff();
00193 
00194                 _planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() );
00195                 _planeWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback);
00196 
00197                 _planeWidget->Off();
00198                 _wxvtk3Dbaseview->GetRenderer()->AddActor( _contourPlaneActor );        
00199 
00200         }else{
00201                 
00202         }
00203         _planeWidget->GetPolyData(_vtkplane);
00204         vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); 
00205         _probe->SetSource( imageData );
00206         _contourMapper->SetScalarRange( imageData->GetScalarRange() );
00207         
00208         ConfigureFreePlanes();
00209 }

Here is the call graph for this function:

Here is the caller graph for this function:

void wxVtkMPR3DView::ConfigureFreePlanes (  ) 

Definition at line 212 of file wxVtkMPR3DView.cxx.

References _planeWidgetX, _planeWidgetY, _planeWidgetZ, and GetPlaneWidget().

Referenced by Configure().

00213 {
00214 
00215         // The shared picker enables us to use 3 planes at one time
00216         // and gets the picking order right
00217         vtkCellPicker* picker = vtkCellPicker::New();
00218         picker->SetTolerance(0.005);
00219 
00220         // The 3 image plane widgets 
00221         _planeWidgetX = GetPlaneWidget('x', 1, 0, 0, picker);
00222         _planeWidgetY = GetPlaneWidget('y', 1, 1, 0, picker);
00223         _planeWidgetZ = GetPlaneWidget('z', 0, 0, 1, picker);     
00224         
00225         _planeWidgetY->SetLookupTable(_planeWidgetX->GetLookupTable());
00226         _planeWidgetZ->SetLookupTable(_planeWidgetX->GetLookupTable());
00227         
00228         picker->UnRegister(NULL);
00229         
00230 }

Here is the call graph for this function:

Here is the caller graph for this function:

wxPanel * wxVtkMPR3DView::CreateControlPanel ( wxWindow *  parent,
bool  align 
)
void wxVtkMPR3DView::FreePlaneInteraction ( bool  ok  ) 

Definition at line 288 of file wxVtkMPR3DView.cxx.

References _planeWidgetX, _planeWidgetY, and _planeWidgetZ.

Referenced by wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction(), wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX(), wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY(), and wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ().

00289 {
00290         if (ok==true)
00291         {
00292                 _planeWidgetX->InteractionOn();
00293                 _planeWidgetY->InteractionOn();
00294                 _planeWidgetZ->InteractionOn();
00295         } else {
00296                 _planeWidgetX->InteractionOff();
00297                 _planeWidgetY->InteractionOff();
00298                 _planeWidgetZ->InteractionOff();
00299         }
00300 }

Here is the caller graph for this function:

void wxVtkMPR3DView::FreePlaneVisible ( int  plane,
bool  ok 
)

Definition at line 276 of file wxVtkMPR3DView.cxx.

References _planeWidgetX, _planeWidgetY, and _planeWidgetZ.

Referenced by wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX(), wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY(), and wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ().

00277 {
00278         
00279         if ((plane==1) && (ok==true)) _planeWidgetX->EnabledOn();
00280         if ((plane==2) && (ok==true)) _planeWidgetY->EnabledOn();
00281         if ((plane==3) && (ok==true)) _planeWidgetZ->EnabledOn();
00282         if ((plane==1) && (ok==false)) _planeWidgetX->EnabledOff();
00283         if ((plane==2) && (ok==false)) _planeWidgetY->EnabledOff();
00284         if ((plane==3) && (ok==false)) _planeWidgetZ->EnabledOff();
00285 }

Here is the caller graph for this function:

vtkImagePlaneWidget * wxVtkMPR3DView::GetPlaneWidget ( unsigned char  activationkey,
double  r,
double  g,
double  b,
vtkCellPicker *  picker 
)

Definition at line 233 of file wxVtkMPR3DView.cxx.

References vtkBaseData::GetImageData(), GetVtkMPR3DDataViewer(), vtkMPR3DDataViewer::GetVtkMPRBaseData(), and GetWxvtk3Dbaseview().

Referenced by ConfigureFreePlanes().

00234 {
00235         vtkProperty* prop1 = 0;         
00236         vtkImagePlaneWidget* planeWidget = 0;
00237         planeWidget = vtkImagePlaneWidget::New();
00238         planeWidget->EnabledOff();
00239         planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() );
00240         vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00241         planeWidget->SetInput( image );
00242 
00243         
00244         int xMin, xMax, yMin, yMax, zMin, zMax;
00245         image->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax);   
00246         double xSpacing, ySpacing, zSpacing;
00247         image->GetSpacing(xSpacing, ySpacing, zSpacing);        
00248         
00249         if (activationkey=='x')
00250         {
00251                 planeWidget->SetPlaneOrientationToXAxes();       
00252                 planeWidget->SetSlicePosition((xMax+xMin)/2.*xSpacing);
00253         }
00254         
00255         if (activationkey=='y')
00256         {
00257                 planeWidget->SetPlaneOrientationToYAxes();
00258                 planeWidget->SetSlicePosition((yMax+yMin)/2.*ySpacing);
00259         }
00260                 
00261         if (activationkey=='z')
00262         {
00263                 planeWidget->SetPlaneOrientationToZAxes();
00264                 planeWidget->SetSlicePosition((zMax+zMin)/2.*zSpacing);
00265         }
00266         
00267         planeWidget->DisplayTextOn();
00268         planeWidget->SetPicker(picker);
00269         planeWidget->SetKeyPressActivationValue(activationkey);
00270         prop1 = planeWidget->GetPlaneProperty();
00271         prop1->SetColor(r, g, b);
00272         return planeWidget;
00273 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool wxVtkMPR3DView::GetVisibleTissue ( int  idTissue  ) 
vtkMPR3DDataViewer * wxVtkMPR3DView::GetVtkMPR3DDataViewer (  ) 
wxVtk3DBaseView * wxVtkMPR3DView::GetWxvtk3Dbaseview (  )  throw (char*)
void wxVtkMPR3DView::InitOrientationPointWidget (  ) 

Definition at line 439 of file wxVtkMPR3DView.cxx.

References _planeWidget.

Referenced by wxManualRegistration3D::OnTracking().

00440 {
00441         this->_planeWidget->SetNormal(1,0,0);           
00442 }

Here is the caller graph for this function:

void wxVtkMPR3DView::Refresh (  )  [virtual]
void wxVtkMPR3DView::RefreshView (  )  [virtual]

Definition at line 321 of file wxVtkMPR3DView.cxx.

References _planeWidget, _pointWidget, _vtkplane, vtkBaseData::GetImageData(), vtkMPRBaseData::GetTransformOrientation(), GetVtkMPR3DDataViewer(), vtkMPR3DDataViewer::GetVtkMPRBaseData(), vtkMPRBaseData::GetX(), vtkMPRBaseData::GetY(), vtkBaseData::GetZ(), and Refresh().

Referenced by wxVtkMPR3DViewCntrlPanel::OnPositionX(), wxVtkMPR3DViewCntrlPanel::OnPositionY(), wxVtkMPR3DViewCntrlPanel::OnPositionZ(), and wxMaracasRenderTabbedPanel::OnRefreshView().

00322 {
00323         double spc[3];
00324         this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc);
00325 
00326         //double nx=1,ny=0,nz=0; // JPRx
00327         Refresh();
00328         double x=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetX();
00329         double y=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetY();
00330         double z=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetZ();
00331 
00332         x=x*spc[0];
00333         y=y*spc[1];
00334         z=z*spc[2];
00335 
00336         _pointWidget->SetPosition( x,y,z ); 
00337 
00338 
00339         double in[3]; 
00340         double normal[3];
00341         vtkTransform *transform = GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetTransformOrientation();
00342         in[0]=1;                in[1]=0;                        in[2]=0;
00343         transform->TransformPoint(in,normal);
00344         _planeWidget->SetNormal( normal[0],normal[1],normal[2] );
00345 
00346 
00347         _planeWidget->SetCenter( x,y,z );
00348         _planeWidget->UpdatePlacement();
00349         _planeWidget->GetPolyData(_vtkplane);
00350 }

Here is the call graph for this function:

Here is the caller graph for this function:

void wxVtkMPR3DView::RemoveActor ( vtkActor *  actor  ) 

Definition at line 60 of file wxVtkMPR3DView.cxx.

References _wxvtk3Dbaseview, and wxVtk3DBaseView::GetRenderer().

00061 {       
00062         _wxvtk3Dbaseview->GetRenderer()->RemoveActor(actor);    
00063 }

Here is the call graph for this function:

void wxVtkMPR3DView::ResetCamera ( int *  ext = NULL,
double *  origin = NULL,
double *  spc = NULL 
)

Definition at line 66 of file wxVtkMPR3DView.cxx.

References _wxvtk3Dbaseview, wxVtk3DBaseView::GetCamera(), and wxVtk3DBaseView::GetRenderer().

Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), Configure(), and wxMaracas_ViewerWidget::ConfigureVTK().

00067 {
00068         if(ext == NULL){
00069                 _wxvtk3Dbaseview->GetRenderer()->ResetCamera ();        
00070                 _wxvtk3Dbaseview->GetCamera()->Dolly(1.5);      
00071         }else{
00072                 /*double x = (spc[0])*(origin[0]+(((double)ext[1]-(double)ext[0])/2.0));                
00073                 double y = (spc[1])*(origin[1]+(double)ext[3]);
00074                 double z = (spc[2])*(origin[2]+(((double)ext[5]-(double)ext[4])/2.0));*/
00075                 /*double x0=(spc[0])*((double)ext[0]+origin[0]);
00076                 double x1=(spc[0])*((double)ext[1]+origin[0]);
00077                 double y0=(spc[1])*((double)ext[2]+origin[1]);
00078                 double y1=(spc[1])*((double)ext[3]+origin[1]);
00079                 double z0=(spc[2])*((double)ext[4]+origin[2]);
00080                 double z1=(spc[2])*((double)ext[5]+origin[2]);*/
00081                 double x0=(spc[0])*((double)ext[0]);
00082                 double x1=(spc[0])*((double)ext[1]);
00083                 double y0=(spc[1])*((double)ext[2]);
00084                 double y1=(spc[1])*((double)ext[3]);
00085                 double z0=(spc[2])*((double)ext[4]);
00086                 double z1=(spc[2])*((double)ext[5]);
00087                 
00088                 _wxvtk3Dbaseview->GetRenderer()->ResetCamera(x0,x1,y0,y1,z0,z1);
00089                 //_wxvtk3Dbaseview->GetCamera()->SetPosition(x,y,z);
00090                 _wxvtk3Dbaseview->GetCamera()->Dolly(1.5);      
00091         }
00092 }

Here is the call graph for this function:

Here is the caller graph for this function:

void wxVtkMPR3DView::setColorTransferFunction ( vtkColorTransferFunction *  colortable  ) 

Definition at line 304 of file wxVtkMPR3DView.cxx.

References GetVtkMPR3DDataViewer(), and vtkMPR3DDataViewer::setColorTransferFunction().

Referenced by wxMaracas_ViewerWidget::setColorTransferFunction().

00305 {
00306         GetVtkMPR3DDataViewer ()->setColorTransferFunction(colortable); 
00307 }

Here is the call graph for this function:

Here is the caller graph for this function:

void wxVtkMPR3DView::SetVisibleTissue ( int  idTissue,
bool  visible 
)
void wxVtkMPR3DView::SetVtkMPR3DDataViewer ( vtkMPR3DDataViewer vtkmpr3Ddataviewer  ) 
void wxVtkMPR3DView::showOutlineActor ( bool  value  ) 

Definition at line 419 of file wxVtkMPR3DView.cxx.

References _vtkmpr3Ddataviewer, _wxvtk3Dbaseview, vtkMPR3DDataViewer::GetOutlineActor(), and wxVtk3DBaseView::GetRenderer().

Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), and wxMaracasRenderTabbedPanel::addRemoveActorMPR().

00420 {
00421         vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor();
00422         if(value == true)
00423         {
00424                 _wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor );     
00425         }
00426         else
00427         {
00428                 _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _outlineActor );  
00429         }
00430 }

Here is the call graph for this function:

Here is the caller graph for this function:

void wxVtkMPR3DView::TestLoic1 (  ) 

Definition at line 449 of file wxVtkMPR3DView.cxx.

References _planeWidget, vtkBaseData::GetImageData(), GetVtkMPR3DDataViewer(), and vtkMPR3DDataViewer::GetVtkMPRBaseData().

Referenced by wxManualRegistration3D::OnTracking().

00450 {
00451 
00452         int sizeIma     = 128;
00453   double dimIma = sizeIma*2;
00454 
00455         vtkImageData *vtkimagedata =  this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00456 
00457         double spc[3];
00458         vtkimagedata->GetSpacing(spc);
00459 
00460         vtkimagedata->Update();
00461 
00462 
00463          double p[3], n[3];
00464      this->_planeWidget->GetOrigin(p);
00465      this->_planeWidget->GetNormal(n);
00466 
00467 
00468 
00469     vtkPlaneSource* pSource = vtkPlaneSource::New( );
00470     pSource->SetResolution( sizeIma - 1, sizeIma - 1 );
00471     pSource->SetOrigin( p[ 0 ], p[ 1 ], p[ 2 ] );
00472     pSource->SetPoint1( p[ 0 ] + dimIma - 1.0, p[ 1 ], p[ 2 ] );
00473     pSource->SetPoint2( p[ 0 ], p[ 1 ]+ dimIma - 1.0 , p[ 2 ] );
00474     pSource->Update( );
00475     pSource->SetCenter( p[ 0 ], p[ 1 ], p[ 2 ] );
00476     pSource->SetNormal( n[ 0 ], n[ 1 ], n[ 2 ] );
00477     pSource->Update( );
00478 
00479     vtkProbeFilter* slices = vtkProbeFilter::New();
00480     slices->SetInput( ( vtkDataSet* )pSource->GetOutput( ) );
00481     slices->SetSource( vtkimagedata );
00482     slices->Update( );
00483     pSource->Delete( );
00484 
00485         vtkStructuredPoints   *stPoints = vtkStructuredPoints::New();
00486         stPoints -> GetPointData( )->SetScalars(  slices->GetOutput()->GetPointData()->GetScalars()  );
00487         stPoints -> SetDimensions( sizeIma, sizeIma, 1 );
00488         stPoints -> SetScalarType( vtkimagedata->GetScalarType() );
00489         stPoints -> SetScalarTypeToShort();
00490         stPoints -> Update();
00491 
00492         vtkImageChangeInformation  *change = vtkImageChangeInformation ::New();
00493         change    -> SetInput( stPoints );  
00494         change    -> Update();    //important
00495 
00496         double _range[2];
00497         vtkimagedata->GetScalarRange(_range);
00498    vtkWindowLevelLookupTable *_bwlookup = vtkWindowLevelLookupTable::New( );
00499    _bwlookup->SetHueRange( 0 , 1 );
00500    _bwlookup->SetNumberOfColors( (int)(_range[1] - _range[0] + 1) );
00501    _bwlookup->SetTableRange( _range[0] , _range[1] );
00502    _bwlookup->SetSaturationRange( 0 , 0 );
00503    _bwlookup->SetValueRange( 0 , 1 );
00504    _bwlookup->SetAlphaRange( 1 , 1 );
00505    _bwlookup->Build( );
00506  
00507    vtkLookupTable * _collookup = vtkLookupTable::New( );
00508    _collookup->SetNumberOfColors( 256 );
00509    _collookup->SetTableRange( 0 , 255 );
00510    _collookup->Build( );
00511    _collookup->SetTableValue( 0  , 1 , 0 , 0 , 1 );
00512    _collookup->SetTableValue(128 , 0 , 0 , 1 , 1 );
00513    _collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
00514 
00515 
00516         vtkMetaImageWriter *writer = vtkMetaImageWriter::New( );
00517         writer->SetInput( stPoints );
00518         writer->SetFileName( "C:/Users/Images/temp_EED/image.mhd" );
00519         writer->SetFileDimensionality( 2 );
00520         writer->Write( );
00521 
00522 
00523 
00524         vtkDataSetMapper *_3DSliceMapper = vtkDataSetMapper::New( );
00525         _3DSliceMapper->SetInput(change->GetOutput( ) );
00526         _3DSliceMapper->SetLookupTable( _bwlookup );
00527         _3DSliceMapper->SetScalarRange( _range );
00528         _3DSliceMapper->ImmediateModeRenderingOn( );
00529 
00530         vtkActor *_3DSliceActor = vtkActor::New( );
00531         _3DSliceActor->SetMapper( _3DSliceMapper );
00532 
00533  // The usual rendering stuff.
00534   vtkCamera *camera = vtkCamera::New();
00535       camera->SetPosition(1,1,1);
00536       camera->SetFocalPoint(0,0,0);
00537 
00538   vtkRenderer *renderer = vtkRenderer::New();
00539   vtkRenderWindow *renWin = vtkRenderWindow::New();
00540     renWin->AddRenderer(renderer);
00541 
00542   vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
00543     iren->SetRenderWindow(renWin);
00544 
00545   renderer->AddActor( _3DSliceActor );
00546       renderer->SetActiveCamera(camera);
00547       renderer->ResetCamera();
00548       renderer->SetBackground(1,1,1);
00549   
00550   renWin->SetSize(300,300);
00551 
00552   // interact with data
00553   renWin->Render();
00554   iren->Start();
00555 
00556 
00557 
00558 
00559 
00560 }

Here is the call graph for this function:

Here is the caller graph for this function:

void wxVtkMPR3DView::TestLoic2 (  ) 

Definition at line 564 of file wxVtkMPR3DView.cxx.

References _planeWidget, vtkBaseData::GetImageData(), GetVtkMPR3DDataViewer(), and vtkMPR3DDataViewer::GetVtkMPRBaseData().

00565 {
00566 /*
00567  vtkVectorNorm *vecMagnitude = vtkVectorNorm::New();
00568                 vecMagnitude->SetInput(VtkMainGrid);
00569                 vecMagnitude->NormalizeOff();
00570                 vecMagnitude->Update();
00571 */
00572 
00573         vtkPlane *slicePlane = vtkPlane::New();
00574                                 this->_planeWidget->GetPlane( slicePlane );
00575 
00576                 
00577         vtkCutter* sliceCutter = vtkCutter::New();
00578                 vtkImageData *vtkimagedata =  this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00579                 sliceCutter->SetInput( vtkimagedata );
00580                 sliceCutter->SetCutFunction( slicePlane );
00581 
00582 //EED
00583 //        vtkLookupTable *lut = BuildHueWeightBaseMap();
00584 
00585 
00586         vtkPolyDataMapper *slice = vtkPolyDataMapper::New();
00587                 slice->SetInput( sliceCutter->GetOutput() );
00588         double range[2];
00589 // EED
00590 //                slice->Update();
00591                                   vtkimagedata->GetScalarRange(range);
00592 //                vecMagnitude->GetOutput()->GetScalarRange( range );
00593 //                range[1] *= 0.7; // reduce the upper range by 30%
00594 //                slice->SetScalarRange( range );
00595 //                slice->SetLookupTable( lut );
00596 
00597 //       vtkActor *sliceActor = vtkActor::New();
00598 //                sliceActor->SetMapper( slice );
00599 
00600         vtkPolyDataMapper *contourMapper = vtkPolyDataMapper::New();
00601                 contourMapper->SetInput( sliceCutter->GetOutput() );
00602                 contourMapper->SetScalarRange( range );
00603   //              contourMapper->SetLookupTable( lut );
00604 
00605                 
00606         vtkActor *contourActor = vtkActor::New();
00607                 contourActor->SetMapper( contourMapper );
00608 
00609 
00610 
00611  // The usual rendering stuff.
00612   vtkCamera *camera = vtkCamera::New();
00613       camera->SetPosition(1,1,1);
00614       camera->SetFocalPoint(0,0,0);
00615 
00616   vtkRenderer *renderer = vtkRenderer::New();
00617   vtkRenderWindow *renWin = vtkRenderWindow::New();
00618     renWin->AddRenderer(renderer);
00619 
00620   vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
00621     iren->SetRenderWindow(renWin);
00622 
00623   renderer->AddActor( contourActor );
00624 //  renderer->AddActor(cubeActor);
00625       renderer->SetActiveCamera(camera);
00626       renderer->ResetCamera();
00627       renderer->SetBackground(1,1,1);
00628   
00629   renWin->SetSize(300,300);
00630 
00631   // interact with data
00632   renWin->Render();
00633   iren->Start();
00634 
00635 
00636 }

Here is the call graph for this function:

void wxVtkMPR3DView::VisibleImageActor ( int  idPosition,
bool  visible 
)

Definition at line 373 of file wxVtkMPR3DView.cxx.

References _vtkmpr3Ddataviewer, _wxvtk3Dbaseview, vtkMPR3DDataViewer::GetImageActor(), wxVtk3DBaseView::GetRenderer(), vtkMPR3DDataViewer::GetVisiblePosition(), and vtkMPR3DDataViewer::SetVisiblePosition().

Referenced by wxMaracasRenderTabbedPanel::addRemoveActorMPR(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(), wxVtkMPR3DViewCntrlPanel::SetVisibleX(), wxVtkMPR3DViewCntrlPanel::SetVisibleY(), and wxVtkMPR3DViewCntrlPanel::SetVisibleZ().

00373                                                                   {
00374         /*if(visible == false)
00375                 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> visibleActor == false \n");
00376         else
00377         {
00378                 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> visibleActor == true\n");
00379                 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> idPosition == %d\n", idPosition);
00380         }
00381         */
00382         if (visible!=_vtkmpr3Ddataviewer->GetVisiblePosition(idPosition)){
00383                 if (visible==false){
00384                         _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition)  );        
00385                 } else {
00386                         _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition)  );   
00387                 }
00388                 _vtkmpr3Ddataviewer->SetVisiblePosition(idPosition,visible);
00389         }
00390 }

Here is the call graph for this function:

Here is the caller graph for this function:

void wxVtkMPR3DView::VisiblePlaneWidget ( bool  visible  ) 

Definition at line 405 of file wxVtkMPR3DView.cxx.

References _contourPlaneActor, and _planeWidget.

Referenced by wxMaracasRenderTabbedPanel::addRemoveActorMPR(), wxVtkMPR3DViewCntrlPanel::OnVisiblePlane(), wxVtkMPR3DViewCntrlPanel::SetVisiblePlane(), and ~wxVtkMPR3DView().

00406 {
00407         if (visible==true)
00408         {
00409                 _planeWidget->On();
00410                 _contourPlaneActor->VisibilityOn();
00411 
00412         } else {
00413                 _planeWidget->Off();
00414                 _contourPlaneActor->VisibilityOff();
00415         }
00416 }

Here is the caller graph for this function:

void wxVtkMPR3DView::VisiblePointWidget ( bool  visible  ) 

Definition at line 394 of file wxVtkMPR3DView.cxx.

References _pointWidget.

Referenced by wxMaracasRenderTabbedPanel::addRemoveActorMPR(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ(), wxVtkMPR3DViewCntrlPanel::SetVisibleXYZ(), and ~wxVtkMPR3DView().

00395 {
00396         if (visible==true)
00397         {
00398                 _pointWidget->On();
00399         } else {
00400                 _pointWidget->Off();
00401         }
00402 }

Here is the caller graph for this function:


Member Data Documentation

vtkPolyDataMapper* wxVtkMPR3DView::_contourMapper [private]

Definition at line 72 of file wxVtkMPR3DView.h.

Referenced by Configure(), wxVtkMPR3DView(), and ~wxVtkMPR3DView().

Definition at line 65 of file wxVtkMPR3DView.h.

Referenced by Configure(), VisiblePlaneWidget(), and ~wxVtkMPR3DView().

vtkPlaneWidget* wxVtkMPR3DView::_planeWidget [private]
vtkImagePlaneWidget* wxVtkMPR3DView::_planeWidgetX [private]

Definition at line 75 of file wxVtkMPR3DView.h.

Referenced by ConfigureFreePlanes(), FreePlaneInteraction(), and FreePlaneVisible().

vtkImagePlaneWidget* wxVtkMPR3DView::_planeWidgetY [private]

Definition at line 76 of file wxVtkMPR3DView.h.

Referenced by ConfigureFreePlanes(), FreePlaneInteraction(), and FreePlaneVisible().

vtkImagePlaneWidget* wxVtkMPR3DView::_planeWidgetZ [private]

Definition at line 77 of file wxVtkMPR3DView.h.

Referenced by ConfigureFreePlanes(), FreePlaneInteraction(), and FreePlaneVisible().

vtkPointWidget* wxVtkMPR3DView::_pointWidget [private]
vtkProbeFilter* wxVtkMPR3DView::_probe [private]

Definition at line 71 of file wxVtkMPR3DView.h.

Referenced by Configure(), wxVtkMPR3DView(), and ~wxVtkMPR3DView().

vtkPolyData* wxVtkMPR3DView::_vtkplane [private]

Definition at line 64 of file wxVtkMPR3DView.h.

Referenced by Configure(), RefreshView(), wxVtkMPR3DView(), and ~wxVtkMPR3DView().

Definition at line 61 of file wxVtkMPR3DView.h.

Referenced by Configure(), CreateControlPanel(), Refresh(), and wxVtkMPR3DView().


The documentation for this class was generated from the following files:

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1