X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtkMPR2DView.cxx;h=247113eba042eaa7eca7d54e038665e6b4c17cf8;hb=24937478048aca664712bb708240bff79879e0d9;hp=7632ba2a798995be18786ddca6b3c5222e1e5188;hpb=fe5ff4386e982e131337b3324b787118cbc8df8a;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx index 7632ba2..247113e 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx @@ -42,13 +42,6 @@ vtkMPRBaseData *wxVtkMPR2DView::GetVtkmprbasedata() //------------------------------------------------------------------- void wxVtkMPR2DView::Configure(){ wxVtk2DBaseView::Configure(); - - if(_interactorstylemprview==NULL) - { - _interactorstylemprview = new vtkInteractorStyleMPRView(); - ((vtkInteractorStyleBaseView*)GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _interactorstylemprview ); - } - int x1,x2,y1,y2,z1,z2; @@ -56,8 +49,22 @@ void wxVtkMPR2DView::Configure(){ double spc[3]; vtkImageData* img = GetVtkmprbasedata()->GetImageData(); + if(_interactorstylemprview==NULL) + { + _interactorstylemprview = new vtkInteractorStyleMPRView(); + ((vtkInteractorStyleBaseView*)GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _interactorstylemprview ); + } + if(img!=NULL){ + double* origin = img->GetOrigin(); + img->GetExtent(x1,x2,y1,y2,z1,z2); img->GetSpacing(spc); + x1 += origin[0]; + x2 += origin[0]; + y1 += origin[1]; + y2 += origin[1]; + z1 += origin[2]; + z2 += origin[2]; x1 = (int)(x1*spc[0]); y1 = (int)(y1*spc[1]); z1 = (int)(z1*spc[2]); @@ -67,68 +74,79 @@ void wxVtkMPR2DView::Configure(){ z2 = (int)(z2*spc[2]); _visibleAxis = true; - + + + + } + // Axe A - if(_lineAActor==NULL){ - _ptsA = vtkPoints::New(); - _ptsA->SetNumberOfPoints(2); - _ptsA->SetPoint(0, -1000 , -1000 , -1000 ); - _ptsA->SetPoint(1, 1000 , 1000 , 1000 ); - vtkCellArray *linesA; - linesA = vtkCellArray::New(); - linesA->InsertNextCell(2); - linesA->InsertCellPoint(0); - linesA->InsertCellPoint(1); - _pdA = vtkPolyData::New(); - _pdA->SetPoints( _ptsA ); - _pdA->SetLines( linesA ); - linesA->Delete(); //do not delete lines ?? - _lineAActor = vtkActor::New(); - _lineAMapper = vtkPolyDataMapper::New(); - - _lineAMapper->SetInput(_pdA); - _lineAMapper->ImmediateModeRenderingOn(); - _lineAActor->SetMapper(_lineAMapper); - // _lineAActor->GetProperty()->BackfaceCullingOn(); - _lineAActor->GetProperty()->SetDiffuseColor(1,0,0); - _lineAActor->GetProperty()->SetLineWidth(2); - _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor ); - } - + if(_lineAActor==NULL){ + _lineAActor = vtkActor::New(); + _lineAActor->GetProperty()->SetDiffuseColor(1,0,0); + _lineAActor->GetProperty()->SetLineWidth(2); + + _ptsA = vtkPoints::New(); + _ptsA->SetNumberOfPoints(2); + _ptsA->SetPoint(0, -1000 , -1000 , -1000 ); + _ptsA->SetPoint(1, 1000 , 1000 , 1000 ); + + _pdA = vtkPolyData::New(); + + _lineAMapper = vtkPolyDataMapper::New(); + + _lineAMapper->SetInput(_pdA); + _lineAMapper->ImmediateModeRenderingOn(); + _lineAActor->SetMapper(_lineAMapper); + } + + vtkCellArray *linesA = vtkCellArray::New(); + linesA->InsertNextCell(2); + linesA->InsertCellPoint(0); + linesA->InsertCellPoint(1); + _pdA->SetPoints( _ptsA ); + _pdA->SetLines( linesA ); + linesA->Delete(); //do not delete lines ?? +// _lineAActor->GetProperty()->BackfaceCullingOn(); + +// Axe B + if(_lineBActor==NULL){ + _lineBActor = vtkActor::New(); + _lineBActor->GetProperty()->SetDiffuseColor(1,0,0); + _lineBActor->GetProperty()->SetLineWidth(2); + _lineBMapper = vtkPolyDataMapper::New(); + _lineBActor->SetMapper(_lineBMapper); + _ptsB = vtkPoints::New(); + _ptsB->SetNumberOfPoints(2); + _ptsB->SetPoint(0, -1000 , -1000 , -1000 ); + _ptsB->SetPoint(1, 1000 , 1000 , 1000 ); + +// _lineBActor->GetProperty()->BackfaceCullingOn(); + } + + vtkCellArray *linesB; + linesB = vtkCellArray::New(); + linesB->InsertNextCell(2); + linesB->InsertCellPoint(0); + linesB->InsertCellPoint(1); + _pdB = vtkPolyData::New(); + _pdB->SetPoints( _ptsB ); + _pdB->SetLines( linesB ); + linesB->Delete(); //do not delete lines ?? + + + _lineBMapper->SetInput(_pdB); + _lineBMapper->ImmediateModeRenderingOn(); - // Axe B - if(_lineBActor==NULL){ - _ptsB = vtkPoints::New(); - _ptsB->SetNumberOfPoints(2); - _ptsB->SetPoint(0, -1000 , -1000 , -1000 ); - _ptsB->SetPoint(1, 1000 , 1000 , 1000 ); - vtkCellArray *linesB; - linesB = vtkCellArray::New(); - linesB->InsertNextCell(2); - linesB->InsertCellPoint(0); - linesB->InsertCellPoint(1); - _pdB = vtkPolyData::New(); - _pdB->SetPoints( _ptsB ); - _pdB->SetLines( linesB ); - linesB->Delete(); //do not delete lines ?? - _lineBActor = vtkActor::New(); - _lineBMapper = vtkPolyDataMapper::New(); - _lineBMapper->SetInput(_pdB); - _lineBMapper->ImmediateModeRenderingOn(); - _lineBActor->SetMapper(_lineBMapper); - // _lineBActor->GetProperty()->BackfaceCullingOn(); - _lineBActor->GetProperty()->SetDiffuseColor(1,0,0); - _lineBActor->GetProperty()->SetLineWidth(2); - _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor ); - } - + if(_imageViewer2XYZ){ + _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor ); + _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor ); vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera(); -//EED 17Avril2009 -/* + //EED 17Avril2009 + /* if (_direction==0) { camera->SetViewUp ( 0 , -1 , 0 ); camera->SetPosition ( -10000,(y1+y2)/2 , (z1+z2)/2 ); @@ -149,7 +167,7 @@ void wxVtkMPR2DView::Configure(){ camera->SetFocalPoint ((x1+x2)/2 , (y1+y2)/2 , 0 ); camera->SetParallelScale( (x2-x1)/3.0 ); } - */ + */ if (_direction==0) { // YZ camera->SetViewUp ( 0 , 1 , 0 ); @@ -172,12 +190,10 @@ void wxVtkMPR2DView::Configure(){ camera->SetParallelScale( (x2-x1)/3.0 ); } - - - } -// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow (160); -// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel (800); + // _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow (160); + // _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel (800); + } } @@ -211,24 +227,36 @@ void wxVtkMPR2DView::Refresh() - int x1,x2,y1,y2,z1,z2; - GetVtkmprbasedata()->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2); - double spc[3]; + int x1 = 0,x2 = 0,y1 = 0,y2 = 0,z1 = 0,z2 = 0, x = 0, y = 0, z = 0; + double *spc = 0; + double *origin = 0; + + + //GetVtkmprbasedata()->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2); + vtkImageData* img = GetVtkmprbasedata()->GetImageData(); if(img!=NULL){ - img->GetSpacing(spc); - x1 = (int)(x1*spc[0]); - y1 = (int)(y1*spc[1]); - z1 = (int)(z1*spc[2]); + origin = img->GetOrigin(); + img->GetExtent(x1,x2,y1,y2,z1,z2); + spc = img->GetSpacing(); + x1 += origin[0]; + x2 += origin[0]; + y1 += origin[1]; + y2 += origin[1]; + z1 += origin[2]; + z2 += origin[2]; + x1 = (int)(x1*spc[0]); + y1 = (int)(y1*spc[1]); + z1 = (int)(z1*spc[2]); - x2 = (int)(x2*spc[0]); - y2 = (int)(y2*spc[1]); - z2 = (int)(z2*spc[2]); + x2 = (int)(x2*spc[0]); + y2 = (int)(y2*spc[1]); + z2 = (int)(z2*spc[2]); - int x = (int)(GetVtkmprbasedata()->GetX()); - int y = (int)(GetVtkmprbasedata()->GetY()); - int z = (int)(GetVtkmprbasedata()->GetZ()); + x = (int)(GetVtkmprbasedata()->GetX()); + y = (int)(GetVtkmprbasedata()->GetY()); + z = (int)(GetVtkmprbasedata()->GetZ()); x = (int)(x*spc[0]); y = (int)(y*spc[1]); @@ -237,22 +265,24 @@ void wxVtkMPR2DView::Refresh() if ((x!=_backX) || (y!=_backY) || (z!=_backZ)) { if (_direction==0) { // YZ - _imageViewer2XYZ->SetXSlice( (int)(GetVtkmprbasedata()->GetX()) ); + if(_imageViewer2XYZ) + _imageViewer2XYZ->SetXSlice( (int)(GetVtkmprbasedata()->GetX()) ); _ptsA->SetPoint(0, x2, y1 , z ); _ptsA->SetPoint(1, x2, y2 , z ); _ptsB->SetPoint(0, x2, y , z1); _ptsB->SetPoint(1, x2, y , z2); } if (_direction==1) { // XZ - _imageViewer2XYZ->SetYSlice( (int)(GetVtkmprbasedata()->GetY()) ); + if(_imageViewer2XYZ) + _imageViewer2XYZ->SetYSlice( (int)(GetVtkmprbasedata()->GetY()) ); _ptsA->SetPoint(0, x1 , y2 , z ); _ptsA->SetPoint(1, x2 , y2 , z ); _ptsB->SetPoint(0, x , y2 , z1); _ptsB->SetPoint(1, x , y2 , z2); } if (_direction==2) { // XY - _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) ); - _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) ); + if(_imageViewer2XYZ) + _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) ); // _ptsA->SetPoint(0, x1 , y , -z2 ); // _ptsA->SetPoint(1, x2 , y , -z2 ); // _ptsB->SetPoint(0, x , y1, -z2 );