From aa9994fa352b3cb319febe65d8399c1a1e1000fd Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 22 Feb 2019 10:01:34 +0100 Subject: [PATCH] Gizmos overlay using a single png texture --- resources/icons/gizmos.png | Bin 0 -> 19859 bytes src/libslic3r/Technologies.hpp | 10 + src/slic3r/GUI/GLCanvas3D.cpp | 330 ++++++++++++++++++++++++++------- src/slic3r/GUI/GLCanvas3D.hpp | 5 + src/slic3r/GUI/GLGizmo.cpp | 122 +++++++++++- src/slic3r/GUI/GLGizmo.hpp | 74 +++++++- src/slic3r/GUI/GLToolbar.cpp | 61 +++++- src/slic3r/GUI/GLToolbar.hpp | 22 +++ src/slic3r/GUI/Plater.cpp | 6 + 9 files changed, 562 insertions(+), 68 deletions(-) create mode 100644 resources/icons/gizmos.png diff --git a/resources/icons/gizmos.png b/resources/icons/gizmos.png new file mode 100644 index 0000000000000000000000000000000000000000..448e826b88957e45c9733632d69557aac2d746f6 GIT binary patch literal 19859 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 literal 0 HcmV?d00001 diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 974037516..043dc41b2 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -63,4 +63,14 @@ // Toolbar items hidden/shown in dependence of the user mode #define ENABLE_MODE_AWARE_TOOLBAR_ITEMS (1 && ENABLE_1_42_0_ALPHA5) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +//==================== +// 1.42.0.alpha7 techs +//==================== +#define ENABLE_1_42_0_ALPHA7 1 + +// Toolbars, Gizmos and other GUI icons imported from svg files +#define ENABLE_SVG_ICONS (1 && ENABLE_1_42_0_ALPHA7) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + #endif // _technologies_h_ diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e68f3673b..49399fa7a 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3019,72 +3019,20 @@ GLCanvas3D::Gizmos::~Gizmos() bool GLCanvas3D::Gizmos::init(GLCanvas3D& parent) { - GLGizmoBase* gizmo = new GLGizmoMove3D(parent); - if (gizmo == nullptr) - return false; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + m_icons_texture.metadata.filename = "gizmos.png"; + m_icons_texture.metadata.icon_size = 64; - if (!gizmo->init()) - return false; - - m_gizmos.insert(GizmosMap::value_type(Move, gizmo)); - - gizmo = new GLGizmoScale3D(parent); - if (gizmo == nullptr) - return false; - - if (!gizmo->init()) - return false; - - m_gizmos.insert(GizmosMap::value_type(Scale, gizmo)); - - gizmo = new GLGizmoRotate3D(parent); - if (gizmo == nullptr) + if (!m_icons_texture.metadata.filename.empty()) { - _reset(); - return false; + if (!m_icons_texture.texture.load_from_file(resources_dir() + "/icons/" + m_icons_texture.metadata.filename, false)) + { + _reset(); + return false; + } } - if (!gizmo->init()) - { - _reset(); - return false; - } - - m_gizmos.insert(GizmosMap::value_type(Rotate, gizmo)); - - gizmo = new GLGizmoFlatten(parent); - if (gizmo == nullptr) - return false; - - if (!gizmo->init()) { - _reset(); - return false; - } - - m_gizmos.insert(GizmosMap::value_type(Flatten, gizmo)); - - gizmo = new GLGizmoCut(parent); - if (gizmo == nullptr) - return false; - - if (!gizmo->init()) { - _reset(); - return false; - } - - m_gizmos.insert(GizmosMap::value_type(Cut, gizmo)); - - gizmo = new GLGizmoSlaSupports(parent); - if (gizmo == nullptr) - return false; - - if (!gizmo->init()) { - _reset(); - return false; - } - - m_gizmos.insert(GizmosMap::value_type(SlaSupports, gizmo)); - m_background_texture.metadata.filename = "toolbar_background.png"; m_background_texture.metadata.left = 16; m_background_texture.metadata.top = 16; @@ -3100,6 +3048,139 @@ bool GLCanvas3D::Gizmos::init(GLCanvas3D& parent) } } + GLGizmoBase* gizmo = new GLGizmoMove3D(parent, 0); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + GLGizmoBase* gizmo = new GLGizmoMove3D(parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + if (gizmo == nullptr) + return false; + + if (!gizmo->init()) + return false; + + m_gizmos.insert(GizmosMap::value_type(Move, gizmo)); + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + gizmo = new GLGizmoScale3D(parent, 1); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + gizmo = new GLGizmoScale3D(parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + if (gizmo == nullptr) + return false; + + if (!gizmo->init()) + return false; + + m_gizmos.insert(GizmosMap::value_type(Scale, gizmo)); + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + gizmo = new GLGizmoRotate3D(parent, 2); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + gizmo = new GLGizmoRotate3D(parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + if (gizmo == nullptr) + { + _reset(); + return false; + } + + if (!gizmo->init()) + { + _reset(); + return false; + } + + m_gizmos.insert(GizmosMap::value_type(Rotate, gizmo)); + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + gizmo = new GLGizmoFlatten(parent, 3); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + gizmo = new GLGizmoFlatten(parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + if (gizmo == nullptr) + return false; + + if (!gizmo->init()) { + _reset(); + return false; + } + + m_gizmos.insert(GizmosMap::value_type(Flatten, gizmo)); + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + gizmo = new GLGizmoCut(parent, 4); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + gizmo = new GLGizmoCut(parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + if (gizmo == nullptr) + return false; + + if (!gizmo->init()) { + _reset(); + return false; + } + + m_gizmos.insert(GizmosMap::value_type(Cut, gizmo)); + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + gizmo = new GLGizmoSlaSupports(parent, 5); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + gizmo = new GLGizmoSlaSupports(parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + if (gizmo == nullptr) + return false; + + if (!gizmo->init()) { + _reset(); + return false; + } + + m_gizmos.insert(GizmosMap::value_type(SlaSupports, gizmo)); + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + m_background_texture.metadata.filename = "toolbar_background.png"; + m_background_texture.metadata.left = 16; + m_background_texture.metadata.top = 16; + m_background_texture.metadata.right = 16; + m_background_texture.metadata.bottom = 16; + + if (!m_background_texture.metadata.filename.empty()) + { + if (!m_background_texture.texture.load_from_file(resources_dir() + "/icons/" + m_background_texture.metadata.filename, false)) + { + _reset(); + return false; + } + } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + return true; } @@ -3130,21 +3211,44 @@ std::string GLCanvas3D::Gizmos::update_hover_state(const GLCanvas3D& canvas, con float cnv_h = (float)canvas.get_canvas_size().get_height(); float height = _get_total_overlay_height(); float top_y = 0.5f * (cnv_h - height) + m_overlay_border; + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + float scaled_icons_size = (float)m_icons_texture.metadata.icon_size * m_overlay_icons_scale; +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + for (GizmosMap::iterator it = m_gizmos.begin(); it != m_gizmos.end(); ++it) { if ((it->second == nullptr) || !it->second->is_selectable()) continue; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + bool inside = (m_overlay_border <= (float)mouse_pos(0)) && ((float)mouse_pos(0) <= m_overlay_border + scaled_icons_size) && (top_y <= (float)mouse_pos(1)) && ((float)mouse_pos(1) <= top_y + scaled_icons_size); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float icon_size = (float)it->second->get_textures_size() * m_overlay_icons_scale; bool inside = (m_overlay_border <= (float)mouse_pos(0)) && ((float)mouse_pos(0) <= m_overlay_border + icon_size) && (top_y <= (float)mouse_pos(1)) && ((float)mouse_pos(1) <= top_y + icon_size); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ if (inside) name = it->second->get_name(); if (it->second->is_activable(selection) && (it->second->get_state() != GLGizmoBase::On)) it->second->set_state(inside ? GLGizmoBase::Hover : GLGizmoBase::Off); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + top_y += (scaled_icons_size + m_overlay_gap_y); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ top_y += (icon_size + m_overlay_gap_y); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ } return name; @@ -3159,14 +3263,28 @@ void GLCanvas3D::Gizmos::update_on_off_state(const GLCanvas3D& canvas, const Vec float height = _get_total_overlay_height(); float top_y = 0.5f * (cnv_h - height) + m_overlay_border; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + float scaled_icons_size = (float)m_icons_texture.metadata.icon_size * m_overlay_icons_scale; +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + for (GizmosMap::iterator it = m_gizmos.begin(); it != m_gizmos.end(); ++it) { if ((it->second == nullptr) || !it->second->is_selectable()) continue; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + bool inside = (m_overlay_border <= (float)mouse_pos(0)) && ((float)mouse_pos(0) <= m_overlay_border + scaled_icons_size) && (top_y <= (float)mouse_pos(1)) && ((float)mouse_pos(1) <= top_y + scaled_icons_size); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float icon_size = (float)it->second->get_textures_size() * m_overlay_icons_scale; bool inside = (m_overlay_border <= (float)mouse_pos(0)) && ((float)mouse_pos(0) <= m_overlay_border + icon_size) && (top_y <= (float)mouse_pos(1)) && ((float)mouse_pos(1) <= top_y + icon_size); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ if (it->second->is_activable(selection) && inside) { if ((it->second->get_state() == GLGizmoBase::On)) @@ -3183,7 +3301,15 @@ void GLCanvas3D::Gizmos::update_on_off_state(const GLCanvas3D& canvas, const Vec else it->second->set_state(GLGizmoBase::Off); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + top_y += (scaled_icons_size + m_overlay_gap_y); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ top_y += (icon_size + m_overlay_gap_y); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ } GizmosMap::iterator it = m_gizmos.find(m_current); @@ -3256,17 +3382,35 @@ bool GLCanvas3D::Gizmos::overlay_contains_mouse(const GLCanvas3D& canvas, const float cnv_h = (float)canvas.get_canvas_size().get_height(); float height = _get_total_overlay_height(); float top_y = 0.5f * (cnv_h - height) + m_overlay_border; + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + float scaled_icons_size = (float)m_icons_texture.metadata.icon_size * m_overlay_icons_scale; +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + for (GizmosMap::const_iterator it = m_gizmos.begin(); it != m_gizmos.end(); ++it) { if ((it->second == nullptr) || !it->second->is_selectable()) continue; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + if ((m_overlay_border <= (float)mouse_pos(0)) && ((float)mouse_pos(0) <= m_overlay_border + scaled_icons_size) && (top_y <= (float)mouse_pos(1)) && ((float)mouse_pos(1) <= top_y + scaled_icons_size)) + return true; + + top_y += (scaled_icons_size + m_overlay_gap_y); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float icon_size = (float)it->second->get_textures_size() * m_overlay_icons_scale; if ((m_overlay_border <= (float)mouse_pos(0)) && ((float)mouse_pos(0) <= m_overlay_border + icon_size) && (top_y <= (float)mouse_pos(1)) && ((float)mouse_pos(1) <= top_y + icon_size)) return true; top_y += (icon_size + m_overlay_gap_y); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ } return false; @@ -3610,11 +3754,40 @@ void GLCanvas3D::Gizmos::_render_overlay(const GLCanvas3D& canvas, const GLCanva top_x += m_overlay_border * inv_zoom; top_y -= m_overlay_border * inv_zoom; float scaled_gap_y = m_overlay_gap_y * inv_zoom; + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + float scaled_icons_size = (float)m_icons_texture.metadata.icon_size * m_overlay_icons_scale * inv_zoom; + unsigned int icons_texture_id = m_icons_texture.texture.get_id(); + unsigned int texture_size = m_icons_texture.texture.get_width(); + float inv_texture_size = (texture_size != 0) ? 1.0f / (float)texture_size : 0.0f; +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + for (GizmosMap::const_iterator it = m_gizmos.begin(); it != m_gizmos.end(); ++it) { if ((it->second == nullptr) || !it->second->is_selectable()) continue; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + unsigned int sprite_id = it->second->get_sprite_id(); + GLGizmoBase::EState state = it->second->get_state(); + + float uv_icon_size = (float)m_icons_texture.metadata.icon_size * inv_texture_size; + float top = sprite_id * uv_icon_size; + float left = state * uv_icon_size; + float bottom = top + uv_icon_size; + float right = left + uv_icon_size; + + GLTexture::render_sub_texture(icons_texture_id, top_x, top_x + scaled_icons_size, top_y - scaled_icons_size, top_y, { { left, bottom }, { right, bottom }, { right, top }, { left, top } }); +#if ENABLE_IMGUI + if (it->second->get_state() == GLGizmoBase::On) + it->second->render_input_window(2.0f * m_overlay_border + scaled_icons_size * zoom, 0.5f * cnv_h - top_y * zoom, selection); +#endif // ENABLE_IMGUI + top_y -= (scaled_icons_size + scaled_gap_y); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float icon_size = (float)it->second->get_textures_size() * m_overlay_icons_scale * inv_zoom; GLTexture::render_texture(it->second->get_texture_id(), top_x, top_x + icon_size, top_y - icon_size, top_y); #if ENABLE_IMGUI @@ -3622,6 +3795,9 @@ void GLCanvas3D::Gizmos::_render_overlay(const GLCanvas3D& canvas, const GLCanva it->second->render_input_window(2.0f * m_overlay_border + icon_size * zoom, 0.5f * cnv_h - top_y * zoom, selection); #endif // ENABLE_IMGUI top_y -= (icon_size + scaled_gap_y); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ } } @@ -3636,12 +3812,26 @@ float GLCanvas3D::Gizmos::_get_total_overlay_height() const { float height = 2.0f * m_overlay_border; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + float scaled_icons_size = (float)m_icons_texture.metadata.icon_size * m_overlay_icons_scale; +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + for (GizmosMap::const_iterator it = m_gizmos.begin(); it != m_gizmos.end(); ++it) { if ((it->second == nullptr) || !it->second->is_selectable()) continue; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + height += (scaled_icons_size + m_overlay_gap_y); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ height += (float)it->second->get_textures_size() * m_overlay_icons_scale + m_overlay_gap_y; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ } return height - m_overlay_gap_y; @@ -3649,6 +3839,11 @@ float GLCanvas3D::Gizmos::_get_total_overlay_height() const float GLCanvas3D::Gizmos::_get_total_overlay_width() const { +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + float max_icon_width = std::max(max_icon_width, (float)m_icons_texture.metadata.icon_size * m_overlay_icons_scale); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float max_icon_width = 0.0f; for (GizmosMap::const_iterator it = m_gizmos.begin(); it != m_gizmos.end(); ++it) { @@ -3657,6 +3852,9 @@ float GLCanvas3D::Gizmos::_get_total_overlay_width() const max_icon_width = std::max(max_icon_width, (float)it->second->get_textures_size() * m_overlay_icons_scale); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ return max_icon_width + 2.0f * m_overlay_border; } @@ -6194,9 +6392,17 @@ bool GLCanvas3D::_init_toolbar() ItemsIconsTexture::Metadata icons_data; icons_data.filename = "toolbar.png"; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + icons_data.icon_size = 37; +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ icons_data.icon_size = 36; icons_data.icon_border_size = 1; icons_data.icon_gap_size = 1; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // icons_data.filename = "toolbar141.png"; // icons_data.icon_size = 52; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 3d44aa13f..438b64120 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -749,6 +749,11 @@ private: bool m_enabled; typedef std::map GizmosMap; GizmosMap m_gizmos; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + ItemsIconsTexture m_icons_texture; +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ BackgroundTexture m_background_texture; EType m_current; diff --git a/src/slic3r/GUI/GLGizmo.cpp b/src/slic3r/GUI/GLGizmo.cpp index 086dbfdb1..19b91e3c6 100644 --- a/src/slic3r/GUI/GLGizmo.cpp +++ b/src/slic3r/GUI/GLGizmo.cpp @@ -157,11 +157,24 @@ void GLGizmoBase::Grabber::render_face(float half_size) const ::glEnd(); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +GLGizmoBase::GLGizmoBase(GLCanvas3D& parent, unsigned int sprite_id) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLGizmoBase::GLGizmoBase(GLCanvas3D& parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ : m_parent(parent) , m_group_id(-1) , m_state(Off) , m_shortcut_key(0) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + , m_sprite_id(sprite_id) +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , m_hover_id(-1) , m_dragging(false) #if ENABLE_IMGUI @@ -304,7 +317,15 @@ const unsigned int GLGizmoRotate::SnapRegionsCount = 8; const float GLGizmoRotate::GrabberOffset = 0.15f; // in percent of radius GLGizmoRotate::GLGizmoRotate(GLCanvas3D& parent, GLGizmoRotate::Axis axis) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + : GLGizmoBase(parent, -1) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ : GLGizmoBase(parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , m_axis(axis) , m_angle(0.0) , m_quadric(nullptr) @@ -321,7 +342,15 @@ GLGizmoRotate::GLGizmoRotate(GLCanvas3D& parent, GLGizmoRotate::Axis axis) } GLGizmoRotate::GLGizmoRotate(const GLGizmoRotate& other) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + : GLGizmoBase(other.m_parent, other.m_sprite_id) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ : GLGizmoBase(other.m_parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , m_axis(other.m_axis) , m_angle(other.m_angle) , m_quadric(nullptr) @@ -693,8 +722,17 @@ Vec3d GLGizmoRotate::mouse_position_in_local_plane(const Linef3& mouse_ray, cons return transform(mouse_ray, m).intersect_plane(0.0); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +GLGizmoRotate3D::GLGizmoRotate3D(GLCanvas3D& parent, unsigned int sprite_id) + : GLGizmoBase(parent, sprite_id) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLGizmoRotate3D::GLGizmoRotate3D(GLCanvas3D& parent) : GLGizmoBase(parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ { m_gizmos.emplace_back(parent, GLGizmoRotate::X); m_gizmos.emplace_back(parent, GLGizmoRotate::Y); @@ -719,6 +757,9 @@ bool GLGizmoRotate3D::on_init() m_gizmos[i].set_highlight_color(AXES_COLOR[i]); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ std::string path = resources_dir() + "/icons/overlay/"; if (!m_textures[Off].load_from_file(path + "rotate_off.png", false)) @@ -729,6 +770,9 @@ bool GLGizmoRotate3D::on_init() if (!m_textures[On].load_from_file(path + "rotate_on.png", false)) return false; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ m_shortcut_key = WXK_CONTROL_R; @@ -784,8 +828,17 @@ void GLGizmoRotate3D::on_render_input_window(float x, float y, const GLCanvas3D: const float GLGizmoScale3D::Offset = 5.0f; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +GLGizmoScale3D::GLGizmoScale3D(GLCanvas3D& parent, unsigned int sprite_id) + : GLGizmoBase(parent, sprite_id) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLGizmoScale3D::GLGizmoScale3D(GLCanvas3D& parent) : GLGizmoBase(parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , m_scale(Vec3d::Ones()) , m_snap_step(0.05) , m_starting_scale(Vec3d::Ones()) @@ -794,6 +847,9 @@ GLGizmoScale3D::GLGizmoScale3D(GLCanvas3D& parent) bool GLGizmoScale3D::on_init() { +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ std::string path = resources_dir() + "/icons/overlay/"; if (!m_textures[Off].load_from_file(path + "scale_off.png", false)) @@ -804,6 +860,9 @@ bool GLGizmoScale3D::on_init() if (!m_textures[On].load_from_file(path + "scale_on.png", false)) return false; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ for (int i = 0; i < 10; ++i) { @@ -1141,8 +1200,17 @@ double GLGizmoScale3D::calc_ratio(const UpdateData& data) const const double GLGizmoMove3D::Offset = 10.0; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +GLGizmoMove3D::GLGizmoMove3D(GLCanvas3D& parent, unsigned int sprite_id) + : GLGizmoBase(parent, sprite_id) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLGizmoMove3D::GLGizmoMove3D(GLCanvas3D& parent) : GLGizmoBase(parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , m_displacement(Vec3d::Zero()) , m_snap_step(1.0) , m_starting_drag_position(Vec3d::Zero()) @@ -1163,6 +1231,9 @@ GLGizmoMove3D::~GLGizmoMove3D() bool GLGizmoMove3D::on_init() { +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ std::string path = resources_dir() + "/icons/overlay/"; if (!m_textures[Off].load_from_file(path + "move_off.png", false)) @@ -1173,6 +1244,9 @@ bool GLGizmoMove3D::on_init() if (!m_textures[On].load_from_file(path + "move_on.png", false)) return false; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ for (int i = 0; i < 3; ++i) { @@ -1389,8 +1463,17 @@ void GLGizmoMove3D::render_grabber_extension(Axis axis, const BoundingBoxf3& box ::glDisable(GL_LIGHTING); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +GLGizmoFlatten::GLGizmoFlatten(GLCanvas3D& parent, unsigned int sprite_id) + : GLGizmoBase(parent, sprite_id) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLGizmoFlatten::GLGizmoFlatten(GLCanvas3D& parent) : GLGizmoBase(parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , m_normal(Vec3d::Zero()) , m_starting_center(Vec3d::Zero()) { @@ -1398,6 +1481,9 @@ GLGizmoFlatten::GLGizmoFlatten(GLCanvas3D& parent) bool GLGizmoFlatten::on_init() { +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ std::string path = resources_dir() + "/icons/overlay/"; if (!m_textures[Off].load_from_file(path + "layflat_off.png", false)) @@ -1408,6 +1494,9 @@ bool GLGizmoFlatten::on_init() if (!m_textures[On].load_from_file(path + "layflat_on.png", false)) return false; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ m_shortcut_key = WXK_CONTROL_F; @@ -1740,8 +1829,18 @@ Vec3d GLGizmoFlatten::get_flattening_normal() const return out; } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +GLGizmoSlaSupports::GLGizmoSlaSupports(GLCanvas3D& parent, unsigned int sprite_id) + : GLGizmoBase(parent, sprite_id) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLGizmoSlaSupports::GLGizmoSlaSupports(GLCanvas3D& parent) - : GLGizmoBase(parent), m_starting_center(Vec3d::Zero()), m_quadric(nullptr) + : GLGizmoBase(parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + , m_starting_center(Vec3d::Zero()), m_quadric(nullptr) { m_quadric = ::gluNewQuadric(); if (m_quadric != nullptr) @@ -1758,6 +1857,9 @@ GLGizmoSlaSupports::~GLGizmoSlaSupports() bool GLGizmoSlaSupports::on_init() { +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ std::string path = resources_dir() + "/icons/overlay/"; if (!m_textures[Off].load_from_file(path + "sla_support_points_off.png", false)) @@ -1768,6 +1870,9 @@ bool GLGizmoSlaSupports::on_init() if (!m_textures[On].load_from_file(path + "sla_support_points_on.png", false)) return false; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ m_shortcut_key = WXK_CONTROL_L; @@ -2559,8 +2664,17 @@ const double GLGizmoCut::Offset = 10.0; const double GLGizmoCut::Margin = 20.0; const std::array GLGizmoCut::GrabberColor = { 1.0, 0.5, 0.0 }; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +GLGizmoCut::GLGizmoCut(GLCanvas3D& parent, unsigned int sprite_id) + : GLGizmoBase(parent, sprite_id) +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLGizmoCut::GLGizmoCut(GLCanvas3D& parent) : GLGizmoBase(parent) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , m_cut_z(0.0) , m_max_z(0.0) #if !ENABLE_IMGUI @@ -2593,6 +2707,9 @@ void GLGizmoCut::create_external_gizmo_widgets(wxWindow *parent) bool GLGizmoCut::on_init() { +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // TODO: icon std::string path = resources_dir() + "/icons/overlay/"; @@ -2608,6 +2725,9 @@ bool GLGizmoCut::on_init() if (!m_textures[On].load_from_file(path + "cut_on.png", false)) { return false; } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ m_grabbers.emplace_back(); diff --git a/src/slic3r/GUI/GLGizmo.hpp b/src/slic3r/GUI/GLGizmo.hpp index a24384012..fed848ae4 100644 --- a/src/slic3r/GUI/GLGizmo.hpp +++ b/src/slic3r/GUI/GLGizmo.hpp @@ -87,8 +87,16 @@ protected: int m_group_id; EState m_state; int m_shortcut_key; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + unsigned int m_sprite_id; +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // textures are assumed to be square and all with the same size in pixels, no internal check is done GLTexture m_textures[Num_States]; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int m_hover_id; bool m_dragging; float m_base_color[3]; @@ -100,7 +108,15 @@ protected: #endif // ENABLE_IMGUI public: +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + GLGizmoBase(GLCanvas3D& parent, unsigned int sprite_id); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ explicit GLGizmoBase(GLCanvas3D& parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ virtual ~GLGizmoBase() {} bool init() { return on_init(); } @@ -119,8 +135,16 @@ public: bool is_activable(const GLCanvas3D::Selection& selection) const { return on_is_activable(selection); } bool is_selectable() const { return on_is_selectable(); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + unsigned int get_sprite_id() const { return m_sprite_id; } +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ unsigned int get_texture_id() const { return m_textures[m_state].get_id(); } int get_textures_size() const { return m_textures[Off].get_width(); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int get_hover_id() const { return m_hover_id; } void set_hover_id(int id); @@ -244,7 +268,15 @@ class GLGizmoRotate3D : public GLGizmoBase std::vector m_gizmos; public: +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + GLGizmoRotate3D(GLCanvas3D& parent, unsigned int sprite_id); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ explicit GLGizmoRotate3D(GLCanvas3D& parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Vec3d get_rotation() const { return Vec3d(m_gizmos[X].get_angle(), m_gizmos[Y].get_angle(), m_gizmos[Z].get_angle()); } void set_rotation(const Vec3d& rotation) { m_gizmos[X].set_angle(rotation(0)); m_gizmos[Y].set_angle(rotation(1)); m_gizmos[Z].set_angle(rotation(2)); } @@ -315,7 +347,15 @@ class GLGizmoScale3D : public GLGizmoBase BoundingBoxf3 m_starting_box; public: +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + GLGizmoScale3D(GLCanvas3D& parent, unsigned int sprite_id); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ explicit GLGizmoScale3D(GLCanvas3D& parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ double get_snap_step(double step) const { return m_snap_step; } void set_snap_step(double step) { m_snap_step = step; } @@ -362,7 +402,15 @@ class GLGizmoMove3D : public GLGizmoBase GLUquadricObj* m_quadric; public: +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + GLGizmoMove3D(GLCanvas3D& parent, unsigned int sprite_id); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ explicit GLGizmoMove3D(GLCanvas3D& parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ virtual ~GLGizmoMove3D(); double get_snap_step(double step) const { return m_snap_step; } @@ -417,7 +465,15 @@ private: bool is_plane_update_necessary() const; public: +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + GLGizmoFlatten(GLCanvas3D& parent, unsigned int sprite_id); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ explicit GLGizmoFlatten(GLCanvas3D& parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ void set_flattening_data(const ModelObject* model_object); Vec3d get_flattening_normal() const; @@ -437,8 +493,6 @@ protected: } }; - - #define SLAGIZMO_IMGUI_MODAL 0 class GLGizmoSlaSupports : public GLGizmoBase { @@ -466,7 +520,15 @@ private: mutable Vec3d m_starting_center; public: +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + GLGizmoSlaSupports(GLCanvas3D& parent, unsigned int sprite_id); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ explicit GLGizmoSlaSupports(GLCanvas3D& parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ virtual ~GLGizmoSlaSupports(); void set_sla_support_data(ModelObject* model_object, const GLCanvas3D::Selection& selection); bool mouse_event(SLAGizmoEventType action, const Vec2d& mouse_position, bool shift_down); @@ -559,7 +621,15 @@ class GLGizmoCut : public GLGizmoBase #endif // not ENABLE_IMGUI public: +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + GLGizmoCut(GLCanvas3D& parent, unsigned int sprite_id); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ explicit GLGizmoCut(GLCanvas3D& parent); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #if !ENABLE_IMGUI virtual void create_external_gizmo_widgets(wxWindow *parent); diff --git a/src/slic3r/GUI/GLToolbar.cpp b/src/slic3r/GUI/GLToolbar.cpp index 8d04868f8..63a8450a9 100644 --- a/src/slic3r/GUI/GLToolbar.cpp +++ b/src/slic3r/GUI/GLToolbar.cpp @@ -53,25 +53,60 @@ void GLToolbarItem::do_action(wxEvtHandler *target) wxPostEvent(target, SimpleEvent(m_data.action_event)); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +void GLToolbarItem::render(unsigned int tex_id, float left, float right, float bottom, float top, unsigned int texture_size, unsigned int icon_size) const +{ + GLTexture::render_sub_texture(tex_id, left, right, bottom, top, get_uvs(texture_size, icon_size)); +} +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ void GLToolbarItem::render(unsigned int tex_id, float left, float right, float bottom, float top, unsigned int texture_size, unsigned int border_size, unsigned int icon_size, unsigned int gap_size) const { GLTexture::render_sub_texture(tex_id, left, right, bottom, top, get_uvs(texture_size, border_size, icon_size, gap_size)); } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS +GLTexture::Quad_UVs GLToolbarItem::get_uvs(unsigned int texture_size, unsigned int icon_size) const +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLTexture::Quad_UVs GLToolbarItem::get_uvs(unsigned int texture_size, unsigned int border_size, unsigned int icon_size, unsigned int gap_size) const +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ { GLTexture::Quad_UVs uvs; float inv_texture_size = (texture_size != 0) ? 1.0f / (float)texture_size : 0.0f; float scaled_icon_size = (float)icon_size * inv_texture_size; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + float left = (float)m_state * scaled_icon_size; +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float scaled_border_size = (float)border_size * inv_texture_size; float scaled_gap_size = (float)gap_size * inv_texture_size; float stride = scaled_icon_size + scaled_gap_size; float left = scaled_border_size + (float)m_state * stride; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float right = left + scaled_icon_size; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + float top = (float)m_data.sprite_id * scaled_icon_size; +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float top = scaled_border_size + (float)m_data.sprite_id * stride; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ float bottom = top + scaled_icon_size; uvs.left_top = { left, top }; @@ -85,8 +120,14 @@ GLTexture::Quad_UVs GLToolbarItem::get_uvs(unsigned int texture_size, unsigned i ItemsIconsTexture::Metadata::Metadata() : filename("") , icon_size(0) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ , icon_border_size(0) , icon_gap_size(0) +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ { } @@ -610,7 +651,6 @@ std::string GLToolbar::update_hover_state_vertical(const Vec2d& mouse_pos, GLCan float scaled_separator_size = m_layout.separator_size * factor; float scaled_gap_size = m_layout.gap_size * factor; float scaled_border = m_layout.border * factor; - float separator_stride = scaled_separator_size + scaled_gap_size; float icon_stride = scaled_icons_size + scaled_gap_size; @@ -709,7 +749,6 @@ int GLToolbar::contains_mouse_horizontal(const Vec2d& mouse_pos, const GLCanvas3 float scaled_separator_size = m_layout.separator_size * factor; float scaled_gap_size = m_layout.gap_size * factor; float scaled_border = m_layout.border * factor; - float separator_stride = scaled_separator_size + scaled_gap_size; float icon_stride = scaled_icons_size + scaled_gap_size; @@ -733,7 +772,7 @@ int GLToolbar::contains_mouse_horizontal(const Vec2d& mouse_pos, const GLCanvas3 { float right = left + scaled_icons_size; float bottom = top - scaled_icons_size; - + if ((left <= (float)scaled_mouse_pos(0)) && ((float)scaled_mouse_pos(0) <= right) && (bottom <= (float)scaled_mouse_pos(1)) && ((float)scaled_mouse_pos(1) <= top)) return id; @@ -919,7 +958,15 @@ void GLToolbar::render_horizontal(const GLCanvas3D& parent) const left += separator_stride; else { +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + item->render(tex_id, left, left + scaled_icons_size, top - scaled_icons_size, top, (unsigned int)tex_size, m_icons_texture.metadata.icon_size); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ item->render(tex_id, left, left + scaled_icons_size, top - scaled_icons_size, top, (unsigned int)tex_size, m_icons_texture.metadata.icon_border_size, m_icons_texture.metadata.icon_size, m_icons_texture.metadata.icon_gap_size); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ left += icon_stride; } } @@ -1050,7 +1097,15 @@ void GLToolbar::render_vertical(const GLCanvas3D& parent) const top -= separator_stride; else { +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + item->render(tex_id, left, left + scaled_icons_size, top - scaled_icons_size, top, (unsigned int)tex_size, m_icons_texture.metadata.icon_size); +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ item->render(tex_id, left, left + scaled_icons_size, top - scaled_icons_size, top, (unsigned int)tex_size, m_icons_texture.metadata.icon_border_size, m_icons_texture.metadata.icon_size, m_icons_texture.metadata.icon_gap_size); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ top -= icon_stride; } } diff --git a/src/slic3r/GUI/GLToolbar.hpp b/src/slic3r/GUI/GLToolbar.hpp index 951d5e072..a5a912bfc 100644 --- a/src/slic3r/GUI/GLToolbar.hpp +++ b/src/slic3r/GUI/GLToolbar.hpp @@ -90,10 +90,26 @@ public: #endif // ENABLE_MODE_AWARE_TOOLBAR_ITEMS bool is_separator() const { return m_type == Separator; } +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + void render(unsigned int tex_id, float left, float right, float bottom, float top, unsigned int texture_size, unsigned int icon_size) const; +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ void render(unsigned int tex_id, float left, float right, float bottom, float top, unsigned int texture_size, unsigned int border_size, unsigned int icon_size, unsigned int gap_size) const; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ private: +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if ENABLE_SVG_ICONS + GLTexture::Quad_UVs get_uvs(unsigned int texture_size, unsigned int icon_size) const; +#else +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ GLTexture::Quad_UVs get_uvs(unsigned int texture_size, unsigned int border_size, unsigned int icon_size, unsigned int gap_size) const; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ }; // items icon textures are assumed to be square and all with the same size in pixels, no internal check is done @@ -107,10 +123,16 @@ struct ItemsIconsTexture std::string filename; // size of the square icons, in pixels unsigned int icon_size; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // size of the border, in pixels unsigned int icon_border_size; // distance between two adjacent icons (to avoid filtering artifacts), in pixels unsigned int icon_gap_size; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Metadata(); }; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 4da9f6652..44b65b2b2 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2564,8 +2564,14 @@ void Plater::priv::init_view_toolbar() ItemsIconsTexture::Metadata icons_data; icons_data.filename = "view_toolbar.png"; icons_data.icon_size = 64; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#if !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ icons_data.icon_border_size = 0; icons_data.icon_gap_size = 0; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +#endif // !ENABLE_SVG_ICONS +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ BackgroundTexture::Metadata background_data; background_data.filename = "toolbar_background.png";