Title: [98969] trunk/Source/WebCore
Revision
98969
Author
r...@google.com
Date
2011-11-01 08:59:08 -0700 (Tue, 01 Nov 2011)

Log Message

[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):

Modified Paths

Diff

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>
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to