From c17e8602ed32c73364c6e29e16434ae81c8bfcd8 Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Tue, 9 Apr 2019 14:18:03 +0200 Subject: [PATCH] Factor out load_scaled_bitmap --- src/slic3r/GUI/Preset.cpp | 12 +++--- src/slic3r/GUI/Preset.hpp | 4 +- src/slic3r/GUI/PresetBundle.cpp | 75 ++++++++++++--------------------- src/slic3r/GUI/PresetBundle.hpp | 2 +- src/slic3r/GUI/wxExtensions.cpp | 21 +++------ src/slic3r/GUI/wxExtensions.hpp | 1 - 6 files changed, 43 insertions(+), 72 deletions(-) diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index 5e4d921052..df4500d0c7 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -799,16 +799,16 @@ bool PresetCollection::delete_current_preset() return true; } -bool PresetCollection::load_bitmap_default(const std::string &file_name) +void PresetCollection::load_bitmap_default(const std::string &file_name) { -// return m_bitmap_main_frame->LoadFile(wxString::FromUTF8(Slic3r::var(file_name).c_str()), wxBITMAP_TYPE_PNG); - return load_scaled_bitmap(nullptr, &m_bitmap_main_frame, file_name); // FIXME: pass window ptr for proper scaling + // FIXME: pass window ptr for proper scaling + *m_bitmap_main_frame = create_scaled_bitmap(nullptr, file_name); } -bool PresetCollection::load_bitmap_add(const std::string &file_name) +void PresetCollection::load_bitmap_add(const std::string &file_name) { -// return m_bitmap_add->LoadFile(wxString::FromUTF8(Slic3r::var(file_name).c_str()), wxBITMAP_TYPE_PNG); - return load_scaled_bitmap(nullptr, &m_bitmap_add, file_name); // FIXME: pass window ptr for proper scaling + // FIXME: pass window ptr for proper scaling + *m_bitmap_add = create_scaled_bitmap(nullptr, file_name); } const Preset* PresetCollection::get_selected_preset_parent() const diff --git a/src/slic3r/GUI/Preset.hpp b/src/slic3r/GUI/Preset.hpp index ac1171e183..22740e31e1 100644 --- a/src/slic3r/GUI/Preset.hpp +++ b/src/slic3r/GUI/Preset.hpp @@ -276,10 +276,10 @@ public: bool delete_current_preset(); // Load default bitmap to be placed at the wxBitmapComboBox of a MainFrame. - bool load_bitmap_default(const std::string &file_name); + void load_bitmap_default(const std::string &file_name); // Load "add new printer" bitmap to be placed at the wxBitmapComboBox of a MainFrame. - bool load_bitmap_add(const std::string &file_name); + void load_bitmap_add(const std::string &file_name); // Compatible & incompatible marks, to be placed at the wxBitmapComboBox items. void set_bitmap_compatible (const wxBitmap *bmp) { m_bitmap_compatible = bmp; } diff --git a/src/slic3r/GUI/PresetBundle.cpp b/src/slic3r/GUI/PresetBundle.cpp index 7525112b96..6bf72675df 100644 --- a/src/slic3r/GUI/PresetBundle.cpp +++ b/src/slic3r/GUI/PresetBundle.cpp @@ -396,56 +396,37 @@ void PresetBundle::export_selections(AppConfig &config) config.set("presets", "printer", printers.get_selected_preset_name()); } -bool PresetBundle::load_compatible_bitmaps() +void PresetBundle::load_compatible_bitmaps() { - const std::string path_bitmap_compatible = "flag-green-icon.png"; - const std::string path_bitmap_incompatible = "flag-red-icon.png"; - const std::string path_bitmap_lock = "sys_lock.png";//"lock.png"; - const std::string path_bitmap_lock_open = "sys_unlock.png";//"lock_open.png"; -// bool loaded_compatible = m_bitmapCompatible ->LoadFile( -// wxString::FromUTF8(Slic3r::var(path_bitmap_compatible).c_str()), wxBITMAP_TYPE_PNG); -// bool loaded_incompatible = m_bitmapIncompatible->LoadFile( -// wxString::FromUTF8(Slic3r::var(path_bitmap_incompatible).c_str()), wxBITMAP_TYPE_PNG); -// bool loaded_lock = m_bitmapLock->LoadFile( -// wxString::FromUTF8(Slic3r::var(path_bitmap_lock).c_str()), wxBITMAP_TYPE_PNG); -// bool loaded_lock_open = m_bitmapLockOpen->LoadFile( -// wxString::FromUTF8(Slic3r::var(path_bitmap_lock_open).c_str()), wxBITMAP_TYPE_PNG); - // FIXME: pass window ptr for proper scaling - bool loaded_compatible = load_scaled_bitmap(nullptr, &m_bitmapCompatible, path_bitmap_compatible); - bool loaded_incompatible = load_scaled_bitmap(nullptr, &m_bitmapIncompatible,path_bitmap_incompatible); - bool loaded_lock = load_scaled_bitmap(nullptr, &m_bitmapLock, path_bitmap_lock); - bool loaded_lock_open = load_scaled_bitmap(nullptr, &m_bitmapLockOpen, path_bitmap_lock_open); + *m_bitmapCompatible = create_scaled_bitmap(nullptr, "flag-green-icon.png"); + *m_bitmapIncompatible = create_scaled_bitmap(nullptr, "flag-red-icon.png"); + *m_bitmapLock = create_scaled_bitmap(nullptr, "sys_lock.png"); + *m_bitmapLockOpen = create_scaled_bitmap(nullptr, "sys_unlock.png"); - if (loaded_compatible) { - prints .set_bitmap_compatible(m_bitmapCompatible); - filaments .set_bitmap_compatible(m_bitmapCompatible); - sla_prints .set_bitmap_compatible(m_bitmapCompatible); - sla_materials.set_bitmap_compatible(m_bitmapCompatible); -// printers .set_bitmap_compatible(m_bitmapCompatible); - } - if (loaded_incompatible) { - prints .set_bitmap_incompatible(m_bitmapIncompatible); - filaments .set_bitmap_incompatible(m_bitmapIncompatible); - sla_prints .set_bitmap_incompatible(m_bitmapIncompatible); - sla_materials.set_bitmap_incompatible(m_bitmapIncompatible); -// printers .set_bitmap_incompatible(m_bitmapIncompatible); - } - if (loaded_lock) { - prints .set_bitmap_lock(m_bitmapLock); - filaments .set_bitmap_lock(m_bitmapLock); - sla_prints .set_bitmap_lock(m_bitmapLock); - sla_materials.set_bitmap_lock(m_bitmapLock); - printers .set_bitmap_lock(m_bitmapLock); - } - if (loaded_lock_open) { - prints .set_bitmap_lock_open(m_bitmapLock); - filaments .set_bitmap_lock_open(m_bitmapLock); - sla_prints .set_bitmap_lock_open(m_bitmapLock); - sla_materials.set_bitmap_lock_open(m_bitmapLock); - printers .set_bitmap_lock_open(m_bitmapLock); - } - return loaded_compatible && loaded_incompatible && loaded_lock && loaded_lock_open; + prints .set_bitmap_compatible(m_bitmapCompatible); + filaments .set_bitmap_compatible(m_bitmapCompatible); + sla_prints .set_bitmap_compatible(m_bitmapCompatible); + sla_materials.set_bitmap_compatible(m_bitmapCompatible); + printers .set_bitmap_compatible(m_bitmapCompatible); + + prints .set_bitmap_incompatible(m_bitmapIncompatible); + filaments .set_bitmap_incompatible(m_bitmapIncompatible); + sla_prints .set_bitmap_incompatible(m_bitmapIncompatible); + sla_materials.set_bitmap_incompatible(m_bitmapIncompatible); + printers .set_bitmap_incompatible(m_bitmapIncompatible); + + prints .set_bitmap_lock(m_bitmapLock); + filaments .set_bitmap_lock(m_bitmapLock); + sla_prints .set_bitmap_lock(m_bitmapLock); + sla_materials.set_bitmap_lock(m_bitmapLock); + printers .set_bitmap_lock(m_bitmapLock); + + prints .set_bitmap_lock_open(m_bitmapLock); + filaments .set_bitmap_lock_open(m_bitmapLock); + sla_prints .set_bitmap_lock_open(m_bitmapLock); + sla_materials.set_bitmap_lock_open(m_bitmapLock); + printers .set_bitmap_lock_open(m_bitmapLock); } DynamicPrintConfig PresetBundle::full_config() const diff --git a/src/slic3r/GUI/PresetBundle.hpp b/src/slic3r/GUI/PresetBundle.hpp index abd936ee21..1f627d0456 100644 --- a/src/slic3r/GUI/PresetBundle.hpp +++ b/src/slic3r/GUI/PresetBundle.hpp @@ -148,7 +148,7 @@ private: // If it is not an external config, then the config will be stored into the user profile directory. void load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config); void load_config_file_config_bundle(const std::string &path, const boost::property_tree::ptree &tree); - bool load_compatible_bitmaps(); + void load_compatible_bitmaps(); DynamicPrintConfig full_fff_config() const; DynamicPrintConfig full_sla_config() const; diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 9f4a18a49a..100b02253f 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -422,7 +422,7 @@ void PrusaCollapsiblePaneMSW::Collapse(bool collapse) // If an icon has horizontal orientation (width > height) call this function with is_horizontal = true -bool load_scaled_bitmap(wxWindow *win, wxBitmap** bmp, const std::string& bmp_name_in, const int px_cnt/* = 16*/, const bool is_horizontal /*= false*/) +wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, const int px_cnt/* = 16*/, const bool is_horizontal /* = false*/) { static Slic3r::GUI::BitmapCache cache; @@ -434,28 +434,19 @@ bool load_scaled_bitmap(wxWindow *win, wxBitmap** bmp, const std::string& bmp_na scale_base = (unsigned int)(Slic3r::GUI::wxGetApp().em_unit() * px_cnt * 0.1f + 0.5f); std::string bmp_name = bmp_name_in; - boost::replace_last(bmp_name, ".png", ""); + boost::replace_last(bmp_name, ".png", ""); // Try loading an SVG first, then PNG if SVG is not found: - *bmp = cache.load_svg(bmp_name, width, height, scale_factor); - if (*bmp == nullptr) { - *bmp = cache.load_png(bmp_name, width, height); + wxBitmap *bmp = cache.load_svg(bmp_name, width, height, scale_factor); + if (bmp == nullptr) { + bmp = cache.load_png(bmp_name, width, height); } - if (*bmp == nullptr) { + if (bmp == nullptr) { // Neither SVG nor PNG has been found, raise error throw std::runtime_error("Could not load bitmap: " + bmp_name); } - // XXX: useless - return *bmp != nullptr; -} - -// If an icon has horizontal orientation (width > height) call this function with is_horizontal = true -wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, const int px_cnt/* = 16*/, const bool is_horizontal /* = false*/) -{ - wxBitmap *bmp {nullptr}; - load_scaled_bitmap(win, &bmp, bmp_name_in, px_cnt, is_horizontal); return *bmp; } diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index b1055bd809..4a3482abcf 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -31,7 +31,6 @@ wxMenuItem* append_submenu(wxMenu* menu, wxMenu* sub_menu, int id, const wxStrin wxMenuItem* append_menu_radio_item(wxMenu* menu, int id, const wxString& string, const wxString& description, std::function cb, wxEvtHandler* event_handler); -bool load_scaled_bitmap(wxWindow *win, wxBitmap** bmp, const std::string& bmp_name, const int px_cnt=16, const bool is_horizontal = false); wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name, const int px_cnt=16, const bool is_horizontal = false); class wxCheckListBoxComboPopup : public wxCheckListBox, public wxComboPopup