#ifndef GL_H
#define GL_H

#include "glcxx.hpp"
#include "TextShader.h"
#include "FlatShader.h"
#include "RectShader.h"
#include "Font.h"
#include <memory>

class GL
{
public:
    GL();

    void draw_rect(int x, int y, int width, int height,
                   float r, float g, float b, float a);
    void draw_character(int x, int y, uint32_t character, Font & font,
            float r, float g, float b, float a);
    void resize(int width, int height);

protected:
    struct
    {
        std::shared_ptr<TextShader> text;
        std::shared_ptr<FlatShader> flat;
        std::shared_ptr<RectShader> rect;
    } m_shaders;

    std::shared_ptr<glcxx::Array> m_rect_array;
    std::shared_ptr<glcxx::Buffer> m_rect_buffer;
};

#endif
