diff --git a/resources/images/color_picker_border_dark.svg b/resources/images/color_picker_border_dark.svg
new file mode 100644
index 000000000..a2d89403a
--- /dev/null
+++ b/resources/images/color_picker_border_dark.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp
index db9b0fe30..368a9d78b 100644
--- a/src/slic3r/GUI/AMSMaterialsSetting.cpp
+++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp
@@ -1123,6 +1123,7 @@ ColorPicker::ColorPicker(wxWindow* parent, wxWindowID id, const wxPoint& pos /*=
Bind(wxEVT_PAINT, &ColorPicker::paintEvent, this);
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 = create_scaled_bitmap("transparent_color_picker", nullptr, 25);
}
@@ -1131,12 +1132,14 @@ ColorPicker::~ColorPicker(){}
void ColorPicker::msw_rescale()
{
m_bitmap_border = create_scaled_bitmap("color_picker_border", nullptr, 25);
+ m_bitmap_border_dark = create_scaled_bitmap("color_picker_border_dark", nullptr, 25);
+
Refresh();
}
void ColorPicker::set_color(wxColour col)
{
- if (m_colour != col&&col.Alpha()!=0&&col.Alpha()!=255) {
+ if (m_colour != col && col.Alpha() != 0 && col.Alpha() != 255 && col.Alpha() != 254) {
transparent_changed = true;
}
m_colour = col;
@@ -1186,22 +1189,22 @@ void ColorPicker::doRender(wxDC& dc)
if (alpha == 0) {
dc.DrawBitmap(m_bitmap_transparent, 0, 0);
}
- else if (alpha != 0 && alpha != 255) {
+ else if (alpha != 254 && alpha != 255) {
if (transparent_changed) {
std::string rgb = (m_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString();
if (rgb.size() == 8) {
//delete alpha value
rgb = rgb.substr(0, rgb.size() - 2);
}
- float alpha_f = 0.3 * m_colour.Alpha() / 255.0;
+ float alpha_f = 0.7 * m_colour.Alpha() / 255.0;
std::vector replace;
replace.push_back(rgb);
std::string fill_replace = "fill-opacity=\"" + std::to_string(alpha_f);
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));
@@ -1220,10 +1223,6 @@ void ColorPicker::doRender(wxDC& dc)
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.DrawCircle(size.x / 2, size.y / 2, radius);
- //transparent
- if (alpha == 0) {
- dc.DrawBitmap(m_bitmap_transparent, 0, 0);
- }
if (m_cols.size() > 1) {
if (ctype == 0) {
int left = FromDIP(0);
@@ -1240,7 +1239,12 @@ void ColorPicker::doRender(wxDC& dc)
dc.GradientFillLinear(rect, m_cols[i], m_cols[i + 1], wxEAST);
left += gwidth;
}
- dc.DrawBitmap(m_bitmap_border, wxPoint(0, 0));
+ if (wxGetApp().dark_mode()) {
+ dc.DrawBitmap(m_bitmap_border_dark, wxPoint(0, 0));
+ }
+ else {
+ dc.DrawBitmap(m_bitmap_border, wxPoint(0, 0));
+ }
}
else {
float ev_angle = 360.0 / m_cols.size();
@@ -1256,7 +1260,12 @@ void ColorPicker::doRender(wxDC& dc)
startAngle += ev_angle;
startAngle = startAngle > 360.0 ? startAngle - 360.0 : startAngle;
}
- dc.DrawBitmap(m_bitmap_border, wxPoint(0, 0));
+ if (wxGetApp().dark_mode()) {
+ dc.DrawBitmap(m_bitmap_border_dark, wxPoint(0, 0));
+ }
+ else {
+ dc.DrawBitmap(m_bitmap_border, wxPoint(0, 0));
+ }
}
}
}
diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp
index 5cdb03a66..cb4fcaaae 100644
--- a/src/slic3r/GUI/AMSMaterialsSetting.hpp
+++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp
@@ -34,6 +34,7 @@ class ColorPicker : public wxWindow
{
public:
wxBitmap m_bitmap_border;
+ wxBitmap m_bitmap_border_dark;
wxBitmap m_bitmap_transparent;
wxColour m_colour;
diff --git a/src/slic3r/GUI/AMSSetting.cpp b/src/slic3r/GUI/AMSSetting.cpp
index ac62d1eba..c3ecdf848 100644
--- a/src/slic3r/GUI/AMSSetting.cpp
+++ b/src/slic3r/GUI/AMSSetting.cpp
@@ -264,6 +264,9 @@ void AMSSetting::update_insert_material_read_mode(bool selected)
void AMSSetting::update_ams_img(std::string ams_icon_str)
{
+ if (wxGetApp().dark_mode()&& ams_icon_str=="extra_icon") {
+ ams_icon_str += "_dark";
+ }
m_am_img->SetBitmap(create_scaled_bitmap(ams_icon_str, nullptr, 126));
}
diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp
index 826ab24ca..edf108623 100644
--- a/src/slic3r/GUI/Widgets/AMSControl.cpp
+++ b/src/slic3r/GUI/Widgets/AMSControl.cpp
@@ -863,7 +863,7 @@ void AMSLib::render_generic_text(wxDC &dc)
dc.SetFont(::Label::Body_13);
dc.SetTextForeground(temp_text_colour);
auto alpha = m_info.material_colour.Alpha();
- if (alpha != 0 && alpha != 255) {
+ if (alpha != 0 && alpha != 255 && alpha != 254) {
dc.SetTextForeground(*wxBLACK);
}
@@ -1108,6 +1108,9 @@ void AMSLib::render_generic_lib(wxDC &dc)
// selected
if (m_selected) {
dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID));
+ if (tmp_lib_colour.Alpha() == 0) {
+ dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(),tmp_lib_colour.Blue(),128), 2, wxSOLID));
+ }
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
if (m_radius == 0) {
dc.DrawRectangle(0, 0, size.x, size.y);
@@ -1139,18 +1142,38 @@ void AMSLib::render_generic_lib(wxDC &dc)
}
//draw remain
+ auto alpha = m_info.material_colour.Alpha();
int height = size.y - FromDIP(8);
- int curr_height = height * float(m_info.material_remain * 1.0 / 100.0); dc.SetFont(::Label::Body_13);
+ int curr_height = height * float(m_info.material_remain * 1.0 / 100.0);
+ dc.SetFont(::Label::Body_13);
int top = height - curr_height;
if (curr_height >= FromDIP(6)) {
//transparent
- auto alpha = m_info.material_colour.Alpha();
+
if (alpha == 0) {
dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4));
}
+ else if (alpha != 255 && alpha != 254) {
+ if (transparent_changed) {
+ std::string rgb = (tmp_lib_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString();
+ if (rgb.size() == 9) {
+ //delete alpha value
+ rgb = rgb.substr(0, rgb.size() - 2);
+ }
+ float alpha_f = 0.7 * tmp_lib_colour.Alpha() / 255.0;
+ std::vector replace;
+ replace.push_back(rgb);
+ std::string fill_replace = "fill-opacity=\"" + std::to_string(alpha_f);
+ replace.push_back(fill_replace);
+ m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68, false, false, true, replace);
+ transparent_changed = false;
+
+ }
+ dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4));
+ }
//gradient
if (m_info.material_cols.size() > 1) {
int left = FromDIP(4);
@@ -1206,34 +1229,29 @@ void AMSLib::render_generic_lib(wxDC &dc)
}
}
else {
+ auto brush = dc.GetBrush();
+ if (alpha != 0 && alpha != 255 && alpha != 254) dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
#ifdef __APPLE__
dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), curr_height, m_radius);
#else
dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), curr_height, m_radius - 1);
- if (alpha != 0 && alpha != 255) {
- if (transparent_changed) {
- std::string rgb = (tmp_lib_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString();
- if (rgb.size() == 8) {
- //delete alpha value
- rgb= rgb.substr(0, rgb.size() - 2);
- }
- float alpha_f = 0.3 * tmp_lib_colour.Alpha() / 255.0;
- std::vector replace;
- replace.push_back(rgb);
- std::string fill_replace = "fill-opacity=\"" + std::to_string(alpha_f);
- replace.push_back(fill_replace);
- m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68, false, false, true, replace);
- transparent_changed = false;
- }
- dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4));
- }
#endif
+ dc.SetBrush(brush);
}
}
if (top > 2) {
if (curr_height >= FromDIP(6)) {
dc.DrawRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), FromDIP(2));
+ if (alpha != 255 && alpha != 254) {
+ dc.SetPen(wxPen(*wxWHITE));
+ dc.SetBrush(wxBrush(*wxWHITE));
+#ifdef __APPLE__
+ dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) , size.x - FromDIP(8), top, m_radius);
+#else
+ dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) , size.x - FromDIP(8), top, m_radius - 1);
+#endif
+ }
if (tmp_lib_colour.Red() > 238 && tmp_lib_colour.Green() > 238 && tmp_lib_colour.Blue() > 238) {
dc.SetPen(wxPen(wxColour(130, 129, 128), 1, wxSOLID));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
@@ -1295,7 +1313,7 @@ void AMSLib::Update(Caninfo info, bool refresh)
if (dev->get_selected_machine() && dev->get_selected_machine() != m_obj) {
m_obj = dev->get_selected_machine();
}
- if (info.material_colour.Alpha() != 0 && info.material_colour.Alpha() != 255 && m_info.material_colour != info.material_colour) {
+ if (info.material_colour.Alpha() != 0 && info.material_colour.Alpha() != 255 && info.material_colour.Alpha() != 254 && m_info.material_colour != info.material_colour) {
transparent_changed = true;
}
m_info = info;
@@ -2612,6 +2630,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_vams_top_sizer->Add(m_vams_lib, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(4));
m_vams_top_sizer->Add(m_vams_road, 0, wxALL, 0);
+
//extra road
vams_panel->SetSizer(m_vams_top_sizer);
@@ -2889,6 +2908,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
CreateAms();
SetSelection(0);
EnterNoneAMSMode();
+
}
void AMSControl::on_retry()
diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp
index 711cde26a..411eff71d 100644
--- a/src/slic3r/GUI/Widgets/AMSControl.hpp
+++ b/src/slic3r/GUI/Widgets/AMSControl.hpp
@@ -124,7 +124,7 @@ enum FilamentStepType {
#define AMS_ITEM_CUBE_SIZE wxSize(FromDIP(14), FromDIP(14))
#define AMS_ITEM_SIZE wxSize(FromDIP(82), FromDIP(27))
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
-#define AMS_CAN_LIB_SIZE wxSize(FromDIP(58), FromDIP(80))
+#define AMS_CAN_LIB_SIZE wxSize(FromDIP(58), FromDIP(75))
#define AMS_CAN_ROAD_SIZE wxSize(FromDIP(66), FromDIP(70))
#define AMS_CAN_ITEM_HEIGHT_SIZE FromDIP(27)
#define AMS_CANS_SIZE wxSize(FromDIP(284), FromDIP(196))