don't use drawBitmap
Bug: skia:11216
Change-Id: I89a40e330f27f30c461f2b6012bf26c082b66094
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/359076
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index 582392e..a150057 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -52,9 +52,7 @@
void makeBitmap() {
// Draw our bitmap in N32, so legacy devices get "premul" values they understand
- fBitmap.allocN32Pixels(80, 80);
- SkCanvas canvas(fBitmap);
- canvas.clear(0x00000000);
+ auto surf = SkSurface::MakeRasterN32Premul(80, 80);
SkPaint paint;
paint.setColor(0xFFFFFFFF);
SkPoint pts[2] = { {0, 0},
@@ -63,7 +61,8 @@
paint.setShader(SkGradientShader::MakeLinear(
pts, fColors, pos, 2, SkTileMode::kClamp));
SkFont font(ToolUtils::create_portable_typeface(), 180.0f);
- canvas.drawString("e", -10.0f, 80.0f, font, paint);
+ surf->getCanvas()->drawString("e", -10.0f, 80.0f, font, paint);
+ fImage = surf->makeImageSnapshot();
}
SkISize onISize() override {
@@ -98,13 +97,13 @@
paint.setImageFilter(this->makeFilter(kernelOffset, tileMode, convolveAlpha, cropRect));
canvas->save();
canvas->translate(SkIntToScalar(x), SkIntToScalar(y));
- const SkRect layerBounds = SkRect::MakeIWH(fBitmap.width(), fBitmap.height());
+ const SkRect layerBounds = SkRect::Make(fImage->bounds());
canvas->clipRect(layerBounds);
// This GM is, in part, intended to display the wrapping behavior of the
// matrix image filter. The only (rational) way to achieve that for repeat mode
// is to create a tight layer.
canvas->saveLayer(layerBounds, &paint);
- canvas->drawBitmap(fBitmap, 0, 0, nullptr);
+ canvas->drawImage(fImage, 0, 0);
canvas->restore();
canvas->restore();
}
@@ -116,7 +115,7 @@
void onDraw(SkCanvas* canvas) override {
canvas->clear(SK_ColorBLACK);
SkIPoint kernelOffset = SkIPoint::Make(1, 0);
- SkIRect rect = fBitmap.bounds();
+ SkIRect rect = fImage->bounds();
for (int x = 10; x < 310; x += 100) {
this->draw(canvas, x, 10, kernelOffset, SkTileMode::kClamp, true, &rect);
this->draw(canvas, x, 110, kernelOffset, SkTileMode::kDecal, true, &rect);
@@ -135,7 +134,7 @@
}
private:
- SkBitmap fBitmap;
+ sk_sp<SkImage> fImage;
SkColor fColors[2];
const char* fNameSuffix;
KernelFixture fKernelFixture;