Fixed bounding box computation for EDIT_POINTS class

This commit is contained in:
Maciej Suminski 2017-02-08 08:45:52 +01:00 committed by Maciej Suminski
parent 0dc11936ad
commit 6c5e5c27e2
2 changed files with 40 additions and 6 deletions

View File

@ -1,7 +1,7 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2014 CERN
* Copyright (C) 2014-2017 CERN
* @author Maciej Suminski <maciej.suminski@cern.ch>
*
* This program is free software; you can redistribute it and/or
@ -203,6 +203,43 @@ EDIT_LINE* EDIT_POINTS::Next( const EDIT_LINE& aLine )
}
const BOX2I EDIT_POINTS::ViewBBox() const
{
BOX2I box;
bool empty = true;
for( const auto& point : m_points )
{
if( empty )
{
box.SetOrigin( point.GetPosition() );
empty = false;
}
else
{
box.Merge( point.GetPosition() );
}
}
for( const auto& line : m_lines )
{
if( empty )
{
box.SetOrigin( line.GetOrigin().GetPosition() );
box.SetEnd( line.GetEnd().GetPosition() );
empty = false;
}
else
{
box.Merge( line.GetOrigin().GetPosition() );
box.Merge( line.GetEnd().GetPosition() );
}
}
return box;
}
void EDIT_POINTS::ViewDraw( int aLayer, KIGFX::VIEW* aView ) const
{
auto gal = aView->GetGAL();

View File

@ -1,7 +1,7 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2014 CERN
* Copyright (C) 2014-2017 CERN
* @author Maciej Suminski <maciej.suminski@cern.ch>
*
* This program is free software; you can redistribute it and/or
@ -493,10 +493,7 @@ public:
}
///> @copydoc VIEW_ITEM::ViewBBox()
virtual const BOX2I ViewBBox() const override
{
return m_parent->ViewBBox();
}
virtual const BOX2I ViewBBox() const override;
///> @copydoc VIEW_ITEM::ViewDraw()
virtual void ViewDraw( int aLayer, KIGFX::VIEW* aView ) const override;