Loading libs/hwui/pipeline/skia/RenderNodeDrawable.cpp +3 −7 Original line number Original line Diff line number Diff line Loading @@ -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); } } Loading Loading
libs/hwui/pipeline/skia/RenderNodeDrawable.cpp +3 −7 Original line number Original line Diff line number Diff line Loading @@ -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); } } Loading