SkPDF: images support 32-but-not-N32 colortype
BUG=550559
Review URL: https://codereview.chromium.org/1407063005
diff --git a/gm/all_bitmap_configs.cpp b/gm/all_bitmap_configs.cpp
index 4cabf2e..46c5d5e 100644
--- a/gm/all_bitmap_configs.cpp
+++ b/gm/all_bitmap_configs.cpp
@@ -190,3 +190,29 @@
SkBitmap bitmapG8 = make_bitmap(kGray_8_SkColorType);
draw(canvas, p, bitmapG8, kGray_8_SkColorType, "Gray 8");
}
+
+// Works on Ganesh, fails on Raster.
+SkImage* make_not_native32_color_wheel() {
+ SkBitmap n32bitmap, notN32bitmap;
+ n32bitmap.allocN32Pixels(SCALE, SCALE);
+ n32bitmap.eraseColor(SK_ColorTRANSPARENT);
+ SkCanvas n32canvas(n32bitmap);
+ color_wheel_native(&n32canvas);
+ n32canvas.flush();
+ #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A)
+ const SkColorType ct = kRGBA_8888_SkColorType;
+ #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
+ const SkColorType ct = kBGRA_8888_SkColorType;
+ #endif
+ static_assert(ct != kN32_SkColorType, "BRGA!=RGBA");
+ SkAssertResult(n32bitmap.copyTo(¬N32bitmap, ct));
+ SkASSERT(notN32bitmap.colorType() == ct);
+ return SkImage::NewFromBitmap(notN32bitmap);
+}
+
+DEF_SIMPLE_GM(not_native32_bitmap_config, canvas, SCALE, SCALE) {
+ SkAutoTUnref<SkImage> notN32image(make_not_native32_color_wheel());
+ SkASSERT(notN32image);
+ sk_tool_utils::draw_checkerboard(canvas, SK_ColorLTGRAY, SK_ColorWHITE, 8);
+ canvas->drawImage(notN32image, 0.0f, 0.0f);
+}