_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetY(xyzv[1]);
_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetZ(xyzv[2]);
} else {
-
-
vtkImageData *image = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
double spc[3];
if(image)
{
image->GetSpacing(spc);
}
-
double normal[3];
slicePosition = ipw->GetSlicePosition();
ipw->GetNormal(normal);
-
// FreePlaneX
if ((normal[0]==1)&&(normal[1]==0)&&(normal[2]==0))
{
}
}// ipw->GetCursorDataStatus
}// ev
-
if (needRefresh)
{
vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*)_wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetInteractorStyleBaseView();
isbv->SetParent_refresh_waiting();
isbv->EvaluateToRefresh();
}
-
} // Execute
-
vtkWindowLevelImagePlaneWidgetCallback(){}
wxVtkMPR3DView *_wxvtkmpr3Dview;
};
-
-
//-------------------------------------------------------------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------
-
-
-
wxVtkMPR3DView::wxVtkMPR3DView( wxVtk3DBaseView *wxvtk3Dbaseview )
{
_wxvtk3Dbaseview = wxvtk3Dbaseview;
_vtkplane = NULL;
_probe = NULL;
_contourMapper = NULL;
-
_planeWidgetX = NULL;
_planeWidgetY = NULL;
_planeWidgetZ = NULL;
//Free Planes
}
-
//-------------------------------------------------------------------
wxVtkMPR3DView::~wxVtkMPR3DView()
{
VisiblePointWidget( false );
VisiblePlaneWidget( false );
-
if(_pointWidget!=NULL){
_pointWidget->Delete();
}
if(_planeWidget!=NULL){
_planeWidget->Delete();
}
-
if(_vtkplane!=NULL){
_vtkplane->Delete();
_probe->Delete();
_contourMapper->Delete();
_contourPlaneActor->Delete();
}
-
}
//-------------------------------------------------------------------
{
_wxvtk3Dbaseview->GetRenderer()->RemoveActor(actor);
}
-
-
-
//-------------------------------------------------------------------
void wxVtkMPR3DView::Configure()
{
vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
-
_wxvtk3Dbaseview->Configure();
_wxvtkmpr3DviewCntrlPanel->UpdateControlPanel();
-
//EED 27 Mai 2009
// _wxvtk3Dbaseview->GetRenderer()->Clear();
-
// Actors are added to the renderer.
vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor();
-
-
_wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor );
-
// _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(0) ); // _saggital
// _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(1) ); // _axial
// _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(2) ); // _coronal
-
-
-
// vtkPointWidget
//if(_myCallback!=NULL){
//_myCallback->Delete();
-
//}
vtkmyPWCallback_3DPointWidget *_myCallback = vtkmyPWCallback_3DPointWidget::New();
_myCallback->SetWxVtkMPR3DView(this);
-
-
if(imageData){
- if(_pointWidget==NULL){
+ if(_pointWidget==NULL)
+ {
_pointWidget = vtkPointWidget::New();
}
_pointWidget->SetInput( imageData );
_pointWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() );
_pointWidget->AllOff();
_pointWidget->PlaceWidget();
-
_pointWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback);
-
if(_planeWidget==NULL)
{
_planeWidget = vtkPlaneWidget::New();
}
_planeWidget->SetInput( imageData );
-
_myCallback->SetVtkPlaneWidget(_planeWidget);
-
_planeWidget->NormalToXAxisOn();
_planeWidget->SetResolution(50);
_planeWidget->SetRepresentationToOutline();
-
int dim[3];
-
imageData->GetDimensions(dim);
int px=(dim[0]/2);
int py=(dim[1]/2);
int pz=(dim[2]/2);
int dd=20;
_planeWidget->PlaceWidget( px-dd , px+dd , py-dd , py+dd , pz-dd , pz+dd );
-
if(_vtkplane==NULL){
_vtkplane = vtkPolyData::New();
-
_probe = vtkProbeFilter::New();
_probe->SetInput(_vtkplane);
-
_contourMapper = vtkPolyDataMapper::New();
-
_contourMapper->SetInput( _probe->GetPolyDataOutput() );
-
_contourPlaneActor = vtkActor::New();
_contourPlaneActor->SetMapper(_contourMapper);
-
_contourPlaneActor->VisibilityOff();
-
_planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() );
_planeWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback);
-
_planeWidget->Off();
_wxvtk3Dbaseview->GetRenderer()->AddActor( _contourPlaneActor );
-
}
-
_planeWidget->GetPolyData(_vtkplane);
_probe->SetSource( imageData );
_contourMapper->SetScalarRange( imageData->GetScalarRange() );
-
ConfigureFreePlanes();
}
// render window (expressed in pixels).
_wxvtk3Dbaseview->GetRenderer()->SetBackground( 0.36 , 0.36 , 0.36 );
//EED 23oct2010 _wxvtk3Dbaseview->GetRenWin()->SetSize(400, 400);
-
}
//-------------------------------------------------------------------
void wxVtkMPR3DView::ConfigureFreePlanes()
{
-
// The shared picker enables us to use 3 planes at one time
// and gets the picking order right
vtkCellPicker* picker = vtkCellPicker::New();
picker->SetTolerance(0.005);
-
// The 3 image plane widgets
_planeWidgetX = GetPlaneWidget('x', 1, 0, 0, picker);
_planeWidgetY = GetPlaneWidget('y', 1, 1, 0, picker);
_planeWidgetZ = GetPlaneWidget('z', 0, 0, 1, picker);
-
_planeWidgetY->SetLookupTable(_planeWidgetX->GetLookupTable());
_planeWidgetZ->SetLookupTable(_planeWidgetX->GetLookupTable());
-
picker->UnRegister(NULL);
// ColorWindow ColorLevel Callback
//CPR: Method added 30 Nov 2009
void wxVtkMPR3DView::showOutlineActor(bool value)
{
-
vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor();
if(value == true)
{
_wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor );
- }
- else
- {
+ } else {
_wxvtk3Dbaseview->GetRenderer()->RemoveActor( _outlineActor );
}
-
}
//-------------------------------------------------------------------