summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRay <[email protected]>2023-10-23 18:32:24 +0200
committerRay <[email protected]>2023-10-23 18:32:24 +0200
commit3ff60269174d0f264c152875be4d1808b7fe0195 (patch)
tree7b004157cee3d9d9964e722ed22c424b595d8ac2 /src
parentdaf227a185808d1e37e4269cf4a5be6b690226f6 (diff)
downloadraylib-3ff60269174d0f264c152875be4d1808b7fe0195.tar.gz
raylib-3ff60269174d0f264c152875be4d1808b7fe0195.zip
REVIEWED: Move screen capture logic to `rcore.c`, available for all platforms
Diffstat (limited to 'src')
-rw-r--r--src/platforms/rcore_desktop.c55
-rw-r--r--src/platforms/rcore_web.c59
-rw-r--r--src/rcore.c40
3 files changed, 39 insertions, 115 deletions
diff --git a/src/platforms/rcore_desktop.c b/src/platforms/rcore_desktop.c
index 9e653dd0..b7def6e6 100644
--- a/src/platforms/rcore_desktop.c
+++ b/src/platforms/rcore_desktop.c
@@ -1658,61 +1658,6 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i
// Check the exit key to set close window
if ((key == CORE.Input.Keyboard.exitKey) && (action == GLFW_PRESS)) glfwSetWindowShouldClose(platform.handle, GLFW_TRUE);
-
-#if defined(SUPPORT_SCREEN_CAPTURE)
- if ((key == GLFW_KEY_F12) && (action == GLFW_PRESS))
- {
-#if defined(SUPPORT_GIF_RECORDING)
- if (mods & GLFW_MOD_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++;
- }
- }
-#endif // SUPPORT_SCREEN_CAPTURE
-
-#if defined(SUPPORT_EVENTS_AUTOMATION)
- if ((key == GLFW_KEY_F11) && (action == GLFW_PRESS))
- {
- eventsRecording = !eventsRecording;
-
- // On finish recording, we export events into a file
- if (!eventsRecording) ExportAutomationEvents("eventsrec.rep");
- }
- else if ((key == GLFW_KEY_F9) && (action == GLFW_PRESS))
- {
- LoadAutomationEvents("eventsrec.rep");
- eventsPlaying = true;
-
- TRACELOG(LOG_WARNING, "eventsPlaying enabled!");
- }
-#endif
}
// GLFW3 Char Key Callback, runs on key down (gets equivalent unicode char value)
diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c
index e918e7d3..7943e18f 100644
--- a/src/platforms/rcore_web.c
+++ b/src/platforms/rcore_web.c
@@ -1044,65 +1044,6 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i
// Check the exit key to set close window
if ((key == CORE.Input.Keyboard.exitKey) && (action == GLFW_PRESS)) glfwSetWindowShouldClose(platform.handle, GLFW_TRUE);
-
-#if defined(SUPPORT_SCREEN_CAPTURE)
- if ((key == GLFW_KEY_F12) && (action == GLFW_PRESS))
- {
-#if defined(SUPPORT_GIF_RECORDING)
- if (mods & GLFW_MOD_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);
-
- // Download file from MEMFS (emscripten memory filesystem)
- // saveFileFromMEMFSToDisk() function is defined in raylib/templates/web_shel/shell.html
- emscripten_run_script(TextFormat("saveFileFromMEMFSToDisk('%s','%s')", TextFormat("screenrec%03i.gif", screenshotCounter - 1), TextFormat("screenrec%03i.gif", screenshotCounter - 1)));
-
- 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++;
- }
- }
-#endif // SUPPORT_SCREEN_CAPTURE
-
-#if defined(SUPPORT_EVENTS_AUTOMATION)
- if ((key == GLFW_KEY_F11) && (action == GLFW_PRESS))
- {
- eventsRecording = !eventsRecording;
-
- // On finish recording, we export events into a file
- if (!eventsRecording) ExportAutomationEvents("eventsrec.rep");
- }
- else if ((key == GLFW_KEY_F9) && (action == GLFW_PRESS))
- {
- LoadAutomationEvents("eventsrec.rep");
- eventsPlaying = true;
-
- TRACELOG(LOG_WARNING, "eventsPlaying enabled!");
- }
-#endif
}
// GLFW3 Char Key Callback, runs on key down (gets equivalent unicode char value)
diff --git a/src/rcore.c b/src/rcore.c
index 9bd47983..0cd3f440 100644
--- a/src/rcore.c
+++ b/src/rcore.c
@@ -739,6 +739,44 @@ void EndDrawing(void)
PollInputEvents(); // Poll user events (before next frame update)
#endif
+#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++;
+ }
+ }
+#endif // SUPPORT_SCREEN_CAPTURE
+
#if defined(SUPPORT_EVENTS_AUTOMATION)
// Events recording and playing logic
if (eventsRecording) RecordAutomationEvent(CORE.Time.frameCounter);
@@ -748,7 +786,7 @@ void EndDrawing(void)
if (CORE.Time.frameCounter >= eventCount) eventsPlaying = false;
PlayAutomationEvent(CORE.Time.frameCounter);
}
-#endif
+#endif // SUPPORT_EVENTS_AUTOMATION
CORE.Time.frameCounter++;
}