/// <summary> /// Convert the <paramref name='value'/> in <paramref name='originalRange'/> to one in <paramref name='newRange'/>. /// </summary> /// <remarks> /// Essentially, <paramref name='originalRange'/> is scaled up or down to match <paramref name='newRange'/>. /// So the returned value is the same percentage along <paramref name='newRange'/> as the provided <paramref name='value'/> was along <paramref name='originalRange'/>. /// </remarks> public static double ConvertValue(WRange originalRange, WRange newRange, double value) { if (originalRange.Start != newRange.Start) { throw new NotImplementedException("Not implemented: Range.ConvertValue when ranges have different minimum values."); } double scale = newRange.Span / originalRange.Span; return(((value - originalRange.Start) * scale) + newRange.Start); }
/// <summary>Returns true if this range overlaps range <paramref name='b'/>.</summary> public virtual bool Overlaps(WRange b) { return(this.Overlaps(b.Start) || this.Overlaps(b.End) || b.Overlaps(this.Start) || b.Overlaps(this.End)); }