mirror of
https://github.com/memononen/nanovg
synced 2026-09-26 16:19:07 +03:00
Fixed text vanishing when the transform is vertically flipped
This commit is contained in:
parent
c35e80c3fe
commit
621e0b8d35
1 changed files with 14 additions and 0 deletions
14
src/nanovg.c
14
src/nanovg.c
|
|
@ -2454,6 +2454,12 @@ static void nvg__renderText(NVGcontext* ctx, NVGvertex* verts, int nverts)
|
|||
ctx->textTriCount += nverts/3;
|
||||
}
|
||||
|
||||
static int nvg__isTransformFlipped( const float *xform)
|
||||
{
|
||||
float det = xform[0] * xform[3] - xform[2] * xform[1];
|
||||
return( det < 0);
|
||||
}
|
||||
|
||||
float nvgText(NVGcontext* ctx, float x, float y, const char* string, const char* end)
|
||||
{
|
||||
NVGstate* state = nvg__getState(ctx);
|
||||
|
|
@ -2464,6 +2470,8 @@ float nvgText(NVGcontext* ctx, float x, float y, const char* string, const char*
|
|||
float invscale = 1.0f / scale;
|
||||
int cverts = 0;
|
||||
int nverts = 0;
|
||||
int isFlipped;
|
||||
float tmp;
|
||||
|
||||
if (end == NULL)
|
||||
end = string + strlen(string);
|
||||
|
|
@ -2480,6 +2488,7 @@ float nvgText(NVGcontext* ctx, float x, float y, const char* string, const char*
|
|||
verts = nvg__allocTempVerts(ctx, cverts);
|
||||
if (verts == NULL) return x;
|
||||
|
||||
isFlipped = nvg__isTransformFlipped( state->xform);
|
||||
fonsTextIterInit(ctx->fs, &iter, x*scale, y*scale, string, end, FONS_GLYPH_BITMAP_REQUIRED);
|
||||
prevIter = iter;
|
||||
while (fonsTextIterNext(ctx->fs, &iter, &q)) {
|
||||
|
|
@ -2497,6 +2506,11 @@ float nvgText(NVGcontext* ctx, float x, float y, const char* string, const char*
|
|||
break;
|
||||
}
|
||||
prevIter = iter;
|
||||
if( isFlipped)
|
||||
{
|
||||
tmp = q.y0; q.y0 = q.y1; q.y1 = tmp;
|
||||
tmp = q.t0; q.t0 = q.t1; q.t1 = tmp;
|
||||
}
|
||||
// Transform corners.
|
||||
nvgTransformPoint(&c[0],&c[1], state->xform, q.x0*invscale, q.y0*invscale);
|
||||
nvgTransformPoint(&c[2],&c[3], state->xform, q.x1*invscale, q.y0*invscale);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue