mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-12 09:17:52 -06:00
Added zoom in/out using keys [i]/[o]
This commit is contained in:
parent
18c95c404c
commit
7913060869
2 changed files with 24 additions and 12 deletions
|
@ -4422,6 +4422,12 @@ void GLCanvas3D::on_char(wxKeyEvent& evt)
|
||||||
// key B/b
|
// key B/b
|
||||||
case 66:
|
case 66:
|
||||||
case 98: { zoom_to_bed(); break; }
|
case 98: { zoom_to_bed(); break; }
|
||||||
|
// key I/i
|
||||||
|
case 73:
|
||||||
|
case 105: { set_camera_zoom(1.0f); break; }
|
||||||
|
// key O/o
|
||||||
|
case 79:
|
||||||
|
case 111: { set_camera_zoom(-1.0f); break; }
|
||||||
#if ENABLE_MODIFIED_CAMERA_TARGET
|
#if ENABLE_MODIFIED_CAMERA_TARGET
|
||||||
// key Z/z
|
// key Z/z
|
||||||
case 90:
|
case 90:
|
||||||
|
@ -4486,18 +4492,7 @@ void GLCanvas3D::on_mouse_wheel(wxMouseEvent& evt)
|
||||||
|
|
||||||
// Calculate the zoom delta and apply it to the current zoom factor
|
// Calculate the zoom delta and apply it to the current zoom factor
|
||||||
float zoom = (float)evt.GetWheelRotation() / (float)evt.GetWheelDelta();
|
float zoom = (float)evt.GetWheelRotation() / (float)evt.GetWheelDelta();
|
||||||
zoom = std::max(std::min(zoom, 4.0f), -4.0f) / 10.0f;
|
set_camera_zoom(zoom);
|
||||||
zoom = get_camera_zoom() / (1.0f - zoom);
|
|
||||||
|
|
||||||
// Don't allow to zoom too far outside the scene.
|
|
||||||
float zoom_min = _get_zoom_to_bounding_box_factor(_max_bounding_box());
|
|
||||||
if (zoom_min > 0.0f)
|
|
||||||
zoom = std::max(zoom, zoom_min * 0.8f);
|
|
||||||
|
|
||||||
m_camera.zoom = zoom;
|
|
||||||
viewport_changed();
|
|
||||||
|
|
||||||
_refresh_if_shown_on_screen();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLCanvas3D::on_timer(wxTimerEvent& evt)
|
void GLCanvas3D::on_timer(wxTimerEvent& evt)
|
||||||
|
@ -5251,6 +5246,21 @@ void GLCanvas3D::do_mirror()
|
||||||
post_event(SimpleEvent(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS));
|
post_event(SimpleEvent(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GLCanvas3D::set_camera_zoom(float zoom)
|
||||||
|
{
|
||||||
|
zoom = std::max(std::min(zoom, 4.0f), -4.0f) / 10.0f;
|
||||||
|
zoom = get_camera_zoom() / (1.0f - zoom);
|
||||||
|
|
||||||
|
// Don't allow to zoom too far outside the scene.
|
||||||
|
float zoom_min = _get_zoom_to_bounding_box_factor(_max_bounding_box());
|
||||||
|
if (zoom_min > 0.0f)
|
||||||
|
zoom = std::max(zoom, zoom_min * 0.8f);
|
||||||
|
|
||||||
|
m_camera.zoom = zoom;
|
||||||
|
viewport_changed();
|
||||||
|
_refresh_if_shown_on_screen();
|
||||||
|
}
|
||||||
|
|
||||||
bool GLCanvas3D::_is_shown_on_screen() const
|
bool GLCanvas3D::_is_shown_on_screen() const
|
||||||
{
|
{
|
||||||
return (m_canvas != nullptr) ? m_canvas->IsShownOnScreen() : false;
|
return (m_canvas != nullptr) ? m_canvas->IsShownOnScreen() : false;
|
||||||
|
|
|
@ -905,6 +905,8 @@ public:
|
||||||
void do_flatten();
|
void do_flatten();
|
||||||
void do_mirror();
|
void do_mirror();
|
||||||
|
|
||||||
|
void set_camera_zoom(float zoom);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _is_shown_on_screen() const;
|
bool _is_shown_on_screen() const;
|
||||||
void _force_zoom_to_bed();
|
void _force_zoom_to_bed();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue