Chromium Code Reviews| Index: Source/platform/graphics/ImageBuffer.cpp |
| diff --git a/Source/platform/graphics/ImageBuffer.cpp b/Source/platform/graphics/ImageBuffer.cpp |
| index 8b36a9d13a53166dba14682903eda09c6d99d9e4..e4cc59703a4724c673d2d0cc9fdb7a6fc93c2f99 100644 |
| --- a/Source/platform/graphics/ImageBuffer.cpp |
| +++ b/Source/platform/graphics/ImageBuffer.cpp |
| @@ -270,25 +270,17 @@ PassRefPtr<Uint8ClampedArray> getImageData(const IntRect& rect, GraphicsContext* |
| RefPtr<Uint8ClampedArray> result = Uint8ClampedArray::createUninitialized(rect.width() * rect.height() * 4); |
| - unsigned char* data = result->data(); |
| - |
| if (rect.x() < 0 |
| || rect.y() < 0 |
| || rect.maxX() > size.width() |
| || rect.maxY() > size.height()) |
| result->zeroFill(); |
| - unsigned destBytesPerRow = 4 * rect.width(); |
| - SkBitmap destBitmap; |
| - destBitmap.installPixels(SkImageInfo::MakeN32Premul(rect.width(), rect.height()), data, destBytesPerRow); |
| - |
| - SkCanvas::Config8888 config8888; |
| - if (multiplied == Premultiplied) |
| - config8888 = SkCanvas::kRGBA_Premul_Config8888; |
| - else |
| - config8888 = SkCanvas::kRGBA_Unpremul_Config8888; |
| + SkAlphaType = (multiplied == Premultiplied) ? kPremul_SkAlphaType : kUnpremul_SkAlphaType; |
|
f(malita)
2014/03/18 16:08:24
SkAlphaType alphaType = ...
reed1
2014/03/18 19:39:38
Doh!
|
| + SkImageInfo info = SkImageInfo::Make(rect.width(), rect.height(), kRGBA_8888_SkColorType, alphaType); |
| - context->readPixels(&destBitmap, rect.x(), rect.y(), config8888); |
| + if (!context->readPixels(info, result->data(), 4 * rect.width(), rect.x(), rect.y())) |
| + return nullptr; |
| return result.release(); |
| } |