Get to a compilable state

Everything seems to be working (including the plater). I am not seeing any graphical issues
This commit is contained in:
Ocraftyone
2023-11-08 06:33:32 -05:00
parent dc062f1a1a
commit 03754b5213
18 changed files with 149 additions and 147 deletions

View File

@@ -46,8 +46,8 @@ void DragCanvas::set_shape_list(const std::vector<std::string>& colors, const st
m_dragshape_list.clear(); m_dragshape_list.clear();
for (int i = 0; i < order.size(); i++) { for (int i = 0; i < order.size(); i++) {
wxBitmap* bmp = get_extruder_color_icon(colors[order[i] - 1], std::to_string(order[i]), SHAPE_SIZE, SHAPE_SIZE); wxBitmap bmp = get_extruder_color_icon(colors[order[i] - 1], std::to_string(order[i]), SHAPE_SIZE, SHAPE_SIZE)->GetBitmapFor(m_parent); //OcraftyoneTODO: quick and dirty conversion
DragShape* shape = new DragShape(*bmp, order[i]); DragShape* shape = new DragShape(bmp, order[i]);
m_dragshape_list.push_back(shape); m_dragshape_list.push_back(shape);
} }

View File

@@ -304,7 +304,7 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR
if (can_create_editor_ctrl && !can_create_editor_ctrl()) if (can_create_editor_ctrl && !can_create_editor_ctrl())
return nullptr; return nullptr;
std::vector<wxBitmap*> icons = get_extruder_color_icons(); std::vector<wxBitmapBundle*> icons = get_extruder_color_icons();
if (icons.empty()) if (icons.empty())
return nullptr; return nullptr;
@@ -320,7 +320,7 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR
c_editor->Append(_L("default"), *get_default_extruder_color_icon()); c_editor->Append(_L("default"), *get_default_extruder_color_icon());
for (size_t i = 0; i < icons.size(); i++) for (size_t i = 0; i < icons.size(); i++)
c_editor->Append(wxString::Format("%d", i+1), *icons[i]); c_editor->Append(wxString::Format("%d", i+1), icons[i]->GetBitmapFor(parent)); //OcraftyoneTODO: quick n dirty conversion
if (has_default_extruder && has_default_extruder()) if (has_default_extruder && has_default_extruder())
c_editor->SetSelection(atoi(data.GetText().c_str())); c_editor->SetSelection(atoi(data.GetText().c_str()));

View File

@@ -1119,7 +1119,7 @@ void Choice::BUILD()
auto icon_name = "param_" + m_opt.enum_values[i]; auto icon_name = "param_" + m_opt.enum_values[i];
if (boost::filesystem::exists(image_path / (icon_name + ".svg"))) { if (boost::filesystem::exists(image_path / (icon_name + ".svg"))) {
ScalableBitmap bm(temp, icon_name, 24); ScalableBitmap bm(temp, icon_name, 24);
temp->Append(_(el), bm.bmp()); temp->Append(_(el), bm.get_bitmap());
} else { } else {
temp->Append(_(el)); temp->Append(_(el));
} }
@@ -1520,7 +1520,7 @@ void Choice::msw_rescale()
auto icon_name = "param_" + m_opt.enum_values[i]; auto icon_name = "param_" + m_opt.enum_values[i];
if (boost::filesystem::exists(image_path / (icon_name + ".svg"))) { if (boost::filesystem::exists(image_path / (icon_name + ".svg"))) {
ScalableBitmap bm(window, icon_name, 24); ScalableBitmap bm(window, icon_name, 24);
temp->SetItemBitmap(i, bm.bmp()); temp->SetItemBitmap(i, bm.get_bitmap());
} }
++i; ++i;
} }

View File

@@ -261,14 +261,13 @@ std::map<std::string, std::string> SettingsFactory::CATEGORY_ICON =
// BBS: remove SLA categories // BBS: remove SLA categories
}; };
wxBitmap SettingsFactory::get_category_bitmap(const std::string& category_name, bool menu_bmp) wxBitmapBundle* SettingsFactory::get_category_bitmap(const std::string& category_name)
{ {
if (CATEGORY_ICON.find(category_name) == CATEGORY_ICON.end()) if (CATEGORY_ICON.find(category_name) == CATEGORY_ICON.end())
return wxNullBitmap; return get_bmp_bundle("empty");
return create_scaled_bitmap(CATEGORY_ICON.at(category_name)); return get_bmp_bundle(CATEGORY_ICON.at(category_name));
} }
//------------------------------------- //-------------------------------------
// MenuFactory // MenuFactory
//------------------------------------- //-------------------------------------
@@ -425,13 +424,14 @@ static void create_freq_settings_popupmenu(wxMenu* menu, const bool is_object_se
} }
} }
std::vector<wxBitmap> MenuFactory::get_volume_bitmaps() std::vector<wxBitmapBundle*> MenuFactory::get_volume_bitmaps()
{ {
std::vector<wxBitmap> volume_bmps; std::vector<wxBitmapBundle*> volume_bmps;
volume_bmps.reserve(ADD_VOLUME_MENU_ITEMS.size()); volume_bmps.reserve(ADD_VOLUME_MENU_ITEMS.size());
for (auto item : ADD_VOLUME_MENU_ITEMS){ for (auto item : ADD_VOLUME_MENU_ITEMS){
if(!item.second.empty()){ if(!item.second.empty()){
volume_bmps.push_back(create_scaled_bitmap(item.second)); //volume_bmps.push_back(create_menu_bitmap(item.second));
volume_bmps.push_back(get_bmp_bundle(item.second));
} }
} }
return volume_bmps; return volume_bmps;
@@ -619,7 +619,7 @@ wxMenuItem* MenuFactory::append_menu_item_settings(wxMenu* menu_)
// Add full settings list // Add full settings list
auto menu_item = new wxMenuItem(menu, wxID_ANY, menu_name); auto menu_item = new wxMenuItem(menu, wxID_ANY, menu_name);
menu_item->SetBitmap(create_scaled_bitmap("cog")); menu_item->SetBitmap(*get_bmp_bundle("cog"));
menu_item->SetSubMenu(create_settings_popupmenu(menu, is_object_settings, item)); menu_item->SetSubMenu(create_settings_popupmenu(menu, is_object_settings, item));
return menu->Append(menu_item); return menu->Append(menu_item);
@@ -760,7 +760,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu)
if (sels.IsEmpty()) if (sels.IsEmpty())
return; return;
std::vector<wxBitmap*> icons = get_extruder_color_icons(true); std::vector<wxBitmapBundle*> icons = get_extruder_color_icons(true);
wxMenu* extruder_selection_menu = new wxMenu(); wxMenu* extruder_selection_menu = new wxMenu();
const wxString& name = sels.Count() == 1 ? names[0] : names[1]; const wxString& name = sels.Count() == 1 ? names[0] : names[1];
@@ -781,7 +781,7 @@ void MenuFactory::append_menu_item_change_extruder(wxMenu* menu)
if (icon_idx >= 0 && icon_idx < icons.size()) { if (icon_idx >= 0 && icon_idx < icons.size()) {
append_menu_item( append_menu_item(
extruder_selection_menu, wxID_ANY, item_name, "", [i](wxCommandEvent &) { obj_list()->set_extruder_for_selected_items(i); }, *icons[icon_idx], menu, extruder_selection_menu, wxID_ANY, item_name, "", [i](wxCommandEvent &) { obj_list()->set_extruder_for_selected_items(i); }, icons[icon_idx], menu,
[is_active_extruder]() { return !is_active_extruder; }, m_parent); [is_active_extruder]() { return !is_active_extruder; }, m_parent);
} else { } else {
append_menu_item( append_menu_item(
@@ -1580,7 +1580,7 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu)
return; return;
} }
std::vector<wxBitmap*> icons = get_extruder_color_icons(true); std::vector<wxBitmapBundle*> icons = get_extruder_color_icons(true);
if (icons.size() < filaments_cnt) { if (icons.size() < filaments_cnt) {
BOOST_LOG_TRIVIAL(warning) << boost::format("Warning: icons size %1%, filaments_cnt=%2%")%icons.size()%filaments_cnt; BOOST_LOG_TRIVIAL(warning) << boost::format("Warning: icons size %1%, filaments_cnt=%2%")%icons.size()%filaments_cnt;
if (icons.size() <= 1) if (icons.size() <= 1)
@@ -1620,8 +1620,9 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu)
const wxString& item_name = (i == 0 ? _L("Default") : wxString::Format(_L("Filament %d"), i)) + const wxString& item_name = (i == 0 ? _L("Default") : wxString::Format(_L("Filament %d"), i)) +
(is_active_extruder ? " (" + _L("current") + ")" : ""); (is_active_extruder ? " (" + _L("current") + ")" : "");
//OcraftyoneTODO: determine if nullptr in place of icon causes issues
append_menu_item(extruder_selection_menu, wxID_ANY, item_name, "", append_menu_item(extruder_selection_menu, wxID_ANY, item_name, "",
[i](wxCommandEvent&) { obj_list()->set_extruder_for_selected_items(i); }, i == 0 ? wxNullBitmap : *icons[i - 1], menu, [i](wxCommandEvent&) { obj_list()->set_extruder_for_selected_items(i); }, i == 0 ? nullptr : icons[i - 1], menu,
[is_active_extruder]() { return !is_active_extruder; }, m_parent); [is_active_extruder]() { return !is_active_extruder; }, m_parent);
} }
menu->Append(wxID_ANY, name, extruder_selection_menu, _L("Change Filament")); menu->Append(wxID_ANY, name, extruder_selection_menu, _L("Change Filament"));

View File

@@ -36,7 +36,7 @@ struct SettingsFactory
static std::map<std::string, std::vector<SimpleSettingData>> OBJECT_CATEGORY_SETTINGS; static std::map<std::string, std::vector<SimpleSettingData>> OBJECT_CATEGORY_SETTINGS;
static std::map<std::string, std::vector<SimpleSettingData>> PART_CATEGORY_SETTINGS; static std::map<std::string, std::vector<SimpleSettingData>> PART_CATEGORY_SETTINGS;
static wxBitmap get_category_bitmap(const std::string& category_name, bool menu_bmp = true); static wxBitmapBundle* get_category_bitmap(const std::string& category_name);
static Bundle get_bundle(const DynamicPrintConfig* config, bool is_object_settings, bool is_layer_settings = false); static Bundle get_bundle(const DynamicPrintConfig* config, bool is_object_settings, bool is_layer_settings = false);
static std::vector<std::string> get_options(bool is_part); static std::vector<std::string> get_options(bool is_part);
//BBS: add api to get options for catogary //BBS: add api to get options for catogary
@@ -48,7 +48,7 @@ class MenuFactory
{ {
public: public:
static const std::vector<std::pair<std::string, std::string>> ADD_VOLUME_MENU_ITEMS; static const std::vector<std::pair<std::string, std::string>> ADD_VOLUME_MENU_ITEMS;
static std::vector<wxBitmap> get_volume_bitmaps(); static std::vector<wxBitmapBundle*> get_volume_bitmaps();
MenuFactory(); MenuFactory();
~MenuFactory() = default; ~MenuFactory() = default;

View File

@@ -77,9 +77,9 @@ void GridCellIconRenderer::Draw(wxGrid& grid,
table->m_icon_row_height = grid.GetRowSize(row); table->m_icon_row_height = grid.GetRowSize(row);
table->m_icon_col_width = grid.GetColSize(col); table->m_icon_col_width = grid.GetColSize(col);
//} //}
wxBitmap& bitmap = table->get_undo_bitmap(); wxBitmapBundle& bitmap = table->get_undo_bitmap();
int bitmap_width = bitmap.GetWidth(); int bitmap_width = bitmap.GetBitmapFor(dc.GetWindow()).GetWidth();
int bitmap_height = bitmap.GetHeight(); int bitmap_height = bitmap.GetBitmapFor(dc.GetWindow()).GetHeight();
int offset_x = (table->m_icon_col_width - bitmap_width)/2; int offset_x = (table->m_icon_col_width - bitmap_width)/2;
int offset_y = (table->m_icon_row_height - bitmap_height)/2; int offset_y = (table->m_icon_row_height - bitmap_height)/2;
@@ -91,7 +91,7 @@ void GridCellIconRenderer::Draw(wxGrid& grid,
lock_pos.y += top; lock_pos.y += top;
dc.DrawBitmap(bitmap, lock_pos); dc.DrawBitmap(bitmap, lock_pos);
#else #else
dc.DrawBitmap(bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); dc.DrawBitmap(bitmap.GetBitmapFor(dc.GetWindow()), wxPoint(rect.x + offset_x, rect.y + offset_y));//OcraftyoneTODO: determine if this way of getting bitmap works well
#endif #endif
//dc.SetPen(*wxGREEN_PEN); //dc.SetPen(*wxGREEN_PEN);
@@ -125,7 +125,7 @@ GridCellIconRenderer *GridCellIconRenderer::Clone() const
GridCellFilamentsEditor::GridCellFilamentsEditor(const wxArrayString& choices, GridCellFilamentsEditor::GridCellFilamentsEditor(const wxArrayString& choices,
bool allowOthers, bool allowOthers,
std::vector<wxBitmap*>* bitmaps) std::vector<wxBitmapBundle*>* bitmaps)
: wxGridCellChoiceEditor(choices, allowOthers), m_icons(bitmaps) : wxGridCellChoiceEditor(choices, allowOthers), m_icons(bitmaps)
{ {
} }
@@ -133,7 +133,7 @@ GridCellFilamentsEditor::GridCellFilamentsEditor(const wxArrayString& choices,
GridCellFilamentsEditor::GridCellFilamentsEditor(size_t count, GridCellFilamentsEditor::GridCellFilamentsEditor(size_t count,
const wxString choices[], const wxString choices[],
bool allowOthers, bool allowOthers,
std::vector<wxBitmap*>* bitmaps) std::vector<wxBitmapBundle*>* bitmaps)
: wxGridCellChoiceEditor(count, choices, allowOthers), m_icons(bitmaps) : wxGridCellChoiceEditor(count, choices, allowOthers), m_icons(bitmaps)
{ {
} }
@@ -159,13 +159,13 @@ void GridCellFilamentsEditor::Create(wxWindow* parent,
if ( !m_allowOthers ) if ( !m_allowOthers )
style |= wxCB_READONLY; style |= wxCB_READONLY;
::ComboBox *bitmap_combo = new ComboBox(parent, id, wxEmptyString, ::ComboBox *bitmap_combo = new ComboBox(parent, id, wxEmptyString,
wxDefaultPosition, wxSize(((*m_icons)[0])->GetWidth() + 10, -1), 0, nullptr, CB_NO_DROP_ICON | CB_NO_TEXT | wxCB_READONLY); wxDefaultPosition, wxSize(((*m_icons)[0])->GetDefaultSize().GetWidth() + 10, -1), 0, nullptr, CB_NO_DROP_ICON | CB_NO_TEXT | wxCB_READONLY); //OcraftyoneTODO: is this a good way of getting the size?
if (m_icons) { if (m_icons) {
int array_count = m_choices.GetCount(); int array_count = m_choices.GetCount();
int icon_count = m_icons->size(); int icon_count = m_icons->size();
for (int i = 0; i < array_count; i++) for (int i = 0; i < array_count; i++)
{ {
wxBitmap* bitmap = (i < icon_count) ? (*m_icons)[i] : (*m_icons)[0]; wxBitmapBundle* bitmap = (i < icon_count) ? (*m_icons)[i] : (*m_icons)[0];
bitmap_combo->Append(m_choices[i], *bitmap); bitmap_combo->Append(m_choices[i], *bitmap);
} }
} }
@@ -335,9 +335,9 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d
ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1);
ConfigOptionInt & cur_option = dynamic_cast<ConfigOptionInt &>((*grid_row)[(ObjectGridTable::GridColType) col]); ConfigOptionInt & cur_option = dynamic_cast<ConfigOptionInt &>((*grid_row)[(ObjectGridTable::GridColType) col]);
wxBitmap *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); wxBitmapBundle *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value);
int bitmap_width = bitmap->GetWidth(); int bitmap_width = bitmap->GetBitmapFor(dc.GetWindow()).GetWidth();
int bitmap_height = bitmap->GetHeight(); int bitmap_height = bitmap->GetBitmapFor(dc.GetWindow()).GetHeight();
int offset_x = grid_cell_border_width; int offset_x = grid_cell_border_width;
int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height; int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height;
@@ -345,7 +345,7 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d
dc.SetBrush(wxBrush(attr.GetBackgroundColour())); dc.SetBrush(wxBrush(attr.GetBackgroundColour()));
dc.DrawRectangle(rect); dc.DrawRectangle(rect);
if ( grid_row->model_volume_type != ModelVolumeType::NEGATIVE_VOLUME) { if ( grid_row->model_volume_type != ModelVolumeType::NEGATIVE_VOLUME) {
dc.DrawBitmap(*bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); dc.DrawBitmap(bitmap->GetBitmapFor(dc.GetWindow()), wxPoint(rect.x + offset_x, rect.y + offset_y));//TODO: determine if this way of getting bitmap works well
} }
text_rect.x += bitmap_width + grid_cell_border_width * 2; text_rect.x += bitmap_width + grid_cell_border_width * 2;
@@ -518,16 +518,16 @@ void GridCellComboBoxRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc
ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1);
ConfigOptionInt & cur_option = dynamic_cast<ConfigOptionInt &>((*grid_row)[(ObjectGridTable::GridColType) col]); ConfigOptionInt & cur_option = dynamic_cast<ConfigOptionInt &>((*grid_row)[(ObjectGridTable::GridColType) col]);
wxBitmap *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value); wxBitmapBundle *bitmap = table->get_color_bitmap((cur_option.value >= 1) ? cur_option.value - 1 : cur_option.value);
int bitmap_width = bitmap->GetWidth(); int bitmap_width = bitmap->GetBitmapFor(dc.GetWindow()).GetWidth();
int bitmap_height = bitmap->GetHeight(); int bitmap_height = bitmap->GetBitmapFor(dc.GetWindow()).GetHeight();
int offset_x = grid_cell_border_width; int offset_x = grid_cell_border_width;
int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height; int offset_y = (rect.height > bitmap_height) ? (rect.height - bitmap_height) / 2 : grid_cell_border_height;
dc.SetPen(*wxTRANSPARENT_PEN); dc.SetPen(*wxTRANSPARENT_PEN);
dc.SetBrush(wxBrush(attr.GetBackgroundColour())); dc.SetBrush(wxBrush(attr.GetBackgroundColour()));
dc.DrawRectangle(rect); dc.DrawRectangle(rect);
dc.DrawBitmap(*bitmap, wxPoint(rect.x + offset_x, rect.y + offset_y)); dc.DrawBitmap(bitmap->GetBitmapFor(dc.GetWindow()), wxPoint(rect.x + offset_x, rect.y + offset_y)); //TODO: determine if this way of getting bitmap works well
text_rect.x += bitmap_width + grid_cell_border_width * 2; text_rect.x += bitmap_width + grid_cell_border_width * 2;
text_rect.width -= (bitmap_width + grid_cell_border_width * 2); text_rect.width -= (bitmap_width + grid_cell_border_width * 2);
} }
@@ -2641,12 +2641,12 @@ void ObjectGridTable::OnCellValueChanged(int row, int col)
} }
} }
wxBitmap& ObjectGridTable::get_undo_bitmap(bool selected) wxBitmapBundle& ObjectGridTable::get_undo_bitmap(bool selected)
{ {
return m_panel->m_undo_bitmap; return m_panel->m_undo_bitmap;
} }
wxBitmap* ObjectGridTable::get_color_bitmap(int color_index) wxBitmapBundle* ObjectGridTable::get_color_bitmap(int color_index)
{ {
if (color_index < m_panel->m_color_bitmaps.size()) if (color_index < m_panel->m_color_bitmaps.size())
return m_panel->m_color_bitmaps[color_index]; return m_panel->m_color_bitmaps[color_index];

View File

@@ -82,10 +82,10 @@ public:
GridCellFilamentsEditor(size_t count = 0, GridCellFilamentsEditor(size_t count = 0,
const wxString choices[] = NULL, const wxString choices[] = NULL,
bool allowOthers = false, bool allowOthers = false,
std::vector<wxBitmap*>* bitmaps = NULL); std::vector<wxBitmapBundle*>* bitmaps = NULL);
GridCellFilamentsEditor(const wxArrayString& choices, GridCellFilamentsEditor(const wxArrayString& choices,
bool allowOthers = false, bool allowOthers = false,
std::vector<wxBitmap*>* bitmaps = NULL); std::vector<wxBitmapBundle*>* bitmaps = NULL);
virtual void Create(wxWindow* parent, virtual void Create(wxWindow* parent,
wxWindowID id, wxWindowID id,
@@ -105,7 +105,7 @@ protected:
::ComboBox *Combo() const { return (::ComboBox *)m_control; } ::ComboBox *Combo() const { return (::ComboBox *)m_control; }
void OnComboCloseUp(wxCommandEvent& evt); void OnComboCloseUp(wxCommandEvent& evt);
std::vector<wxBitmap*>* m_icons; std::vector<wxBitmapBundle*>* m_icons;
wxDECLARE_NO_COPY_CLASS(GridCellFilamentsEditor); wxDECLARE_NO_COPY_CLASS(GridCellFilamentsEditor);
private: private:
@@ -498,8 +498,8 @@ public:
void update_filament_to_config(ModelConfig* config, std::string& key, ConfigOption& new_value, ConfigOption& ori_value, bool is_object); void update_filament_to_config(ModelConfig* config, std::string& key, ConfigOption& new_value, ConfigOption& ori_value, bool is_object);
void update_volume_values_from_object(int row, int col); void update_volume_values_from_object(int row, int col);
void update_value_to_object(Model* model, ObjectGridRow* grid_row, int col); void update_value_to_object(Model* model, ObjectGridRow* grid_row, int col);
wxBitmap& get_undo_bitmap(bool selected = false); wxBitmapBundle& get_undo_bitmap(bool selected = false);
wxBitmap* get_color_bitmap(int color_index); wxBitmapBundle* get_color_bitmap(int color_index);
bool OnCellLeftClick(int row, int col, ConfigOptionType &type); bool OnCellLeftClick(int row, int col, ConfigOptionType &type);
void OnSelectCell(int row, int col); void OnSelectCell(int row, int col);
void OnRangeSelected(int row, int col, int row_count, int col_count); void OnRangeSelected(int row, int col, int row_count, int col_count);
@@ -610,10 +610,10 @@ private:
int init_filaments_and_colors(); int init_filaments_and_colors();
wxFloatingPointValidator<float> m_float_validator; wxFloatingPointValidator<float> m_float_validator;
wxBitmap m_undo_bitmap; wxBitmapBundle m_undo_bitmap;
std::vector<wxBitmap*> m_color_bitmaps; std::vector<wxBitmapBundle*> m_color_bitmaps;
ScalableBitmap m_bmp_reset; wxBitmapBundle m_bmp_reset;
ScalableBitmap m_bmp_reset_disable; wxBitmapBundle m_bmp_reset_disable;
private: private:
wxDECLARE_ABSTRACT_CLASS(ObjectGrid); wxDECLARE_ABSTRACT_CLASS(ObjectGrid);
wxDECLARE_EVENT_TABLE(); wxDECLARE_EVENT_TABLE();

View File

@@ -173,7 +173,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_
btn->SetBitmapFocus(m_bmp_reset_focus.bmp()); btn->SetBitmapFocus(m_bmp_reset_focus.bmp());
btn->SetBitmapHover(m_bmp_reset_focus.bmp()); btn->SetBitmapHover(m_bmp_reset_focus.get_bitmap());
#ifdef __WINDOWS__ #ifdef __WINDOWS__
btn->SetBitmapDisabled(m_bmp_reset_disable.bmp()); btn->SetBitmapDisabled(m_bmp_reset_disable.bmp());
@@ -236,7 +236,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_
return; return;
ctrl->SetBitmap_(m_bmp_reset); ctrl->SetBitmap_(m_bmp_reset);
ctrl->SetBitmapFocus(m_bmp_reset_focus.bmp()); ctrl->SetBitmapFocus(m_bmp_reset_focus.bmp());
ctrl->SetBitmapHover(m_bmp_reset_focus.bmp()); ctrl->SetBitmapHover(m_bmp_reset_focus.get_bitmap());
#ifdef __WINDOWS__ #ifdef __WINDOWS__
ctrl->SetBitmapDisabled(m_bmp_reset_disable.bmp()); ctrl->SetBitmapDisabled(m_bmp_reset_disable.bmp());
#endif #endif

View File

@@ -748,7 +748,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos)
if (field && field->undo_bitmap()) if (field && field->undo_bitmap())
//if (field) //if (field)
// BBS: new layout // BBS: new layout
draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink()); draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->get_bitmap(), field->undo_bitmap()->get_bitmap(), field->blink()); //OcraftyoneTODO: conversion rather than rewrite
return; return;
} }
@@ -802,7 +802,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos)
auto draw_buttons = [&h_pos, &dc, &v_pos, this](Field* field, size_t bmp_rect_id = 0) { auto draw_buttons = [&h_pos, &dc, &v_pos, this](Field* field, size_t bmp_rect_id = 0) {
if (field && field->undo_to_sys_bitmap()) { if (field && field->undo_to_sys_bitmap()) {
h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink(), bmp_rect_id); h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), field->undo_to_sys_bitmap()->get_bitmap(), field->undo_bitmap()->get_bitmap(), field->blink(), bmp_rect_id); //OcraftyoneTODO: conversion rather than rewrite
} }
#ifndef DISABLE_BLINKING #ifndef DISABLE_BLINKING
else if (field && !field->undo_to_sys_bitmap() && field->blink()) else if (field && !field->undo_to_sys_bitmap() && field->blink())

View File

@@ -72,7 +72,7 @@ const std::map<InfoItemType, InfoItemAtributes> INFO_ITEMS{
ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent, ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent,
const wxString& sub_obj_name, const wxString& sub_obj_name,
Slic3r::ModelVolumeType type, Slic3r::ModelVolumeType type,
const wxBitmap& bmp, const wxBitmapBundle& bmp,
const wxString& extruder, const wxString& extruder,
const int idx/* = -1*/, const int idx/* = -1*/,
const std::string& warning_icon_name /*= std::string*/) : const std::string& warning_icon_name /*= std::string*/) :
@@ -122,7 +122,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent
else if (type == itLayerRoot) else if (type == itLayerRoot)
{ {
//BBS do not support layer range edit //BBS do not support layer range edit
m_bmp = create_scaled_bitmap(LayerRootIcon); // FIXME: pass window ptr m_bmp = *get_bmp_bundle(LayerRootIcon);
m_name = _(L("Layers")); m_name = _(L("Layers"));
} }
else if (type == itInfo) else if (type == itInfo)
@@ -153,7 +153,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent
} }
const std::string label_range = (boost::format(" %.2f-%.2f ") % layer_range.first % layer_range.second).str(); const std::string label_range = (boost::format(" %.2f-%.2f ") % layer_range.first % layer_range.second).str();
m_name = _(L("Range")) + label_range + "(" + _(L("mm")) + ")"; m_name = _(L("Range")) + label_range + "(" + _(L("mm")) + ")";
m_bmp = create_scaled_bitmap(LayerIcon); // FIXME: pass window ptr m_bmp = *get_bmp_bundle(LayerIcon);
set_icons(); set_icons();
init_container(); init_container();
@@ -192,7 +192,7 @@ void ObjectDataViewModelNode::set_printable_icon(PrintIndicator printable)
{ {
m_printable = printable; m_printable = printable;
m_printable_icon = m_printable == piUndef ? m_empty_bmp : m_printable_icon = m_printable == piUndef ? m_empty_bmp :
create_scaled_bitmap(m_printable == piPrintable ? "check_on" : "check_off_focused"); *get_bmp_bundle(m_printable == piPrintable ? "check_on" : "check_off_focused");
} }
void ObjectDataViewModelNode::set_action_icon(bool enable) void ObjectDataViewModelNode::set_action_icon(bool enable)
@@ -202,7 +202,7 @@ void ObjectDataViewModelNode::set_action_icon(bool enable)
m_action_icon_name = m_type & itPlate ? "dot" : m_action_icon_name = m_type & itPlate ? "dot" :
m_type & itObject ? undo : m_type & itObject ? undo :
m_type & (itVolume | itLayer) ? undo : /*m_type & itInstance*/ "set_separate_obj"; m_type & (itVolume | itLayer) ? undo : /*m_type & itInstance*/ "set_separate_obj";
m_action_icon = create_scaled_bitmap(m_action_icon_name); // FIXME: pass window ptr m_action_icon = *get_bmp_bundle(m_action_icon_name); // FIXME: pass window ptr
} }
// BBS // BBS
@@ -210,27 +210,27 @@ void ObjectDataViewModelNode::set_color_icon(bool enable)
{ {
m_color_enable = enable; m_color_enable = enable;
if ((m_type & itObject) && enable) if ((m_type & itObject) && enable)
m_color_icon = create_scaled_bitmap("mmu_segmentation"); m_color_icon = *get_bmp_bundle("mmu_segmentation");
else else
m_color_icon = create_scaled_bitmap("dot"); m_color_icon = *get_bmp_bundle("dot");
} }
void ObjectDataViewModelNode::set_support_icon(bool enable) void ObjectDataViewModelNode::set_support_icon(bool enable)
{ {
m_support_enable = enable; m_support_enable = enable;
if ((m_type & itObject) && enable) if ((m_type & itObject) && enable)
m_support_icon = create_scaled_bitmap("toolbar_support"); m_support_icon = *get_bmp_bundle("toolbar_support");
else else
m_support_icon = create_scaled_bitmap("dot"); m_support_icon = *get_bmp_bundle("dot");
} }
void ObjectDataViewModelNode::set_sinking_icon(bool enable) void ObjectDataViewModelNode::set_sinking_icon(bool enable)
{ {
m_sink_enable = enable; m_sink_enable = enable;
if ((m_type & itObject) && enable) if ((m_type & itObject) && enable)
m_sinking_icon = create_scaled_bitmap("objlist_sinking"); m_sinking_icon = *get_bmp_bundle("objlist_sinking");
else else
m_sinking_icon = create_scaled_bitmap("dot"); m_sinking_icon = *get_bmp_bundle("dot");
} }
void ObjectDataViewModelNode::set_warning_icon(const std::string& warning_icon_name) void ObjectDataViewModelNode::set_warning_icon(const std::string& warning_icon_name)
@@ -245,14 +245,14 @@ void ObjectDataViewModelNode::update_settings_digest_bitmaps()
m_bmp = m_empty_bmp; m_bmp = m_empty_bmp;
std::string scaled_bitmap_name = m_name.ToUTF8().data(); std::string scaled_bitmap_name = m_name.ToUTF8().data();
scaled_bitmap_name += "-em" + std::to_string(wxGetApp().em_unit()) + (wxGetApp().dark_mode() ? "-dm" : ""); scaled_bitmap_name += (wxGetApp().dark_mode() ? "-dm" : "");
wxBitmap *bmp = m_bitmap_cache->find(scaled_bitmap_name); wxBitmapBundle *bmp = m_bitmap_cache->find_bndl(scaled_bitmap_name);
if (bmp == nullptr) { if (bmp == nullptr) {
std::vector<wxBitmap> bmps; std::vector<wxBitmapBundle*> bmps;
for (auto& category : m_opt_categories) for (auto& category : m_opt_categories)
bmps.emplace_back(SettingsFactory::get_category_bitmap(category, false)); bmps.emplace_back(SettingsFactory::get_category_bitmap(category));
bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps); bmp = m_bitmap_cache->insert_bndl(scaled_bitmap_name, bmps);
} }
m_bmp = *bmp; m_bmp = *bmp;
@@ -279,10 +279,10 @@ bool ObjectDataViewModelNode::update_settings_digest(const std::vector<std::stri
void ObjectDataViewModelNode::msw_rescale() void ObjectDataViewModelNode::msw_rescale()
{ {
if (!m_action_icon_name.empty()) if (!m_action_icon_name.empty())
m_action_icon = create_scaled_bitmap(m_action_icon_name); m_action_icon = *get_bmp_bundle(m_action_icon_name);
if (m_printable != piUndef) if (m_printable != piUndef)
m_printable_icon = create_scaled_bitmap(m_printable == piPrintable ? "obj_printable" : "obj_unprintable"); m_printable_icon = *get_bmp_bundle(m_printable == piPrintable ? "obj_printable" : "obj_unprintable");
if (!m_opt_categories.empty()) if (!m_opt_categories.empty())
update_settings_digest_bitmaps(); update_settings_digest_bitmaps();
@@ -295,7 +295,7 @@ bool ObjectDataViewModelNode::SetValue(const wxVariant& variant, unsigned col)
switch (col) switch (col)
{ {
case colPrint: case colPrint:
m_printable_icon << variant; m_printable_icon << variant; //OcraftyoneTODO: removed by ps
return true; return true;
case colName: { case colName: {
DataViewBitmapText data; DataViewBitmapText data;
@@ -320,7 +320,7 @@ bool ObjectDataViewModelNode::SetValue(const wxVariant& variant, unsigned col)
m_color_icon << variant; m_color_icon << variant;
break; break;
case colEditing: case colEditing:
m_action_icon << variant; m_action_icon << variant; //OcraftyoneTODO: removed by ps
return true; return true;
default: default:
printf("MyObjectTreeModel::SetValue: wrong column"); printf("MyObjectTreeModel::SetValue: wrong column");
@@ -387,7 +387,7 @@ void ObjectDataViewModelNode::UpdateExtruderAndColorIcon(wxString extruder /*= "
if (extruder_idx > 0) --extruder_idx; if (extruder_idx > 0) --extruder_idx;
// Create the bitmap with color bars. // Create the bitmap with color bars.
std::vector<wxBitmap*> bmps = get_extruder_color_icons(false);// use wide icons std::vector<wxBitmapBundle*> bmps = get_extruder_color_icons(false);// use wide icons
if (bmps.empty()) { if (bmps.empty()) {
m_extruder_bmp = wxNullBitmap; m_extruder_bmp = wxNullBitmap;
return; return;
@@ -422,12 +422,12 @@ ObjectDataViewModel::ObjectDataViewModel()
m_bitmap_cache = new Slic3r::GUI::BitmapCache; m_bitmap_cache = new Slic3r::GUI::BitmapCache;
m_volume_bmps = MenuFactory::get_volume_bitmaps(); m_volume_bmps = MenuFactory::get_volume_bitmaps();
m_warning_bmp = create_scaled_bitmap(WarningIcon); m_warning_bmp = *get_bmp_bundle(WarningIcon);
m_warning_manifold_bmp = create_scaled_bitmap(WarningManifoldIcon); m_warning_manifold_bmp = *get_bmp_bundle(WarningManifoldIcon);
m_lock_bmp = create_scaled_bitmap(LockIcon); m_lock_bmp = *get_bmp_bundle(LockIcon);
for (auto item : INFO_ITEMS) for (auto item : INFO_ITEMS)
m_info_bmps[item.first] = create_scaled_bitmap(item.second.bmp_name); m_info_bmps[item.first] = get_bmp_bundle(item.second.bmp_name);
m_plate_outside = nullptr; m_plate_outside = nullptr;
@@ -451,7 +451,7 @@ void ObjectDataViewModel::Init()
AddOutsidePlate(); AddOutsidePlate();
} }
wxBitmap& ObjectDataViewModel::GetWarningBitmap(const std::string& warning_icon_name) wxBitmapBundle& ObjectDataViewModel::GetWarningBitmap(const std::string& warning_icon_name)
{ {
return warning_icon_name.empty() ? m_empty_bmp : warning_icon_name == WarningIcon ? m_warning_bmp : m_warning_manifold_bmp; return warning_icon_name.empty() ? m_empty_bmp : warning_icon_name == WarningIcon ? m_warning_bmp : m_warning_manifold_bmp;
} }
@@ -514,7 +514,7 @@ void ObjectDataViewModel::UpdateBitmapForNode(ObjectDataViewModelNode *node)
is_volume_node &= (vol_type >= int(ModelVolumeType::MODEL_PART) && vol_type <= int(ModelVolumeType::SUPPORT_ENFORCER)); is_volume_node &= (vol_type >= int(ModelVolumeType::MODEL_PART) && vol_type <= int(ModelVolumeType::SUPPORT_ENFORCER));
if (!node->has_warning_icon() && !node->has_lock()) { if (!node->has_warning_icon() && !node->has_lock()) {
node->SetBitmap(is_volume_node ? m_volume_bmps.at(vol_type) : m_empty_bmp); node->SetBitmap(is_volume_node ? *m_volume_bmps.at(vol_type) : m_empty_bmp);
return; return;
} }
@@ -526,16 +526,16 @@ void ObjectDataViewModel::UpdateBitmapForNode(ObjectDataViewModelNode *node)
if (is_volume_node) if (is_volume_node)
scaled_bitmap_name += std::to_string(vol_type); scaled_bitmap_name += std::to_string(vol_type);
wxBitmap *bmp = m_bitmap_cache->find(scaled_bitmap_name); wxBitmapBundle *bmp = m_bitmap_cache->find_bndl(scaled_bitmap_name);
if (!bmp) { if (!bmp) {
std::vector<wxBitmap> bmps; std::vector<wxBitmapBundle*> bmps;
if (node->has_warning_icon()) if (node->has_warning_icon())
bmps.emplace_back(node->warning_icon_name() == WarningIcon ? m_warning_bmp : m_warning_manifold_bmp); bmps.emplace_back(node->warning_icon_name() == WarningIcon ? &m_warning_bmp : &m_warning_manifold_bmp);
if (node->has_lock()) if (node->has_lock())
bmps.emplace_back(m_lock_bmp); bmps.emplace_back(&m_lock_bmp);
if (is_volume_node) if (is_volume_node)
bmps.emplace_back(m_volume_bmps[vol_type]); bmps.emplace_back(m_volume_bmps[vol_type]);
bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps); bmp = m_bitmap_cache->insert_bndl(scaled_bitmap_name, bmps);
} }
node->SetBitmap(*bmp); node->SetBitmap(*bmp);
@@ -669,7 +669,7 @@ wxDataViewItem ObjectDataViewModel::AddInfoChild(const wxDataViewItem &parent_it
} }
root->Insert(node, idx+1); root->Insert(node, idx+1);
node->SetBitmap(m_info_bmps.at(info_type)); node->SetBitmap(*m_info_bmps.at(info_type));
// notify control // notify control
const wxDataViewItem child((void*)node); const wxDataViewItem child((void*)node);
ItemAdded(parent_item, child); ItemAdded(parent_item, child);
@@ -1586,7 +1586,7 @@ wxString ObjectDataViewModel::GetName(const wxDataViewItem &item) const
return node->m_name; return node->m_name;
} }
wxBitmap& ObjectDataViewModel::GetBitmap(const wxDataViewItem &item) const wxBitmapBundle& ObjectDataViewModel::GetBitmap(const wxDataViewItem &item) const
{ {
ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID());
return node->m_bmp; return node->m_bmp;
@@ -1628,13 +1628,13 @@ void ObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &ite
switch (col) switch (col)
{ {
case colPrint: case colPrint:
variant << node->m_printable_icon; variant << node->m_printable_icon.GetBitmapFor(m_ctrl);
break; break;
case colName: case colName:
variant << DataViewBitmapText(node->m_name, node->m_bmp); variant << DataViewBitmapText(node->m_name, node->m_bmp.GetBitmapFor(m_ctrl));
break; break;
case colFilament: case colFilament:
variant << DataViewBitmapText(node->m_extruder, node->m_extruder_bmp); variant << DataViewBitmapText(node->m_extruder, node->m_extruder_bmp.GetBitmapFor(m_ctrl));
break; break;
// BBS // BBS
case colSupportPaint: case colSupportPaint:
@@ -1647,7 +1647,7 @@ void ObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &ite
variant << node->m_color_icon; variant << node->m_color_icon;
break; break;
case colEditing: case colEditing:
variant << node->m_action_icon; variant << node->m_action_icon.GetBitmapFor(m_ctrl);
break; break;
default: default:
; ;
@@ -2100,7 +2100,7 @@ void ObjectDataViewModel::SetVolumeType(const wxDataViewItem &item, const Slic3r
ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID()); ObjectDataViewModelNode *node = static_cast<ObjectDataViewModelNode*>(item.GetID());
node->SetVolumeType(volume_type); node->SetVolumeType(volume_type);
node->SetBitmap(m_volume_bmps[int(volume_type)]); node->SetBitmap(*m_volume_bmps[int(volume_type)]);
if (volume_type != Slic3r::ModelVolumeType::MODEL_PART && volume_type != Slic3r::ModelVolumeType::PARAMETER_MODIFIER) if (volume_type != Slic3r::ModelVolumeType::MODEL_PART && volume_type != Slic3r::ModelVolumeType::PARAMETER_MODIFIER)
node->SetExtruder(""); // hide extruder node->SetExtruder(""); // hide extruder
else if (node->GetExtruder().IsEmpty()) else if (node->GetExtruder().IsEmpty())
@@ -2216,12 +2216,12 @@ void ObjectDataViewModel::SetSinkState(const bool painted, wxDataViewItem obj_it
void ObjectDataViewModel::Rescale() void ObjectDataViewModel::Rescale()
{ {
m_volume_bmps = MenuFactory::get_volume_bitmaps(); m_volume_bmps = MenuFactory::get_volume_bitmaps();
m_warning_bmp = create_scaled_bitmap(WarningIcon); m_warning_bmp = *get_bmp_bundle(WarningIcon);
m_warning_manifold_bmp = create_scaled_bitmap(WarningManifoldIcon); m_warning_manifold_bmp = *get_bmp_bundle(WarningManifoldIcon);
m_lock_bmp = create_scaled_bitmap(LockIcon); m_lock_bmp = *get_bmp_bundle(LockIcon);
for (auto item : INFO_ITEMS) for (auto item : INFO_ITEMS)
m_info_bmps[item.first] = create_scaled_bitmap(item.second.bmp_name); m_info_bmps[item.first] = get_bmp_bundle(item.second.bmp_name);
wxDataViewItemArray all_items; wxDataViewItemArray all_items;
GetAllChildren(wxDataViewItem(0), all_items); GetAllChildren(wxDataViewItem(0), all_items);
@@ -2243,13 +2243,13 @@ void ObjectDataViewModel::Rescale()
node->m_bmp = GetVolumeIcon(node->m_volume_type, node->m_warning_icon_name); node->m_bmp = GetVolumeIcon(node->m_volume_type, node->m_warning_icon_name);
break; break;
case itLayerRoot: case itLayerRoot:
node->m_bmp = create_scaled_bitmap(LayerRootIcon); node->m_bmp = *get_bmp_bundle(LayerRootIcon);
break; break;
case itLayer: case itLayer:
node->m_bmp = create_scaled_bitmap(LayerIcon); node->m_bmp = *get_bmp_bundle(LayerIcon);
break; break;
case itInfo: case itInfo:
node->m_bmp = m_info_bmps.at(node->m_info_item_type); node->m_bmp = *m_info_bmps.at(node->m_info_item_type);
break; break;
default: break; default: break;
} }
@@ -2258,22 +2258,22 @@ void ObjectDataViewModel::Rescale()
} }
} }
wxBitmap ObjectDataViewModel::GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, const std::string& warning_icon_name/* = std::string()*/) wxBitmapBundle ObjectDataViewModel::GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, const std::string& warning_icon_name/* = std::string()*/)
{ {
if (warning_icon_name.empty()) if (warning_icon_name.empty())
return m_volume_bmps[static_cast<int>(vol_type)]; return *m_volume_bmps[static_cast<int>(vol_type)];
std::string scaled_bitmap_name = warning_icon_name + std::to_string(static_cast<int>(vol_type)); std::string scaled_bitmap_name = warning_icon_name + std::to_string(static_cast<int>(vol_type));
scaled_bitmap_name += "-em" + std::to_string(wxGetApp().em_unit()) + (wxGetApp().dark_mode() ? "-dm" : "-lm"); scaled_bitmap_name += "-em" + std::to_string(wxGetApp().em_unit()) + (wxGetApp().dark_mode() ? "-dm" : "-lm");
wxBitmap *bmp = m_bitmap_cache->find(scaled_bitmap_name); wxBitmapBundle *bmp = m_bitmap_cache->find_bndl(scaled_bitmap_name);
if (bmp == nullptr) { if (bmp == nullptr) {
std::vector<wxBitmap> bmps; std::vector<wxBitmapBundle*> bmps;
bmps.emplace_back(GetWarningBitmap(warning_icon_name)); bmps.emplace_back(&GetWarningBitmap(warning_icon_name));
bmps.emplace_back(m_volume_bmps[static_cast<int>(vol_type)]); bmps.emplace_back(m_volume_bmps[static_cast<int>(vol_type)]);
bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps); bmp = m_bitmap_cache->insert_bndl(scaled_bitmap_name, bmps);
} }
return *bmp; return *bmp;
@@ -2308,7 +2308,7 @@ void ObjectDataViewModel::DeleteWarningIcon(const wxDataViewItem& item, const bo
return; return;
if (node->GetType() & itVolume) { if (node->GetType() & itVolume) {
node->SetWarningBitmap(m_volume_bmps[static_cast<int>(node->volume_type())], ""); node->SetWarningBitmap(*m_volume_bmps[static_cast<int>(node->volume_type())], "");
return; return;
} }

View File

@@ -71,27 +71,27 @@ class ObjectDataViewModelNode
{ {
ObjectDataViewModelNode* m_parent; ObjectDataViewModelNode* m_parent;
MyObjectTreeModelNodePtrArray m_children; MyObjectTreeModelNodePtrArray m_children;
wxBitmap m_empty_bmp; wxBitmapBundle m_empty_bmp;
size_t m_volumes_cnt = 0; size_t m_volumes_cnt = 0;
std::vector< std::string > m_opt_categories; std::vector< std::string > m_opt_categories;
t_layer_height_range m_layer_range = { 0.0f, 0.0f }; t_layer_height_range m_layer_range = { 0.0f, 0.0f };
wxString m_name; wxString m_name;
wxBitmap& m_bmp = m_empty_bmp; wxBitmapBundle& m_bmp = m_empty_bmp;
ItemType m_type; ItemType m_type;
int m_idx = -1; int m_idx = -1;
int m_plate_idx = -1; int m_plate_idx = -1;
bool m_container = false; bool m_container = false;
// BBS // BBS
wxString m_extruder = wxEmptyString; wxString m_extruder = wxEmptyString;
wxBitmap m_extruder_bmp; wxBitmapBundle m_extruder_bmp;
wxBitmap m_action_icon; wxBitmapBundle m_action_icon;
// BBS // BBS
wxBitmap m_support_icon; wxBitmapBundle m_support_icon;
wxBitmap m_color_icon; wxBitmapBundle m_color_icon;
wxBitmap m_sinking_icon; wxBitmapBundle m_sinking_icon;
PrintIndicator m_printable {piUndef}; PrintIndicator m_printable {piUndef};
wxBitmap m_printable_icon; wxBitmapBundle m_printable_icon;
std::string m_warning_icon_name{ "" }; std::string m_warning_icon_name{ "" };
bool m_has_lock{false}; // for cut object icon bool m_has_lock{false}; // for cut object icon
@@ -127,7 +127,7 @@ public:
ObjectDataViewModelNode(ObjectDataViewModelNode* parent, ObjectDataViewModelNode(ObjectDataViewModelNode* parent,
const wxString& sub_obj_name, const wxString& sub_obj_name,
Slic3r::ModelVolumeType type, Slic3r::ModelVolumeType type,
const wxBitmap& bmp, const wxBitmapBundle& bmp,
const wxString& extruder, const wxString& extruder,
const int idx = -1, const int idx = -1,
const std::string& warning_icon_name = std::string()); const std::string& warning_icon_name = std::string());
@@ -223,11 +223,11 @@ public:
void SetName(const wxString &); void SetName(const wxString &);
bool SetValue(const wxVariant &variant, unsigned int col); bool SetValue(const wxVariant &variant, unsigned int col);
void SetVolumeType(ModelVolumeType type) { m_volume_type = type; } void SetVolumeType(ModelVolumeType type) { m_volume_type = type; }
void SetBitmap(const wxBitmap &icon) { m_bmp = icon; } void SetBitmap(const wxBitmapBundle &icon) { m_bmp = icon; }
void SetExtruder(const wxString &extruder) { m_extruder = extruder; } void SetExtruder(const wxString &extruder) { m_extruder = extruder; }
void SetWarningBitmap(const wxBitmap& icon, const std::string& warning_icon_name) { m_bmp = icon; m_warning_icon_name = warning_icon_name; } void SetWarningBitmap(const wxBitmapBundle& icon, const std::string& warning_icon_name) { m_bmp = icon; m_warning_icon_name = warning_icon_name; }
void SetLock(bool has_lock) { m_has_lock = has_lock; } void SetLock(bool has_lock) { m_has_lock = has_lock; }
const wxBitmap& GetBitmap() const { return m_bmp; } const wxBitmapBundle& GetBitmap() const { return m_bmp; }
const wxString& GetName() const { return m_name; } const wxString& GetName() const { return m_name; }
ItemType GetType() const { return m_type; } ItemType GetType() const { return m_type; }
InfoItemType GetInfoItemType() const { return m_info_item_type; } InfoItemType GetInfoItemType() const { return m_info_item_type; }
@@ -319,12 +319,12 @@ class ObjectDataViewModel :public wxDataViewModel
{ {
std::vector<ObjectDataViewModelNode*> m_plates; std::vector<ObjectDataViewModelNode*> m_plates;
std::vector<ObjectDataViewModelNode*> m_objects; std::vector<ObjectDataViewModelNode*> m_objects;
std::vector<wxBitmap> m_volume_bmps; std::vector<wxBitmapBundle*> m_volume_bmps;
std::map<InfoItemType, wxBitmap> m_info_bmps; std::map<InfoItemType, wxBitmapBundle*> m_info_bmps;
wxBitmap m_empty_bmp; wxBitmapBundle m_empty_bmp;
wxBitmap m_warning_bmp; wxBitmapBundle m_warning_bmp;
wxBitmap m_warning_manifold_bmp; wxBitmapBundle m_warning_manifold_bmp;
wxBitmap m_lock_bmp; wxBitmapBundle m_lock_bmp;
ObjectDataViewModelNode* m_plate_outside; ObjectDataViewModelNode* m_plate_outside;
@@ -383,7 +383,7 @@ public:
// helper method for wxLog // helper method for wxLog
wxString GetName(const wxDataViewItem &item) const; wxString GetName(const wxDataViewItem &item) const;
wxBitmap& GetBitmap(const wxDataViewItem &item) const; wxBitmapBundle& GetBitmap(const wxDataViewItem &item) const;
wxString GetExtruder(const wxDataViewItem &item) const; wxString GetExtruder(const wxDataViewItem &item) const;
int GetExtruderNumber(const wxDataViewItem &item) const; int GetExtruderNumber(const wxDataViewItem &item) const;
@@ -465,7 +465,7 @@ public:
// Rescale bitmaps for existing Items // Rescale bitmaps for existing Items
void Rescale(); void Rescale();
wxBitmap GetVolumeIcon(const Slic3r::ModelVolumeType vol_type, wxBitmapBundle GetVolumeIcon(const Slic3r::ModelVolumeType vol_type,
const std::string& warning_icon_name = std::string()); const std::string& warning_icon_name = std::string());
void AddWarningIcon(const wxDataViewItem& item, const std::string& warning_name); void AddWarningIcon(const wxDataViewItem& item, const std::string& warning_name);
void DeleteWarningIcon(const wxDataViewItem& item, const bool unmark_object = false); void DeleteWarningIcon(const wxDataViewItem& item, const bool unmark_object = false);
@@ -488,7 +488,7 @@ private:
wxDataViewItem AddInstanceRoot(const wxDataViewItem& parent_item); wxDataViewItem AddInstanceRoot(const wxDataViewItem& parent_item);
void AddAllChildren(const wxDataViewItem& parent); void AddAllChildren(const wxDataViewItem& parent);
wxBitmap& GetWarningBitmap(const std::string& warning_icon_name); wxBitmapBundle& GetWarningBitmap(const std::string& warning_icon_name);
void ReparentObject(ObjectDataViewModelNode* plate, ObjectDataViewModelNode* object); void ReparentObject(ObjectDataViewModelNode* plate, ObjectDataViewModelNode* object);
wxDataViewItem AddOutsidePlate(bool refresh = true); wxDataViewItem AddOutsidePlate(bool refresh = true);

View File

@@ -478,7 +478,8 @@ static struct DynamicFilamentList : DynamicList
std::string type; std::string type;
wxGetApp().preset_bundle->filaments.find_preset(presets[i])->get_filament_type(type); wxGetApp().preset_bundle->filaments.find_preset(presets[i])->get_filament_type(type);
str << type; str << type;
items.push_back({str, icons[i]}); wxBitmap bmp = icons[i]->GetBitmapFor(wxGetApp().mainframe); //OcraftyoneTODO: using conversion rather than changing type of items vector
items.push_back({str, &bmp});
} }
DynamicList::update(); DynamicList::update();
} }

View File

@@ -397,7 +397,7 @@ void PresetComboBox::add_ams_filaments(std::string selected, bool alias_name)
const_cast<Preset&>(*iter).is_visible = true; const_cast<Preset&>(*iter).is_visible = true;
auto color = tray.opt_string("filament_colour", 0u); auto color = tray.opt_string("filament_colour", 0u);
auto name = tray.opt_string("tray_name", 0u); auto name = tray.opt_string("tray_name", 0u);
wxBitmap bmp(*get_extruder_color_icon(color, name, 24, 16)); wxBitmap bmp(get_extruder_color_icon(color, name, 24, 16)->GetBitmapFor(m_parent)); //OcraftyoneTODO: conversion rather than updating correctly
int item_id = Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first); int item_id = Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first);
//validate_selection(id->value == selected); // can not select //validate_selection(id->value == selected); // can not select
} }

View File

@@ -37,7 +37,7 @@ public:
PresetComboBox(wxWindow* parent, Preset::Type preset_type, const wxSize& size = wxDefaultSize, PresetBundle* preset_bundle = nullptr); PresetComboBox(wxWindow* parent, Preset::Type preset_type, const wxSize& size = wxDefaultSize, PresetBundle* preset_bundle = nullptr);
~PresetComboBox(); ~PresetComboBox();
enum LabelItemType { enum LabelItemType : size_t {
LABEL_ITEM_PHYSICAL_PRINTER = 0xffffff01, LABEL_ITEM_PHYSICAL_PRINTER = 0xffffff01,
LABEL_ITEM_DISABLED, LABEL_ITEM_DISABLED,
LABEL_ITEM_MARKER, LABEL_ITEM_MARKER,

View File

@@ -85,7 +85,7 @@ void ComboBox::SetSelection(int n)
drop.SetSelection(n); drop.SetSelection(n);
SetLabel(drop.GetValue()); SetLabel(drop.GetValue());
if (drop.selection >= 0 && drop.iconSize.y > 0) if (drop.selection >= 0 && drop.iconSize.y > 0)
SetIcon(icons[drop.selection]); SetIcon(icons[drop.selection].GetBitmapFor(m_parent));//OcraftyoneTODO: dirty conversion
} }
void ComboBox::SelectAndNotify(int n) { void ComboBox::SelectAndNotify(int n) {
SetSelection(n); SetSelection(n);
@@ -108,7 +108,7 @@ void ComboBox::SetValue(const wxString &value)
drop.SetValue(value); drop.SetValue(value);
SetLabel(value); SetLabel(value);
if (drop.selection >= 0 && drop.iconSize.y > 0) if (drop.selection >= 0 && drop.iconSize.y > 0)
SetIcon(icons[drop.selection]); SetIcon(icons[drop.selection].GetBitmapFor(m_parent));//OcraftyoneTODO: dirty conversion
} }
void ComboBox::SetLabel(const wxString &value) void ComboBox::SetLabel(const wxString &value)
@@ -145,13 +145,13 @@ bool ComboBox::SetFont(wxFont const& font)
return TextInput::SetFont(font); return TextInput::SetFont(font);
} }
int ComboBox::Append(const wxString &item, const wxBitmap &bitmap) int ComboBox::Append(const wxString &item, const wxBitmapBundle &bitmap)
{ {
return Append(item, bitmap, nullptr); return Append(item, bitmap, nullptr);
} }
int ComboBox::Append(const wxString &item, int ComboBox::Append(const wxString &item,
const wxBitmap &bitmap, const wxBitmapBundle &bitmap,
void * clientData) void * clientData)
{ {
texts.push_back(item); texts.push_back(item);
@@ -196,9 +196,9 @@ void ComboBox::SetString(unsigned int n, wxString const &value)
if (n == drop.GetSelection()) SetLabel(value); if (n == drop.GetSelection()) SetLabel(value);
} }
wxBitmap ComboBox::GetItemBitmap(unsigned int n) { return icons[n]; } wxBitmap ComboBox::GetItemBitmap(unsigned int n) { return icons[n].GetBitmapFor(m_parent); }
void ComboBox::SetItemBitmap(unsigned int n, wxBitmap const &bitmap) void ComboBox::SetItemBitmap(unsigned int n, wxBitmapBundle const &bitmap)
{ {
if (n >= texts.size()) return; if (n >= texts.size()) return;
icons[n] = bitmap; icons[n] = bitmap;

View File

@@ -10,7 +10,7 @@
class ComboBox : public wxWindowWithItems<TextInput, wxItemContainer> class ComboBox : public wxWindowWithItems<TextInput, wxItemContainer>
{ {
std::vector<wxString> texts; std::vector<wxString> texts;
std::vector<wxBitmap> icons; std::vector<wxBitmapBundle> icons;
std::vector<void *> datas; std::vector<void *> datas;
std::vector<wxClientDataType> types; std::vector<wxClientDataType> types;
@@ -33,9 +33,9 @@ public:
virtual bool SetFont(wxFont const & font) override; virtual bool SetFont(wxFont const & font) override;
public: public:
int Append(const wxString &item, const wxBitmap &bitmap = wxNullBitmap); int Append(const wxString &item, const wxBitmapBundle &bitmap = wxNullBitmap);
int Append(const wxString &item, const wxBitmap &bitmap, void *clientData); int Append(const wxString &item, const wxBitmapBundle &bitmap, void *clientData);
unsigned int GetCount() const override; unsigned int GetCount() const override;
@@ -60,7 +60,7 @@ public:
void SetString(unsigned int n, wxString const &value) override; void SetString(unsigned int n, wxString const &value) override;
wxBitmap GetItemBitmap(unsigned int n); wxBitmap GetItemBitmap(unsigned int n);
void SetItemBitmap(unsigned int n, wxBitmap const &bitmap); void SetItemBitmap(unsigned int n, wxBitmapBundle const &bitmap);
protected: protected:
virtual int DoInsertItems(const wxArrayStringsAdapter &items, virtual int DoInsertItems(const wxArrayStringsAdapter &items,

View File

@@ -29,7 +29,7 @@ END_EVENT_TABLE()
*/ */
DropDown::DropDown(std::vector<wxString> &texts, DropDown::DropDown(std::vector<wxString> &texts,
std::vector<wxBitmap> &icons) std::vector<wxBitmapBundle> &icons)
: texts(texts) : texts(texts)
, icons(icons) , icons(icons)
, state_handler(this) , state_handler(this)
@@ -44,7 +44,7 @@ DropDown::DropDown(std::vector<wxString> &texts,
DropDown::DropDown(wxWindow * parent, DropDown::DropDown(wxWindow * parent,
std::vector<wxString> &texts, std::vector<wxString> &texts,
std::vector<wxBitmap> &icons, std::vector<wxBitmapBundle> &icons,
long style) long style)
: DropDown(texts, icons) : DropDown(texts, icons)
{ {
@@ -285,17 +285,17 @@ void DropDown::render(wxDC &dc)
if (rcContent.y > size.y) break; if (rcContent.y > size.y) break;
wxPoint pt = rcContent.GetLeftTop(); wxPoint pt = rcContent.GetLeftTop();
auto & icon = icons[i]; auto & icon = icons[i];
auto size2 = GetBmpSize(icon); auto size2 = get_preferred_size(icon, m_parent);
if (iconSize.x > 0) { if (iconSize.x > 0) {
if (icon.IsOk()) { if (icon.IsOk()) {
pt.y += (rcContent.height - size2.y) / 2; pt.y += (rcContent.height - size2.y) / 2;
dc.DrawBitmap(icon, pt); dc.DrawBitmap(icon.GetBitmapFor(m_parent), pt);
} }
pt.x += iconSize.x + 5; pt.x += iconSize.x + 5;
pt.y = rcContent.y; pt.y = rcContent.y;
} else if (icon.IsOk()) { } else if (icon.IsOk()) {
pt.y += (rcContent.height - size2.y) / 2; pt.y += (rcContent.height - size2.y) / 2;
dc.DrawBitmap(icon, pt); dc.DrawBitmap(icon.GetBitmapFor(m_parent), pt);
pt.x += size2.x + 5; pt.x += size2.x + 5;
pt.y = rcContent.y; pt.y = rcContent.y;
} }
@@ -325,7 +325,7 @@ void DropDown::messureSize()
for (size_t i = 0; i < texts.size(); ++i) { for (size_t i = 0; i < texts.size(); ++i) {
wxSize size1 = text_off ? wxSize() : dc.GetMultiLineTextExtent(texts[i]); wxSize size1 = text_off ? wxSize() : dc.GetMultiLineTextExtent(texts[i]);
if (icons[i].IsOk()) { if (icons[i].IsOk()) {
wxSize size2 = GetBmpSize(icons[i]); wxSize size2 = get_preferred_size(icons[i], m_parent);
if (size2.x > iconSize.x) iconSize = size2; if (size2.x > iconSize.x) iconSize = size2;
if (!align_icon) { if (!align_icon) {
size1.x += size2.x + (text_off ? 0 : 5); size1.x += size2.x + (text_off ? 0 : 5);

View File

@@ -15,7 +15,7 @@ wxDECLARE_EVENT(EVT_DISMISS, wxCommandEvent);
class DropDown : public PopupWindow class DropDown : public PopupWindow
{ {
std::vector<wxString> & texts; std::vector<wxString> & texts;
std::vector<wxBitmap> & icons; std::vector<wxBitmapBundle> & icons;
bool need_sync = false; bool need_sync = false;
int selection = -1; int selection = -1;
int hover_item = -1; int hover_item = -1;
@@ -43,11 +43,11 @@ class DropDown : public PopupWindow
public: public:
DropDown(std::vector<wxString> &texts, DropDown(std::vector<wxString> &texts,
std::vector<wxBitmap> &icons); std::vector<wxBitmapBundle> &icons);
DropDown(wxWindow * parent, DropDown(wxWindow * parent,
std::vector<wxString> &texts, std::vector<wxString> &texts,
std::vector<wxBitmap> &icons, std::vector<wxBitmapBundle> &icons,
long style = 0); long style = 0);
void Create(wxWindow * parent, void Create(wxWindow * parent,