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

Commit 5c8d9dbb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove final usage of asSkCanvas"

parents 88fc0c33 894e85a3
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));
}