diff options
author | reed <reed@google.com> | 2015-05-18 12:57:56 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-18 12:57:56 -0700 |
commit | 2ba21a08d49d82c32aeb11f2b814ef88864881a3 (patch) | |
tree | 9aca1098c40486b967047fcbfcf4145e7a027adf | |
parent | 4e1a4c9399b8bb0897218f3ec10c254d3bb97463 (diff) |
add GM to test extractAlpha
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/1142123003
-rw-r--r-- | gm/bitmapfilters.cpp | 73 |
1 files changed, 54 insertions, 19 deletions
diff --git a/gm/bitmapfilters.cpp b/gm/bitmapfilters.cpp index 8b68d3b12b..22a297df92 100644 --- a/gm/bitmapfilters.cpp +++ b/gm/bitmapfilters.cpp @@ -8,8 +8,6 @@ #include "gm.h" #include "sk_tool_utils.h" -namespace skiagm { - static void make_bm(SkBitmap* bm) { const SkColor colors[4] = { SK_ColorRED, SK_ColorGREEN, @@ -70,37 +68,31 @@ static SkScalar draw_row(SkCanvas* canvas, const SkBitmap& bm) { return x * scale / 3; } -class FilterGM : public GM { - bool fOnce; - void init() { - if (fOnce) { - return; - } - fOnce = true; +class FilterGM : public skiagm::GM { + void onOnceBeforeDraw() override { make_bm(&fBM8); fBM8.copyTo(&fBM4444, kARGB_4444_SkColorType); fBM8.copyTo(&fBM16, kRGB_565_SkColorType); fBM8.copyTo(&fBM32, kN32_SkColorType); } + public: SkBitmap fBM8, fBM4444, fBM16, fBM32; - FilterGM() : fOnce(false) { + FilterGM() { this->setBGColor(0xFFDDDDDD); } protected: - virtual SkString onShortName() { + SkString onShortName() override { return SkString("bitmapfilters"); } - virtual SkISize onISize() { + SkISize onISize() override { return SkISize::Make(540, 330); } - virtual void onDraw(SkCanvas* canvas) { - this->init(); - + void onDraw(SkCanvas* canvas) override { SkScalar x = SkIntToScalar(10); SkScalar y = SkIntToScalar(10); @@ -115,12 +107,55 @@ protected: } private: - typedef GM INHERITED; + typedef skiagm::GM INHERITED; }; +DEF_GM( return new FilterGM; ) ////////////////////////////////////////////////////////////////////////////// -static GM* MyFactory(void*) { return new FilterGM; } -static GMRegistry reg(MyFactory); +class TestExtractAlphaGM : public skiagm::GM { + void onOnceBeforeDraw() override { + // Make a bitmap with per-pixels alpha (stroked circle) + fBitmap.allocN32Pixels(100, 100); + SkCanvas canvas(fBitmap); + canvas.clear(0); + + SkPaint paint; + paint.setAntiAlias(true); + paint.setColor(SK_ColorBLUE); + paint.setStyle(SkPaint::kStroke_Style); + paint.setStrokeWidth(20); + + canvas.drawCircle(50, 50, 39, paint); + canvas.flush(); + + fBitmap.extractAlpha(&fAlpha); + } + +public: + SkBitmap fBitmap, fAlpha; + +protected: + SkString onShortName() override { + return SkString("extractalpha"); + } + + SkISize onISize() override { + return SkISize::Make(540, 330); + } + + void onDraw(SkCanvas* canvas) override { + SkPaint paint; + paint.setAntiAlias(true); + paint.setFilterQuality(kLow_SkFilterQuality); + paint.setColor(SK_ColorRED); + + canvas->drawBitmap(fBitmap, 10, 10, &paint); // should stay blue (ignore paint's color) + canvas->drawBitmap(fAlpha, 120, 10, &paint); // should draw red + } + +private: + typedef skiagm::GM INHERITED; +}; +DEF_GM( return new TestExtractAlphaGM; ) -} |