mirror of
https://github.com/ZDoom/zdoom-macos-deps.git
synced 2025-02-27 21:50:55 +00:00
114 lines
3.2 KiB
C
114 lines
3.2 KiB
C
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
// Name: wx/osx/private/datatransfer.h
|
||
|
// Purpose: OS X specific data transfer implementation
|
||
|
// Author: Stefan Csomor
|
||
|
// Created: 2019-03-29
|
||
|
// Copyright: (c) 2019 Stefan Csomor <vadim@wxwidgets.org>
|
||
|
// Licence: wxWindows licence
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef _WX_OSX_PRIVATE_DATATRANSFER_H_
|
||
|
#define _WX_OSX_PRIVATE_DATATRANSFER_H_
|
||
|
|
||
|
#include "wx/osx/private.h"
|
||
|
#include "wx/osx/dataform.h"
|
||
|
|
||
|
class WXDLLIMPEXP_FWD_CORE wxDataObject;
|
||
|
|
||
|
class WXDLLIMPEXP_CORE wxOSXDataSourceItem
|
||
|
{
|
||
|
public:
|
||
|
virtual ~wxOSXDataSourceItem();
|
||
|
|
||
|
virtual wxDataFormat::NativeFormat AvailableType(CFArrayRef types) const = 0;
|
||
|
|
||
|
virtual bool GetData( const wxDataFormat& dataFormat, wxMemoryBuffer& target) = 0;
|
||
|
|
||
|
virtual bool GetData( wxDataFormat::NativeFormat type, wxMemoryBuffer& target) = 0;
|
||
|
|
||
|
virtual CFDataRef DoGetData(wxDataFormat::NativeFormat type) const = 0;
|
||
|
};
|
||
|
|
||
|
class WXDLLIMPEXP_CORE wxOSXDataSource
|
||
|
{
|
||
|
public:
|
||
|
// the number of source items
|
||
|
virtual size_t GetItemCount() const = 0;
|
||
|
|
||
|
// get source item by index, needs to be deleted after use
|
||
|
virtual const wxOSXDataSourceItem* GetItem(size_t pos) const = 0;
|
||
|
|
||
|
// returns true if there is any data in this source conforming to dataFormat
|
||
|
virtual bool IsSupported(const wxDataFormat &dataFormat);
|
||
|
|
||
|
// returns true if there is any data in this source supported by dataobj
|
||
|
virtual bool IsSupported(const wxDataObject &dataobj);
|
||
|
|
||
|
// returns true if there is any data in this source of types
|
||
|
virtual bool HasData(CFArrayRef types) const = 0;
|
||
|
|
||
|
};
|
||
|
|
||
|
class WXDLLIMPEXP_CORE wxOSXDataSinkItem
|
||
|
{
|
||
|
public:
|
||
|
virtual ~wxOSXDataSinkItem();
|
||
|
|
||
|
virtual void SetFilename(const wxString& filename);
|
||
|
|
||
|
// translating from wx into native representation
|
||
|
virtual void SetData(const wxDataFormat& format, const void *buf, size_t size) = 0;
|
||
|
|
||
|
// translating from wx into native representation
|
||
|
virtual void SetData(wxDataFormat::NativeFormat format, const void *buf, size_t size) = 0;
|
||
|
|
||
|
// native implementation for setting data
|
||
|
virtual void DoSetData(wxDataFormat::NativeFormat format, CFDataRef data) = 0;
|
||
|
};
|
||
|
|
||
|
|
||
|
class WXDLLIMPEXP_CORE wxOSXDataSink
|
||
|
{
|
||
|
public:
|
||
|
// delete all created sink items
|
||
|
virtual void Clear() = 0;
|
||
|
|
||
|
// create a new sink item
|
||
|
virtual wxOSXDataSinkItem* CreateItem() = 0;
|
||
|
|
||
|
// flush the created sink items into the system sink representation
|
||
|
virtual void Flush() = 0 ;
|
||
|
};
|
||
|
|
||
|
class WXDLLIMPEXP_CORE wxOSXPasteboard : public wxOSXDataSink, public wxOSXDataSource
|
||
|
{
|
||
|
public:
|
||
|
wxOSXPasteboard(OSXPasteboard native);
|
||
|
~wxOSXPasteboard();
|
||
|
|
||
|
// sink methods
|
||
|
|
||
|
virtual wxOSXDataSinkItem* CreateItem() wxOVERRIDE;
|
||
|
|
||
|
void Clear() wxOVERRIDE;
|
||
|
|
||
|
void Flush() wxOVERRIDE;
|
||
|
|
||
|
// source methods
|
||
|
|
||
|
virtual size_t GetItemCount() const wxOVERRIDE;
|
||
|
|
||
|
virtual const wxOSXDataSourceItem* GetItem(size_t pos) const wxOVERRIDE;
|
||
|
|
||
|
virtual bool HasData(CFArrayRef types) const wxOVERRIDE;
|
||
|
|
||
|
static wxOSXPasteboard* GetGeneralClipboard();
|
||
|
private:
|
||
|
void DeleteSinkItems();
|
||
|
|
||
|
OSXPasteboard m_pasteboard;
|
||
|
wxVector<wxOSXDataSinkItem*> m_sinkItems;
|
||
|
};
|
||
|
|
||
|
#endif
|