]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.cxx
3#153 creaMaracas Visu Bug New Normal - ColorLayer Box (gray level set)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / ThresholdImageView / ColorLayerImageView.cxx
index f3760e9141f5643fa9178c66b4644a6c68be3731..7cb4e902648ed14d2ffe5291297ef34ddd73fddd 100644 (file)
@@ -168,6 +168,10 @@ double ColorLayerImageView::GetBaseColors(unsigned int index)
 //----------------------------------------------------------------------------
 void ColorLayerImageView::SetGreyLevelBoundaries(std::vector<double> & grey_level_boundary)
 {
+ _grey_level_boundary = grey_level_boundary;
+
+//EED 2017 / 11 / 27
+/*
   // The size must be greater than or equal to 2 (at least min and max must exist).
   if ( grey_level_boundary.size() >= 2)
     {
@@ -177,6 +181,8 @@ void ColorLayerImageView::SetGreyLevelBoundaries(std::vector<double> & grey_leve
   // Otherwise, an exception should be thrown.
   else if (grey_level_boundary.size() != 0)
     std::cout << "CM ColorLayerImageView::SetGreyLevelBoundaries : ERROR!!! The grey level boundaries vector has an inconsistent size. It must be of a size greater than or equal to 2 (at least min and max must exist), but its size is: " << grey_level_boundary.size() << ". Therefore, the histogram will be equally split." << std::endl;
+*/
+
 }
 
 //----------------------------------------------------------------------------
@@ -207,13 +213,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 +244,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();
@@ -301,6 +308,7 @@ void ColorLayerImageView::SetDefaultBaseColorAndGreyLevelBoundary()
 //----------------------------------------------------------------------------
 void ColorLayerImageView::ConfigLookupTable()  // virtual
 {
+
   // CM 2014
   // EED        28/01/2015     
   // Grey level extrema retrieved from the image grey level extrema.
@@ -313,20 +321,31 @@ 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()-1 )
-      {
-
-printf("EED ColorLayerImageView::ConfigLookupTable() %d %d\n", GetBaseColorNb() , (int)_grey_level_boundary.size()+1 );
+       } 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 (_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 
 
-                       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();     
-      }
    }
   // ------------------ End Of Setting Default Values
 
@@ -336,6 +355,7 @@ printf("EED ColorLayerImageView::ConfigLookupTable() %d %d\n", GetBaseColorNb()
       _transparence_level_boundary.push_back(1);
        }
 
+
   // ------------------ Defining the Threshold Table
   vtkLookupTable* thresholdTable = GetThresholdTable();
 
@@ -358,7 +378,7 @@ printf("EED ColorLayerImageView::ConfigLookupTable() %d %d\n", GetBaseColorNb()
   thresholdTable->SetRampToLinear( );
 
   maxColorsThresholdTable = 1000;
-  thresholdTable->SetNumberOfTableValues( maxColorsThresholdTable );
+  thresholdTable->SetNumberOfTableValues( maxColorsThresholdTable+1 );
   thresholdTable->SetNanColor(0,0,0,0);
 
 
@@ -409,6 +429,7 @@ printf("EED ColorLayerImageView::ConfigLookupTable() %d %d\n", GetBaseColorNb()
                                end     = GrayLevel_TO_colorTableIndex( GetGreyLevelBoundaries(iColor+1) );  
                        t1              = _transparence_level_boundary[iColor];
                                t2              = _transparence_level_boundary[iColor+1];
+printf("EED ColorLayerImageView::ConfigLookupTable   Make something with transparence \n");
                                FillColorTable( start,end, r1,g1,b1, r2,g2,b2, t1,t2 );
                        }// for 
                } //if                          
@@ -424,7 +445,6 @@ printf("EED ColorLayerImageView::ConfigLookupTable() %d %d\n", GetBaseColorNb()
 //  thresholdTable->SetBelowRangeColor(0,0,0,0);       
 
   thresholdTable->Build( );
-
   //EO CM EED
 }