| Index: src/image/SkImage.cpp
|
| diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp
|
| index f427755d470dc4be61f436895e780c5b2fc542e9..995106eb78aaaa818edaec4eb457e90100ed2143 100644
|
| --- a/src/image/SkImage.cpp
|
| +++ b/src/image/SkImage.cpp
|
| @@ -178,4 +178,35 @@ SkImage* SkImage_Base::onNewImage(int newWidth, int newHeight, const SkIRect* su
|
| return surface->newImageSnapshot();
|
| }
|
|
|
| +inline static bool read_image_as_n32_bitmap(const SkImage* image, SkBitmap* bitmap) {
|
| + SkBitmap tmp;
|
| + if (!as_IB(image)->getROPixels(&tmp)) {
|
| + return false;
|
| + }
|
| + if (tmp.colorType() != kN32_SkColorType) {
|
| + return false;
|
| + }
|
| +
|
| + tmp.lockPixels();
|
| + bitmap->swap(tmp);
|
| + return true;
|
| +}
|
| +
|
| +SkAutoAdoptImageAsN32Bitmap::SkAutoAdoptImageAsN32Bitmap(SkAutoTUnref<const SkImage>& image,
|
| + SkBitmap* bitmap)
|
| + : fBitmap(NULL) {
|
| + if (read_image_as_n32_bitmap(image, bitmap)) {
|
| + fBitmap = bitmap;
|
| + image.reset(NULL);
|
| + }
|
| +}
|
| +
|
| +SkAutoImageAsN32Bitmap::SkAutoImageAsN32Bitmap(const SkImage* image, SkBitmap* bitmap)
|
| + : fBitmap(NULL) {
|
| + if (read_image_as_n32_bitmap(image, bitmap)) {
|
| + fBitmap = bitmap;
|
| + }
|
| +}
|
| +
|
| +
|
|
|
|
|