Index: webkit/glue/image_decoder.cc |
=================================================================== |
--- webkit/glue/image_decoder.cc (revision 19827) |
+++ webkit/glue/image_decoder.cc (working copy) |
@@ -5,23 +5,18 @@ |
#include "config.h" |
#include "webkit/glue/image_decoder.h" |
-#include "base/compiler_specific.h" |
+#include "webkit/api/public/WebData.h" |
+#include "webkit/api/public/WebImage.h" |
+#include "webkit/api/public/WebSize.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
-MSVC_PUSH_WARNING_LEVEL(0); |
-#if defined(OS_WIN) || defined(OS_LINUX) |
-#include "ImageSourceSkia.h" |
-#include "NativeImageSkia.h" |
-#elif defined(OS_MACOSX) |
-#include "ImageSource.h" |
-#include "RetainPtr.h" |
+#if WEBKIT_USING_CG |
#include "skia/ext/skia_utils_mac.h" |
#endif |
-#include "IntSize.h" |
-#include "RefPtr.h" |
-#include "SharedBuffer.h" |
-MSVC_POP_WARNING(); |
+using WebKit::WebData; |
+using WebKit::WebImage; |
+ |
namespace webkit_glue { |
ImageDecoder::ImageDecoder() : desired_icon_size_(0, 0) { |
@@ -35,47 +30,13 @@ |
} |
SkBitmap ImageDecoder::Decode(const unsigned char* data, size_t size) const { |
- |
- // What's going on here? ImageDecoder is only used by ImageResourceFetcher, |
- // which is only used (but extensively) by WebViewImpl. On the Mac we're using |
- // CoreGraphics, but right now WebViewImpl uses SkBitmaps everywhere. For now, |
- // this is a convenient bottleneck to convert from CGImageRefs to SkBitmaps, |
- // but in the future we will need to replumb to get CGImageRefs (or whatever |
- // the native type is) everywhere, directly. |
- |
-#if defined(OS_WIN) || defined(OS_LINUX) |
- WebCore::ImageSourceSkia source; |
-#elif defined(OS_MACOSX) |
- WebCore::ImageSource source; |
+ const WebImage& image = WebImage::fromData( |
+ WebData(reinterpret_cast<const char*>(data), size), desired_icon_size_); |
+#if WEBKIT_USING_SKIA |
+ return image.getSkBitmap(); |
+#elif WEBKIT_USING_CG |
+ return gfx::CGImageToSkBitmap(image.getCGImageRef()); |
#endif |
- WTF::RefPtr<WebCore::SharedBuffer> buffer(WebCore::SharedBuffer::create( |
- data, static_cast<int>(size))); |
-#if defined(OS_WIN) || defined(OS_LINUX) |
- source.setData(buffer.get(), true, |
- WebCore::IntSize(desired_icon_size_.width(), |
- desired_icon_size_.height())); |
-#elif defined(OS_MACOSX) |
- source.setData(buffer.get(), true); |
-#endif |
- |
- if (!source.isSizeAvailable()) |
- return SkBitmap(); |
- |
- WebCore::NativeImagePtr frame0 = source.createFrameAtIndex(0); |
- if (!frame0) |
- return SkBitmap(); |
- |
-#if defined(OS_WIN) || defined(OS_LINUX) |
- SkBitmap retval = *reinterpret_cast<SkBitmap*>(frame0); |
- delete frame0; |
- return retval; |
-#elif defined(OS_MACOSX) |
- // TODO(port): should we delete frame0 like Linux/Windows do above? |
- // BitmapImage releases automatically, but we're bypassing it so we'll need |
- // to do the releasing. |
- RetainPtr<CGImageRef> image(AdoptCF, frame0); |
- return gfx::CGImageToSkBitmap(image.get()); |
-#endif |
} |
} // namespace webkit_glue |