add GM to test extractAlpha

BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/1142123003
This commit is contained in:
reed 2015-05-18 12:57:56 -07:00 committed by Commit bot
parent 4e1a4c9399
commit 2ba21a08d4

View File

@ -8,8 +8,6 @@
#include "gm.h" #include "gm.h"
#include "sk_tool_utils.h" #include "sk_tool_utils.h"
namespace skiagm {
static void make_bm(SkBitmap* bm) { static void make_bm(SkBitmap* bm) {
const SkColor colors[4] = { const SkColor colors[4] = {
SK_ColorRED, SK_ColorGREEN, SK_ColorRED, SK_ColorGREEN,
@ -70,37 +68,31 @@ static SkScalar draw_row(SkCanvas* canvas, const SkBitmap& bm) {
return x * scale / 3; return x * scale / 3;
} }
class FilterGM : public GM { class FilterGM : public skiagm::GM {
bool fOnce; void onOnceBeforeDraw() override {
void init() {
if (fOnce) {
return;
}
fOnce = true;
make_bm(&fBM8); make_bm(&fBM8);
fBM8.copyTo(&fBM4444, kARGB_4444_SkColorType); fBM8.copyTo(&fBM4444, kARGB_4444_SkColorType);
fBM8.copyTo(&fBM16, kRGB_565_SkColorType); fBM8.copyTo(&fBM16, kRGB_565_SkColorType);
fBM8.copyTo(&fBM32, kN32_SkColorType); fBM8.copyTo(&fBM32, kN32_SkColorType);
} }
public: public:
SkBitmap fBM8, fBM4444, fBM16, fBM32; SkBitmap fBM8, fBM4444, fBM16, fBM32;
FilterGM() : fOnce(false) { FilterGM() {
this->setBGColor(0xFFDDDDDD); this->setBGColor(0xFFDDDDDD);
} }
protected: protected:
virtual SkString onShortName() { SkString onShortName() override {
return SkString("bitmapfilters"); return SkString("bitmapfilters");
} }
virtual SkISize onISize() { SkISize onISize() override {
return SkISize::Make(540, 330); return SkISize::Make(540, 330);
} }
virtual void onDraw(SkCanvas* canvas) { void onDraw(SkCanvas* canvas) override {
this->init();
SkScalar x = SkIntToScalar(10); SkScalar x = SkIntToScalar(10);
SkScalar y = SkIntToScalar(10); SkScalar y = SkIntToScalar(10);
@ -115,12 +107,55 @@ protected:
} }
private: private:
typedef GM INHERITED; typedef skiagm::GM INHERITED;
}; };
DEF_GM( return new FilterGM; )
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
static GM* MyFactory(void*) { return new FilterGM; } class TestExtractAlphaGM : public skiagm::GM {
static GMRegistry reg(MyFactory); 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; )
}