Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 894e85a3 authored by John Reck's avatar John Reck
Browse files

Remove final usage of asSkCanvas

Bug: 137581257
Test: builds
Change-Id: Ib38f85c11be332e6cd784f8bbf55f58cde72ac09
parent 021598cb
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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);
    }
}

+7 −0
Original line number Diff line number Diff line
@@ -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
// ----------------------------------------------------------------------------
+2 −2
Original line number Diff line number Diff line
@@ -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); }

+1 −14
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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));
}