private static 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;
}
}
}