diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index b99125e05..0e0998b28 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -1122,6 +1122,7 @@ ColorPicker::ColorPicker(wxWindow* parent, wxWindowID id, const wxPoint& pos /*= m_bitmap_border = create_scaled_bitmap("color_picker_border", nullptr, 25); m_bitmap_border_dark = create_scaled_bitmap("color_picker_border_dark", nullptr, 25); + m_bitmap_transparent_def = create_scaled_bitmap("transparent_color_picker", nullptr, 25); m_bitmap_transparent = create_scaled_bitmap("transparent_color_picker", nullptr, 25); } @@ -1185,12 +1186,12 @@ void ColorPicker::doRender(wxDC& dc) if (m_selected) radius -= FromDIP(1); if (alpha == 0) { - dc.DrawBitmap(m_bitmap_transparent, 0, 0); + dc.DrawBitmap(m_bitmap_transparent_def, 0, 0); } else if (alpha != 254 && alpha != 255) { if (transparent_changed) { std::string rgb = (m_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString(); - if (rgb.size() == 8) { + if (rgb.size() == 9) { //delete alpha value rgb = rgb.substr(0, rgb.size() - 2); } @@ -1201,8 +1202,8 @@ void ColorPicker::doRender(wxDC& dc) replace.push_back(fill_replace); m_bitmap_transparent = ScalableBitmap(this, "transparent_color_picker", 25, false, false, true, replace).bmp(); transparent_changed = false; - dc.DrawBitmap(m_bitmap_transparent, 0, 0); } + dc.DrawBitmap(m_bitmap_transparent, 0, 0); } else { dc.SetPen(wxPen(m_colour)); diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index c07d252d0..065198863 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -35,6 +35,7 @@ public: wxBitmap m_bitmap_border; wxBitmap m_bitmap_border_dark; wxBitmap m_bitmap_transparent; + wxBitmap m_bitmap_transparent_def; //default transparent material wxColour m_colour; std::vector m_cols; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index f28c6cc88..42816b396 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -3477,12 +3477,19 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event) wxColor color = AmsTray::decode_color(obj->vt_tray.color); m_filament_setting_dlg->ams_filament_id = obj->vt_tray.setting_id; + std::vector cols; + for (auto col : obj->vt_tray.cols) { + cols.push_back(AmsTray::decode_color(col)); + } + m_filament_setting_dlg->set_ctype(obj->vt_tray.ctype); if (m_filament_setting_dlg->ams_filament_id.empty()) { m_filament_setting_dlg->set_empty_color(color); } else { m_filament_setting_dlg->set_color(color); + m_filament_setting_dlg->set_colors(cols); + } m_filament_setting_dlg->m_is_third = !MachineObject::is_bbl_filament(obj->vt_tray.tag_uid); diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index a000197c9..7a7ed9154 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -646,6 +646,7 @@ void AMSLib::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const w m_bitmap_readonly = ScalableBitmap(this, "ams_readonly", 14); m_bitmap_readonly_light = ScalableBitmap(this, "ams_readonly_light", 14); m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68); + m_bitmap_transparent_def = ScalableBitmap(this, "transparent_ams_lib", 68); m_bitmap_extra_tray_left = ScalableBitmap(this, "extra_ams_tray_left", 80); m_bitmap_extra_tray_right = ScalableBitmap(this, "extra_ams_tray_right", 80); @@ -1151,7 +1152,7 @@ void AMSLib::render_generic_lib(wxDC &dc) //transparent if (alpha == 0) { - dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4)); + dc.DrawBitmap(m_bitmap_transparent_def.bmp(), FromDIP(4), FromDIP(4)); } else if (alpha != 255 && alpha != 254) { if (transparent_changed) { @@ -1348,7 +1349,9 @@ bool AMSLib::Enable(bool enable) { return wxWindow::Enable(enable); } void AMSLib::msw_rescale() { - m_bitmap_transparent.msw_rescale(); + //m_bitmap_transparent.msw_rescale(); + m_bitmap_transparent_def.msw_rescale(); + } /************************************************* @@ -3287,6 +3290,10 @@ void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj) m_vams_info.material_name = tray.get_display_filament_type(); m_vams_info.material_colour = tray.get_color(); m_vams_lib->m_info.material_name = tray.get_display_filament_type(); + auto col= tray.get_color(); + if (col.Alpha() != 0 && col.Alpha() != 255 && col.Alpha() != 254 && m_vams_lib->m_info.material_colour != col) { + m_vams_lib->transparent_changed = true; + } m_vams_lib->m_info.material_colour = tray.get_color(); m_vams_lib->Refresh(); } diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 411eff71d..6fdb9cfba 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -299,6 +299,7 @@ public: Caninfo m_info; MachineObject* m_obj = {nullptr}; int m_can_index = 0; + bool transparent_changed = { false }; AMSModel m_ams_model; void Update(Caninfo info, bool refresh = true); @@ -323,6 +324,7 @@ protected: ScalableBitmap m_bitmap_readonly; ScalableBitmap m_bitmap_readonly_light; ScalableBitmap m_bitmap_transparent; + ScalableBitmap m_bitmap_transparent_def; ScalableBitmap m_bitmap_extra_tray_left; ScalableBitmap m_bitmap_extra_tray_right; @@ -339,7 +341,7 @@ protected: bool m_hover = {false}; bool m_show_kn = {false}; bool m_support_cali = {false}; - bool transparent_changed = {false}; + double m_radius = {4}; wxColour m_border_color;