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

Commit 62b38941 authored by Ben Wagner's avatar Ben Wagner
Browse files

Move AlphaFilterCanvas to new API.

The AlphaFilterCanvas is only used when it will make a copy of the paint
anyway. Remove the need to keep track of copy on write semantics when
they are never used.

Test: refactoring CL. Existing unit tests still pass.
Change-Id: I20c0d618db7d1a76756bd4c16fe686ce7fb44f38
parent b302e727
Loading
Loading
Loading
Loading
+3 −7
Original line number Original line Diff line number Diff line
@@ -187,17 +187,13 @@ public:
    AlphaFilterCanvas(SkCanvas* canvas, float alpha) : SkPaintFilterCanvas(canvas), mAlpha(alpha) {}
    AlphaFilterCanvas(SkCanvas* canvas, float alpha) : SkPaintFilterCanvas(canvas), mAlpha(alpha) {}


protected:
protected:
    bool onFilter(SkTCopyOnFirstWrite<SkPaint>* paint, Type t) const override {
    bool onFilter(SkPaint& paint) const override {
        std::optional<SkPaint> defaultPaint;
        paint.setAlpha((uint8_t)paint.getAlpha() * mAlpha);
        if (!*paint) {
            paint->init(defaultPaint.emplace());
        }
        paint->writable()->setAlpha((uint8_t)(*paint)->getAlpha() * mAlpha);
        return true;
        return true;
    }
    }
    void onDrawDrawable(SkDrawable* drawable, const SkMatrix* matrix) override {
    void onDrawDrawable(SkDrawable* drawable, const SkMatrix* matrix) override {
        // We unroll the drawable using "this" canvas, so that draw calls contained inside will
        // We unroll the drawable using "this" canvas, so that draw calls contained inside will
        // get their alpha applied. THe default SkPaintFilterCanvas::onDrawDrawable does not unroll.
        // get their alpha applied. The default SkPaintFilterCanvas::onDrawDrawable does not unroll.
        drawable->draw(this, matrix);
        drawable->draw(this, matrix);
    }
    }