/// <summary> /// Returns a range with the smaller Start and the bigger End. The Union of the 2 Range. If one of the range is empty then the return is the other range. /// </summary> /// <param name="p_Range1"></param> /// <param name="p_Range2"></param> /// <returns></returns> public static Range GetBounds(Range p_Range1, Range p_Range2) { if (p_Range1.IsEmpty()) { return(p_Range2); } else if (p_Range2.IsEmpty()) { return(p_Range1); } else { return(new Range(Position.Min(p_Range1.Start, p_Range2.Start), Position.Max(p_Range1.End, p_Range2.End), false)); } }
/// <summary> /// Returns the intersection between the 2 Range. If one of the range is empty then the return is empty. /// </summary> /// <param name="p_Range1"></param> /// <param name="p_Range2"></param> /// <returns></returns> public static Range Intersect(Range p_Range1, Range p_Range2) { if (p_Range1.IsEmpty() || p_Range2.IsEmpty()) { return(Range.Empty); } Position startNew = Position.Max(p_Range1.Start, p_Range2.Start); Position endNew = Position.Min(p_Range1.End, p_Range2.End); if (startNew.Column > endNew.Column || startNew.Row > endNew.Row) { return(Range.Empty); } else { return(new Range(startNew, endNew, false)); } }