diff --git a/src/rshapes.c b/src/rshapes.c index 6fda6e182..f6c6192e6 100644 --- a/src/rshapes.c +++ b/src/rshapes.c @@ -58,7 +58,7 @@ #include // Required for: sinf(), asinf(), cosf(), acosf(), sqrtf(), fabsf() #include // Required for: FLT_EPSILON -#include // Required for: RL_FREE +#include // Required for: RL_FREE //---------------------------------------------------------------------------------- // Defines and Macros @@ -197,9 +197,9 @@ void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color) { Vector2 previous = startPos; Vector2 current = { 0 }; - - Vector2* pts = RL_MALLOC((2*BEZIER_LINE_DIVISIONS+2)*sizeof(Vector2)); - + + Vector2* pts = RL_MALLOC((2*BEZIER_LINE_DIVISIONS+2)*sizeof(Vector2)); + for (int i = 1; i <= BEZIER_LINE_DIVISIONS; i++) { // Cubic easing in-out @@ -207,27 +207,27 @@ void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color) current.y = EaseCubicInOut((float)i, startPos.y, endPos.y - startPos.y, (float)BEZIER_LINE_DIVISIONS); current.x = previous.x + (endPos.x - startPos.x)/ (float)BEZIER_LINE_DIVISIONS; - double dy = current.y-previous.y; - double dx = current.x-previous.x; - double size = 0.5*thick/sqrt(dx*dx+dy*dy); - - if (i==1) { - pts[0].x = previous.x+dy*size; - pts[0].y = previous.y-dx*size; - pts[1].x = previous.x-dy*size; - pts[1].y = previous.y+dx*size; - } - - pts[2*i+1].x = current.x-dy*size; - pts[2*i+1].y = current.y+dx*size; - pts[2*i].x = current.x+dy*size; - pts[2*i].y = current.y-dx*size; + double dy = current.y-previous.y; + double dx = current.x-previous.x; + double size = 0.5*thick/sqrt(dx*dx+dy*dy); + + f (i==1) { + pts[0].x = previous.x+dy*size; + pts[0].y = previous.y-dx*size; + pts[1].x = previous.x-dy*size; + pts[1].y = previous.y+dx*size; + } + + pts[2*i+1].x = current.x-dy*size; + pts[2*i+1].y = current.y+dx*size; + pts[2*i].x = current.x+dy*size; + pts[2*i].y = current.y-dx*size; previous = current; } - - DrawTriangleStrip(pts, 2*BEZIER_LINE_DIVISIONS+2, color); - RL_FREE(pts); + + DrawTriangleStrip(pts, 2*BEZIER_LINE_DIVISIONS+2, color); + RL_FREE(pts); } // Draw line using quadratic bezier curves with a control point @@ -239,8 +239,8 @@ void DrawLineBezierQuad(Vector2 startPos, Vector2 endPos, Vector2 controlPos, fl Vector2 current = { 0 }; float t = 0.0f; - Vector2* pts = RL_MALLOC((2*BEZIER_LINE_DIVISIONS+2)*sizeof(Vector2)); - + Vector2* pts = RL_MALLOC((2*BEZIER_LINE_DIVISIONS+2)*sizeof(Vector2)); + for (int i = 0; i <= BEZIER_LINE_DIVISIONS; i++) { t = step*i; @@ -252,27 +252,27 @@ void DrawLineBezierQuad(Vector2 startPos, Vector2 endPos, Vector2 controlPos, fl current.y = a*startPos.y + b*controlPos.y + c*endPos.y; current.x = a*startPos.x + b*controlPos.x + c*endPos.x; - double dy = current.y-previous.y; - double dx = current.x-previous.x; - double size = 0.5*thick/sqrt(dx*dx+dy*dy); - - if (i==1) { - pts[0].x = previous.x+dy*size; - pts[0].y = previous.y-dx*size; - pts[1].x = previous.x-dy*size; - pts[1].y = previous.y+dx*size; - } - - pts[2*i+1].x = current.x-dy*size; - pts[2*i+1].y = current.y+dx*size; - pts[2*i].x = current.x+dy*size; - pts[2*i].y = current.y-dx*size; + double dy = current.y-previous.y; + double dx = current.x-previous.x; + double size = 0.5*thick/sqrt(dx*dx+dy*dy); + + if (i==1) { + pts[0].x = previous.x+dy*size; + pts[0].y = previous.y-dx*size; + pts[1].x = previous.x-dy*size; + pts[1].y = previous.y+dx*size; + } + + pts[2*i+1].x = current.x-dy*size; + pts[2*i+1].y = current.y+dx*size; + pts[2*i].x = current.x+dy*size; + pts[2*i].y = current.y-dx*size; previous = current; } - DrawTriangleStrip(pts, 2*BEZIER_LINE_DIVISIONS+2, color); - RL_FREE(pts); + DrawTriangleStrip(pts, 2*BEZIER_LINE_DIVISIONS+2, color); + RL_FREE(pts); } // Draw line using cubic bezier curves with 2 control points @@ -284,7 +284,7 @@ void DrawLineBezierCubic(Vector2 startPos, Vector2 endPos, Vector2 startControlP Vector2 current = { 0 }; float t = 0.0f; - Vector2* pts = RL_MALLOC((2*BEZIER_LINE_DIVISIONS+2)*sizeof(Vector2)); + Vector2* pts = RL_MALLOC((2*BEZIER_LINE_DIVISIONS+2)*sizeof(Vector2)); for (int i = 0; i <= BEZIER_LINE_DIVISIONS; i++) { @@ -297,27 +297,27 @@ void DrawLineBezierCubic(Vector2 startPos, Vector2 endPos, Vector2 startControlP current.y = a*startPos.y + b*startControlPos.y + c*endControlPos.y + d*endPos.y; current.x = a*startPos.x + b*startControlPos.x + c*endControlPos.x + d*endPos.x; - double dy = current.y-previous.y; - double dx = current.x-previous.x; - double size = 0.5*thick/sqrt(dx*dx+dy*dy); - - if (i==1) { - pts[0].x = previous.x+dy*size; - pts[0].y = previous.y-dx*size; - pts[1].x = previous.x-dy*size; - pts[1].y = previous.y+dx*size; - } - - pts[2*i+1].x = current.x-dy*size; - pts[2*i+1].y = current.y+dx*size; - pts[2*i].x = current.x+dy*size; - pts[2*i].y = current.y-dx*size; + double dy = current.y-previous.y; + double dx = current.x-previous.x; + double size = 0.5*thick/sqrt(dx*dx+dy*dy); + + if (i==1) { + pts[0].x = previous.x+dy*size; + pts[0].y = previous.y-dx*size; + pts[1].x = previous.x-dy*size; + pts[1].y = previous.y+dx*size; + } + + pts[2*i+1].x = current.x-dy*size; + pts[2*i+1].y = current.y+dx*size; + pts[2*i].x = current.x+dy*size; + pts[2*i].y = current.y-dx*size; previous = current; } - - DrawTriangleStrip(pts, 2*BEZIER_LINE_DIVISIONS+2, color); - RL_FREE(pts); + + DrawTriangleStrip(pts, 2*BEZIER_LINE_DIVISIONS+2, color); + RL_FREE(pts); } // Draw lines sequence