diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp index 5c6344778..a0c7efb2f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp @@ -715,11 +715,6 @@ void GLGizmoAdvancedCut::on_render_for_picking() GLGizmoRotate3D::on_render_for_picking(); BoundingBoxf3 box = m_parent.get_selection().get_bounding_box(); -#if ENABLE_FIXED_GRABBER - float mean_size = (float) (GLGizmoBase::Grabber::FixedGrabberSize); -#else - float mean_size = (float) ((box.size().x() + box.size().y() + box.size().z()) / 3.0); -#endif // pick grabber { color = picking_color_component(0); @@ -727,14 +722,14 @@ void GLGizmoAdvancedCut::on_render_for_picking() m_move_z_grabber.color[1] = color[1]; m_move_z_grabber.color[2] = color[2]; m_move_z_grabber.color[3] = color[3]; - m_move_z_grabber.render_for_picking(mean_size); + m_move_z_grabber.render_for_picking(); if (m_cut_mode == CutMode::cutTongueAndGroove) { color = picking_color_component(1); m_move_x_grabber.color[0] = color[0]; m_move_x_grabber.color[1] = color[1]; m_move_x_grabber.color[2] = color[2]; m_move_x_grabber.color[3] = color[3]; - m_move_x_grabber.render_for_picking(mean_size); + m_move_x_grabber.render_for_picking(); } } @@ -1209,8 +1204,8 @@ void GLGizmoAdvancedCut::render_cut_plane_and_grabbers() // BBS set to fixed size grabber // float fullsize = 2 * (dragging ? get_dragging_half_size(size) : get_half_size(size)); - float fullsize = 8.0f; - if (GLGizmoBase::INV_ZOOM > 0) { fullsize = m_move_z_grabber.FixedGrabberSize * GLGizmoBase::INV_ZOOM; } + float fullsize = get_grabber_size(); + GLModel &cube_z = m_move_z_grabber.get_cube(); GLModel &cube_x = m_move_x_grabber.get_cube(); if (is_render_z_grabber) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp index 47a3ed541..09c71b850 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp @@ -79,7 +79,7 @@ GLGizmoBase::Grabber::Grabber() hover_color = GRABBER_HOVER_COL; } -void GLGizmoBase::Grabber::render(bool hover, float size) const +void GLGizmoBase::Grabber::render(bool hover) const { std::array render_color; if (hover) { @@ -88,7 +88,7 @@ void GLGizmoBase::Grabber::render(bool hover, float size) const else render_color = color; - render(size, render_color, false); + render(render_color, false); } float GLGizmoBase::Grabber::get_half_size(float size) const @@ -114,7 +114,7 @@ GLModel& GLGizmoBase::Grabber::get_cube() return cube; } -void GLGizmoBase::Grabber::render(float size, const std::array& render_color, bool picking) const +void GLGizmoBase::Grabber::render(const std::array& render_color, bool picking) const { if (! cube_initialized) { // This cannot be done in constructor, OpenGL is not yet @@ -127,11 +127,7 @@ void GLGizmoBase::Grabber::render(float size, const std::array& render //BBS set to fixed size grabber //float fullsize = 2 * (dragging ? get_dragging_half_size(size) : get_half_size(size)); - float fullsize = 8.0f; - if (GLGizmoBase::INV_ZOOM > 0) { - fullsize = FixedGrabberSize * GLGizmoBase::INV_ZOOM; - } - fullsize = fullsize * Grabber::GrabberSizeFactor; + float fullsize = get_grabber_size(); const_cast(&cube)->set_color(-1, render_color); @@ -256,6 +252,16 @@ void GLGizmoBase::render_cross_mark(const Vec3f &target, bool is_single) glsafe(::glEnd()); } +float GLGizmoBase::get_grabber_size() +{ + float grabber_size = 8.0f; + if (GLGizmoBase::INV_ZOOM > 0) { + grabber_size = GLGizmoBase::Grabber::FixedGrabberSize * GLGizmoBase::INV_ZOOM; + grabber_size = grabber_size * GLGizmoBase::Grabber::GrabberSizeFactor; + } + return grabber_size; +} + GLGizmoBase::GLGizmoBase(GLCanvas3D &parent, const std::string &icon_filename, unsigned int sprite_id) : m_parent(parent) , m_group_id(-1) @@ -435,13 +441,13 @@ std::array GLGizmoBase::picking_color_component(unsigned int id) const void GLGizmoBase::render_grabbers(const BoundingBoxf3& box) const { #if ENABLE_FIXED_GRABBER - render_grabbers((float)(GLGizmoBase::Grabber::FixedGrabberSize)); + render_grabbers(); #else render_grabbers((float)((box.size().x() + box.size().y() + box.size().z()) / 3.0)); #endif } -void GLGizmoBase::render_grabbers(float size) const +void GLGizmoBase::render_grabbers() const { GLShaderProgram* shader = wxGetApp().get_shader("gouraud_light"); if (shader == nullptr) @@ -450,24 +456,18 @@ void GLGizmoBase::render_grabbers(float size) const shader->set_uniform("emission_factor", 0.1f); for (int i = 0; i < (int)m_grabbers.size(); ++i) { if (m_grabbers[i].enabled) - m_grabbers[i].render(m_hover_id == i, size); + m_grabbers[i].render(m_hover_id == i); } shader->stop_using(); } void GLGizmoBase::render_grabbers_for_picking(const BoundingBoxf3& box) const { -#if ENABLE_FIXED_GRABBER - float mean_size = (float)(GLGizmoBase::Grabber::FixedGrabberSize); -#else - float mean_size = (float)((box.size().x() + box.size().y() + box.size().z()) / 3.0); -#endif - for (unsigned int i = 0; i < (unsigned int)m_grabbers.size(); ++i) { if (m_grabbers[i].enabled) { std::array color = picking_color_component(i); m_grabbers[i].color = color; - m_grabbers[i].render_for_picking(mean_size); + m_grabbers[i].render_for_picking(); } } } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp index 64dd35259..8a0f25754 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp @@ -79,15 +79,15 @@ public: Grabber(); - void render(bool hover, float size) const; - void render_for_picking(float size) const { render(size, color, true); } + void render(bool hover) const; + void render_for_picking() const { render(color, true); } float get_half_size(float size) const; float get_dragging_half_size(float size) const; GLModel& get_cube(); private: - void render(float size, const std::array& render_color, bool picking) const; + void render(const std::array& render_color, bool picking) const; GLModel cube; bool cube_initialized = false; @@ -173,6 +173,8 @@ protected: bool render_combo(const std::string &label, const std::vector &lines, size_t &selection_idx, float label_width, float item_width); void render_cross_mark(const Vec3f& target,bool is_single =false); + static float get_grabber_size(); + public: GLGizmoBase(GLCanvas3D& parent, const std::string& icon_filename, @@ -268,7 +270,7 @@ protected: // No check is made for clashing with other picking color (i.e. GLVolumes) std::array picking_color_component(unsigned int id) const; void render_grabbers(const BoundingBoxf3& box) const; - void render_grabbers(float size) const; + void render_grabbers() const; void render_grabbers_for_picking(const BoundingBoxf3& box) const; std::string format(float value, unsigned int decimals) const; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp index 0e38493ce..95d73a7b8 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp @@ -262,8 +262,8 @@ double GLGizmoMove3D::calc_projection(const UpdateData& data) const void GLGizmoMove3D::render_grabber_extension(Axis axis, const BoundingBoxf3& box, bool picking) const { - double size = 0.75 * GLGizmoBase::Grabber::FixedGrabberSize * GLGizmoBase::INV_ZOOM; - size = size * GLGizmoBase::Grabber::GrabberSizeFactor; + double size = get_grabber_size() * 0.75;//0.75 for arrow show + std::array color = m_grabbers[axis].color; if (!picking && m_hover_id != -1) { if (m_hover_id == axis) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp index 3ccef182f..f2b522311 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp @@ -314,8 +314,7 @@ void GLGizmoRotate::render_grabber(const BoundingBoxf3& box) const void GLGizmoRotate::render_grabber_extension(const BoundingBoxf3& box, bool picking) const { - double size = 0.75 * GLGizmoBase::Grabber::FixedGrabberSize * GLGizmoBase::INV_ZOOM; - size = size * GLGizmoBase::Grabber::GrabberSizeFactor; + double size = get_grabber_size() * 0.75;//0.75 for arrow show std::array color = m_grabbers[0].color; if (!picking && m_hover_id != -1) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp index e12e4e562..8b1ee538f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp @@ -601,8 +601,7 @@ void GLGizmoSVG::on_render() render_color = SVG_Move_GrabberHoverColor; } else render_color = SVG_Move_GrabberColor; - float fullsize = 8.0f; - if (GLGizmoBase::INV_ZOOM > 0) { fullsize = m_move_grabber.FixedGrabberSize * GLGizmoBase::INV_ZOOM; } + float fullsize = get_grabber_size(); m_move_grabber.center = tran.get_offset(); Transform3d rotate_matrix = tran.get_rotation_matrix(); Transform3d cube_mat = Geometry::translation_transform(m_move_grabber.center) * rotate_matrix * Geometry::scale_transform(fullsize); @@ -633,8 +632,7 @@ void GLGizmoSVG::on_render_for_picking() m_move_grabber.color[1] = color[1]; m_move_grabber.color[2] = color[2]; m_move_grabber.color[3] = color[3]; - float mean_size = (float) (GLGizmoBase::Grabber::FixedGrabberSize); - m_move_grabber.render_for_picking(mean_size); + m_move_grabber.render_for_picking(); } //BBS: add input window for move diff --git a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp index 849d665a2..f06c0376f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp @@ -250,7 +250,6 @@ void GLGizmoScale3D::on_render() glsafe(::glLineWidth((m_hover_id != -1) ? 2.0f : 1.5f)); - float grabber_mean_size = (float) ((m_bounding_box.size().x() + m_bounding_box.size().y() + m_bounding_box.size().z()) / 3.0); glsafe(::glPushMatrix()); glsafe(::glMultMatrixd(m_grabbers_tran.get_matrix().data())); //draw connections @@ -272,7 +271,7 @@ void GLGizmoScale3D::on_render() render_grabbers_connection(9, 6); // draw grabbers - render_grabbers(grabber_mean_size); + render_grabbers(); glsafe(::glPopMatrix()); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index abf9370d8..75cd2c2dd 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -596,8 +596,7 @@ void GLGizmoText::on_render() render_color = TEXT_GRABBER_HOVER_COLOR; } else render_color = TEXT_GRABBER_COLOR; - float fullsize = 8.0f; - if (GLGizmoBase::INV_ZOOM > 0) { fullsize = m_move_grabber.FixedGrabberSize * GLGizmoBase::INV_ZOOM; } + float fullsize = get_grabber_size(); m_move_grabber.center = tran.get_offset(); Transform3d rotate_matrix = tran.get_rotation_matrix(); Transform3d cube_mat = Geometry::translation_transform(m_move_grabber.center) * rotate_matrix * Geometry::scale_transform(fullsize); @@ -629,8 +628,7 @@ void GLGizmoText::on_render_for_picking() m_move_grabber.color[1] = color[1]; m_move_grabber.color[2] = color[2]; m_move_grabber.color[3] = color[3]; - float mean_size = (float) (GLGizmoBase::Grabber::FixedGrabberSize); - m_move_grabber.render_for_picking(mean_size); + m_move_grabber.render_for_picking(); } }