Program: wxMaracas
Module: $RCSfile: wxMPRWidget.cxx,v $
Language: C++
- Date: $Date: 2008/11/14 16:16:32 $
- Version: $Revision: 1.4 $
+ Date: $Date: 2009/03/24 10:49:21 $
+ Version: $Revision: 1.5 $
Copyright: (c) 2002, 2003
License:
GetVtkmprbasedata() -> GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2);
double spc[3];
- GetVtkmprbasedata()->GetImageData()->GetSpacing(spc);
- 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]);
-
- _visibleAxis = true;
-
-// Axe A
- _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 );
-
-// Axe B
- _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 );
-
- vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera();
- if (_direction==0) {
- camera->SetViewUp ( 0 , -1 , 0 );
- camera->SetPosition ( -10000,(y1+y2)/2 , (z1+z2)/2 );
- camera->SetFocalPoint ( 0 , (y1+y2)/2 , (z1+z2)/2 );
- camera->SetParallelScale( (z2-z1)/3.0 );
- }
+ 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]);
+
+ x2 = (int)(x2*spc[0]);
+ y2 = (int)(y2*spc[1]);
+ z2 = (int)(z2*spc[2]);
+
+ _visibleAxis = true;
+
+ // Axe A
+ _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 );
+
+ // Axe B
+ _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 );
+
+ vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera();
+ if (_direction==0) {
+ camera->SetViewUp ( 0 , -1 , 0 );
+ camera->SetPosition ( -10000,(y1+y2)/2 , (z1+z2)/2 );
+ camera->SetFocalPoint ( 0 , (y1+y2)/2 , (z1+z2)/2 );
+ camera->SetParallelScale( (z2-z1)/3.0 );
+ }
- if (_direction==1) {
- camera->SetViewUp ( 0 , 0 , -1 );
- camera->SetPosition ((x1+x2)/2 , 10000 , (z1+z2)/2 );
- camera->SetFocalPoint ((x1+x2)/2 , 0 , (z1+z2)/2 );
- camera->SetParallelScale( (x2-x1)/3.0 );
- }
+ if (_direction==1) {
+ camera->SetViewUp ( 0 , 0 , -1 );
+ camera->SetPosition ((x1+x2)/2 , 10000 , (z1+z2)/2 );
+ camera->SetFocalPoint ((x1+x2)/2 , 0 , (z1+z2)/2 );
+ camera->SetParallelScale( (x2-x1)/3.0 );
+ }
- if (_direction==2) {
- camera->SetViewUp ( 0 , -1 , 0 );
- camera->SetPosition ((x1+x2)/2 , (y1+y2)/2 , -10000);
- camera->SetFocalPoint ((x1+x2)/2 , (y1+y2)/2 , 0 );
- camera->SetParallelScale( (x2-x1)/3.0 );
+ if (_direction==2) {
+ camera->SetViewUp ( 0 , -1 , 0 );
+ camera->SetPosition ((x1+x2)/2 , (y1+y2)/2 , -10000);
+ camera->SetFocalPoint ((x1+x2)/2 , (y1+y2)/2 , 0 );
+ camera->SetParallelScale( (x2-x1)/3.0 );
+ }
}
-
// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow (160);
// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel (800);
int x1,x2,y1,y2,z1,z2;
GetVtkmprbasedata()->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2);
double spc[3];
- GetVtkmprbasedata()->GetImageData()->GetSpacing(spc);
- x1 = (int)(x1*spc[0]);
- y1 = (int)(y1*spc[1]);
- z1 = (int)(z1*spc[2]);
+
+ 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]);
- 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());
+ int x = (int)(GetVtkmprbasedata()->GetX());
+ int y = (int)(GetVtkmprbasedata()->GetY());
+ int z = (int)(GetVtkmprbasedata()->GetZ());
- x = (int)(x*spc[0]);
- y = (int)(y*spc[1]);
- z = (int)(z*spc[2]);
+ x = (int)(x*spc[0]);
+ y = (int)(y*spc[1]);
+ z = (int)(z*spc[2]);
- if ((x!=_backX) || (y!=_backY) || (z!=_backZ)) {
+ if ((x!=_backX) || (y!=_backY) || (z!=_backZ)) {
- if (_direction==0) {
- _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) {
- _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) {
- _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) );
- _ptsA->SetPoint(0, x1 , y , -z2 );
- _ptsA->SetPoint(1, x2 , y , -z2 );
- _ptsB->SetPoint(0, x , y1, -z2 );
- _ptsB->SetPoint(1, x , y2, -z2 );
+ if (_direction==0) {
+ _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) {
+ _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) {
+ _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) );
+ _ptsA->SetPoint(0, x1 , y , -z2 );
+ _ptsA->SetPoint(1, x2 , y , -z2 );
+ _ptsB->SetPoint(0, x , y1, -z2 );
+ _ptsB->SetPoint(1, x , y2, -z2 );
+ }
+ _backX=x;
+ _backY=y;
+ _backZ=z;
}
- _backX=x;
- _backY=y;
- _backZ=z;
+ wxVtkBaseView::Refresh();
}
- wxVtkBaseView::Refresh();
}
//-------------------------------------------------------------------
int wxVtkMPR2DView::GetActualSlice() // virtual
_vtkmprbasedata = NULL;
- _voxelSize = voxelSize;
+
_framePanelCutting = NULL;
_panelCutting = NULL;
- _marImageData = marimageData;
-
- _vtkmprbasedata = new vtkMPRBaseData();
- _vtkmprbasedata->SetMarImageData(_marImageData);
- wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1);
- wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata);
- wxPanel *controlPanel = CreateControlPanel(pnlSplitter);
wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL );
- sizer -> Add( pnlSplitter ,1,wxGROW ,0);
- int ww,hh;
- wxWindow *pp=this;
- while (pp->GetParent()!=NULL) pp=pp->GetParent();
- pp->GetSize(&ww,&hh);
+ if(marimageData!=NULL){
+ _marImageData = marimageData;
+ _voxelSize = voxelSize;
+ _vtkmprbasedata = new vtkMPRBaseData();
+ _vtkmprbasedata->SetMarImageData(_marImageData);
+
+
+
- pnlSplitter -> SetMinimumPaneSize( 2 );
+ wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1);
+ pnlSplitter -> SetMinimumPaneSize( 2 );
- pnlSplitter -> SplitVertically( MPRPanel, controlPanel, 550 );
+ wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata);
+ wxPanel *controlPanel = CreateControlPanel(pnlSplitter);
+ pnlSplitter -> SplitVertically( MPRPanel, controlPanel, 550 );
+
+ sizer -> Add( pnlSplitter ,1,wxGROW ,0);
+
+ }
+
+ //int ww,hh;
+ //wxWindow *pp=this;
+ //while (pp->GetParent()!=NULL) pp=pp->GetParent();
+ //pp->GetSize(&ww,&hh);
+
this -> SetAutoLayout( true );
this -> SetSizer(sizer);
// sizer -> Fit( this );
-
_refreshAPage=0;
_refreshBPage=0;
}
+void wxMPRWidget::setMarImage(marImageData *marimageData, double voxelsize){
+ _marImageData = marimageData;
+ _voxelSize = voxelsize;
+ _vtkmprbasedata = new vtkMPRBaseData();
+ _vtkmprbasedata->SetMarImageData(_marImageData);
+ wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1);
+ pnlSplitter -> SetMinimumPaneSize( 2 );
+
+ wxPanel *MPRPanel = CreateMPRPanel(pnlSplitter,_vtkmprbasedata);
+ wxPanel *controlPanel = CreateControlPanel(pnlSplitter);
+ pnlSplitter -> SplitVertically( MPRPanel, controlPanel, 550 );
+
+ this->GetSizer() -> Add( pnlSplitter ,1,wxGROW ,0);
+}
//----------------------------------------------------------------------------
wxMPRWidget::~wxMPRWidget( )