public int GetScaleFromSlot(int slot, int x, int y)
{
int scale;
int scaleX;
int scaleY = 0;
var s = _scaleSlots[slot - 1];
if (s.Y1 == s.Y2 && s.X1 == s.X2)
throw new NotSupportedException(string.Format("Invalid scale slot {0}", slot));
if (s.Y1 != s.Y2)
{
if (y < 0)
y = 0;
scaleY = (s.Scale2 - s.Scale1) * (y - s.Y1) / (s.Y2 - s.Y1) + s.Scale1;
}
if (s.X1 == s.X2)
{
scale = scaleY;
}
else
{
scaleX = (s.Scale2 - s.Scale1) * (x - s.X1) / (s.X2 - s.X1) + s.Scale1;
if (s.Y1 == s.Y2)
{
scale = scaleX;
}
else
{
scale = (scaleX + scaleY) / 2;
}
}
// Clip the scale to range 1-255
if (scale < 1)
scale = 1;
else if (scale > 255)
scale = 255;
return scale;
}