diff --git a/src/raylib.h b/src/raylib.h index 17045d7f3..24bbe1523 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1155,7 +1155,7 @@ RLAPI void SetShapesTexture(Texture2D texture, Rectangle source); // Set t // Basic shapes drawing functions RLAPI void DrawPixel(int posX, int posY, Color color); // Draw a pixel RLAPI void DrawPixelV(Vector2 position, Color color); // Draw a pixel (Vector version) -RLAPI void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw a line +RLAPI void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color, float thick); // Draw a line RLAPI void DrawLineV(Vector2 startPos, Vector2 endPos, Color color); // Draw a line (Vector version) RLAPI void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line defining thickness RLAPI void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line using cubic-bezier curves in-out diff --git a/src/rshapes.c b/src/rshapes.c index 79631d622..80114f1d0 100644 --- a/src/rshapes.c +++ b/src/rshapes.c @@ -122,13 +122,24 @@ void DrawPixelV(Vector2 position, Color color) } // Draw a line -void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color) +void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color, float thick) { - rlBegin(RL_LINES); - rlColor4ub(color.r, color.g, color.b, color.a); - rlVertex2i(startPosX, startPosY); - rlVertex2i(endPosX, endPosY); - rlEnd(); + Vector2 delta = { endPosX - startPosX, endPosY - startPosY }; + float length = sqrtf(delta.x*delta.x + delta.y*delta.y); + + if ((length > 0) && (thick > 0)) + { + float scale = thick/(2*length); + Vector2 radius = { -scale*delta.y, scale*delta.x }; + Vector2 strip[4] = { + { startPosX - radius.x, startPosY - radius.y }, + { startPosX + radius.x, startPosY + radius.y }, + { endPosX - radius.x, endPosY - radius.y }, + { endPosX + radius.x, endPosY + radius.y } + }; + + DrawTriangleStrip(strip, 4, color); + } } // Draw a line (Vector version) @@ -139,6 +150,7 @@ void DrawLineV(Vector2 startPos, Vector2 endPos, Color color) rlVertex2f(startPos.x, startPos.y); rlVertex2f(endPos.x, endPos.y); rlEnd(); + } // Draw a line defining thickness