mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-30 22:52:01 +08:00
Refactoring
This commit is contained in:
parent
137495dd88
commit
f11fdf4432
@ -1176,9 +1176,9 @@ void GCodeViewer::load_as_gcode(const GCodeProcessorResult& gcode_result, const
|
||||
m_viewer.load(std::move(data));
|
||||
|
||||
#if ENABLE_NEW_GCODE_VIEWER_NO_COG_AND_TOOL_MARKERS
|
||||
const uint32_t vertices_count = m_viewer.get_vertices_count();
|
||||
const size_t vertices_count = m_viewer.get_vertices_count();
|
||||
m_cog.reset();
|
||||
for (uint32_t i = 1; i < vertices_count; ++i) {
|
||||
for (size_t i = 1; i < vertices_count; ++i) {
|
||||
const libvgcode::PathVertex& curr = m_viewer.get_vertex_at(i);
|
||||
if (curr.type == libvgcode::EMoveType::Extrude &&
|
||||
curr.role != libvgcode::EGCodeExtrusionRole::Skirt &&
|
||||
@ -1539,9 +1539,10 @@ void GCodeViewer::render()
|
||||
if (m_viewer.get_layers_count() > 0) {
|
||||
render_legend(legend_height);
|
||||
if (m_viewer.get_view_enabled_range()[1] != m_viewer.get_view_visible_range()[1]) {
|
||||
m_sequential_view.marker.set_world_position(libvgcode::convert(m_viewer.get_current_vertex().position));
|
||||
const libvgcode::PathVertex& curr_vertex = m_viewer.get_current_vertex();
|
||||
m_sequential_view.marker.set_world_position(libvgcode::convert(curr_vertex.position));
|
||||
m_sequential_view.marker.set_z_offset(m_z_offset);
|
||||
m_sequential_view.render(legend_height, &m_viewer, m_viewer.get_current_vertex().gcode_id);
|
||||
m_sequential_view.render(legend_height, &m_viewer, curr_vertex.gcode_id);
|
||||
}
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
@ -1611,7 +1612,7 @@ bool GCodeViewer::can_export_toolpaths() const
|
||||
{
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
const std::array<uint32_t, 2>& visible_range = m_viewer.get_view_visible_range();
|
||||
const libvgcode::Interval& visible_range = m_viewer.get_view_visible_range();
|
||||
for (size_t i = visible_range[0]; i <= visible_range[1]; ++i) {
|
||||
if (m_viewer.get_vertex_at(i).is_extrusion())
|
||||
return true;
|
||||
@ -1630,7 +1631,7 @@ void GCodeViewer::update_sequential_view_current(unsigned int first, unsigned in
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
m_viewer.set_view_visible_range(static_cast<uint32_t>(first), static_cast<uint32_t>(last));
|
||||
const std::array<uint32_t, 2>& enabled_range = m_viewer.get_view_enabled_range();
|
||||
const libvgcode::Interval& enabled_range = m_viewer.get_view_enabled_range();
|
||||
wxGetApp().plater()->enable_preview_moves_slider(enabled_range[1] > enabled_range[0]);
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
@ -1798,7 +1799,7 @@ public:
|
||||
fprintf(f_mat.f, "# G-Code Toolpaths Materials\n");
|
||||
fprintf(f_mat.f, "# Generated by %s-%s based on Slic3r\n", SLIC3R_APP_NAME, SLIC3R_VERSION);
|
||||
|
||||
const std::array<uint32_t, 2>& visible_range = m_viewer.get_view_visible_range();
|
||||
const libvgcode::Interval& visible_range = m_viewer.get_view_visible_range();
|
||||
for (size_t i = visible_range[0]; i <= visible_range[1]; ++i) {
|
||||
const libvgcode::PathVertex& curr = m_viewer.get_vertex_at(i);
|
||||
const libvgcode::PathVertex& next = m_viewer.get_vertex_at(i + 1);
|
||||
@ -3989,7 +3990,7 @@ void GCodeViewer::render_new_toolpaths()
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "# enabled lines");
|
||||
ImGui::TableSetColumnIndex(1);
|
||||
const std::array<uint32_t, 2>& enabled_segments_range = m_viewer.get_enabled_segments_range();
|
||||
const libvgcode::Interval& enabled_segments_range = m_viewer.get_enabled_segments_range();
|
||||
imgui.text(std::to_string(m_viewer.get_enabled_segments_count()) + " [" + std::to_string(enabled_segments_range[0]) +
|
||||
"-" + std::to_string(enabled_segments_range[1]) + "]");
|
||||
|
||||
@ -3997,7 +3998,7 @@ void GCodeViewer::render_new_toolpaths()
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "# enabled options");
|
||||
ImGui::TableSetColumnIndex(1);
|
||||
const std::array<uint32_t, 2>& enabled_options_range = m_viewer.get_enabled_options_range();
|
||||
const libvgcode::Interval& enabled_options_range = m_viewer.get_enabled_options_range();
|
||||
imgui.text(std::to_string(m_viewer.get_enabled_options_count()) + " [" + std::to_string(enabled_options_range[0]) +
|
||||
"-" + std::to_string(enabled_options_range[1]) + "]");
|
||||
|
||||
@ -4007,14 +4008,14 @@ void GCodeViewer::render_new_toolpaths()
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "layers range");
|
||||
ImGui::TableSetColumnIndex(1);
|
||||
const std::array<uint32_t, 2>& layers_range = m_viewer.get_layers_view_range();
|
||||
const libvgcode::Interval& layers_range = m_viewer.get_layers_view_range();
|
||||
imgui.text(std::to_string(layers_range[0]) + " - " + std::to_string(layers_range[1]));
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "view range (full)");
|
||||
ImGui::TableSetColumnIndex(1);
|
||||
const std::array<uint32_t, 2>& full_view_range = m_viewer.get_view_full_range();
|
||||
const libvgcode::Interval& full_view_range = m_viewer.get_view_full_range();
|
||||
imgui.text(std::to_string(full_view_range[0]) + " - " + std::to_string(full_view_range[1]) + " | " +
|
||||
std::to_string(m_viewer.get_vertex_at(full_view_range[0]).gcode_id) + " - " +
|
||||
std::to_string(m_viewer.get_vertex_at(full_view_range[1]).gcode_id));
|
||||
@ -4023,7 +4024,7 @@ void GCodeViewer::render_new_toolpaths()
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "view range (enabled)");
|
||||
ImGui::TableSetColumnIndex(1);
|
||||
const std::array<uint32_t, 2>& enabled_view_range = m_viewer.get_view_enabled_range();
|
||||
const libvgcode::Interval& enabled_view_range = m_viewer.get_view_enabled_range();
|
||||
imgui.text(std::to_string(enabled_view_range[0]) + " - " + std::to_string(enabled_view_range[1]) + " | " +
|
||||
std::to_string(m_viewer.get_vertex_at(enabled_view_range[0]).gcode_id) + " - " +
|
||||
std::to_string(m_viewer.get_vertex_at(enabled_view_range[1]).gcode_id));
|
||||
@ -4032,7 +4033,7 @@ void GCodeViewer::render_new_toolpaths()
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, "view range (visible)");
|
||||
ImGui::TableSetColumnIndex(1);
|
||||
const std::array<uint32_t, 2>& visible_view_range = m_viewer.get_view_visible_range();
|
||||
const libvgcode::Interval& visible_view_range = m_viewer.get_view_visible_range();
|
||||
imgui.text(std::to_string(visible_view_range[0]) + " - " + std::to_string(visible_view_range[1]) + " | " +
|
||||
std::to_string(m_viewer.get_vertex_at(visible_view_range[0]).gcode_id) + " - " +
|
||||
std::to_string(m_viewer.get_vertex_at(visible_view_range[1]).gcode_id));
|
||||
@ -5152,8 +5153,8 @@ void GCodeViewer::render_legend(float& legend_height)
|
||||
append_item(EItemType::Rect, libvgcode::convert(m_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]() {
|
||||
const std::array<uint32_t, 2> view_visible_range = m_viewer.get_view_visible_range();
|
||||
const std::array<uint32_t, 2> view_enabled_range = m_viewer.get_view_enabled_range();
|
||||
const libvgcode::Interval view_visible_range = m_viewer.get_view_visible_range();
|
||||
const libvgcode::Interval view_enabled_range = m_viewer.get_view_enabled_range();
|
||||
m_viewer.toggle_extrusion_role_visibility((libvgcode::EGCodeExtrusionRole)role);
|
||||
std::optional<int> view_visible_range_min;
|
||||
std::optional<int> view_visible_range_max;
|
||||
@ -5884,8 +5885,8 @@ void GCodeViewer::render_legend(float& legend_height)
|
||||
if (imgui.draw_radio_button(name, 1.5f * icon_size, active, draw_callback)) {
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
const std::array<uint32_t, 2> view_visible_range = m_viewer.get_view_visible_range();
|
||||
const std::array<uint32_t, 2> view_enabled_range = m_viewer.get_view_enabled_range();
|
||||
const libvgcode::Interval& view_visible_range = m_viewer.get_view_visible_range();
|
||||
const libvgcode::Interval& view_enabled_range = m_viewer.get_view_enabled_range();
|
||||
bool keep_visible_range = false;
|
||||
#if ENABLE_NEW_GCODE_VIEWER_NO_COG_AND_TOOL_MARKERS
|
||||
switch (type)
|
||||
|
@ -1053,21 +1053,21 @@ public:
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
const std::array<uint32_t, 2>& get_gcode_view_full_range() const { return m_viewer.get_view_full_range(); }
|
||||
const std::array<uint32_t, 2>& get_gcode_view_enabled_range() const { return m_viewer.get_view_enabled_range(); }
|
||||
const std::array<uint32_t, 2>& get_gcode_view_visible_range() const { return m_viewer.get_view_visible_range(); }
|
||||
libvgcode::PathVertex get_gcode_vertex_at(size_t id) const { return m_viewer.get_vertex_at(id); }
|
||||
const libvgcode::Interval& get_gcode_view_full_range() const { return m_viewer.get_view_full_range(); }
|
||||
const libvgcode::Interval& get_gcode_view_enabled_range() const { return m_viewer.get_view_enabled_range(); }
|
||||
const libvgcode::Interval& get_gcode_view_visible_range() const { return m_viewer.get_view_visible_range(); }
|
||||
const libvgcode::PathVertex& get_gcode_vertex_at(size_t id) const { return m_viewer.get_vertex_at(id); }
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
bool is_contained_in_bed() const { return m_contained_in_bed; }
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
void set_view_type(libvgcode::EViewType type) { m_viewer.set_view_type(type); }
|
||||
libvgcode::EViewType get_view_type() const { return m_viewer.get_view_type(); }
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
EViewType get_view_type() const { return m_view_type; }
|
||||
void set_view_type(EViewType type) {
|
||||
if (type == EViewType::Count)
|
||||
@ -1081,9 +1081,9 @@ public:
|
||||
void set_toolpath_role_visibility_flags(unsigned int flags) { m_extrusions.role_visibility_flags = flags; }
|
||||
unsigned int get_options_visibility_flags() const;
|
||||
void set_options_visibility_from_flags(unsigned int flags);
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#endif // ENABLE_NEW_GCODE_VIEWER
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void set_layers_z_range(const std::array<unsigned int, 2>& layers_z_range);
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
@ -744,10 +744,10 @@ public:
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
void update_gcode_sequential_view_current(unsigned int first, unsigned int last) { m_gcode_viewer.update_sequential_view_current(first, last); }
|
||||
const std::array<uint32_t, 2>& get_gcode_view_full_range() const { return m_gcode_viewer.get_gcode_view_full_range(); }
|
||||
const std::array<uint32_t, 2>& get_gcode_view_enabled_range() const { return m_gcode_viewer.get_gcode_view_enabled_range(); }
|
||||
const std::array<uint32_t, 2>& get_gcode_view_visible_range() const { return m_gcode_viewer.get_gcode_view_visible_range(); }
|
||||
libvgcode::PathVertex get_gcode_vertex_at(size_t id) const { return m_gcode_viewer.get_gcode_vertex_at(id); }
|
||||
const libvgcode::Interval& get_gcode_view_full_range() const { return m_gcode_viewer.get_gcode_view_full_range(); }
|
||||
const libvgcode::Interval& get_gcode_view_enabled_range() const { return m_gcode_viewer.get_gcode_view_enabled_range(); }
|
||||
const libvgcode::Interval& get_gcode_view_visible_range() const { return m_gcode_viewer.get_gcode_view_visible_range(); }
|
||||
const libvgcode::PathVertex& get_gcode_vertex_at(size_t id) const { return m_gcode_viewer.get_gcode_vertex_at(id); }
|
||||
#else
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
void update_gcode_sequential_view_current(unsigned int first, unsigned int last) { m_gcode_viewer.update_sequential_view_current(first, last); }
|
||||
|
@ -733,10 +733,10 @@ void Preview::update_moves_slider()
|
||||
if (m_gcode_result->moves.empty())
|
||||
return;
|
||||
|
||||
const std::array<uint32_t, 2>& range = m_canvas->get_gcode_view_enabled_range();
|
||||
uint32_t last_gcode_id = m_canvas->get_gcode_vertex_at(static_cast<size_t>(range[0])).gcode_id;
|
||||
const libvgcode::Interval& range = m_canvas->get_gcode_view_enabled_range();
|
||||
uint32_t last_gcode_id = m_canvas->get_gcode_vertex_at(range[0]).gcode_id;
|
||||
|
||||
const size_t range_size = static_cast<size_t>(range[1] - range[0] + 1);
|
||||
const size_t range_size = range[1] - range[0] + 1;
|
||||
std::vector<double> values;
|
||||
values.reserve(range_size);
|
||||
std::vector<double> alternate_values;
|
||||
@ -746,8 +746,8 @@ void Preview::update_moves_slider()
|
||||
std::optional<uint32_t> visible_range_max_id;
|
||||
uint32_t counter = 0;
|
||||
|
||||
for (uint32_t i = range[0]; i <= range[1]; ++i) {
|
||||
const uint32_t gcode_id = m_canvas->get_gcode_vertex_at(static_cast<size_t>(i)).gcode_id;
|
||||
for (size_t i = range[0]; i <= range[1]; ++i) {
|
||||
const uint32_t gcode_id = m_canvas->get_gcode_vertex_at(i).gcode_id;
|
||||
if (i > range[0]) {
|
||||
// skip consecutive moves with same gcode id (resulting from processing G2 and G3 lines)
|
||||
if (last_gcode_id == gcode_id) {
|
||||
|
@ -713,8 +713,7 @@ static void convert_objects_to_vertices(const Slic3r::SpanOfConstPtrs<Slic3r::Pr
|
||||
layers.reserve(layers.size() + data.layers_zs.size());
|
||||
std::copy(data.layers_zs.begin(), data.layers_zs.end(), std::back_inserter(layers));
|
||||
}
|
||||
std::sort(layers.begin(), layers.end(), [](float z1, float z2) { return z1 < z2; });
|
||||
layers.erase(std::unique(layers.begin(), layers.end(), [](float z1, float z2) { return z1 == z2; }), layers.end());
|
||||
Slic3r::sort_remove_duplicates(layers);
|
||||
|
||||
// collect extracted vertices layer by layer
|
||||
float min_z = 0.0f;
|
||||
|
@ -22,7 +22,7 @@ struct PathVertex
|
||||
//
|
||||
// Segment end position
|
||||
//
|
||||
Vec3 position{ 0.0f, 0.0f, 0.0f };
|
||||
Vec3 position{ FLT_MAX, FLT_MAX, FLT_MAX };
|
||||
//
|
||||
// Segment height
|
||||
//
|
||||
@ -102,6 +102,8 @@ struct PathVertex
|
||||
bool is_custom_gcode() const;
|
||||
};
|
||||
|
||||
static const PathVertex Dummy_Path_Vertex = PathVertex();
|
||||
|
||||
} // namespace libvgcode
|
||||
|
||||
//################################################################################################################################
|
||||
|
@ -54,6 +54,13 @@ using Color = std::array<uint8_t, 3>;
|
||||
//
|
||||
using AABox = std::array<Vec3, 2>;
|
||||
|
||||
//
|
||||
// One dimensional natural numbers interval
|
||||
// [0] -> min
|
||||
// [1] -> max
|
||||
//
|
||||
using Interval = std::array<size_t, 2>;
|
||||
|
||||
//
|
||||
// View types
|
||||
//
|
||||
|
@ -40,9 +40,9 @@ public:
|
||||
ETimeMode get_time_mode() const;
|
||||
void set_time_mode(ETimeMode mode);
|
||||
|
||||
const std::array<uint32_t, 2>& get_layers_view_range() const;
|
||||
void set_layers_view_range(const std::array<uint32_t, 2>& range);
|
||||
void set_layers_view_range(uint32_t min, uint32_t max);
|
||||
const Interval& get_layers_view_range() const;
|
||||
void set_layers_view_range(const Interval& range);
|
||||
void set_layers_view_range(Interval::value_type min, Interval::value_type max);
|
||||
|
||||
bool is_top_layer_only_view_range() const;
|
||||
void set_top_layer_only_view_range(bool top_layer_only_view_range);
|
||||
@ -64,9 +64,9 @@ public:
|
||||
bool is_extrusion_role_visible(EGCodeExtrusionRole role) const;
|
||||
void toggle_extrusion_role_visibility(EGCodeExtrusionRole role);
|
||||
|
||||
const std::array<uint32_t, 2>& get_view_full_range() const;
|
||||
const std::array<uint32_t, 2>& get_view_enabled_range() const;
|
||||
const std::array<uint32_t, 2>& get_view_visible_range() const;
|
||||
const Interval& get_view_full_range() const;
|
||||
const Interval& get_view_enabled_range() const;
|
||||
const Interval& get_view_visible_range() const;
|
||||
|
||||
//
|
||||
// min must be smaller than max
|
||||
@ -77,17 +77,17 @@ public:
|
||||
//
|
||||
// Return the count of vertices used to render the toolpaths
|
||||
//
|
||||
uint32_t get_vertices_count() const;
|
||||
size_t get_vertices_count() const;
|
||||
|
||||
//
|
||||
// Return the vertex pointed by the max value of the view current range
|
||||
//
|
||||
PathVertex get_current_vertex() const;
|
||||
const PathVertex& get_current_vertex() const;
|
||||
|
||||
//
|
||||
// Return the vertex at the given index
|
||||
//
|
||||
PathVertex get_vertex_at(uint32_t id) const;
|
||||
const PathVertex& get_vertex_at(size_t id) const;
|
||||
|
||||
Color get_vertex_color(const PathVertex& vertex) const;
|
||||
|
||||
@ -96,14 +96,14 @@ public:
|
||||
//
|
||||
size_t get_enabled_segments_count() const;
|
||||
|
||||
const std::array<uint32_t, 2>& get_enabled_segments_range() const;
|
||||
const Interval& get_enabled_segments_range() const;
|
||||
|
||||
//
|
||||
// Return the count of options enabled for rendering
|
||||
//
|
||||
size_t get_enabled_options_count() const;
|
||||
|
||||
const std::array<uint32_t, 2>& get_enabled_options_range() const;
|
||||
const Interval& get_enabled_options_range() const;
|
||||
|
||||
//
|
||||
// Return the count of detected extrusion roles
|
||||
|
@ -94,7 +94,7 @@ float Layers::get_layer_time(ETimeMode mode, size_t layer_id) const
|
||||
|
||||
float Layers::get_layer_z(size_t layer_id) const
|
||||
{
|
||||
return (layer_id < m_items.size()) ? m_items[layer_id].z : 0.0f;
|
||||
return (layer_id < m_items.size()) ? m_items[layer_id].z : 0.0f;
|
||||
}
|
||||
|
||||
size_t Layers::get_layer_id_at(float z) const
|
||||
@ -103,17 +103,17 @@ size_t Layers::get_layer_id_at(float z) const
|
||||
return std::distance(m_items.begin(), iter);
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& Layers::get_view_range() const
|
||||
const Interval& Layers::get_view_range() const
|
||||
{
|
||||
return m_view_range.get();
|
||||
}
|
||||
|
||||
void Layers::set_view_range(const std::array<uint32_t, 2>& range)
|
||||
void Layers::set_view_range(const Interval& range)
|
||||
{
|
||||
set_view_range(range[0], range[1]);
|
||||
}
|
||||
|
||||
void Layers::set_view_range(uint32_t min, uint32_t max)
|
||||
void Layers::set_view_range(Interval::value_type min, Interval::value_type max)
|
||||
{
|
||||
m_view_range.set(min, max);
|
||||
}
|
||||
|
@ -10,7 +10,6 @@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
//################################################################################################################################
|
||||
|
||||
#include "../include/Types.hpp"
|
||||
#include "Range.hpp"
|
||||
|
||||
namespace libvgcode {
|
||||
@ -20,36 +19,36 @@ struct PathVertex;
|
||||
class Layers
|
||||
{
|
||||
public:
|
||||
void update(const PathVertex& vertex, uint32_t vertex_id);
|
||||
void reset();
|
||||
|
||||
bool empty() const;
|
||||
size_t count() const;
|
||||
|
||||
std::vector<float> get_times(ETimeMode mode) const;
|
||||
std::vector<float> get_zs() const;
|
||||
|
||||
float get_layer_time(ETimeMode mode, size_t layer_id) const;
|
||||
float get_layer_z(size_t layer_id) const;
|
||||
size_t get_layer_id_at(float z) const;
|
||||
|
||||
const std::array<uint32_t, 2>& get_view_range() const;
|
||||
void set_view_range(const std::array<uint32_t, 2>& range);
|
||||
void set_view_range(uint32_t min, uint32_t max);
|
||||
|
||||
bool layer_contains_colorprint_options(size_t layer_id) const;
|
||||
void update(const PathVertex& vertex, uint32_t vertex_id);
|
||||
void reset();
|
||||
|
||||
bool empty() const;
|
||||
size_t count() const;
|
||||
|
||||
std::vector<float> get_times(ETimeMode mode) const;
|
||||
std::vector<float> get_zs() const;
|
||||
|
||||
float get_layer_time(ETimeMode mode, size_t layer_id) const;
|
||||
float get_layer_z(size_t layer_id) const;
|
||||
size_t get_layer_id_at(float z) const;
|
||||
|
||||
const Interval& get_view_range() const;
|
||||
void set_view_range(const Interval& range);
|
||||
void set_view_range(Interval::value_type min, Interval::value_type max);
|
||||
|
||||
bool layer_contains_colorprint_options(size_t layer_id) const;
|
||||
|
||||
private:
|
||||
struct Item
|
||||
{
|
||||
float z{ 0.0f };
|
||||
Range range;
|
||||
std::array<float, Time_Modes_Count> times{ 0.0f, 0.0f };
|
||||
bool contains_colorprint_options{ false };
|
||||
};
|
||||
|
||||
std::vector<Item> m_items;
|
||||
Range m_view_range;
|
||||
struct Item
|
||||
{
|
||||
float z{ 0.0f };
|
||||
Range range;
|
||||
std::array<float, Time_Modes_Count> times{ 0.0f, 0.0f };
|
||||
bool contains_colorprint_options{ false };
|
||||
};
|
||||
|
||||
std::vector<Item> m_items;
|
||||
Range m_view_range;
|
||||
};
|
||||
|
||||
} // namespace libvgcode
|
||||
|
@ -18,68 +18,68 @@
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
const std::array<uint32_t, 2>& Range::get() const
|
||||
const Interval& Range::get() const
|
||||
{
|
||||
return m_range;
|
||||
return m_range;
|
||||
}
|
||||
|
||||
void Range::set(const Range& other)
|
||||
{
|
||||
m_range = other.m_range;
|
||||
m_range = other.m_range;
|
||||
}
|
||||
|
||||
void Range::set(const std::array<uint32_t, 2>& range)
|
||||
void Range::set(const Interval& range)
|
||||
{
|
||||
set(range[0], range[1]);
|
||||
set(range[0], range[1]);
|
||||
}
|
||||
|
||||
void Range::set(uint32_t min, uint32_t max)
|
||||
void Range::set(Interval::value_type min, Interval::value_type max)
|
||||
{
|
||||
if (max < min)
|
||||
std::swap(min, max);
|
||||
m_range[0] = min;
|
||||
m_range[1] = max;
|
||||
if (max < min)
|
||||
std::swap(min, max);
|
||||
m_range[0] = min;
|
||||
m_range[1] = max;
|
||||
}
|
||||
|
||||
uint32_t Range::get_min() const
|
||||
Interval::value_type Range::get_min() const
|
||||
{
|
||||
return m_range[0];
|
||||
return m_range[0];
|
||||
}
|
||||
|
||||
void Range::set_min(uint32_t min)
|
||||
void Range::set_min(Interval::value_type min)
|
||||
{
|
||||
set(min, m_range[1]);
|
||||
set(min, m_range[1]);
|
||||
}
|
||||
|
||||
uint32_t Range::get_max() const
|
||||
Interval::value_type Range::get_max() const
|
||||
{
|
||||
return m_range[1];
|
||||
return m_range[1];
|
||||
}
|
||||
|
||||
void Range::set_max(uint32_t max)
|
||||
void Range::set_max(Interval::value_type max)
|
||||
{
|
||||
set(m_range[0], max);
|
||||
set(m_range[0], max);
|
||||
}
|
||||
|
||||
void Range::clamp(Range& other)
|
||||
{
|
||||
other.m_range[0] = std::clamp(other.m_range[0], m_range[0], m_range[1]);
|
||||
other.m_range[1] = std::clamp(other.m_range[1], m_range[0], m_range[1]);
|
||||
other.m_range[0] = std::clamp(other.m_range[0], m_range[0], m_range[1]);
|
||||
other.m_range[1] = std::clamp(other.m_range[1], m_range[0], m_range[1]);
|
||||
}
|
||||
|
||||
void Range::reset()
|
||||
{
|
||||
m_range = { 0, 0 };
|
||||
m_range = { 0, 0 };
|
||||
}
|
||||
|
||||
bool Range::operator == (const Range& other) const
|
||||
{
|
||||
return m_range == other.m_range;
|
||||
return m_range == other.m_range;
|
||||
}
|
||||
|
||||
bool Range::operator != (const Range& other) const
|
||||
{
|
||||
return m_range != other.m_range;
|
||||
return m_range != other.m_range;
|
||||
}
|
||||
|
||||
} // namespace libvgcode
|
||||
|
@ -10,38 +10,33 @@
|
||||
#if ENABLE_NEW_GCODE_VIEWER
|
||||
//################################################################################################################################
|
||||
|
||||
#include <array>
|
||||
#include <cstdint>
|
||||
#include "../include/Types.hpp"
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
class Range
|
||||
{
|
||||
public:
|
||||
const std::array<uint32_t, 2>& get() const;
|
||||
void set(const Range& other);
|
||||
void set(const std::array<uint32_t, 2>& range);
|
||||
void set(uint32_t min, uint32_t max);
|
||||
|
||||
uint32_t get_min() const;
|
||||
void set_min(uint32_t min);
|
||||
|
||||
uint32_t get_max() const;
|
||||
void set_max(uint32_t max);
|
||||
|
||||
// clamp the given range to stay inside this range
|
||||
void clamp(Range& other);
|
||||
void reset();
|
||||
|
||||
bool operator == (const Range& other) const;
|
||||
bool operator != (const Range& other) const;
|
||||
const Interval& get() const;
|
||||
void set(const Range& other);
|
||||
void set(const Interval& range);
|
||||
void set(Interval::value_type min, Interval::value_type max);
|
||||
|
||||
Interval::value_type get_min() const;
|
||||
void set_min(Interval::value_type min);
|
||||
|
||||
Interval::value_type get_max() const;
|
||||
void set_max(Interval::value_type max);
|
||||
|
||||
// clamp the given range to stay inside this range
|
||||
void clamp(Range& other);
|
||||
void reset();
|
||||
|
||||
bool operator == (const Range& other) const;
|
||||
bool operator != (const Range& other) const;
|
||||
|
||||
private:
|
||||
//
|
||||
// [0] = min
|
||||
// [1] = max
|
||||
//
|
||||
std::array<uint32_t, 2> m_range{ 0, 0 };
|
||||
Interval m_range{ 0, 0 };
|
||||
};
|
||||
|
||||
} // namespace libvgcode
|
||||
|
@ -16,89 +16,89 @@
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
const std::array<uint32_t, 2>& ViewRange::get_full() const
|
||||
const Interval& ViewRange::get_full() const
|
||||
{
|
||||
return m_full.get();
|
||||
return m_full.get();
|
||||
}
|
||||
|
||||
void ViewRange::set_full(const Range& other)
|
||||
{
|
||||
set_full(other.get());
|
||||
set_full(other.get());
|
||||
}
|
||||
|
||||
void ViewRange::set_full(const std::array<uint32_t, 2>& range)
|
||||
void ViewRange::set_full(const Interval& range)
|
||||
{
|
||||
set_full(range[0], range[1]);
|
||||
set_full(range[0], range[1]);
|
||||
}
|
||||
|
||||
void ViewRange::set_full(uint32_t min, uint32_t max)
|
||||
void ViewRange::set_full(Interval::value_type min, Interval::value_type max)
|
||||
{
|
||||
// is the full range being extended ?
|
||||
const bool new_max = max > m_full.get_max();
|
||||
m_full.set(min, max);
|
||||
// force the enabled range to stay inside the modified full range
|
||||
m_full.clamp(m_enabled);
|
||||
// force the visible range to stay inside the modified enabled range
|
||||
m_enabled.clamp(m_visible);
|
||||
if (new_max)
|
||||
// force the enabled range to fill the extended full range
|
||||
m_enabled.set_max(max);
|
||||
// is the full range being extended ?
|
||||
const bool new_max = max > m_full.get_max();
|
||||
m_full.set(min, max);
|
||||
// force the enabled range to stay inside the modified full range
|
||||
m_full.clamp(m_enabled);
|
||||
// force the visible range to stay inside the modified enabled range
|
||||
m_enabled.clamp(m_visible);
|
||||
if (new_max)
|
||||
// force the enabled range to fill the extended full range
|
||||
m_enabled.set_max(max);
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewRange::get_enabled() const
|
||||
const Interval& ViewRange::get_enabled() const
|
||||
{
|
||||
return m_enabled.get();
|
||||
return m_enabled.get();
|
||||
}
|
||||
|
||||
void ViewRange::set_enabled(const Range& other)
|
||||
{
|
||||
set_enabled(other.get());
|
||||
set_enabled(other.get());
|
||||
}
|
||||
|
||||
void ViewRange::set_enabled(const std::array<uint32_t, 2>& range)
|
||||
void ViewRange::set_enabled(const Interval& range)
|
||||
{
|
||||
set_enabled(range[0], range[1]);
|
||||
set_enabled(range[0], range[1]);
|
||||
}
|
||||
|
||||
void ViewRange::set_enabled(uint32_t min, uint32_t max)
|
||||
void ViewRange::set_enabled(Interval::value_type min, Interval::value_type max)
|
||||
{
|
||||
// is the enabled range being extended ?
|
||||
const bool new_max = max > m_enabled.get_max();
|
||||
m_enabled.set(min, max);
|
||||
// force the visible range to stay inside the modified enabled range
|
||||
m_enabled.clamp(m_visible);
|
||||
if (new_max)
|
||||
// force the visible range to fill the extended enabled range
|
||||
m_visible.set_max(max);
|
||||
// is the enabled range being extended ?
|
||||
const bool new_max = max > m_enabled.get_max();
|
||||
m_enabled.set(min, max);
|
||||
// force the visible range to stay inside the modified enabled range
|
||||
m_enabled.clamp(m_visible);
|
||||
if (new_max)
|
||||
// force the visible range to fill the extended enabled range
|
||||
m_visible.set_max(max);
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewRange::get_visible() const
|
||||
const Interval& ViewRange::get_visible() const
|
||||
{
|
||||
return m_visible.get();
|
||||
return m_visible.get();
|
||||
}
|
||||
|
||||
void ViewRange::set_visible(const Range& other)
|
||||
{
|
||||
set_visible(other.get());
|
||||
set_visible(other.get());
|
||||
}
|
||||
|
||||
void ViewRange::set_visible(const std::array<uint32_t, 2>& range)
|
||||
void ViewRange::set_visible(const Interval& range)
|
||||
{
|
||||
set_visible(range[0], range[1]);
|
||||
set_visible(range[0], range[1]);
|
||||
}
|
||||
|
||||
void ViewRange::set_visible(uint32_t min, uint32_t max)
|
||||
void ViewRange::set_visible(Interval::value_type min, Interval::value_type max)
|
||||
{
|
||||
m_visible.set(min, max);
|
||||
// force the visible range to stay inside the enabled range
|
||||
m_enabled.clamp(m_visible);
|
||||
m_visible.set(min, max);
|
||||
// force the visible range to stay inside the enabled range
|
||||
m_enabled.clamp(m_visible);
|
||||
}
|
||||
|
||||
void ViewRange::reset()
|
||||
{
|
||||
m_full.reset();
|
||||
m_enabled.reset();
|
||||
m_visible.reset();
|
||||
m_full.reset();
|
||||
m_enabled.reset();
|
||||
m_visible.reset();
|
||||
}
|
||||
|
||||
} // namespace libvgcode
|
||||
|
@ -17,43 +17,43 @@ namespace libvgcode {
|
||||
class ViewRange
|
||||
{
|
||||
public:
|
||||
const std::array<uint32_t, 2>& get_full() const;
|
||||
void set_full(const Range& other);
|
||||
void set_full(const std::array<uint32_t, 2>& range);
|
||||
void set_full(uint32_t min, uint32_t max);
|
||||
const Interval& get_full() const;
|
||||
void set_full(const Range& other);
|
||||
void set_full(const Interval& range);
|
||||
void set_full(Interval::value_type min, Interval::value_type max);
|
||||
|
||||
const std::array<uint32_t, 2>& get_enabled() const;
|
||||
void set_enabled(const Range& other);
|
||||
void set_enabled(const std::array<uint32_t, 2>& range);
|
||||
void set_enabled(uint32_t min, uint32_t max);
|
||||
const Interval& get_enabled() const;
|
||||
void set_enabled(const Range& other);
|
||||
void set_enabled(const Interval& range);
|
||||
void set_enabled(Interval::value_type min, Interval::value_type max);
|
||||
|
||||
const std::array<uint32_t, 2>& get_visible() const;
|
||||
const Interval& get_visible() const;
|
||||
void set_visible(const Range& other);
|
||||
void set_visible(const std::array<uint32_t, 2>& range);
|
||||
void set_visible(uint32_t min, uint32_t max);
|
||||
void set_visible(const Interval& range);
|
||||
void set_visible(Interval::value_type min, Interval::value_type max);
|
||||
|
||||
void reset();
|
||||
void reset();
|
||||
|
||||
private:
|
||||
//
|
||||
// Full range
|
||||
// The range of moves that could potentially be visible.
|
||||
// It is usually equal to the enabled range, unless Settings::top_layer_only_view_range is set to true.
|
||||
//
|
||||
Range m_full;
|
||||
//
|
||||
// Full range
|
||||
// The range of moves that could potentially be visible.
|
||||
// It is usually equal to the enabled range, unless Settings::top_layer_only_view_range is set to true.
|
||||
//
|
||||
Range m_full;
|
||||
|
||||
//
|
||||
// Enabled range
|
||||
// The range of moves that are enabled for visualization.
|
||||
// It is usually equal to the full range, unless Settings::top_layer_only_view_range is set to true.
|
||||
//
|
||||
Range m_enabled;
|
||||
//
|
||||
// Enabled range
|
||||
// The range of moves that are enabled for visualization.
|
||||
// It is usually equal to the full range, unless Settings::top_layer_only_view_range is set to true.
|
||||
//
|
||||
Range m_enabled;
|
||||
|
||||
//
|
||||
// Visible range
|
||||
// The range of moves that are currently rendered.
|
||||
//
|
||||
Range m_visible;
|
||||
//
|
||||
// Visible range
|
||||
// The range of moves that are currently rendered.
|
||||
//
|
||||
Range m_visible;
|
||||
};
|
||||
|
||||
} // namespace libvgcode
|
||||
|
@ -67,17 +67,17 @@ void Viewer::set_time_mode(ETimeMode mode)
|
||||
m_impl->set_time_mode(mode);
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& Viewer::get_layers_view_range() const
|
||||
const Interval& Viewer::get_layers_view_range() const
|
||||
{
|
||||
return m_impl->get_layers_view_range();
|
||||
}
|
||||
|
||||
void Viewer::set_layers_view_range(const std::array<uint32_t, 2>& range)
|
||||
void Viewer::set_layers_view_range(const Interval& range)
|
||||
{
|
||||
m_impl->set_layers_view_range(range);
|
||||
}
|
||||
|
||||
void Viewer::set_layers_view_range(uint32_t min, uint32_t max)
|
||||
void Viewer::set_layers_view_range(Interval::value_type min, Interval::value_type max)
|
||||
{
|
||||
m_impl->set_layers_view_range(min, max);
|
||||
}
|
||||
@ -147,17 +147,17 @@ void Viewer::toggle_extrusion_role_visibility(EGCodeExtrusionRole role)
|
||||
m_impl->toggle_extrusion_role_visibility(role);
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& Viewer::get_view_full_range() const
|
||||
const Interval& Viewer::get_view_full_range() const
|
||||
{
|
||||
return m_impl->get_view_full_range();
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& Viewer::get_view_enabled_range() const
|
||||
const Interval& Viewer::get_view_enabled_range() const
|
||||
{
|
||||
return m_impl->get_view_enabled_range();
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& Viewer::get_view_visible_range() const
|
||||
const Interval& Viewer::get_view_visible_range() const
|
||||
{
|
||||
return m_impl->get_view_visible_range();
|
||||
}
|
||||
@ -167,17 +167,17 @@ void Viewer::set_view_visible_range(uint32_t min, uint32_t max)
|
||||
m_impl->set_view_visible_range(min, max);
|
||||
}
|
||||
|
||||
uint32_t Viewer::get_vertices_count() const
|
||||
size_t Viewer::get_vertices_count() const
|
||||
{
|
||||
return m_impl->get_vertices_count();
|
||||
}
|
||||
|
||||
PathVertex Viewer::get_current_vertex() const
|
||||
const PathVertex& Viewer::get_current_vertex() const
|
||||
{
|
||||
return m_impl->get_current_vertex();
|
||||
}
|
||||
|
||||
PathVertex Viewer::get_vertex_at(uint32_t id) const
|
||||
const PathVertex& Viewer::get_vertex_at(size_t id) const
|
||||
{
|
||||
return m_impl->get_vertex_at(id);
|
||||
}
|
||||
@ -192,7 +192,7 @@ size_t Viewer::get_enabled_segments_count() const
|
||||
return m_impl->get_enabled_segments_count();
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& Viewer::get_enabled_segments_range() const
|
||||
const Interval& Viewer::get_enabled_segments_range() const
|
||||
{
|
||||
return m_impl->get_enabled_segments_range();
|
||||
}
|
||||
@ -202,7 +202,7 @@ size_t Viewer::get_enabled_options_count() const
|
||||
return m_impl->get_enabled_options_count();
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& Viewer::get_enabled_options_range() const
|
||||
const Interval& Viewer::get_enabled_options_range() const
|
||||
{
|
||||
return m_impl->get_enabled_options_range();
|
||||
}
|
||||
|
@ -603,7 +603,7 @@ void ViewerImpl::update_enabled_entities()
|
||||
{
|
||||
std::vector<uint32_t> enabled_segments;
|
||||
std::vector<uint32_t> enabled_options;
|
||||
std::array<uint32_t, 2> range = m_view_range.get_visible();
|
||||
Interval range = m_view_range.get_visible();
|
||||
|
||||
// when top layer only visualization is enabled, we need to render
|
||||
// all the toolpaths in the other layers as grayed, so extend the range
|
||||
@ -617,7 +617,7 @@ void ViewerImpl::update_enabled_entities()
|
||||
|
||||
if (m_settings.spiral_vase_mode) {
|
||||
// when spiral vase mode is enabled and only one layer is shown, extend the range by one step
|
||||
const std::array<uint32_t, 2>& layers_range = m_layers.get_view_range();
|
||||
const Interval& layers_range = m_layers.get_view_range();
|
||||
if (layers_range[0] > 0 && layers_range[0] == layers_range[1])
|
||||
--range[0];
|
||||
}
|
||||
@ -765,17 +765,17 @@ void ViewerImpl::set_time_mode(ETimeMode mode)
|
||||
m_settings.update_colors = true;
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewerImpl::get_layers_view_range() const
|
||||
const Interval& ViewerImpl::get_layers_view_range() const
|
||||
{
|
||||
return m_layers.get_view_range();
|
||||
}
|
||||
|
||||
void ViewerImpl::set_layers_view_range(const std::array<uint32_t, 2>& range)
|
||||
void ViewerImpl::set_layers_view_range(const Interval& range)
|
||||
{
|
||||
set_layers_view_range(range[0], range[1]);
|
||||
}
|
||||
|
||||
void ViewerImpl::set_layers_view_range(uint32_t min, uint32_t max)
|
||||
void ViewerImpl::set_layers_view_range(Interval::value_type min, Interval::value_type max)
|
||||
{
|
||||
m_layers.set_view_range(min, max);
|
||||
// force immediate update of the full range
|
||||
@ -847,63 +847,49 @@ AABox ViewerImpl::get_bounding_box(EBBoxType type) const
|
||||
|
||||
bool ViewerImpl::is_option_visible(EOptionType type) const
|
||||
{
|
||||
try {
|
||||
return m_settings.options_visibility.at(type);
|
||||
}
|
||||
catch (...) {
|
||||
return false;
|
||||
}
|
||||
const auto it = m_settings.options_visibility.find(type);
|
||||
return (it == m_settings.options_visibility.end()) ? false : it->second;
|
||||
}
|
||||
|
||||
void ViewerImpl::toggle_option_visibility(EOptionType type)
|
||||
{
|
||||
try {
|
||||
bool& value = m_settings.options_visibility.at(type);
|
||||
value = !value;
|
||||
auto it = m_settings.options_visibility.find(type);
|
||||
if (it != m_settings.options_visibility.end()) {
|
||||
it->second = !it->second;
|
||||
update_view_full_range();
|
||||
m_settings.update_enabled_entities = true;
|
||||
m_settings.update_colors = true;
|
||||
}
|
||||
catch (...) {
|
||||
// do nothing;
|
||||
}
|
||||
}
|
||||
|
||||
bool ViewerImpl::is_extrusion_role_visible(EGCodeExtrusionRole role) const
|
||||
{
|
||||
try {
|
||||
return m_settings.extrusion_roles_visibility.at(role);
|
||||
}
|
||||
catch (...) {
|
||||
return false;
|
||||
}
|
||||
const auto it = m_settings.extrusion_roles_visibility.find(role);
|
||||
return (it == m_settings.extrusion_roles_visibility.end()) ? false : it->second;
|
||||
}
|
||||
|
||||
void ViewerImpl::toggle_extrusion_role_visibility(EGCodeExtrusionRole role)
|
||||
{
|
||||
try {
|
||||
bool& value = m_settings.extrusion_roles_visibility.at(role);
|
||||
value = !value;
|
||||
auto it = m_settings.extrusion_roles_visibility.find(role);
|
||||
if (it != m_settings.extrusion_roles_visibility.end()) {
|
||||
it->second = !it->second;
|
||||
update_view_full_range();
|
||||
m_settings.update_enabled_entities = true;
|
||||
m_settings.update_colors = true;
|
||||
}
|
||||
catch (...) {
|
||||
// do nothing;
|
||||
}
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewerImpl::get_view_full_range() const
|
||||
const Interval& ViewerImpl::get_view_full_range() const
|
||||
{
|
||||
return m_view_range.get_full();
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewerImpl::get_view_enabled_range() const
|
||||
const Interval& ViewerImpl::get_view_enabled_range() const
|
||||
{
|
||||
return m_view_range.get_enabled();
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewerImpl::get_view_visible_range() const
|
||||
const Interval& ViewerImpl::get_view_visible_range() const
|
||||
{
|
||||
return m_view_range.get_visible();
|
||||
}
|
||||
@ -923,14 +909,14 @@ size_t ViewerImpl::get_vertices_count() const
|
||||
return m_vertices.size();
|
||||
}
|
||||
|
||||
PathVertex ViewerImpl::get_current_vertex() const
|
||||
const PathVertex& ViewerImpl::get_current_vertex() const
|
||||
{
|
||||
return m_vertices[m_view_range.get_visible()[1]];
|
||||
return get_vertex_at(m_view_range.get_visible()[1]);
|
||||
}
|
||||
|
||||
PathVertex ViewerImpl::get_vertex_at(size_t id) const
|
||||
const PathVertex& ViewerImpl::get_vertex_at(size_t id) const
|
||||
{
|
||||
return (id < m_vertices.size()) ? m_vertices[id] : PathVertex();
|
||||
return (id < m_vertices.size()) ? m_vertices[id] : Dummy_Path_Vertex;
|
||||
}
|
||||
|
||||
Color ViewerImpl::get_vertex_color(const PathVertex& v) const
|
||||
@ -942,7 +928,7 @@ Color ViewerImpl::get_vertex_color(const PathVertex& v) const
|
||||
return Wipe_Color;
|
||||
|
||||
if (v.is_option())
|
||||
return get_option_color(type_to_option(v.type));
|
||||
return get_option_color(type_to_option(v.type));
|
||||
|
||||
switch (m_settings.view_type)
|
||||
{
|
||||
@ -1005,7 +991,7 @@ size_t ViewerImpl::get_enabled_segments_count() const
|
||||
return m_enabled_segments_count;
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewerImpl::get_enabled_segments_range() const
|
||||
const Interval& ViewerImpl::get_enabled_segments_range() const
|
||||
{
|
||||
return m_enabled_segments_range.get();
|
||||
}
|
||||
@ -1015,7 +1001,7 @@ size_t ViewerImpl::get_enabled_options_count() const
|
||||
return m_enabled_options_count;
|
||||
}
|
||||
|
||||
const std::array<uint32_t, 2>& ViewerImpl::get_enabled_options_range() const
|
||||
const Interval& ViewerImpl::get_enabled_options_range() const
|
||||
{
|
||||
return m_enabled_options_range.get();
|
||||
}
|
||||
@ -1078,15 +1064,15 @@ void ViewerImpl::set_tool_colors(const std::vector<Color>& colors)
|
||||
|
||||
const Color& ViewerImpl::get_extrusion_role_color(EGCodeExtrusionRole role) const
|
||||
{
|
||||
auto it = m_extrusion_roles_colors.find(role);
|
||||
return (it != m_extrusion_roles_colors.end()) ? m_extrusion_roles_colors.at(role) : Dummy_Color;
|
||||
const auto it = m_extrusion_roles_colors.find(role);
|
||||
return (it == m_extrusion_roles_colors.end()) ? Dummy_Color : it->second;
|
||||
}
|
||||
|
||||
void ViewerImpl::set_extrusion_role_color(EGCodeExtrusionRole role, const Color& color)
|
||||
{
|
||||
auto it = m_extrusion_roles_colors.find(role);
|
||||
if (it != m_extrusion_roles_colors.end())
|
||||
m_extrusion_roles_colors[role] = color;
|
||||
it->second = color;
|
||||
}
|
||||
|
||||
void ViewerImpl::reset_default_extrusion_roles_colors()
|
||||
@ -1096,15 +1082,15 @@ void ViewerImpl::reset_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;
|
||||
const auto it = m_options_colors.find(type);
|
||||
return (it == m_options_colors.end()) ? Dummy_Color : it->second;
|
||||
}
|
||||
|
||||
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;
|
||||
it->second = color;
|
||||
}
|
||||
|
||||
void ViewerImpl::reset_default_options_colors()
|
||||
@ -1114,15 +1100,15 @@ void ViewerImpl::reset_default_options_colors()
|
||||
|
||||
const Color& ViewerImpl::get_travel_move_color(ETravelMoveType type) const
|
||||
{
|
||||
auto it = m_travel_moves_colors.find(type);
|
||||
return (it != m_travel_moves_colors.end()) ? m_travel_moves_colors.at(type) : Dummy_Color;
|
||||
const auto it = m_travel_moves_colors.find(type);
|
||||
return (it == m_travel_moves_colors.end()) ? Dummy_Color : it->second;
|
||||
}
|
||||
|
||||
void ViewerImpl::set_travel_move_color(ETravelMoveType type, const Color& color)
|
||||
{
|
||||
auto it = m_travel_moves_colors.find(type);
|
||||
if (it != m_travel_moves_colors.end())
|
||||
m_travel_moves_colors[type] = color;
|
||||
it->second = color;
|
||||
}
|
||||
|
||||
void ViewerImpl::reset_default_travel_moves_colors()
|
||||
@ -1162,12 +1148,8 @@ const ColorRange& ViewerImpl::get_volumetric_rate_range() const
|
||||
|
||||
const ColorRange& ViewerImpl::get_layer_time_range(EColorRangeType type) const
|
||||
{
|
||||
try {
|
||||
return m_layer_time_range[static_cast<size_t>(type)];
|
||||
}
|
||||
catch (...) {
|
||||
return ColorRange::Dummy_Color_Range;
|
||||
}
|
||||
return (static_cast<size_t>(type) < m_layer_time_range.size()) ?
|
||||
m_layer_time_range[static_cast<size_t>(type)] : ColorRange::Dummy_Color_Range;
|
||||
}
|
||||
|
||||
float ViewerImpl::get_travels_radius() const
|
||||
@ -1290,7 +1272,7 @@ static bool is_visible(const PathVertex& v, const Settings& settings)
|
||||
|
||||
void ViewerImpl::update_view_full_range()
|
||||
{
|
||||
const std::array<uint32_t, 2>& layers_range = m_layers.get_view_range();
|
||||
const Interval& layers_range = m_layers.get_view_range();
|
||||
const bool travels_visible = m_settings.options_visibility.at(EOptionType::Travels);
|
||||
const bool wipes_visible = m_settings.options_visibility.at(EOptionType::Wipes);
|
||||
|
||||
@ -1355,7 +1337,7 @@ void ViewerImpl::update_view_full_range()
|
||||
m_view_range.set_full(Range());
|
||||
|
||||
if (m_settings.top_layer_only_view_range) {
|
||||
const std::array<uint32_t, 2>& full_range = m_view_range.get_full();
|
||||
const Interval& full_range = m_view_range.get_full();
|
||||
auto top_first_it = m_vertices.begin() + full_range[0];
|
||||
bool shortened = false;
|
||||
while (top_first_it != m_vertices.end() && (top_first_it->layer_id < layers_range[1] || !is_visible(*top_first_it, m_settings))) {
|
||||
|
@ -77,9 +77,9 @@ public:
|
||||
ETimeMode get_time_mode() const;
|
||||
void set_time_mode(ETimeMode mode);
|
||||
|
||||
const std::array<uint32_t, 2>& get_layers_view_range() const;
|
||||
void set_layers_view_range(const std::array<uint32_t, 2>& range);
|
||||
void set_layers_view_range(uint32_t min, uint32_t max);
|
||||
const Interval& get_layers_view_range() const;
|
||||
void set_layers_view_range(const Interval& range);
|
||||
void set_layers_view_range(Interval::value_type min, Interval::value_type max);
|
||||
|
||||
bool is_top_layer_only_view_range() const;
|
||||
void set_top_layer_only_view_range(bool top_layer_only_view_range);
|
||||
@ -101,21 +101,21 @@ public:
|
||||
bool is_extrusion_role_visible(EGCodeExtrusionRole role) const;
|
||||
void toggle_extrusion_role_visibility(EGCodeExtrusionRole role);
|
||||
|
||||
const std::array<uint32_t, 2>& get_view_full_range() const;
|
||||
const std::array<uint32_t, 2>& get_view_enabled_range() const;
|
||||
const std::array<uint32_t, 2>& get_view_visible_range() const;
|
||||
const Interval& get_view_full_range() const;
|
||||
const Interval& get_view_enabled_range() const;
|
||||
const Interval& get_view_visible_range() const;
|
||||
void set_view_visible_range(uint32_t min, uint32_t max);
|
||||
|
||||
size_t get_vertices_count() const;
|
||||
PathVertex get_current_vertex() const;
|
||||
PathVertex get_vertex_at(size_t id) const;
|
||||
const PathVertex& get_current_vertex() const;
|
||||
const PathVertex& get_vertex_at(size_t id) const;
|
||||
Color get_vertex_color(const PathVertex& vertex) const;
|
||||
|
||||
size_t get_enabled_segments_count() const;
|
||||
const std::array<uint32_t, 2>& get_enabled_segments_range() const;
|
||||
const Interval& get_enabled_segments_range() const;
|
||||
|
||||
size_t get_enabled_options_count() const;
|
||||
const std::array<uint32_t, 2>& get_enabled_options_range() const;
|
||||
const Interval& get_enabled_options_range() const;
|
||||
|
||||
size_t get_extrusion_roles_count() const;
|
||||
std::vector<EGCodeExtrusionRole> get_extrusion_roles() const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user