From abbe5e36d0fab9ee41f40c63df76667f557a0e76 Mon Sep 17 00:00:00 2001 From: bjorn Date: Tue, 8 Aug 2017 02:20:55 -0700 Subject: [PATCH] Canvas state is internal; --- src/graphics/graphics.c | 82 ++++++++++++++++++++--------------------- src/graphics/graphics.h | 16 ++++---- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/graphics/graphics.c b/src/graphics/graphics.c index f19a0394..7ea0bc27 100644 --- a/src/graphics/graphics.c +++ b/src/graphics/graphics.c @@ -361,39 +361,6 @@ int lovrGraphicsGetHeight() { return height; } -void lovrGraphicsPushCanvas() { - if (++state.canvas >= MAX_CANVASES) { - error("Canvas overflow"); - } - - memcpy(&state.canvases[state.canvas], &state.canvases[state.canvas - 1], sizeof(CanvasState)); -} - -void lovrGraphicsPopCanvas() { - if (--state.canvas < 0) { - error("Canvas underflow"); - } - - int* viewport = state.canvases[state.canvas].viewport; - lovrGraphicsSetViewport(viewport[0], viewport[1], viewport[2], viewport[3]); - lovrGraphicsBindFramebuffer(state.canvases[state.canvas].framebuffer); -} - -void lovrGraphicsSetViewport(int x, int y, int w, int h) { - state.canvases[state.canvas].viewport[0] = x; - state.canvases[state.canvas].viewport[1] = y; - state.canvases[state.canvas].viewport[2] = w; - state.canvases[state.canvas].viewport[3] = h; - glViewport(x, y, w, h); -} - -void lovrGraphicsBindFramebuffer(int framebuffer) { - if (state.canvases[state.canvas].framebuffer != framebuffer) { - state.canvases[state.canvas].framebuffer = framebuffer; - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - } -} - // Transforms int lovrGraphicsPush() { @@ -426,14 +393,6 @@ void lovrGraphicsMatrixTransform(mat4 transform) { mat4_multiply(state.transforms[state.transform], transform); } -mat4 lovrGraphicsGetProjection() { - return state.canvases[state.canvas].projection; -} - -void lovrGraphicsSetProjection(mat4 projection) { - memcpy(state.canvases[state.canvas].projection, projection, 16 * sizeof(float)); -} - // Primitives static void lovrGraphicsSetShapeData(float* data, int length) { @@ -968,6 +927,47 @@ void lovrGraphicsPrint(const char* str, mat4 transform, float wrap, HorizontalAl } // Internal State +void lovrGraphicsPushCanvas() { + if (++state.canvas >= MAX_CANVASES) { + error("Canvas overflow"); + } + + memcpy(&state.canvases[state.canvas], &state.canvases[state.canvas - 1], sizeof(CanvasState)); +} + +void lovrGraphicsPopCanvas() { + if (--state.canvas < 0) { + error("Canvas underflow"); + } + + int* viewport = state.canvases[state.canvas].viewport; + lovrGraphicsSetViewport(viewport[0], viewport[1], viewport[2], viewport[3]); + lovrGraphicsBindFramebuffer(state.canvases[state.canvas].framebuffer); +} + +mat4 lovrGraphicsGetProjection() { + return state.canvases[state.canvas].projection; +} + +void lovrGraphicsSetProjection(mat4 projection) { + memcpy(state.canvases[state.canvas].projection, projection, 16 * sizeof(float)); +} + +void lovrGraphicsSetViewport(int x, int y, int w, int h) { + state.canvases[state.canvas].viewport[0] = x; + state.canvases[state.canvas].viewport[1] = y; + state.canvases[state.canvas].viewport[2] = w; + state.canvases[state.canvas].viewport[3] = h; + glViewport(x, y, w, h); +} + +void lovrGraphicsBindFramebuffer(int framebuffer) { + if (state.canvases[state.canvas].framebuffer != framebuffer) { + state.canvases[state.canvas].framebuffer = framebuffer; + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); + } +} + Texture* lovrGraphicsGetTexture() { return state.texture; } diff --git a/src/graphics/graphics.h b/src/graphics/graphics.h index 8372093d..51a6d0df 100644 --- a/src/graphics/graphics.h +++ b/src/graphics/graphics.h @@ -72,9 +72,7 @@ typedef struct { Font* defaultFont; Texture* defaultTexture; float transforms[MAX_TRANSFORMS + INTERNAL_TRANSFORMS][16]; - CanvasState canvases[MAX_CANVASES]; int transform; - int canvas; Color backgroundColor; BlendMode blendMode; @@ -99,6 +97,8 @@ typedef struct { vec_uint_t indices; } buffer; + CanvasState canvases[MAX_CANVASES]; + int canvas; Texture* texture; uint32_t vertexArray; uint32_t vertexBuffer; @@ -141,10 +141,6 @@ int lovrGraphicsIsWireframe(); void lovrGraphicsSetWireframe(int wireframe); int lovrGraphicsGetWidth(); int lovrGraphicsGetHeight(); -void lovrGraphicsPushCanvas(); -void lovrGraphicsPopCanvas(); -void lovrGraphicsSetViewport(int x, int y, int w, int h); -void lovrGraphicsBindFramebuffer(int framebuffer); // Transforms int lovrGraphicsPush(); @@ -154,8 +150,6 @@ void lovrGraphicsTranslate(float x, float y, float z); void lovrGraphicsRotate(float angle, float ax, float ay, float az); void lovrGraphicsScale(float x, float y, float z); void lovrGraphicsMatrixTransform(mat4 transform); -mat4 lovrGraphicsGetProjection(); -void lovrGraphicsSetProjection(mat4 projection); // Primitives void lovrGraphicsPoints(float* points, int count); @@ -170,6 +164,12 @@ void lovrGraphicsSkybox(Skybox* skybox, float angle, float ax, float ay, float a void lovrGraphicsPrint(const char* str, mat4 transform, float wrap, HorizontalAlign halign, VerticalAlign valign); // Internal State +void lovrGraphicsPushCanvas(); +void lovrGraphicsPopCanvas(); +mat4 lovrGraphicsGetProjection(); +void lovrGraphicsSetProjection(mat4 projection); +void lovrGraphicsSetViewport(int x, int y, int w, int h); +void lovrGraphicsBindFramebuffer(int framebuffer); Texture* lovrGraphicsGetTexture(); void lovrGraphicsBindTexture(Texture* texture); void lovrGraphicsBindVertexArray(uint32_t vao);