mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-21 07:41:09 -06:00
NEW:support transparent color display
Change-Id: I49e0e4c507121af7dad912a3a549348e7ade8eec
This commit is contained in:
parent
57873e6e59
commit
9f8397b187
14 changed files with 317 additions and 49 deletions
|
@ -644,7 +644,7 @@ void AMSMaterialsSetting::set_colors(std::vector<wxColour> colors)
|
|||
void AMSMaterialsSetting::on_picker_color(wxCommandEvent& event)
|
||||
{
|
||||
unsigned int color_num = event.GetInt();
|
||||
set_color(wxColour(color_num>>16&0xFF, color_num>>8&0xFF, color_num&0xFF));
|
||||
set_color(wxColour(color_num>>24&0xFF, color_num>>16&0xFF, color_num>>8&0xFF, color_num&0xFF));
|
||||
}
|
||||
|
||||
void AMSMaterialsSetting::on_clr_picker(wxMouseEvent &event)
|
||||
|
@ -929,7 +929,9 @@ ColorPicker::ColorPicker(wxWindow* parent, wxWindowID id, const wxPoint& pos /*=
|
|||
SetMaxSize(wxSize(FromDIP(25), FromDIP(25)));
|
||||
|
||||
Bind(wxEVT_PAINT, &ColorPicker::paintEvent, this);
|
||||
|
||||
m_bitmap_border = create_scaled_bitmap("color_picker_border", nullptr, 25);
|
||||
m_bitmap_transparent = create_scaled_bitmap("transparent_color_picker", nullptr, 25);
|
||||
}
|
||||
|
||||
ColorPicker::~ColorPicker(){}
|
||||
|
@ -982,13 +984,19 @@ void ColorPicker::render(wxDC& dc)
|
|||
void ColorPicker::doRender(wxDC& dc)
|
||||
{
|
||||
wxSize size = GetSize();
|
||||
auto alpha = m_colour.Alpha();
|
||||
|
||||
auto radius = m_show_full?size.x / 2:size.x / 2 - FromDIP(1);
|
||||
if (m_selected) radius -= FromDIP(1);
|
||||
|
||||
dc.SetPen(wxPen(m_colour));
|
||||
dc.SetBrush(wxBrush(m_colour));
|
||||
dc.DrawCircle(size.x / 2, size.x / 2, radius);
|
||||
if (alpha == 0) {
|
||||
dc.DrawBitmap(m_bitmap_transparent, 0, 0);
|
||||
}
|
||||
else {
|
||||
dc.SetPen(wxPen(m_colour));
|
||||
dc.SetBrush(wxBrush(m_colour));
|
||||
dc.DrawCircle(size.x / 2, size.x / 2, radius);
|
||||
}
|
||||
|
||||
if (m_selected) {
|
||||
dc.SetPen(wxPen(m_colour));
|
||||
|
@ -1001,6 +1009,11 @@ void ColorPicker::doRender(wxDC& dc)
|
|||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawCircle(size.x / 2, size.x / 2, radius);
|
||||
|
||||
//transparent
|
||||
if (alpha == 0) {
|
||||
dc.DrawBitmap(m_bitmap_transparent, 0, 0);
|
||||
}
|
||||
|
||||
if (m_cols.size() > 1) {
|
||||
int left = FromDIP(0);
|
||||
float total_width = size.x;
|
||||
|
@ -1096,7 +1109,7 @@ ColorPickerPopup::ColorPickerPopup(wxWindow* parent)
|
|||
set_def_colour(cp->m_colour);
|
||||
|
||||
wxCommandEvent evt(EVT_SELECTED_COLOR);
|
||||
unsigned long g_col = ((cp->m_colour.Red() & 0xff) << 16) + ((cp->m_colour.Green() & 0xff) << 8) + (cp->m_colour.Blue() & 0xff);
|
||||
unsigned long g_col = ((cp->m_colour.Red() & 0xff) << 24) + ((cp->m_colour.Green() & 0xff) << 16) + ((cp->m_colour.Blue() & 0xff) << 8) + (cp->m_colour.Alpha() & 0xff);
|
||||
evt.SetInt(g_col);
|
||||
wxPostEvent(GetParent(), evt);
|
||||
});
|
||||
|
@ -1183,7 +1196,7 @@ void ColorPickerPopup::on_custom_clr_picker(wxMouseEvent& event)
|
|||
m_custom_cp->SetBackgroundColor(picker_color);
|
||||
set_def_colour(picker_color);
|
||||
wxCommandEvent evt(EVT_SELECTED_COLOR);
|
||||
unsigned long g_col = ((picker_color.Red() & 0xff) << 16) + ((picker_color.Green() & 0xff) << 8) + (picker_color.Blue() & 0xff);
|
||||
unsigned long g_col = ((picker_color.Red() & 0xff) << 24) + ((picker_color.Green() & 0xff) << 16) + ((picker_color.Blue() & 0xff) << 8) + (picker_color.Alpha() & 0xff);
|
||||
evt.SetInt(g_col);
|
||||
wxPostEvent(GetParent(), evt);
|
||||
}
|
||||
|
@ -1218,7 +1231,7 @@ void ColorPickerPopup::set_ams_colours(std::vector<wxColour> ams)
|
|||
set_def_colour(cp->m_colour);
|
||||
|
||||
wxCommandEvent evt(EVT_SELECTED_COLOR);
|
||||
unsigned long g_col = ((cp->m_colour.Red() & 0xff) << 16) + ((cp->m_colour.Green() & 0xff) << 8) + (cp->m_colour.Blue() & 0xff);
|
||||
unsigned long g_col = ((cp->m_colour.Red() & 0xff) << 24) + ((cp->m_colour.Green() & 0xff) << 16) + ((cp->m_colour.Blue() & 0xff) << 8) + (cp->m_colour.Alpha() & 0xff);
|
||||
evt.SetInt(g_col);
|
||||
wxPostEvent(GetParent(), evt);
|
||||
});
|
||||
|
|
|
@ -32,6 +32,8 @@ class ColorPicker : public wxWindow
|
|||
{
|
||||
public:
|
||||
wxBitmap m_bitmap_border;
|
||||
wxBitmap m_bitmap_transparent;
|
||||
|
||||
wxColour m_colour;
|
||||
std::vector<wxColour> m_cols;
|
||||
bool m_selected{false};
|
||||
|
|
|
@ -30,7 +30,7 @@ wxDEFINE_EVENT(EVT_SET_FINISH_MAPPING, wxCommandEvent);
|
|||
{
|
||||
m_arraw_bitmap_gray = ScalableBitmap(this, "drop_down", FromDIP(12));
|
||||
m_arraw_bitmap_white = ScalableBitmap(this, "topbar_dropdown", FromDIP(12));
|
||||
|
||||
m_transparent_mitem = ScalableBitmap(this, "transparent_material_item", FromDIP(32));
|
||||
|
||||
m_material_coloul = mcolour;
|
||||
m_material_name = mname;
|
||||
|
@ -121,6 +121,7 @@ void MaterialItem::render(wxDC &dc)
|
|||
dc.SetFont(::Label::Body_13);
|
||||
|
||||
auto material_name_colour = m_material_coloul.GetLuminance() < 0.5 ? *wxWHITE : wxColour(0x26, 0x2E, 0x30);
|
||||
if (m_material_coloul.Alpha() == 0) {material_name_colour = wxColour(0x26, 0x2E, 0x30);}
|
||||
dc.SetTextForeground(material_name_colour);
|
||||
|
||||
if (dc.GetTextExtent(m_material_name).x > GetSize().x - 10) {
|
||||
|
@ -134,6 +135,9 @@ void MaterialItem::render(wxDC &dc)
|
|||
// mapping num
|
||||
dc.SetFont(::Label::Body_10);
|
||||
dc.SetTextForeground(m_ams_coloul.GetLuminance() < 0.5 ? *wxWHITE : wxColour(0x26, 0x2E, 0x30));
|
||||
if (m_ams_coloul.Alpha() == 0) {
|
||||
dc.SetTextForeground(wxColour(0x26, 0x2E, 0x30));
|
||||
}
|
||||
|
||||
wxString mapping_txt = wxEmptyString;
|
||||
if (m_ams_name.empty()) {
|
||||
|
@ -148,6 +152,10 @@ void MaterialItem::render(wxDC &dc)
|
|||
|
||||
void MaterialItem::doRender(wxDC &dc)
|
||||
{
|
||||
if (m_material_coloul.Alpha() == 0) {
|
||||
dc.DrawBitmap(m_transparent_mitem.bmp(), FromDIP(1), FromDIP(1));
|
||||
}
|
||||
|
||||
//top
|
||||
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||
dc.SetBrush(wxBrush(m_material_coloul));
|
||||
|
@ -181,7 +189,7 @@ void MaterialItem::doRender(wxDC &dc)
|
|||
dc.DrawRoundedRectangle(1, 1, MATERIAL_ITEM_SIZE.x - 1, MATERIAL_ITEM_SIZE.y - 1, 5);
|
||||
}
|
||||
#else
|
||||
if (m_material_coloul == *wxWHITE || m_ams_coloul == *wxWHITE) {
|
||||
if (m_material_coloul == *wxWHITE || m_ams_coloul == *wxWHITE || m_ams_coloul.Alpha() == 0) {
|
||||
dc.SetPen(wxColour(0xAC, 0xAC, 0xAC));
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawRoundedRectangle(0, 0, MATERIAL_ITEM_SIZE.x, MATERIAL_ITEM_SIZE.y, 5);
|
||||
|
@ -194,7 +202,6 @@ void MaterialItem::doRender(wxDC &dc)
|
|||
}
|
||||
#endif
|
||||
//arrow
|
||||
|
||||
if ( (m_ams_coloul.Red() > 160 && m_ams_coloul.Green() > 160 && m_ams_coloul.Blue() > 160) &&
|
||||
(m_ams_coloul.Red() < 180 && m_ams_coloul.Green() < 180 && m_ams_coloul.Blue() < 180)) {
|
||||
dc.DrawBitmap(m_arraw_bitmap_white.bmp(), GetSize().x - m_arraw_bitmap_white.GetBmpSize().x - FromDIP(7), GetSize().y - m_arraw_bitmap_white.GetBmpSize().y);
|
||||
|
@ -535,6 +542,8 @@ void AmsMapingPopup::paintEvent(wxPaintEvent &evt)
|
|||
#ifdef __WINDOWS__
|
||||
SetDoubleBuffered(true);
|
||||
#endif //__WINDOWS__
|
||||
|
||||
m_transparent_mapping_item = ScalableBitmap(this, "transparent_mapping_item", FromDIP(44));
|
||||
SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE));
|
||||
Bind(wxEVT_PAINT, &MappingItem::paintEvent, this);
|
||||
}
|
||||
|
@ -550,7 +559,7 @@ void MappingItem::send_event(int fliament_id)
|
|||
wxCommandEvent event(EVT_SET_FINISH_MAPPING);
|
||||
event.SetInt(m_tray_data.id);
|
||||
|
||||
wxString param = wxString::Format("%d|%d|%d|%s|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), number, fliament_id);
|
||||
wxString param = wxString::Format("%d|%d|%d|%d|%s|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), number, fliament_id);
|
||||
event.SetString(param);
|
||||
event.SetEventObject(this->GetParent()->GetParent());
|
||||
wxPostEvent(this->GetParent()->GetParent()->GetParent(), event);
|
||||
|
@ -594,7 +603,7 @@ void MappingItem::render(wxDC &dc)
|
|||
|
||||
auto txt_colour = m_coloul.GetLuminance() < 0.5 ? *wxWHITE : wxColour(0x26, 0x2E, 0x30);
|
||||
txt_colour = m_unmatch ? wxColour(0xCE, 0xCE, 0xCE) : txt_colour;
|
||||
|
||||
if (m_coloul.Alpha() == 0) txt_colour = wxColour(0x26, 0x2E, 0x30);
|
||||
dc.SetTextForeground(txt_colour);
|
||||
|
||||
/*if (dc.GetTextExtent(m_name).x > GetSize().x - 10) {
|
||||
|
@ -628,16 +637,14 @@ void MappingItem::doRender(wxDC &dc)
|
|||
{
|
||||
dc.SetPen(m_coloul);
|
||||
dc.SetBrush(wxBrush(m_coloul));
|
||||
dc.DrawRectangle(0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2, MAPPING_ITEM_REAL_SIZE.x, MAPPING_ITEM_REAL_SIZE.y);
|
||||
|
||||
// if (m_coloul == *wxWHITE) {
|
||||
// dc.SetPen(wxPen(wxColour(0xAC, 0xAC, 0xAC), 1));
|
||||
//#ifdef __APPLE__
|
||||
// dc.DrawRectangle(1, 1, GetSize().x - 1, GetSize().y - 1);
|
||||
//#else
|
||||
// dc.DrawRectangle(0, 0, tray_size.x, tray_size.y);
|
||||
//#endif // __APPLE__
|
||||
// }
|
||||
if (m_coloul.Alpha() == 0) {
|
||||
dc.DrawBitmap( m_transparent_mapping_item.bmp(), 0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2);
|
||||
}
|
||||
else {
|
||||
dc.DrawRectangle(0, (GetSize().y - MAPPING_ITEM_REAL_SIZE.y) / 2, MAPPING_ITEM_REAL_SIZE.x, MAPPING_ITEM_REAL_SIZE.y);
|
||||
}
|
||||
|
||||
|
||||
wxColour side_colour = wxColour(0xE4E4E4);
|
||||
|
||||
|
|
|
@ -75,6 +75,7 @@ public:
|
|||
|
||||
ScalableBitmap m_arraw_bitmap_gray;
|
||||
ScalableBitmap m_arraw_bitmap_white;
|
||||
ScalableBitmap m_transparent_mitem;
|
||||
|
||||
bool m_selected {false};
|
||||
bool m_warning{false};
|
||||
|
@ -106,6 +107,7 @@ public:
|
|||
wxColour m_coloul;
|
||||
wxString m_name;
|
||||
TrayData m_tray_data;
|
||||
ScalableBitmap m_transparent_mapping_item;
|
||||
bool m_unmatch{false};
|
||||
|
||||
void msw_rescale();
|
||||
|
|
|
@ -449,6 +449,7 @@ bool BitmapCache::parse_color(const std::string& scolor, unsigned char* rgb_out)
|
|||
return false;
|
||||
rgb_out[i] = (unsigned char)(digit1 * 16 + digit2);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -173,19 +173,19 @@ public:
|
|||
|
||||
static wxColour decode_color(const std::string &color)
|
||||
{
|
||||
std::array<int, 3> ret = {0, 0, 0};
|
||||
std::array<int, 4> ret = {0, 0, 0, 0};
|
||||
const char * c = color.data();
|
||||
if (color.size() == 8) {
|
||||
for (size_t j = 0; j < 3; ++j) {
|
||||
for (size_t j = 0; j < 4; ++j) {
|
||||
int digit1 = hex_digit_to_int(*c++);
|
||||
int digit2 = hex_digit_to_int(*c++);
|
||||
if (digit1 == -1 || digit2 == -1) break;
|
||||
ret[j] = float(digit1 * 16 + digit2);
|
||||
}
|
||||
} else {
|
||||
return wxColour(255, 255, 255);
|
||||
return wxColour(255, 255, 255, 255);
|
||||
}
|
||||
return wxColour(ret[0], ret[1], ret[2]);
|
||||
return wxColour(ret[0], ret[1], ret[2], ret[3]);
|
||||
}
|
||||
|
||||
std::string id;
|
||||
|
|
|
@ -1899,11 +1899,7 @@ bool SelectMachineDialog::get_ams_mapping_result(std::string &mapping_array_str,
|
|||
mapping_item["filamentId"] = it->filament_id;
|
||||
}
|
||||
//convert #RRGGBB to RRGGBBAA
|
||||
if (m_filaments[k].color.size() > 6) {
|
||||
mapping_item["sourceColor"] = m_filaments[k].color.substr(1, 6) + "FF";
|
||||
} else {
|
||||
mapping_item["sourceColor"] = m_filaments[k].color;
|
||||
}
|
||||
mapping_item["sourceColor"] = m_filaments[k].color;
|
||||
mapping_item["targetColor"] = m_ams_mapping_result[k].color;
|
||||
}
|
||||
}
|
||||
|
@ -2445,7 +2441,7 @@ void SelectMachineDialog::on_send_print()
|
|||
json mapping_info_json = json::array();
|
||||
json item;
|
||||
if (m_filaments.size() > 0) {
|
||||
item["sourceColor"] = m_filaments[0].color.substr(1, 6) + "FF";
|
||||
item["sourceColor"] = m_filaments[0].color.substr(1, 8);
|
||||
item["filamentType"] = m_filaments[0].type;
|
||||
mapping_info_json.push_back(item);
|
||||
ams_mapping_info = mapping_info_json.dump();
|
||||
|
@ -2604,13 +2600,13 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt)
|
|||
|
||||
BOOST_LOG_TRIVIAL(info) << "The ams mapping selection result: data is " << selection_data;
|
||||
|
||||
if (selection_data_arr.size() == 5) {
|
||||
if (selection_data_arr.size() == 6) {
|
||||
for (auto i = 0; i < m_ams_mapping_result.size(); i++) {
|
||||
if (m_ams_mapping_result[i].id == wxAtoi(selection_data_arr[4])) {
|
||||
if (m_ams_mapping_result[i].id == wxAtoi(selection_data_arr[5])) {
|
||||
m_ams_mapping_result[i].tray_id = evt.GetInt();
|
||||
auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]));
|
||||
auto color = wxString::Format("%sFF", ams_colour.GetAsString(wxC2S_HTML_SYNTAX).substr(1, ams_colour.GetAsString(wxC2S_HTML_SYNTAX).size()-1));
|
||||
m_ams_mapping_result[i].color = color.ToStdString();
|
||||
auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]), wxAtoi(selection_data_arr[3]));
|
||||
wxString color = wxString::Format("#%02X%02X%02X%02X", ams_colour.Red(), ams_colour.Green(), ams_colour.Blue(), ams_colour.Alpha());
|
||||
m_ams_mapping_result[i].color = color.ToStdString();
|
||||
}
|
||||
BOOST_LOG_TRIVIAL(trace) << "The ams mapping result: id is " << m_ams_mapping_result[i].id << "tray_id is " << m_ams_mapping_result[i].tray_id;
|
||||
}
|
||||
|
@ -2620,8 +2616,8 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt)
|
|||
Material* item = iter->second;
|
||||
MaterialItem *m = item->item;
|
||||
if (item->id == m_current_filament_id) {
|
||||
auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]));
|
||||
m->set_ams_info(ams_colour, selection_data_arr[3]);
|
||||
auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]), wxAtoi(selection_data_arr[3]));
|
||||
m->set_ams_info(ams_colour, selection_data_arr[4]);
|
||||
}
|
||||
iter++;
|
||||
}
|
||||
|
@ -3443,11 +3439,11 @@ void SelectMachineDialog::set_default_normal()
|
|||
|
||||
for (auto i = 0; i < extruders.size(); i++) {
|
||||
auto extruder = extruders[i] - 1;
|
||||
auto colour = wxGetApp().preset_bundle->project_config.opt_string("filament_colour", (unsigned int)extruder);
|
||||
unsigned char rgb[3];
|
||||
bmcache.parse_color(colour, rgb);
|
||||
auto colour = wxGetApp().preset_bundle->project_config.opt_string("filament_colour", (unsigned int) extruder);
|
||||
unsigned char rgb[4];
|
||||
bmcache.parse_color4(colour, rgb);
|
||||
|
||||
auto colour_rgb = wxColour((int)rgb[0], (int)rgb[1], (int)rgb[2]);
|
||||
auto colour_rgb = wxColour((int) rgb[0], (int) rgb[1], (int) rgb[2], (int) rgb[3]);
|
||||
if (extruder >= materials.size() || extruder < 0 || extruder >= display_materials.size())
|
||||
continue;
|
||||
|
||||
|
@ -3507,7 +3503,7 @@ void SelectMachineDialog::set_default_normal()
|
|||
info.id = extruder;
|
||||
info.type = materials[extruder];
|
||||
info.brand = brands[extruder];
|
||||
info.color = colour_rgb.GetAsString(wxC2S_HTML_SYNTAX).ToStdString();
|
||||
info.color = wxString::Format("#%02X%02X%02X%02X", colour_rgb.Red(), colour_rgb.Green(), colour_rgb.Blue(), colour_rgb.Alpha()).ToStdString();
|
||||
m_filaments.push_back(info);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -633,6 +633,7 @@ void AMSLib::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const w
|
|||
m_bitmap_editable_light = ScalableBitmap(this, "ams_editable_light", 14);
|
||||
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", FromDIP(68));
|
||||
|
||||
m_sizer_body->Add(0, 0, 1, wxEXPAND, 0);
|
||||
m_sizer_body->Add(m_sizer_edit, 0, wxALIGN_CENTER, 0);
|
||||
|
@ -723,9 +724,9 @@ void AMSLib::render(wxDC &dc)
|
|||
temp_text_colour = AMS_CONTROL_GRAY800;
|
||||
}
|
||||
|
||||
//if (!wxWindow::IsEnabled()) {
|
||||
//temp_text_colour = AMS_CONTROL_DISABLE_TEXT_COLOUR;
|
||||
//}
|
||||
if (tmp_lib_colour.Alpha() == 0) {
|
||||
temp_text_colour = AMS_CONTROL_GRAY800;
|
||||
}
|
||||
|
||||
dc.SetFont(::Label::Body_13);
|
||||
dc.SetTextForeground(temp_text_colour);
|
||||
|
@ -829,9 +830,10 @@ void AMSLib::doRender(wxDC &dc)
|
|||
temp_bitmap_brand = m_bitmap_readonly;
|
||||
}
|
||||
|
||||
//if (!wxWindow::IsEnabled()) {
|
||||
//tmp_lib_colour = AMS_CONTROL_DISABLE_COLOUR;
|
||||
//}
|
||||
if (tmp_lib_colour.Alpha() == 0) {
|
||||
temp_bitmap_third = m_bitmap_editable;
|
||||
temp_bitmap_brand = m_bitmap_readonly;
|
||||
}
|
||||
|
||||
// selected
|
||||
if (m_selected) {
|
||||
|
@ -888,6 +890,12 @@ void AMSLib::doRender(wxDC &dc)
|
|||
|
||||
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));
|
||||
}
|
||||
|
||||
//gradient
|
||||
if (m_info.material_cols.size() > 1) {
|
||||
int left = FromDIP(4);
|
||||
|
|
|
@ -307,6 +307,8 @@ protected:
|
|||
ScalableBitmap m_bitmap_editable_light;
|
||||
ScalableBitmap m_bitmap_readonly;
|
||||
ScalableBitmap m_bitmap_readonly_light;
|
||||
ScalableBitmap m_bitmap_transparent;
|
||||
|
||||
bool m_unable_selected = {false};
|
||||
bool m_enable = {false};
|
||||
bool m_selected = {false};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue