mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-18 19:12:17 +00:00
ENH:move get_extruders_colors api to plater class
jira: none Change-Id: I8c2b31d4963b01cb193b7f2a2a3650cf7252ebc5 (cherry picked from commit 3eeabc0722027b789c59130762bd57c2745cf188)
This commit is contained in:
@@ -63,25 +63,6 @@ void glAssertRecentCallImpl(const char* file_name, unsigned int line, const char
|
|||||||
}
|
}
|
||||||
#endif // HAS_GLSAFE
|
#endif // HAS_GLSAFE
|
||||||
|
|
||||||
// BBS
|
|
||||||
std::vector<Slic3r::ColorRGBA> get_extruders_colors()
|
|
||||||
{
|
|
||||||
unsigned char rgba_color[4] = {};
|
|
||||||
std::vector<std::string> colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config();
|
|
||||||
std::vector<Slic3r::ColorRGBA> colors_out(colors.size());
|
|
||||||
for (const std::string &color : colors) {
|
|
||||||
Slic3r::GUI::BitmapCache::parse_color4(color, rgba_color);
|
|
||||||
size_t color_idx = &color - &colors.front();
|
|
||||||
colors_out[color_idx] = {
|
|
||||||
float(rgba_color[0]) / 255.f,
|
|
||||||
float(rgba_color[1]) / 255.f,
|
|
||||||
float(rgba_color[2]) / 255.f,
|
|
||||||
float(rgba_color[3]) / 255.f,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return colors_out;
|
|
||||||
}
|
|
||||||
|
|
||||||
float FullyTransparentMaterialThreshold = 0.1f;
|
float FullyTransparentMaterialThreshold = 0.1f;
|
||||||
float FullTransparentModdifiedToFixAlpha = 0.3f;
|
float FullTransparentModdifiedToFixAlpha = 0.3f;
|
||||||
// Be careful changing this value because it could break thumbnail color due to rounding error!
|
// Be careful changing this value because it could break thumbnail color due to rounding error!
|
||||||
@@ -422,7 +403,7 @@ void GLVolume::render()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
ModelObjectPtrs &model_objects = GUI::wxGetApp().model().objects;
|
ModelObjectPtrs &model_objects = GUI::wxGetApp().model().objects;
|
||||||
std::vector<ColorRGBA> colors = get_extruders_colors();
|
std::vector<ColorRGBA> colors = GUI::wxGetApp().plater()->get_extruders_colors();
|
||||||
|
|
||||||
simple_render(shader, model_objects, colors);
|
simple_render(shader, model_objects, colors);
|
||||||
}
|
}
|
||||||
@@ -438,7 +419,7 @@ void GLVolume::render_with_outline(const GUI::Size& cnv_size)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
ModelObjectPtrs &model_objects = GUI::wxGetApp().model().objects;
|
ModelObjectPtrs &model_objects = GUI::wxGetApp().model().objects;
|
||||||
std::vector<ColorRGBA> colors = get_extruders_colors();
|
std::vector<ColorRGBA> colors = GUI::wxGetApp().plater()->get_extruders_colors();
|
||||||
|
|
||||||
const GUI::OpenGLManager::EFramebufferType framebuffers_type = GUI::OpenGLManager::get_framebuffers_type();
|
const GUI::OpenGLManager::EFramebufferType framebuffers_type = GUI::OpenGLManager::get_framebuffers_type();
|
||||||
if (framebuffers_type == GUI::OpenGLManager::EFramebufferType::Unknown) {
|
if (framebuffers_type == GUI::OpenGLManager::EFramebufferType::Unknown) {
|
||||||
@@ -799,7 +780,7 @@ int GLVolumeCollection::load_wipe_tower_preview(
|
|||||||
if (height == 0.0f)
|
if (height == 0.0f)
|
||||||
height = 0.1f;
|
height = 0.1f;
|
||||||
|
|
||||||
std::vector<ColorRGBA> extruder_colors = get_extruders_colors();
|
std::vector<ColorRGBA> extruder_colors = GUI::wxGetApp().plater()->get_extruders_colors();
|
||||||
std::vector<ColorRGBA> colors;
|
std::vector<ColorRGBA> colors;
|
||||||
GUI::PartPlateList& ppl = GUI::wxGetApp().plater()->get_partplate_list();
|
GUI::PartPlateList& ppl = GUI::wxGetApp().plater()->get_partplate_list();
|
||||||
std::vector<int> plate_extruders = ppl.get_plate(plate_idx)->get_extruders(true);
|
std::vector<int> plate_extruders = ppl.get_plate(plate_idx)->get_extruders(true);
|
||||||
|
|||||||
@@ -32,7 +32,6 @@
|
|||||||
#define glsafe(cmd) cmd
|
#define glsafe(cmd) cmd
|
||||||
#define glcheck()
|
#define glcheck()
|
||||||
#endif // HAS_GLSAFE
|
#endif // HAS_GLSAFE
|
||||||
extern std::vector<Slic3r::ColorRGBA> get_extruders_colors();
|
|
||||||
extern float FullyTransparentMaterialThreshold;
|
extern float FullyTransparentMaterialThreshold;
|
||||||
extern float FullTransparentModdifiedToFixAlpha;
|
extern float FullTransparentModdifiedToFixAlpha;
|
||||||
extern Slic3r::ColorRGBA adjust_color_for_rendering(const Slic3r::ColorRGBA &colors);
|
extern Slic3r::ColorRGBA adjust_color_for_rendering(const Slic3r::ColorRGBA &colors);
|
||||||
|
|||||||
@@ -2165,7 +2165,7 @@ void GLCanvas3D::render_thumbnail(ThumbnailData& thumbnail_data, unsigned int w,
|
|||||||
else
|
else
|
||||||
shader = wxGetApp().get_shader("thumbnail");
|
shader = wxGetApp().get_shader("thumbnail");
|
||||||
ModelObjectPtrs& model_objects = GUI::wxGetApp().model().objects;
|
ModelObjectPtrs& model_objects = GUI::wxGetApp().model().objects;
|
||||||
std::vector<ColorRGBA> colors = ::get_extruders_colors();
|
std::vector<ColorRGBA> colors = wxGetApp().plater()->get_extruders_colors();
|
||||||
switch (OpenGLManager::get_framebuffers_type())
|
switch (OpenGLManager::get_framebuffers_type())
|
||||||
{
|
{
|
||||||
case OpenGLManager::EFramebufferType::Arb:
|
case OpenGLManager::EFramebufferType::Arb:
|
||||||
|
|||||||
@@ -58,21 +58,6 @@ bool GLGizmoMmuSegmentation::on_is_activable() const
|
|||||||
return !selection.is_empty() && (selection.is_single_full_instance() || selection.is_any_volume()) && wxGetApp().filaments_cnt() > 1;
|
return !selection.is_empty() && (selection.is_single_full_instance() || selection.is_any_volume()) && wxGetApp().filaments_cnt() > 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//BBS: use the global one in 3DScene.cpp
|
|
||||||
/*static std::vector<ColorRGBA> get_extruders_colors()
|
|
||||||
{
|
|
||||||
unsigned char rgb_color[3] = {};
|
|
||||||
std::vector<std::string> colors = Slic3r::GUI::wxGetApp().plater()->get_extruder_colors_from_plater_config();
|
|
||||||
std::vector<ColorRGBA> colors_out(colors.size());
|
|
||||||
for (const std::string &color : colors) {
|
|
||||||
Slic3r::GUI::BitmapCache::parse_color(color, rgb_color);
|
|
||||||
size_t color_idx = &color - &colors.front();
|
|
||||||
colors_out[color_idx] = {float(rgb_color[0]) / 255.f, float(rgb_color[1]) / 255.f, float(rgb_color[2]) / 255.f, 1.f};
|
|
||||||
}
|
|
||||||
|
|
||||||
return colors_out;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
static std::vector<int> get_extruder_id_for_volumes(const ModelObject &model_object)
|
static std::vector<int> get_extruder_id_for_volumes(const ModelObject &model_object)
|
||||||
{
|
{
|
||||||
std::vector<int> extruders_idx;
|
std::vector<int> extruders_idx;
|
||||||
@@ -89,7 +74,7 @@ static std::vector<int> get_extruder_id_for_volumes(const ModelObject &model_obj
|
|||||||
|
|
||||||
void GLGizmoMmuSegmentation::init_extruders_data()
|
void GLGizmoMmuSegmentation::init_extruders_data()
|
||||||
{
|
{
|
||||||
m_extruders_colors = get_extruders_colors();
|
m_extruders_colors = wxGetApp().plater()->get_extruders_colors();
|
||||||
m_selected_extruder_idx = 0;
|
m_selected_extruder_idx = 0;
|
||||||
|
|
||||||
// keep remap table consistent with current extruder count
|
// keep remap table consistent with current extruder count
|
||||||
@@ -189,8 +174,7 @@ void GLGizmoMmuSegmentation::data_changed(bool is_serializing)
|
|||||||
// Reinitialize triangle selectors because of change of extruder count need also change the size of GLIndexedVertexArray
|
// Reinitialize triangle selectors because of change of extruder count need also change the size of GLIndexedVertexArray
|
||||||
if (prev_extruders_count != wxGetApp().filaments_cnt())
|
if (prev_extruders_count != wxGetApp().filaments_cnt())
|
||||||
this->init_model_triangle_selectors();
|
this->init_model_triangle_selectors();
|
||||||
}
|
} else if (wxGetApp().plater()->get_extruders_colors() != m_extruders_colors) {
|
||||||
else if (get_extruders_colors() != m_extruders_colors) {
|
|
||||||
this->init_extruders_data();
|
this->init_extruders_data();
|
||||||
this->update_triangle_selectors_colors();
|
this->update_triangle_selectors_colors();
|
||||||
}
|
}
|
||||||
@@ -827,7 +811,7 @@ void GLGizmoMmuSegmentation::update_from_model_object(bool first_update)
|
|||||||
// Extruder colors need to be reloaded before calling init_model_triangle_selectors to render painted triangles
|
// Extruder colors need to be reloaded before calling init_model_triangle_selectors to render painted triangles
|
||||||
// using colors from loaded 3MF and not from printer profile in Slicer.
|
// using colors from loaded 3MF and not from printer profile in Slicer.
|
||||||
if (int prev_extruders_count = int(m_extruders_colors.size());
|
if (int prev_extruders_count = int(m_extruders_colors.size());
|
||||||
prev_extruders_count != wxGetApp().filaments_cnt() || get_extruders_colors() != m_extruders_colors)
|
prev_extruders_count != wxGetApp().filaments_cnt() || wxGetApp().plater()->get_extruders_colors() != m_extruders_colors)
|
||||||
this->init_extruders_data();
|
this->init_extruders_data();
|
||||||
|
|
||||||
this->init_model_triangle_selectors();
|
this->init_model_triangle_selectors();
|
||||||
|
|||||||
@@ -14249,6 +14249,24 @@ void Plater::on_filaments_delete(size_t num_filaments, size_t filament_id, int r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<Slic3r::ColorRGBA> Plater::get_extruders_colors()
|
||||||
|
{
|
||||||
|
unsigned char rgba_color[4] = {};
|
||||||
|
std::vector<std::string> colors = get_extruder_colors_from_plater_config();
|
||||||
|
std::vector<Slic3r::ColorRGBA> colors_out(colors.size());
|
||||||
|
for (const std::string &color : colors) {
|
||||||
|
Slic3r::GUI::BitmapCache::parse_color4(color, rgba_color);
|
||||||
|
size_t color_idx = &color - &colors.front();
|
||||||
|
colors_out[color_idx] = {
|
||||||
|
float(rgba_color[0]) / 255.f,
|
||||||
|
float(rgba_color[1]) / 255.f,
|
||||||
|
float(rgba_color[2]) / 255.f,
|
||||||
|
float(rgba_color[3]) / 255.f,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return colors_out;
|
||||||
|
}
|
||||||
|
|
||||||
void Plater::on_bed_type_change(BedType bed_type)
|
void Plater::on_bed_type_change(BedType bed_type)
|
||||||
{
|
{
|
||||||
sidebar().on_bed_type_change(bed_type);
|
sidebar().on_bed_type_change(bed_type);
|
||||||
|
|||||||
@@ -492,6 +492,7 @@ public:
|
|||||||
|
|
||||||
void on_filaments_change(size_t extruders_count);
|
void on_filaments_change(size_t extruders_count);
|
||||||
void on_filaments_delete(size_t extruders_count, size_t filament_id, int replace_filament_id = -1);
|
void on_filaments_delete(size_t extruders_count, size_t filament_id, int replace_filament_id = -1);
|
||||||
|
std::vector<Slic3r::ColorRGBA> get_extruders_colors();
|
||||||
// BBS
|
// BBS
|
||||||
void on_bed_type_change(BedType bed_type);
|
void on_bed_type_change(BedType bed_type);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user