private void RegisterOverlappingItems(InitializationContext context, int count, SortedReportItemIndexList sortedTop, bool isSortedVertically) { Hashtable hashtable = new Hashtable(count); for (int i = 0; i < count - 1; i++) { int num = sortedTop[i]; double num2 = isSortedVertically ? m_entries[num].AbsoluteBottomValue : m_entries[num].AbsoluteRightValue; bool flag = true; for (int j = i + 1; j < count && flag; j++) { int num3 = sortedTop[j]; Global.Tracer.Assert(num != num3, "(currentIndex != peerIndex)"); double num4 = isSortedVertically ? m_entries[num3].AbsoluteTopValue : m_entries[num3].AbsoluteLeftValue; if (num2 > num4) { int num5 = Math.Min(num, num3); int item = Math.Max(num, num3); List <int> list = hashtable[num5] as List <int>; if (list == null) { list = new List <int>(); hashtable[num5] = list; } list.Add(item); } else { flag = false; } } } foreach (int key in hashtable.Keys) { List <int> list2 = hashtable[key] as List <int>; double num7 = isSortedVertically ? m_entries[key].AbsoluteLeftValue : m_entries[key].AbsoluteTopValue; double num8 = isSortedVertically ? m_entries[key].AbsoluteRightValue : m_entries[key].AbsoluteBottomValue; for (int k = 0; k < list2.Count; k++) { int index = list2[k]; double num9 = isSortedVertically ? m_entries[index].AbsoluteLeftValue : m_entries[index].AbsoluteTopValue; double num10 = isSortedVertically ? m_entries[index].AbsoluteRightValue : m_entries[index].AbsoluteBottomValue; if (((num9 > num7 && num9 < num8) || (num10 > num7 && num10 < num8) || (num9 <= num7 && num8 <= num10) || (num7 <= num9 && num10 <= num8)) && (m_entries[key].ObjectType != Microsoft.ReportingServices.ReportProcessing.ObjectType.CustomReportItem || ((CustomReportItem)m_entries[key]).AltReportItem != m_entries[index]) && (m_entries[index].ObjectType != Microsoft.ReportingServices.ReportProcessing.ObjectType.CustomReportItem || ((CustomReportItem)m_entries[index]).AltReportItem != m_entries[key])) { context.ErrorContext.Register(ProcessingErrorCode.rsOverlappingReportItems, Severity.Warning, m_entries[key].ObjectType, m_entries[key].Name, null, ErrorContext.GetLocalizedObjectTypeString(m_entries[index].ObjectType), m_entries[index].Name); } } } }