Index: tests/SurfaceTest.cpp |
diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp |
index d78498f6b9142e01f7608327bb6ce7f36d742f55..1b57b778f6d1d2631e2f8ea1824609973b32c073 100644 |
--- a/tests/SurfaceTest.cpp |
+++ b/tests/SurfaceTest.cpp |
@@ -407,6 +407,33 @@ static void test_image_readpixels(skiatest::Reporter* reporter, SkImage* image, |
REPORTER_ASSERT(reporter, has_pixels(&pixels[1], w*h - 1, notExpected)); |
} |
+static void test_legacy_bitmap(skiatest::Reporter* reporter, const SkImage* image) { |
+ const SkImage::LegacyBitmapMode modes[] = { |
+ SkImage::kRO_LegacyBitmapMode, |
+ SkImage::kRW_LegacyBitmapMode, |
+ }; |
+ for (size_t i = 0; i < SK_ARRAY_COUNT(modes); ++i) { |
+ SkBitmap bitmap; |
+ REPORTER_ASSERT(reporter, image->asLegacyBitmap(&bitmap, modes[i])); |
+ |
+ REPORTER_ASSERT(reporter, image->width() == bitmap.width()); |
+ REPORTER_ASSERT(reporter, image->height() == bitmap.height()); |
+ REPORTER_ASSERT(reporter, image->isOpaque() == bitmap.isOpaque()); |
+ |
+ bitmap.lockPixels(); |
+ REPORTER_ASSERT(reporter, bitmap.getPixels()); |
+ |
+ const SkImageInfo info = SkImageInfo::MakeN32(1, 1, bitmap.alphaType()); |
+ SkPMColor imageColor; |
+ REPORTER_ASSERT(reporter, image->readPixels(info, &imageColor, sizeof(SkPMColor), 0, 0)); |
+ REPORTER_ASSERT(reporter, imageColor == *bitmap.getAddr32(0, 0)); |
+ |
+ if (SkImage::kRO_LegacyBitmapMode == modes[i]) { |
+ REPORTER_ASSERT(reporter, bitmap.isImmutable()); |
+ } |
+ } |
+} |
+ |
static void test_imagepeek(skiatest::Reporter* reporter, GrContextFactory* factory) { |
static const struct { |
ImageType fType; |
@@ -450,6 +477,8 @@ static void test_imagepeek(skiatest::Reporter* reporter, GrContextFactory* facto |
REPORTER_ASSERT(reporter, NULL == releaseCtx.fData); // we ignored the context |
} |
+ test_legacy_bitmap(reporter, image); |
+ |
const void* addr = image->peekPixels(&info, &rowBytes); |
bool success = SkToBool(addr); |
REPORTER_ASSERT(reporter, gRec[i].fPeekShouldSucceed == success); |