Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEnrico Turri <enricoturri@seznam.cz>2019-02-20 17:23:23 +0300
committerEnrico Turri <enricoturri@seznam.cz>2019-02-20 17:23:23 +0300
commit11fc849b1a92dddfab6b463e4b3a01825bd5692c (patch)
tree29f6647d1f591daaa253dae3f9c3fb5eda090f4d /src/slic3r/GUI/3DBed.hpp
parent0b0457186b8fb8cfd8dc809c5c0d80e2409f7569 (diff)
Printbed textures generated from svg files
Diffstat (limited to 'src/slic3r/GUI/3DBed.hpp')
-rw-r--r--src/slic3r/GUI/3DBed.hpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/src/slic3r/GUI/3DBed.hpp b/src/slic3r/GUI/3DBed.hpp
index 11c5faa64..edf3e5ee7 100644
--- a/src/slic3r/GUI/3DBed.hpp
+++ b/src/slic3r/GUI/3DBed.hpp
@@ -3,6 +3,9 @@
#include "GLTexture.hpp"
#include "3DScene.hpp"
+#if ENABLE_TEXTURES_FROM_SVG
+#include "GLShader.hpp"
+#endif // ENABLE_TEXTURES_FROM_SVG
class GLUquadric;
typedef class GLUquadric GLUquadricObj;
@@ -12,17 +15,41 @@ namespace GUI {
class GeometryBuffer
{
+#if ENABLE_TEXTURES_FROM_SVG
+ struct Vertex
+ {
+ float position[3];
+ float tex_coords[2];
+
+ Vertex()
+ {
+ position[0] = 0.0f; position[1] = 0.0f; position[2] = 0.0f;
+ tex_coords[0] = 0.0f; tex_coords[1] = 0.0f;
+ }
+ };
+
+ std::vector<Vertex> m_vertices;
+#else
std::vector<float> m_vertices;
std::vector<float> m_tex_coords;
+#endif // ENABLE_TEXTURES_FROM_SVG
public:
bool set_from_triangles(const Polygons& triangles, float z, bool generate_tex_coords);
bool set_from_lines(const Lines& lines, float z);
+#if ENABLE_TEXTURES_FROM_SVG
+ const float* get_vertices_data() const;
+ unsigned int get_vertices_data_size() const { return (unsigned int)m_vertices.size() * get_vertex_data_size(); }
+ unsigned int get_vertex_data_size() const { return (unsigned int)(5 * sizeof(float)); }
+ unsigned int get_position_offset() const { return 0; }
+ unsigned int get_tex_coords_offset() const { return (unsigned int)(3 * sizeof(float)); }
+ unsigned int get_vertices_count() const { return (unsigned int)m_vertices.size(); }
+#else
const float* get_vertices() const { return m_vertices.data(); }
const float* get_tex_coords() const { return m_tex_coords.data(); }
-
unsigned int get_vertices_count() const { return (unsigned int)m_vertices.size() / 3; }
+#endif // ENABLE_TEXTURES_FROM_SVG
};
class Bed3D
@@ -62,8 +89,14 @@ private:
Polygon m_polygon;
GeometryBuffer m_triangles;
GeometryBuffer m_gridlines;
+#if ENABLE_TEXTURES_FROM_SVG
+ mutable GLTexture m_texture;
+ mutable Shader m_shader;
+ mutable unsigned int m_vbo_id;
+#else
mutable GLTexture m_top_texture;
mutable GLTexture m_bottom_texture;
+#endif // ENABLE_TEXTURES_FROM_SVG
mutable GLBed m_model;
Axes m_axes;
@@ -71,6 +104,9 @@ private:
public:
Bed3D();
+#if ENABLE_TEXTURES_FROM_SVG
+ ~Bed3D() { reset(); }
+#endif // ENABLE_TEXTURES_FROM_SVG
EType get_type() const { return m_type; }
@@ -93,8 +129,16 @@ private:
void calc_triangles(const ExPolygon& poly);
void calc_gridlines(const ExPolygon& poly, const BoundingBox& bed_bbox);
EType detect_type(const Pointfs& shape) const;
+#if ENABLE_TEXTURES_FROM_SVG
+ void render_prusa(const std::string& key, bool bottom) const;
+ void render_prusa_shader(unsigned int vertices_count, bool transparent) const;
+#else
void render_prusa(const std::string &key, float theta, bool useVBOs) const;
+#endif // ENABLE_TEXTURES_FROM_SVG
void render_custom() const;
+#if ENABLE_TEXTURES_FROM_SVG
+ void reset();
+#endif // ENABLE_TEXTURES_FROM_SVG
};
} // GUI