]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.cxx
#2507 creaMaracasVisu Feature New Normal - creaPanelButtonContainer ListPanel
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / ThresholdImageView / ColorLayerImageView.cxx
index 91a67553336ac103b545d42bd1bcba3a8f60c2c5..515784ac9bafcd641b0e7ec0a7272af50b657dda 100644 (file)
@@ -1,3 +1,28 @@
+/*# ---------------------------------------------------------------------
+#
+# 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.
+# ------------------------------------------------------------------------ */
+
 /**
  *  \file 
  *  \author Eduardo Davila and Claire Mouton.
@@ -20,9 +45,9 @@
 //=========================================================================
 ColorLayerImageView::ColorLayerImageView( )
 {
-  _z2          =       0;
-  _fix_dynamic =       true;
-  _color_type   =       false;
+  _z2                                  =       0;
+  _fix_dynamic         =       true;
+  _color_type          =       false;
 }
 
 //=========================================================================
@@ -38,12 +63,59 @@ void ColorLayerImageView::SetSliceFixDynamic(bool fix_dynamic)
   _fix_dynamic = fix_dynamic;
 }
 
+//----------------------------------------------------------------------------
+void ColorLayerImageView::SetX2(int x2)  
+{
+  _x2 = x2;
+}
+
+//----------------------------------------------------------------------------
+void ColorLayerImageView::SetY2(int y2)  
+{
+  _y2 = y2;
+}
+
+
 //----------------------------------------------------------------------------
 void ColorLayerImageView::SetZ2(int z2)  
 {
   _z2 = z2;
 }
 
+
+
+//----------------------------------------------------------------------------
+int ColorLayerImageView::GetX() // virtual 
+{
+  int result=0;
+  if (_fix_dynamic==false)
+    {
+      result = _x2;
+    }
+  else
+    {
+      result = LayerImageBase::GetX();
+    }  
+
+  return result;
+}
+
+//----------------------------------------------------------------------------
+int ColorLayerImageView::GetY() // virtual 
+{
+  int result=0;
+  if (_fix_dynamic==false)
+    {
+      result = _y2;
+    }
+  else
+    {
+      result = LayerImageBase::GetY();
+    }  
+
+  return result;
+}
+
 //----------------------------------------------------------------------------
 int ColorLayerImageView::GetZ() // virtual 
 {
@@ -144,9 +216,9 @@ void ColorLayerImageView::SetDefaultGreyLevelBoundary()
   // By default, the histogram is split into BaseColorNb areas of equal width.
   double delta = (maxTot - minTot)/GetBaseColorNb();
   for (int i = 1; i <= GetBaseColorNb() ; i ++)
-    {
-      _grey_level_boundary.push_back((double)minTot + i * delta);
-    }
+  {
+               _grey_level_boundary.push_back((double)minTot + i * delta);
+  }
 }
 
 //----------------------------------------------------------------------------
@@ -193,9 +265,12 @@ void ColorLayerImageView::ConfigLookupTable()  // virtual
 {
   // CM
   // Grey level extrema retrieved from the image grey level extrema.
+
+
   GetImage()->GetScalarRange(_range);
 
 
+
   // ------------------ Setting Default Values
   // Checks the size consistency of vectors _base_color and _grey_level_boundary.
   // In case of inconsistency, an exception should be thrown. Instead, the default values are set.
@@ -217,10 +292,15 @@ void ColorLayerImageView::ConfigLookupTable()  // virtual
   vtkLookupTable* thresholdTable = GetThresholdTable();
 
   // CM Number of table values consistent with the effective number of values (see loop below).
-  thresholdTable->SetNumberOfTableValues(std::max( GetGreyLevelBoundaries( GetBaseColorNb() ), ceil(_range[1]) ) - std::min(  GetGreyLevelBoundaries(0), floor(_range[0]) ) + 1);
-  thresholdTable->SetTableRange(_range); 
+  double thresholdTable_range[2];
+  thresholdTable_range[1]= std::max( GetGreyLevelBoundaries( GetBaseColorNb() ), ceil(_range[1]) );
+  thresholdTable_range[0]= std::min( GetGreyLevelBoundaries(0), floor(_range[0]) );
+  thresholdTable->SetNumberOfTableValues(thresholdTable_range[1] - thresholdTable_range[0] + 1);
+  thresholdTable->SetTableRange(thresholdTable_range); 
   thresholdTable->SetAlphaRange(0, 1);
   thresholdTable->SetValueRange(0, 1);
+
+
   thresholdTable->SetSaturationRange(0, 0); 
   thresholdTable->SetRampToLinear( );
 
@@ -265,7 +345,7 @@ void ColorLayerImageView::ConfigLookupTable()  // virtual
       delta = GetGreyLevelBoundaries(1) - GetGreyLevelBoundaries(0);
       for (int ii = 1; ii <= delta ; ii++)
        {
-         thresholdTable->SetTableValue( GetGreyLevelBoundaries(0) + ii, GetBaseColors(0) * ii/delta,
+         thresholdTable->SetTableValue( (GetGreyLevelBoundaries(0) + ii), GetBaseColors(0) * ii/delta,
                                         GetBaseColors(1) * ii/delta, GetBaseColors(2) * ii/delta, 1);
        }
            
@@ -279,7 +359,7 @@ void ColorLayerImageView::ConfigLookupTable()  // virtual
              for (int ii = 1; ii <= delta; ii++)
                {
                  // Color computation : previous_color + (current_color - previous_color)/delta * ii
-                 thresholdTable->SetTableValue(GetGreyLevelBoundaries(i) + ii,
+                 thresholdTable->SetTableValue((GetGreyLevelBoundaries(i) + ii),
                                                GetBaseColors((i-1)*3) + (GetBaseColors(i*3) - GetBaseColors((i-1)*3)) / delta * ii , 
                                                GetBaseColors((i-1)*3 + 1) + (GetBaseColors(i*3 + 1) - GetBaseColors((i-1)*3 + 1)) / delta * ii ,
                                                GetBaseColors((i-1)*3 + 2) + (GetBaseColors(i*3 + 2) - GetBaseColors((i-1)*3 + 2)) / delta * ii ,
@@ -288,8 +368,28 @@ void ColorLayerImageView::ConfigLookupTable()  // virtual
            }
        }
     } //  End Of if (!_color_type)
+
+
        
+   thresholdTable->SetRange(_range[0], _range[1]); // image intensity range
+   thresholdTable->SetValueRange(0.0, 1.0); // from black to white
+
+
   thresholdTable->Build( );
+
+
+
+/*
+// Create a greyscale lookup table
+   vtkLookupTable* thresholdTable = GetThresholdTable();
+   thresholdTable->SetRange(0.5, 0.75); // image intensity range
+   thresholdTable->SetValueRange(0.0, 1); // from black to white
+   thresholdTable->SetHueRange(0.0, 1.0); // from black to white
+   thresholdTable->SetSaturationRange(0.0, 1.0); // no color saturation
+   thresholdTable->SetRampToLinear();
+   thresholdTable->Build();
+*/ 
+
   // ------------------ End Of Defining the Threshold Table
 
   //EO CM