Begin to hide drawBitmap
... now that bitmap
- converts to image with just bitmap.asImage()
- canvas *always* converts bitmaps to images before they are drawn
Bug: skia:10037
Change-Id: I24292f62e0fd072b3b810d974d0fe5c6d9b9a68d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/353582
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/gm/all_bitmap_configs.cpp b/gm/all_bitmap_configs.cpp
index a82887f..12563ce 100644
--- a/gm/all_bitmap_configs.cpp
+++ b/gm/all_bitmap_configs.cpp
@@ -121,7 +121,7 @@
SkColorType colorType,
const char text[]) {
SkASSERT(src.colorType() == colorType);
- canvas->drawBitmap(src, 0.0f, 0.0f);
+ canvas->drawImage(src.asImage(), 0.0f, 0.0f);
canvas->drawSimpleText(text, strlen(text), SkTextEncoding::kUTF8, 0.0f, 12.0f, font, p);
}
diff --git a/gm/androidblendmodes.cpp b/gm/androidblendmodes.cpp
index 0b7172b..8ff7a6d 100644
--- a/gm/androidblendmodes.cpp
+++ b/gm/androidblendmodes.cpp
@@ -71,9 +71,9 @@
canvas->saveLayer(nullptr, nullptr);
SkPaint p;
- canvas->drawBitmap(fCompositeDst, 0, 0, &p);
+ canvas->drawImage(fCompositeDst.asImage(), 0, 0, &p);
p.setBlendMode(mode);
- canvas->drawBitmap(fCompositeSrc, 0, 0, &p);
+ canvas->drawImage(fCompositeSrc.asImage(), 0, 0, &p);
}
void onDraw(SkCanvas* canvas) override {
diff --git a/gm/anisotropic.cpp b/gm/anisotropic.cpp
index 5699fe6..6f7dd6b 100644
--- a/gm/anisotropic.cpp
+++ b/gm/anisotropic.cpp
@@ -10,6 +10,7 @@
#include "include/core/SkCanvas.h"
#include "include/core/SkColor.h"
#include "include/core/SkFilterQuality.h"
+#include "include/core/SkImage.h"
#include "include/core/SkPaint.h"
#include "include/core/SkRect.h"
#include "include/core/SkScalar.h"
@@ -66,7 +67,7 @@
SkIntToScalar(xSize), SkIntToScalar(ySize));
SkPaint p;
p.setFilterQuality(fFilterQuality);
- canvas->drawBitmapRect(fBM, r, &p);
+ canvas->drawImageRect(fBM.asImage(), r, &p);
}
void onDraw(SkCanvas* canvas) override {
diff --git a/gm/bitmappremul.cpp b/gm/bitmappremul.cpp
index 3cd9c9a..35c9eb1 100644
--- a/gm/bitmappremul.cpp
+++ b/gm/bitmappremul.cpp
@@ -11,6 +11,7 @@
#include "include/core/SkCanvas.h"
#include "include/core/SkColor.h"
#include "include/core/SkColorPriv.h"
+#include "include/core/SkImage.h"
#include "include/core/SkImageInfo.h"
#include "include/core/SkPaint.h"
#include "include/core/SkScalar.h"
@@ -34,7 +35,7 @@
bitmap->eraseColor(SK_ColorWHITE);
}
-static SkBitmap make_argb8888_gradient() {
+static sk_sp<SkImage> make_argb8888_gradient() {
SkBitmap bitmap;
init_bitmap(kN32_SkColorType, &bitmap);
for (int y = 0; y < SLIDE_SIZE; y++) {
@@ -43,20 +44,20 @@
dst[x] = SkPackARGB32(y, y, y, y);
}
}
- return bitmap;
+ return bitmap.asImage();
}
-static SkBitmap make_argb4444_gradient() {
+static sk_sp<SkImage> make_argb4444_gradient() {
SkBitmap bitmap;
init_bitmap(kARGB_4444_SkColorType, &bitmap);
// Using draw rather than readPixels to suppress dither
SkPaint paint;
paint.setBlendMode(SkBlendMode::kSrc);
- SkCanvas{ bitmap }.drawBitmap(make_argb8888_gradient(), 0, 0, &paint);
- return bitmap;
+ SkCanvas{ bitmap }.drawImage(make_argb8888_gradient(), 0, 0, &paint);
+ return bitmap.asImage();
}
-static SkBitmap make_argb8888_stripes() {
+static sk_sp<SkImage> make_argb8888_stripes() {
SkBitmap bitmap;
init_bitmap(kN32_SkColorType, &bitmap);
uint8_t rowColor = 0;
@@ -72,17 +73,17 @@
rowColor = 0;
}
}
- return bitmap;
+ return bitmap.asImage();
}
-static SkBitmap make_argb4444_stripes() {
+static sk_sp<SkImage> make_argb4444_stripes() {
SkBitmap bitmap;
init_bitmap(kARGB_4444_SkColorType, &bitmap);
// Using draw rather than readPixels to suppress dither
SkPaint paint;
paint.setBlendMode(SkBlendMode::kSrc);
- SkCanvas{ bitmap }.drawBitmap(make_argb8888_stripes(), 0, 0, &paint);
- return bitmap;
+ SkCanvas{ bitmap }.drawImage(make_argb8888_stripes(), 0, 0, &paint);
+ return bitmap.asImage();
}
namespace skiagm {
@@ -104,10 +105,10 @@
void onDraw(SkCanvas* canvas) override {
SkScalar slideSize = SkIntToScalar(SLIDE_SIZE);
- canvas->drawBitmap(make_argb8888_gradient(), 0, 0);
- canvas->drawBitmap(make_argb4444_gradient(), slideSize, 0);
- canvas->drawBitmap(make_argb8888_stripes(), 0, slideSize);
- canvas->drawBitmap(make_argb4444_stripes(), slideSize, slideSize);
+ canvas->drawImage(make_argb8888_gradient(), 0, 0);
+ canvas->drawImage(make_argb4444_gradient(), slideSize, 0);
+ canvas->drawImage(make_argb8888_stripes(), 0, slideSize);
+ canvas->drawImage(make_argb4444_stripes(), slideSize, slideSize);
}
private:
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
index e840b81..474c8c5 100644
--- a/gm/bitmaprect.cpp
+++ b/gm/bitmaprect.cpp
@@ -16,22 +16,24 @@
#include "include/core/SkShader.h"
#include "include/core/SkSize.h"
#include "include/core/SkString.h"
+#include "include/core/SkSurface.h"
#include "include/core/SkTileMode.h"
#include "include/core/SkTypes.h"
#include "include/effects/SkGradientShader.h"
-static void make_bitmap(SkBitmap* bitmap) {
- bitmap->allocN32Pixels(64, 64);
+static sk_sp<SkImage> make_image() {
+ auto surf = SkSurface::MakeRasterN32Premul(64, 64);
+ auto canvas = surf->getCanvas();
- SkCanvas canvas(*bitmap);
-
- canvas.drawColor(SK_ColorRED);
+ canvas->drawColor(SK_ColorRED);
SkPaint paint;
paint.setAntiAlias(true);
const SkPoint pts[] = { { 0, 0 }, { 64, 64 } };
const SkColor colors[] = { SK_ColorWHITE, SK_ColorBLUE };
paint.setShader(SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkTileMode::kClamp));
- canvas.drawCircle(32, 32, 32, paint);
+ canvas->drawCircle(32, 32, 32, paint);
+
+ return surf->makeImageSnapshot();
}
class DrawBitmapRect2 : public skiagm::GM {
@@ -64,8 +66,7 @@
SkPaint paint;
paint.setStyle(SkPaint::kStroke_Style);
- SkBitmap bitmap;
- make_bitmap(&bitmap);
+ auto image = make_image();
SkRect dstR = { 0, 200, 128, 380 };
@@ -74,12 +75,12 @@
SkRect srcR;
srcR.set(src[i]);
- canvas->drawBitmap(bitmap, 0, 0, &paint);
+ canvas->drawImage(image, 0, 0, &paint);
if (!fUseIRect) {
- canvas->drawBitmapRect(bitmap, srcR, dstR, &paint,
- SkCanvas::kStrict_SrcRectConstraint);
+ canvas->drawImageRect(image, srcR, dstR, &paint,
+ SkCanvas::kStrict_SrcRectConstraint);
} else {
- canvas->drawBitmapRect(bitmap, src[i], dstR, &paint);
+ canvas->drawImageRect(image, src[i], dstR, &paint);
}
canvas->drawRect(dstR, paint);
diff --git a/gm/colorfilteralpha8.cpp b/gm/colorfilteralpha8.cpp
index 2c38143..59c16df 100644
--- a/gm/colorfilteralpha8.cpp
+++ b/gm/colorfilteralpha8.cpp
@@ -10,6 +10,7 @@
#include "include/core/SkCanvas.h"
#include "include/core/SkColor.h"
#include "include/core/SkColorFilter.h"
+#include "include/core/SkImage.h"
#include "include/core/SkImageInfo.h"
#include "include/core/SkPaint.h"
#include "include/core/SkSize.h"
@@ -45,7 +46,7 @@
};
paint.setColorFilter(SkColorFilters::Matrix(opaqueGrayMatrix));
- canvas->drawBitmap(bitmap, 100.0f, 100.0f, &paint);
+ canvas->drawImage(bitmap.asImage(), 100.0f, 100.0f, &paint);
}
private: