From 4231da88fa934b41eca589017576cdd428f74604 Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Tue, 25 Feb 2025 11:49:25 +0800 Subject: [PATCH] ENH:Optimize SVG display interface for mac jira: none Change-Id: I7592a12442f86e4d4b5bd2c1426e3a327de42d45 --- src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp | 37 ++++++++++++++-------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp index 104c236e4..ca885b986 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp @@ -1318,7 +1318,6 @@ void GLGizmoSVG::draw_window() return; ImGui::Separator(); - ImGui::Indent(m_gui_cfg->icon_width); draw_depth(); draw_size(); @@ -1332,14 +1331,14 @@ void GLGizmoSVG::draw_window() draw_mirroring(); //draw_face_the_camera(); - ImGui::Unindent(m_gui_cfg->icon_width); if (!m_volume->is_the_only_one_part()) { ImGui::Separator(); draw_model_type(); } if (!m_can_use_surface) { - m_imgui->text(_L("Tip:If you want to place svg file on another part surface,\nyou should select part first, and then drag svg file to the part surface.")); + m_imgui->text_wrapped(_L("Tip:If you want to place svg file on another part surface,you should select part first, and then drag svg file to the part surface."), + m_gui_cfg->input_offset + m_gui_cfg->input_width + m_gui_cfg->icon_width); } } @@ -1355,16 +1354,22 @@ void GLGizmoSVG::draw_preview() if (m_texture.id != 0) { ImTextureID id = (void *) static_cast(m_texture.id); + unsigned window_width = static_cast(ImGui::GetWindowSize().x - 2 * ImGui::GetStyle().WindowPadding.x); + + if (m_texture.width > window_width && window_width > 0) { + m_texture.width = window_width; + } + if (m_texture.height > m_texture.width) { + m_texture.height = m_texture.width; + } ImVec2 s(m_texture.width, m_texture.height); - std::optional spacing; + //std::optional spacing; // is texture over full height? - if (m_texture.height != m_gui_cfg->texture_max_size_px) { + /* if (m_texture.height != m_gui_cfg->texture_max_size_px) { spacing = (m_gui_cfg->texture_max_size_px - m_texture.height) / 2.f; ImGui::SetCursorPosY(ImGui::GetCursorPosY() + *spacing); - } - // is texture over full width? - unsigned window_width = static_cast(ImGui::GetWindowSize().x - 2 * ImGui::GetStyle().WindowPadding.x); + }*/ if (window_width > m_texture.width) { float space = (window_width - m_texture.width) / 2.f; ImGui::SetCursorPosX(ImGui::GetCursorPosX() + space); @@ -1388,7 +1393,8 @@ void GLGizmoSVG::draw_preview() // ImGui::SetTooltip("%s", tooltip.c_str()); //} - if (spacing.has_value()) ImGui::SetCursorPosY(ImGui::GetCursorPosY() + *spacing); + /* if (spacing.has_value()) + ImGui::SetCursorPosY(ImGui::GetCursorPosY() + *spacing);*/ } } @@ -1654,16 +1660,12 @@ void GLGizmoSVG::draw_size() const MinMax &minmax = use_inch ? limits.ui_size_in : limits.ui_size; if (m_keep_ratio) { std::stringstream ss; - ss << _u8L("width:") << std::setprecision(2) << std::fixed << width << (use_inch ? "in" : "mm"); - std::stringstream ss_height; - ss_height << _u8L("height:") << std::setprecision(2) << std::fixed << height << (use_inch ? "in" : "mm"); + ss << std::setprecision(2) << std::fixed << width << " x " << std::setprecision(2) << std::fixed << height << (use_inch ? "in" : "mm"); ImGui::SameLine(m_gui_cfg->input_offset); ImGui::SetNextItemWidth(m_gui_cfg->input_width); - float height_text_size_x = ImGui::CalcTextSize(ss_height.str().c_str()).x; - // convert to float for slider float width_f = static_cast(width); - if (m_imgui->slider_float("##width_size_slider", &width_f, minmax.min, ui_size_max, ss.str().c_str(), 1.f, false, _L("set width and height keep ratio with width"),false)) { + if (m_imgui->slider_float("##width_size_slider", &width_f, minmax.min, ui_size_max, ss.str().c_str(), 1.f, false, _L("set width and height keep ratio with width"))) { double width_ratio = width_f / width; if (is_valid_scale_ratio(width_ratio)) { m_scale_width = m_scale_width.value_or(1.f) * width_ratio; @@ -1671,9 +1673,6 @@ void GLGizmoSVG::draw_size() new_relative_scale = Vec3d(width_ratio, width_ratio, 1.); } } - ImGui::SameLine(); - ImGui::SetNextItemWidth(height_text_size_x); - m_imgui->text(ss_height.str()); if (m_imgui->get_last_slider_status().deactivated_after_edit) make_snap = true; // only last change of slider make snap } else { @@ -1972,7 +1971,7 @@ void GLGizmoSVG::draw_model_type() ModelVolumeType negative = ModelVolumeType::NEGATIVE_VOLUME; ModelVolumeType part = ModelVolumeType::MODEL_PART; ModelVolumeType type = m_volume->type(); - + ImGui::SameLine(m_gui_cfg->input_offset); // TRN EmbossOperation ImGuiWrapper::push_radio_style(); if (ImGui::RadioButton(_u8L("Join").c_str(), type == part))