From 3c5b3f1c1737cc20940f41ec338669d8b032abdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robin=20=E2=9D=A4=EF=B8=8F?= Date: Tue, 21 Oct 2025 04:11:19 -0400 Subject: [PATCH] [examples] Added `shapes_lines_drawing` (#5283) * Added shapes_lines_drawing Example * store result of clamp * conventions * fixed more brackets * buffer comments --- examples/shapes/shapes_lines_drawing.c | 146 +++++++++++++++++++++++ examples/shapes/shapes_lines_drawing.png | Bin 0 -> 34456 bytes 2 files changed, 146 insertions(+) create mode 100644 examples/shapes/shapes_lines_drawing.c create mode 100644 examples/shapes/shapes_lines_drawing.png diff --git a/examples/shapes/shapes_lines_drawing.c b/examples/shapes/shapes_lines_drawing.c new file mode 100644 index 000000000..9347acaf3 --- /dev/null +++ b/examples/shapes/shapes_lines_drawing.c @@ -0,0 +1,146 @@ +/******************************************************************************************* +* +* raylib [shapes] example - lines drawing +* +* Example complexity rating: [★☆☆☆] 1/4 +* +* Example originally created with raylib 5.6-dev, last time updated with raylib 5.6 +* +* Example contributed by Robin (@RobinsAviary) 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) 2025-2025 Robin (@RobinsAviary) +* +********************************************************************************************/ + +#include "raylib.h" +#include "raymath.h" + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - lines drawing"); + + // Hint text that shows before you click the screen + bool startText = true; + + // The mouse's position on the previous frame + Vector2 mousePositionPrevious = GetMousePosition(); + + // The canvas to draw lines on + RenderTexture canvas = LoadRenderTexture(screenWidth, screenHeight); + + // The background color of the canvas + const Color backgroundColor = RAYWHITE; + + // The line's thickness + float lineThickness = 8.0f; + // The lines hue (in HSV, from 0-360) + float lineHue = 0.0f; + + // Clear the canvas to the background color + BeginTextureMode(canvas); + ClearBackground(backgroundColor); + EndTextureMode(); + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + // Disable the hint text once the user clicks + if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && startText) + { + startText = false; + } + + // Clear the canvas when the user middle-clicks + if (IsMouseButtonPressed(MOUSE_BUTTON_MIDDLE)) + { + BeginTextureMode(canvas); + ClearBackground(backgroundColor); + EndTextureMode(); + } + + // Store whether the left and right buttons are down + bool leftButtonDown = IsMouseButtonDown(MOUSE_BUTTON_LEFT); + bool rightButtonDown = IsMouseButtonDown(MOUSE_BUTTON_RIGHT); + + if (leftButtonDown || rightButtonDown) + { + // The color for the line + Color drawColor; + + if (leftButtonDown) + { + // Increase the hue value by the distance our cursor has moved since the last frame (divided by 3) + lineHue += Vector2Distance(mousePositionPrevious, GetMousePosition())/3.0f; + + // While the hue is >=360, subtract it to bring it down into the range 0-360 + // This is more visually accurate than resetting to zero + while (lineHue >= 360.0f) + { + lineHue -= 360.0f; + } + + // Create the final color + drawColor = ColorFromHSV(lineHue, 1.0f, 1.0f); + } + else if (rightButtonDown) + { + // Use the background color as an "eraser" + drawColor = backgroundColor; + } + + // Draw the line onto the canvas + BeginTextureMode(canvas); + // Circles act as "caps", smoothing corners + DrawCircleV(mousePositionPrevious, lineThickness/2.0f, drawColor); + DrawCircleV(GetMousePosition(), lineThickness/2.0f, drawColor); + DrawLineEx(mousePositionPrevious, GetMousePosition(), lineThickness, drawColor); + EndTextureMode(); + } + + // Update line thickness based on mousewheel + lineThickness += GetMouseWheelMove(); + lineThickness = Clamp(lineThickness, 1.0, 500.0f); + + // Update mouse's previous position + mousePositionPrevious = GetMousePosition(); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + // Draw the render texture to the screen, flipped vertically to make it appear top-side up + DrawTextureRec(canvas.texture, (Rectangle){ 0.0f, 0.0f, (float)canvas.texture.width,(float)-canvas.texture.height }, Vector2Zero(), WHITE); + + // Draw the preview circle + if (!leftButtonDown) DrawCircleLinesV(GetMousePosition(), lineThickness/2.0f, (Color){ 127, 127, 127, 127 }); + + // Draw the hint text + if (startText) DrawText("try clicking and dragging!", 275, 215, 20, LIGHTGRAY); + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + // Unload the canvas render texture + UnloadRenderTexture(canvas); + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/shapes/shapes_lines_drawing.png b/examples/shapes/shapes_lines_drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..59ef6593439152c128657ecacb80cc91eb146e07 GIT binary patch literal 34456 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 kF$+pWf-K*!Pz?Wz1&~ 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 literal 0 HcmV?d00001