Implement Copy to Clipboard for images

This commit is contained in:
Matthew Griffin
2019-06-24 16:30:29 +01:00
parent 1bb4404527
commit a4e0c2cc34
3 changed files with 61 additions and 2 deletions
+47 -1
View File
@@ -12,6 +12,9 @@
#pragma hdrstop
#endif
#include <QPixmap>
#include <QBuffer>
#include "wx/dataobj.h"
#include "wx/scopedarray.h"
@@ -153,11 +156,54 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format,
//############################################################################
wxBitmapDataObject::wxBitmapDataObject()
: m_imageBytes(new QByteArray())
{
}
wxBitmapDataObject::wxBitmapDataObject( const wxBitmap &WXUNUSED(bitmap) )
wxBitmapDataObject::wxBitmapDataObject( const wxBitmap &bitmap )
: wxBitmapDataObjectBase( bitmap ),
m_imageBytes(new QByteArray())
{
DoConvertToPng();
}
wxBitmapDataObject::~wxBitmapDataObject()
{
}
void wxBitmapDataObject::SetBitmap(const wxBitmap &bitmap)
{
wxBitmapDataObjectBase::SetBitmap(bitmap);
DoConvertToPng();
}
size_t wxBitmapDataObject::GetDataSize() const
{
return m_imageBytes->size();
}
bool wxBitmapDataObject::GetDataHere(void *buf) const
{
memcpy(buf, m_imageBytes->constData(), GetDataSize());
return true;
}
bool wxBitmapDataObject::SetData(const wxDataFormat &WXUNUSED(format), size_t len, const void *buf)
{
m_imageBytes->resize(len);
memcpy(m_imageBytes->data(), buf, len);
QPixmap pix;
pix.loadFromData(*m_imageBytes);
m_bitmap = wxBitmap(pix);
return true;
}
void wxBitmapDataObject::DoConvertToPng()
{
QBuffer buffer(m_imageBytes.get());
buffer.open(QIODevice::WriteOnly);
m_bitmap.GetHandle()->save(&buffer, "PNG");
}
//#############################################################################