void DUpdateVisitor::visitMAssociation(const MAssociation *association) { auto dassociation = dynamic_cast<DAssociation *>(m_target); QMT_CHECK(dassociation); DAssociationEnd endA; endA.setName(association->endA().name()); endA.setCardinatlity(association->endA().cardinality()); endA.setNavigable(association->endA().isNavigable()); endA.setKind(association->endA().kind()); if (isUpdating(endA != dassociation->endA())) dassociation->setEndA(endA); DAssociationEnd endB; endB.setName(association->endB().name()); endB.setCardinatlity(association->endB().cardinality()); endB.setNavigable(association->endB().isNavigable()); endB.setKind(association->endB().kind()); if (isUpdating(endB != dassociation->endB())) dassociation->setEndB(endB); visitMRelation(association); }
EDA_RECT EDA_RECT::Common( const EDA_RECT& aRect ) const { EDA_RECT r; if( Intersects( aRect ) ) { wxPoint originA( std::min( GetOrigin().x, GetEnd().x ), std::min( GetOrigin().y, GetEnd().y ) ); wxPoint originB( std::min( aRect.GetOrigin().x, aRect.GetEnd().x ), std::min( aRect.GetOrigin().y, aRect.GetEnd().y ) ); wxPoint endA( std::max( GetOrigin().x, GetEnd().x ), std::max( GetOrigin().y, GetEnd().y ) ); wxPoint endB( std::max( aRect.GetOrigin().x, aRect.GetEnd().x ), std::max( aRect.GetOrigin().y, aRect.GetEnd().y ) ); r.SetOrigin( wxPoint( std::max( originA.x, originB.x ), std::max( originA.y, originB.y ) ) ); r.SetEnd ( wxPoint( std::min( endA.x, endB.x ), std::min( endA.y, endB.y ) ) ); } return r; }