From 4a3743e7ddea76d60de342eb6beb72d57de121df Mon Sep 17 00:00:00 2001 From: Electro707 <jamalnetemail@gmail.com> Date: Mon, 8 Jun 2020 21:35:40 +0000 Subject: [PATCH] 3D viewer flip action --- .gitignore | 5 +++++ 3d-viewer/3d_canvas/eda_3d_canvas.cpp | 7 +++++++ 3d-viewer/3d_viewer/3d_toolbar.cpp | 3 +++ 3d-viewer/3d_viewer/tools/3d_actions.cpp | 6 ++++++ 3d-viewer/3d_viewer/tools/3d_actions.h | 1 + 3d-viewer/3d_viewer/tools/3d_controller.cpp | 4 ++++ 3d-viewer/3d_viewer_id.h | 1 + 7 files changed, 27 insertions(+) diff --git a/.gitignore b/.gitignore index 1deae81416..e444e8e9ac 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,8 @@ CMakeSettings.json # Sublime Text *.sublime-* + +# KDevelop +.kdev4/ +*.kdev4 + diff --git a/3d-viewer/3d_canvas/eda_3d_canvas.cpp b/3d-viewer/3d_canvas/eda_3d_canvas.cpp index ead38965f9..03ba99efd2 100644 --- a/3d-viewer/3d_canvas/eda_3d_canvas.cpp +++ b/3d-viewer/3d_canvas/eda_3d_canvas.cpp @@ -948,6 +948,13 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode ) request_start_moving_camera( glm::min( glm::max( m_camera.ZoomGet(), 0.5f ), 1.125f ) ); return true; + case ID_VIEW3D_FLIP: + m_camera.SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER ); + m_camera.SetT0_and_T1_current_T(); + m_camera.RotateY_T1( glm::radians( 179.999f ) ); + request_start_moving_camera(); + return true; + default: return false; } diff --git a/3d-viewer/3d_viewer/3d_toolbar.cpp b/3d-viewer/3d_viewer/3d_toolbar.cpp index c62940c2e7..f2fa876bed 100644 --- a/3d-viewer/3d_viewer/3d_toolbar.cpp +++ b/3d-viewer/3d_viewer/3d_toolbar.cpp @@ -87,6 +87,9 @@ void EDA_3D_VIEWER::ReCreateMainToolbar() m_mainToolBar->Add( EDA_3D_ACTIONS::rotateZCW ); m_mainToolBar->Add( EDA_3D_ACTIONS::rotateZCCW ); + KiScaledSeparator( m_mainToolBar, this ); + m_mainToolBar->Add( EDA_3D_ACTIONS::flipView ); + KiScaledSeparator( m_mainToolBar, this ); m_mainToolBar->Add( EDA_3D_ACTIONS::moveLeft ); m_mainToolBar->Add( EDA_3D_ACTIONS::moveRight ); diff --git a/3d-viewer/3d_viewer/tools/3d_actions.cpp b/3d-viewer/3d_viewer/tools/3d_actions.cpp index 8e2c8e24ec..a32661ece9 100644 --- a/3d-viewer/3d_viewer/tools/3d_actions.cpp +++ b/3d-viewer/3d_viewer/tools/3d_actions.cpp @@ -109,6 +109,12 @@ TOOL_ACTION EDA_3D_ACTIONS::resetView( "3DViewer.Control.resetView", _( "Reset view" ), _( "Reset view" ), nullptr, AF_NONE, (void*) ID_VIEW3D_RESET ); +TOOL_ACTION EDA_3D_ACTIONS::flipView( "3DViewer.Control.flipView", + AS_ACTIVE, + 0, "", + _( "Flip Board" ), _( "Flip the board view" ), + reload2_xpm, AF_NONE, (void*) ID_VIEW3D_FLIP ); + TOOL_ACTION EDA_3D_ACTIONS::toggleOrtho( "3DViewer.Control.toggleOrtho", AS_GLOBAL, 0, "", _( "Toggle orthographic projection" ), _( "Enable/disable orthographic projection" ), diff --git a/3d-viewer/3d_viewer/tools/3d_actions.h b/3d-viewer/3d_viewer/tools/3d_actions.h index 51f3d708f7..6b8d1504e5 100644 --- a/3d-viewer/3d_viewer/tools/3d_actions.h +++ b/3d-viewer/3d_viewer/tools/3d_actions.h @@ -56,6 +56,7 @@ public: static TOOL_ACTION moveDown; static TOOL_ACTION homeView; static TOOL_ACTION resetView; + static TOOL_ACTION flipView; static TOOL_ACTION toggleOrtho; static TOOL_ACTION viewFront; diff --git a/3d-viewer/3d_viewer/tools/3d_controller.cpp b/3d-viewer/3d_viewer/tools/3d_controller.cpp index 5fd6818c45..f653bf8762 100644 --- a/3d-viewer/3d_viewer/tools/3d_controller.cpp +++ b/3d-viewer/3d_viewer/tools/3d_controller.cpp @@ -51,6 +51,9 @@ bool EDA_3D_CONTROLLER::Init() ctxMenu.AddItem( EDA_3D_ACTIONS::viewFront, SELECTION_CONDITIONS::ShowAlways ); ctxMenu.AddItem( EDA_3D_ACTIONS::viewBack, SELECTION_CONDITIONS::ShowAlways ); + ctxMenu.AddSeparator(); + ctxMenu.AddItem( EDA_3D_ACTIONS::flipView, SELECTION_CONDITIONS::ShowAlways ); + ctxMenu.AddSeparator(); ctxMenu.AddItem( EDA_3D_ACTIONS::moveLeft, SELECTION_CONDITIONS::ShowAlways ); ctxMenu.AddItem( EDA_3D_ACTIONS::moveRight, SELECTION_CONDITIONS::ShowAlways ); @@ -295,6 +298,7 @@ void EDA_3D_CONTROLLER::setTransitions() Go( &EDA_3D_CONTROLLER::ViewControl, EDA_3D_ACTIONS::pivotCenter.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ViewControl, EDA_3D_ACTIONS::homeView.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ViewControl, EDA_3D_ACTIONS::resetView.MakeEvent() ); + Go( &EDA_3D_CONTROLLER::ViewControl, EDA_3D_ACTIONS::flipView.MakeEvent() ); Go( &EDA_3D_CONTROLLER::RotateView, EDA_3D_ACTIONS::rotateXCW.MakeEvent() ); Go( &EDA_3D_CONTROLLER::RotateView, EDA_3D_ACTIONS::rotateXCCW.MakeEvent() ); Go( &EDA_3D_CONTROLLER::RotateView, EDA_3D_ACTIONS::rotateYCW.MakeEvent() ); diff --git a/3d-viewer/3d_viewer_id.h b/3d-viewer/3d_viewer_id.h index 596d170963..1a2773e86b 100644 --- a/3d-viewer/3d_viewer_id.h +++ b/3d-viewer/3d_viewer_id.h @@ -31,6 +31,7 @@ enum id_3dview_frm ID_VIEW3D_FRONT, ID_VIEW3D_BACK, ID_VIEW3D_RESET, + ID_VIEW3D_FLIP, ID_TOOL_SCREENCOPY_TOCLIBBOARD, ID_MENU3D_COLOR, ID_MENU3D_BGCOLOR,