diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 6021c42c32..d276bcb967 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -99,49 +99,6 @@ float RetinaHelper::get_scale_factor() { return float(m_window->GetContentScaleF #undef Convex #endif -Size::Size() - : m_width(0) - , m_height(0) -{ -} - -Size::Size(int width, int height, float scale_factor) - : m_width(width) - , m_height(height) - , m_scale_factor(scale_factor) -{ -} - -int Size::get_width() const -{ - return m_width; -} - -void Size::set_width(int width) -{ - m_width = width; -} - -int Size::get_height() const -{ - return m_height; -} - -void Size::set_height(int height) -{ - m_height = height; -} - -int Size::get_scale_factor() const -{ - return m_scale_factor; -} - -void Size::set_scale_factor(int scale_factor) -{ - m_scale_factor = scale_factor; -} - GLCanvas3D::LayersEditing::~LayersEditing() { if (m_z_texture_id != 0) { @@ -418,7 +375,6 @@ void GLCanvas3D::LayersEditing::render_profile(const Rect& bar_rect) // Make the vertical bar a bit wider so the layer height curve does not touch the edge of the bar region. const float scale_x = bar_rect.get_width() / float(1.12 * m_slicing_parameters->max_layer_height); const float scale_y = bar_rect.get_height() / m_object_max_z; - const float x = bar_rect.get_left() + float(m_slicing_parameters->layer_height) * scale_x; #if ENABLE_GLBEGIN_GLEND_REMOVAL const bool bar_rect_changed = m_profile.old_bar_rect != bar_rect; @@ -426,17 +382,18 @@ void GLCanvas3D::LayersEditing::render_profile(const Rect& bar_rect) // Baseline if (!m_profile.baseline.is_initialized() || bar_rect_changed) { - m_profile.old_bar_rect = bar_rect; + m_profile.baseline.reset(); GLModel::Geometry init_data; - init_data.format = { GLModel::Geometry::EPrimitiveType::Lines, GLModel::Geometry::EVertexLayout::P3, GLModel::Geometry::EIndexType::USHORT }; + init_data.format = { GLModel::Geometry::EPrimitiveType::Lines, GLModel::Geometry::EVertexLayout::P2, GLModel::Geometry::EIndexType::USHORT }; init_data.color = ColorRGBA::BLACK(); init_data.vertices.reserve(2 * GLModel::Geometry::vertex_stride_floats(init_data.format)); init_data.indices.reserve(2 * GLModel::Geometry::index_stride_bytes(init_data.format)); // vertices - init_data.add_vertex(Vec3f(x, bar_rect.get_bottom(), 0.0f)); - init_data.add_vertex(Vec3f(x, bar_rect.get_top(), 0.0f)); + const float x = bar_rect.get_left() + float(m_slicing_parameters->layer_height) * scale_x; + init_data.add_vertex(Vec2f(x, bar_rect.get_bottom())); + init_data.add_vertex(Vec2f(x, bar_rect.get_top())); // indices init_data.add_ushort_line(0, 1); @@ -449,16 +406,15 @@ void GLCanvas3D::LayersEditing::render_profile(const Rect& bar_rect) m_profile.profile.reset(); GLModel::Geometry init_data; - init_data.format = { GLModel::Geometry::EPrimitiveType::LineStrip, GLModel::Geometry::EVertexLayout::P3, GLModel::Geometry::EIndexType::UINT }; + init_data.format = { GLModel::Geometry::EPrimitiveType::LineStrip, GLModel::Geometry::EVertexLayout::P2, GLModel::Geometry::EIndexType::UINT }; init_data.color = ColorRGBA::BLUE(); init_data.vertices.reserve(m_layer_height_profile.size() * GLModel::Geometry::vertex_stride_floats(init_data.format)); init_data.indices.reserve(m_layer_height_profile.size() * GLModel::Geometry::index_stride_bytes(init_data.format)); // vertices + indices for (unsigned int i = 0; i < (unsigned int)m_layer_height_profile.size(); i += 2) { - init_data.add_vertex(Vec3f(bar_rect.get_left() + float(m_layer_height_profile[i + 1]) * scale_x, - bar_rect.get_bottom() + float(m_layer_height_profile[i]) * scale_y, - 0.0f)); + init_data.add_vertex(Vec2f(bar_rect.get_left() + float(m_layer_height_profile[i + 1]) * scale_x, + bar_rect.get_bottom() + float(m_layer_height_profile[i]) * scale_y)); init_data.add_uint_index(i / 2); } @@ -473,6 +429,8 @@ void GLCanvas3D::LayersEditing::render_profile(const Rect& bar_rect) shader->stop_using(); } #else + const float x = bar_rect.get_left() + float(m_slicing_parameters->layer_height) * scale_x; + // Baseline glsafe(::glColor3f(0.0f, 0.0f, 0.0f)); ::glBegin(GL_LINE_STRIP); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index e5f1dcfc7b..6b14430e8e 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -59,25 +59,24 @@ class RetinaHelper; class Size { - int m_width; - int m_height; - float m_scale_factor; + int m_width{ 0 }; + int m_height{ 0 }; + float m_scale_factor{ 1.0f }; public: - Size(); - Size(int width, int height, float scale_factor = 1.0); + Size() = default; + Size(int width, int height, float scale_factor = 1.0f) : m_width(width), m_height(height), m_scale_factor(scale_factor) {} - int get_width() const; - void set_width(int width); + int get_width() const { return m_width; } + void set_width(int width) { m_width = width; } - int get_height() const; - void set_height(int height); + int get_height() const { return m_height; } + void set_height(int height) { m_height = height; } - int get_scale_factor() const; - void set_scale_factor(int height); + float get_scale_factor() const { return m_scale_factor; } + void set_scale_factor(float factor) { m_scale_factor = factor; } }; - class RenderTimerEvent : public wxEvent { public: diff --git a/src/slic3r/GUI/GLModel.cpp b/src/slic3r/GUI/GLModel.cpp index 1bebabb32f..7f18c5176e 100644 --- a/src/slic3r/GUI/GLModel.cpp +++ b/src/slic3r/GUI/GLModel.cpp @@ -356,8 +356,11 @@ void GLModel::init_from(const Geometry& data) #endif // ENABLE_GLBEGIN_GLEND_REMOVAL { #if ENABLE_GLBEGIN_GLEND_REMOVAL - if (is_initialized()) // call reset() if you want to reuse this model + if (is_initialized()) { + // call reset() if you want to reuse this model + assert(false); return; + } if (data.vertices.empty() || data.indices.empty()) { assert(false); @@ -427,8 +430,11 @@ void GLModel::init_from(const indexed_triangle_set& its, const BoundingBoxf3 &bb #endif // ENABLE_GLBEGIN_GLEND_REMOVAL { #if ENABLE_GLBEGIN_GLEND_REMOVAL - if (is_initialized()) // call reset() if you want to reuse this model + if (is_initialized()) { + // call reset() if you want to reuse this model + assert(false); return; + } if (its.vertices.empty() || its.indices.empty()){ assert(false); @@ -500,8 +506,11 @@ void GLModel::init_from(const indexed_triangle_set& its) void GLModel::init_from(const Polygons& polygons, float z) { #if ENABLE_GLBEGIN_GLEND_REMOVAL - if (is_initialized()) // call reset() if you want to reuse this model + if (is_initialized()) { + // call reset() if you want to reuse this model + assert(false); return; + } if (polygons.empty()) { assert(false); @@ -582,7 +591,8 @@ bool GLModel::init_from_file(const std::string& filename) #if ENABLE_GLBEGIN_GLEND_REMOVAL init_from(model.mesh()); #else - init_from(model.mesh().its, mesh.bounding_box()); + const TriangleMesh& mesh = model.mesh(); + init_from(mesh.its, mesh.bounding_box()); #endif // ENABLE_GLBEGIN_GLEND_REMOVAL m_filename = filename; diff --git a/src/slic3r/GUI/GLShadersManager.cpp b/src/slic3r/GUI/GLShadersManager.cpp index 4e14eaf7f9..3ed92d56d4 100644 --- a/src/slic3r/GUI/GLShadersManager.cpp +++ b/src/slic3r/GUI/GLShadersManager.cpp @@ -34,8 +34,7 @@ std::pair GLShadersManager::init() bool valid = true; #if ENABLE_GLBEGIN_GLEND_REMOVAL - // basic shader, used to render selection bbox, gizmo cut plane and grabbers connections, - // gizmo move grabbers connections, gizmo scale grabbers connections + // basic shader, used to render all what was previously rendered using the immediate mode valid &= append_shader("flat", { "flat.vs", "flat.fs" }); #endif // ENABLE_GLBEGIN_GLEND_REMOVAL // used to render bed axes and model, selection hints, gcode sequential view marker model, preview shells, options in gcode preview diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp index fe4f81bd78..8d268723bc 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp @@ -35,14 +35,14 @@ public: Rect(float left, float top, float right, float bottom) : m_left(left) , m_top(top) , m_right(right) , m_bottom(bottom) {} #if ENABLE_GLBEGIN_GLEND_REMOVAL - bool operator == (const Rect& other) { + bool operator == (const Rect& other) const { if (std::abs(m_left - other.m_left) > EPSILON) return false; if (std::abs(m_top - other.m_top) > EPSILON) return false; if (std::abs(m_right - other.m_right) > EPSILON) return false; if (std::abs(m_bottom - other.m_bottom) > EPSILON) return false; return true; } - bool operator != (const Rect& other) { return !operator==(other); } + bool operator != (const Rect& other) const { return !operator==(other); } #endif // ENABLE_GLBEGIN_GLEND_REMOVAL float get_left() const { return m_left; }