00001 #ifndef GUI_GL_MANAGER_HPP
00002 #define GUI_GL_MANAGER_HPP
00003
00004 #include <utils.hpp>
00005 #include <gui_manager.hpp>
00006 #include "gui_gl_matrix4.hpp"
00007
00008 namespace gui {
00009 namespace gl
00010 {
00011 class render_target;
00012
00014 class manager : public gui::manager_impl
00015 {
00016 public :
00017
00019 manager(bool bInitGLEW = true);
00020
00022 ~manager();
00023
00025
00027 void begin(utils::refptr<gui::render_target> pTarget = nullptr) const;
00028
00030 void end() const;
00031
00033
00037 virtual void render_quad(const quad& mQuad) const;
00038
00040
00047 virtual void render_quads(const quad& mQuad, const std::vector<std::array<vertex,4>>& lQuadList) const;
00048
00050
00054 utils::refptr<gui::material> create_material(const std::string& sFileName) const;
00055
00057
00060 utils::refptr<gui::material> create_material(const color& mColor) const;
00061
00063
00066 utils::refptr<gui::material> create_material(utils::refptr<gui::render_target> pRenderTarget) const;
00067
00069
00072 utils::refptr<gui::render_target> create_render_target(uint uiWidth, uint uiHeight) const;
00073
00075
00080 utils::refptr<gui::font> create_font(const std::string& sFontFile, uint uiSize) const;
00081
00083
00085 static bool is_gl_extension_supported(const std::string& sExtension);
00086
00087 private :
00088
00089 void update_view_matrix_() const;
00090
00091 utils::refptr<gui::material> create_material_png(const std::string& sFileName) const;
00092
00093 mutable std::map<std::string, utils::wptr<gui::material>> lTextureList_;
00094 mutable std::map<std::string, utils::wptr<gui::font>> lFontList_;
00095
00096 mutable bool bUpdateViewMatrix_;
00097 mutable matrix4 mViewMatrix_;
00098
00099 mutable utils::refptr<gui::gl::render_target> pCurrentTarget_;
00100 };
00101 }
00102 }
00103
00104 #endif