add GM to test extractAlpha
BUG=skia: TBR= Review URL: https://codereview.chromium.org/1142123003
This commit is contained in:
parent
4e1a4c9399
commit
2ba21a08d4
@ -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; )
|
||||||
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user