#ifndef RENDERER_H #define RENDERER_H #include "rendering/wrapper/Shader.h" #include "rendering/WindowSize.h" #include "math/MatrixStack.h" #include "rendering/FontRenderer.h" #include "rendering/ColorRenderer.h" class Renderer final { public: Renderer(const WindowSize& size, Shader& shader); void pop(); void push(); void update(); Renderer& scale(float sx, float sy); Renderer& scale(float s); Renderer& translate(float tx, float ty); Renderer& translateX(float tx); Renderer& translateY(float ty); Renderer& translateTo(float tx, float ty); Renderer& rotate(float degrees); void drawString(float x, float y, const char* text); void drawTriangle(const ColorRenderer::Vertex& v1, const ColorRenderer::Vertex& v2, const ColorRenderer::Vertex& v3); void drawTriangle(float x1, float y1, float x2, float y2, float x3, float y3, u32 color); void drawRectangle(float x, float y, float width, float height, u32 color); private: void setTextureMode(bool b); void setColorMode(bool b); const WindowSize& size; Shader& shader; bool texture; bool color; MatrixStack stack; FontRenderer fontRenderer; ColorRenderer colorRenderer; }; #endif