mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-12 18:49:05 +08:00
New gcode visualization integration - Customizable options colors
This commit is contained in:
parent
bcfec2ae1a
commit
7a95ce8919
@ -4838,19 +4838,9 @@ void GCodeViewer::render_legend(float& legend_height)
|
||||
libvgcode::EGCodeExtrusionRole role = roles[i];
|
||||
if (static_cast<size_t>(role) >= libvgcode::GCode_Extrusion_Roles_Count)
|
||||
continue;
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
max_time_percent = std::max(max_time_percent, time_mode.travel_time / time_mode.time);
|
||||
for (size_t i = 0; i < m_roles.size(); ++i) {
|
||||
GCodeExtrusionRole role = m_roles[i];
|
||||
if (role >= GCodeExtrusionRole::Count)
|
||||
continue;
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
const bool visible = is_visible(role);
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
|
||||
const bool visible = m_new_viewer.is_extrusion_role_visible(role);
|
||||
|
||||
append_item(EItemType::Rect, libvgcode::convert(m_new_viewer.get_extrusion_role_color(role)), labels[i],
|
||||
visible, times[i], percents[i], max_time_percent, offsets, used_filaments_m[i], used_filaments_g[i],
|
||||
[this, role]() {
|
||||
@ -4869,6 +4859,14 @@ void GCodeViewer::render_legend(float& legend_height)
|
||||
);
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
max_time_percent = std::max(max_time_percent, time_mode.travel_time / time_mode.time);
|
||||
for (size_t i = 0; i < m_roles.size(); ++i) {
|
||||
GCodeExtrusionRole role = m_roles[i];
|
||||
if (role >= GCodeExtrusionRole::Count)
|
||||
continue;
|
||||
|
||||
const bool visible = is_visible(role);
|
||||
|
||||
append_item(EItemType::Rect, Extrusion_Role_Colors[static_cast<unsigned int>(role)], labels[i],
|
||||
visible, times[i], percents[i], max_time_percent, offsets, used_filaments_m[i], used_filaments_g[i],
|
||||
[this, role, visible]() {
|
||||
@ -5812,9 +5810,9 @@ void GCodeViewer::render_statistics()
|
||||
#endif // !ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if !ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void GCodeViewer::log_memory_used(const std::string& label, int64_t additional) const
|
||||
{
|
||||
if (Slic3r::get_logging_level() >= 5) {
|
||||
@ -5835,26 +5833,11 @@ void GCodeViewer::log_memory_used(const std::string& label, int64_t additional)
|
||||
<< log_memory_info();
|
||||
}
|
||||
}
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // !ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
ColorRGBA GCodeViewer::option_color(EMoveType move_type) const
|
||||
{
|
||||
switch (move_type)
|
||||
{
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
case EMoveType::Tool_change: { return libvgcode::convert(libvgcode::Options_Colors.at(libvgcode::EMoveType::ToolChange)); }
|
||||
case EMoveType::Color_change: { return libvgcode::convert(libvgcode::Options_Colors.at(libvgcode::EMoveType::ColorChange)); }
|
||||
case EMoveType::Pause_Print: { return libvgcode::convert(libvgcode::Options_Colors.at(libvgcode::EMoveType::PausePrint)); }
|
||||
case EMoveType::Custom_GCode: { return libvgcode::convert(libvgcode::Options_Colors.at(libvgcode::EMoveType::CustomGCode)); }
|
||||
case EMoveType::Retract: { return libvgcode::convert(libvgcode::Options_Colors.at(libvgcode::EMoveType::Retract)); }
|
||||
case EMoveType::Unretract: { return libvgcode::convert(libvgcode::Options_Colors.at(libvgcode::EMoveType::Unretract)); }
|
||||
case EMoveType::Seam: { return libvgcode::convert(libvgcode::Options_Colors.at(libvgcode::EMoveType::Seam)); }
|
||||
default: { return libvgcode::convert(libvgcode::Dummy_Color); }
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
case EMoveType::Tool_change: { return Options_Colors[static_cast<unsigned int>(EOptionsColors::ToolChanges)]; }
|
||||
case EMoveType::Color_change: { return Options_Colors[static_cast<unsigned int>(EOptionsColors::ColorChanges)]; }
|
||||
case EMoveType::Pause_Print: { return Options_Colors[static_cast<unsigned int>(EOptionsColors::PausePrints)]; }
|
||||
@ -5863,11 +5846,11 @@ ColorRGBA GCodeViewer::option_color(EMoveType move_type) const
|
||||
case EMoveType::Unretract: { return Options_Colors[static_cast<unsigned int>(EOptionsColors::Unretractions)]; }
|
||||
case EMoveType::Seam: { return Options_Colors[static_cast<unsigned int>(EOptionsColors::Seams)]; }
|
||||
default: { return { 0.0f, 0.0f, 0.0f, 1.0f }; }
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
}
|
||||
}
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // !ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
} // namespace GUI
|
||||
} // namespace Slic3r
|
||||
|
@ -1154,23 +1154,15 @@ private:
|
||||
#if ENABLE_GCODE_VIEWER_STATISTICS
|
||||
void render_statistics();
|
||||
#endif // ENABLE_GCODE_VIEWER_STATISTICS
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // !ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
bool is_visible(libvgcode::EGCodeExtrusionRole role) const { return m_new_viewer.is_extrusion_role_visible(role); }
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
bool is_visible(GCodeExtrusionRole role) const {
|
||||
return role < GCodeExtrusionRole::Count && (m_extrusions.role_visibility_flags & (1 << int(role))) != 0;
|
||||
}
|
||||
bool is_visible(const Path& path) const { return is_visible(path.role); }
|
||||
void log_memory_used(const std::string& label, int64_t additional = 0) const;
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
ColorRGBA option_color(EMoveType move_type) const;
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // !ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
};
|
||||
|
||||
} // namespace GUI
|
||||
|
@ -209,19 +209,6 @@ static const std::vector<Color> Travels_Colors{ {
|
||||
{ 129, 16, 7 } // Retract
|
||||
} };
|
||||
|
||||
//
|
||||
// Palette used to render options
|
||||
//
|
||||
static const std::map<EMoveType, Color> Options_Colors{ {
|
||||
{ EMoveType::Retract, { 205, 34, 214 } },
|
||||
{ EMoveType::Unretract, { 73, 173, 207 } },
|
||||
{ EMoveType::Seam, { 230, 230, 230 } },
|
||||
{ EMoveType::ToolChange, { 193, 190, 99 } },
|
||||
{ EMoveType::ColorChange, { 218, 148, 139 } },
|
||||
{ EMoveType::PausePrint, { 82, 240, 131 } },
|
||||
{ EMoveType::CustomGCode, { 226, 210, 67 } }
|
||||
} };
|
||||
|
||||
//
|
||||
// Mapping from EMoveType to EOptionType
|
||||
//
|
||||
|
@ -151,6 +151,10 @@ public:
|
||||
void set_extrusion_role_color(EGCodeExtrusionRole role, const Color& color);
|
||||
void reset_default_extrusion_roles_colors();
|
||||
|
||||
const Color& get_option_color(EOptionType type) const;
|
||||
void set_option_color(EOptionType type, const Color& color);
|
||||
void reset_default_options_colors();
|
||||
|
||||
const ColorRange& get_height_range() const;
|
||||
const ColorRange& get_width_range() const;
|
||||
const ColorRange& get_speed_range() const;
|
||||
|
@ -272,6 +272,21 @@ void Viewer::reset_default_extrusion_roles_colors()
|
||||
m_impl->reset_default_extrusion_roles_colors();
|
||||
}
|
||||
|
||||
const Color& Viewer::get_option_color(EOptionType type) const
|
||||
{
|
||||
return m_impl->get_option_color(type);
|
||||
}
|
||||
|
||||
void Viewer::set_option_color(EOptionType type, const Color& color)
|
||||
{
|
||||
m_impl->set_option_color(type, color);
|
||||
}
|
||||
|
||||
void Viewer::reset_default_options_colors()
|
||||
{
|
||||
m_impl->reset_default_options_colors();
|
||||
}
|
||||
|
||||
const ColorRange& Viewer::get_height_range() const
|
||||
{
|
||||
return m_impl->get_height_range();
|
||||
|
@ -964,14 +964,8 @@ void ViewerImpl::set_tool_colors(const std::vector<Color>& colors)
|
||||
|
||||
const Color& ViewerImpl::get_extrusion_role_color(EGCodeExtrusionRole role) const
|
||||
{
|
||||
try
|
||||
{
|
||||
return m_extrusion_roles_colors.at(role);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return Dummy_Color;
|
||||
}
|
||||
auto it = m_extrusion_roles_colors.find(role);
|
||||
return (it != m_extrusion_roles_colors.end()) ? m_extrusion_roles_colors.at(role) : Dummy_Color;
|
||||
}
|
||||
|
||||
void ViewerImpl::set_extrusion_role_color(EGCodeExtrusionRole role, const Color& color)
|
||||
@ -986,6 +980,24 @@ void ViewerImpl::reset_default_extrusion_roles_colors()
|
||||
m_extrusion_roles_colors = Default_Extrusion_Roles_Colors;
|
||||
}
|
||||
|
||||
const Color& ViewerImpl::get_option_color(EOptionType type) const
|
||||
{
|
||||
auto it = m_options_colors.find(type);
|
||||
return (it != m_options_colors.end()) ? m_options_colors.at(type) : Dummy_Color;
|
||||
}
|
||||
|
||||
void ViewerImpl::set_option_color(EOptionType type, const Color& color)
|
||||
{
|
||||
auto it = m_options_colors.find(type);
|
||||
if (it != m_options_colors.end())
|
||||
m_options_colors[type] = color;
|
||||
}
|
||||
|
||||
void ViewerImpl::reset_default_options_colors()
|
||||
{
|
||||
m_options_colors = Default_Options_Colors;
|
||||
}
|
||||
|
||||
const ColorRange& ViewerImpl::get_height_range() const
|
||||
{
|
||||
return m_height_range;
|
||||
@ -1301,7 +1313,7 @@ Color ViewerImpl::select_color(const PathVertex& v) const
|
||||
return Wipe_Color;
|
||||
|
||||
if (v.is_option())
|
||||
return Options_Colors.at(v.type);
|
||||
return get_option_color(type_to_option(v.type));
|
||||
|
||||
const size_t role = static_cast<size_t>(v.role);
|
||||
switch (m_settings.view_type)
|
||||
|
@ -50,6 +50,19 @@ static const std::map<EGCodeExtrusionRole, Color> Default_Extrusion_Roles_Colors
|
||||
{ EGCodeExtrusionRole::Custom, { 94, 209, 148 } }
|
||||
} };
|
||||
|
||||
//
|
||||
// Palette used to render options
|
||||
//
|
||||
static const std::map<EOptionType, Color> Default_Options_Colors{ {
|
||||
{ EOptionType::Retractions, { 205, 34, 214 } },
|
||||
{ EOptionType::Unretractions, { 73, 173, 207 } },
|
||||
{ EOptionType::Seams, { 230, 230, 230 } },
|
||||
{ EOptionType::ToolChanges, { 193, 190, 99 } },
|
||||
{ EOptionType::ColorChanges, { 218, 148, 139 } },
|
||||
{ EOptionType::PausePrints, { 82, 240, 131 } },
|
||||
{ EOptionType::CustomGCodes, { 226, 210, 67 } }
|
||||
} };
|
||||
|
||||
class ViewerImpl
|
||||
{
|
||||
public:
|
||||
@ -156,6 +169,10 @@ public:
|
||||
void set_extrusion_role_color(EGCodeExtrusionRole role, const Color& color);
|
||||
void reset_default_extrusion_roles_colors();
|
||||
|
||||
const Color& get_option_color(EOptionType type) const;
|
||||
void set_option_color(EOptionType type, const Color& color);
|
||||
void reset_default_options_colors();
|
||||
|
||||
const ColorRange& get_height_range() const;
|
||||
const ColorRange& get_width_range() const;
|
||||
const ColorRange& get_speed_range() const;
|
||||
@ -208,6 +225,7 @@ private:
|
||||
bool m_loading{ false };
|
||||
|
||||
std::map<EGCodeExtrusionRole, Color> m_extrusion_roles_colors{ Default_Extrusion_Roles_Colors };
|
||||
std::map<EOptionType, Color> m_options_colors{ Default_Options_Colors };
|
||||
|
||||
//
|
||||
// The OpenGL element used to represent all toolpath segments
|
||||
|
Loading…
x
Reference in New Issue
Block a user