summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp')
-rw-r--r--Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp b/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp
index e56f424..f36200d 100644
--- a/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp
+++ b/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp
@@ -33,6 +33,7 @@
#include "NotImplemented.h"
#include "PlatformBridge.h"
#include "PlatformGraphicsContext.h"
+#include "PlatformGraphicsContextSkia.h"
#include "SkBitmapRef.h"
#include "SkCanvas.h"
#include "SkColorPriv.h"
@@ -41,12 +42,21 @@
#include "SkImageEncoder.h"
#include "SkStream.h"
#include "SkUnPreMultiply.h"
-#include "android_graphics.h"
using namespace std;
namespace WebCore {
+SkCanvas* imageBufferCanvas(const ImageBuffer* buffer)
+{
+ // We know that our PlatformGraphicsContext is a PlatformGraphicsContextSkia
+ // because that is what we create in GraphicsContext::createOffscreenContext
+ if (!buffer || !buffer->context())
+ return 0;
+ PlatformGraphicsContext* pc = buffer->context()->platformContext();
+ return static_cast<PlatformGraphicsContextSkia*>(pc)->canvas();
+}
+
ImageBufferData::ImageBufferData(const IntSize&)
{
}
@@ -82,7 +92,7 @@ PassRefPtr<Image> ImageBuffer::copyImage() const
{
ASSERT(context());
- SkCanvas* canvas = context()->platformContext()->getCanvas();
+ SkCanvas* canvas = imageBufferCanvas(this);
if (!canvas)
return 0;
@@ -123,7 +133,7 @@ PassRefPtr<ByteArray> ImageBuffer::getUnmultipliedImageData(const IntRect& rect)
return 0;
}
- const SkBitmap& src = android_gc2canvas(gc)->getDevice()->accessBitmap(false);
+ const SkBitmap& src = imageBufferCanvas(this)->getDevice()->accessBitmap(false);
SkAutoLockPixels alp(src);
if (!src.getPixels()) {
return 0;
@@ -185,7 +195,7 @@ void ImageBuffer::putUnmultipliedImageData(ByteArray* source, const IntSize& sou
return;
}
- const SkBitmap& dst = android_gc2canvas(gc)->getDevice()->accessBitmap(true);
+ const SkBitmap& dst = imageBufferCanvas(this)->getDevice()->accessBitmap(true);
SkAutoLockPixels alp(dst);
if (!dst.getPixels()) {
return;
@@ -240,7 +250,7 @@ String ImageBuffer::toDataURL(const String&, const double*) const
{
// Encode the image into a vector.
SkDynamicMemoryWStream pngStream;
- const SkBitmap& dst = android_gc2canvas(context())->getDevice()->accessBitmap(true);
+ const SkBitmap& dst = imageBufferCanvas(this)->getDevice()->accessBitmap(true);
SkImageEncoder::EncodeStream(&pngStream, dst, SkImageEncoder::kPNG_Type, 100);
// Convert it into base64.