/// <summary> /// Removes the supplied range of integers from the valid range collection. The valid range collection /// is updated as appropriate to remove the invalid integers /// </summary> /// <param name="invalidRange">The range of integers to remove from the valid integer collection</param> private void RemoveFromValidRange(Range<double> invalidRange) { foreach (Range<double> validRange in m_validRanges) { if (invalidRange.IsSubRangeOf(validRange)) { //check for matching boundaries. If we have some, we don't need to split the existing valid range if (!(invalidRange.Min == validRange.Min || invalidRange.Max == validRange.Max)) { //no matching boundaries, so need to split validRange. Add new valid range at high end of existing //valid range m_validRanges.Add(new Range<double>(invalidRange.Max + 1, validRange.Max)); validRange.Max = invalidRange.Min - 1; break; } } if (invalidRange.OverlapsHighEndOf(validRange)) { //reduce max of valid range if (invalidRange.Min > 0) { validRange.Max = invalidRange.Min - 1; } } if (invalidRange.OverlapsLowEndOf(validRange)) { //increase min of valid range if (invalidRange.Max < Int32.MaxValue) { validRange.Min = invalidRange.Max + 1; } } } }