X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicerManager.cxx;h=1a9ad685f80e355b1fc105083e882b05156ad049;hb=4c7c440af01cab76e8a1c288aaa37da4ed0f10b0;hp=b2855d1765316acaf6d42570b6d375a5070f25aa;hpb=b0f9ef265dbfc67374eaa989e606d2b00d634f76;p=clitk.git diff --git a/vv/vvSlicerManager.cxx b/vv/vvSlicerManager.cxx index b2855d1..1a9ad68 100644 --- a/vv/vvSlicerManager.cxx +++ b/vv/vvSlicerManager.cxx @@ -79,8 +79,10 @@ vvSlicerManager::vvSlicerManager(int numberOfSlicers) mLandmarks = NULL; mLinkedId.resize(0); - for ( int i = 0; i < numberOfSlicers; i++) + for ( int i = 0; i < numberOfSlicers; i++) { mSlicers.push_back(vtkSmartPointer::New()); + mSlicers[i]->SetSlicerNumber(i); + } mSelectedSlicer = -1; mPreviousSlice.resize(numberOfSlicers, 0); @@ -1169,6 +1171,17 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) mSlicers[slicer]->GetInput()->GetSpacing()[1]; double Z = (z - mSlicers[slicer]->GetInput()->GetOrigin()[2])/ mSlicers[slicer]->GetInput()->GetSpacing()[2]; + double xyz[3], xyzTransform[3]; + xyz[0] = x; + xyz[1] = y; + xyz[2] = z; + mSlicers[slicer]->GetConcatenatedTransform()->TransformPoint(xyz, xyzTransform); + double XTransform = (xyzTransform[0] - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetOrigin()[0])/ + mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetSpacing()[0]; + double YTransform = (xyzTransform[1] - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetOrigin()[1])/ + mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetSpacing()[1]; + double ZTransform = (xyzTransform[2] - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetOrigin()[2])/ + mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetSpacing()[2]; double value = -VTK_DOUBLE_MAX; int displayVec = 0; double xVec=0, yVec=0, zVec=0, valueVec=0; @@ -1176,12 +1189,12 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) int displayFus = 0; double valueOver=0, valueFus=0; #if VTK_MAJOR_VERSION <= 5 - if (X >= mSlicers[slicer]->GetInput()->GetWholeExtent()[0] && - X <= mSlicers[slicer]->GetInput()->GetWholeExtent()[1] && - Y >= mSlicers[slicer]->GetInput()->GetWholeExtent()[2] && - Y <= mSlicers[slicer]->GetInput()->GetWholeExtent()[3] && - Z >= mSlicers[slicer]->GetInput()->GetWholeExtent()[4] && - Z <= mSlicers[slicer]->GetInput()->GetWholeExtent()[5]) { + if (XTransform >= mSlicers[slicer]->GetInput()->GetWholeExtent()[0] && + XTransform <= mSlicers[slicer]->GetInput()->GetWholeExtent()[1] && + YTransform >= mSlicers[slicer]->GetInput()->GetWholeExtent()[2] && + YTransform <= mSlicers[slicer]->GetInput()->GetWholeExtent()[3] && + ZTransform >= mSlicers[slicer]->GetInput()->GetWholeExtent()[4] && + ZTransform <= mSlicers[slicer]->GetInput()->GetWholeExtent()[5]) { value = this->GetScalarComponentAsDouble(mSlicers[slicer]->GetInput(), X, Y, Z); @@ -1230,7 +1243,7 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) } emit UpdatePosition(mSlicers[slicer]->GetCursorVisibility(), - x,y,z,X,Y,Z,value); + x,y,z,XTransform,YTransform,ZTransform,value); emit UpdateVector(displayVec,xVec, yVec, zVec, valueVec); emit UpdateOverlay(displayOver,valueOver,value); emit UpdateFusion(displayFus,valueFus); @@ -1238,12 +1251,12 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) #else int extentImageReslice[6]; mSlicers[slicer]->GetRegisterExtent(extentImageReslice); - if (X >= extentImageReslice[0] && - X <= extentImageReslice[1] && - Y >= extentImageReslice[2] && - Y <= extentImageReslice[3] && - Z >= extentImageReslice[4] && - Z <= extentImageReslice[5]) { + if (XTransform >= extentImageReslice[0] && + XTransform <= extentImageReslice[1] && + YTransform >= extentImageReslice[2] && + YTransform <= extentImageReslice[3] && + ZTransform >= extentImageReslice[4] && + ZTransform <= extentImageReslice[5]) { value = this->GetScalarComponentAsDouble(mSlicers[slicer]->GetInput(), X, Y, Z); @@ -1292,7 +1305,7 @@ mSlicers[slicer]->GetRegisterExtent(extentImageReslice); } emit UpdatePosition(mSlicers[slicer]->GetCursorVisibility(), - x,y,z,X,Y,Z,value); + x,y,z,XTransform,YTransform,ZTransform,value); emit UpdateVector(displayVec,xVec, yVec, zVec, valueVec); emit UpdateOverlay(displayOver,valueOver,value); emit UpdateFusion(displayFus,valueFus); @@ -1697,7 +1710,7 @@ void vvSlicerManager::AddLandmark(float x,float y,float z,float t) y_index <= mSlicers[0]->GetInput()->GetWholeExtent()[3]+0.5 && z_index >= mSlicers[0]->GetInput()->GetWholeExtent()[4]-0.5 && z_index <= mSlicers[0]->GetInput()->GetWholeExtent()[5]+0.5) { - double value = this->GetScalarComponentAsDouble(mSlicers[0]->GetInput(), x_index, y_index, z_index); + double value = this->GetScalarComponentAsDouble(mSlicers[mSelectedSlicer]->GetInput(), x_index, y_index, z_index); //Value in selected Slicer (not 0): bug #2848 this->GetLandmarks()->AddLandmark(x,y,z,t,value); emit LandmarkAdded(); } @@ -1710,7 +1723,7 @@ void vvSlicerManager::AddLandmark(float x,float y,float z,float t) y_index <= extentImageReslice[3]+0.5 && z_index >= extentImageReslice[4]-0.5 && z_index <= extentImageReslice[5]+0.5) { - double value = this->GetScalarComponentAsDouble(mImage->GetVTKImages()[mSlicers[0]->GetTSlice()], x_index, y_index, z_index); + double value = this->GetScalarComponentAsDouble(mSlicers[mSelectedSlicer]->GetInput(), x_index, y_index, z_index); //Value in selected Slicer (not 0): bug #2848 this->GetLandmarks()->AddLandmark(x,y,z,t,value); emit LandmarkAdded(); } @@ -1731,7 +1744,7 @@ void vvSlicerManager::AddLandmarkProfile(float x,float y,float z,float t) y_index <= mSlicers[0]->GetInput()->GetWholeExtent()[3]+0.5 && z_index >= mSlicers[0]->GetInput()->GetWholeExtent()[4]-0.5 && z_index <= mSlicers[0]->GetInput()->GetWholeExtent()[5]+0.5) { - double value = this->GetScalarComponentAsDouble(mSlicers[0]->GetInput(), x_index, y_index, z_index); + double value = this->GetScalarComponentAsDouble(mSlicers[mSelectedSlicer]->GetInput(), x_index, y_index, z_index); //Value in selected Slicer (not 0): bug #2848 this->GetLandmarks()->AddLandmark(x,y,z,t,value); } #else @@ -1743,7 +1756,7 @@ void vvSlicerManager::AddLandmarkProfile(float x,float y,float z,float t) y_index <= extentImageReslice[3]+0.5 && z_index >= extentImageReslice[4]-0.5 && z_index <= extentImageReslice[5]+0.5) { - double value = this->GetScalarComponentAsDouble(mImage->GetVTKImages()[mSlicers[0]->GetTSlice()], x_index, y_index, z_index); + double value = this->GetScalarComponentAsDouble(mSlicers[mSelectedSlicer]->GetInput(), x_index, y_index, z_index); //Value in selected Slicer (not 0): bug #2848 this->GetLandmarks()->AddLandmark(x,y,z,t,value); } #endif