summaryrefslogtreecommitdiffstats
path: root/winpr/libwinpr/clipboard/test/TestClipboardFormats.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 01:24:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 01:24:41 +0000
commita9bcc81f821d7c66f623779fa5147e728eb3c388 (patch)
tree98676963bcdd537ae5908a067a8eb110b93486a6 /winpr/libwinpr/clipboard/test/TestClipboardFormats.c
parentInitial commit. (diff)
downloadfreerdp3-a9bcc81f821d7c66f623779fa5147e728eb3c388.tar.xz
freerdp3-a9bcc81f821d7c66f623779fa5147e728eb3c388.zip
Adding upstream version 3.3.0+dfsg1.upstream/3.3.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'winpr/libwinpr/clipboard/test/TestClipboardFormats.c')
-rw-r--r--winpr/libwinpr/clipboard/test/TestClipboardFormats.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/winpr/libwinpr/clipboard/test/TestClipboardFormats.c b/winpr/libwinpr/clipboard/test/TestClipboardFormats.c
new file mode 100644
index 0000000..615f8a0
--- /dev/null
+++ b/winpr/libwinpr/clipboard/test/TestClipboardFormats.c
@@ -0,0 +1,82 @@
+
+#include <winpr/crt.h>
+#include <winpr/print.h>
+#include <winpr/clipboard.h>
+
+int TestClipboardFormats(int argc, char* argv[])
+{
+ UINT32 count = 0;
+ UINT32* pFormatIds = NULL;
+ const char* formatName = NULL;
+ wClipboard* clipboard = NULL;
+ UINT32 utf8StringFormatId = 0;
+
+ WINPR_UNUSED(argc);
+ WINPR_UNUSED(argv);
+
+ clipboard = ClipboardCreate();
+ if (!clipboard)
+ return -1;
+
+ ClipboardRegisterFormat(clipboard, "text/html");
+ ClipboardRegisterFormat(clipboard, "image/bmp");
+ ClipboardRegisterFormat(clipboard, "image/png");
+
+ utf8StringFormatId = ClipboardRegisterFormat(clipboard, "UTF8_STRING");
+ pFormatIds = NULL;
+ count = ClipboardGetRegisteredFormatIds(clipboard, &pFormatIds);
+
+ for (UINT32 index = 0; index < count; index++)
+ {
+ UINT32 formatId = pFormatIds[index];
+ formatName = ClipboardGetFormatName(clipboard, formatId);
+ fprintf(stderr, "Format: 0x%08" PRIX32 " %s\n", formatId, formatName);
+ }
+
+ free(pFormatIds);
+
+ if (1)
+ {
+ BOOL bSuccess = 0;
+ UINT32 SrcSize = 0;
+ UINT32 DstSize = 0;
+ const char pSrcData[] = "this is a test string";
+ char* pDstData = NULL;
+
+ SrcSize = (UINT32)(strnlen(pSrcData, ARRAYSIZE(pSrcData)) + 1);
+ bSuccess = ClipboardSetData(clipboard, utf8StringFormatId, pSrcData, SrcSize);
+ fprintf(stderr, "ClipboardSetData: %" PRId32 "\n", bSuccess);
+ DstSize = 0;
+ pDstData = (char*)ClipboardGetData(clipboard, utf8StringFormatId, &DstSize);
+ fprintf(stderr, "ClipboardGetData: %s\n", pDstData);
+ free(pDstData);
+ }
+
+ if (1)
+ {
+ UINT32 DstSize = 0;
+ char* pSrcData = NULL;
+ WCHAR* pDstData = NULL;
+ DstSize = 0;
+ pDstData = (WCHAR*)ClipboardGetData(clipboard, CF_UNICODETEXT, &DstSize);
+ pSrcData = ConvertWCharNToUtf8Alloc(pDstData, DstSize / sizeof(WCHAR), NULL);
+
+ fprintf(stderr, "ClipboardGetData (synthetic): %s\n", pSrcData);
+ free(pDstData);
+ free(pSrcData);
+ }
+
+ pFormatIds = NULL;
+ count = ClipboardGetFormatIds(clipboard, &pFormatIds);
+
+ for (UINT32 index = 0; index < count; index++)
+ {
+ UINT32 formatId = pFormatIds[index];
+ formatName = ClipboardGetFormatName(clipboard, formatId);
+ fprintf(stderr, "Format: 0x%08" PRIX32 " %s\n", formatId, formatName);
+ }
+
+ free(pFormatIds);
+ ClipboardDestroy(clipboard);
+ return 0;
+}