diff options
Diffstat (limited to 'webkit/glue/webclipboard_impl.cc')
-rw-r--r-- | webkit/glue/webclipboard_impl.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/webkit/glue/webclipboard_impl.cc b/webkit/glue/webclipboard_impl.cc index dd96dca..e2be557 100644 --- a/webkit/glue/webclipboard_impl.cc +++ b/webkit/glue/webclipboard_impl.cc @@ -9,12 +9,18 @@ #include "base/string_util.h" #include "googleurl/src/gurl.h" #include "net/base/escape.h" +#include "third_party/skia/include/core/SkBitmap.h" #include "webkit/api/public/WebImage.h" +#include "webkit/api/public/WebSize.h" #include "webkit/api/public/WebString.h" #include "webkit/api/public/WebURL.h" #include "webkit/glue/scoped_clipboard_writer_glue.h" #include "webkit/glue/webkit_glue.h" +#if WEBKIT_USING_CG +#include "skia/ext/skia_utils_mac.h" +#endif + using WebKit::WebClipboard; using WebKit::WebImage; using WebKit::WebString; @@ -121,10 +127,15 @@ void WebClipboardImpl::writeImage( const WebImage& image, const WebURL& url, const WebString& title) { ScopedClipboardWriterGlue scw(ClipboardGetClipboard()); -#if defined(OS_WIN) || defined(OS_LINUX) - if (!image.isNull()) - scw.WriteBitmapFromPixels(image.pixels(), image.size()); + if (!image.isNull()) { +#if WEBKIT_USING_SKIA + const SkBitmap& bitmap = image.getSkBitmap(); +#elif WEBKIT_USING_CG + const SkBitmap& bitmap = gfx::CGImageToSkBitmap(image.getCGImageRef()); #endif + SkAutoLockPixels locked(bitmap); + scw.WriteBitmapFromPixels(bitmap.getPixels(), image.size()); + } if (!url.isEmpty()) { scw.WriteBookmark(title, url.spec()); |