X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FmanualPaint%2FManualPaintControler.cpp;h=4e841bec6fdef474304c4eb38600004f0553f95a;hb=15112ae15da4222831b0e8e7c9be87daf9e99a1c;hp=6cab0776e94f0126a6f235a6800f31fd9b8e6222;hpb=965c602117e9de99019d49bd78ca1d707a1a6bd2;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/ManualPaintControler.cpp b/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/ManualPaintControler.cpp index 6cab077..4e841be 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/ManualPaintControler.cpp +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/ManualPaintControler.cpp @@ -1,61 +1,145 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + +#include #include "ManualPaintControler.h" #include "vtkInteractorManualPaint.h" -#include "wxVtk2DBaseView.h" #include "vtkImageActor.h" //--------------------------------------------------------------------------- -ManualPaintControler::ManualPaintControler() +ManualPaintControler::ManualPaintControler() { - auxZ=0; + auxZ = 0; +// _wxvtk2Dbaseview = NULL; + _wxvtk2Dbaseview1 = NULL; + _wxvtk2Dbaseview2 = NULL; + _wxvtk2Dbaseview3 = NULL; + _wxvtk2Dbaseview4 = NULL; } //--------------------------------------------------------------------------- -ManualPaintControler::~ManualPaintControler() +ManualPaintControler::~ManualPaintControler() { } //--------------------------------------------------------------------------- -void ManualPaintControler::SetManualPaintModel(ManualPaintModel* manualPaintModel) +void ManualPaintControler::SetManualPaintModel( ManualPaintModel* manualPaintModel ) { - _manualPaintModel = manualPaintModel; + _manualPaintModel = manualPaintModel; } //--------------------------------------------------------------------------- -void ManualPaintControler::SetManualPaintPanel(ManualPaintPanel* manualPaintPanel) +ManualPaintModel* ManualPaintControler::GetManualPaintModel( ) { - _manualPaintPanel = manualPaintPanel; + return _manualPaintModel; } //--------------------------------------------------------------------------- -void ManualPaintControler::SetWxVtkBaseView(wxVtkBaseView *baseview) +void ManualPaintControler::SetWxVtk2DBaseView( int id, wxVtk2DBaseView *wxvtk2Dbaseview ) { - _wxvtkbaseview = baseview; + if (id==1) { _wxvtk2Dbaseview1 = wxvtk2Dbaseview; } + if (id==2) { _wxvtk2Dbaseview2 = wxvtk2Dbaseview; } + if (id==3) { _wxvtk2Dbaseview3 = wxvtk2Dbaseview; } + if (id==4) { _wxvtk2Dbaseview4 = wxvtk2Dbaseview; } } //--------------------------------------------------------------------------- -void ManualPaintControler::Config() +void ManualPaintControler::Config() { - vtkInteractorManualPaint *imp = new vtkInteractorManualPaint(this); - vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*)(_wxvtkbaseview->GetInteractorStyleBaseView()); - isbv->AddInteractorStyleMaracas(imp); + if (_wxvtk2Dbaseview1 != NULL) + { + vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview1->GetInteractorStyleBaseView()); + isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this)); + } // if _wxvtk2Dbaseview + if (_wxvtk2Dbaseview2 != NULL) + { + vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview2->GetInteractorStyleBaseView()); + isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this)); + } // if _wxvtk2Dbaseview + if (_wxvtk2Dbaseview3 != NULL) + { + vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview3->GetInteractorStyleBaseView()); + isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this)); + } // if _wxvtk2Dbaseview + if (_wxvtk2Dbaseview4 != NULL) + { + vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview4->GetInteractorStyleBaseView()); + isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this)); + } // if _wxvtk2Dbaseview } - +//--------------------------------------------------------------------------- +void ManualPaintControler::PaintImage(int px, int py, int pz,int direction) +{ + _manualPaintModel->SetDirection( direction ); + _manualPaintModel->PaintImage(px, py, pz); + // The refresh mechanisme is made in the vtkInteractorManualPaint + // RefreshView(); +} //--------------------------------------------------------------------------- -void ManualPaintControler::PaintImage(int px,int py, int pz) +void ManualPaintControler::SetImageUndo() { - _manualPaintModel->PaintImage(px,py,pz); - RefreshView(); + _manualPaintModel->SetUndoImage(); } //--------------------------------------------------------------------------- -void ManualPaintControler::RefreshView() +void ManualPaintControler::Undo() { - wxVtk2DBaseView *wxvtk2Dbaseview = (wxVtk2DBaseView*)_wxvtkbaseview; - vtkImageViewer2 *vtkimageviewer2 = wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2(); - vtkimageviewer2->GetWindowLevel()->Modified(); + _manualPaintModel->Undo(); + Refresh_UndoRedo(); +} +void ManualPaintControler::Redo() +{ + _manualPaintModel->Redo(); + Refresh_UndoRedo(); } +void ManualPaintControler::Refresh_UndoRedo() +{ + wxVtk2DBaseView *wxvtk2Dbaseview = NULL; + if (_wxvtk2Dbaseview1!=NULL){ wxvtk2Dbaseview=_wxvtk2Dbaseview1; } + if (_wxvtk2Dbaseview2!=NULL){ wxvtk2Dbaseview=_wxvtk2Dbaseview2; } + if (_wxvtk2Dbaseview3!=NULL){ wxvtk2Dbaseview=_wxvtk2Dbaseview3; } + if (_wxvtk2Dbaseview4!=NULL){ wxvtk2Dbaseview=_wxvtk2Dbaseview4; } + if (wxvtk2Dbaseview!=NULL) + { + vtkMPRBaseData* vtkmprbasedata = (vtkMPRBaseData*) (wxvtk2Dbaseview->GetVtkBaseData()); + vtkmprbasedata->SetX( _manualPaintModel->GetRestorBaseInitialPointX() ); + vtkmprbasedata->SetY( _manualPaintModel->GetRestorBaseInitialPointY() ); + vtkmprbasedata->SetZ( _manualPaintModel->GetRestorBaseInitialPointZ() ); + wxCommandEvent newevent(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh +//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0 +#if wxMAJOR_VERSION <= 2 + wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor ()->GetParent()->ProcessEvent( newevent ); +#else + wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor ()->GetParent()->ProcessWindowEvent( newevent ); +#endif + } // _wxvtk2Dbaseview +} + +