87 [[nodiscard]]
bool init(CliprdrClientContext* clip);
88 [[nodiscard]]
bool uninit(CliprdrClientContext* clip);
90 [[nodiscard]]
bool handleEvent(
const SDL_ClipboardEvent& ev);
93 [[nodiscard]] UINT SendClientCapabilities();
94 void clearServerFormats();
95 [[nodiscard]] UINT SendFormatListResponse(BOOL status);
96 [[nodiscard]] UINT SendDataResponse(
const BYTE* data,
size_t size);
97 [[nodiscard]] UINT SendDataRequest(uint32_t formatID,
const std::string& mime);
99 [[nodiscard]] std::string getServerFormat(uint32_t
id);
100 [[nodiscard]] uint32_t serverIdForMime(
const std::string& mime);
102 [[nodiscard]]
bool contains(
const char** mime_types, Sint32 count);
104 [[nodiscard]]
static UINT MonitorReady(CliprdrClientContext* context,
107 [[nodiscard]]
static UINT ReceiveServerCapabilities(CliprdrClientContext* context,
109 [[nodiscard]]
static UINT ReceiveServerFormatList(CliprdrClientContext* context,
111 [[nodiscard]]
static UINT
112 ReceiveFormatListResponse(CliprdrClientContext* context,
114 [[nodiscard]]
static std::shared_ptr<BYTE> ReceiveFormatDataRequestHandle(
116 [[nodiscard]]
static UINT
117 ReceiveFormatDataRequest(CliprdrClientContext* context,
119 [[nodiscard]]
static UINT
120 ReceiveFormatDataResponse(CliprdrClientContext* context,
123 [[nodiscard]]
static const void* SDLCALL ClipDataCb(
void* userdata,
const char* mime_type,
125 static void SDLCALL ClipCleanCb(
void* userdata);
127 [[nodiscard]]
static bool mime_is_file(
const std::string& mime);
128 [[nodiscard]]
static bool mime_is_text(
const std::string& mime);
129 [[nodiscard]]
static bool mime_is_image(
const std::string& mime);
130 [[nodiscard]]
static bool mime_is_bmp(
const std::string& mime);
131 [[nodiscard]]
static bool mime_is_html(
const std::string& mime);
134 CliprdrFileContext* _file =
nullptr;
135 CliprdrClientContext* _ctx =
nullptr;
136 wLog* _log =
nullptr;
137 wClipboard* _system =
nullptr;
138 std::atomic<bool> _sync =
false;
139 HANDLE _event =
nullptr;
140 Uint64 _last_timestamp = 0;
142 std::vector<CliprdrFormat> _serverFormats;
145 std::queue<ClipRequest> _request_queue;
149 cache_entry(
size_t len, std::shared_ptr<void> p) : size(len), ptr(std::move(p))
154 std::shared_ptr<void> ptr;
156 std::map<std::string, cache_entry> _cache_data;
157 std::vector<const char*> _current_mimetypes;
159 std::string _mime_uuid;