Blame winpr/libwinpr/clipboard/test/TestClipboardFormats.c

Packit 1fb8d4
Packit 1fb8d4
#include <winpr/crt.h>
Packit 1fb8d4
#include <winpr/print.h>
Packit 1fb8d4
#include <winpr/clipboard.h>
Packit 1fb8d4
Packit 1fb8d4
int TestClipboardFormats(int argc, char* argv[])
Packit 1fb8d4
{
Packit 1fb8d4
	UINT32 index;
Packit 1fb8d4
	UINT32 count;
Packit 1fb8d4
	UINT32* pFormatIds;
Packit 1fb8d4
	const char* formatName;
Packit 1fb8d4
	wClipboard* clipboard;
Packit 1fb8d4
	UINT32 utf8StringFormatId;
Packit 1fb8d4
Packit 1fb8d4
	clipboard = ClipboardCreate();
Packit 1fb8d4
	if (!clipboard)
Packit 1fb8d4
		return -1;
Packit 1fb8d4
Packit 1fb8d4
	ClipboardRegisterFormat(clipboard, "text/html");
Packit 1fb8d4
	ClipboardRegisterFormat(clipboard, "image/bmp");
Packit 1fb8d4
	ClipboardRegisterFormat(clipboard, "image/png");
Packit 1fb8d4
Packit 1fb8d4
	utf8StringFormatId = ClipboardRegisterFormat(clipboard, "UTF8_STRING");
Packit 1fb8d4
	pFormatIds = NULL;
Packit 1fb8d4
	count = ClipboardGetRegisteredFormatIds(clipboard, &pFormatIds);
Packit 1fb8d4
Packit 1fb8d4
	for (index = 0; index < count; index++)
Packit 1fb8d4
	{
Packit 1fb8d4
		UINT32 formatId = pFormatIds[index];
Packit 1fb8d4
		formatName = ClipboardGetFormatName(clipboard, formatId);
Packit Service 5a9772
		fprintf(stderr, "Format: 0x%08" PRIX32 " %s\n", formatId, formatName);
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	free(pFormatIds);
Packit 1fb8d4
Packit 1fb8d4
	if (1)
Packit 1fb8d4
	{
Packit 1fb8d4
		BOOL bSuccess;
Packit 1fb8d4
		UINT32 SrcSize;
Packit 1fb8d4
		UINT32 DstSize;
Packit 1fb8d4
		const char* pSrcData = "this is a test string";
Packit 1fb8d4
		char* pDstData;
Packit 1fb8d4
Packit 1fb8d4
		if (!pSrcData)
Packit 1fb8d4
		{
Packit 1fb8d4
			fprintf(stderr, "Memory allocation failed\n");
Packit 1fb8d4
			return -1;
Packit 1fb8d4
		}
Packit 1fb8d4
Packit Service 5a9772
		SrcSize = (UINT32)(strnlen(pSrcData, UINT32_MAX - 1) + 1);
Packit Service 5a9772
		bSuccess = ClipboardSetData(clipboard, utf8StringFormatId, pSrcData, SrcSize);
Packit Service 5a9772
		fprintf(stderr, "ClipboardSetData: %" PRId32 "\n", bSuccess);
Packit 1fb8d4
		DstSize = 0;
Packit Service 5a9772
		pDstData = (char*)ClipboardGetData(clipboard, utf8StringFormatId, &DstSize);
Packit 1fb8d4
		fprintf(stderr, "ClipboardGetData: %s\n", pDstData);
Packit 1fb8d4
		free(pDstData);
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	if (1)
Packit 1fb8d4
	{
Packit 1fb8d4
		UINT32 DstSize;
Packit 1fb8d4
		char* pSrcData;
Packit 1fb8d4
		WCHAR* pDstData;
Packit 1fb8d4
		DstSize = 0;
Packit Service 5a9772
		pDstData = (WCHAR*)ClipboardGetData(clipboard, CF_UNICODETEXT, &DstSize);
Packit 1fb8d4
		pSrcData = NULL;
Packit 1fb8d4
		ConvertFromUnicode(CP_UTF8, 0, pDstData, -1, &pSrcData, 0, NULL, NULL);
Packit 1fb8d4
		fprintf(stderr, "ClipboardGetData (synthetic): %s\n", pSrcData);
Packit 1fb8d4
		free(pDstData);
Packit 1fb8d4
		free(pSrcData);
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	pFormatIds = NULL;
Packit 1fb8d4
	count = ClipboardGetFormatIds(clipboard, &pFormatIds);
Packit 1fb8d4
Packit 1fb8d4
	for (index = 0; index < count; index++)
Packit 1fb8d4
	{
Packit 1fb8d4
		UINT32 formatId = pFormatIds[index];
Packit 1fb8d4
		formatName = ClipboardGetFormatName(clipboard, formatId);
Packit Service 5a9772
		fprintf(stderr, "Format: 0x%08" PRIX32 " %s\n", formatId, formatName);
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	free(pFormatIds);
Packit 1fb8d4
	ClipboardDestroy(clipboard);
Packit 1fb8d4
	return 0;
Packit 1fb8d4
}