FIX:external transparent material display error

JIRA: STUDIO-5845
Change-Id: I0a4f05ac5d5c0ac49d85a704ee65a7221c5f1e1d
This commit is contained in:
hu.wang 2024-01-08 16:28:56 +08:00 committed by lane.wei
parent 8c34a3caac
commit 7f54245b67
5 changed files with 24 additions and 6 deletions

View File

@ -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));

View File

@ -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<wxColour> m_cols;

View File

@ -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<wxColour> 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);

View File

@ -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();
}

View File

@ -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;