diff --git a/src/nanosvgrast.h b/src/nanosvgrast.h index b740c316..a582810f 100644 --- a/src/nanosvgrast.h +++ b/src/nanosvgrast.h @@ -335,10 +335,11 @@ static void nsvg__flattenCubicBez(NSVGrasterizer* r, float x3, float y3, float x4, float y4, int level, int type) { + const int max_level = 10; float x12,y12,x23,y23,x34,y34,x123,y123,x234,y234,x1234,y1234; float dx,dy,d2,d3; - if (level > 10) return; + if (level > max_level) return; x12 = (x1+x2)*0.5f; y12 = (y1+y2)*0.5f; @@ -358,14 +359,16 @@ static void nsvg__flattenCubicBez(NSVGrasterizer* r, nsvg__addPathPoint(r, x4, y4, type); return; } - + ++level; + if (level > max_level) return; + x234 = (x23+x34)*0.5f; y234 = (y23+y34)*0.5f; x1234 = (x123+x234)*0.5f; y1234 = (y123+y234)*0.5f; - nsvg__flattenCubicBez(r, x1,y1, x12,y12, x123,y123, x1234,y1234, level+1, 0); - nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, level+1, type); + nsvg__flattenCubicBez(r, x1,y1, x12,y12, x123,y123, x1234,y1234, level, 0); + nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, level, type); } static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float scale)