mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-11 15:40:10 +00:00
Cleanup a couple routines in the last MR
Simplify and clean the functions
This commit is contained in:
parent
e02b6be4c9
commit
229507ee43
pcbnew
@ -401,38 +401,6 @@ void DIALOG_DRC::UpdateData()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Checks if two board items are overlapping.
|
||||
*
|
||||
* This function determines if the selected marker item and the unselected marker item
|
||||
* are overlapping based on their positions. Overlapping is defined by their positions being
|
||||
* equal or by the distance between them being less than a specified minimum difference.
|
||||
*
|
||||
* @param aSelectedMarkerItem Pointer to the selected board item.
|
||||
* @param aUnSelectedMarkerItem Pointer to the unselected board item.
|
||||
* @return true if the items are overlapping, false otherwise.
|
||||
*/
|
||||
bool IsOverlapping( BOARD_ITEM* aSelectedMarkerItem, BOARD_ITEM* aUnSelectedMarkerItem )
|
||||
{
|
||||
double selectedItemX = (double) aSelectedMarkerItem->GetX() / PCB_IU_PER_MM;
|
||||
double selectedItemY = (double) aSelectedMarkerItem->GetY() / PCB_IU_PER_MM;
|
||||
double unSelectedItemX = (double) aUnSelectedMarkerItem->GetX() / PCB_IU_PER_MM;
|
||||
double unSelectedItemY = (double) aUnSelectedMarkerItem->GetY() / PCB_IU_PER_MM;
|
||||
|
||||
double xDiff = selectedItemX > unSelectedItemX ? selectedItemX - unSelectedItemX
|
||||
: unSelectedItemX - selectedItemX;
|
||||
double yDiff = selectedItemY > unSelectedItemY ? selectedItemY - unSelectedItemY
|
||||
: unSelectedItemY - selectedItemY;
|
||||
double minimumMarkerSeparationDistance =
|
||||
ADVANCED_CFG::GetCfg().m_MinimumMarkerSeparationDistance;
|
||||
|
||||
return ( selectedItemX == unSelectedItemX && selectedItemY == unSelectedItemY )
|
||||
|| ( xDiff < minimumMarkerSeparationDistance && yDiff < minimumMarkerSeparationDistance )
|
||||
|| ( xDiff < minimumMarkerSeparationDistance && selectedItemY == unSelectedItemY )
|
||||
|| ( yDiff < minimumMarkerSeparationDistance && selectedItemX == unSelectedItemX );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_DRC::OnDRCItemSelected( wxDataViewEvent& aEvent )
|
||||
{
|
||||
BOARD* board = m_frame->GetBoard();
|
||||
@ -460,6 +428,20 @@ void DIALOG_DRC::OnDRCItemSelected( wxDataViewEvent& aEvent )
|
||||
}
|
||||
};
|
||||
|
||||
auto isOverlapping =
|
||||
[]( BOARD_ITEM* aSelectedMarkerItem, BOARD_ITEM* aUnSelectedMarkerItem ) -> bool
|
||||
{
|
||||
VECTOR2D selectedItemPos = aSelectedMarkerItem->GetPosition() / PCB_IU_PER_MM;
|
||||
VECTOR2D unSelectedItemPos = aUnSelectedMarkerItem->GetPosition() / PCB_IU_PER_MM;
|
||||
|
||||
double dist = selectedItemPos.Distance( unSelectedItemPos );
|
||||
|
||||
double minimumMarkerSeparationDistance =
|
||||
ADVANCED_CFG::GetCfg().m_MinimumMarkerSeparationDistance;
|
||||
|
||||
return dist <= minimumMarkerSeparationDistance;
|
||||
};
|
||||
|
||||
if( !node )
|
||||
{
|
||||
// list is being freed; don't do anything with null ptrs
|
||||
@ -635,7 +617,7 @@ void DIALOG_DRC::OnDRCItemSelected( wxDataViewEvent& aEvent )
|
||||
|
||||
for( BOARD_ITEM* boardMarkerItem : board->Markers() )
|
||||
{
|
||||
if( item->m_Uuid != boardMarkerItem->m_Uuid && IsOverlapping( item, boardMarkerItem ) )
|
||||
if( item->m_Uuid != boardMarkerItem->m_Uuid && isOverlapping( item, boardMarkerItem ) )
|
||||
{
|
||||
items.push_back( boardMarkerItem );
|
||||
}
|
||||
|
@ -365,16 +365,12 @@ void PCB_BASE_FRAME::FocusOnItems( std::vector<BOARD_ITEM*> aItems, PCB_LAYER_ID
|
||||
break;
|
||||
|
||||
case PCB_PAD_T:
|
||||
case PCB_MARKER_T:
|
||||
case PCB_VIA_T:
|
||||
FocusOnLocation( item->GetFocusPosition() );
|
||||
GetCanvas()->Refresh();
|
||||
return;
|
||||
|
||||
case PCB_MARKER_T:
|
||||
FocusOnLocation( item->GetFocusPosition() );
|
||||
GetCanvas()->Refresh();
|
||||
break;
|
||||
|
||||
case PCB_SHAPE_T:
|
||||
case PCB_FIELD_T:
|
||||
case PCB_TEXT_T:
|
||||
|
Loading…
Reference in New Issue
Block a user