Modified: trunk/Source/WebCore/ChangeLog (98968 => 98969)
--- trunk/Source/WebCore/ChangeLog 2011-11-01 15:56:11 UTC (rev 98968)
+++ trunk/Source/WebCore/ChangeLog 2011-11-01 15:59:08 UTC (rev 98969)
@@ -1,3 +1,17 @@
+2011-11-01 Mike Reed <r...@google.com>
+
+ [skia] call readPixels on canvas instead of device (will be private on device soon) and check for error
+ https://bugs.webkit.org/show_bug.cgi?id=71284
+
+ Reviewed by Stephen White.
+
+ No new tests. This is preparing for an API change to Skia.
+
+ * platform/graphics/skia/ImageBufferSkia.cpp:
+ (WebCore::getImageData):
+ (WebCore::ImageBuffer::getUnmultipliedImageData):
+ (WebCore::ImageBuffer::getPremultipliedImageData):
+
2011-11-01 Andreas Kling <kl...@webkit.org>
CSSStyleSheet: Operate directly on the rule vector internally.
Modified: trunk/Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp (98968 => 98969)
--- trunk/Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp 2011-11-01 15:56:11 UTC (rev 98968)
+++ trunk/Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp 2011-11-01 15:59:08 UTC (rev 98969)
@@ -191,7 +191,7 @@
}
template <Multiply multiplied>
-PassRefPtr<ByteArray> getImageData(const IntRect& rect, SkDevice& srcDevice,
+PassRefPtr<ByteArray> getImageData(const IntRect& rect, SkCanvas* canvas,
const IntSize& size)
{
float area = 4.0f * rect.width() * rect.height();
@@ -200,14 +200,6 @@
RefPtr<ByteArray> result = ByteArray::create(rect.width() * rect.height() * 4);
- SkBitmap::Config srcConfig = srcDevice.accessBitmap(false).config();
-
- if (srcConfig == SkBitmap::kNo_Config) {
- // This is an empty SkBitmap that could not be configured.
- ASSERT(!size.width() || !size.height());
- return result.release();
- }
-
unsigned char* data = ""
if (rect.x() < 0
@@ -244,13 +236,11 @@
if (numRows <= 0)
return result.release();
- ASSERT(srcConfig == SkBitmap::kARGB_8888_Config);
-
- unsigned destBytesPerRow = 4 * rect.width();
-
SkBitmap srcBitmap;
- srcDevice.readPixels(SkIRect::MakeXYWH(originX, originY, numColumns, numRows), &srcBitmap);
+ if (!canvas->readPixels(SkIRect::MakeXYWH(originX, originY, numColumns, numRows), &srcBitmap))
+ return result.release();
+ unsigned destBytesPerRow = 4 * rect.width();
unsigned char* destRow = data + destY * destBytesPerRow + destX * 4;
// Do conversion of byte order and alpha divide (if necessary)
@@ -282,12 +272,12 @@
PassRefPtr<ByteArray> ImageBuffer::getUnmultipliedImageData(const IntRect& rect) const
{
- return getImageData<Unmultiplied>(rect, *context()->platformContext()->canvas()->getDevice(), m_size);
+ return getImageData<Unmultiplied>(rect, context()->platformContext()->canvas(), m_size);
}
PassRefPtr<ByteArray> ImageBuffer::getPremultipliedImageData(const IntRect& rect) const
{
- return getImageData<Premultiplied>(rect, *context()->platformContext()->canvas()->getDevice(), m_size);
+ return getImageData<Premultiplied>(rect, context()->platformContext()->canvas(), m_size);
}
template <Multiply multiplied>