/**
 * @file Renderer.h
 * @author Petr Egert (egertpet@fel.cvut.cz)
 * @brief Contains Renderer class declaration
 */

#ifndef RENDERER_H
#define RENDERER_H

#include "Texture.h"
#include "Matrix.h"
#include "Vector.h"

namespace RD
{
    /**
     * @brief Class providing utility functions for rendering
     */
    class Renderer
    {
        public:
            ///Default constructor, currently does nothing
            Renderer(){}

            ///Default destructor, currently does nothing
            ~Renderer(){}

            Result Init();
            Result Release();

            void SetTransform(const mat44 &matrix);
            void SetTexture(Texture *texture);
            void DrawQuad();

            static Renderer *instance;   ///< Pointer to a singleton instance of this class


        protected:

        private:
            unsigned int GenQuad(float width, float height, vec2 offset);

            unsigned int quadList;  /// Display list of a textured quad

    };
};

#endif // RENDERER_H
