X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicerManagerCommand.cxx;h=1b7103301b7d9f0544c731c14ccca913a623657d;hb=5a7da4aedae5c204bc55c187717193e5950f9a44;hp=5b1ad270442ecce2dc4267400b5c4991b1775b03;hpb=a7057e740e0ea78a2a53f9e579ff07058e8b060f;p=clitk.git diff --git a/vv/vvSlicerManagerCommand.cxx b/vv/vvSlicerManagerCommand.cxx index 5b1ad27..1b71033 100644 --- a/vv/vvSlicerManagerCommand.cxx +++ b/vv/vvSlicerManagerCommand.cxx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ #include "vvSlicerManagerCommand.h" #include "vvSlicerManager.h" @@ -85,9 +85,10 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, if (event == vtkCommand::StartPickEvent && VisibleInWindow == -1) { - for (int i = 0; i < this->SM->NumberOfSlicers(); i++) { - if (this->SM->GetSlicer(i)->GetCursorVisibility()) { + for (int i = 0; i < this->SM->GetNumberOfSlicers(); i++) { + if (this->SM->GetSlicer(i)->GetCursorVisibility() && !this->SM->IsLinked()) { this->SM->GetSlicer(i)->SetCursorVisibility(0); + this->SM->GetSlicer(i)->SetCornerAnnotationVisibility(0); this->SM->GetSlicer(i)->Render(); } } @@ -95,6 +96,7 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, if ( VisibleInWindow > -1 ) { if (event == vtkCommand::KeyPressEvent) { std::string KeyPress = isi->GetInteractor()->GetKeySym(); + bool bCtrlKey = isi->GetInteractor()->GetControlKey(); if (KeyPress == "Tab") { if(isi->GetInteractor()->GetShiftKey()) this->SM->PrevImage(VisibleInWindow); @@ -107,7 +109,7 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, return; } if (KeyPress == "w") { - this->SM->SetLocalColorWindowing(VisibleInWindow); + this->SM->SetLocalColorWindowing(VisibleInWindow, bCtrlKey); return; } if (KeyPress == "0") { @@ -184,20 +186,19 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, return; } if (KeyPress == "h") { - this->SM->SetCursorVisibility(0); + this->SM->SetCursorAndCornerAnnotationVisibility(0); this->SM->Render(); return; } if (KeyPress == "x") { - for(int i=0;iNumberOfSlicers();i++) - { - SM->RemoveActor("overlay",0); - SM->SetColorMap(0); - SM->Render(); - } - return; - } - if (KeyPress == "u") { + for(int i=0; iGetNumberOfSlicers(); i++) { + SM->RemoveActor("overlay",0); + SM->SetColorMap(0); + SM->Render(); + } + return; + } + if (KeyPress == "u") { this->SM->Reload(); this->SM->Render(); return; @@ -205,12 +206,17 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, if (KeyPress == "r" || KeyPress=="R") { this->SM->GetSlicer(VisibleInWindow)->ResetCamera(); this->SM->GetSlicer(VisibleInWindow)->Render(); + this->SM->UpdateLinkedNavigation( this->SM->GetSlicer(VisibleInWindow) ); return; } if (KeyPress == "g") { - double* cursorPos = this->SM->GetSlicer(VisibleInWindow)->GetCursorPosition(); - this->SM->GetSlicer(VisibleInWindow)->SetCurrentPosition( - cursorPos[0],cursorPos[1],cursorPos[2],cursorPos[3]); + if(bCtrlKey) + this->SM->GetSlicer(VisibleInWindow)->SetCurrentPosition(0,0,0,0); + else { + double* cursorPos = this->SM->GetSlicer(VisibleInWindow)->GetCursorPosition(); + this->SM->GetSlicer(VisibleInWindow)->SetCurrentPosition( + cursorPos[0],cursorPos[1],cursorPos[2],cursorPos[3]); + } this->SM->UpdateViews(1,VisibleInWindow); this->SM->UpdateLinked(VisibleInWindow); return; @@ -226,18 +232,12 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, return; } if (KeyPress == "Up") { - DD("------------ up"); this->SM->GetSlicer(VisibleInWindow)->SetSlice(this->SM->GetSlicer(VisibleInWindow)->GetSlice()+1); - DD("------------ after set slice"); - this->SM->UpdateInfoOnCursorPosition(VisibleInWindow); - DD("------------ after UpdateInfoOnCursorPosition"); this->SM->UpdateSlice(VisibleInWindow); - DD("------------ after updateslice"); } if (KeyPress == "Down") { this->SM->GetSlicer(VisibleInWindow)->SetSlice(this->SM->GetSlicer(VisibleInWindow)->GetSlice()-1); this->SM->UpdateSlice(VisibleInWindow); - this->SM->UpdateInfoOnCursorPosition(VisibleInWindow); } if (KeyPress == "space") { newLandmark = true; @@ -249,21 +249,21 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, if (KeyPress == "F2") { this->SM->GetSlicer(VisibleInWindow)->GetAnnotation()->SetText(2,"Sagital\n"); - this->SM->GetSlicer(VisibleInWindow)->SetSliceOrientation(0); + //this->SM->GetSlicer(VisibleInWindow)->SetSliceOrientation(0); + this->SM->SetSliceOrientation(VisibleInWindow, 0); this->SM->UpdateSliceRange(VisibleInWindow); - this->SM->UpdateInfoOnCursorPosition(VisibleInWindow); } if (KeyPress == "F3") { this->SM->GetSlicer(VisibleInWindow)->GetAnnotation()->SetText(2,"Coronal\n"); - this->SM->GetSlicer(VisibleInWindow)->SetSliceOrientation(1); + //this->SM->GetSlicer(VisibleInWindow)->SetSliceOrientation(1); + this->SM->SetSliceOrientation(VisibleInWindow, 1); this->SM->UpdateSliceRange(VisibleInWindow); - this->SM->UpdateInfoOnCursorPosition(VisibleInWindow); } if (KeyPress == "F4") { this->SM->GetSlicer(VisibleInWindow)->GetAnnotation()->SetText(2,"Axial\n"); - this->SM->GetSlicer(VisibleInWindow)->SetSliceOrientation(2); + //this->SM->GetSlicer(VisibleInWindow)->SetSliceOrientation(2); + this->SM->SetSliceOrientation(VisibleInWindow, 2); this->SM->UpdateSliceRange(VisibleInWindow); - this->SM->UpdateInfoOnCursorPosition(VisibleInWindow); } } @@ -300,26 +300,32 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, mStartSlicer = -1; } + if (event == vtkCommand::EndInteractionEvent) { + this->SM->Picked(); + this->SM->UpdateLinkedNavigation(this->SM->GetSlicer(VisibleInWindow),true); + return; + } } if (VisibleInWindow > -1) { this->SM->Activated(); - //if(!this->SM->GetSlicer(VisibleInWindow)->GetAnnotation()->GetVisibility()) - this->SM->GetSlicer(VisibleInWindow)->GetAnnotation()->SetVisibility(1); + this->SM->GetSlicer(VisibleInWindow)->SetCornerAnnotationVisibility(1); if (event == vtkCommand::MouseWheelForwardEvent && !isi->GetInteractor()->GetControlKey()) { + this->SM->Picked(); this->SM->GetSlicer(VisibleInWindow)->SetSlice(this->SM->GetSlicer(VisibleInWindow)->GetSlice()+1); this->SM->UpdateSlice(VisibleInWindow); - this->SM->UpdateInfoOnCursorPosition(VisibleInWindow); } else if (event == vtkCommand::MouseWheelForwardEvent && isi->GetInteractor()->GetControlKey()) { double factor = 2; this->Dolly(pow((double)1.1, factor),isi->GetInteractor()); + Execute(caller, vtkCommand::EndInteractionEvent, NULL); } else if (event == vtkCommand::MouseWheelBackwardEvent && !isi->GetInteractor()->GetControlKey()) { + this->SM->Picked(); this->SM->GetSlicer(VisibleInWindow)->SetSlice(this->SM->GetSlicer(VisibleInWindow)->GetSlice()-1); this->SM->UpdateSlice(VisibleInWindow); - this->SM->UpdateInfoOnCursorPosition(VisibleInWindow); } else if (event == vtkCommand::MouseWheelBackwardEvent && isi->GetInteractor()->GetControlKey()) { double factor = -2; this->Dolly(pow((double)1.1, factor),isi->GetInteractor()); + Execute(caller, vtkCommand::EndInteractionEvent, NULL); } double xWorld=0; double yWorld=0; @@ -365,6 +371,7 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, this->SM->Render(); } if (event == vtkCommand::PickEvent || event == vtkCommand::StartPickEvent) { + this->SM->Picked(); this->SM->UpdateViews(1,VisibleInWindow); this->SM->UpdateLinked(VisibleInWindow); this->SM->UpdateInfoOnCursorPosition(VisibleInWindow); @@ -377,7 +384,7 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, } if (event == vtkCommand::WindowLevelEvent && mStartSlicer > -1) { - this->SM->GetSlicer(mStartSlicer)->GetAnnotation()->SetVisibility(1); + this->SM->GetSlicer(mStartSlicer)->SetCornerAnnotationVisibility(1); // Adjust the window level here int *size = isi->GetInteractor()->GetRenderWindow()->GetSize(); double window = this->InitialWindow; @@ -397,8 +404,8 @@ void vvSlicerManagerCommand::Execute(vtkObject *caller, this->SM->SetColorWindow(window*dx); this->SM->SetColorLevel(level-dy); this->SM->SetPreset(6); - this->SM->UpdateWindowLevel(); this->SM->Render(); + this->SM->UpdateWindowLevel(); return; } }