X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7941ba111cac53f21eafdeeeed6b543c3a2ba610..24bcaec36746abeeb9e2023d03e3ab4289006fc3:/src/gtk/dataobj.cpp?ds=sidebyside diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp index bde950fbb6..cfbf0deb8a 100644 --- a/src/gtk/dataobj.cpp +++ b/src/gtk/dataobj.cpp @@ -152,15 +152,18 @@ wxDataObject::wxDataObject() bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, Direction dir) const { size_t nFormatCount = GetFormatCount(dir); - if ( nFormatCount == 1 ) { + if ( nFormatCount == 1 ) + { return format == GetPreferredFormat(); } - else { + else + { wxDataFormat *formats = new wxDataFormat[nFormatCount]; GetAllFormats(formats,dir); size_t n; - for ( n = 0; n < nFormatCount; n++ ) { + for ( n = 0; n < nFormatCount; n++ ) + { if ( formats[n] == format ) break; } @@ -327,40 +330,44 @@ bool wxBitmapDataObject::SetData(size_t size, const void *buf) { Clear(); + wxCHECK_MSG( wxImage::FindHandler(wxBITMAP_TYPE_PNG) != NULL, + FALSE, wxT("You must call wxImage::AddHandler(new wxPNGHandler); to be able to use clipboard with bitmaps!") ); + m_pngSize = size; m_pngData = malloc(m_pngSize); - memcpy( m_pngData, buf, m_pngSize ); + memcpy(m_pngData, buf, m_pngSize); - wxMemoryInputStream mstream( (char*) m_pngData, m_pngSize ); + wxMemoryInputStream mstream((char*) m_pngData, m_pngSize); wxImage image; - wxPNGHandler handler; - if ( !handler.LoadFile( &image, mstream ) ) + if ( !image.LoadFile( mstream, wxBITMAP_TYPE_PNG ) ) { return FALSE; } - m_bitmap = image.ConvertToBitmap(); + m_bitmap = wxBitmap(image); return m_bitmap.Ok(); } void wxBitmapDataObject::DoConvertToPng() { - if (!m_bitmap.Ok()) + if ( !m_bitmap.Ok() ) return; - wxImage image( m_bitmap ); - wxPNGHandler handler; + wxCHECK_RET( wxImage::FindHandler(wxBITMAP_TYPE_PNG) != NULL, + wxT("You must call wxImage::AddHandler(new wxPNGHandler); to be able to use clipboard with bitmaps!") ); + + wxImage image = m_bitmap.ConvertToImage(); wxCountingOutputStream count; - handler.SaveFile( &image, count ); + image.SaveFile(count, wxBITMAP_TYPE_PNG); m_pngSize = count.GetSize() + 100; // sometimes the size seems to vary ??? m_pngData = malloc(m_pngSize); - wxMemoryOutputStream mstream( (char*) m_pngData, m_pngSize ); - handler.SaveFile( &image, mstream ); + wxMemoryOutputStream mstream((char*) m_pngData, m_pngSize); + image.SaveFile(mstream, wxBITMAP_TYPE_PNG); }