#ifndef __Clipboard__H
#define __Clipboard__H

#include <stdbool.h>
#include "WimpLib:Coords.h"
#include "WimpLib:XFer.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef void (*Clipboard_FreeContents)(void* pContents);
typedef void* (*Clipboard_FillContents)(void* pHandlerData);

typedef struct
{
	Clipboard_FillContents m_pFillContents;
	Clipboard_FreeContents m_pFreeContents;
	XFer_SetSaveType       m_pSetFileType;
	XFer_SendProc          m_pTransferContents;
	bool                   m_bAsFileOnly;
} ClipboardHandler;

void Clipboard_UpdateUI(void);
void Clipboard_Claim(const ClipboardHandler* pHandler, void* pHandlerData);
void Clipboard_Clear(void);
void Clipboard_Release(void);
int Clipboard_Paste(HWind w, int handle, int x, int y, const file_type* file_types);
bool Clipboard_AllowPaste(const file_type* file_types, bool send);
void Clipboard_ClaimCaret(void);
void Clipboard_ClaimSelection(void);

#ifdef __cplusplus
}
#endif

#endif
