mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-29 18:12:02 +08:00
One more fixup...
This commit is contained in:
parent
f7d8e20beb
commit
381a19fc04
@ -1,22 +0,0 @@
|
||||
///|/ Copyright (c) Prusa Research 2023 Enrico Turri @enricoturri1966, Pavel Mikuš @Godrak
|
||||
///|/
|
||||
///|/ libvgcode is released under the terms of the AGPLv3 or higher
|
||||
///|/
|
||||
#ifndef VGCODE_COLORPRINT_HPP
|
||||
#define VGCODE_COLORPRINT_HPP
|
||||
|
||||
#include "Types.hpp"
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
struct ColorPrint
|
||||
{
|
||||
uint8_t extruder_id{ 0 };
|
||||
uint8_t color_id{ 0 };
|
||||
uint32_t layer_id{ 0 };
|
||||
std::array<float, TIME_MODES_COUNT> times{ 0.0f, 0.0f };
|
||||
};
|
||||
|
||||
} // namespace libvgcode
|
||||
|
||||
#endif // VGCODE_COLORPRINT_HPP
|
@ -1,107 +0,0 @@
|
||||
///|/ Copyright (c) Prusa Research 2023 Enrico Turri @enricoturri1966, Pavel Mikuš @Godrak
|
||||
///|/
|
||||
///|/ libvgcode is released under the terms of the AGPLv3 or higher
|
||||
///|/
|
||||
#ifndef VGCODE_COLORRANGE_HPP
|
||||
#define VGCODE_COLORRANGE_HPP
|
||||
|
||||
#include "Types.hpp"
|
||||
|
||||
#include <cfloat>
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
static const Palette DEFAULT_RANGES_COLORS{ {
|
||||
{ 11, 44, 122 }, // bluish
|
||||
{ 19, 89, 133 },
|
||||
{ 28, 136, 145 },
|
||||
{ 4, 214, 15 },
|
||||
{ 170, 242, 0 },
|
||||
{ 252, 249, 3 },
|
||||
{ 245, 206, 10 },
|
||||
{ 227, 136, 32 },
|
||||
{ 209, 104, 48 },
|
||||
{ 194, 82, 60 },
|
||||
{ 148, 38, 22 } // reddish
|
||||
} };
|
||||
|
||||
class ColorRange
|
||||
{
|
||||
public:
|
||||
//
|
||||
// Constructor
|
||||
//
|
||||
explicit ColorRange(EColorRangeType type = EColorRangeType::Linear);
|
||||
//
|
||||
// Return the type of this ColorRange.
|
||||
//
|
||||
EColorRangeType get_type() const;
|
||||
//
|
||||
// Return the palette used by this ColorRange.
|
||||
// Default is DEFAULT_RANGES_COLORS
|
||||
//
|
||||
const Palette& get_palette() const;
|
||||
//
|
||||
// Set the palette to be used by this ColorRange.
|
||||
// The given palette must contain at least two colors.
|
||||
//
|
||||
void set_palette(const Palette& palette);
|
||||
//
|
||||
// Return the interpolated color at the given value.
|
||||
// Value is clamped to [get_range()[0]..get_range()[1]].
|
||||
//
|
||||
Color get_color_at(float value) const;
|
||||
//
|
||||
// Return the range of this ColorRange.
|
||||
// The range is detected during the call to Viewer::load().
|
||||
// [0] -> min
|
||||
// [1] -> max
|
||||
//
|
||||
const std::array<float, 2>& get_range() const;
|
||||
//
|
||||
// Return the values corresponding to the detected color bins of this ColorRange.
|
||||
// The size of the returned vector can be:
|
||||
// 1 - If only one value was detected while setting up this ColorRange.
|
||||
// 2 - If only two values were detected while setting up this ColorRange.
|
||||
// get_palette().size() - If more than two distinct values were detected while setting up this ColorRange.
|
||||
//
|
||||
std::vector<float> get_values() const;
|
||||
//
|
||||
// Return the size of the palette, in bytes
|
||||
//
|
||||
std::size_t size_in_bytes_cpu() const;
|
||||
|
||||
static const ColorRange DUMMY_COLOR_RANGE;
|
||||
|
||||
private:
|
||||
EColorRangeType m_type{ EColorRangeType::Linear };
|
||||
//
|
||||
// The palette used by this ColorRange
|
||||
//
|
||||
Palette m_palette;
|
||||
//
|
||||
// [0] = min
|
||||
// [1] = max
|
||||
//
|
||||
std::array<float, 2> m_range{ FLT_MAX, -FLT_MAX };
|
||||
//
|
||||
// Count of different values passed to update()
|
||||
//
|
||||
std::size_t m_count{ 0 };
|
||||
|
||||
//
|
||||
// Use the passed value to update the range.
|
||||
//
|
||||
void update(float value);
|
||||
//
|
||||
// Reset the range
|
||||
// Call this method before reuse an instance of ColorRange.
|
||||
//
|
||||
void reset();
|
||||
|
||||
friend class ViewerImpl;
|
||||
};
|
||||
|
||||
} // namespace libvgcode
|
||||
|
||||
#endif // VGCODE_COLORRANGE_HPP
|
@ -1,36 +0,0 @@
|
||||
///|/ Copyright (c) Prusa Research 2023 Enrico Turri @enricoturri1966
|
||||
///|/
|
||||
///|/ libvgcode is released under the terms of the AGPLv3 or higher
|
||||
///|/
|
||||
#ifndef VGCODE_GCODEINPUTDATA_HPP
|
||||
#define VGCODE_GCODEINPUTDATA_HPP
|
||||
|
||||
#include "PathVertex.hpp"
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
struct GCodeInputData
|
||||
{
|
||||
//
|
||||
// Whether or not the gcode was generated with spiral vase mode enabled.
|
||||
// Required to properly detect fictitious layer changes when spiral vase mode is enabled.
|
||||
//
|
||||
bool spiral_vase_mode{ false };
|
||||
//
|
||||
// List of path vertices (gcode moves)
|
||||
// See: PathVertex
|
||||
//
|
||||
std::vector<PathVertex> vertices;
|
||||
//
|
||||
// Palette for extruders colors
|
||||
//
|
||||
Palette tools_colors;
|
||||
//
|
||||
// Palette for color print colors
|
||||
//
|
||||
Palette color_print_colors;
|
||||
};
|
||||
|
||||
} // namespace libvgcode
|
||||
|
||||
#endif // VGCODE_BITSET_HPP
|
@ -1,121 +0,0 @@
|
||||
///|/ Copyright (c) Prusa Research 2023 Enrico Turri @enricoturri1966, Pavel Mikuš @Godrak
|
||||
///|/
|
||||
///|/ libvgcode is released under the terms of the AGPLv3 or higher
|
||||
///|/
|
||||
#ifndef VGCODE_PATHVERTEX_HPP
|
||||
#define VGCODE_PATHVERTEX_HPP
|
||||
|
||||
#include "Types.hpp"
|
||||
|
||||
#include <cfloat>
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
//
|
||||
// Struct representating a gcode move (toolpath segment)
|
||||
//
|
||||
struct PathVertex
|
||||
{
|
||||
//
|
||||
// Segment end position
|
||||
//
|
||||
Vec3 position{ FLT_MAX, FLT_MAX, FLT_MAX };
|
||||
//
|
||||
// Segment height
|
||||
//
|
||||
float height{ 0.0f };
|
||||
//
|
||||
// Segment width
|
||||
//
|
||||
float width{ 0.0f };
|
||||
//
|
||||
// Segment speed
|
||||
//
|
||||
float feedrate{ 0.0f };
|
||||
//
|
||||
// Segment actual speed
|
||||
//
|
||||
float actual_feedrate{ 0.0f };
|
||||
//
|
||||
// Segment mm3_per_mm
|
||||
//
|
||||
float mm3_per_mm{ 0.0f };
|
||||
//
|
||||
// Segment fan speed
|
||||
//
|
||||
float fan_speed{ 0.0f };
|
||||
//
|
||||
// Segment temperature
|
||||
//
|
||||
float temperature{ 0.0f };
|
||||
#if VGCODE_ENABLE_COG_AND_TOOL_MARKERS
|
||||
//
|
||||
// Segment weight
|
||||
//
|
||||
float weight{ 0.0f };
|
||||
#endif // VGCODE_ENABLE_COG_AND_TOOL_MARKERS
|
||||
//
|
||||
// Segment extrusion role
|
||||
//
|
||||
EGCodeExtrusionRole role{ EGCodeExtrusionRole::None };
|
||||
//
|
||||
// Segment move type
|
||||
//
|
||||
EMoveType type{ EMoveType::Noop };
|
||||
//
|
||||
// Segment gcode line id
|
||||
//
|
||||
uint32_t gcode_id{ 0 };
|
||||
//
|
||||
// Segment layer id
|
||||
//
|
||||
uint32_t layer_id{ 0 };
|
||||
//
|
||||
// Segment extruder id
|
||||
//
|
||||
uint8_t extruder_id{ 0 };
|
||||
//
|
||||
// Segment color id
|
||||
//
|
||||
uint8_t color_id{ 0 };
|
||||
//
|
||||
// Segment estimated times
|
||||
//
|
||||
std::array<float, TIME_MODES_COUNT> times{ 0.0f, 0.0f };
|
||||
|
||||
//
|
||||
// Return true if the segment is an extrusion move
|
||||
//
|
||||
bool is_extrusion() const;
|
||||
//
|
||||
// Return true if the segment is an travel move
|
||||
//
|
||||
bool is_travel() const;
|
||||
//
|
||||
// Return true if the segment is an option
|
||||
// See: EOptionType
|
||||
//
|
||||
bool is_option() const;
|
||||
//
|
||||
// Return true if the segment is a wipe move
|
||||
//
|
||||
bool is_wipe() const;
|
||||
//
|
||||
// Return true if the segment was generated by custom gcode
|
||||
//
|
||||
bool is_custom_gcode() const;
|
||||
//
|
||||
// Return the volumetric flow rate of the segment
|
||||
//
|
||||
float volumetric_rate() const { return feedrate * mm3_per_mm; }
|
||||
//
|
||||
// Return the acutal volumetric flow rate of the segment
|
||||
//
|
||||
float actual_volumetric_rate() const { return actual_feedrate * mm3_per_mm; }
|
||||
|
||||
static const PathVertex DUMMY_PATH_VERTEX;
|
||||
};
|
||||
|
||||
} // namespace libvgcode
|
||||
|
||||
#endif // VGCODE_PATHVERTEX_HPP
|
@ -1,218 +0,0 @@
|
||||
///|/ Copyright (c) Prusa Research 2023 Enrico Turri @enricoturri1966, Pavel Mikuš @Godrak
|
||||
///|/
|
||||
///|/ libvgcode is released under the terms of the AGPLv3 or higher
|
||||
///|/
|
||||
#ifndef VGCODE_TYPES_HPP
|
||||
#define VGCODE_TYPES_HPP
|
||||
|
||||
#define VGCODE_ENABLE_COG_AND_TOOL_MARKERS 0
|
||||
|
||||
#include <array>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
static constexpr float PI = 3.141592f;
|
||||
|
||||
//
|
||||
// Predefined values for the radius, in mm, of the cylinders used to render the travel moves.
|
||||
//
|
||||
static constexpr float DEFAULT_TRAVELS_RADIUS_MM = 0.1f;
|
||||
static constexpr float MIN_TRAVELS_RADIUS_MM = 0.05f;
|
||||
static constexpr float MAX_TRAVELS_RADIUS_MM = 1.0f;
|
||||
|
||||
//
|
||||
// Predefined values for the radius, in mm, of the cylinders used to render the wipe moves.
|
||||
//
|
||||
static constexpr float DEFAULT_WIPES_RADIUS_MM = 0.1f;
|
||||
static constexpr float MIN_WIPES_RADIUS_MM = 0.05f;
|
||||
static constexpr float MAX_WIPES_RADIUS_MM = 1.0f;
|
||||
|
||||
//
|
||||
// Vector in 3 dimensions
|
||||
// [0] -> x
|
||||
// [1] -> y
|
||||
// [2] -> z
|
||||
// Used for positions, displacements and so on.
|
||||
//
|
||||
using Vec3 = std::array<float, 3>;
|
||||
|
||||
//
|
||||
// 4x4 square matrix with elements in column-major order:
|
||||
// | a[0] a[4] a[8] a[12] |
|
||||
// | a[1] a[5] a[9] a[13] |
|
||||
// | a[2] a[6] a[10] a[14] |
|
||||
// | a[3] a[7] a[11] a[15] |
|
||||
//
|
||||
using Mat4x4 = std::array<float, 16>;
|
||||
|
||||
//
|
||||
// RGB color
|
||||
// [0] -> red
|
||||
// [1] -> green
|
||||
// [2] -> blue
|
||||
//
|
||||
using Color = std::array<uint8_t, 3>;
|
||||
|
||||
//
|
||||
// Color palette
|
||||
//
|
||||
using Palette = std::vector<Color>;
|
||||
|
||||
//
|
||||
// Axis aligned box in 3 dimensions
|
||||
// [0] -> { min_x, min_y, min_z }
|
||||
// [1] -> { max_x, max_y, max_z }
|
||||
//
|
||||
using AABox = std::array<Vec3, 2>;
|
||||
|
||||
//
|
||||
// One dimensional natural numbers interval
|
||||
// [0] -> min
|
||||
// [1] -> max
|
||||
//
|
||||
using Interval = std::array<std::size_t, 2>;
|
||||
|
||||
//
|
||||
// View types
|
||||
//
|
||||
enum class EViewType : uint8_t
|
||||
{
|
||||
FeatureType,
|
||||
Height,
|
||||
Width,
|
||||
Speed,
|
||||
ActualSpeed,
|
||||
FanSpeed,
|
||||
Temperature,
|
||||
VolumetricFlowRate,
|
||||
ActualVolumetricFlowRate,
|
||||
LayerTimeLinear,
|
||||
LayerTimeLogarithmic,
|
||||
Tool,
|
||||
ColorPrint,
|
||||
COUNT
|
||||
};
|
||||
|
||||
static constexpr std::size_t VIEW_TYPES_COUNT = static_cast<std::size_t>(EViewType::COUNT);
|
||||
|
||||
//
|
||||
// Move types
|
||||
//
|
||||
enum class EMoveType : uint8_t
|
||||
{
|
||||
Noop,
|
||||
Retract,
|
||||
Unretract,
|
||||
Seam,
|
||||
ToolChange,
|
||||
ColorChange,
|
||||
PausePrint,
|
||||
CustomGCode,
|
||||
Travel,
|
||||
Wipe,
|
||||
Extrude,
|
||||
COUNT
|
||||
};
|
||||
|
||||
static constexpr std::size_t MOVE_TYPES_COUNT = static_cast<std::size_t>(EMoveType::COUNT);
|
||||
|
||||
//
|
||||
// Extrusion roles
|
||||
//
|
||||
enum class EGCodeExtrusionRole : uint8_t
|
||||
{
|
||||
// This enum is used as in index into extrusion_roles_visibility.
|
||||
// Better only add things to the end.
|
||||
None,
|
||||
Perimeter,
|
||||
ExternalPerimeter,
|
||||
OverhangPerimeter,
|
||||
InternalInfill,
|
||||
SolidInfill,
|
||||
TopSolidInfill,
|
||||
Ironing,
|
||||
BridgeInfill,
|
||||
GapFill,
|
||||
Skirt,
|
||||
SupportMaterial,
|
||||
SupportMaterialInterface,
|
||||
WipeTower,
|
||||
Custom,
|
||||
COUNT
|
||||
};
|
||||
|
||||
static constexpr std::size_t GCODE_EXTRUSION_ROLES_COUNT = static_cast<std::size_t>(EGCodeExtrusionRole::COUNT);
|
||||
|
||||
//
|
||||
// Option types
|
||||
//
|
||||
enum class EOptionType : uint8_t
|
||||
{
|
||||
// This enum is used as in index into options_visibility.
|
||||
// Better only add things to the end.
|
||||
Travels,
|
||||
Wipes,
|
||||
Retractions,
|
||||
Unretractions,
|
||||
Seams,
|
||||
ToolChanges,
|
||||
ColorChanges,
|
||||
PausePrints,
|
||||
CustomGCodes,
|
||||
#if VGCODE_ENABLE_COG_AND_TOOL_MARKERS
|
||||
CenterOfGravity,
|
||||
ToolMarker,
|
||||
#endif // VGCODE_ENABLE_COG_AND_TOOL_MARKERS
|
||||
COUNT
|
||||
};
|
||||
|
||||
static constexpr std::size_t OPTION_TYPES_COUNT = static_cast<std::size_t>(EOptionType::COUNT);
|
||||
|
||||
//
|
||||
// Time modes
|
||||
//
|
||||
enum class ETimeMode : uint8_t
|
||||
{
|
||||
Normal,
|
||||
Stealth,
|
||||
COUNT
|
||||
};
|
||||
|
||||
static constexpr std::size_t TIME_MODES_COUNT = static_cast<std::size_t>(ETimeMode::COUNT);
|
||||
|
||||
//
|
||||
// Color range types
|
||||
//
|
||||
enum class EColorRangeType : uint8_t
|
||||
{
|
||||
Linear,
|
||||
Logarithmic,
|
||||
COUNT
|
||||
};
|
||||
|
||||
static constexpr std::size_t COLOR_RANGE_TYPES_COUNT = static_cast<std::size_t>(EColorRangeType::COUNT);
|
||||
|
||||
//
|
||||
// Predefined colors
|
||||
//
|
||||
static const Color DUMMY_COLOR{ 64, 64, 64 };
|
||||
|
||||
//
|
||||
// Mapping from EMoveType to EOptionType
|
||||
// Returns EOptionType::COUNT if the given move type does not correspond
|
||||
// to any option type.
|
||||
//
|
||||
extern EOptionType move_type_to_option(EMoveType type);
|
||||
|
||||
//
|
||||
// Returns the linear interpolation between the two given colors
|
||||
// at the given t.
|
||||
// t is clamped in the range [0..1]
|
||||
//
|
||||
extern Color lerp(const Color& c1, const Color& c2, float t);
|
||||
|
||||
} // namespace libvgcode
|
||||
|
||||
#endif // VGCODE_TYPES_HPP
|
@ -1,419 +0,0 @@
|
||||
///|/ Copyright (c) Prusa Research 2023 Enrico Turri @enricoturri1966, Pavel Mikuš @Godrak
|
||||
///|/
|
||||
///|/ libvgcode is released under the terms of the AGPLv3 or higher
|
||||
///|/
|
||||
#ifndef VGCODE_VIEWER_HPP
|
||||
#define VGCODE_VIEWER_HPP
|
||||
|
||||
#include "Types.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace libvgcode {
|
||||
|
||||
class ViewerImpl;
|
||||
struct GCodeInputData;
|
||||
struct PathVertex;
|
||||
class ColorRange;
|
||||
struct ColorPrint;
|
||||
|
||||
class Viewer
|
||||
{
|
||||
public:
|
||||
Viewer();
|
||||
~Viewer();
|
||||
Viewer(const Viewer& other) = delete;
|
||||
Viewer(Viewer&& other) = delete;
|
||||
Viewer& operator = (const Viewer& other) = delete;
|
||||
Viewer& operator = (Viewer&& other) = delete;
|
||||
|
||||
//
|
||||
// Initialize the viewer.
|
||||
// Param opengl_context_version must be the string returned by glGetString(GL_VERSION).
|
||||
// This method must be called after a valid OpenGL context has been already created
|
||||
// and before calling any other method of the viewer.
|
||||
// Throws an std::runtime_error exception if:
|
||||
// * the method is called before creating an OpenGL context
|
||||
// * the created OpenGL context does not support OpenGL 3.2 or greater
|
||||
// * when using OpenGL ES, the created OpenGL ES context does not support OpenGL ES 2.0 or greater
|
||||
// * any of the shaders fails to compile
|
||||
//
|
||||
void init(const std::string& opengl_context_version);
|
||||
//
|
||||
// Release the resources used by the viewer.
|
||||
// This method must be called before releasing the OpenGL context if the viewer
|
||||
// goes out of scope after releasing it.
|
||||
//
|
||||
void shutdown();
|
||||
//
|
||||
// Reset the contents of the viewer.
|
||||
// Automatically called by load() method.
|
||||
//
|
||||
void reset();
|
||||
//
|
||||
// Setup the viewer content from the given data.
|
||||
// See: GCodeInputData
|
||||
//
|
||||
void load(GCodeInputData&& gcode_data);
|
||||
//
|
||||
// Render the toolpaths according to the current settings and
|
||||
// using the given camera matrices.
|
||||
//
|
||||
void render(const Mat4x4& view_matrix, const Mat4x4& projection_matrix);
|
||||
|
||||
//
|
||||
// ************************************************************************
|
||||
// Settings
|
||||
// The following methods can be used to query/customize the parameters
|
||||
// used to render the toolpaths.
|
||||
// ************************************************************************
|
||||
//
|
||||
|
||||
//
|
||||
// View type
|
||||
// See: EViewType
|
||||
//
|
||||
EViewType get_view_type() const;
|
||||
void set_view_type(EViewType type);
|
||||
//
|
||||
// Time mode
|
||||
// See: ETimeMode
|
||||
//
|
||||
ETimeMode get_time_mode() const;
|
||||
void set_time_mode(ETimeMode mode);
|
||||
//
|
||||
// Top layer only
|
||||
// Whether or not the visible range is limited to the current top layer only.
|
||||
//
|
||||
bool is_top_layer_only_view_range() const;
|
||||
//
|
||||
// Toggle the top layer only state.
|
||||
//
|
||||
void toggle_top_layer_only_view_range();
|
||||
//
|
||||
// Returns true if the given option is visible.
|
||||
//
|
||||
bool is_option_visible(EOptionType type) const;
|
||||
//
|
||||
// Toggle the visibility state of the given option.
|
||||
//
|
||||
void toggle_option_visibility(EOptionType type);
|
||||
//
|
||||
// Returns true if the given extrusion role is visible.
|
||||
//
|
||||
bool is_extrusion_role_visible(EGCodeExtrusionRole role) const;
|
||||
//
|
||||
// Toggle the visibility state of the given extrusion role.
|
||||
//
|
||||
void toggle_extrusion_role_visibility(EGCodeExtrusionRole role);
|
||||
//
|
||||
// Return the color used to render the given extrusion rols.
|
||||
//
|
||||
const Color& get_extrusion_role_color(EGCodeExtrusionRole role) const;
|
||||
//
|
||||
// Set the color used to render the given extrusion role.
|
||||
//
|
||||
void set_extrusion_role_color(EGCodeExtrusionRole role, const Color& color);
|
||||
//
|
||||
// Reset the colors used to render the extrusion roles to the default value.
|
||||
//
|
||||
void reset_default_extrusion_roles_colors();
|
||||
//
|
||||
// Return the color used to render the given option.
|
||||
//
|
||||
const Color& get_option_color(EOptionType type) const;
|
||||
//
|
||||
// Set the color used to render the given option.
|
||||
//
|
||||
void set_option_color(EOptionType type, const Color& color);
|
||||
//
|
||||
// Reset the colors used to render the options to the default value.
|
||||
//
|
||||
void reset_default_options_colors();
|
||||
//
|
||||
// Return the count of colors in the palette used to render
|
||||
// the toolpaths when the view type is EViewType::Tool.
|
||||
//
|
||||
size_t get_tool_colors_count() const;
|
||||
//
|
||||
// Return the palette used to render the toolpaths when
|
||||
// the view type is EViewType::Tool.
|
||||
//
|
||||
const Palette& get_tool_colors() const;
|
||||
//
|
||||
// Set the palette used to render the toolpaths when
|
||||
// the view type is EViewType::Tool with the given one.
|
||||
//
|
||||
void set_tool_colors(const Palette& colors);
|
||||
//
|
||||
// Return the count of colors in the palette used to render
|
||||
// the toolpaths when the view type is EViewType::ColorPrint.
|
||||
//
|
||||
size_t get_color_print_colors_count() const;
|
||||
//
|
||||
// Return the palette used to render the toolpaths when
|
||||
// the view type is EViewType::ColorPrint.
|
||||
//
|
||||
const Palette& get_color_print_colors() const;
|
||||
//
|
||||
// Set the palette used to render the toolpaths when
|
||||
// the view type is EViewType::ColorPrint with the given one.
|
||||
//
|
||||
void set_color_print_colors(const Palette& colors);
|
||||
//
|
||||
// Get the color range for the given view type.
|
||||
// Valid view types are:
|
||||
// EViewType::Height
|
||||
// EViewType::Width
|
||||
// EViewType::Speed
|
||||
// EViewType::ActualSpeed
|
||||
// EViewType::FanSpeed
|
||||
// EViewType::Temperature
|
||||
// EViewType::VolumetricFlowRate
|
||||
// EViewType::ActualVolumetricFlowRate
|
||||
// EViewType::LayerTimeLinear
|
||||
// EViewType::LayerTimeLogarithmic
|
||||
//
|
||||
const ColorRange& get_color_range(EViewType type) const;
|
||||
//
|
||||
// Set the palette for the color range corresponding to the given view type
|
||||
// with the given value.
|
||||
// Valid view types are:
|
||||
// EViewType::Height
|
||||
// EViewType::Width
|
||||
// EViewType::Speed
|
||||
// EViewType::ActualSpeed
|
||||
// EViewType::FanSpeed
|
||||
// EViewType::Temperature
|
||||
// EViewType::VolumetricFlowRate
|
||||
// EViewType::ActualVolumetricFlowRate
|
||||
// EViewType::LayerTimeLinear
|
||||
// EViewType::LayerTimeLogarithmic
|
||||
//
|
||||
void set_color_range_palette(EViewType type, const Palette& palette);
|
||||
//
|
||||
// Get the radius, in mm, of the cylinders used to render the travel moves.
|
||||
//
|
||||
float get_travels_radius() const;
|
||||
//
|
||||
// Set the radius, in mm, of the cylinders used to render the travel moves.
|
||||
// Radius is clamped to [MIN_TRAVELS_RADIUS_MM..MAX_TRAVELS_RADIUS_MM]
|
||||
//
|
||||
void set_travels_radius(float radius);
|
||||
//
|
||||
// Get the radius, in mm, of the cylinders used to render the wipe moves.
|
||||
//
|
||||
float get_wipes_radius() const;
|
||||
//
|
||||
// Set the radius, in mm, of the cylinders used to render the wipe moves.
|
||||
// Radius is clamped to [MIN_WIPES_RADIUS_MM..MAX_WIPES_RADIUS_MM]
|
||||
//
|
||||
void set_wipes_radius(float radius);
|
||||
//
|
||||
// Return the count of detected layers.
|
||||
//
|
||||
size_t get_layers_count() const;
|
||||
//
|
||||
// Return the current visible layers range.
|
||||
//
|
||||
const Interval& get_layers_view_range() const;
|
||||
//
|
||||
// Set the current visible layers range with the given interval.
|
||||
// Values are clamped to [0..get_layers_count() - 1].
|
||||
//
|
||||
void set_layers_view_range(const Interval& range);
|
||||
//
|
||||
// Set the current visible layers range with the given min and max values.
|
||||
// Values are clamped to [0..get_layers_count() - 1].
|
||||
//
|
||||
void set_layers_view_range(Interval::value_type min, Interval::value_type max);
|
||||
//
|
||||
// Return the current visible range.
|
||||
// Three ranges are defined: full, enabled and visible.
|
||||
// For all of them the range endpoints represent:
|
||||
// [0] -> min vertex id
|
||||
// [1] -> max vertex id
|
||||
// Full is the range of vertices that could potentially be visualized accordingly to the current settings.
|
||||
// Enabled is the part of the full range that is selected for visualization accordingly to the current settings.
|
||||
// Visible is the part of the enabled range that is actually visualized accordingly to the current settings.
|
||||
//
|
||||
const Interval& get_view_visible_range() const;
|
||||
//
|
||||
// Set the current visible range.
|
||||
// Values are clamped to the current view enabled range;
|
||||
//
|
||||
void set_view_visible_range(Interval::value_type min, Interval::value_type max);
|
||||
//
|
||||
// Return the current full range.
|
||||
//
|
||||
const Interval& get_view_full_range() const;
|
||||
//
|
||||
// Return the current enabled range.
|
||||
//
|
||||
const Interval& get_view_enabled_range() const;
|
||||
|
||||
//
|
||||
// ************************************************************************
|
||||
// Property getters
|
||||
// The following methods can be used to query detected properties.
|
||||
// ************************************************************************
|
||||
//
|
||||
|
||||
//
|
||||
// Spiral vase mode
|
||||
// Whether or not the gcode was generated with spiral vase mode enabled.
|
||||
// See: GCodeInputData
|
||||
//
|
||||
bool is_spiral_vase_mode() const;
|
||||
//
|
||||
// Return the z of the layer with the given id
|
||||
// or 0.0f if the id does not belong to [0..get_layers_count() - 1].
|
||||
//
|
||||
float get_layer_z(size_t layer_id) const;
|
||||
//
|
||||
// Return the list of zs of the detected layers.
|
||||
//
|
||||
std::vector<float> get_layers_zs() const;
|
||||
//
|
||||
// Return the id of the layer closest to the given z.
|
||||
//
|
||||
size_t get_layer_id_at(float z) const;
|
||||
//
|
||||
// Return the count of detected used extruders.
|
||||
//
|
||||
size_t get_used_extruders_count() const;
|
||||
//
|
||||
// Return the list of ids of the detected used extruders.
|
||||
//
|
||||
std::vector<uint8_t> get_used_extruders_ids() const;
|
||||
//
|
||||
// Return the list of detected time modes.
|
||||
//
|
||||
std::vector<ETimeMode> get_time_modes() const;
|
||||
//
|
||||
// Return the count of vertices used to render the toolpaths
|
||||
//
|
||||
size_t get_vertices_count() const;
|
||||
//
|
||||
// Return the vertex pointed by the max value of the view visible range
|
||||
//
|
||||
const PathVertex& get_current_vertex() const;
|
||||
//
|
||||
// Return the index of vertex pointed by the max value of the view visible range
|
||||
//
|
||||
size_t get_current_vertex_id() const;
|
||||
//
|
||||
// Return the vertex at the given index
|
||||
//
|
||||
const PathVertex& get_vertex_at(size_t id) const;
|
||||
//
|
||||
// Return the total estimated time, in seconds, using the current time mode.
|
||||
//
|
||||
float get_estimated_time() const;
|
||||
//
|
||||
// Return the estimated time, in seconds, at the vertex with the given index
|
||||
// using the current time mode.
|
||||
//
|
||||
float get_estimated_time_at(size_t id) const;
|
||||
//
|
||||
// Return the color used to render the given vertex with the current settings.
|
||||
//
|
||||
Color get_vertex_color(const PathVertex& vertex) const;
|
||||
//
|
||||
// Return the count of detected extrusion roles
|
||||
//
|
||||
size_t get_extrusion_roles_count() const;
|
||||
//
|
||||
// Return the list of detected extrusion roles
|
||||
//
|
||||
std::vector<EGCodeExtrusionRole> get_extrusion_roles() const;
|
||||
//
|
||||
// Return the count of detected options.
|
||||
//
|
||||
size_t get_options_count() const;
|
||||
//
|
||||
// Return the list of detected options.
|
||||
//
|
||||
const std::vector<EOptionType>& get_options() const;
|
||||
//
|
||||
// Return the count of detected color prints.
|
||||
//
|
||||
size_t get_color_prints_count(uint8_t extruder_id) const;
|
||||
//
|
||||
// Return the list of detected color prints.
|
||||
//
|
||||
std::vector<ColorPrint> get_color_prints(uint8_t extruder_id) const;
|
||||
//
|
||||
// Return the estimated time for the given role and the current time mode.
|
||||
//
|
||||
float get_extrusion_role_estimated_time(EGCodeExtrusionRole role) const;
|
||||
//
|
||||
// Return the estimated time for the travel moves and the current time mode.
|
||||
//
|
||||
float get_travels_estimated_time() const;
|
||||
//
|
||||
// Return the list of layers time for the current time mode.
|
||||
//
|
||||
std::vector<float> get_layers_estimated_times() const;
|
||||
//
|
||||
// Return the axes aligned bounding box containing all the given types.
|
||||
//
|
||||
AABox get_bounding_box(const std::vector<EMoveType>& types = {
|
||||
EMoveType::Retract, EMoveType::Unretract, EMoveType::Seam, EMoveType::ToolChange,
|
||||
EMoveType::ColorChange, EMoveType::PausePrint, EMoveType::CustomGCode, EMoveType::Travel,
|
||||
EMoveType::Wipe, EMoveType::Extrude }) const;
|
||||
//
|
||||
// Return the axes aligned bounding box containing all the extrusions with the given roles.
|
||||
//
|
||||
AABox get_extrusion_bounding_box(const std::vector<EGCodeExtrusionRole>& roles = {
|
||||
EGCodeExtrusionRole::Perimeter, EGCodeExtrusionRole::ExternalPerimeter, EGCodeExtrusionRole::OverhangPerimeter,
|
||||
EGCodeExtrusionRole::InternalInfill, EGCodeExtrusionRole::SolidInfill, EGCodeExtrusionRole::TopSolidInfill,
|
||||
EGCodeExtrusionRole::Ironing, EGCodeExtrusionRole::BridgeInfill, EGCodeExtrusionRole::GapFill,
|
||||
EGCodeExtrusionRole::Skirt, EGCodeExtrusionRole::SupportMaterial, EGCodeExtrusionRole::SupportMaterialInterface,
|
||||
EGCodeExtrusionRole::WipeTower, EGCodeExtrusionRole::Custom }) const;
|
||||
//
|
||||
// Return the size of the used cpu memory, in bytes
|
||||
//
|
||||
size_t get_used_cpu_memory() const;
|
||||
//
|
||||
// Return the size of the used gpu memory, in bytes
|
||||
//
|
||||
size_t get_used_gpu_memory() const;
|
||||
|
||||
#if VGCODE_ENABLE_COG_AND_TOOL_MARKERS
|
||||
//
|
||||
// Returns the position of the center of gravity of the toolpaths.
|
||||
// It does not take in account extrusions of type:
|
||||
// Skirt
|
||||
// Support Material
|
||||
// Support Material Interface
|
||||
// WipeTower
|
||||
// Custom
|
||||
//
|
||||
Vec3 get_cog_position() const;
|
||||
|
||||
float get_cog_marker_scale_factor() const;
|
||||
void set_cog_marker_scale_factor(float factor);
|
||||
|
||||
const Vec3& get_tool_marker_position() const;
|
||||
|
||||
float get_tool_marker_offset_z() const;
|
||||
void set_tool_marker_offset_z(float offset_z);
|
||||
|
||||
float get_tool_marker_scale_factor() const;
|
||||
void set_tool_marker_scale_factor(float factor);
|
||||
|
||||
const Color& get_tool_marker_color() const;
|
||||
void set_tool_marker_color(const Color& color);
|
||||
|
||||
float get_tool_marker_alpha() const;
|
||||
void set_tool_marker_alpha(float alpha);
|
||||
#endif // VGCODE_ENABLE_COG_AND_TOOL_MARKERS
|
||||
|
||||
private:
|
||||
ViewerImpl* m_impl{ nullptr };
|
||||
};
|
||||
|
||||
} // namespace libvgcode
|
||||
|
||||
#endif // VGCODE_VIEWER_HPP
|
@ -14,7 +14,7 @@
|
||||
|
||||
#include "LibVGCode/LibVGCodeWrapper.hpp"
|
||||
// needed for tech VGCODE_ENABLE_COG_AND_TOOL_MARKERS
|
||||
#include <libvgcode/Types.hpp>
|
||||
#include "../../src/libvgcode/include/Types.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
#include <float.h>
|
||||
|
@ -24,8 +24,8 @@
|
||||
#include "libslic3r/Line.hpp"
|
||||
#include "libslic3r/Polyline.hpp"
|
||||
#include "libslic3r/PrintConfig.hpp"
|
||||
#include "libvgcode/GCodeInputData.hpp"
|
||||
#include "libvgcode/PathVertex.hpp"
|
||||
#include "../../src/libvgcode/include/GCodeInputData.hpp"
|
||||
#include "../../src/libvgcode/include/PathVertex.hpp"
|
||||
|
||||
namespace libvgcode {
|
||||
class Viewer;
|
||||
|
@ -5,10 +5,12 @@
|
||||
#ifndef slic3r_LibVGCodeWrapper_hpp_
|
||||
#define slic3r_LibVGCodeWrapper_hpp_
|
||||
|
||||
#include <libvgcode/Viewer.hpp>
|
||||
#include <libvgcode/PathVertex.hpp>
|
||||
#include <libvgcode/GCodeInputData.hpp>
|
||||
#include <libvgcode/ColorRange.hpp>
|
||||
#include <../../src/libvgcode/include/Viewer.hpp>
|
||||
#include <../../src/libvgcode/include/PathVertex.hpp>
|
||||
#include <../../src/libvgcode/include/GCodeInputData.hpp>
|
||||
#include <../../src/libvgcode/include/ColorRange.hpp>
|
||||
#include "../../src/libvgcode/include/Types.hpp"
|
||||
|
||||
#include <stddef.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
@ -18,7 +20,7 @@
|
||||
#include "slic3r/GUI/GUI_Preview.hpp"
|
||||
#include "libslic3r/ExtrusionRole.hpp"
|
||||
#include "libslic3r/Point.hpp"
|
||||
#include "libvgcode/Types.hpp"
|
||||
|
||||
|
||||
namespace Slic3r {
|
||||
class Print;
|
||||
|
Loading…
x
Reference in New Issue
Block a user