From 9f5859e6495dd88cc622546ff9ef95920d62b145 Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Wed, 25 Oct 2023 01:03:28 +0300 Subject: [PATCH] nanosvgrast.h: update from mainstream --- src/nanosvgrast.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/nanosvgrast.h b/src/nanosvgrast.h index 4740a5f3..2947b100 100644 --- a/src/nanosvgrast.h +++ b/src/nanosvgrast.h @@ -333,6 +333,7 @@ static float nsvg__normalize(float *x, float* y) } static float nsvg__absf(float x) { return x < 0 ? -x : x; } +static float nsvg__roundf(float x) { return (x >= 0) ? floorf(x + 0.5) : ceilf(x - 0.5); } static void nsvg__flattenCubicBez(NSVGrasterizer* r, float x1, float y1, float x2, float y2, @@ -879,10 +880,10 @@ static NSVGactiveEdge* nsvg__addActive(NSVGrasterizer* r, NSVGedge* e, float sta // STBTT_assert(e->y0 <= start_point); // round dx down to avoid going too far if (dxdy < 0) - z->dx = (int)(-floorf(NSVG__FIX * -dxdy)); + z->dx = (int)(-nsvg__roundf(NSVG__FIX * -dxdy)); else - z->dx = (int)floorf(NSVG__FIX * dxdy); - z->x = (int)floorf(NSVG__FIX * (e->x0 + dxdy * (startPoint - e->y0))); + z->dx = (int)nsvg__roundf(NSVG__FIX * dxdy); + z->x = (int)nsvg__roundf(NSVG__FIX * (e->x0 + dxdy * (startPoint - e->y0))); // z->x -= off_x * FIX; z->ey = e->y1; z->next = 0;