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

Commit 00d7a216 authored by Lucas Dupin's avatar Lucas Dupin Committed by Automerger Merge Worker
Browse files

Merge "Adding force-dark support to RippleDrawable" into sc-dev am: b73fa479 am: d0d25a8e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14376828

Change-Id: Ic7f319b69360f9814f896fe45aef215ce0aab48b
parents eb0ffeda d0d25a8e
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.graphics;

import android.annotation.ColorInt;
import android.annotation.NonNull;
import android.os.SystemProperties;
import android.util.Pools.SynchronizedPool;
@@ -227,11 +228,11 @@ public final class RecordingCanvas extends BaseRecordingCanvas {
    public void drawRipple(CanvasProperty<Float> cx, CanvasProperty<Float> cy,
            CanvasProperty<Float> radius, CanvasProperty<Paint> paint,
            CanvasProperty<Float> progress, CanvasProperty<Float> turbulencePhase,
            RuntimeShader shader) {
            @ColorInt int color, RuntimeShader shader) {
        nDrawRipple(mNativeCanvasWrapper, cx.getNativeContainer(), cy.getNativeContainer(),
                radius.getNativeContainer(), paint.getNativeContainer(),
                progress.getNativeContainer(), turbulencePhase.getNativeContainer(),
                shader.getNativeShaderBuilder());
                color, shader.getNativeShaderBuilder());
    }

    /**
@@ -292,7 +293,7 @@ public final class RecordingCanvas extends BaseRecordingCanvas {
            long propCy, long propRadius, long propPaint);
    @CriticalNative
    private static native void nDrawRipple(long renderer, long propCx, long propCy, long propRadius,
            long propPaint, long propProgress, long turbulencePhase, long runtimeEffect);
            long propPaint, long propProgress, long turbulencePhase, int color, long runtimeEffect);
    @CriticalNative
    private static native void nDrawRoundRect(long renderer, long propLeft, long propTop,
            long propRight, long propBottom, long propRx, long propRy, long propPaint);
+9 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.graphics.drawable;
import android.animation.Animator;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.annotation.ColorInt;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.graphics.Canvas;
@@ -211,6 +212,7 @@ public final class RippleAnimationSession {
                    CanvasProperty.createFloat(mProperties.getNoisePhase()),
                    CanvasProperty.createPaint(mProperties.getPaint()),
                    CanvasProperty.createFloat(mProperties.getProgress()),
                    mProperties.getColor(),
                    mProperties.getShader());
        }
        return mCanvasProperties;
@@ -250,11 +252,12 @@ public final class RippleAnimationSession {
        private final FloatType mNoisePhase;
        private final PaintType mPaint;
        private final RippleShader mShader;
        private final @ColorInt int mColor;
        private FloatType mX;
        private FloatType mY;

        AnimationProperties(FloatType x, FloatType y, FloatType maxRadius, FloatType noisePhase,
                PaintType paint, FloatType progress, RippleShader shader) {
                PaintType paint, FloatType progress, @ColorInt int color, RippleShader shader) {
            mY = y;
            mX = x;
            mMaxRadius = maxRadius;
@@ -262,6 +265,7 @@ public final class RippleAnimationSession {
            mPaint = paint;
            mShader = shader;
            mProgress = progress;
            mColor = color;
        }

        FloatType getProgress() {
@@ -296,5 +300,9 @@ public final class RippleAnimationSession {
        FloatType getNoisePhase() {
            return mNoisePhase;
        }

        @ColorInt int getColor() {
            return mColor;
        }
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -901,7 +901,7 @@ public class RippleDrawable extends LayerDrawable {
                    yProp = p.getY();
                }
                can.drawRipple(xProp, yProp, p.getMaxRadius(), p.getPaint(),
                        p.getProgress(), p.getNoisePhase(), p.getShader());
                        p.getProgress(), p.getNoisePhase(), p.getColor(), p.getShader());
            } else {
                RippleAnimationSession.AnimationProperties<Float, Paint> p =
                        s.getProperties();
@@ -974,7 +974,7 @@ public class RippleDrawable extends LayerDrawable {
        shader.setRadius(radius);
        shader.setProgress(.0f);
        properties = new RippleAnimationSession.AnimationProperties<>(
                cx, cy, radius, 0f, p, 0f, shader);
                cx, cy, radius, 0f, p, 0f, color, shader);
        if (mMaskShader == null) {
            shader.setShader(null);
        } else {
+14 −3
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@

namespace android::uirenderer {

static SkColor makeLight(SkColor color) {
SkColor makeLight(SkColor color) {
    Lab lab = sRGBToLab(color);
    float invertedL = std::min(110 - lab.L, 100.0f);
    if (invertedL > lab.L) {
@@ -42,7 +42,7 @@ static SkColor makeLight(SkColor color) {
    }
}

static SkColor makeDark(SkColor color) {
SkColor makeDark(SkColor color) {
    Lab lab = sRGBToLab(color);
    float invertedL = std::min(110 - lab.L, 100.0f);
    if (invertedL < lab.L) {
@@ -53,7 +53,7 @@ static SkColor makeDark(SkColor color) {
    }
}

static SkColor transformColor(ColorTransform transform, SkColor color) {
SkColor transformColor(ColorTransform transform, SkColor color) {
    switch (transform) {
        case ColorTransform::Light:
            return makeLight(color);
@@ -64,6 +64,17 @@ static SkColor transformColor(ColorTransform transform, SkColor color) {
    }
}

SkColor transformColorInverse(ColorTransform transform, SkColor color) {
    switch (transform) {
        case ColorTransform::Dark:
            return makeLight(color);
        case ColorTransform::Light:
            return makeDark(color);
        default:
            return color;
    }
}

static void applyColorTransform(ColorTransform transform, SkPaint& paint) {
    if (transform == ColorTransform::None) return;

+3 −0
Original line number Diff line number Diff line
@@ -42,4 +42,7 @@ bool transformPaint(ColorTransform transform, SkPaint* paint);

bool transformPaint(ColorTransform transform, SkPaint* paint, BitmapPalette palette);

SkColor transformColor(ColorTransform transform, SkColor color);
SkColor transformColorInverse(ColorTransform transform, SkColor color);

}  // namespace android::uirenderer;
 No newline at end of file
Loading