]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.cxx
#3016 creaMaracasVisu Bug New Normal - ColorLayer Box, error with : Error message...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / ThresholdImageView / ColorLayerImageView.cxx
index 38f25f35139a03833313d5b32021c68a0c48e0b6..6dd7ca540679618fa59f0210c130410d64153239 100644 (file)
@@ -207,13 +207,14 @@ int ColorLayerImageView::GetBaseColorNb()
 //----------------------------------------------------------------------------
 void ColorLayerImageView::SetDefaultGreyLevelBoundary()
 {
-  // CM Sets the default behaviour concerning the lookup table keeping the base colors already set.
-  _grey_level_boundary.clear();
 
-  // This avoids a potential division by 0 through delta during the lookup table configuration.
-  if (_range[1]==0)
-    {
-      _range[1]=255;
+       // CM Sets the default behaviour concerning the lookup table keeping the base colors already set.
+       _grey_level_boundary.clear();
+
+       // This avoids a potential division by 0 through delta during the lookup table configuration.
+       if (_range[1]==0)
+       {
+               _range[1]=255;
     }
          
        int i;
@@ -237,12 +238,12 @@ void ColorLayerImageView::SetDefaultGreyLevelBoundary()
                        _grey_level_boundary.push_back(minTot + i * delta);
                } // for                
        } // if  
-
 }
 
 //----------------------------------------------------------------------------
 void ColorLayerImageView::SetDefaultBaseColorAndGreyLevelBoundary()
 {
+
   // CM Sets the default behaviour concerning the lookup table.
   _grey_level_boundary.clear();
   _base_color.clear();
@@ -313,17 +314,33 @@ void ColorLayerImageView::ConfigLookupTable()  // virtual
   // ------------------ 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.
-  if (GetBaseColorNb() == 0)
+       if (GetBaseColorNb() == 0)
        {
                SetDefaultBaseColorAndGreyLevelBoundary();
-       }
-   else {  // If at least one color has been set, set the grey level boundaries to build an equipartition of the image grey levels, keeping the base colors defined.
-      if (GetBaseColorNb() != (int)_grey_level_boundary.size() )
-      {
-                       std::cout << "CM ColorLayerImageView::ConfigLookupTable : ERROR!!! Inconsistency between the sizes of vectors _base_color and _grey_level_boundary. _base_color.size()/3 (=" <<_base_color.size()/3 << ") should be equal to _grey_level_boundary.size() - 1 (=" << _grey_level_boundary.size() - 1 << ")." << std::endl;
-                       std::cout << "CM The default values for the base colors and the grey level boundaries will be set." << std::endl;
-                       SetDefaultGreyLevelBoundary();     
-      }
+       } else {  // If at least one color has been set, set the grey level boundaries to build an equipartition of the image grey levels, keeping the base colors defined.
+               printf("EED ColorLayerImageView::ConfigLookupTable() %d  %d\n",  GetBaseColorNb() , _grey_level_boundary.size()  );
+
+
+               if (_color_type==true)  // Plain
+               {
+               if (GetBaseColorNb() != (int)_grey_level_boundary.size()-1)
+               {
+                               std::cout << "CM ColorLayerImageView::ConfigLookupTable : ERROR!!! Inconsistency between the sizes of vectors _base_color and _grey_level_boundary. _base_color.size()/3 (=" <<_base_color.size()/3 << ") should be equal to _grey_level_boundary.size()+1 (=" << _grey_level_boundary.size()<<"+1)." << std::endl;
+                               std::cout << "CM The default values for the base colors and the grey level boundaries will be set." << std::endl;
+                               SetDefaultGreyLevelBoundary();     
+               } // if 
+               } // _color_type 
+
+               if (_color_type==false)  // Gradiant
+               {
+               if (GetBaseColorNb() != (int)_grey_level_boundary.size())
+               {
+                               std::cout << "CM ColorLayerImageView::ConfigLookupTable : ERROR!!! Inconsistency between the sizes of vectors _base_color and _grey_level_boundary. _base_color.size()/3 (=" <<_base_color.size()/3 << ") should be equal to _grey_level_boundary.size() (=" << _grey_level_boundary.size()<<")." << std::endl;
+                               std::cout << "CM The default values for the base colors and the grey level boundaries will be set." << std::endl;
+                               SetDefaultGreyLevelBoundary();     
+               } // if 
+               } // _color_type 
+
    }
   // ------------------ End Of Setting Default Values
 
@@ -355,7 +372,7 @@ void ColorLayerImageView::ConfigLookupTable()  // virtual
   thresholdTable->SetRampToLinear( );
 
   maxColorsThresholdTable = 1000;
-  thresholdTable->SetNumberOfTableValues( maxColorsThresholdTable );
+  thresholdTable->SetNumberOfTableValues( maxColorsThresholdTable+1 );
   thresholdTable->SetNanColor(0,0,0,0);