X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=vv%2FvvSlicer.cxx;h=1c486bc786213e22bc1e7d82342dbf2a04ed8644;hb=119a42cb1444930c78314e862e590f54c2f7678d;hp=961ebf500de7b6ce15da2a024e6f81b5bf8d7ab0;hpb=9284b926604f4b7171310b206dbb7f01dde8959f;p=clitk.git diff --git a/vv/vvSlicer.cxx b/vv/vvSlicer.cxx index 961ebf5..1c486bc 100644 --- a/vv/vvSlicer.cxx +++ b/vv/vvSlicer.cxx @@ -915,18 +915,19 @@ void vvSlicer::UpdateDisplayExtent() //---------------------------------------------------------------------------- void vvSlicer::ComputeVFDisplayedExtent(int x1,int x2,int y1,int y2,int z1,int z2,int vfExtent[6]) { + double dVfExtent[6]; vtkImageData* image = this->GetInput(); - vfExtent[0] = image->GetOrigin()[0] + x1*image->GetSpacing()[0]; - vfExtent[1] = image->GetOrigin()[0] + x2*image->GetSpacing()[0]; - vfExtent[2] = image->GetOrigin()[1] + y1*image->GetSpacing()[1]; - vfExtent[3] = image->GetOrigin()[1] + y2*image->GetSpacing()[1]; - vfExtent[4] = image->GetOrigin()[2] + z1*image->GetSpacing()[2]; - vfExtent[5] = image->GetOrigin()[2] + z2*image->GetSpacing()[2]; + dVfExtent[0] = image->GetOrigin()[0] + x1*image->GetSpacing()[0]; + dVfExtent[1] = image->GetOrigin()[0] + x2*image->GetSpacing()[0]; + dVfExtent[2] = image->GetOrigin()[1] + y1*image->GetSpacing()[1]; + dVfExtent[3] = image->GetOrigin()[1] + y2*image->GetSpacing()[1]; + dVfExtent[4] = image->GetOrigin()[2] + z1*image->GetSpacing()[2]; + dVfExtent[5] = image->GetOrigin()[2] + z2*image->GetSpacing()[2]; vtkImageData* vf = mVF->GetTransformedVTKImages()[0]; vf->UpdateInformation(); for(unsigned int i=0; i<6; i++) - vfExtent[i] = (vfExtent[i]- vf->GetOrigin()[i/2]) / vf->GetSpacing()[i/2]; + vfExtent[i] = itk::Math::Round((dVfExtent[i]- vf->GetOrigin()[i/2]) / vf->GetSpacing()[i/2]); ClipDisplayedExtent(vfExtent,mVOIFilter->GetInput()->GetWholeExtent()); } @@ -936,18 +937,19 @@ void vvSlicer::ComputeVFDisplayedExtent(int x1,int x2,int y1,int y2,int z1,int z //---------------------------------------------------------------------------- void vvSlicer::ComputeOverlayDisplayedExtent(int x1,int x2,int y1,int y2,int z1,int z2,int overExtent[6]) { + double dOverExtent[6]; vtkImageData* image = this->GetInput(); - overExtent[0] = image->GetOrigin()[0] + x1*image->GetSpacing()[0]; - overExtent[1] = image->GetOrigin()[0] + x2*image->GetSpacing()[0]; - overExtent[2] = image->GetOrigin()[1] + y1*image->GetSpacing()[1]; - overExtent[3] = image->GetOrigin()[1] + y2*image->GetSpacing()[1]; - overExtent[4] = image->GetOrigin()[2] + z1*image->GetSpacing()[2]; - overExtent[5] = image->GetOrigin()[2] + z2*image->GetSpacing()[2]; + dOverExtent[0] = image->GetOrigin()[0] + x1*image->GetSpacing()[0]; + dOverExtent[1] = image->GetOrigin()[0] + x2*image->GetSpacing()[0]; + dOverExtent[2] = image->GetOrigin()[1] + y1*image->GetSpacing()[1]; + dOverExtent[3] = image->GetOrigin()[1] + y2*image->GetSpacing()[1]; + dOverExtent[4] = image->GetOrigin()[2] + z1*image->GetSpacing()[2]; + dOverExtent[5] = image->GetOrigin()[2] + z2*image->GetSpacing()[2]; vtkImageData* overlay = mOverlay->GetTransformedVTKImages()[0]; overlay->UpdateInformation(); for(unsigned int i=0; i<6; i++) - overExtent[i] = (overExtent[i]- overlay->GetOrigin()[i/2]) / overlay->GetSpacing()[i/2]; + overExtent[i] = itk::Math::Round((dOverExtent[i]- overlay->GetOrigin()[i/2]) / overlay->GetSpacing()[i/2]); ClipDisplayedExtent(overExtent, mOverlayMapper->GetInput()->GetWholeExtent()); } @@ -957,18 +959,19 @@ void vvSlicer::ComputeOverlayDisplayedExtent(int x1,int x2,int y1,int y2,int z1, //---------------------------------------------------------------------------- void vvSlicer::ComputeFusionDisplayedExtent(int x1,int x2,int y1,int y2,int z1,int z2,int fusExtent[6]) { + double dFusExtent[6]; vtkImageData* image = this->GetInput(); - fusExtent[0] = image->GetOrigin()[0] + x1*image->GetSpacing()[0]; - fusExtent[1] = image->GetOrigin()[0] + x2*image->GetSpacing()[0]; - fusExtent[2] = image->GetOrigin()[1] + y1*image->GetSpacing()[1]; - fusExtent[3] = image->GetOrigin()[1] + y2*image->GetSpacing()[1]; - fusExtent[4] = image->GetOrigin()[2] + z1*image->GetSpacing()[2]; - fusExtent[5] = image->GetOrigin()[2] + z2*image->GetSpacing()[2]; + dFusExtent[0] = image->GetOrigin()[0] + x1*image->GetSpacing()[0]; + dFusExtent[1] = image->GetOrigin()[0] + x2*image->GetSpacing()[0]; + dFusExtent[2] = image->GetOrigin()[1] + y1*image->GetSpacing()[1]; + dFusExtent[3] = image->GetOrigin()[1] + y2*image->GetSpacing()[1]; + dFusExtent[4] = image->GetOrigin()[2] + z1*image->GetSpacing()[2]; + dFusExtent[5] = image->GetOrigin()[2] + z2*image->GetSpacing()[2]; vtkImageData* fusion = mFusion->GetTransformedVTKImages()[0]; fusion->UpdateInformation(); for(unsigned int i=0; i<6; i++) - fusExtent[i] = (fusExtent[i]- fusion->GetOrigin()[i/2]) / fusion->GetSpacing()[i/2]; + fusExtent[i] = itk::Math::Round((dFusExtent[i]- fusion->GetOrigin()[i/2]) / fusion->GetSpacing()[i/2]); ClipDisplayedExtent(fusExtent, mFusionMapper->GetInput()->GetWholeExtent()); } @@ -1262,32 +1265,13 @@ void vvSlicer::Render() double X = (mCurrent[0] - this->GetInput()->GetOrigin()[0])/this->GetInput()->GetSpacing()[0]; double Y = (mCurrent[1] - this->GetInput()->GetOrigin()[1])/this->GetInput()->GetSpacing()[1]; double Z = (mCurrent[2] - this->GetInput()->GetOrigin()[2])/this->GetInput()->GetSpacing()[2]; - - if (pdmA->GetVisibility()) { - double x = mCursor[0]; - double y = mCursor[1]; - double z = mCursor[2]; - double xCursor = (x - this->GetInput()->GetOrigin()[0])/this->GetInput()->GetSpacing()[0]; - double yCursor = (y - this->GetInput()->GetOrigin()[1])/this->GetInput()->GetSpacing()[1]; - double zCursor = (z - this->GetInput()->GetOrigin()[2])/this->GetInput()->GetSpacing()[2]; - - if (xCursor >= this->GetImageActor()->GetDisplayExtent()[0] && - xCursor < this->GetImageActor()->GetDisplayExtent()[1]+1 && - yCursor >= this->GetImageActor()->GetDisplayExtent()[2] && - yCursor < this->GetImageActor()->GetDisplayExtent()[3]+1 && - zCursor >= this->GetImageActor()->GetDisplayExtent()[4] && - zCursor < this->GetImageActor()->GetDisplayExtent()[5]+1 ) { - vtkRenderer * renderer = this->Renderer; - - renderer->WorldToView(x,y,z); - renderer->ViewToNormalizedViewport(x,y,z); - renderer->NormalizedViewportToViewport(x,y); - renderer->ViewportToNormalizedDisplay(x,y); - renderer->NormalizedDisplayToDisplay(x,y); - crossCursor->SetFocalPoint(x,y,z); - } else - crossCursor->SetFocalPoint(-1,-1,z); - } + +// if (X < this->GetInput()->GetWholeExtent()[0]) X = this->GetInput()->GetWholeExtent()[0]; +// else if (X > this->GetInput()->GetWholeExtent()[1]) X = this->GetInput()->GetWholeExtent()[1]; +// if (Y < this->GetInput()->GetWholeExtent()[2]) Y = this->GetInput()->GetWholeExtent()[2]; +// else if (Y > this->GetInput()->GetWholeExtent()[3]) Y = this->GetInput()->GetWholeExtent()[3]; +// if (Z < this->GetInput()->GetWholeExtent()[4]) Z = this->GetInput()->GetWholeExtent()[4]; +// else if (Z > this->GetInput()->GetWholeExtent()[5]) Z = this->GetInput()->GetWholeExtent()[5]; if (X >= this->GetInput()->GetWholeExtent()[0] && X <= this->GetInput()->GetWholeExtent()[1] && @@ -1295,6 +1279,8 @@ void vvSlicer::Render() Y <= this->GetInput()->GetWholeExtent()[3] && Z >= this->GetInput()->GetWholeExtent()[4] && Z <= this->GetInput()->GetWholeExtent()[5]) { + + int ix, iy, iz; double value = this->GetScalarComponentAsDouble(this->GetInput(), X, Y, Z, ix, iy, iz); @@ -1317,6 +1303,34 @@ void vvSlicer::Render() } ca->SetText(1,worldPos.c_str()); } + + if (pdmA->GetVisibility()) { + double x = mCursor[0]; + double y = mCursor[1]; + double z = mCursor[2]; + double xCursor = (x - this->GetInput()->GetOrigin()[0])/this->GetInput()->GetSpacing()[0]; + double yCursor = (y - this->GetInput()->GetOrigin()[1])/this->GetInput()->GetSpacing()[1]; + double zCursor = (z - this->GetInput()->GetOrigin()[2])/this->GetInput()->GetSpacing()[2]; + + if (xCursor >= this->GetImageActor()->GetDisplayExtent()[0] && + xCursor < this->GetImageActor()->GetDisplayExtent()[1]+1 && + yCursor >= this->GetImageActor()->GetDisplayExtent()[2] && + yCursor < this->GetImageActor()->GetDisplayExtent()[3]+1 && + zCursor >= this->GetImageActor()->GetDisplayExtent()[4] && + zCursor < this->GetImageActor()->GetDisplayExtent()[5]+1 ) { + vtkRenderer * renderer = this->Renderer; + + renderer->WorldToView(x,y,z); + renderer->ViewToNormalizedViewport(x,y,z); + renderer->NormalizedViewportToViewport(x,y); + renderer->ViewportToNormalizedDisplay(x,y); + renderer->NormalizedDisplayToDisplay(x,y); + crossCursor->SetFocalPoint(x,y,z); + } else + crossCursor->SetFocalPoint(-1,-1,z); + } + + if (mOverlay && mOverlayActor->GetVisibility()) { mOverlayMapper->SetWindow(this->GetColorWindow()); mOverlayMapper->SetLevel(this->GetColorLevel()); @@ -1326,7 +1340,7 @@ void vvSlicer::Render() } if (mLandMapper) UpdateLandmarks(); - //this->Superclass::Render(); + this->GetRenderWindow()->Render(); } //---------------------------------------------------------------------------- @@ -1386,7 +1400,7 @@ void vvSlicer::SetSlice(int slice) this->UpdateDisplayExtent(); // Seems to work without this line - // this->Render(); + //this->Render(); } //----------------------------------------------------------------------------