Loading common/drawframe.cpp +27 −6 Original line number Diff line number Diff line Loading @@ -46,7 +46,10 @@ #include <math/box2.h> #include <wx/fontdlg.h> #ifdef KICAD_GAL #include <view/view.h> #include <gal/graphics_abstraction_layer.h> #endif /* KICAD_GAL */ /** * Definition for enabling and disabling scroll bar setting trace output. See the Loading @@ -67,7 +70,6 @@ BEGIN_EVENT_TABLE( EDA_DRAW_FRAME, EDA_BASE_FRAME ) EVT_MENU_OPEN( EDA_DRAW_FRAME::OnMenuOpen ) EVT_ACTIVATE( EDA_DRAW_FRAME::OnActivate ) EVT_MENU_RANGE( ID_ZOOM_IN, ID_ZOOM_REDRAW, EDA_DRAW_FRAME::OnZoom ) EVT_MENU( ID_SWITCH_CANVAS, EDA_DRAW_FRAME::OnZoom ) EVT_MENU_RANGE( ID_OFFCENTER_ZOOM_IN, ID_OFFCENTER_ZOOM_OUT, EDA_DRAW_FRAME::OnZoom ) EVT_MENU_RANGE( ID_POPUP_ZOOM_START_RANGE, ID_POPUP_ZOOM_END_RANGE, EDA_DRAW_FRAME::OnZoom ) Loading Loading @@ -943,22 +945,41 @@ void EDA_DRAW_FRAME::AdjustScrollBars( const wxPoint& aCenterPositionIU ) void EDA_DRAW_FRAME::UseGalCanvas( bool aEnable ) { if( aEnable && m_galCanvasActive ) { // When we switch between GAL based canvases, all we need is a refresh m_galCanvas->Refresh(); } if( !( aEnable ^ m_galCanvasActive ) ) return; KiGfx::VIEW* view = m_galCanvas->GetView(); KiGfx::GAL* gal = m_galCanvas->GetGAL(); double zoomFactor = gal->GetWorldScale() / gal->GetZoomFactor(); // Display the same view after canvas switching if( aEnable ) { m_canvas->Hide(); double zoom = 1 / ( zoomFactor * m_canvas->GetZoom() ); view->SetScale( zoom ); view->SetCenter( VECTOR2D( m_canvas->GetScreenCenterLogicalPosition() ) ); m_galCanvas->Show(); m_galCanvas->Raise(); m_galCanvas->Refresh(); } else { m_galCanvas->Hide(); double zoom = 1 / ( zoomFactor * view->GetScale() ); m_canvas->SetZoom( zoom ); VECTOR2D center = view->GetCenter(); RedrawScreen( wxPoint( center.x, center.y ), false ); m_canvas->Show(); m_canvas->Raise(); m_canvas->Refresh(); } m_galCanvasActive = aEnable; Loading common/drawpanel_gal.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -84,7 +84,11 @@ EDA_DRAW_PANEL_GAL::EDA_DRAW_PANEL_GAL( wxWindow* aParentWindow, wxWindowID aWin m_gal->SetZoomFactor( 1.0 ); m_gal->ComputeWorldScreenMatrix(); m_painter = new KiGfx::PCB_PAINTER( m_gal ); m_painter->SetGAL( m_gal ); m_view = new KiGfx::VIEW( true ); m_view->SetPainter( m_painter ); m_view->SetGAL( m_gal ); // View uses layers to display EDA_ITEMs (item may be displayed on several layers, for example Loading Loading @@ -150,4 +154,10 @@ void EDA_DRAW_PANEL_GAL::SwitchBackend( GalType aGalType, bool aUseShaders ) if( m_view ) m_view->SetGAL( m_gal ); if( m_painter ) m_painter->SetGAL( m_gal ); wxSize size = GetClientSize(); m_gal->ResizeScreen( size.GetX(), size.GetY() ); } common/zoom.cpp +0 −35 Original line number Diff line number Diff line Loading @@ -39,11 +39,6 @@ #include <hotkeys_basic.h> #include <menus_helpers.h> #include <base_units.h> #ifdef KICAD_GAL #include <class_drawpanel_gal.h> #include <gal/graphics_abstraction_layer.h> #include <view/view.h> #endif void EDA_DRAW_FRAME::RedrawScreen( const wxPoint& aCenterPoint, bool aWarpPointer ) Loading Loading @@ -167,36 +162,6 @@ void EDA_DRAW_FRAME::OnZoom( wxCommandEvent& event ) m_canvas->Refresh(); break; #ifdef KICAD_GAL // Switch canvas between standard and GAL-based case ID_SWITCH_CANVAS: { UseGalCanvas( !m_galCanvasActive ); KiGfx::VIEW* view = m_galCanvas->GetView(); KiGfx::GAL* gal = m_galCanvas->GetGAL(); double zoomFactor = gal->GetWorldScale() / gal->GetZoomFactor(); // Display the same view after canvas switching if( m_galCanvasActive ) { double zoom = 1 / ( zoomFactor * m_canvas->GetZoom() ); view->SetScale( zoom ); view->SetCenter( VECTOR2D( m_canvas->GetScreenCenterLogicalPosition() ) ); } else { double zoom = 1 / ( zoomFactor * view->GetScale() ); m_canvas->SetZoom( zoom ); VECTOR2D center = view->GetCenter(); RedrawScreen( wxPoint( center.x, center.y ), false ); } } break; #endif case ID_POPUP_ZOOM_CENTER: center = screen->GetCrossHairPosition(); RedrawScreen( center, true ); Loading include/class_drawpanel_gal.h +0 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,6 @@ public: enum GalType { GAL_TYPE_OPENGL, ///< OpenGL implementation GAL_TYPE_CAIRO, ///< Cairo implementation GAL_TYPE_WXDC ///< WXDC implementation }; EDA_DRAW_PANEL_GAL( wxWindow* aParentWindow, wxWindowID aWindowId, const wxPoint& aPosition, Loading include/id.h +0 −1 Original line number Diff line number Diff line Loading @@ -213,7 +213,6 @@ enum main_id ID_ZOOM_OUT, ID_ZOOM_PAGE, ID_ZOOM_REDRAW, ID_SWITCH_CANVAS, /* Panning command event IDs. */ ID_PAN_UP, Loading Loading
common/drawframe.cpp +27 −6 Original line number Diff line number Diff line Loading @@ -46,7 +46,10 @@ #include <math/box2.h> #include <wx/fontdlg.h> #ifdef KICAD_GAL #include <view/view.h> #include <gal/graphics_abstraction_layer.h> #endif /* KICAD_GAL */ /** * Definition for enabling and disabling scroll bar setting trace output. See the Loading @@ -67,7 +70,6 @@ BEGIN_EVENT_TABLE( EDA_DRAW_FRAME, EDA_BASE_FRAME ) EVT_MENU_OPEN( EDA_DRAW_FRAME::OnMenuOpen ) EVT_ACTIVATE( EDA_DRAW_FRAME::OnActivate ) EVT_MENU_RANGE( ID_ZOOM_IN, ID_ZOOM_REDRAW, EDA_DRAW_FRAME::OnZoom ) EVT_MENU( ID_SWITCH_CANVAS, EDA_DRAW_FRAME::OnZoom ) EVT_MENU_RANGE( ID_OFFCENTER_ZOOM_IN, ID_OFFCENTER_ZOOM_OUT, EDA_DRAW_FRAME::OnZoom ) EVT_MENU_RANGE( ID_POPUP_ZOOM_START_RANGE, ID_POPUP_ZOOM_END_RANGE, EDA_DRAW_FRAME::OnZoom ) Loading Loading @@ -943,22 +945,41 @@ void EDA_DRAW_FRAME::AdjustScrollBars( const wxPoint& aCenterPositionIU ) void EDA_DRAW_FRAME::UseGalCanvas( bool aEnable ) { if( aEnable && m_galCanvasActive ) { // When we switch between GAL based canvases, all we need is a refresh m_galCanvas->Refresh(); } if( !( aEnable ^ m_galCanvasActive ) ) return; KiGfx::VIEW* view = m_galCanvas->GetView(); KiGfx::GAL* gal = m_galCanvas->GetGAL(); double zoomFactor = gal->GetWorldScale() / gal->GetZoomFactor(); // Display the same view after canvas switching if( aEnable ) { m_canvas->Hide(); double zoom = 1 / ( zoomFactor * m_canvas->GetZoom() ); view->SetScale( zoom ); view->SetCenter( VECTOR2D( m_canvas->GetScreenCenterLogicalPosition() ) ); m_galCanvas->Show(); m_galCanvas->Raise(); m_galCanvas->Refresh(); } else { m_galCanvas->Hide(); double zoom = 1 / ( zoomFactor * view->GetScale() ); m_canvas->SetZoom( zoom ); VECTOR2D center = view->GetCenter(); RedrawScreen( wxPoint( center.x, center.y ), false ); m_canvas->Show(); m_canvas->Raise(); m_canvas->Refresh(); } m_galCanvasActive = aEnable; Loading
common/drawpanel_gal.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -84,7 +84,11 @@ EDA_DRAW_PANEL_GAL::EDA_DRAW_PANEL_GAL( wxWindow* aParentWindow, wxWindowID aWin m_gal->SetZoomFactor( 1.0 ); m_gal->ComputeWorldScreenMatrix(); m_painter = new KiGfx::PCB_PAINTER( m_gal ); m_painter->SetGAL( m_gal ); m_view = new KiGfx::VIEW( true ); m_view->SetPainter( m_painter ); m_view->SetGAL( m_gal ); // View uses layers to display EDA_ITEMs (item may be displayed on several layers, for example Loading Loading @@ -150,4 +154,10 @@ void EDA_DRAW_PANEL_GAL::SwitchBackend( GalType aGalType, bool aUseShaders ) if( m_view ) m_view->SetGAL( m_gal ); if( m_painter ) m_painter->SetGAL( m_gal ); wxSize size = GetClientSize(); m_gal->ResizeScreen( size.GetX(), size.GetY() ); }
common/zoom.cpp +0 −35 Original line number Diff line number Diff line Loading @@ -39,11 +39,6 @@ #include <hotkeys_basic.h> #include <menus_helpers.h> #include <base_units.h> #ifdef KICAD_GAL #include <class_drawpanel_gal.h> #include <gal/graphics_abstraction_layer.h> #include <view/view.h> #endif void EDA_DRAW_FRAME::RedrawScreen( const wxPoint& aCenterPoint, bool aWarpPointer ) Loading Loading @@ -167,36 +162,6 @@ void EDA_DRAW_FRAME::OnZoom( wxCommandEvent& event ) m_canvas->Refresh(); break; #ifdef KICAD_GAL // Switch canvas between standard and GAL-based case ID_SWITCH_CANVAS: { UseGalCanvas( !m_galCanvasActive ); KiGfx::VIEW* view = m_galCanvas->GetView(); KiGfx::GAL* gal = m_galCanvas->GetGAL(); double zoomFactor = gal->GetWorldScale() / gal->GetZoomFactor(); // Display the same view after canvas switching if( m_galCanvasActive ) { double zoom = 1 / ( zoomFactor * m_canvas->GetZoom() ); view->SetScale( zoom ); view->SetCenter( VECTOR2D( m_canvas->GetScreenCenterLogicalPosition() ) ); } else { double zoom = 1 / ( zoomFactor * view->GetScale() ); m_canvas->SetZoom( zoom ); VECTOR2D center = view->GetCenter(); RedrawScreen( wxPoint( center.x, center.y ), false ); } } break; #endif case ID_POPUP_ZOOM_CENTER: center = screen->GetCrossHairPosition(); RedrawScreen( center, true ); Loading
include/class_drawpanel_gal.h +0 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,6 @@ public: enum GalType { GAL_TYPE_OPENGL, ///< OpenGL implementation GAL_TYPE_CAIRO, ///< Cairo implementation GAL_TYPE_WXDC ///< WXDC implementation }; EDA_DRAW_PANEL_GAL( wxWindow* aParentWindow, wxWindowID aWindowId, const wxPoint& aPosition, Loading
include/id.h +0 −1 Original line number Diff line number Diff line Loading @@ -213,7 +213,6 @@ enum main_id ID_ZOOM_OUT, ID_ZOOM_PAGE, ID_ZOOM_REDRAW, ID_SWITCH_CANVAS, /* Panning command event IDs. */ ID_PAN_UP, Loading