From a55d49b754fa157a539666d772135bdb26ae9da0 Mon Sep 17 00:00:00 2001 From: Matthew Roush Date: Wed, 5 Aug 2026 06:53:25 -0400 Subject: [PATCH] [examples] Add shapes_outlines_thickness (#6037) Add an example to demonstrate the new thickness behavior in `Draw*LinesEx()` functions. --- examples/shapes/shapes_outlines_thickness.c | 78 ++++++++++++++++++ examples/shapes/shapes_outlines_thickness.png | Bin 0 -> 17136 bytes 2 files changed, 78 insertions(+) create mode 100644 examples/shapes/shapes_outlines_thickness.c create mode 100644 examples/shapes/shapes_outlines_thickness.png diff --git a/examples/shapes/shapes_outlines_thickness.c b/examples/shapes/shapes_outlines_thickness.c new file mode 100644 index 000000000..392652d36 --- /dev/null +++ b/examples/shapes/shapes_outlines_thickness.c @@ -0,0 +1,78 @@ +/******************************************************************************************* +* +* raylib [shapes] example - outlines thickness +* +* Example complexity rating: [★☆☆☆] 1/4 +* +* Example originally created with raylib 6.1, last time updated with raylib 6.1 +* +* Example contributed by Matthew Roush (@MatthewRoush) and reviewed by Ramon Santamaria (@raysan5) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2026 Matthew Roush (@MatthewRoush) +* +********************************************************************************************/ + +#include "raylib.h" + +#define RAYGUI_IMPLEMENTATION +#include "raygui.h" // Required for GUI controls + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - outlines thickness"); + + float thick = 5.0f; + + SetTargetFPS(60); + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + // TODO: Update variables / Implement example logic at this point + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + GuiSliderBar((Rectangle){ 290, 50, 220, 24 }, "Thickness", TextFormat("%.2f", thick), &thick, -30.0f, 30.0f); + + DrawRectangle(35, 180, 220, 220, LIGHTGRAY); + DrawRectangleLinesEx((Rectangle){ 35, 180, 220, 220 }, thick, BLUE); + DrawText("DrawRectangleLinesEx()", 35, 160, 10, BLACK); + + DrawRectangleRounded((Rectangle){ 290, 180, 220, 220 }, 0.2f, 9, LIGHTGRAY); + DrawRectangleRoundedLinesEx((Rectangle){ 290, 180, 220, 220 }, 0.2f, 9, thick, BLUE); + DrawText("DrawRectangleRoundedLinesEx()", 290, 160, 10, BLACK); + + DrawCircle(655, 290, 110, LIGHTGRAY); + DrawCircleLinesEx((Vector2){ 655, 290 }, 110, thick, BLUE); + DrawText("DrawCircleLinesEx()", 545, 160, 10, BLACK); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} diff --git a/examples/shapes/shapes_outlines_thickness.png b/examples/shapes/shapes_outlines_thickness.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e9a79652da67c622cd33c482a04f5e07ea8aad GIT binary patch literal 17136 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 OFnGH9xvX