mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-18 12:17:54 -06:00
G-code window uses file mapping
This commit is contained in:
parent
252aa9b229
commit
0472c84525
7 changed files with 159 additions and 36 deletions
|
@ -5,6 +5,10 @@
|
|||
#include "libslic3r/GCode/GCodeProcessor.hpp"
|
||||
#include "GLModel.hpp"
|
||||
|
||||
#if ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
#include <boost/iostreams/device/mapped_file.hpp>
|
||||
#endif // ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
|
||||
#include <cstdint>
|
||||
#include <float.h>
|
||||
#include <set>
|
||||
|
@ -616,23 +620,49 @@ public:
|
|||
std::string comment;
|
||||
};
|
||||
bool m_visible{ true };
|
||||
unsigned int m_file_size{ 0 };
|
||||
unsigned int m_last_line_id{ 0 };
|
||||
uint64_t m_selected_line_id{ 0 };
|
||||
size_t m_last_lines_size{ 0 };
|
||||
std::vector<Line> m_lines;
|
||||
std::string m_filename;
|
||||
#if ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
boost::iostreams::mapped_file_source m_file;
|
||||
// map for accessing data in file by line number
|
||||
std::vector<std::pair<uint64_t, uint64_t>> m_lines_map;
|
||||
#else
|
||||
std::vector<std::string> m_gcode;
|
||||
#endif // ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
// current visible lines
|
||||
std::vector<Line> m_lines;
|
||||
|
||||
public:
|
||||
#if ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
GCodeWindow() = default;
|
||||
~GCodeWindow() { stop_mapping_file(); }
|
||||
#endif // ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
void set_filename(const std::string& filename) { m_filename = filename; }
|
||||
void load_gcode();
|
||||
#if !ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
void start_mapping_file();
|
||||
void stop_mapping_file();
|
||||
#endif // !ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
#if ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
void reset() {
|
||||
stop_mapping_file();
|
||||
m_lines_map.clear();
|
||||
m_lines.clear();
|
||||
m_filename.clear();
|
||||
}
|
||||
#else
|
||||
void reset() { m_filename.clear(); }
|
||||
#endif // ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
|
||||
void toggle_visibility() { m_visible = !m_visible; }
|
||||
|
||||
void render(float top, float bottom, unsigned int curr_line_id) const;
|
||||
void render(float top, float bottom, uint64_t curr_line_id) const;
|
||||
|
||||
#if ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
private:
|
||||
void stop_mapping_file();
|
||||
#endif // ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
};
|
||||
#endif // ENABLE_GCODE_WINDOW
|
||||
|
||||
|
@ -753,8 +783,10 @@ public:
|
|||
void export_toolpaths_to_obj(const char* filename) const;
|
||||
|
||||
#if ENABLE_GCODE_WINDOW
|
||||
#if !ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
void start_mapping_gcode_file() { m_sequential_view.gcode_window.start_mapping_file(); }
|
||||
void stop_mapping_gcode_file() { m_sequential_view.gcode_window.stop_mapping_file(); }
|
||||
#endif // !ENABLE_GCODE_WINDOW_USE_MAPPED_FILE
|
||||
void toggle_gcode_window_visibility() { m_sequential_view.gcode_window.toggle_visibility(); }
|
||||
#endif // ENABLE_GCODE_WINDOW
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue