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

Commit 5bed1f53 authored by Nader Jawad's avatar Nader Jawad
Browse files

Revert "Create wrapper around Shader native implementation"

This reverts commit fc42a99e.

Because we are moving away from a wrapper class to delegate
between SkImageFilter and SkShader and instead adding
RenderEffect on RenderNode, this wrapper implementation
is no longer necessary. There are some behavioral
differences between SkShader and SkImageFilter that
would lead to additional complexity in conversions
between these objects and potential bugs.
To simplify this, RenderEffect will be added
directly to RenderNode to support better
caching of rasterization layers that is necessary
for various visual effects like blur.

Test: N/A
Change-Id: I65dc9f8bd26aed8761af13491ae3f6d583208377
parent 2740724e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3111,7 +3111,7 @@ public class Paint {
    @CriticalNative
    private static native boolean nGetFillPath(long paintPtr, long src, long dst);
    @CriticalNative
    private static native void nSetShader(long paintPtr, long shader);
    private static native long nSetShader(long paintPtr, long shader);
    @CriticalNative
    private static native long nSetColorFilter(long paintPtr, long filter);
    @CriticalNative
+0 −8
Original line number Diff line number Diff line
@@ -464,14 +464,6 @@ cc_defaults {
        "RenderNode.cpp",
        "RenderProperties.cpp",
        "RootRenderNode.cpp",
        "shader/Shader.cpp",
        "shader/BitmapShader.cpp",
        "shader/BlurShader.cpp",
        "shader/ComposeShader.cpp",
        "shader/LinearGradientShader.cpp",
        "shader/RadialGradientShader.cpp",
        "shader/RuntimeShader.cpp",
        "shader/SweepGradientShader.cpp",
        "SkiaCanvas.cpp",
        "VectorDrawable.cpp",
    ],
+1 −6
Original line number Diff line number Diff line
@@ -42,8 +42,6 @@
#include <SkTextBlob.h>
#include <SkVertices.h>

#include <shader/BitmapShader.h>

#include <memory>
#include <optional>
#include <utility>
@@ -51,7 +49,6 @@
namespace android {

using uirenderer::PaintUtils;
using uirenderer::BitmapShader;

Canvas* Canvas::create_canvas(const SkBitmap& bitmap) {
    return new SkiaCanvas(bitmap);
@@ -684,9 +681,7 @@ void SkiaCanvas::drawBitmapMesh(Bitmap& bitmap, int meshWidth, int meshHeight,
    if (paint) {
        pnt = *paint;
    }

    pnt.setShader(sk_ref_sp(new BitmapShader(
            bitmap.makeImage(), SkTileMode::kClamp, SkTileMode::kClamp, nullptr)));
    pnt.setShader(bitmap.makeImage()->makeShader());
    auto v = builder.detach();
    apply_looper(&pnt, [&](const SkPaint& p) {
        mCanvas->drawVertices(v, SkBlendMode::kModulate, p);
+4 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include "PathParser.h"
#include "SkColorFilter.h"
#include "SkImageInfo.h"
#include "SkShader.h"
#include "hwui/Paint.h"

#ifdef __ANDROID__
@@ -158,10 +159,10 @@ void FullPath::draw(SkCanvas* outCanvas, bool useStagingData) {

    // Draw path's fill, if fill color or gradient is valid
    bool needsFill = false;
    Paint paint;
    SkPaint paint;
    if (properties.getFillGradient() != nullptr) {
        paint.setColor(applyAlpha(SK_ColorBLACK, properties.getFillAlpha()));
        paint.setShader(sk_sp<Shader>(SkSafeRef(properties.getFillGradient())));
        paint.setShader(sk_sp<SkShader>(SkSafeRef(properties.getFillGradient())));
        needsFill = true;
    } else if (properties.getFillColor() != SK_ColorTRANSPARENT) {
        paint.setColor(applyAlpha(properties.getFillColor(), properties.getFillAlpha()));
@@ -178,7 +179,7 @@ void FullPath::draw(SkCanvas* outCanvas, bool useStagingData) {
    bool needsStroke = false;
    if (properties.getStrokeGradient() != nullptr) {
        paint.setColor(applyAlpha(SK_ColorBLACK, properties.getStrokeAlpha()));
        paint.setShader(sk_sp<Shader>(SkSafeRef(properties.getStrokeGradient())));
        paint.setShader(sk_sp<SkShader>(SkSafeRef(properties.getStrokeGradient())));
        needsStroke = true;
    } else if (properties.getStrokeColor() != SK_ColorTRANSPARENT) {
        paint.setColor(applyAlpha(properties.getStrokeColor(), properties.getStrokeAlpha()));
+7 −7
Original line number Diff line number Diff line
@@ -31,8 +31,8 @@
#include <SkPath.h>
#include <SkPathMeasure.h>
#include <SkRect.h>
#include <SkShader.h>
#include <SkSurface.h>
#include <shader/Shader.h>

#include <cutils/compiler.h>
#include <stddef.h>
@@ -227,20 +227,20 @@ public:
            strokeGradient = prop.strokeGradient;
            onPropertyChanged();
        }
        void setFillGradient(Shader* gradient) {
        void setFillGradient(SkShader* gradient) {
            if (fillGradient.get() != gradient) {
                fillGradient = sk_ref_sp(gradient);
                onPropertyChanged();
            }
        }
        void setStrokeGradient(Shader* gradient) {
        void setStrokeGradient(SkShader* gradient) {
            if (strokeGradient.get() != gradient) {
                strokeGradient = sk_ref_sp(gradient);
                onPropertyChanged();
            }
        }
        Shader* getFillGradient() const { return fillGradient.get(); }
        Shader* getStrokeGradient() const { return strokeGradient.get(); }
        SkShader* getFillGradient() const { return fillGradient.get(); }
        SkShader* getStrokeGradient() const { return strokeGradient.get(); }
        float getStrokeWidth() const { return mPrimitiveFields.strokeWidth; }
        void setStrokeWidth(float strokeWidth) {
            VD_SET_PRIMITIVE_FIELD_AND_NOTIFY(strokeWidth, strokeWidth);
@@ -320,8 +320,8 @@ public:
            count,
        };
        PrimitiveFields mPrimitiveFields;
        sk_sp<Shader> fillGradient;
        sk_sp<Shader> strokeGradient;
        sk_sp<SkShader> fillGradient;
        sk_sp<SkShader> strokeGradient;
    };

    // Called from UI thread
Loading