| Index: tests/SurfaceTest.cpp
|
| diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp
|
| index e8ff63cca0d3e4be30b851888b5d9e64bf7e4aa6..57ad5e0ca8340462ac2ddb9f80ca40ee97b66370 100644
|
| --- a/tests/SurfaceTest.cpp
|
| +++ b/tests/SurfaceTest.cpp
|
| @@ -390,6 +390,25 @@ static void test_image_readpixels(skiatest::Reporter* reporter, SkImage* image,
|
| REPORTER_ASSERT(reporter, has_pixels(&pixels[1], w*h - 1, notExpected));
|
| }
|
|
|
| +static void check_legacy_bitmap(skiatest::Reporter* reporter, const SkImage* image,
|
| + const SkBitmap& bitmap, SkImage::LegacyBitmapMode mode) {
|
| + REPORTER_ASSERT(reporter, image->width() == bitmap.width());
|
| + REPORTER_ASSERT(reporter, image->height() == bitmap.height());
|
| + REPORTER_ASSERT(reporter, image->isOpaque() == bitmap.isOpaque());
|
| +
|
| + if (SkImage::kRO_LegacyBitmapMode == mode) {
|
| + REPORTER_ASSERT(reporter, bitmap.isImmutable());
|
| + }
|
| +
|
| + SkAutoLockPixels alp(bitmap);
|
| + 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));
|
| +}
|
| +
|
| static void test_legacy_bitmap(skiatest::Reporter* reporter, const SkImage* image) {
|
| const SkImage::LegacyBitmapMode modes[] = {
|
| SkImage::kRO_LegacyBitmapMode,
|
| @@ -398,22 +417,18 @@ static void test_legacy_bitmap(skiatest::Reporter* reporter, const SkImage* imag
|
| 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());
|
| - }
|
| + check_legacy_bitmap(reporter, image, bitmap, modes[i]);
|
| +
|
| + // Test subsetting to exercise the rowBytes logic.
|
| + SkBitmap tmp;
|
| + REPORTER_ASSERT(reporter, bitmap.extractSubset(&tmp, SkIRect::MakeWH(image->width() / 2,
|
| + image->height() / 2)));
|
| + SkAutoTUnref<SkImage> subsetImage(SkImage::NewFromBitmap(tmp));
|
| + REPORTER_ASSERT(reporter, subsetImage);
|
| +
|
| + SkBitmap subsetBitmap;
|
| + REPORTER_ASSERT(reporter, subsetImage->asLegacyBitmap(&subsetBitmap, modes[i]));
|
| + check_legacy_bitmap(reporter, subsetImage, subsetBitmap, modes[i]);
|
| }
|
| }
|
|
|
|
|