GBR_SCREEN::GBR_SCREEN( const wxSize& aPageSizeIU ) : BASE_SCREEN( SCREEN_T ) { for( unsigned i = 0; i < DIM( gbrZoomList ); ++i ) m_ZoomList.push_back( gbrZoomList[i] ); for( unsigned i = 0; i < DIM( gbrGridList ); ++i ) AddGrid( gbrGridList[i] ); // Set the working grid size to a reasonable value (in 1/10000 inch) SetGrid( DMIL_GRID( 500 ) ); m_Active_Layer = B_Cu; // default active layer = bottom layer SetZoom( ZOOM_FACTOR( 350 ) ); // a default value for zoom InitDataPoints( aPageSizeIU ); }
double GERBVIEW_FRAME::BestZoom() { GERBER_DRAW_ITEM* item = GetGerberLayout()->m_Drawings; // gives a minimal value to zoom, if no item in list if( item == NULL ) return ZOOM_FACTOR( 350.0 ); EDA_RECT bbox = GetGerberLayout()->ComputeBoundingBox(); wxSize size = m_canvas->GetClientSize(); double x = (double) bbox.GetWidth() / (double) size.x; double y = (double) bbox.GetHeight() / (double) size.y; SetScrollCenterPosition( bbox.Centre() ); double best_zoom = std::max( x, y ); return best_zoom; }
PL_EDITOR_SCREEN::PL_EDITOR_SCREEN( const wxSize& aPageSizeIU ) : BASE_SCREEN( SCREEN_T ) { for( unsigned i = 0; i < DIM( pl_editorZoomList ); ++i ) m_ZoomList.push_back( pl_editorZoomList[i] ); for( unsigned i = 0; i < DIM( pl_editorGridList ); ++i ) AddGrid( pl_editorGridList[i] ); // pl_editor uses the same frame position as schematic and board editors m_Center = false; // Set the working grid size to a reasonable value SetGrid( MM_GRID( 1.0 ) ); SetZoom( ZOOM_FACTOR( 350 ) ); // a default value for zoom InitDataPoints( aPageSizeIU ); m_NumberOfScreens = 2; }
PCB_SCREEN::PCB_SCREEN( const wxSize& aPageSizeIU ) : BASE_SCREEN( SCREEN_T ) { // D(wxSize displayz = wxGetDisplaySize();) // D(printf( "displayz x:%d y:%d lastZoomFactor: %.16g\n", displayz.x, displayz.y, pcbZoomList[DIM(pcbZoomList)-1] );) for( unsigned i = 0; i < DIM( pcbZoomList ); ++i ) m_ZoomList.push_back( pcbZoomList[i] ); for( unsigned i = 0; i < DIM( pcbGridList ); ++i ) AddGrid( pcbGridList[i] ); // Set the working grid size to a reasonable value (in 1/10000 inch) SetGrid( DMIL_GRID( 500 ) ); m_Active_Layer = B_Cu; // default active layer = bottom layer m_Route_Layer_TOP = F_Cu; // default layers pair for vias (bottom to top) m_Route_Layer_BOTTOM = B_Cu; SetZoom( ZOOM_FACTOR( 120 ) ); // a default value for zoom InitDataPoints( aPageSizeIU ); }
GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ): EDA_DRAW_FRAME( aKiway, aParent, FRAME_GERBER, wxT( "GerbView" ), wxDefaultPosition, wxDefaultSize, KICAD_DEFAULT_DRAWFRAME_STYLE, GERBVIEW_FRAME_NAME ) { m_colorsSettings = &g_ColorsSettings; m_gerberLayout = NULL; m_zoomLevelCoeff = ZOOM_FACTOR( 110 ); // Adjusted to roughly displays zoom level = 1 // when the screen shows a 1:1 image // obviously depends on the monitor, // but this is an acceptable value PAGE_INFO pageInfo( wxT( "GERBER" ) ); SetPageSettings( pageInfo ); m_show_layer_manager_tools = true; m_showAxis = true; // true to show X and Y axis on screen m_showBorderAndTitleBlock = false; // true for reference drawings. m_HotkeysZoomAndGridList = GerbviewHokeysDescr; m_SelLayerBox = NULL; m_DCodeSelector = NULL; m_displayMode = 0; m_drillFileHistory.SetBaseId( ID_GERBVIEW_DRILL_FILE1 ); if( m_canvas ) m_canvas->SetEnableBlockCommands( true ); // Give an icon wxIcon icon; icon.CopyFromBitmap( KiBitmap( icon_gerbview_xpm ) ); SetIcon( icon ); SetLayout( new GBR_LAYOUT() ); SetVisibleLayers( -1 ); // All draw layers visible. SetScreen( new GBR_SCREEN( GetPageSettings().GetSizeIU() ) ); // Create the PCB_LAYER_WIDGET *after* SetLayout(): wxFont font = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ); int pointSize = font.GetPointSize(); int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y ); if( screenHeight <= 900 ) pointSize = (pointSize * 8) / 10; m_LayersManager = new GERBER_LAYER_WIDGET( this, m_canvas, pointSize ); // LoadSettings() *after* creating m_LayersManager, because LoadSettings() // initialize parameters in m_LayersManager LoadSettings( config() ); SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); if( m_LastGridSizeId < 0 ) m_LastGridSizeId = 0; if( m_LastGridSizeId > ID_POPUP_GRID_LEVEL_0_0_1MM-ID_POPUP_GRID_LEVEL_1000 ) m_LastGridSizeId = ID_POPUP_GRID_LEVEL_0_0_1MM-ID_POPUP_GRID_LEVEL_1000; GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId ); ReCreateMenuBar(); ReCreateHToolbar(); ReCreateOptToolbar(); m_auimgr.SetManagedWindow( this ); EDA_PANEINFO horiz; horiz.HorizontalToolbarPane(); EDA_PANEINFO vert; vert.VerticalToolbarPane(); EDA_PANEINFO mesg; mesg.MessageToolbarPane(); // Create a wxAuiPaneInfo for the Layers Manager, not derived from the template. // the Layers Manager is floatable, but initially docked at far right EDA_PANEINFO lyrs; lyrs.LayersToolbarPane(); lyrs.MinSize( m_LayersManager->GetBestSize() ); lyrs.BestSize( m_LayersManager->GetBestSize() ); lyrs.Caption( _( "Visibles" ) ); lyrs.TopDockable( false ).BottomDockable( false ); if( m_mainToolBar ) m_auimgr.AddPane( m_mainToolBar, wxAuiPaneInfo( horiz ).Name( wxT( "m_mainToolBar" ) ).Top().Row( 0 ) ); if( m_drawToolBar ) m_auimgr.AddPane( m_drawToolBar, wxAuiPaneInfo( vert ).Name( wxT( "m_drawToolBar" ) ).Right().Row( 1 ) ); m_auimgr.AddPane( m_LayersManager, lyrs.Name( wxT( "m_LayersManagerToolBar" ) ).Right().Layer( 0 ) ); if( m_optionsToolBar ) m_auimgr.AddPane( m_optionsToolBar, wxAuiPaneInfo( vert ).Name( wxT( "m_optionsToolBar" ) ).Left() ); if( m_canvas ) m_auimgr.AddPane( m_canvas, wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() ); if( m_messagePanel ) m_auimgr.AddPane( m_messagePanel, wxAuiPaneInfo( mesg ).Name( wxT( "MsgPanel" ) ).Bottom().Layer( 10 ) ); ReFillLayerWidget(); // this is near end because contents establish size m_LayersManager->ReFillRender(); // Update colors in Render after the config is read m_auimgr.Update(); setActiveLayer( 0, true ); Zoom_Automatique( false ); // Gives a default zoom value }
/** Default Pcbnew zoom values. Limited to 19 values to keep a decent size to menus. Roughly a 1.5 progression. The last 2 values are handy when somebody uses a library import of a module (or foreign data) which has a bad coordinate. Also useful in GerbView for this reason. Zoom 5 and 10 can create artefacts when drawing (integer overflow in low level graphic functions ) */ #define DEFAULT_ZOOM ZOOM_FACTOR( 120 ) static const double pcbZoomList[] = { ZOOM_FACTOR( 0.1 ), ZOOM_FACTOR( 0.2 ), ZOOM_FACTOR( 0.3 ), ZOOM_FACTOR( 0.5 ), ZOOM_FACTOR( 1.0 ), ZOOM_FACTOR( 1.5 ), ZOOM_FACTOR( 2.0 ), ZOOM_FACTOR( 3.0 ), ZOOM_FACTOR( 4.5 ), ZOOM_FACTOR( 6.0 ), ZOOM_FACTOR( 8.0 ), ZOOM_FACTOR( 11.0 ), ZOOM_FACTOR( 15.0 ), ZOOM_FACTOR( 22.0 ), ZOOM_FACTOR( 35.0 ), ZOOM_FACTOR( 50.0 ),
x * IU_PER_MM ) /** Default Pcbnew zoom values. Limited to 19 values to keep a decent size to menus. Roughly a 1.5 progression. The last 2 values are handy when somebody uses a library import of a module (or foreign data) which has a bad coordinate. Also useful in GerbView for this reason. Zoom 5 and 10 can create artefacts when drawing (integer overflow in low level graphic functions ) */ static const double pcbZoomList[] = { ZOOM_FACTOR( 0.1 ), ZOOM_FACTOR( 0.2 ), ZOOM_FACTOR( 0.3 ), ZOOM_FACTOR( 0.5 ), ZOOM_FACTOR( 1.0 ), ZOOM_FACTOR( 1.5 ), ZOOM_FACTOR( 2.0 ), ZOOM_FACTOR( 3.0 ), ZOOM_FACTOR( 4.5 ), ZOOM_FACTOR( 7.0 ), ZOOM_FACTOR( 10.0 ), ZOOM_FACTOR( 15.0 ), ZOOM_FACTOR( 22.0 ), ZOOM_FACTOR( 35.0 ), ZOOM_FACTOR( 50.0 ), ZOOM_FACTOR( 80.0 ),
#include <base_units.h> #include <gerbview_id.h> #define DMIL_GRID( x ) wxRealPoint( x * IU_PER_DECIMILS,\ x * IU_PER_DECIMILS ) #define MM_GRID( x ) wxRealPoint( x * IU_PER_MM,\ x * IU_PER_MM ) /** Default GerbView zoom values. Roughly a 1.5 progression. */ static const double gbrZoomList[] = { ZOOM_FACTOR( 0.5 ), ZOOM_FACTOR( 0.75 ), ZOOM_FACTOR( 1.0 ), ZOOM_FACTOR( 1.5 ), ZOOM_FACTOR( 2.0 ), ZOOM_FACTOR( 3.0 ), ZOOM_FACTOR( 4.5 ), ZOOM_FACTOR( 7.0 ), ZOOM_FACTOR( 10.0 ), ZOOM_FACTOR( 15.0 ), ZOOM_FACTOR( 22.0 ), ZOOM_FACTOR( 35.0 ), ZOOM_FACTOR( 50.0 ), ZOOM_FACTOR( 80.0 ), ZOOM_FACTOR( 110.0 ), ZOOM_FACTOR( 150.0 ),
#include <class_pl_editor_screen.h> #include <base_units.h> #include <pl_editor_id.h> #define MM_GRID( x ) wxRealPoint( x * IU_PER_MM, x * IU_PER_MM ) #define ZOOM_FACTOR( x ) ( x * IU_PER_MM / 1000 ) /** Default zoom values. Roughly a 1.5 progression. */ static const double pl_editorZoomList[] = { ZOOM_FACTOR( 5 ), ZOOM_FACTOR( 7.0 ), ZOOM_FACTOR( 10.0 ), ZOOM_FACTOR( 15.0 ), ZOOM_FACTOR( 22.0 ), ZOOM_FACTOR( 35.0 ), ZOOM_FACTOR( 50.0 ), ZOOM_FACTOR( 80.0 ), ZOOM_FACTOR( 120.0 ), ZOOM_FACTOR( 160.0 ), ZOOM_FACTOR( 230.0 ), ZOOM_FACTOR( 290.0 ), ZOOM_FACTOR( 380.0 ), ZOOM_FACTOR( 500.0 ), ZOOM_FACTOR( 750.0 ), ZOOM_FACTOR( 1000.0 ),