diff --git a/resources/images/fit_camera_dark.svg b/resources/images/fit_camera_dark.svg
new file mode 100644
index 000000000..0904169d8
--- /dev/null
+++ b/resources/images/fit_camera_dark.svg
@@ -0,0 +1,10 @@
+
diff --git a/resources/images/fit_camera_dark_hover.svg b/resources/images/fit_camera_dark_hover.svg
new file mode 100644
index 000000000..2ee9361da
--- /dev/null
+++ b/resources/images/fit_camera_dark_hover.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp
index 196cda1ce..919b7e258 100644
--- a/src/slic3r/GUI/GLCanvas3D.cpp
+++ b/src/slic3r/GUI/GLCanvas3D.cpp
@@ -8374,12 +8374,8 @@ void GLCanvas3D::_render_fit_camera_toolbar()
imgui.begin(_L("Fit camera"), ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoMove |
ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse);//
- ImTextureID normal_id = m_gizmos.get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_FIT_CAMERA);
- if (normal_id == 0) {
- m_gizmos.init_icon_textures();
- }
- normal_id = m_gizmos.get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_FIT_CAMERA);
- ImTextureID hover_id = m_gizmos.get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_FIT_CAMERA_HOVER); // IC_FIT_CAMERA_HOVER
+ ImTextureID normal_id = m_gizmos.get_icon_texture_id(m_is_dark ? GLGizmosManager::MENU_ICON_NAME::IC_FIT_CAMERA_DARK : GLGizmosManager::MENU_ICON_NAME::IC_FIT_CAMERA);
+ ImTextureID hover_id = m_gizmos.get_icon_texture_id(m_is_dark ? GLGizmosManager::MENU_ICON_NAME::IC_FIT_CAMERA_DARK_HOVER : GLGizmosManager::MENU_ICON_NAME::IC_FIT_CAMERA_HOVER);
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0});
diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
index 0b933d02d..d59f8aa87 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
@@ -195,8 +195,9 @@ void GLGizmosManager::switch_gizmos_icon_filename()
bool GLGizmosManager::init()
{
- bool result = init_icon_textures();
- if (!result) return result;
+ if (!m_gizmos.empty())
+ return true;
+ init_icon_textures();
m_background_texture.metadata.filename = m_is_dark ? "toolbar_background_dark.png" : "toolbar_background.png";
m_background_texture.metadata.left = 16;
@@ -253,8 +254,12 @@ bool GLGizmosManager::init()
return true;
}
+std::map GLGizmosManager::icon_list = {};
bool GLGizmosManager::init_icon_textures()
{
+ if (icon_list.size() > 0) {
+ return true;
+ }
ImTextureID texture_id;
icon_list.clear();
@@ -288,16 +293,26 @@ bool GLGizmosManager::init_icon_textures()
else
return false;
- if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/fit_camera.svg", 32, 32, texture_id))
+ if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/fit_camera.svg", 64, 64, texture_id))
icon_list.insert(std::make_pair((int) IC_FIT_CAMERA, texture_id));
else
return false;
- if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/fit_camera_hover.svg", 32, 32, texture_id))
+ if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/fit_camera_hover.svg", 64, 64, texture_id))
icon_list.insert(std::make_pair((int) IC_FIT_CAMERA_HOVER, texture_id));
else
return false;
+ if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/fit_camera_dark.svg", 64, 64, texture_id))
+ icon_list.insert(std::make_pair((int) IC_FIT_CAMERA_DARK, texture_id));
+ else
+ return false;
+
+ if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/fit_camera_dark_hover.svg", 64, 64, texture_id))
+ icon_list.insert(std::make_pair((int) IC_FIT_CAMERA_DARK_HOVER, texture_id));
+ else
+ return false;
+
if (IMTexture::load_from_svg_file(Slic3r::resources_dir() + "/images/text_B.svg", 20, 20, texture_id))
icon_list.insert(std::make_pair((int)IC_TEXT_B, texture_id));
else
diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp
index 5e3d9161f..bf8518736 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp
@@ -154,7 +154,7 @@ private:
void on_set_color_timer(wxTimerEvent& evt);
// key MENU_ICON_NAME, value = ImtextureID
- std::map icon_list;
+ static std::map icon_list;
bool m_is_dark = false;
public:
@@ -174,6 +174,8 @@ public:
IC_NAME_COUNT,
IC_FIT_CAMERA,
IC_FIT_CAMERA_HOVER,
+ IC_FIT_CAMERA_DARK,
+ IC_FIT_CAMERA_DARK_HOVER,
};
explicit GLGizmosManager(GLCanvas3D& parent);