getEdge method

Get point from edge of rect

Implementation

RectEdge getEdge(CardinalDirectionType edge)
{
  Coordinate point;
  switch (edge)
  {
    case CardinalDirectionType.NorthWest: // Top left
      point = getTopLeft();
      return new RectEdge(CardinalDirectionType.NorthWest, point);
    case CardinalDirectionType.North: // 12-o-clock (top centre)
      point = getTopLeft();
      point.x = left + width / 2;
      return new RectEdge(CardinalDirectionType.North, point);
    case CardinalDirectionType.NorthEast: // Top right
      point = getTopLeft();
      point.x += width;
      return new RectEdge(CardinalDirectionType.NorthEast, point);
    case CardinalDirectionType.East: // 3-o-clock (right centre)
      point = getTopLeft();
      point.x += width;
      point.y = top + height / 2;
      return new RectEdge(CardinalDirectionType.East, point);
    case CardinalDirectionType.SouthEast: // Bottom right
      point = getBottomRight();
      return new RectEdge(CardinalDirectionType.SouthEast, point);
    case CardinalDirectionType.South: // Six-o-clock (bottom centre)
      point = getBottomRight();
      point.x = left + width / 2;
      return new RectEdge(CardinalDirectionType.South, point);
    case CardinalDirectionType.SouthWest: // Bottom left
      point = getTopLeft();
      point.y += height;
      return new RectEdge(CardinalDirectionType.SouthWest, point);
    case CardinalDirectionType.West: // 9-o-clock (left centre)
      point = getTopLeft();
      point.y = top + height / 2;
      return new RectEdge(CardinalDirectionType.West, point);
  }
}