From 5c5b357b4a7087199ea39f8fe91cc17311f06225 Mon Sep 17 00:00:00 2001 From: Omar Ibrahim <101708426+omaribrahimsaad@users.noreply.github.com> Date: Wed, 26 Aug 2026 01:16:28 +0800 Subject: [PATCH] [rcore][win32] Implement GetClipboardImage() (#6091) --- src/platforms/rcore_desktop_win32.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_win32.c b/src/platforms/rcore_desktop_win32.c index 1e560aa56..28c133ff2 100644 --- a/src/platforms/rcore_desktop_win32.c +++ b/src/platforms/rcore_desktop_win32.c @@ -1129,12 +1129,37 @@ const char *GetClipboardText(void) return NULL; } +#if SUPPORT_CLIPBOARD_IMAGE && SUPPORT_MODULE_RTEXTURES + #define WIN32_CLIPBOARD_IMPLEMENTATION + #define WINUSER_ALREADY_INCLUDED + #define WINBASE_ALREADY_INCLUDED + #define WINGDI_ALREADY_INCLUDED + #include "../external/win32_clipboard.h" +#endif + // Get clipboard image Image GetClipboardImage(void) { Image image = { 0 }; - TRACELOG(LOG_WARNING, "GetClipboardText not implemented"); +#if SUPPORT_CLIPBOARD_IMAGE && SUPPORT_MODULE_RTEXTURES + unsigned int dataSize = 0; + void *fileData = NULL; + int width = 0; + int height = 0; + + fileData = (void *)Win32GetClipboardImageData(&width, &height, &dataSize); + + if (fileData == NULL) TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data."); + else + { + image = LoadImageFromMemory(".bmp", (const unsigned char*)fileData, (int)dataSize); + + RL_FREE(fileData); + } +#else + TRACELOG(LOG_WARNING, "Clipboard image: SUPPORT_CLIPBOARD_IMAGE requires SUPPORT_MODULE_RTEXTURES to work properly"); +#endif // SUPPORT_CLIPBOARD_IMAGE return image; }