Chromium Code Reviews| Index: gm/bitmapimage.cpp |
| diff --git a/gm/bitmapimage.cpp b/gm/bitmapimage.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..814642a7699d56e07587b4faf4bad6235a71d125 |
| --- /dev/null |
| +++ b/gm/bitmapimage.cpp |
| @@ -0,0 +1,73 @@ |
| +/* |
| + * Copyright 2016 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#include "gm.h" |
| +#include "Resources.h" |
| + |
| +namespace skiagm { |
| + |
| +class BitmapImageGM : public GM { |
| +public: |
| + BitmapImageGM() {} |
| + |
| +protected: |
| + |
| + SkString onShortName() override { |
| + return SkString("bitmap-image-srgb-linear"); |
| + } |
| + |
| + SkISize onISize() override { |
| + return SkISize::Make(2*kSize, 2*kSize); |
| + } |
| + |
| + void onDraw(SkCanvas* canvas) override { |
| + // Create image. |
| + sk_sp<SkImage> image = GetResourceAsImage("mandrill_512_q075.jpg"); |
| + if (!image) { |
| + SkDebugf("Failure: Is the resource path set properly?"); |
| + return; |
| + } |
| + |
| + // Create matching bitmap. |
| + SkBitmap bitmap; |
| + SkAssertResult(image->asLegacyBitmap(&bitmap, SkImage::kRO_LegacyBitmapMode)); |
| + |
| + // The GM will be displayed in a 2x2 grid. |
| + // The top two squares show an sRGB image, then bitmap, drawn to a linear canvas. |
| + SkImageInfo linearInfo = SkImageInfo::MakeN32(2*kSize, kSize, kOpaque_SkAlphaType); |
| + SkBitmap linearBMCanvas; |
| + linearBMCanvas.allocPixels(linearInfo); |
| + SkCanvas linearCanvas(linearBMCanvas); |
| + linearCanvas.drawImage(image, 0.0f, 0.0f, nullptr); |
| + linearCanvas.translate(kSize, 0.0f); |
| + linearCanvas.drawBitmap(bitmap, 0.0f, 0.0f, nullptr); |
| + canvas->drawBitmap(linearBMCanvas, 0.0f, 0.0f, nullptr); |
| + canvas->translate(0.0f, kSize); |
| + |
| + // The top two squares show an sRGB image, then bitmap, drawn to a srgb canvas. |
|
liyuqian
2016/06/13 17:39:02
The "bottom" two squares...?
msarett
2016/06/13 17:40:31
Aaah thanks. Done.
|
| + SkImageInfo srgbInfo = SkImageInfo::MakeS32(2*kSize, kSize, kOpaque_SkAlphaType); |
| + SkBitmap srgbBMCanvas; |
| + srgbBMCanvas.allocPixels(srgbInfo); |
| + SkCanvas srgbCanvas(srgbBMCanvas); |
| + srgbCanvas.drawImage(image, 0.0f, 0.0f, nullptr); |
| + srgbCanvas.translate(kSize, 0.0f); |
| + srgbCanvas.drawBitmap(bitmap, 0.0f, 0.0f, nullptr); |
| + canvas->drawBitmap(srgbBMCanvas, 0.0f, 0.0f, nullptr); |
| + } |
| + |
| +private: |
| + static constexpr int kSize = 512; |
| + |
| + typedef GM INHERITED; |
| +}; |
| + |
| +////////////////////////////////////////////////////////////////////////////// |
| + |
| +static GM* MyFactory(void*) { return new BitmapImageGM; } |
| +static GMRegistry reg(MyFactory); |
| + |
| +} |