From 0b4815b8fe861f8fbeac35f46f7e1ff78891b7b5 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 9 Nov 2025 13:43:08 +0100 Subject: [PATCH] WARNING: REMOVED: GIT recording option, added example --- examples/README.md | 2 +- examples/core/core_screen_recording.c | 118 ++++++++++++++++++++-- examples/core/core_screen_recording.png | Bin 17323 -> 17353 bytes {src/external => examples/core}/msf_gif.h | 0 examples/examples_list.txt | 2 +- src/config.h | 2 - src/raylib.h | 1 - src/rcore.c | 102 +------------------ tools/rexm/examples_report.md | 2 +- tools/rexm/examples_report_issues.md | 1 - 10 files changed, 112 insertions(+), 118 deletions(-) rename {src/external => examples/core}/msf_gif.h (100%) diff --git a/examples/README.md b/examples/README.md index f1f6c80b3..9a208f599 100644 --- a/examples/README.md +++ b/examples/README.md @@ -68,7 +68,7 @@ Examples using raylib[core](../src/rcore.c) platform functionality like window c | [core_input_actions](core/core_input_actions.c) | core_input_actions | ⭐⭐☆☆ | 5.5 | 5.6 | [Jett](https://github.com/JettMonstersGoBoom) | | [core_directory_files](core/core_directory_files.c) | core_directory_files | ⭐☆☆☆ | 5.5 | 5.6 | [Hugo ARNAL](https://github.com/hugoarnal) | | [core_highdpi_testbed](core/core_highdpi_testbed.c) | core_highdpi_testbed | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | -| [core_screen_recording](core/core_screen_recording.c) | core_screen_recording | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | +| [core_screen_recording](core/core_screen_recording.c) | core_screen_recording | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | | [core_clipboard_text](core/core_clipboard_text.c) | core_clipboard_text | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [Robin](https://github.com/RobinsAviary) | | [core_text_file_loading](core/core_text_file_loading.c) | core_text_file_loading | ⭐☆☆☆ | 5.5 | 5.6 | [Aanjishnu Bhattacharyya](https://github.com/NimComPoo-04) | | [core_compute_hash](core/core_compute_hash.c) | core_compute_hash | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | diff --git a/examples/core/core_screen_recording.c b/examples/core/core_screen_recording.c index 43c90eec5..633ddcf81 100644 --- a/examples/core/core_screen_recording.c +++ b/examples/core/core_screen_recording.c @@ -2,12 +2,10 @@ * * raylib [core] example - screen recording * -* Example complexity rating: [★☆☆☆] 1/4 +* Example complexity rating: [★★☆☆] 2/4 * * Example originally created with raylib 5.6-dev, last time updated with raylib 5.6-dev * -* Example contributed by Ramon Santamaria (@raysan5) 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 * @@ -17,6 +15,16 @@ #include "raylib.h" +// Using msf_gif library to record frames into GIF +#define MSF_GIF_IMPL +#include "msf_gif.h" // GIF recording functionality + +#include // Required for: sinf() + +#define GIF_RECORD_FRAMERATE 5 // Record framerate, we get a frame every N frames + +#define MAX_SINEWAVE_POINTS 256 + //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ @@ -29,7 +37,20 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [core] example - screen recording"); - // TODO: Load resources / Initialize variables at this point + bool gifRecording = false; // GIF recording state + unsigned int gifFrameCounter = 0; // GIF frames counter + MsfGifState gifState = { 0 }; // MSGIF context state + + Vector2 circlePosition = { 0.0f, screenHeight/2.0f }; + float timeCounter = 0.0f; + + // Get sine wave points for line drawing + Vector2 sinePoints[MAX_SINEWAVE_POINTS] = { 0 }; + for (int i = 0; i < MAX_SINEWAVE_POINTS; i++) + { + sinePoints[i].x = i*GetScreenWidth()/180.0f; + sinePoints[i].y = screenHeight/2.0f + 150*sinf((2*PI/1.5f)*(1.0f/60.0f)*(float)i); // Calculate for 60 fps + } SetTargetFPS(60); //-------------------------------------------------------------------------------------- @@ -39,7 +60,59 @@ int main(void) { // Update //---------------------------------------------------------------------------------- - // TODO: Update variables / Implement example logic at this point + // Update circle sinusoidal movement + timeCounter += GetFrameTime(); + circlePosition.x += GetScreenWidth()/180.0f; + circlePosition.y = screenHeight/2.0f + 150*sinf((2*PI/1.5f)*timeCounter); + if (circlePosition.x > screenWidth) + { + circlePosition.x = 0.0f; + circlePosition.y = screenHeight/2.0f; + timeCounter = 0.0f; + } + + // Start-Stop GIF recording on CTRL+R + if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_R)) + { + if (gifRecording) + { + // Stop current recording and save file + gifRecording = false; + MsfGifResult result = msf_gif_end(&gifState); + SaveFileData(TextFormat("%s/screenrecording.gif", GetApplicationDirectory()), result.data, (unsigned int)result.dataSize); + msf_gif_free(result); + + TraceLog(LOG_INFO, "Finish animated GIF recording"); + } + else + { + // Start a new recording + gifRecording = true; + gifFrameCounter = 0; + msf_gif_begin(&gifState, GetRenderWidth(), GetRenderHeight()); + + TraceLog(LOG_INFO, "Start animated GIF recording"); + } + } + + if (gifRecording) + { + gifFrameCounter++; + + // NOTE: We record one gif frame depending on the desired gif framerate + if (gifFrameCounter > GIF_RECORD_FRAMERATE) + { + // Get image data for the current frame (from backbuffer) + // WARNING: This process is quite slow, it can generate stuttering + Image imScreen = LoadImageFromScreen(); + + // Add the frame to the gif recording, providing and "estimated" time for display in centiseconds + msf_gif_frame(&gifState, imScreen.data, (int)((1.0f/60.0f)*GIF_RECORD_FRAMERATE)/10, 16, imScreen.width*4); + gifFrameCounter = 0; + + UnloadImage(imScreen); // Free image data + } + } //---------------------------------------------------------------------------------- // Draw @@ -48,20 +121,43 @@ int main(void) ClearBackground(RAYWHITE); - // TODO: Draw everything that requires to be drawn at this point + for (int i = 0; i < (MAX_SINEWAVE_POINTS - 1); i++) + { + DrawLineV(sinePoints[i], sinePoints[i + 1], MAROON); + DrawCircleV(sinePoints[i], 3, MAROON); + } - DrawLineEx((Vector2){ 0, 0 }, (Vector2){ screenWidth, screenHeight }, 2.0f, RED); - DrawLineEx((Vector2){ 0, screenHeight }, (Vector2){ screenWidth, 0 }, 2.0f, RED); - DrawText("example base code template", 260, 400, 20, LIGHTGRAY); + DrawCircleV(circlePosition, 30, RED); + DrawFPS(10, 10); + + /* + // Draw record indicator + // WARNING: If drawn here, it will appear in the recorded image, + // use a render texture instead for the recording and LoadImageFromTexture(rt.texture) + if (gifRecording) + { + // Display the recording indicator every half-second + if ((int)(GetTime()/0.5)%2 == 1) + { + DrawCircle(30, GetScreenHeight() - 20, 10, MAROON); + DrawText("GIF RECORDING", 50, GetScreenHeight() - 25, 10, RED); + } + } + */ EndDrawing(); //---------------------------------------------------------------------------------- } // De-Initialization //-------------------------------------------------------------------------------------- - - // TODO: Unload all loaded resources at this point + // If still recording a GIF on close window, just finish + if (gifRecording) + { + MsfGifResult result = msf_gif_end(&gifState); + msf_gif_free(result); + gifRecording = false; + } CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- diff --git a/examples/core/core_screen_recording.png b/examples/core/core_screen_recording.png index da99bbb0d97118eef3ca41c16b62182acced63f9..9b14af24d5f8472e403671d78ac8c629f3612bc2 100644 GIT binary patch literal 17353 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 CaB8Rk literal 17323 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 1000/GIF_RECORD_FRAMERATE) - { - // Get image data for the current frame (from backbuffer) - // NOTE: This process is quite slow... :( - Vector2 scale = GetWindowScaleDPI(); - unsigned char *screenData = rlReadScreenPixels((int)((float)CORE.Window.render.width*scale.x), (int)((float)CORE.Window.render.height*scale.y)); - - #ifndef GIF_RECORD_BITRATE - #define GIF_RECORD_BITRATE 16 - #endif - - // Add the frame to the gif recording, given how many frames have passed in centiseconds - msf_gif_frame(&gifState, screenData, gifFrameCounter/10, GIF_RECORD_BITRATE, (int)((float)CORE.Window.render.width*scale.x)*4); - gifFrameCounter -= 1000/GIF_RECORD_FRAMERATE; - - RL_FREE(screenData); // Free image data - } - - #if defined(SUPPORT_MODULE_RSHAPES) && defined(SUPPORT_MODULE_RTEXT) - // Display the recording indicator every half-second - if ((int)(GetTime()/0.5)%2 == 1) - { - DrawCircle(30, CORE.Window.screen.height - 20, 10, MAROON); // WARNING: Module required: rshapes - DrawText("GIF RECORDING", 50, CORE.Window.screen.height - 25, 10, RED); // WARNING: Module required: rtext - } - #endif - - rlDrawRenderBatchActive(); // Update and draw internal render batch - } -#endif - #if defined(SUPPORT_AUTOMATION_EVENTS) if (automationEventRecording) RecordAutomationEvent(); // Event recording #endif @@ -1002,38 +934,8 @@ void EndDrawing(void) #if defined(SUPPORT_SCREEN_CAPTURE) if (IsKeyPressed(KEY_F12)) { -#if defined(SUPPORT_GIF_RECORDING) - if (IsKeyDown(KEY_LEFT_CONTROL)) - { - if (gifRecording) - { - gifRecording = false; - - MsfGifResult result = msf_gif_end(&gifState); - - SaveFileData(TextFormat("%s/screenrec%03i.gif", CORE.Storage.basePath, screenshotCounter), result.data, (unsigned int)result.dataSize); - msf_gif_free(result); - - TRACELOG(LOG_INFO, "SYSTEM: Finish animated GIF recording"); - } - else - { - gifRecording = true; - gifFrameCounter = 0; - - Vector2 scale = GetWindowScaleDPI(); - msf_gif_begin(&gifState, (int)((float)CORE.Window.render.width*scale.x), (int)((float)CORE.Window.render.height*scale.y)); - screenshotCounter++; - - TRACELOG(LOG_INFO, "SYSTEM: Start animated GIF recording: %s", TextFormat("screenrec%03i.gif", screenshotCounter)); - } - } - else -#endif // SUPPORT_GIF_RECORDING - { - TakeScreenshot(TextFormat("screenshot%03i.png", screenshotCounter)); - screenshotCounter++; - } + TakeScreenshot(TextFormat("screenshot%03i.png", screenshotCounter)); + screenshotCounter++; } #endif // SUPPORT_SCREEN_CAPTURE diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 24977e38e..e3d64137b 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -63,7 +63,7 @@ Example elements validated: | core_input_actions | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_directory_files | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_highdpi_testbed | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_screen_recording | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_screen_recording | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_clipboard_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_text_file_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_compute_hash | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/examples_report_issues.md b/tools/rexm/examples_report_issues.md index 8d24a251d..081170806 100644 --- a/tools/rexm/examples_report_issues.md +++ b/tools/rexm/examples_report_issues.md @@ -21,7 +21,6 @@ Example elements validated: | **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]| |:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:| | core_highdpi_testbed | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_screen_recording | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | rlgl_standalone | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | rlgl_compute_shader | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | easings_testbed | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |