summaryrefslogtreecommitdiff
path: root/nanosvg
diff options
context:
space:
mode:
Diffstat (limited to 'nanosvg')
-rw-r--r--nanosvg/nanosvgrast.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/nanosvg/nanosvgrast.h b/nanosvg/nanosvgrast.h
index a83db2726..a4b866beb 100644
--- a/nanosvg/nanosvgrast.h
+++ b/nanosvg/nanosvgrast.h
@@ -346,6 +346,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,
@@ -888,10 +889,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;
@@ -1298,7 +1299,7 @@ static void nsvg__initPaint(NSVGcachedPaint* cache, NSVGpaint* paint, float opac
if (grad->nstops == 0) {
for (i = 0; i < 256; i++)
cache->colors[i] = 0;
- } if (grad->nstops == 1) {
+ } else if (grad->nstops == 1) {
for (i = 0; i < 256; i++)
cache->colors[i] = nsvg__applyOpacity(grad->stops[i].color, opacity);
} else {