| Index: gm/all_bitmap_configs.cpp
|
| diff --git a/gm/all_bitmap_configs.cpp b/gm/all_bitmap_configs.cpp
|
| index bc296fcbe434c74765a854b975115c5f2d278efd..7ea17466d928ec42bf64a520c250bcc0d18c3fc1 100644
|
| --- a/gm/all_bitmap_configs.cpp
|
| +++ b/gm/all_bitmap_configs.cpp
|
| @@ -191,7 +191,6 @@ DEF_SIMPLE_GM(all_bitmap_configs, canvas, SCALE, 6 * SCALE) {
|
| draw(canvas, p, bitmapG8, kGray_8_SkColorType, "Gray 8");
|
| }
|
|
|
| -// Works on Ganesh, fails on Raster.
|
| sk_sp<SkImage> make_not_native32_color_wheel() {
|
| SkBitmap n32bitmap, notN32bitmap;
|
| n32bitmap.allocN32Pixels(SCALE, SCALE);
|
| @@ -216,3 +215,70 @@ DEF_SIMPLE_GM(not_native32_bitmap_config, canvas, SCALE, SCALE) {
|
| sk_tool_utils::draw_checkerboard(canvas, SK_ColorLTGRAY, SK_ColorWHITE, 8);
|
| canvas->drawImage(notN32image.get(), 0.0f, 0.0f);
|
| }
|
| +
|
| +static uint32_t make_pixel(int x, int y, SkAlphaType alphaType) {
|
| + SkASSERT(x >= 0 && x < SCALE);
|
| + SkASSERT(y >= 0 && y < SCALE);
|
| +
|
| + SkScalar R = SCALE / 2.0f;
|
| +
|
| + uint32_t alpha = 0x00;
|
| +
|
| + if ((x - R) * (x - R) + (y - R) * (y - R) < R * R) {
|
| + alpha = 0xFF;
|
| + }
|
| +
|
| + uint32_t component;
|
| + switch (alphaType) {
|
| + case kPremul_SkAlphaType:
|
| + component = alpha;
|
| + break;
|
| + case kUnpremul_SkAlphaType:
|
| + component = 0xFF;
|
| + break;
|
| + default:
|
| + SkFAIL("Should not get here - invalid alpha type");
|
| + return 0xFF000000;
|
| + }
|
| + return alpha << 24 | component;
|
| +}
|
| +
|
| +static void make_color_test_bitmap_variant(
|
| + SkColorType colorType,
|
| + SkAlphaType alphaType,
|
| + SkColorProfileType profile,
|
| + SkBitmap* bm)
|
| +{
|
| + SkASSERT(colorType == kRGBA_8888_SkColorType || colorType == kBGRA_8888_SkColorType);
|
| + SkASSERT(alphaType == kPremul_SkAlphaType || alphaType == kUnpremul_SkAlphaType);
|
| + bm->allocPixels(
|
| + SkImageInfo::Make(SCALE, SCALE, colorType, alphaType, profile));
|
| + SkPixmap pm;
|
| + bm->peekPixels(&pm);
|
| + for (int y = 0; y < bm->height(); y++) {
|
| + for (int x = 0; x < bm->width(); x++) {
|
| + *pm.writable_addr32(x, y) = make_pixel(x, y, alphaType);
|
| + }
|
| + }
|
| +}
|
| +
|
| +DEF_SIMPLE_GM(all_variants_8888, canvas, 4 * SCALE + 30, 2 * SCALE + 10) {
|
| + sk_tool_utils::draw_checkerboard(canvas, SK_ColorLTGRAY, SK_ColorWHITE, 8);
|
| +
|
| + for (auto profile : {kSRGB_SkColorProfileType, kLinear_SkColorProfileType}) {
|
| + canvas->save();
|
| + for (auto alphaType : {kPremul_SkAlphaType, kUnpremul_SkAlphaType}) {
|
| + canvas->save();
|
| + for (auto colorType : {kRGBA_8888_SkColorType, kBGRA_8888_SkColorType}) {
|
| + SkBitmap bm;
|
| + make_color_test_bitmap_variant(colorType, alphaType, profile, &bm);
|
| + canvas->drawBitmap(bm, 0.0f, 0.0f);
|
| + canvas->translate(SCALE + 10, 0.0f);
|
| + }
|
| + canvas->restore();
|
| + canvas->translate(0.0f, SCALE + 10);
|
| + }
|
| + canvas->restore();
|
| + canvas->translate(2 * (SCALE + 10), 0.0f);
|
| + }
|
| +}
|
|
|