PrusaSlicer-NonPlainar/src/slic3r/GUI/GLTexture.hpp

72 lines
1.9 KiB
C++
Raw Normal View History

2018-06-13 07:12:16 +00:00
#ifndef slic3r_GLTexture_hpp_
#define slic3r_GLTexture_hpp_
#include <string>
2018-06-14 08:37:28 +00:00
class wxImage;
2018-06-13 07:12:16 +00:00
namespace Slic3r {
namespace GUI {
2018-06-14 08:37:28 +00:00
class GLTexture
2018-06-13 07:12:16 +00:00
{
2018-07-31 10:25:00 +00:00
public:
struct UV
{
float u;
float v;
};
struct Quad_UVs
{
UV left_bottom;
UV right_bottom;
UV right_top;
UV left_top;
};
static Quad_UVs FullTextureUVs;
2018-07-18 13:07:52 +00:00
protected:
2018-06-13 07:12:16 +00:00
unsigned int m_id;
int m_width;
int m_height;
std::string m_source;
public:
GLTexture();
2018-07-18 13:07:52 +00:00
virtual ~GLTexture();
2018-06-13 07:12:16 +00:00
bool load_from_file(const std::string& filename, bool use_mipmaps);
#if ENABLE_TEXTURES_FROM_SVG
bool load_from_svg_file(const std::string& filename, bool use_mipmaps, unsigned int max_size_px);
#endif // ENABLE_TEXTURES_FROM_SVG
#if ENABLE_SVG_ICONS
bool load_from_svg_files_as_sprites_array(const std::vector<std::string>& filenames, unsigned int num_states, unsigned int sprite_size_px);
#endif // ENABLE_SVG_ICONS
2018-06-13 07:12:16 +00:00
void reset();
unsigned int get_id() const { return m_id; }
int get_width() const { return m_width; }
int get_height() const { return m_height; }
2018-07-18 13:07:52 +00:00
const std::string& get_source() const { return m_source; }
2018-06-13 07:12:16 +00:00
static void render_texture(unsigned int tex_id, float left, float right, float bottom, float top);
2018-07-31 10:25:00 +00:00
static void render_sub_texture(unsigned int tex_id, float left, float right, float bottom, float top, const Quad_UVs& uvs);
2018-06-14 08:37:28 +00:00
2018-07-18 13:07:52 +00:00
protected:
unsigned int generate_mipmaps(wxImage& image);
#if ENABLE_TEXTURES_FROM_SVG
private:
bool load_from_png(const std::string& filename, bool use_mipmaps);
bool load_from_svg(const std::string& filename, bool use_mipmaps, unsigned int max_size_px);
#endif // ENABLE_TEXTURES_FROM_SVG
2018-06-13 07:12:16 +00:00
};
} // namespace GUI
} // namespace Slic3r
#endif // slic3r_GLTexture_hpp_