private void CalculateMap( IntRange inRange, IntRange outRange, byte[] map )
{
double k = 0, b = 0;
if ( inRange.Max != inRange.Min )
{
k = (double) ( outRange.Max - outRange.Min ) / (double) ( inRange.Max - inRange.Min );
b = (double) ( outRange.Min ) - k * inRange.Min;
}
for ( int i = 0; i < 256; i++ )
{
byte v = (byte) i;
if ( v >= inRange.Max )
v = (byte) outRange.Max;
else if ( v <= inRange.Min )
v = (byte) outRange.Min;
else
v = (byte) ( k * v + b );
map[i] = v;
}
}
}