Fixed invalid dynamic_cast in Align Tool

Fixes: lp:1750107
* https://bugs.launchpad.net/kicad/+bug/1750107
This commit is contained in:
Maciej Suminski 2018-02-17 11:36:41 +01:00
parent 24fcdb00cc
commit 28f1209ce9
1 changed files with 10 additions and 2 deletions

View File

@ -128,31 +128,37 @@ bool SortLeftmostX( const std::pair<BOARD_ITEM*, EDA_RECT> left, const std::pair
return ( left.second.GetX() < right.second.GetX() );
}
bool SortRightmostX( const std::pair<BOARD_ITEM*, EDA_RECT> left, const std::pair<BOARD_ITEM*, EDA_RECT> right)
{
return ( left.second.GetRight() > right.second.GetRight() );
}
bool SortTopmostY( const std::pair<BOARD_ITEM*, EDA_RECT> left, const std::pair<BOARD_ITEM*, EDA_RECT> right)
{
return ( left.second.GetY() < right.second.GetY() );
}
bool SortCenterX( const std::pair<BOARD_ITEM*, EDA_RECT> left, const std::pair<BOARD_ITEM*, EDA_RECT> right)
{
return ( left.second.GetCenter().x < right.second.GetCenter().x );
}
bool SortCenterY( const std::pair<BOARD_ITEM*, EDA_RECT> left, const std::pair<BOARD_ITEM*, EDA_RECT> right)
{
return ( left.second.GetCenter().y < right.second.GetCenter().y );
}
bool SortBottommostY( const std::pair<BOARD_ITEM*, EDA_RECT> left, const std::pair<BOARD_ITEM*, EDA_RECT> right)
{
return ( left.second.GetBottom() > right.second.GetBottom() );
}
ALIGNMENT_RECTS GetBoundingBoxes( const SELECTION &sel )
{
const SELECTION& selection = sel;
@ -161,13 +167,15 @@ ALIGNMENT_RECTS GetBoundingBoxes( const SELECTION &sel )
for( auto item : selection )
{
BOARD_ITEM* boardItem = static_cast<BOARD_ITEM*>( item );
if( item->Type() == PCB_MODULE_T )
{
rects.emplace_back( std::make_pair( dynamic_cast<BOARD_ITEM*>( item ), dynamic_cast<MODULE*>( item )->GetFootprintRect() ) );
rects.emplace_back( std::make_pair( boardItem, static_cast<MODULE*>( item )->GetFootprintRect() ) );
}
else
{
rects.emplace_back( std::make_pair( dynamic_cast<BOARD_ITEM*>( item ), dynamic_cast<MODULE*>( item )->GetBoundingBox() ) );
rects.emplace_back( std::make_pair( boardItem, item->GetBoundingBox() ) );
}
}
return rects;