private static bool IntersectedBy(IndexRange range1, IndexRange range2)
{
var startFlag1 = range1.StartOffset;
var start1 = range1.StartValue;
var endFlag1 = range1.EndOffset;
var end1 = range1.EndValue;
var startFlag2 = range2.StartOffset;
var start2 = range2.StartValue;
var endFlag2 = range2.EndOffset;
var end2 = range2.EndValue;
var startCell1 = start1.Equals(IndexRange.FirstInSet) ? null : start1;
var endCell1 = end1.Equals(IndexRange.LastInSet) ? null : end1;
var startCell2 = start2.Equals(IndexRange.FirstInSet) ? null : start2;
var endCell2 = end2.Equals(IndexRange.LastInSet) ? null : end2;
bool intersect1 = false;
if (startCell1 != null && endCell2 != null) {
int c = startCell1.CompareTo(endCell2);
if (c < 0 ||
(c == 0 && (startFlag1 == RangeFieldOffset.FirstValue ||
endFlag2 == RangeFieldOffset.LastValue))) {
intersect1 = true;
}
} else {
intersect1 = true;
}
bool intersect2 = false;
if (startCell2 != null && endCell1 != null) {
int c = startCell2.CompareTo(endCell1);
if (c < 0 ||
(c == 0 && (startFlag2 == RangeFieldOffset.FirstValue ||
endFlag1 == RangeFieldOffset.LastValue))) {
intersect2 = true;
}
} else {
intersect2 = true;
}
return (intersect1 && intersect2);
}