ENH: optimize layer time(log) display
Change-Id: Ibb43561f11dfd1c63b3a0da75a3cb10b95afc71e
This commit is contained in:
parent
e69c0ed7f6
commit
e1f97681f4
|
@ -77,8 +77,6 @@ static std::string get_view_type_string(GCodeViewer::EViewType view_type)
|
||||||
return _u8L("Filament");
|
return _u8L("Filament");
|
||||||
else if (view_type == GCodeViewer::EViewType::LayerTime)
|
else if (view_type == GCodeViewer::EViewType::LayerTime)
|
||||||
return _u8L("Layer Time");
|
return _u8L("Layer Time");
|
||||||
else if (view_type == GCodeViewer::EViewType::LayerTimeLog)
|
|
||||||
return _u8L("Layer Time (log)");
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,12 +280,13 @@ float GCodeViewer::Extrusions::Range::get_value_at_step(int step) const {
|
||||||
if (!log_scale)
|
if (!log_scale)
|
||||||
return min + static_cast<float>(step) * step_size();
|
return min + static_cast<float>(step) * step_size();
|
||||||
else
|
else
|
||||||
|
// calculate log-average
|
||||||
{
|
{
|
||||||
float min_range = min;
|
float min_range = min;
|
||||||
if (min_range == 0)
|
if (min_range == 0)
|
||||||
min_range = 0.0001f;
|
min_range = 0.0001f;
|
||||||
float step_size = std::log(max / min_range) / (static_cast<float>(Range_Colors.size()) - 1.0f);
|
float step_size = std::log(max / min_range) / (static_cast<float>(Range_Colors.size()) - 1.0f);
|
||||||
return std::log(min) + static_cast<float>(step) * step_size;
|
return std::exp(std::log(min) + static_cast<float>(step) * step_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GCodeViewer::SequentialRangeCap::~SequentialRangeCap() {
|
GCodeViewer::SequentialRangeCap::~SequentialRangeCap() {
|
||||||
|
@ -380,7 +379,6 @@ void GCodeViewer::SequentialView::Marker::render(int canvas_width, int canvas_he
|
||||||
std::string speed = ImGui::ColorMarkerStart + _u8L("Speed: ") + ImGui::ColorMarkerEnd;
|
std::string speed = ImGui::ColorMarkerStart + _u8L("Speed: ") + ImGui::ColorMarkerEnd;
|
||||||
std::string flow = ImGui::ColorMarkerStart + _u8L("Flow: ") + ImGui::ColorMarkerEnd;
|
std::string flow = ImGui::ColorMarkerStart + _u8L("Flow: ") + ImGui::ColorMarkerEnd;
|
||||||
std::string layer_time = ImGui::ColorMarkerStart + _u8L("Layer Time: ") + ImGui::ColorMarkerEnd;
|
std::string layer_time = ImGui::ColorMarkerStart + _u8L("Layer Time: ") + ImGui::ColorMarkerEnd;
|
||||||
std::string layer_time_log = ImGui::ColorMarkerStart + _u8L("Layer Time(log): ") + ImGui::ColorMarkerEnd;
|
|
||||||
std::string fanspeed = ImGui::ColorMarkerStart + _u8L("Fan Speed: ") + ImGui::ColorMarkerEnd;
|
std::string fanspeed = ImGui::ColorMarkerStart + _u8L("Fan Speed: ") + ImGui::ColorMarkerEnd;
|
||||||
std::string temperature = ImGui::ColorMarkerStart + _u8L("Temperature: ") + ImGui::ColorMarkerEnd;
|
std::string temperature = ImGui::ColorMarkerStart + _u8L("Temperature: ") + ImGui::ColorMarkerEnd;
|
||||||
const float item_size = imgui.calc_text_size("X: 000.000 ").x;
|
const float item_size = imgui.calc_text_size("X: 000.000 ").x;
|
||||||
|
@ -394,7 +392,7 @@ void GCodeViewer::SequentialView::Marker::render(int canvas_width, int canvas_he
|
||||||
if (view_type == EViewType::FeatureType || view_type == EViewType::ColorPrint)
|
if (view_type == EViewType::FeatureType || view_type == EViewType::ColorPrint)
|
||||||
show_extra_text = false;
|
show_extra_text = false;
|
||||||
// Feedrate and LayerTime shall always show extra text
|
// Feedrate and LayerTime shall always show extra text
|
||||||
else if (view_type == EViewType::Feedrate || view_type == EViewType::LayerTime || view_type == EViewType::LayerTimeLog)
|
else if (view_type == EViewType::Feedrate || view_type == EViewType::LayerTime)
|
||||||
show_extra_text = true;
|
show_extra_text = true;
|
||||||
if (show_extra_text)
|
if (show_extra_text)
|
||||||
{
|
{
|
||||||
|
@ -461,13 +459,6 @@ void GCodeViewer::SequentialView::Marker::render(int canvas_width, int canvas_he
|
||||||
imgui.text(buf);
|
imgui.text(buf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EViewType::LayerTimeLog: {
|
|
||||||
ImGui::SameLine(window_padding + item_size + item_spacing);
|
|
||||||
sprintf(buf, "%s%.1f", layer_time_log.c_str(), std::log(m_curr_move.layer_duration));
|
|
||||||
ImGui::PushItemWidth(item_size);
|
|
||||||
imgui.text(buf);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -932,7 +923,6 @@ void GCodeViewer::update_by_mode(ConfigOptionMode mode)
|
||||||
view_type_items.push_back(EViewType::Width);
|
view_type_items.push_back(EViewType::Width);
|
||||||
view_type_items.push_back(EViewType::VolumetricRate);
|
view_type_items.push_back(EViewType::VolumetricRate);
|
||||||
view_type_items.push_back(EViewType::LayerTime);
|
view_type_items.push_back(EViewType::LayerTime);
|
||||||
view_type_items.push_back(EViewType::LayerTimeLog);
|
|
||||||
view_type_items.push_back(EViewType::FanSpeed);
|
view_type_items.push_back(EViewType::FanSpeed);
|
||||||
view_type_items.push_back(EViewType::Temperature);
|
view_type_items.push_back(EViewType::Temperature);
|
||||||
if (mode == ConfigOptionMode::comDevelop) {
|
if (mode == ConfigOptionMode::comDevelop) {
|
||||||
|
@ -1172,7 +1162,6 @@ void GCodeViewer::refresh(const GCodeProcessorResult& gcode_result, const std::v
|
||||||
|
|
||||||
if (curr.layer_duration > 0.f) {
|
if (curr.layer_duration > 0.f) {
|
||||||
m_extrusions.ranges.layer_duration.update_from(curr.layer_duration);
|
m_extrusions.ranges.layer_duration.update_from(curr.layer_duration);
|
||||||
m_extrusions.ranges.layer_duration_log.update_from(curr.layer_duration);
|
|
||||||
}
|
}
|
||||||
[[fallthrough]];
|
[[fallthrough]];
|
||||||
}
|
}
|
||||||
|
@ -3256,7 +3245,6 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool
|
||||||
case EViewType::FanSpeed: { color = m_extrusions.ranges.fan_speed.get_color_at(path.fan_speed); break; }
|
case EViewType::FanSpeed: { color = m_extrusions.ranges.fan_speed.get_color_at(path.fan_speed); break; }
|
||||||
case EViewType::Temperature: { color = m_extrusions.ranges.temperature.get_color_at(path.temperature); break; }
|
case EViewType::Temperature: { color = m_extrusions.ranges.temperature.get_color_at(path.temperature); break; }
|
||||||
case EViewType::LayerTime: { color = m_extrusions.ranges.layer_duration.get_color_at(path.layer_time); break; }
|
case EViewType::LayerTime: { color = m_extrusions.ranges.layer_duration.get_color_at(path.layer_time); break; }
|
||||||
case EViewType::LayerTimeLog: { color = m_extrusions.ranges.layer_duration_log.get_color_at(path.layer_time); break; }
|
|
||||||
case EViewType::VolumetricRate: { color = m_extrusions.ranges.volumetric_rate.get_color_at(path.volumetric_rate); break; }
|
case EViewType::VolumetricRate: { color = m_extrusions.ranges.volumetric_rate.get_color_at(path.volumetric_rate); break; }
|
||||||
case EViewType::Tool: { color = m_tools.m_tool_colors[path.extruder_id]; break; }
|
case EViewType::Tool: { color = m_tools.m_tool_colors[path.extruder_id]; break; }
|
||||||
case EViewType::ColorPrint: {
|
case EViewType::ColorPrint: {
|
||||||
|
@ -4533,7 +4521,6 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv
|
||||||
case EViewType::Temperature: { imgui.title(_u8L("Temperature (°C)")); break; }
|
case EViewType::Temperature: { imgui.title(_u8L("Temperature (°C)")); break; }
|
||||||
case EViewType::VolumetricRate: { imgui.title(_u8L("Volumetric flow rate (mm³/s)")); break; }
|
case EViewType::VolumetricRate: { imgui.title(_u8L("Volumetric flow rate (mm³/s)")); break; }
|
||||||
case EViewType::LayerTime: { imgui.title(_u8L("Layer Time (s)")); break; }
|
case EViewType::LayerTime: { imgui.title(_u8L("Layer Time (s)")); break; }
|
||||||
case EViewType::LayerTimeLog: { imgui.title(_u8L("Layer Time (log) (s)")); break; }
|
|
||||||
|
|
||||||
case EViewType::Tool:
|
case EViewType::Tool:
|
||||||
{
|
{
|
||||||
|
@ -4689,7 +4676,6 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv
|
||||||
case EViewType::FanSpeed: { append_range(m_extrusions.ranges.fan_speed, 0); break; }
|
case EViewType::FanSpeed: { append_range(m_extrusions.ranges.fan_speed, 0); break; }
|
||||||
case EViewType::Temperature: { append_range(m_extrusions.ranges.temperature, 0); break; }
|
case EViewType::Temperature: { append_range(m_extrusions.ranges.temperature, 0); break; }
|
||||||
case EViewType::LayerTime: { append_range(m_extrusions.ranges.layer_duration, 1); break; }
|
case EViewType::LayerTime: { append_range(m_extrusions.ranges.layer_duration, 1); break; }
|
||||||
case EViewType::LayerTimeLog: { append_range(m_extrusions.ranges.layer_duration_log, 1); break; }
|
|
||||||
case EViewType::VolumetricRate: { append_range(m_extrusions.ranges.volumetric_rate, 2); break; }
|
case EViewType::VolumetricRate: { append_range(m_extrusions.ranges.volumetric_rate, 2); break; }
|
||||||
case EViewType::Tool:
|
case EViewType::Tool:
|
||||||
{
|
{
|
||||||
|
|
|
@ -408,7 +408,7 @@ class GCodeViewer
|
||||||
min = std::min(min, value);
|
min = std::min(min, value);
|
||||||
max = std::max(max, value);
|
max = std::max(max, value);
|
||||||
}
|
}
|
||||||
void reset(bool log = false) { min = FLT_MAX; max = -FLT_MAX; count = 0; log_scale = false; log_scale = log; }
|
void reset(bool log = false) { min = FLT_MAX; max = -FLT_MAX; count = 0; log_scale = log; }
|
||||||
|
|
||||||
float step_size() const;
|
float step_size() const;
|
||||||
Color get_color_at(float value) const;
|
Color get_color_at(float value) const;
|
||||||
|
@ -432,7 +432,6 @@ class GCodeViewer
|
||||||
Range temperature;
|
Range temperature;
|
||||||
// Color mapping by layer time.
|
// Color mapping by layer time.
|
||||||
Range layer_duration;
|
Range layer_duration;
|
||||||
Range layer_duration_log;
|
|
||||||
void reset() {
|
void reset() {
|
||||||
height.reset();
|
height.reset();
|
||||||
width.reset();
|
width.reset();
|
||||||
|
@ -440,8 +439,7 @@ class GCodeViewer
|
||||||
fan_speed.reset();
|
fan_speed.reset();
|
||||||
volumetric_rate.reset();
|
volumetric_rate.reset();
|
||||||
temperature.reset();
|
temperature.reset();
|
||||||
layer_duration.reset();
|
layer_duration.reset(true);
|
||||||
layer_duration_log.reset(true);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -721,7 +719,6 @@ public:
|
||||||
ColorPrint,
|
ColorPrint,
|
||||||
FilamentId,
|
FilamentId,
|
||||||
LayerTime,
|
LayerTime,
|
||||||
LayerTimeLog,
|
|
||||||
Count
|
Count
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue