string ToRelativeString(Point pt)
{
if (pt.X == 0 && pt.Y == 0)
return "Self";
var sb = new StringBuilder();
if (pt.X > 0)
sb.AppendFormat("{0} Right", pt.X.ToString());
else if (pt.X < 0)
sb.AppendFormat("{0} Left", Math.Abs(pt.X).ToString());
if (pt.X != 0 && pt.Y != 0)
sb.Append(", ");
if (pt.Y > 0)
sb.AppendFormat("{0} Down", pt.Y.ToString());
else if (pt.Y < 0)
sb.AppendFormat("{0} Up", Math.Abs(pt.Y).ToString());
return sb.ToString();
}