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; }