- removed assize from the back-end api - moved image to paint in renderTriangles callshared-context
@@ -166,6 +166,8 @@ void drawDropDown(struct NVGcontext* vg, const char* text, float x, float y, flo | |||
void drawLabel(struct NVGcontext* vg, const char* text, float x, float y, float w, float h) | |||
{ | |||
NVG_NOTUSED(w); | |||
nvgFontSize(vg, 18.0f); | |||
nvgFontFace(vg, "sans"); | |||
nvgFillColor(vg, nvgRGBA(255,255,255,128)); | |||
@@ -228,6 +230,7 @@ void drawCheckBox(struct NVGcontext* vg, const char* text, float x, float y, flo | |||
{ | |||
struct NVGpaint bg; | |||
char icon[8]; | |||
NVG_NOTUSED(w); | |||
nvgFontSize(vg, 18.0f); | |||
nvgFontFace(vg, "sans"); | |||
@@ -1511,7 +1511,7 @@ void nvgFill(struct NVGcontext* ctx) | |||
else | |||
nvg__expandStrokeAndFill(ctx, NVG_FILL, 0.0f); | |||
ctx->params.renderFill(ctx->params.userPtr, &state->fill, &state->scissor, 1.0f, | |||
ctx->params.renderFill(ctx->params.userPtr, &state->fill, &state->scissor, | |||
ctx->cache->bounds, ctx->cache->paths, ctx->cache->npaths); | |||
// Count triangles | |||
@@ -1537,7 +1537,7 @@ void nvgStroke(struct NVGcontext* ctx) | |||
else | |||
nvg__expandStrokeAndFill(ctx, NVG_STROKE|NVG_CAPS, strokeWidth*0.5f); | |||
ctx->params.renderStroke(ctx->params.userPtr, &state->stroke, &state->scissor, 1.0f, | |||
ctx->params.renderStroke(ctx->params.userPtr, &state->stroke, &state->scissor, | |||
strokeWidth, ctx->cache->paths, ctx->cache->npaths); | |||
// Count triangles | |||
@@ -1615,6 +1615,7 @@ static float nvg__getFontScale(struct NVGstate* state) | |||
float nvgText(struct NVGcontext* ctx, float x, float y, const char* string, const char* end) | |||
{ | |||
struct NVGstate* state = nvg__getState(ctx); | |||
struct NVGpaint paint; | |||
struct FONStextIter iter; | |||
struct FONSquad q; | |||
struct NVGvertex* verts; | |||
@@ -1672,7 +1673,9 @@ float nvgText(struct NVGcontext* ctx, float x, float y, const char* string, cons | |||
} | |||
// Render triangles. | |||
ctx->params.renderTriangles(ctx->params.userPtr, &state->fill, &state->scissor, ctx->fontImage, verts, nverts); | |||
paint = state->fill; | |||
paint.image = ctx->fontImage; | |||
ctx->params.renderTriangles(ctx->params.userPtr, &paint, &state->scissor, verts, nverts); | |||
ctx->drawCallCount++; | |||
ctx->textTriCount += nverts/3; | |||
@@ -415,9 +415,9 @@ struct NVGparams { | |||
int (*renderGetTextureSize)(void* uptr, int image, int* w, int* h); | |||
void (*renderViewport)(void* uptr, int width, int height); | |||
void (*renderFlush)(void* uptr); | |||
void (*renderFill)(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, float aasize, const float* bounds, const struct NVGpath* paths, int npaths); | |||
void (*renderStroke)(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, float aasize, float strokeWidth, const struct NVGpath* paths, int npaths); | |||
void (*renderTriangles)(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, int image, const struct NVGvertex* verts, int nverts); | |||
void (*renderFill)(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, const float* bounds, const struct NVGpath* paths, int npaths); | |||
void (*renderStroke)(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, float strokeWidth, const struct NVGpath* paths, int npaths); | |||
void (*renderTriangles)(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, const struct NVGvertex* verts, int nverts); | |||
void (*renderDelete)(void* uptr); | |||
}; | |||
@@ -560,8 +560,7 @@ static void glnvg__xformToMat3x3(float* m3, float* t) | |||
m3[8] = 1.0f; | |||
} | |||
static int glnvg__setupPaint(struct GLNVGcontext* gl, struct NVGpaint* paint, struct NVGscissor* scissor, | |||
float width, float aasize) | |||
static int glnvg__setupPaint(struct GLNVGcontext* gl, struct NVGpaint* paint, struct NVGscissor* scissor, float width) | |||
{ | |||
float innerCol[4]; | |||
float outerCol[4]; | |||
@@ -601,7 +600,7 @@ static int glnvg__setupPaint(struct GLNVGcontext* gl, struct NVGpaint* paint, st | |||
glUniform2f(gl->shader.loc[GLNVG_LOC_SCISSORSCALE], scissorsx, scissorsy); | |||
glUniformMatrix3fv(gl->shader.loc[GLNVG_LOC_PAINTMAT], 1, GL_FALSE, paintMat); | |||
glUniform2f(gl->shader.loc[GLNVG_LOC_EXTENT], paint->extent[0], paint->extent[1]); | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_STROKEMULT], width*0.5f + aasize*0.5f); | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_STROKEMULT], width*0.5f + 0.5f); | |||
glUniform1i(gl->shader.loc[GLNVG_LOC_TEX], 0); | |||
glUniform1i(gl->shader.loc[GLNVG_LOC_TEXTYPE], tex->type == NVG_TEXTURE_RGBA ? 0 : 1); | |||
glnvg__checkError("tex paint loc"); | |||
@@ -620,7 +619,7 @@ static int glnvg__setupPaint(struct GLNVGcontext* gl, struct NVGpaint* paint, st | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_FEATHER], paint->feather); | |||
glUniform4fv(gl->shader.loc[GLNVG_LOC_INNERCOL], 1, innerCol); | |||
glUniform4fv(gl->shader.loc[GLNVG_LOC_OUTERCOL], 1, outerCol); | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_STROKEMULT], width*0.5f + aasize*0.5f); | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_STROKEMULT], width*0.5f + 0.5f); | |||
glnvg__checkError("grad paint loc"); | |||
} | |||
return 1; | |||
@@ -666,7 +665,7 @@ static void glnvg__uploadPaths(const struct NVGpath* paths, int npaths) | |||
} | |||
} | |||
static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, float aasize, | |||
static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, | |||
const float* bounds, const struct NVGpath* paths, int npaths) | |||
{ | |||
struct GLNVGcontext* gl = (struct GLNVGcontext*)uptr; | |||
@@ -687,7 +686,7 @@ static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscis | |||
glEnableVertexAttribArray(0); | |||
glEnableVertexAttribArray(1); | |||
glnvg__setupPaint(gl, paint, scissor, 1.0001f, aasize); | |||
glnvg__setupPaint(gl, paint, scissor, 1.0001f); | |||
glDisable(GL_CULL_FACE); | |||
n = 0; | |||
@@ -758,7 +757,7 @@ static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscis | |||
glEnable(GL_BLEND); | |||
glEnableVertexAttribArray(1); | |||
glnvg__setupPaint(gl, paint, scissor, 1.0001f, aasize); | |||
glnvg__setupPaint(gl, paint, scissor, 1.0001f); | |||
if (gl->edgeAntiAlias) { | |||
glStencilFunc(GL_EQUAL, 0x00, 0xff); | |||
@@ -799,7 +798,7 @@ static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscis | |||
} | |||
} | |||
static void glnvg__renderStroke(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, float aasize, | |||
static void glnvg__renderStroke(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, | |||
float width, const struct NVGpath* paths, int npaths) | |||
{ | |||
struct GLNVGcontext* gl = (struct GLNVGcontext*)uptr; | |||
@@ -809,7 +808,7 @@ static void glnvg__renderStroke(void* uptr, struct NVGpaint* paint, struct NVGsc | |||
if (gl->shader.prog == 0) | |||
return; | |||
glnvg__setupPaint(gl, paint, scissor, width, aasize); | |||
glnvg__setupPaint(gl, paint, scissor, width); | |||
glEnable(GL_CULL_FACE); | |||
@@ -838,11 +837,11 @@ static void glnvg__renderStroke(void* uptr, struct NVGpaint* paint, struct NVGsc | |||
glUseProgram(0); | |||
} | |||
static void glnvg__renderTriangles(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, int image, | |||
static void glnvg__renderTriangles(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, | |||
const struct NVGvertex* verts, int nverts) | |||
{ | |||
struct GLNVGcontext* gl = (struct GLNVGcontext*)uptr; | |||
struct GLNVGtexture* tex = glnvg__findTexture(gl, image); | |||
struct GLNVGtexture* tex = glnvg__findTexture(gl, paint->image); | |||
float color[4]; | |||
NVG_NOTUSED(scissor); | |||
@@ -566,8 +566,7 @@ static void glnvg__xformToMat3x3(float* m3, float* t) | |||
m3[8] = 1.0f; | |||
} | |||
static int glnvg__setupPaint(struct GLNVGcontext* gl, struct NVGpaint* paint, struct NVGscissor* scissor, | |||
float width, float aasize) | |||
static int glnvg__setupPaint(struct GLNVGcontext* gl, struct NVGpaint* paint, struct NVGscissor* scissor, float width) | |||
{ | |||
float innerCol[4]; | |||
float outerCol[4]; | |||
@@ -607,7 +606,7 @@ static int glnvg__setupPaint(struct GLNVGcontext* gl, struct NVGpaint* paint, st | |||
glUniform2f(gl->shader.loc[GLNVG_LOC_SCISSORSCALE], scissorsx, scissorsy); | |||
glUniformMatrix3fv(gl->shader.loc[GLNVG_LOC_PAINTMAT], 1, GL_FALSE, paintMat); | |||
glUniform2f(gl->shader.loc[GLNVG_LOC_EXTENT], paint->extent[0], paint->extent[1]); | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_STROKEMULT], width*0.5f + aasize*0.5f); | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_STROKEMULT], width*0.5f + 0.5f); | |||
glUniform1i(gl->shader.loc[GLNVG_LOC_TEX], 0); | |||
glUniform1i(gl->shader.loc[GLNVG_LOC_TEXTYPE], tex->type == NVG_TEXTURE_RGBA ? 0 : 1); | |||
glnvg__checkError("tex paint loc"); | |||
@@ -626,7 +625,7 @@ static int glnvg__setupPaint(struct GLNVGcontext* gl, struct NVGpaint* paint, st | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_FEATHER], paint->feather); | |||
glUniform4fv(gl->shader.loc[GLNVG_LOC_INNERCOL], 1, innerCol); | |||
glUniform4fv(gl->shader.loc[GLNVG_LOC_OUTERCOL], 1, outerCol); | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_STROKEMULT], width*0.5f + aasize*0.5f); | |||
glUniform1f(gl->shader.loc[GLNVG_LOC_STROKEMULT], width*0.5f + 0.5f); | |||
glnvg__checkError("grad paint loc"); | |||
} | |||
return 1; | |||
@@ -672,7 +671,7 @@ static void glnvg__uploadPaths(const struct NVGpath* paths, int npaths) | |||
} | |||
} | |||
static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, float aasize, | |||
static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, | |||
const float* bounds, const struct NVGpath* paths, int npaths) | |||
{ | |||
struct GLNVGcontext* gl = (struct GLNVGcontext*)uptr; | |||
@@ -694,7 +693,7 @@ static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscis | |||
glEnableVertexAttribArray(0); | |||
glEnableVertexAttribArray(1); | |||
glnvg__setupPaint(gl, paint, scissor, 1.0001f, aasize); | |||
glnvg__setupPaint(gl, paint, scissor, 1.0001f); | |||
glDisable(GL_CULL_FACE); | |||
n = 0; | |||
@@ -766,7 +765,7 @@ static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscis | |||
glEnable(GL_BLEND); | |||
glEnableVertexAttribArray(1); | |||
glnvg__setupPaint(gl, paint, scissor, 1.0001f, aasize); | |||
glnvg__setupPaint(gl, paint, scissor, 1.0001f); | |||
if (gl->edgeAntiAlias) { | |||
glStencilFunc(GL_EQUAL, 0x00, 0xff); | |||
@@ -807,7 +806,7 @@ static void glnvg__renderFill(void* uptr, struct NVGpaint* paint, struct NVGscis | |||
} | |||
} | |||
static void glnvg__renderStroke(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, float aasize, | |||
static void glnvg__renderStroke(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, | |||
float width, const struct NVGpath* paths, int npaths) | |||
{ | |||
struct GLNVGcontext* gl = (struct GLNVGcontext*)uptr; | |||
@@ -817,7 +816,7 @@ static void glnvg__renderStroke(void* uptr, struct NVGpaint* paint, struct NVGsc | |||
if (gl->shader.prog == 0) | |||
return; | |||
glnvg__setupPaint(gl, paint, scissor, width, aasize); | |||
glnvg__setupPaint(gl, paint, scissor, width); | |||
glEnable(GL_CULL_FACE); | |||
@@ -847,11 +846,11 @@ static void glnvg__renderStroke(void* uptr, struct NVGpaint* paint, struct NVGsc | |||
glUseProgram(0); | |||
} | |||
static void glnvg__renderTriangles(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, int image, | |||
static void glnvg__renderTriangles(void* uptr, struct NVGpaint* paint, struct NVGscissor* scissor, | |||
const struct NVGvertex* verts, int nverts) | |||
{ | |||
struct GLNVGcontext* gl = (struct GLNVGcontext*)uptr; | |||
struct GLNVGtexture* tex = glnvg__findTexture(gl, image); | |||
struct GLNVGtexture* tex = glnvg__findTexture(gl, paint->image); | |||
float color[4]; | |||
NVG_NOTUSED(scissor); | |||