Gerbview: better BestZoom calculation

This commit is contained in:
jean-pierre charras 2016-05-26 14:42:27 +02:00
parent 130c6e3639
commit 54b6f875a6
1 changed files with 9 additions and 7 deletions

View File

@ -231,17 +231,21 @@ double GERBVIEW_FRAME::BestZoom()
EDA_RECT bbox = GetGerberLayout()->ComputeBoundingBox();
// gives a minimal value to zoom, if no item in list
// gives a size to bbox (current page size), if no item in list
if( bbox.GetWidth() == 0 || bbox.GetHeight() == 0 )
return ZOOM_FACTOR( 200.0 );
{
wxSize pagesize = m_paper.GetSizeMils();
bbox.SetSize( wxSize( Mils2iu( pagesize.x ), Mils2iu( pagesize.y ) ) );
}
wxSize size = m_canvas->GetClientSize();
double x = (double) bbox.GetWidth() / (double) size.x;
double y = (double) bbox.GetHeight() / (double) size.y;
double x = (double) bbox.GetWidth() * 1.1 / (double) size.x;
double y = (double) bbox.GetHeight() * 1.1 / (double) size.y;
double best_zoom = std::max( x, y );
SetScrollCenterPosition( bbox.Centre() );
double best_zoom = std::max( x, y );
return best_zoom;
}
@ -260,9 +264,7 @@ void GERBVIEW_FRAME::LoadSettings( wxConfigBase* aCfg )
if( m_showBorderAndTitleBlock )
{
wxString pageType;
aCfg->Read( cfgShowPageSizeOption, &pageType, wxT( "GERBER" ) );
pageInfo.SetType( pageType );
}