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