]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx
#3009 creaMaracasVisu Feature New Normal - Interpolate option in box ViewerNV
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracas_N_ViewersWidget.cxx
index 38da613ae54c9cb8be9253c2d28e9f24e6f01507..75fa8c30da965cbe8aa9dc45d366961d1460048e 100644 (file)
@@ -1,10 +1,35 @@
+/*# ---------------------------------------------------------------------
+#
+# 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.
+# ------------------------------------------------------------------------ */
+
 /*=========================================================================
 
   Program:   wxMaracas
   Module:    $RCSfile: wxMaracas_N_ViewersWidget.cxx,v $
   Language:  C++
-  Date:      $Date: 2010/10/23 12:01:32 $
-  Version:   $Revision: 1.20 $
+  Date:      $Date: 2012/11/15 14:14:35 $
+  Version:   $Revision: 1.24 $
 
   Copyright: (c) 2002, 2003
   License:
                }else   if (nTypeView->size()==2)       {
                        wxSplitterWindow        *spliter        = new wxSplitterWindow( this , -1);
                        spliter->SetMinimumPaneSize(1);
+                       //RaC Nov2012 Correctly resize internal panels with the window resize event
+                       spliter->SetSashGravity(0.5);
                        wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0], mvtkmprbasedata);
                        wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1], mvtkmprbasedata);
-                       spliter -> SplitVertically( wxwindow1 , wxwindow2  );
+                       spliter -> SplitHorizontally( wxwindow1 , wxwindow2  );
                        wxwindow = spliter;
                }else if (nTypeView->size()==3)
                {
                        wxSplitterWindow        *spliterA       = new wxSplitterWindow( spliter , -1);
                        spliter->SetMinimumPaneSize(1);
                        spliterA->SetMinimumPaneSize(1);
+                       //RaC Nov2012 Correctly resize internal panels with the window resize event
+                       spliter->SetSashGravity(0.5);
+                       spliterA->SetSashGravity(0.5);
                        wxwindow1 = new wxMaracas_ViewerWidget(spliter , imagedata, (*nTypeView)[0], mvtkmprbasedata);
                        wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1], mvtkmprbasedata);
                        wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2], mvtkmprbasedata);
                        spliter->SetMinimumPaneSize(1);
                        spliterA->SetMinimumPaneSize(1);
                        spliterB->SetMinimumPaneSize(1);
+                       //RaC Nov2012 Correctly resize internal panels with the window resize event
+                       spliter->SetSashGravity(0.5);
+                       spliterA->SetSashGravity(0.5);
+                       spliterB->SetSashGravity(0.5);
 
                        spliter -> SplitVertically( spliterA , spliterB   );
-                       wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0], mvtkmprbasedata);
-                       wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1], mvtkmprbasedata);
-                       spliterA-> SplitHorizontally( wxwindow1 , wxwindow2  );
-                       wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2], mvtkmprbasedata);
-                       wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3], mvtkmprbasedata);
-                       spliterB-> SplitHorizontally( wxwindow3 , wxwindow4  );
+                       
+                       
+//EED 21 mars 2012  FLIP probleme  ..PLOP..                    
+//                     wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0], mvtkmprbasedata);
+//                     wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1], mvtkmprbasedata);
+//                     wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2], mvtkmprbasedata);
+//                     wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3], mvtkmprbasedata);
+//                     spliterA-> SplitHorizontally( wxwindow1 , wxwindow2  );
+//                     spliterB-> SplitHorizontally( wxwindow3 , wxwindow4  );
+                       
+                       wxwindow1 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[0], mvtkmprbasedata);
+                       wxwindow2 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[1], mvtkmprbasedata);
+                       wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2], mvtkmprbasedata);
+                       wxwindow4 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[3], mvtkmprbasedata);
+                       spliterA-> SplitHorizontally( wxwindow3 , wxwindow4  );
+                       spliterB-> SplitHorizontally( wxwindow2 , wxwindow1  );
+                       
                        wxwindow = spliter;
                }
 
         if (wxwindow2!=NULL) { wxwindow2->SetImage(image); }
         if (wxwindow3!=NULL) { wxwindow3->SetImage(image); }
         if (wxwindow4!=NULL) { wxwindow4->SetImage(image); }
-        ConfigureVTK();
-
+        
+//      ConfigureVTK();
  }
 
+
 //-----------------------------------------------------------------------------------
  void wxMaracas_N_ViewersWidget::ConfigureVTK()
  {
@@ -334,53 +380,70 @@ double wxMaracas_N_ViewersWidget :: GetZ()
 //     return wxwindow1->GetZ();
 }
 
-void wxMaracas_N_ViewersWidget :: invariant(){
-       if(mvtkmprbasedata == 0){
+//-----------------------------------------------------------------------------------
+void wxMaracas_N_ViewersWidget :: invariant()
+{
+       if(mvtkmprbasedata == 0)
+       {
                throw "The image has not been set in the viewer";
        }
 }
 
-void wxMaracas_N_ViewersWidget::setColorTransferFunction(vtkColorTransferFunction* colortable){
-    if (wxwindow1!=NULL) {
+//-----------------------------------------------------------------------------------
+void wxMaracas_N_ViewersWidget::setColorTransferFunction(vtkColorTransferFunction* colortable)
+{
+    if (wxwindow1!=NULL) 
+       {
                wxwindow1->setColorTransferFunction(colortable);
        }
-       if (wxwindow2!=NULL) {
+       
+       if (wxwindow2!=NULL) 
+       {
                wxwindow2->setColorTransferFunction(colortable);
        }
-       if (wxwindow3!=NULL) {
+       
+       if (wxwindow3!=NULL) 
+       {
                wxwindow3->setColorTransferFunction(colortable);
        }
-       if (wxwindow4!=NULL) {
+       
+       if (wxwindow4!=NULL) 
+       {
                wxwindow4->setColorTransferFunction(colortable);
        }
 }
 
-void wxMaracas_N_ViewersWidget::setWindowLevel(double level){
-       if (wxwindow1!=NULL) {
-               wxwindow1->setWindowLevel(level);
+//-----------------------------------------------------------------------------------
+void wxMaracas_N_ViewersWidget::SetColorWindowLevel(double colorWindow, double colorLevel)
+{
+       if (wxwindow1!=NULL) 
+       {
+               wxwindow1->SetColorWindowLevel(colorWindow, colorLevel);
        }
-       if (wxwindow2!=NULL) {
-               wxwindow2->setWindowLevel(level);
+       
+       if (wxwindow2!=NULL) 
+       {
+               wxwindow2->SetColorWindowLevel(colorWindow, colorLevel);
        }
-       if (wxwindow3!=NULL) {
-               wxwindow3->setWindowLevel(level);
+       
+       if (wxwindow3!=NULL) 
+       {
+               wxwindow3->SetColorWindowLevel(colorWindow, colorLevel);
        }
-       if (wxwindow4!=NULL) {
-               wxwindow4->setWindowLevel(level);
+       
+       if (wxwindow4!=NULL) 
+       {
+               wxwindow4->SetColorWindowLevel(colorWindow, colorLevel);
        }
+       RefreshView();
 }
-void wxMaracas_N_ViewersWidget::setColorLevel(double level){
-       if (wxwindow1!=NULL) {
-               wxwindow1->setColorLevel(level);
-       }
-       if (wxwindow2!=NULL) {
-               wxwindow2->setColorLevel(level);
-       }
-       if (wxwindow3!=NULL) {
-               wxwindow3->setColorLevel(level);
-       }
-       if (wxwindow4!=NULL) {
-               wxwindow4->setColorLevel(level);
-       }
+
+//-----------------------------------------------------------------------------------
+void wxMaracas_N_ViewersWidget::SetInterpolate(bool interpolate)
+{
+       mvtkmprbasedata->SetInterpolate(interpolate);
+       RefreshView();
 }
 
+
+