+//----------------------------------------------------------------------------
+double ColorLayerImageView::GetGreyLevelBoundaries(unsigned int index)
+{
+ if (_grey_level_boundary.size() > index)
+ return _grey_level_boundary.at(index);
+ // An exception should be thrown if the index does not exist in the grey level boundary vector.
+ else
+ {
+ std::cout << "CM ColorLayerImageView::GetGreyLevelBoundaries : ERROR!!! The index " << index << "is out of the grey level boundaries vector range." << std ::endl;
+ return -1.0;
+ }
+}
+
+//----------------------------------------------------------------------------
+void ColorLayerImageView::SetPlainOrGradientColor(bool color_type)
+{
+ _color_type = color_type;
+}
+
+//----------------------------------------------------------------------------
+int ColorLayerImageView::GetBaseColorNb()
+{
+ return _base_color.size()/3;
+}
+
+//----------------------------------------------------------------------------
+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;
+ }
+
+ int i;
+ double delta;
+ // Grey level extrema are set by default to the image grey level extrema.
+ double minTot = _range[0];
+ double maxTot = _range[1];
+
+ if (_color_type)
+ {
+ delta = (maxTot - minTot)/GetBaseColorNb();
+ // By default, the histogram is split into BaseColorNb areas of equal width.
+ for (i = 0; i <= GetBaseColorNb() ; i ++)
+ {
+ _grey_level_boundary.push_back(minTot + i * delta);
+ } // for
+ } else {
+ delta = (maxTot - minTot)/(GetBaseColorNb()-1);
+ for (i = 0; i < GetBaseColorNb() ; i ++)
+ {
+ _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();
+ // Base colors are set to blue, yellow and red.
+ // Blue.
+ _base_color.push_back(0.0);
+ _base_color.push_back(0.0);
+ _base_color.push_back(0.5);
+
+ _base_color.push_back(0.0);
+ _base_color.push_back(0.0);
+ _base_color.push_back(1.0);
+
+ _base_color.push_back(0.0);
+ _base_color.push_back(1.0);
+ _base_color.push_back(1.0);
+
+ _base_color.push_back(1.0);
+ _base_color.push_back(1.0);
+ _base_color.push_back(0.0);
+
+ _base_color.push_back(1.0);
+ _base_color.push_back(0.0);
+ _base_color.push_back(0.0);
+
+ _base_color.push_back(0.5);
+ _base_color.push_back(0.0);
+ _base_color.push_back(0.0);
+
+
+ // This avoids a potential division by 0 through delta during the lookup table configuration.
+ if (_range[1]==0)
+ {
+ _range[1]=255;
+ }
+
+// double minTot = floor (_range[0]);
+// double maxTot = ceil (_range[1]);
+ double minTot = _range[0];
+ double maxTot = _range[1];
+
+ double delta = (maxTot - minTot)/8.0;
+ // By default, the histogram is split into three areas of equal width.
+
+ _grey_level_boundary.push_back(minTot + delta*0);
+ _grey_level_boundary.push_back(minTot + delta*1);
+// _grey_level_boundary.push_back(minTot + delta*2);
+ _grey_level_boundary.push_back(minTot + delta*3);
+// _grey_level_boundary.push_back(minTot + delta*4);
+ _grey_level_boundary.push_back(minTot + delta*5);
+ // _grey_level_boundary.push_back(minTot + delta*6);
+ _grey_level_boundary.push_back(minTot + delta*7);
+ _grey_level_boundary.push_back(minTot + delta*8);
+}