+/*# ---------------------------------------------------------------------
+#
+# 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.
//=========================================================================
ColorLayerImageView::ColorLayerImageView( )
{
- _z2 = 0;
- _fix_dynamic = true;
- _color_type = false;
+ _z2 = 0;
+ _fix_dynamic = true;
+ _color_type = false;
}
//=========================================================================
_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
{
// 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);
+ }
}
//----------------------------------------------------------------------------
{
// 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.
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( );
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);
}
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 ,
}
}
} // 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