BReference<Crossing> WindowArea::_CrossingByPosition(Crossing* crossing, SATGroup* group) { BReference<Crossing> crossRef = NULL; Tab* oldHTab = crossing->HorizontalTab(); BReference<Tab> hTab = group->FindHorizontalTab(oldHTab->Position()); if (!hTab) hTab = group->_AddHorizontalTab(oldHTab->Position()); if (!hTab) return crossRef; Tab* oldVTab = crossing->VerticalTab(); crossRef = hTab->FindCrossing(oldVTab->Position()); if (crossRef) return crossRef; BReference<Tab> vTab = group->FindVerticalTab(oldVTab->Position()); if (!vTab) vTab = group->_AddVerticalTab(oldVTab->Position()); if (!vTab) return crossRef; return hTab->AddCrossing(vTab); }