Merge "Remove final usage of asSkCanvas"

This commit is contained in:
TreeHugger Robot
2019-07-22 22:54:47 +00:00
committed by Android (Google) Code Review
5 changed files with 14 additions and 19 deletions

View File

@@ -100,8 +100,9 @@ void Picture::draw(Canvas* canvas) {
this->endRecording();
SkASSERT(NULL != mPicture.get());
}
if (NULL != mPicture.get()) {
mPicture->playback(canvas->asSkCanvas());
if (mPicture) {
canvas->drawPicture(*mPicture);
}
}

View File

@@ -778,6 +778,13 @@ void SkiaCanvas::drawCircle(uirenderer::CanvasPropertyPrimitive* x,
mCanvas->drawDrawable(drawable.get());
}
void SkiaCanvas::drawPicture(const SkPicture& picture) {
// TODO: Change to mCanvas->drawPicture()? SkCanvas::drawPicture seems to be
// where the logic is for playback vs. ref picture. Using picture.playback here
// to stay behavior-identical for now, but should revisit this at some point.
picture.playback(mCanvas);
}
// ----------------------------------------------------------------------------
// Canvas draw operations: View System
// ----------------------------------------------------------------------------

View File

@@ -46,8 +46,6 @@ public:
virtual ~SkiaCanvas();
virtual SkCanvas* asSkCanvas() override { return mCanvas; }
virtual void resetRecording(int width, int height,
uirenderer::RenderNode* renderNode) override {
LOG_ALWAYS_FATAL("SkiaCanvas cannot be reset as a recording canvas");
@@ -155,9 +153,11 @@ public:
virtual void drawRenderNode(uirenderer::RenderNode* renderNode) override;
virtual void callDrawGLFunction(Functor* functor,
uirenderer::GlFunctorLifecycleListener* listener) override;
virtual void drawPicture(const SkPicture& picture) override;
protected:
SkiaCanvas();
SkCanvas* asSkCanvas() { return mCanvas; }
void reset(SkCanvas* skiaCanvas);
void drawDrawable(SkDrawable* drawable) { mCanvas->drawDrawable(drawable); }

View File

@@ -131,20 +131,6 @@ public:
*/
static void setCompatibilityVersion(int apiLevel);
/**
* Provides a Skia SkCanvas interface that acts as a proxy to this Canvas.
* It is useful for testing and clients (e.g. Picture/Movie) that expect to
* draw their contents into an SkCanvas.
*
* The SkCanvas returned is *only* valid until another Canvas call is made
* that would change state (e.g. matrix or clip). Clients of asSkCanvas()
* are responsible for *not* persisting this pointer.
*
* Further, the returned SkCanvas should NOT be unref'd and is valid until
* this canvas is destroyed or a new bitmap is set.
*/
virtual SkCanvas* asSkCanvas() = 0;
virtual void setBitmap(const SkBitmap& bitmap) = 0;
virtual bool isOpaque() = 0;
@@ -264,6 +250,7 @@ public:
const SkPaint* paint) = 0;
virtual double drawAnimatedImage(AnimatedImageDrawable* imgDrawable) = 0;
virtual void drawPicture(const SkPicture& picture) = 0;
/**
* Specifies if the positions passed to ::drawText are absolute or relative

View File

@@ -78,7 +78,7 @@ TEST(SkiaCanvas, colorSpaceXform) {
sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
// Playback to a software sRGB canvas. The result should be fully red.
canvas.asSkCanvas()->drawPicture(picture);
canvas.drawPicture(*picture);
ASSERT_EQ(0xFF0000FF, *skBitmap.getAddr32(0, 0));
}