3#include <winpr/print.h>
4#include <winpr/image.h>
5#include <winpr/clipboard.h>
7int TestClipboardFormats(
int argc,
char* argv[])
11 UINT32* pFormatIds = NULL;
12 const char* formatName = NULL;
13 wClipboard* clipboard = NULL;
14 UINT32 utf8StringFormatId = 0;
19 clipboard = ClipboardCreate();
23 const char* mime_types[] = {
"text/html",
"text/html",
"image/bmp",
24 "image/png",
"image/webp",
"image/jpeg" };
25 for (
size_t x = 0; x < ARRAYSIZE(mime_types); x++)
27 const char* mime = mime_types[x];
28 UINT32
id = ClipboardRegisterFormat(clipboard, mime);
29 (void)fprintf(stderr,
"ClipboardRegisterFormat(%s) -> 0x%08" PRIx32
"\n", mime,
id);
34 utf8StringFormatId = ClipboardRegisterFormat(clipboard,
"UTF8_STRING");
36 count = ClipboardGetRegisteredFormatIds(clipboard, &pFormatIds);
38 for (UINT32 index = 0; index < count; index++)
40 UINT32 formatId = pFormatIds[index];
41 formatName = ClipboardGetFormatName(clipboard, formatId);
42 (void)fprintf(stderr,
"Format: 0x%08" PRIX32
" %s\n", formatId, formatName);
52 const char pSrcData[] =
"this is a test string";
53 char* pDstData = NULL;
55 SrcSize = (UINT32)(strnlen(pSrcData, ARRAYSIZE(pSrcData)) + 1);
56 bSuccess = ClipboardSetData(clipboard, utf8StringFormatId, pSrcData, SrcSize);
57 (void)fprintf(stderr,
"ClipboardSetData: %" PRId32
"\n", bSuccess);
59 pDstData = (
char*)ClipboardGetData(clipboard, utf8StringFormatId, &DstSize);
60 (void)fprintf(stderr,
"ClipboardGetData: %s\n", pDstData);
67 char* pSrcData = NULL;
68 WCHAR* pDstData = NULL;
70 pDstData = (WCHAR*)ClipboardGetData(clipboard, CF_UNICODETEXT, &DstSize);
71 pSrcData = ConvertWCharNToUtf8Alloc(pDstData, DstSize /
sizeof(WCHAR), NULL);
73 (void)fprintf(stderr,
"ClipboardGetData (synthetic): %s\n", pSrcData);
79 count = ClipboardGetFormatIds(clipboard, &pFormatIds);
81 for (UINT32 index = 0; index < count; index++)
83 UINT32 formatId = pFormatIds[index];
84 formatName = ClipboardGetFormatName(clipboard, formatId);
85 (void)fprintf(stderr,
"Format: 0x%08" PRIX32
" %s\n", formatId, formatName);
90 const char* name = TEST_CLIP_BMP;
91 BOOL bSuccess = FALSE;
92 UINT32 idBmp = ClipboardRegisterFormat(clipboard,
"image/bmp");
94 wImage* img = winpr_image_new();
98 if (winpr_image_read(img, name) <= 0)
100 winpr_image_free(img, TRUE);
105 void* data = winpr_image_write_buffer(img, WINPR_IMAGE_BITMAP, &bmpsize);
106 bSuccess = ClipboardSetData(clipboard, idBmp, data, bmpsize);
107 (void)fprintf(stderr,
"ClipboardSetData: %" PRId32
"\n", bSuccess);
110 winpr_image_free(img, TRUE);
118 void* pDstData = ClipboardGetData(clipboard,
id, &DstSize);
119 (void)fprintf(stderr,
"ClipboardGetData: [CF_DIB] %p [%" PRIu32
"]\n", pDstData,
123 bSuccess = ClipboardSetData(clipboard,
id, pDstData, DstSize);
129 const uint32_t
id = ClipboardGetFormatId(clipboard,
"HTML Format");
131 void* pDstData = ClipboardGetData(clipboard,
id, &DstSize);
135 FILE* fp = fopen(
"test.html",
"w");
138 (void)fwrite(pDstData, 1, DstSize, fp);
145 UINT32
id = ClipboardRegisterFormat(clipboard,
"image/bmp");
148 void* pDstData = ClipboardGetData(clipboard,
id, &DstSize);
149 (void)fprintf(stderr,
"ClipboardGetData: [image/bmp] %p [%" PRIu32
"]\n", pDstData,
154 if (DstSize != bmpsize)
158#if defined(WINPR_UTILS_IMAGE_PNG)
160 UINT32
id = ClipboardRegisterFormat(clipboard,
"image/png");
163 void* pDstData = ClipboardGetData(clipboard,
id, &DstSize);
164 (void)fprintf(stderr,
"ClipboardGetData: [image/png] %p\n", pDstData);
170 const char* name = TEST_CLIP_PNG;
171 BOOL bSuccess = FALSE;
172 UINT32 idBmp = ClipboardRegisterFormat(clipboard,
"image/png");
174 wImage* img = winpr_image_new();
178 if (winpr_image_read(img, name) <= 0)
180 winpr_image_free(img, TRUE);
185 void* data = winpr_image_write_buffer(img, WINPR_IMAGE_PNG, &bmpsize);
186 bSuccess = ClipboardSetData(clipboard, idBmp, data, bmpsize);
187 (void)fprintf(stderr,
"ClipboardSetData: %" PRId32
"\n", bSuccess);
190 winpr_image_free(img, TRUE);
198 void* pDstData = ClipboardGetData(clipboard,
id, &DstSize);
199 (void)fprintf(stderr,
"ClipboardGetData: [CF_DIB] %p [%" PRIu32
"]\n", pDstData,
203 bSuccess = ClipboardSetData(clipboard,
id, pDstData, DstSize);
210#if defined(WINPR_UTILS_IMAGE_WEBP)
212 UINT32
id = ClipboardRegisterFormat(clipboard,
"image/webp");
215 void* pDstData = ClipboardGetData(clipboard,
id, &DstSize);
216 (void)fprintf(stderr,
"ClipboardGetData: [image/webp] %p\n", pDstData);
223#if defined(WINPR_UTILS_IMAGE_JPEG)
225 UINT32
id = ClipboardRegisterFormat(clipboard,
"image/jpeg");
228 void* pDstData = ClipboardGetData(clipboard,
id, &DstSize);
229 (void)fprintf(stderr,
"ClipboardGetData: [image/jpeg] %p\n", pDstData);
241 ClipboardDestroy(clipboard);