]> Creatis software - creaMaracasVisu.git/blobdiff - bbtk/src/bbcreaMaracasVisuManualPaint.cxx
#2864 creaMaracasVisu Feature New Normal - Manual Paint , modifies external image...
[creaMaracasVisu.git] / bbtk / src / bbcreaMaracasVisuManualPaint.cxx
index 3bde3b50196625739569c2731b969896ab721623..ba692644e2b621d30379b32924f6654c832adf62 100644 (file)
+/*# ---------------------------------------------------------------------
+#
+# 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.
+# ------------------------------------------------------------------------ */
+
 //=====
 // Don't edit this file. This file is generated from xml description..
 //=====
 #include "bbcreaMaracasVisuManualPaint.h"
 #include "bbcreaMaracasVisuPackage.h"
 
-#include "wxVtk2DBaseView.h"
-#include "wxVTKRenderWindowInteractor.h"
-
-namespace bbcreaMaracasVisu
-{
-
+#include "ManualPaintPanel.h"
+#include "ManualPaintModel.h"
+#include "ManualPaintControler.h"
+#include "wxManualPaintPanel.h"
 
+#include <wx/msgdlg.h>
 
-vtkInteractorManualPaint::vtkInteractorManualPaint()
-{
-       _state  =   false;
-       _image  =   NULL;
-       _auxZ   =   0;
-}
-
-//---------------------------------------------------------------------------
-vtkInteractorManualPaint::~vtkInteractorManualPaint()
-{
-}
-
-//---------------------------------------------------------------------------
-bool vtkInteractorManualPaint::OnLeftButtonDown()
-{
-       vtkRenderWindowInteractor *interactor = _vtkInteractorStyleBaseView->GetInteractor();
-       if ((interactor->GetControlKey()==1) || (interactor->GetShiftKey()==1) ){
-        _state  =   true;
-        wxVtk2DBaseView             *wxvtk2Dbaseview    = (wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView();
-        _Z      =   wxvtk2Dbaseview->GetActualSlice();
-//             _sliceZ         = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->GetActualSlice();
-       }
-       return true;
-}
-
-//---------------------------------------------------------------------------
-bool vtkInteractorManualPaint::OnLeftButtonUp()
-{
-       _state = false;
-       return true;
-}
-
-//---------------------------------------------------------------------------
-bool vtkInteractorManualPaint::OnMouseMove ()
-{
-    printf("EED vtkInteractorManualPaint::OnMouseMove \n");
-       if (_state==true)
-       {
-        int px,py;
-        wxVtk2DBaseView             *wxvtk2Dbaseview    = (wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView();
-        wxVTKRenderWindowInteractor *wxVTKiren          = wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor();
-
-        wxVTKiren->GetEventPosition(px,py);
-
-        double X = (double)px;
-        double Y = (double)py;
-        double Z = _Z;
-        int typeView = 2;
-        wxvtk2Dbaseview->TransFromCoordScreenToWorld(X, Y, Z,false, typeView);
-
-//        int px = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[0];
-//        int py = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[1];
-        printf("EED vtkInteractorManualPaint::OnMouseMove  -----------------  %f %f %f\n", X,Y,Z);
-
-        PaintImage((int)X,(int)Y,(int)Z);
-
-        wxvtk2Dbaseview->Refresh();
-        wxvtk2Dbaseview->RefreshView();
-//        wxvtk2Dbaseview->SetActualSlice(_Z+_auxZ);
-        _auxZ=(_auxZ+1)%2;
-        wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->Render();
-        this->_vtkInteractorStyleBaseView->SetParent_refresh_waiting();
-//        wxvtk2Dbaseview->SetActualSlice(Z);
-       }// if _state
-       return true;
-}
-
-//---------------------------------------------------------------------------
-void vtkInteractorManualPaint::SetImage(vtkImageData *image)
-{
-       _image = image;
-}
-
-
-void vtkInteractorManualPaint::PaintImage(int px,int py, int pz)
+namespace bbcreaMaracasVisu
 {
-    if (_image!=NULL)
-    {
-        float value=0;
-        printf("EED vtkInteractorManualPaint::PaintImage   %d %d %d\n", px,py,pz);
-        _image->SetScalarComponentFromFloat (px,py,pz, 0, value );
-        _image->Modified();
-    } else  {
-        printf("ERROR : bbcreaMaracasvisu::vtkInteractorManualPaint::PaintImage :  Image not set. \n");
-    }
-}
-
 
 
 //---------------------------------------------------------------------------------
@@ -106,9 +45,6 @@ void vtkInteractorManualPaint::PaintImage(int px,int py, int pz)
 //---------------------------------------------------------------------------------
 
 
-
-
-
 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ManualPaint)
 BBTK_BLACK_BOX_IMPLEMENTATION(ManualPaint,bbtk::WxBlackBox);
 //=====
@@ -116,6 +52,8 @@ BBTK_BLACK_BOX_IMPLEMENTATION(ManualPaint,bbtk::WxBlackBox);
 //=====
 void ManualPaint::Process()
 {
+printf("ManualPaint::Process start\n");
+
 
 /*
    std::string msg;
@@ -130,24 +68,64 @@ void ManualPaint::Process()
    ((wxStaticText*)bbGetOutputWidget())->SetLabel( bbtk::std2wx( msg ) );
   */
 
-    if (bbGetInputWxVtkBaseView()==NULL)
+    if (bbGetInputWxVtkBaseView1()==NULL)
     {
-        printf("WARNING : package creaMaracasVisu box ManualPaint : input WxVtkBaseView have to be defferent of NULL\n");
+      wxMessageDialog(NULL,  bbtk::std2wx("(ManualPaint) Input 'WxVtkBaseView' is not set"),  bbtk::std2wx(bbGetFullName()) ).ShowModal();
     }
 
     if (bbGetInputIn()==NULL)
     {
-        printf("WARNING : package creaMaracasVisu box ManualPaint : input In (vtkImageData*) have to be defferent of NULL\n");
+      wxMessageDialog(NULL,  bbtk::std2wx("(ManualPaint) Input 'vtkImageData' is not set"),  bbtk::std2wx(bbGetFullName()) ).ShowModal();
     }
 
 
-    if (imp==NULL)
+    if (firsttime==true)
     {
-        imp=new vtkInteractorManualPaint();
-        imp->SetImage( bbGetInputIn() );
-        vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*)(bbGetInputWxVtkBaseView()->GetInteractorStyleBaseView());
-        isbv->AddInteractorStyleMaracas(imp);
-    }
+        firsttime=false;
+
+        ManualPaintModel        *mpModel                       = new ManualPaintModel();
+        mpModel->SetImages( bbGetInputIn() , bbGetInputIn2() );
+
+        wxManualPaintPanel        *mpPanel                     = (wxManualPaintPanel*)bbGetOutputWidget();
+        mpPanel->SetManualPaintModel(mpModel);
+
+        if (bbGetInputWxVtkBaseView1()!=NULL)
+        {
+            ManualPaintControler    *mpControler    = new ManualPaintControler();
+            mpControler->SetManualPaintModel(mpModel);
+            mpControler->SetManualPaintPanel(mpPanel);
+            mpControler->SetWxVtk2DBaseView( (wxVtk2DBaseView*)bbGetInputWxVtkBaseView1() );
+            mpControler->Config();
+        }
+
+        if (bbGetInputWxVtkBaseView2()!=NULL)
+        {
+            ManualPaintControler    *mpControler    = new ManualPaintControler();
+            mpControler->SetManualPaintModel(mpModel);
+            mpControler->SetManualPaintPanel(mpPanel);
+            mpControler->SetWxVtk2DBaseView( (wxVtk2DBaseView*)bbGetInputWxVtkBaseView2() );
+            mpControler->Config();
+        }
+
+        if (bbGetInputWxVtkBaseView3()!=NULL)
+        {
+            ManualPaintControler    *mpControler    = new ManualPaintControler();
+            mpControler->SetManualPaintModel(mpModel);
+            mpControler->SetManualPaintPanel(mpPanel);
+            mpControler->SetWxVtk2DBaseView( (wxVtk2DBaseView*)bbGetInputWxVtkBaseView3() );
+            mpControler->Config();
+        }
+
+        if (bbGetInputWxVtkBaseView4()!=NULL)
+        {
+            ManualPaintControler    *mpControler    = new ManualPaintControler();
+            mpControler->SetManualPaintModel(mpModel);
+            mpControler->SetManualPaintPanel(mpPanel);
+            mpControler->SetWxVtk2DBaseView( (wxVtk2DBaseView*)bbGetInputWxVtkBaseView4() );
+            mpControler->Config();
+        }
+
+    } // firsttime
 
 }
 //=====
@@ -155,17 +133,20 @@ void ManualPaint::Process()
 //=====
 void ManualPaint::CreateWidget(wxWindow* parent)
 {
-
-   bbSetOutputWidget( new wxStaticText ( parent , -1 , _T("UPS") ) );
-
+   bbSetOutputWidget( new wxManualPaintPanel(parent) );
 }
+
 //=====
 // Don't edit this file. This file is generated from xml description..
 //=====
 void ManualPaint::bbUserSetDefaultValues()
 {
-    imp=NULL;
+    firsttime=true;
     bbSetInputIn(NULL);
+    bbSetInputWxVtkBaseView1(NULL);
+    bbSetInputWxVtkBaseView2(NULL);
+    bbSetInputWxVtkBaseView3(NULL);
+    bbSetInputWxVtkBaseView4(NULL);
 }
 //=====
 // Don't edit this file. This file is generated from xml description..