diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index d73ea5cd35..1ccfdf90d9 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -4838,19 +4838,9 @@ void GCodeViewer::render_legend(float& legend_height) libvgcode::EGCodeExtrusionRole role = roles[i]; if (static_cast(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(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(EOptionsColors::ToolChanges)]; } case EMoveType::Color_change: { return Options_Colors[static_cast(EOptionsColors::ColorChanges)]; } case EMoveType::Pause_Print: { return Options_Colors[static_cast(EOptionsColors::PausePrints)]; } @@ -5863,11 +5846,11 @@ ColorRGBA GCodeViewer::option_color(EMoveType move_type) const case EMoveType::Unretract: { return Options_Colors[static_cast(EOptionsColors::Unretractions)]; } case EMoveType::Seam: { return Options_Colors[static_cast(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 diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index c7f60fb6f8..e832ab1f80 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -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 diff --git a/src/slic3r/GUI/LibVGCode/include/Types.hpp b/src/slic3r/GUI/LibVGCode/include/Types.hpp index bc6ef146aa..e271c5230f 100644 --- a/src/slic3r/GUI/LibVGCode/include/Types.hpp +++ b/src/slic3r/GUI/LibVGCode/include/Types.hpp @@ -209,19 +209,6 @@ static const std::vector Travels_Colors{ { { 129, 16, 7 } // Retract } }; -// -// Palette used to render options -// -static const std::map 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 // diff --git a/src/slic3r/GUI/LibVGCode/include/Viewer.hpp b/src/slic3r/GUI/LibVGCode/include/Viewer.hpp index 4e1149416b..be70da6d23 100644 --- a/src/slic3r/GUI/LibVGCode/include/Viewer.hpp +++ b/src/slic3r/GUI/LibVGCode/include/Viewer.hpp @@ -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; diff --git a/src/slic3r/GUI/LibVGCode/src/Viewer.cpp b/src/slic3r/GUI/LibVGCode/src/Viewer.cpp index c5a34b9621..80e64de011 100644 --- a/src/slic3r/GUI/LibVGCode/src/Viewer.cpp +++ b/src/slic3r/GUI/LibVGCode/src/Viewer.cpp @@ -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(); diff --git a/src/slic3r/GUI/LibVGCode/src/ViewerImpl.cpp b/src/slic3r/GUI/LibVGCode/src/ViewerImpl.cpp index a98301b355..227c617678 100644 --- a/src/slic3r/GUI/LibVGCode/src/ViewerImpl.cpp +++ b/src/slic3r/GUI/LibVGCode/src/ViewerImpl.cpp @@ -964,14 +964,8 @@ void ViewerImpl::set_tool_colors(const std::vector& 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(v.role); switch (m_settings.view_type) diff --git a/src/slic3r/GUI/LibVGCode/src/ViewerImpl.hpp b/src/slic3r/GUI/LibVGCode/src/ViewerImpl.hpp index 3a467cce40..8e2a17be63 100644 --- a/src/slic3r/GUI/LibVGCode/src/ViewerImpl.hpp +++ b/src/slic3r/GUI/LibVGCode/src/ViewerImpl.hpp @@ -50,6 +50,19 @@ static const std::map Default_Extrusion_Roles_Colors { EGCodeExtrusionRole::Custom, { 94, 209, 148 } } } }; +// +// Palette used to render options +// +static const std::map 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 m_extrusion_roles_colors{ Default_Extrusion_Roles_Colors }; + std::map m_options_colors{ Default_Options_Colors }; // // The OpenGL element used to represent all toolpath segments